diff --git a/.next/BUILD_ID b/.next/BUILD_ID index c75c871..236fb1a 100644 --- a/.next/BUILD_ID +++ b/.next/BUILD_ID @@ -1 +1 @@ -msXsDwtlDxhrnfeF2dg3H \ No newline at end of file +F__YtZpml5C5L1OF5iRU8 \ No newline at end of file diff --git a/.next/build-manifest.json b/.next/build-manifest.json index 9bc6df6..55e134d 100644 --- a/.next/build-manifest.json +++ b/.next/build-manifest.json @@ -7,8 +7,8 @@ "static/chunks/a6dad97d9634a72d.js" ], "lowPriorityFiles": [ - "static/msXsDwtlDxhrnfeF2dg3H/_ssgManifest.js", - "static/msXsDwtlDxhrnfeF2dg3H/_buildManifest.js" + "static/F__YtZpml5C5L1OF5iRU8/_ssgManifest.js", + "static/F__YtZpml5C5L1OF5iRU8/_buildManifest.js" ], "rootMainFiles": [ "static/chunks/2f95708884cc928a.js", diff --git a/.next/dev/cache/turbopack/23c46498/00000304.sst b/.next/dev/cache/turbopack/23c46498/00000304.sst deleted file mode 100644 index 91825a4..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000304.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000306.meta b/.next/dev/cache/turbopack/23c46498/00000306.meta deleted file mode 100644 index 29e6c50..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000306.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000309.sst b/.next/dev/cache/turbopack/23c46498/00000309.sst deleted file mode 100644 index 8441853..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000309.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000315.sst b/.next/dev/cache/turbopack/23c46498/00000315.sst deleted file mode 100644 index d4c8b8e..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000315.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000321.meta b/.next/dev/cache/turbopack/23c46498/00000321.meta deleted file mode 100644 index c45bec0..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000321.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000324.sst b/.next/dev/cache/turbopack/23c46498/00000324.sst deleted file mode 100644 index 8b973e1..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000324.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000332.meta b/.next/dev/cache/turbopack/23c46498/00000332.meta deleted file mode 100644 index d0489e9..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000332.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000335.sst b/.next/dev/cache/turbopack/23c46498/00000335.sst deleted file mode 100644 index f0ff868..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000335.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000341.meta b/.next/dev/cache/turbopack/23c46498/00000341.meta deleted file mode 100644 index 43b2231..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000341.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000345.sst b/.next/dev/cache/turbopack/23c46498/00000345.sst deleted file mode 100644 index e6be169..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000345.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000351.meta b/.next/dev/cache/turbopack/23c46498/00000351.meta deleted file mode 100644 index 058b724..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000351.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000354.sst b/.next/dev/cache/turbopack/23c46498/00000354.sst deleted file mode 100644 index 26c87f7..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000354.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000361.meta b/.next/dev/cache/turbopack/23c46498/00000361.meta deleted file mode 100644 index dcbefed..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000361.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000365.sst b/.next/dev/cache/turbopack/23c46498/00000365.sst deleted file mode 100644 index 5b7adec..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000365.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000371.meta b/.next/dev/cache/turbopack/23c46498/00000371.meta deleted file mode 100644 index 1710351..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000371.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000375.sst b/.next/dev/cache/turbopack/23c46498/00000375.sst deleted file mode 100644 index 8441853..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000375.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000380.sst b/.next/dev/cache/turbopack/23c46498/00000380.sst deleted file mode 100644 index 64dd7e7..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000380.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000387.meta b/.next/dev/cache/turbopack/23c46498/00000387.meta deleted file mode 100644 index 45bd8b0..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000387.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000390.sst b/.next/dev/cache/turbopack/23c46498/00000390.sst deleted file mode 100644 index 09433f7..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000390.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000397.meta b/.next/dev/cache/turbopack/23c46498/00000397.meta deleted file mode 100644 index 8f78fb6..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000397.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000400.sst b/.next/dev/cache/turbopack/23c46498/00000400.sst new file mode 100644 index 0000000..02f36d8 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000400.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000402.sst b/.next/dev/cache/turbopack/23c46498/00000402.sst new file mode 100644 index 0000000..620c04b Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000402.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000403.meta b/.next/dev/cache/turbopack/23c46498/00000403.meta new file mode 100644 index 0000000..45b76ea Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000403.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000404.meta b/.next/dev/cache/turbopack/23c46498/00000404.meta new file mode 100644 index 0000000..e0da0e6 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000404.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000406.sst b/.next/dev/cache/turbopack/23c46498/00000406.sst new file mode 100644 index 0000000..02f36d8 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000406.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000408.sst b/.next/dev/cache/turbopack/23c46498/00000408.sst new file mode 100644 index 0000000..620c04b Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000408.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000409.meta b/.next/dev/cache/turbopack/23c46498/00000409.meta new file mode 100644 index 0000000..d1670be Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000409.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000410.meta b/.next/dev/cache/turbopack/23c46498/00000410.meta new file mode 100644 index 0000000..ca00f30 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000410.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000412.sst b/.next/dev/cache/turbopack/23c46498/00000412.sst new file mode 100644 index 0000000..7a7c49c Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000412.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000414.sst b/.next/dev/cache/turbopack/23c46498/00000414.sst new file mode 100644 index 0000000..620c04b Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000414.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000415.meta b/.next/dev/cache/turbopack/23c46498/00000415.meta new file mode 100644 index 0000000..a6bc060 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000415.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000416.meta b/.next/dev/cache/turbopack/23c46498/00000416.meta new file mode 100644 index 0000000..16c8f4a Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000416.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000418.sst b/.next/dev/cache/turbopack/23c46498/00000418.sst new file mode 100644 index 0000000..7749a26 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000418.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000420.sst b/.next/dev/cache/turbopack/23c46498/00000420.sst new file mode 100644 index 0000000..620c04b Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000420.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000421.meta b/.next/dev/cache/turbopack/23c46498/00000421.meta new file mode 100644 index 0000000..d7a7ea8 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000421.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000422.meta b/.next/dev/cache/turbopack/23c46498/00000422.meta new file mode 100644 index 0000000..3c0100e Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000422.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000424.sst b/.next/dev/cache/turbopack/23c46498/00000424.sst new file mode 100644 index 0000000..24494b3 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000424.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000426.sst b/.next/dev/cache/turbopack/23c46498/00000426.sst new file mode 100644 index 0000000..620c04b Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000426.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000427.meta b/.next/dev/cache/turbopack/23c46498/00000427.meta new file mode 100644 index 0000000..7c2482d Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000427.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000313.meta b/.next/dev/cache/turbopack/23c46498/00000428.meta similarity index 90% rename from .next/dev/cache/turbopack/23c46498/00000313.meta rename to .next/dev/cache/turbopack/23c46498/00000428.meta index d265a89..deabfb3 100644 Binary files a/.next/dev/cache/turbopack/23c46498/00000313.meta and b/.next/dev/cache/turbopack/23c46498/00000428.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000430.sst b/.next/dev/cache/turbopack/23c46498/00000430.sst new file mode 100644 index 0000000..5f9ea65 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000430.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000432.sst b/.next/dev/cache/turbopack/23c46498/00000432.sst new file mode 100644 index 0000000..620c04b Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000432.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000433.meta b/.next/dev/cache/turbopack/23c46498/00000433.meta new file mode 100644 index 0000000..1f90396 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000433.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000434.meta b/.next/dev/cache/turbopack/23c46498/00000434.meta new file mode 100644 index 0000000..85906a6 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000434.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000436.sst b/.next/dev/cache/turbopack/23c46498/00000436.sst new file mode 100644 index 0000000..090c4f3 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000436.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000438.sst b/.next/dev/cache/turbopack/23c46498/00000438.sst new file mode 100644 index 0000000..c54e0eb Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000438.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000439.sst b/.next/dev/cache/turbopack/23c46498/00000439.sst new file mode 100644 index 0000000..3541f0c Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000439.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000440.sst b/.next/dev/cache/turbopack/23c46498/00000440.sst new file mode 100644 index 0000000..2f6c733 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000440.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000441.meta b/.next/dev/cache/turbopack/23c46498/00000441.meta new file mode 100644 index 0000000..1e98a4a Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000441.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000442.meta b/.next/dev/cache/turbopack/23c46498/00000442.meta new file mode 100644 index 0000000..e7fa1c3 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000442.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000444.meta b/.next/dev/cache/turbopack/23c46498/00000444.meta new file mode 100644 index 0000000..c5e3fe6 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000444.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000445.meta b/.next/dev/cache/turbopack/23c46498/00000445.meta new file mode 100644 index 0000000..2a4dd86 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000445.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000446.sst b/.next/dev/cache/turbopack/23c46498/00000446.sst new file mode 100644 index 0000000..633defb Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000446.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000448.sst b/.next/dev/cache/turbopack/23c46498/00000448.sst new file mode 100644 index 0000000..c54e0eb Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000448.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000449.meta b/.next/dev/cache/turbopack/23c46498/00000449.meta new file mode 100644 index 0000000..88d3a89 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000449.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000450.meta b/.next/dev/cache/turbopack/23c46498/00000450.meta new file mode 100644 index 0000000..19a0d2f Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000450.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000452.sst b/.next/dev/cache/turbopack/23c46498/00000452.sst new file mode 100644 index 0000000..8a15ac1 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000452.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000454.sst b/.next/dev/cache/turbopack/23c46498/00000454.sst new file mode 100644 index 0000000..c54e0eb Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000454.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000455.meta b/.next/dev/cache/turbopack/23c46498/00000455.meta new file mode 100644 index 0000000..2e45acf Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000455.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000379.meta b/.next/dev/cache/turbopack/23c46498/00000456.meta similarity index 90% rename from .next/dev/cache/turbopack/23c46498/00000379.meta rename to .next/dev/cache/turbopack/23c46498/00000456.meta index 08c5b60..feb4a9c 100644 Binary files a/.next/dev/cache/turbopack/23c46498/00000379.meta and b/.next/dev/cache/turbopack/23c46498/00000456.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000459.sst b/.next/dev/cache/turbopack/23c46498/00000459.sst new file mode 100644 index 0000000..f83bd95 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000459.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000460.sst b/.next/dev/cache/turbopack/23c46498/00000460.sst new file mode 100644 index 0000000..c54e0eb Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000460.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000461.meta b/.next/dev/cache/turbopack/23c46498/00000461.meta new file mode 100644 index 0000000..e384e8c Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000461.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000462.meta b/.next/dev/cache/turbopack/23c46498/00000462.meta new file mode 100644 index 0000000..fabf7a8 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000462.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000464.sst b/.next/dev/cache/turbopack/23c46498/00000464.sst new file mode 100644 index 0000000..5ee21d1 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000464.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000466.sst b/.next/dev/cache/turbopack/23c46498/00000466.sst new file mode 100644 index 0000000..c54e0eb Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000466.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000467.meta b/.next/dev/cache/turbopack/23c46498/00000467.meta new file mode 100644 index 0000000..42638d2 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000467.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000468.meta b/.next/dev/cache/turbopack/23c46498/00000468.meta new file mode 100644 index 0000000..1e03dbf Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000468.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000470.sst b/.next/dev/cache/turbopack/23c46498/00000470.sst new file mode 100644 index 0000000..8a15ac1 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000470.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000472.sst b/.next/dev/cache/turbopack/23c46498/00000472.sst new file mode 100644 index 0000000..c54e0eb Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000472.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000473.meta b/.next/dev/cache/turbopack/23c46498/00000473.meta new file mode 100644 index 0000000..9cf83c9 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000473.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000474.meta b/.next/dev/cache/turbopack/23c46498/00000474.meta new file mode 100644 index 0000000..7eb8920 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000474.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000476.sst b/.next/dev/cache/turbopack/23c46498/00000476.sst new file mode 100644 index 0000000..8a15ac1 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000476.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000478.sst b/.next/dev/cache/turbopack/23c46498/00000478.sst new file mode 100644 index 0000000..c54e0eb Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000478.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000479.meta b/.next/dev/cache/turbopack/23c46498/00000479.meta new file mode 100644 index 0000000..b187f2b Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000479.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000481.meta b/.next/dev/cache/turbopack/23c46498/00000481.meta new file mode 100644 index 0000000..e77efc7 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000481.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000482.sst b/.next/dev/cache/turbopack/23c46498/00000482.sst new file mode 100644 index 0000000..8a15ac1 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000482.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000484.sst b/.next/dev/cache/turbopack/23c46498/00000484.sst new file mode 100644 index 0000000..c54e0eb Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000484.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000485.meta b/.next/dev/cache/turbopack/23c46498/00000485.meta new file mode 100644 index 0000000..2d7bfdb Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000485.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000486.meta b/.next/dev/cache/turbopack/23c46498/00000486.meta new file mode 100644 index 0000000..1874a9e Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000486.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000489.sst b/.next/dev/cache/turbopack/23c46498/00000489.sst new file mode 100644 index 0000000..8a15ac1 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000489.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000490.sst b/.next/dev/cache/turbopack/23c46498/00000490.sst new file mode 100644 index 0000000..c54e0eb Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000490.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000491.meta b/.next/dev/cache/turbopack/23c46498/00000491.meta new file mode 100644 index 0000000..eb5d14a Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000491.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000492.meta b/.next/dev/cache/turbopack/23c46498/00000492.meta new file mode 100644 index 0000000..b59453d Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000492.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000495.sst b/.next/dev/cache/turbopack/23c46498/00000495.sst new file mode 100644 index 0000000..f83bd95 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000495.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000496.sst b/.next/dev/cache/turbopack/23c46498/00000496.sst new file mode 100644 index 0000000..c54e0eb Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000496.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000497.meta b/.next/dev/cache/turbopack/23c46498/00000497.meta new file mode 100644 index 0000000..8ed01bf Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000497.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000498.meta b/.next/dev/cache/turbopack/23c46498/00000498.meta new file mode 100644 index 0000000..29c1efd Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000498.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000500.sst b/.next/dev/cache/turbopack/23c46498/00000500.sst new file mode 100644 index 0000000..5ee21d1 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000500.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000502.sst b/.next/dev/cache/turbopack/23c46498/00000502.sst new file mode 100644 index 0000000..c54e0eb Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000502.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000503.meta b/.next/dev/cache/turbopack/23c46498/00000503.meta new file mode 100644 index 0000000..418dcce Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000503.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000504.meta b/.next/dev/cache/turbopack/23c46498/00000504.meta new file mode 100644 index 0000000..3afdd32 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000504.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000506.sst b/.next/dev/cache/turbopack/23c46498/00000506.sst new file mode 100644 index 0000000..fed85db Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000506.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000508.sst b/.next/dev/cache/turbopack/23c46498/00000508.sst new file mode 100644 index 0000000..8ee10c1 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000508.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000509.sst b/.next/dev/cache/turbopack/23c46498/00000509.sst new file mode 100644 index 0000000..ee9421a Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000509.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000510.sst b/.next/dev/cache/turbopack/23c46498/00000510.sst new file mode 100644 index 0000000..965c75c Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000510.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000511.meta b/.next/dev/cache/turbopack/23c46498/00000511.meta new file mode 100644 index 0000000..7ac8372 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000511.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000512.meta b/.next/dev/cache/turbopack/23c46498/00000512.meta new file mode 100644 index 0000000..609d670 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000512.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000514.meta b/.next/dev/cache/turbopack/23c46498/00000514.meta new file mode 100644 index 0000000..54a00c1 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000514.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000515.meta b/.next/dev/cache/turbopack/23c46498/00000515.meta new file mode 100644 index 0000000..68ecc5e Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000515.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000517.sst b/.next/dev/cache/turbopack/23c46498/00000517.sst new file mode 100644 index 0000000..cba2f47 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000517.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000518.sst b/.next/dev/cache/turbopack/23c46498/00000518.sst new file mode 100644 index 0000000..ddc512d Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000518.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000519.sst b/.next/dev/cache/turbopack/23c46498/00000519.sst new file mode 100644 index 0000000..1efccbd Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000519.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000520.sst b/.next/dev/cache/turbopack/23c46498/00000520.sst new file mode 100644 index 0000000..af9d9a0 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000520.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000521.meta b/.next/dev/cache/turbopack/23c46498/00000521.meta new file mode 100644 index 0000000..9f81cd4 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000521.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000522.meta b/.next/dev/cache/turbopack/23c46498/00000522.meta new file mode 100644 index 0000000..31eb23c Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000522.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000523.meta b/.next/dev/cache/turbopack/23c46498/00000523.meta new file mode 100644 index 0000000..ffc5150 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000523.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000524.meta b/.next/dev/cache/turbopack/23c46498/00000524.meta new file mode 100644 index 0000000..6bc2143 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000524.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000527.sst b/.next/dev/cache/turbopack/23c46498/00000527.sst new file mode 100644 index 0000000..df77506 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000527.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000528.sst b/.next/dev/cache/turbopack/23c46498/00000528.sst new file mode 100644 index 0000000..84f586c Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000528.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000529.sst b/.next/dev/cache/turbopack/23c46498/00000529.sst new file mode 100644 index 0000000..a898bda Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000529.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000530.sst b/.next/dev/cache/turbopack/23c46498/00000530.sst new file mode 100644 index 0000000..396134b Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000530.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000531.meta b/.next/dev/cache/turbopack/23c46498/00000531.meta new file mode 100644 index 0000000..6e61571 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000531.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000532.meta b/.next/dev/cache/turbopack/23c46498/00000532.meta new file mode 100644 index 0000000..06132e0 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000532.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000533.meta b/.next/dev/cache/turbopack/23c46498/00000533.meta new file mode 100644 index 0000000..fc50cc0 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000533.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000534.meta b/.next/dev/cache/turbopack/23c46498/00000534.meta new file mode 100644 index 0000000..c3525b3 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000534.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000536.sst b/.next/dev/cache/turbopack/23c46498/00000536.sst new file mode 100644 index 0000000..b7f2f5f Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000536.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000538.sst b/.next/dev/cache/turbopack/23c46498/00000538.sst new file mode 100644 index 0000000..84f586c Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000538.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000539.meta b/.next/dev/cache/turbopack/23c46498/00000539.meta new file mode 100644 index 0000000..eb813b8 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000539.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000540.meta b/.next/dev/cache/turbopack/23c46498/00000540.meta new file mode 100644 index 0000000..a1a78be Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000540.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000542.sst b/.next/dev/cache/turbopack/23c46498/00000542.sst new file mode 100644 index 0000000..b7f2f5f Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000542.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000544.sst b/.next/dev/cache/turbopack/23c46498/00000544.sst new file mode 100644 index 0000000..84f586c Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000544.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000545.meta b/.next/dev/cache/turbopack/23c46498/00000545.meta new file mode 100644 index 0000000..f1a74a0 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000545.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000547.meta b/.next/dev/cache/turbopack/23c46498/00000547.meta new file mode 100644 index 0000000..b764208 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000547.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000548.sst b/.next/dev/cache/turbopack/23c46498/00000548.sst new file mode 100644 index 0000000..b7f2f5f Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000548.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000550.sst b/.next/dev/cache/turbopack/23c46498/00000550.sst new file mode 100644 index 0000000..84f586c Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000550.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000551.meta b/.next/dev/cache/turbopack/23c46498/00000551.meta new file mode 100644 index 0000000..1613acd Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000551.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000552.meta b/.next/dev/cache/turbopack/23c46498/00000552.meta new file mode 100644 index 0000000..f447ab5 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000552.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000554.sst b/.next/dev/cache/turbopack/23c46498/00000554.sst new file mode 100644 index 0000000..b7f2f5f Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000554.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000556.sst b/.next/dev/cache/turbopack/23c46498/00000556.sst new file mode 100644 index 0000000..84f586c Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000556.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000557.meta b/.next/dev/cache/turbopack/23c46498/00000557.meta new file mode 100644 index 0000000..e939515 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000557.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000558.meta b/.next/dev/cache/turbopack/23c46498/00000558.meta new file mode 100644 index 0000000..43e0e5d Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000558.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000560.sst b/.next/dev/cache/turbopack/23c46498/00000560.sst new file mode 100644 index 0000000..b7f2f5f Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000560.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000562.sst b/.next/dev/cache/turbopack/23c46498/00000562.sst new file mode 100644 index 0000000..84f586c Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000562.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000563.meta b/.next/dev/cache/turbopack/23c46498/00000563.meta new file mode 100644 index 0000000..f275d4a Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000563.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000564.meta b/.next/dev/cache/turbopack/23c46498/00000564.meta new file mode 100644 index 0000000..3400a31 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000564.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000566.sst b/.next/dev/cache/turbopack/23c46498/00000566.sst new file mode 100644 index 0000000..b7f2f5f Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000566.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000568.sst b/.next/dev/cache/turbopack/23c46498/00000568.sst new file mode 100644 index 0000000..84f586c Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000568.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000569.meta b/.next/dev/cache/turbopack/23c46498/00000569.meta new file mode 100644 index 0000000..3e1c56e Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000569.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000570.meta b/.next/dev/cache/turbopack/23c46498/00000570.meta new file mode 100644 index 0000000..0c9b8eb Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000570.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000572.sst b/.next/dev/cache/turbopack/23c46498/00000572.sst new file mode 100644 index 0000000..2315912 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000572.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000574.sst b/.next/dev/cache/turbopack/23c46498/00000574.sst new file mode 100644 index 0000000..84f586c Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000574.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000575.meta b/.next/dev/cache/turbopack/23c46498/00000575.meta new file mode 100644 index 0000000..9e17e06 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000575.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000576.meta b/.next/dev/cache/turbopack/23c46498/00000576.meta new file mode 100644 index 0000000..dc55d65 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000576.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000579.sst b/.next/dev/cache/turbopack/23c46498/00000579.sst new file mode 100644 index 0000000..d66905a Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000579.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000580.sst b/.next/dev/cache/turbopack/23c46498/00000580.sst new file mode 100644 index 0000000..fc175db Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000580.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000581.sst b/.next/dev/cache/turbopack/23c46498/00000581.sst new file mode 100644 index 0000000..b6aa691 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000581.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000582.sst b/.next/dev/cache/turbopack/23c46498/00000582.sst new file mode 100644 index 0000000..466ae70 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000582.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000583.meta b/.next/dev/cache/turbopack/23c46498/00000583.meta new file mode 100644 index 0000000..6e12ec0 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000583.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000584.meta b/.next/dev/cache/turbopack/23c46498/00000584.meta new file mode 100644 index 0000000..9e80123 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000584.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000586.meta b/.next/dev/cache/turbopack/23c46498/00000586.meta new file mode 100644 index 0000000..eaafec8 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000586.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000587.meta b/.next/dev/cache/turbopack/23c46498/00000587.meta new file mode 100644 index 0000000..dc0d621 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000587.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000589.sst b/.next/dev/cache/turbopack/23c46498/00000589.sst new file mode 100644 index 0000000..e028ac2 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000589.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000590.sst b/.next/dev/cache/turbopack/23c46498/00000590.sst new file mode 100644 index 0000000..dda135d Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000590.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000591.sst b/.next/dev/cache/turbopack/23c46498/00000591.sst new file mode 100644 index 0000000..3b7e33e Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000591.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000592.sst b/.next/dev/cache/turbopack/23c46498/00000592.sst new file mode 100644 index 0000000..c0f1c2e Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000592.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000593.meta b/.next/dev/cache/turbopack/23c46498/00000593.meta new file mode 100644 index 0000000..8ea115e Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000593.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000594.meta b/.next/dev/cache/turbopack/23c46498/00000594.meta new file mode 100644 index 0000000..07fc07d Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000594.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000596.meta b/.next/dev/cache/turbopack/23c46498/00000596.meta new file mode 100644 index 0000000..4bf864e Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000596.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000597.meta b/.next/dev/cache/turbopack/23c46498/00000597.meta new file mode 100644 index 0000000..5dd93b1 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000597.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000598.sst b/.next/dev/cache/turbopack/23c46498/00000598.sst new file mode 100644 index 0000000..1812fe7 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000598.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000599.sst b/.next/dev/cache/turbopack/23c46498/00000599.sst new file mode 100644 index 0000000..6a41741 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000599.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000305.sst b/.next/dev/cache/turbopack/23c46498/00000600.sst similarity index 56% rename from .next/dev/cache/turbopack/23c46498/00000305.sst rename to .next/dev/cache/turbopack/23c46498/00000600.sst index 98390df..1d7389b 100644 Binary files a/.next/dev/cache/turbopack/23c46498/00000305.sst and b/.next/dev/cache/turbopack/23c46498/00000600.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000601.meta b/.next/dev/cache/turbopack/23c46498/00000601.meta new file mode 100644 index 0000000..7268693 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000601.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000602.del b/.next/dev/cache/turbopack/23c46498/00000602.del new file mode 100644 index 0000000..7368fd3 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000602.del differ diff --git a/.next/dev/cache/turbopack/23c46498/00000603.sst b/.next/dev/cache/turbopack/23c46498/00000603.sst new file mode 100644 index 0000000..5f002d8 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000603.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000604.sst b/.next/dev/cache/turbopack/23c46498/00000604.sst new file mode 100644 index 0000000..45968b8 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000604.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000605.sst b/.next/dev/cache/turbopack/23c46498/00000605.sst new file mode 100644 index 0000000..dda135d Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000605.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000606.meta b/.next/dev/cache/turbopack/23c46498/00000606.meta new file mode 100644 index 0000000..2d05614 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000606.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000607.meta b/.next/dev/cache/turbopack/23c46498/00000607.meta new file mode 100644 index 0000000..d34d4aa Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000607.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000608.meta b/.next/dev/cache/turbopack/23c46498/00000608.meta new file mode 100644 index 0000000..9837de5 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000608.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000609.sst b/.next/dev/cache/turbopack/23c46498/00000609.sst new file mode 100644 index 0000000..3c6702e Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000609.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000610.sst b/.next/dev/cache/turbopack/23c46498/00000610.sst new file mode 100644 index 0000000..b2201ec Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000610.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000611.sst b/.next/dev/cache/turbopack/23c46498/00000611.sst new file mode 100644 index 0000000..dda135d Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000611.sst differ diff --git a/.next/dev/cache/turbopack/23c46498/00000612.meta b/.next/dev/cache/turbopack/23c46498/00000612.meta new file mode 100644 index 0000000..14f6510 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000612.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000613.meta b/.next/dev/cache/turbopack/23c46498/00000613.meta new file mode 100644 index 0000000..0696605 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000613.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/00000614.meta b/.next/dev/cache/turbopack/23c46498/00000614.meta new file mode 100644 index 0000000..679f3b2 Binary files /dev/null and b/.next/dev/cache/turbopack/23c46498/00000614.meta differ diff --git a/.next/dev/cache/turbopack/23c46498/CURRENT b/.next/dev/cache/turbopack/23c46498/CURRENT index 89a5d9a..b310547 100644 Binary files a/.next/dev/cache/turbopack/23c46498/CURRENT and b/.next/dev/cache/turbopack/23c46498/CURRENT differ diff --git a/.next/dev/cache/turbopack/23c46498/LOG b/.next/dev/cache/turbopack/23c46498/LOG index 9fa1e4b..fff30c3 100644 --- a/.next/dev/cache/turbopack/23c46498/LOG +++ b/.next/dev/cache/turbopack/23c46498/LOG @@ -425,3 +425,262 @@ FAM | META SEQ | SST SEQ | RANGE 2 | 00000397 | 00000390 SST | [==================================================================================================] | 00077221ce365242-fffa05bbf935dd9a (13 MiB, fresh) 3 | 00000398 | 00000394 SST | [==================================================================================================] | 000ad7730d149703-ffd37818d9061be9 (0 MiB, fresh) 4 | 00000399 | 00000393 SST | [==================================================================================================] | 005ac169ea3ef972-ffc13af5c245d697 (0 MiB, fresh) +Time 2026-02-26T20:58:10.2575532Z +Commit 00000405 4 keys in 8ms 823µs 700ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000403 | 00000402 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000404 | 00000400 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh) + 2 | 00000405 | 00000401 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh) +Time 2026-02-26T20:58:18.3888412Z +Commit 00000411 4 keys in 6ms 999µs 200ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000409 | 00000408 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000410 | 00000406 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh) + 2 | 00000411 | 00000407 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh) +Time 2026-02-26T20:58:43.1758058Z +Commit 00000417 129 keys in 6ms 58µs 400ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000415 | 00000414 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000416 | 00000412 SST | [==================================================================================================] | 004ff9483c0a66d8-fe2672db426307a5 (0 MiB, fresh) + 2 | 00000417 | 00000413 SST | [==================================================================================================] | 004ff9483c0a66d8-fe2672db426307a5 (0 MiB, fresh) +Time 2026-02-26T20:59:44.8289004Z +Commit 00000423 6 keys in 7ms 523µs 300ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000421 | 00000420 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000422 | 00000418 SST | [============================] | 6a0bff6b8900e4bb-b49f849ad2883812 (0 MiB, fresh) + 2 | 00000423 | 00000419 SST | [============================] | 6a0bff6b8900e4bb-b49f849ad2883812 (0 MiB, fresh) +Time 2026-02-26T20:59:50.2905141Z +Commit 00000429 4 keys in 6ms 217µs 100ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000427 | 00000426 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000428 | 00000424 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) + 2 | 00000429 | 00000425 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) +Time 2026-02-26T20:59:58.3996649Z +Commit 00000435 6 keys in 7ms 117µs +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000433 | 00000432 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000434 | 00000430 SST | [==========================================] | 7b00e3285e298166-ea09ba9bfc356d33 (0 MiB, fresh) + 2 | 00000435 | 00000431 SST | [==========================================] | 7b00e3285e298166-ea09ba9bfc356d33 (0 MiB, fresh) +Time 2026-02-26T21:03:20.9036273Z +Commit 00000445 529 keys in 9ms 957µs 700ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000441 | 00000438 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000442 | 00000436 SST | [==================================================================================================] | 0030969f552fa734-ff8fc31dd1f4ccef (0 MiB, fresh) + 2 | 00000443 | 00000437 SST | [==================================================================================================] | 0030969f552fa734-ff5d300c6ec803e9 (1 MiB, fresh) + 4 | 00000444 | 00000440 SST | [======================] | 77b861c33ce459df-b11064c1c76961b7 (0 MiB, fresh) + 3 | 00000445 | 00000439 SST | [======================================================================================] | 1d62cb4674e1a4ed-fc97c8334167db00 (0 MiB, fresh) +Time 2026-02-26T21:03:57.0784621Z +Commit 00000451 4 keys in 7ms 468µs 200ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000449 | 00000448 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000450 | 00000446 SST | O | d560fc5807f4ad5d-d560fc5807f4ad5d (0 MiB, fresh) + 2 | 00000451 | 00000447 SST | O | d560fc5807f4ad5d-d560fc5807f4ad5d (0 MiB, fresh) +Time 2026-02-26T21:05:04.0261521Z +Commit 00000457 4 keys in 6ms 232µs 100ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000455 | 00000454 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000456 | 00000452 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) + 2 | 00000457 | 00000453 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) +Time 2026-02-26T21:05:15.5857131Z +Commit 00000463 284 keys in 6ms 840µs +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000461 | 00000460 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000462 | 00000459 SST | [=================================================================================================] | 02db4fbae698c8a0-ff5d300c6ec803e9 (0 MiB, fresh) + 2 | 00000463 | 00000458 SST | [=================================================================================================] | 02db6c2f0e184d79-ff5d300c6ec803e9 (1 MiB, fresh) +Time 2026-02-26T21:05:28.5918955Z +Commit 00000469 4 keys in 7ms 438µs 100ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000467 | 00000466 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000468 | 00000464 SST | O | d560fc5807f4ad5d-d560fc5807f4ad5d (0 MiB, fresh) + 2 | 00000469 | 00000465 SST | O | d560fc5807f4ad5d-d560fc5807f4ad5d (0 MiB, fresh) +Time 2026-02-26T21:06:26.2476473Z +Commit 00000475 4 keys in 6ms 308µs 300ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000473 | 00000472 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000474 | 00000470 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) + 2 | 00000475 | 00000471 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) +Time 2026-02-26T21:07:33.6209156Z +Commit 00000481 4 keys in 10ms 834µs 100ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000479 | 00000478 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 2 | 00000480 | 00000477 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) + 1 | 00000481 | 00000476 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) +Time 2026-02-26T21:08:41.1077107Z +Commit 00000487 4 keys in 15ms 997µs +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000485 | 00000484 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000486 | 00000482 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) + 2 | 00000487 | 00000483 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) +Time 2026-02-26T21:10:03.7708786Z +Commit 00000493 4 keys in 17ms 103µs 600ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000491 | 00000490 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000492 | 00000489 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) + 2 | 00000493 | 00000488 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) +Time 2026-02-26T21:12:27.0990746Z +Commit 00000499 284 keys in 6ms 424µs 200ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000497 | 00000496 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000498 | 00000495 SST | [=================================================================================================] | 02db4fbae698c8a0-ff5d300c6ec803e9 (0 MiB, fresh) + 2 | 00000499 | 00000494 SST | [=================================================================================================] | 02db6c2f0e184d79-ff5d300c6ec803e9 (1 MiB, fresh) +Time 2026-02-26T21:12:55.8275629Z +Commit 00000505 4 keys in 16ms 524µs +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000503 | 00000502 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000504 | 00000500 SST | O | d560fc5807f4ad5d-d560fc5807f4ad5d (0 MiB, fresh) + 2 | 00000505 | 00000501 SST | O | d560fc5807f4ad5d-d560fc5807f4ad5d (0 MiB, fresh) +Time 2026-02-26T21:14:44.2695965Z +Commit 00000515 406 keys in 9ms 824µs 300ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000511 | 00000508 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000512 | 00000506 SST | [=================================================================================================] | 02db4fbae698c8a0-ff45d6c3b893bf25 (0 MiB, fresh) + 2 | 00000513 | 00000507 SST | [================================================================================================] | 05453bed577879aa-ff45d6c3b893bf25 (0 MiB, fresh) + 3 | 00000514 | 00000510 SST | [==========================================================================================] | 11e9bd75cdf37d08-f8abbb2ed504e81e (0 MiB, fresh) + 4 | 00000515 | 00000509 SST | [============================================================================================] | 109eeb1c1d291142-feaecd2031d34cd9 (0 MiB, fresh) +Time 2026-02-26T21:15:02.0634072Z +Commit 00000525 769 keys in 10ms 370µs +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000521 | 00000518 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000522 | 00000517 SST | [==================================================================================================] | 00ef2f23fed07928-ff9ba2a930261ff5 (0 MiB, fresh) + 3 | 00000523 | 00000519 SST | [================================] | 4abb0e5dca7a94e8-9f7c910daf2834d0 (0 MiB, fresh) + 4 | 00000524 | 00000520 SST | [===========================================================================] | 2e12de749b7b2af5-ee3ac3dc997d7a22 (0 MiB, fresh) + 2 | 00000525 | 00000516 SST | [==================================================================================================] | 00ef2f23fed07928-ff9ba2a930261ff5 (1 MiB, fresh) +Time 2026-02-26T21:15:21.118458Z +Commit 00000535 509 keys in 10ms 265µs 200ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000531 | 00000528 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000532 | 00000527 SST | [==================================================================================================] | 01ffec17de77e2d0-ff4316fd0f0d760c (0 MiB, fresh) + 3 | 00000533 | 00000529 SST | [===============] | 9490f5ca8a46ed49-bdbeb5e8d0d7ad9d (0 MiB, fresh) + 4 | 00000534 | 00000530 SST | [==] | cc4ac1a26c17ccd3-d25e91fa75fc7af7 (0 MiB, fresh) + 2 | 00000535 | 00000526 SST | [==================================================================================================] | 01ffec17de77e2d0-ff4316fd0f0d760c (1 MiB, fresh) +Time 2026-02-26T21:16:45.0324918Z +Commit 00000541 4 keys in 6ms 325µs +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000539 | 00000538 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000540 | 00000536 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) + 2 | 00000541 | 00000537 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) +Time 2026-02-26T21:20:19.8715721Z +Commit 00000547 4 keys in 5ms 965µs 200ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000545 | 00000544 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 2 | 00000546 | 00000543 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) + 1 | 00000547 | 00000542 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) +Time 2026-02-26T21:21:49.951935Z +Commit 00000553 4 keys in 15ms 299µs 500ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000551 | 00000550 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000552 | 00000548 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) + 2 | 00000553 | 00000549 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) +Time 2026-02-26T21:23:20.0599131Z +Commit 00000559 4 keys in 14ms 816µs 300ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000557 | 00000556 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000558 | 00000554 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) + 2 | 00000559 | 00000555 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) +Time 2026-02-26T21:25:50.1941238Z +Commit 00000565 4 keys in 15ms 911µs 300ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000563 | 00000562 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000564 | 00000560 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) + 2 | 00000565 | 00000561 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) +Time 2026-02-26T21:30:20.6156899Z +Commit 00000571 4 keys in 17ms 30µs 400ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000569 | 00000568 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000570 | 00000566 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) + 2 | 00000571 | 00000567 SST | O | f3604e3d46699c39-f3604e3d46699c39 (0 MiB, fresh) +Time 2026-02-26T21:33:28.0582828Z +Commit 00000577 355 keys in 6ms 245µs 700ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000575 | 00000574 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000576 | 00000572 SST | [==================================================================================================] | 005abd0355df8a6a-ff382aabfbf937ca (0 MiB, fresh) + 2 | 00000577 | 00000573 SST | [==================================================================================================] | 01ffec17de77e2d0-ff382aabfbf937ca (0 MiB, fresh) +Time 2026-02-26T21:33:33.8843105Z +Commit 00000587 13970 keys in 13ms 786µs 400ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000583 | 00000580 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000584 | 00000579 SST | [==================================================================================================] | 00077221ce365242-fffa05bbf935dd9a (1 MiB, fresh) + 2 | 00000585 | 00000578 SST | [==================================================================================================] | 00077221ce365242-fffa05bbf935dd9a (13 MiB, fresh) + 3 | 00000586 | 00000582 SST | [==================================================================================================] | 00304e425fbeb0de-ffc47359303981b3 (0 MiB, fresh) + 4 | 00000587 | 00000581 SST | [==================================================================================================] | 00333ae1b2c4949a-ff193f2aaf13b757 (0 MiB, fresh) +Time 2026-02-26T21:33:38.3253176Z +Commit 00000597 5939 keys in 14ms 710µs 800ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000593 | 00000590 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000594 | 00000589 SST | [==================================================================================================] | 004ff9483c0a66d8-ffd5b722b7a66751 (1 MiB, fresh) + 2 | 00000595 | 00000588 SST | [==================================================================================================] | 004ff9483c0a66d8-ff9ba2a930261ff5 (18 MiB, fresh) + 3 | 00000596 | 00000592 SST | [================================================================================================] | 05b6e5977212bf6e-ff41e4164334a964 (0 MiB, fresh) + 4 | 00000597 | 00000591 SST | [=============================================================================================] | 0ca128b2a799df82-fcbc1f5047374a39 (0 MiB, fresh) + 2 | 00000601 | Compaction: + 2 | 00000601 | MERGE (168828 keys): + 2 | 00000601 | 00000305 INPUT | [==================================================================================================] | 00005b386d02964f-ffffc8b261a62b07 + 2 | 00000601 | 00000304 INPUT | [==================================================================================================] | 0010e26242e36d1c-fffdd89e249d22e3 + 2 | 00000601 | 00000309 INPUT | O | f3604e3d46699c39-f3604e3d46699c39 + 2 | 00000601 | 00000315 INPUT | [=================================================================================================] | 032bb96c3ad16ffb-ff9ba2a930261ff5 + 2 | 00000601 | 00000324 INPUT | [==================================================================================================] | 000801e97f7ace52-fff73bb502d5418e + 2 | 00000601 | 00000335 INPUT | [==================================================================================================] | 01143c850eed9e29-ffe52b04411d0c6c + 2 | 00000601 | 00000345 INPUT | [==================================================================================================] | 00c36338b61e8adb-ffbf3c5782f5a629 + 2 | 00000601 | 00000354 INPUT | [==================================================================================================] | 00ee18f444e5a26f-fff73bb502d5418e + 2 | 00000601 | 00000365 INPUT | [==================================================================================================] | 000bd3f15bd5aba7-ffbf3c5782f5a629 + 2 | 00000601 | 00000375 INPUT | O | f3604e3d46699c39-f3604e3d46699c39 + 2 | 00000601 | 00000380 INPUT | [==================================================================================================] | 000bd3f15bd5aba7-ffd86059d1521c87 + 2 | 00000601 | 00000390 INPUT | [==================================================================================================] | 00077221ce365242-fffa05bbf935dd9a + 2 | 00000601 | 00000401 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 + 2 | 00000601 | 00000407 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 + 2 | 00000601 | 00000413 INPUT | [==================================================================================================] | 004ff9483c0a66d8-fe2672db426307a5 + 2 | 00000601 | 00000419 INPUT | [============================] | 6a0bff6b8900e4bb-b49f849ad2883812 + 2 | 00000601 | 00000425 INPUT | O | f3604e3d46699c39-f3604e3d46699c39 + 2 | 00000601 | 00000431 INPUT | [==========================================] | 7b00e3285e298166-ea09ba9bfc356d33 + 2 | 00000601 | 00000437 INPUT | [==================================================================================================] | 0030969f552fa734-ff5d300c6ec803e9 + 2 | 00000601 | 00000447 INPUT | O | d560fc5807f4ad5d-d560fc5807f4ad5d + 2 | 00000601 | 00000453 INPUT | O | f3604e3d46699c39-f3604e3d46699c39 + 2 | 00000601 | 00000458 INPUT | [=================================================================================================] | 02db6c2f0e184d79-ff5d300c6ec803e9 + 2 | 00000601 | 00000465 INPUT | O | d560fc5807f4ad5d-d560fc5807f4ad5d + 2 | 00000601 | 00000471 INPUT | O | f3604e3d46699c39-f3604e3d46699c39 + 2 | 00000601 | 00000477 INPUT | O | f3604e3d46699c39-f3604e3d46699c39 + 2 | 00000601 | 00000483 INPUT | O | f3604e3d46699c39-f3604e3d46699c39 + 2 | 00000601 | 00000488 INPUT | O | f3604e3d46699c39-f3604e3d46699c39 + 2 | 00000601 | 00000494 INPUT | [=================================================================================================] | 02db6c2f0e184d79-ff5d300c6ec803e9 + 2 | 00000601 | 00000501 INPUT | O | d560fc5807f4ad5d-d560fc5807f4ad5d + 2 | 00000601 | 00000507 INPUT | [================================================================================================] | 05453bed577879aa-ff45d6c3b893bf25 + 2 | 00000601 | 00000516 INPUT | [==================================================================================================] | 00ef2f23fed07928-ff9ba2a930261ff5 + 2 | 00000601 | 00000526 INPUT | [==================================================================================================] | 01ffec17de77e2d0-ff4316fd0f0d760c + 2 | 00000601 | 00000537 INPUT | O | f3604e3d46699c39-f3604e3d46699c39 + 2 | 00000601 | 00000543 INPUT | O | f3604e3d46699c39-f3604e3d46699c39 + 2 | 00000601 | 00000549 INPUT | O | f3604e3d46699c39-f3604e3d46699c39 + 2 | 00000601 | 00000555 INPUT | O | f3604e3d46699c39-f3604e3d46699c39 + 2 | 00000601 | 00000561 INPUT | O | f3604e3d46699c39-f3604e3d46699c39 + 2 | 00000601 | 00000567 INPUT | O | f3604e3d46699c39-f3604e3d46699c39 + 2 | 00000601 | 00000573 INPUT | [==================================================================================================] | 01ffec17de77e2d0-ff382aabfbf937ca + 2 | 00000601 | 00000578 INPUT | [==================================================================================================] | 00077221ce365242-fffa05bbf935dd9a + 2 | 00000601 | 00000588 INPUT | [==================================================================================================] | 004ff9483c0a66d8-ff9ba2a930261ff5 + 2 | 00000601 | 00000599 OUTPUT | [=================================================] | 00005b386d02964f-80255ad41929124d (cold) + 2 | 00000601 | 00000600 OUTPUT | [================================================] | 802677d94d2921a1-ffffc8b261a62b07 (cold) + 2 | 00000601 | 00000598 OUTPUT | [==================================================================================================] | 001323f09fa9a69a-ff5176dc4997bcb8 (warm) +Time 2026-02-26T21:33:38.5750585Z +Commit 00000602 168828 keys in 64ms 11µs +FAM | META SEQ | SST SEQ | RANGE + 2 | 00000601 | 00000599 SST | [=================================================] | 00005b386d02964f-80255ad41929124d (42 MiB, cold) + 2 | 00000601 | 00000600 SST | [================================================] | 802677d94d2921a1-ffffc8b261a62b07 (49 MiB, cold) + 2 | 00000601 | 00000598 SST | [==================================================================================================] | 001323f09fa9a69a-ff5176dc4997bcb8 (0 MiB, warm) + 2 | 00000601 | 00000304 00000305 00000309 00000315 00000324 00000335 00000345 00000354 00000365 00000375 00000380 00000390 00000401 00000407 00000413 OBSOLETE SST + 2 | 00000601 | 00000419 00000425 00000431 00000437 00000447 00000453 00000458 00000465 00000471 00000477 00000483 00000488 00000494 00000501 00000507 OBSOLETE SST + 2 | 00000601 | 00000516 00000526 00000537 00000543 00000549 00000555 00000561 00000567 00000573 00000578 00000588 OBSOLETE SST + | | 00000304 00000305 00000309 00000315 00000324 00000335 00000345 00000354 00000365 00000375 00000380 00000390 00000401 00000407 00000413 SST DELETED + | | 00000419 00000425 00000431 00000437 00000447 00000453 00000458 00000465 00000471 00000477 00000483 00000488 00000494 00000501 00000507 SST DELETED + | | 00000516 00000526 00000537 00000543 00000549 00000555 00000561 00000567 00000573 00000578 00000588 SST DELETED + | | 00000306 00000313 00000321 00000332 00000341 00000351 00000361 00000371 00000379 00000387 00000397 00000405 00000411 00000417 00000423 META DELETED + | | 00000429 00000435 00000443 00000451 00000457 00000463 00000469 00000475 00000480 00000487 00000493 00000499 00000505 00000513 00000525 META DELETED + | | 00000535 00000541 00000546 00000553 00000559 00000565 00000571 00000577 00000585 00000595 META DELETED +Time 2026-02-26T21:34:17.0670217Z +Commit 00000608 18 keys in 7ms 14µs 300ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000606 | 00000605 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000607 | 00000603 SST | [======================================================================================] | 13cd2c49ca1298be-f13018284e373bf2 (0 MiB, fresh) + 2 | 00000608 | 00000604 SST | [======================================================================================] | 13cd2c49ca1298be-f13018284e373bf2 (0 MiB, fresh) +Time 2026-02-26T21:38:15.0405886Z +Commit 00000614 8 keys in 18ms 296µs 100ns +FAM | META SEQ | SST SEQ | RANGE + 0 | 00000612 | 00000611 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) + 1 | 00000613 | 00000609 SST | [====================================================] | 30c21cda39d0d234-b964bae58a75b292 (0 MiB, fresh) + 2 | 00000614 | 00000610 SST | [====================================================] | 30c21cda39d0d234-b964bae58a75b292 (0 MiB, fresh) diff --git a/.next/dev/server/app-paths-manifest.json b/.next/dev/server/app-paths-manifest.json index d0a621c..c499394 100644 --- a/.next/dev/server/app-paths-manifest.json +++ b/.next/dev/server/app-paths-manifest.json @@ -4,6 +4,7 @@ "/api/chapters/[id]/route": "app/api/chapters/[id]/route.js", "/api/chapters/route": "app/api/chapters/route.js", "/api/projects/[id]/route": "app/api/projects/[id]/route.js", + "/api/projects/[id]/workflow/route": "app/api/projects/[id]/workflow/route.js", "/api/projects/route": "app/api/projects/route.js", "/dashboard/page": "app/dashboard/page.js", "/login/page": "app/login/page.js", diff --git a/.next/dev/server/app/api/projects/[id]/workflow/route.js b/.next/dev/server/app/api/projects/[id]/workflow/route.js new file mode 100644 index 0000000..ccfa631 --- /dev/null +++ b/.next/dev/server/app/api/projects/[id]/workflow/route.js @@ -0,0 +1,10 @@ +var R=require("../../../../../chunks/[turbopack]_runtime.js")("server/app/api/projects/[id]/workflow/route.js") +R.c("server/chunks/Documents_00 - projet_plumeia_src_lib_prisma_ts_36e982ef._.js") +R.c("server/chunks/549ce_next_f33af993._.js") +R.c("server/chunks/549ce_@auth_core_cb936014._.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]__3e7d68f1._.js") +R.c("server/chunks/13a27__next-internal_server_app_api_projects_[id]_workflow_route_actions_04e92945.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/projects/[id]/workflow/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/projects/[id]/workflow/route.ts [app-route] (ecmascript)\" } [app-route] (ecmascript)").exports diff --git a/.next/dev/server/app/api/projects/[id]/workflow/route.js.map b/.next/dev/server/app/api/projects/[id]/workflow/route.js.map new file mode 100644 index 0000000..c15d7ec --- /dev/null +++ b/.next/dev/server/app/api/projects/[id]/workflow/route.js.map @@ -0,0 +1,5 @@ +{ + "version": 3, + "sources": [], + "sections": [] +} \ No newline at end of file diff --git a/.next/dev/server/app/api/projects/[id]/workflow/route/app-paths-manifest.json b/.next/dev/server/app/api/projects/[id]/workflow/route/app-paths-manifest.json new file mode 100644 index 0000000..257b318 --- /dev/null +++ b/.next/dev/server/app/api/projects/[id]/workflow/route/app-paths-manifest.json @@ -0,0 +1,3 @@ +{ + "/api/projects/[id]/workflow/route": "app/api/projects/[id]/workflow/route.js" +} \ No newline at end of file diff --git a/.next/dev/server/app/api/projects/[id]/workflow/route/build-manifest.json b/.next/dev/server/app/api/projects/[id]/workflow/route/build-manifest.json new file mode 100644 index 0000000..c554383 --- /dev/null +++ b/.next/dev/server/app/api/projects/[id]/workflow/route/build-manifest.json @@ -0,0 +1,11 @@ +{ + "devFiles": [], + "ampDevFiles": [], + "polyfillFiles": [ + "static/chunks/549ce_next_dist_build_polyfills_polyfill-nomodule.js" + ], + "lowPriorityFiles": [], + "rootMainFiles": [], + "pages": {}, + "ampFirstPages": [] +} \ No newline at end of file diff --git a/.next/dev/server/app/api/projects/[id]/workflow/route/server-reference-manifest.json b/.next/dev/server/app/api/projects/[id]/workflow/route/server-reference-manifest.json new file mode 100644 index 0000000..27a92af --- /dev/null +++ b/.next/dev/server/app/api/projects/[id]/workflow/route/server-reference-manifest.json @@ -0,0 +1,4 @@ +{ + "node": {}, + "edge": {} +} \ No newline at end of file diff --git a/.next/dev/server/app/api/projects/[id]/workflow/route_client-reference-manifest.js b/.next/dev/server/app/api/projects/[id]/workflow/route_client-reference-manifest.js new file mode 100644 index 0000000..c87b0ed --- /dev/null +++ b/.next/dev/server/app/api/projects/[id]/workflow/route_client-reference-manifest.js @@ -0,0 +1,2 @@ +globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; +globalThis.__RSC_MANIFEST["/api/projects/[id]/workflow/route"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"rscModuleMapping":{},"edgeRscModuleMapping":{},"entryCSSFiles":{},"entryJSFiles":{}} diff --git a/.next/dev/server/chunks/13a27__next-internal_server_app_api_projects_[id]_workflow_route_actions_04e92945.js b/.next/dev/server/chunks/13a27__next-internal_server_app_api_projects_[id]_workflow_route_actions_04e92945.js new file mode 100644 index 0000000..aec86ee --- /dev/null +++ b/.next/dev/server/chunks/13a27__next-internal_server_app_api_projects_[id]_workflow_route_actions_04e92945.js @@ -0,0 +1,7 @@ +module.exports = [ +"[project]/Documents/00 - projet/plumeia/.next-internal/server/app/api/projects/[id]/workflow/route/actions.js [app-rsc] (server actions loader, ecmascript)", ((__turbopack_context__, module, exports) => { + +}), +]; + +//# sourceMappingURL=13a27__next-internal_server_app_api_projects_%5Bid%5D_workflow_route_actions_04e92945.js.map \ No newline at end of file diff --git a/.next/dev/server/chunks/13a27__next-internal_server_app_api_projects_[id]_workflow_route_actions_04e92945.js.map b/.next/dev/server/chunks/13a27__next-internal_server_app_api_projects_[id]_workflow_route_actions_04e92945.js.map new file mode 100644 index 0000000..f89d7b7 --- /dev/null +++ b/.next/dev/server/chunks/13a27__next-internal_server_app_api_projects_[id]_workflow_route_actions_04e92945.js.map @@ -0,0 +1,6 @@ +{ + "version": 3, + "sources": [], + "sections": [ + {"offset": {"line": 3, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":""}}] +} \ No newline at end of file diff --git a/.next/dev/server/chunks/549ce_next_f33af993._.js b/.next/dev/server/chunks/549ce_next_f33af993._.js new file mode 100644 index 0000000..654e3a7 --- /dev/null +++ b/.next/dev/server/chunks/549ce_next_f33af993._.js @@ -0,0 +1,17306 @@ +module.exports = [ +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/route-modules/app-route/module.compiled.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { + +if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable +; +else { + if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable + ; + else { + if ("TURBOPACK compile-time truthy", 1) { + if ("TURBOPACK compile-time truthy", 1) { + module.exports = __turbopack_context__.r("[externals]/next/dist/compiled/next-server/app-route-turbo.runtime.dev.js [external] (next/dist/compiled/next-server/app-route-turbo.runtime.dev.js, cjs)"); + } else //TURBOPACK unreachable + ; + } else //TURBOPACK unreachable + ; + } +} //# sourceMappingURL=module.compiled.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/route-kind.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "RouteKind", + ()=>RouteKind +]); +var RouteKind = /*#__PURE__*/ function(RouteKind) { + /** + * `PAGES` represents all the React pages that are under `pages/`. + */ RouteKind["PAGES"] = "PAGES"; + /** + * `PAGES_API` represents all the API routes under `pages/api/`. + */ RouteKind["PAGES_API"] = "PAGES_API"; + /** + * `APP_PAGE` represents all the React pages that are under `app/` with the + * filename of `page.{j,t}s{,x}`. + */ RouteKind["APP_PAGE"] = "APP_PAGE"; + /** + * `APP_ROUTE` represents all the API routes and metadata routes that are under `app/` with the + * filename of `route.{j,t}s{,x}`. + */ RouteKind["APP_ROUTE"] = "APP_ROUTE"; + /** + * `IMAGE` represents all the images that are generated by `next/image`. + */ RouteKind["IMAGE"] = "IMAGE"; + return RouteKind; +}({}); //# sourceMappingURL=route-kind.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/trace/constants.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "AppRenderSpan", + ()=>AppRenderSpan, + "AppRouteRouteHandlersSpan", + ()=>AppRouteRouteHandlersSpan, + "BaseServerSpan", + ()=>BaseServerSpan, + "LoadComponentsSpan", + ()=>LoadComponentsSpan, + "LogSpanAllowList", + ()=>LogSpanAllowList, + "MiddlewareSpan", + ()=>MiddlewareSpan, + "NextNodeServerSpan", + ()=>NextNodeServerSpan, + "NextServerSpan", + ()=>NextServerSpan, + "NextVanillaSpanAllowlist", + ()=>NextVanillaSpanAllowlist, + "NodeSpan", + ()=>NodeSpan, + "RenderSpan", + ()=>RenderSpan, + "ResolveMetadataSpan", + ()=>ResolveMetadataSpan, + "RouterSpan", + ()=>RouterSpan, + "StartServerSpan", + ()=>StartServerSpan +]); +/** + * Contains predefined constants for the trace span name in next/server. + * + * Currently, next/server/tracer is internal implementation only for tracking + * next.js's implementation only with known span names defined here. + **/ // eslint typescript has a bug with TS enums +var BaseServerSpan = /*#__PURE__*/ function(BaseServerSpan) { + BaseServerSpan["handleRequest"] = "BaseServer.handleRequest"; + BaseServerSpan["run"] = "BaseServer.run"; + BaseServerSpan["pipe"] = "BaseServer.pipe"; + BaseServerSpan["getStaticHTML"] = "BaseServer.getStaticHTML"; + BaseServerSpan["render"] = "BaseServer.render"; + BaseServerSpan["renderToResponseWithComponents"] = "BaseServer.renderToResponseWithComponents"; + BaseServerSpan["renderToResponse"] = "BaseServer.renderToResponse"; + BaseServerSpan["renderToHTML"] = "BaseServer.renderToHTML"; + BaseServerSpan["renderError"] = "BaseServer.renderError"; + BaseServerSpan["renderErrorToResponse"] = "BaseServer.renderErrorToResponse"; + BaseServerSpan["renderErrorToHTML"] = "BaseServer.renderErrorToHTML"; + BaseServerSpan["render404"] = "BaseServer.render404"; + return BaseServerSpan; +}(BaseServerSpan || {}); +var LoadComponentsSpan = /*#__PURE__*/ function(LoadComponentsSpan) { + LoadComponentsSpan["loadDefaultErrorComponents"] = "LoadComponents.loadDefaultErrorComponents"; + LoadComponentsSpan["loadComponents"] = "LoadComponents.loadComponents"; + return LoadComponentsSpan; +}(LoadComponentsSpan || {}); +var NextServerSpan = /*#__PURE__*/ function(NextServerSpan) { + NextServerSpan["getRequestHandler"] = "NextServer.getRequestHandler"; + NextServerSpan["getRequestHandlerWithMetadata"] = "NextServer.getRequestHandlerWithMetadata"; + NextServerSpan["getServer"] = "NextServer.getServer"; + NextServerSpan["getServerRequestHandler"] = "NextServer.getServerRequestHandler"; + NextServerSpan["createServer"] = "createServer.createServer"; + return NextServerSpan; +}(NextServerSpan || {}); +var NextNodeServerSpan = /*#__PURE__*/ function(NextNodeServerSpan) { + NextNodeServerSpan["compression"] = "NextNodeServer.compression"; + NextNodeServerSpan["getBuildId"] = "NextNodeServer.getBuildId"; + NextNodeServerSpan["createComponentTree"] = "NextNodeServer.createComponentTree"; + NextNodeServerSpan["clientComponentLoading"] = "NextNodeServer.clientComponentLoading"; + NextNodeServerSpan["getLayoutOrPageModule"] = "NextNodeServer.getLayoutOrPageModule"; + NextNodeServerSpan["generateStaticRoutes"] = "NextNodeServer.generateStaticRoutes"; + NextNodeServerSpan["generateFsStaticRoutes"] = "NextNodeServer.generateFsStaticRoutes"; + NextNodeServerSpan["generatePublicRoutes"] = "NextNodeServer.generatePublicRoutes"; + NextNodeServerSpan["generateImageRoutes"] = "NextNodeServer.generateImageRoutes.route"; + NextNodeServerSpan["sendRenderResult"] = "NextNodeServer.sendRenderResult"; + NextNodeServerSpan["proxyRequest"] = "NextNodeServer.proxyRequest"; + NextNodeServerSpan["runApi"] = "NextNodeServer.runApi"; + NextNodeServerSpan["render"] = "NextNodeServer.render"; + NextNodeServerSpan["renderHTML"] = "NextNodeServer.renderHTML"; + NextNodeServerSpan["imageOptimizer"] = "NextNodeServer.imageOptimizer"; + NextNodeServerSpan["getPagePath"] = "NextNodeServer.getPagePath"; + NextNodeServerSpan["getRoutesManifest"] = "NextNodeServer.getRoutesManifest"; + NextNodeServerSpan["findPageComponents"] = "NextNodeServer.findPageComponents"; + NextNodeServerSpan["getFontManifest"] = "NextNodeServer.getFontManifest"; + NextNodeServerSpan["getServerComponentManifest"] = "NextNodeServer.getServerComponentManifest"; + NextNodeServerSpan["getRequestHandler"] = "NextNodeServer.getRequestHandler"; + NextNodeServerSpan["renderToHTML"] = "NextNodeServer.renderToHTML"; + NextNodeServerSpan["renderError"] = "NextNodeServer.renderError"; + NextNodeServerSpan["renderErrorToHTML"] = "NextNodeServer.renderErrorToHTML"; + NextNodeServerSpan["render404"] = "NextNodeServer.render404"; + NextNodeServerSpan["startResponse"] = "NextNodeServer.startResponse"; + // nested inner span, does not require parent scope name + NextNodeServerSpan["route"] = "route"; + NextNodeServerSpan["onProxyReq"] = "onProxyReq"; + NextNodeServerSpan["apiResolver"] = "apiResolver"; + NextNodeServerSpan["internalFetch"] = "internalFetch"; + return NextNodeServerSpan; +}(NextNodeServerSpan || {}); +var StartServerSpan = /*#__PURE__*/ function(StartServerSpan) { + StartServerSpan["startServer"] = "startServer.startServer"; + return StartServerSpan; +}(StartServerSpan || {}); +var RenderSpan = /*#__PURE__*/ function(RenderSpan) { + RenderSpan["getServerSideProps"] = "Render.getServerSideProps"; + RenderSpan["getStaticProps"] = "Render.getStaticProps"; + RenderSpan["renderToString"] = "Render.renderToString"; + RenderSpan["renderDocument"] = "Render.renderDocument"; + RenderSpan["createBodyResult"] = "Render.createBodyResult"; + return RenderSpan; +}(RenderSpan || {}); +var AppRenderSpan = /*#__PURE__*/ function(AppRenderSpan) { + AppRenderSpan["renderToString"] = "AppRender.renderToString"; + AppRenderSpan["renderToReadableStream"] = "AppRender.renderToReadableStream"; + AppRenderSpan["getBodyResult"] = "AppRender.getBodyResult"; + AppRenderSpan["fetch"] = "AppRender.fetch"; + return AppRenderSpan; +}(AppRenderSpan || {}); +var RouterSpan = /*#__PURE__*/ function(RouterSpan) { + RouterSpan["executeRoute"] = "Router.executeRoute"; + return RouterSpan; +}(RouterSpan || {}); +var NodeSpan = /*#__PURE__*/ function(NodeSpan) { + NodeSpan["runHandler"] = "Node.runHandler"; + return NodeSpan; +}(NodeSpan || {}); +var AppRouteRouteHandlersSpan = /*#__PURE__*/ function(AppRouteRouteHandlersSpan) { + AppRouteRouteHandlersSpan["runHandler"] = "AppRouteRouteHandlers.runHandler"; + return AppRouteRouteHandlersSpan; +}(AppRouteRouteHandlersSpan || {}); +var ResolveMetadataSpan = /*#__PURE__*/ function(ResolveMetadataSpan) { + ResolveMetadataSpan["generateMetadata"] = "ResolveMetadata.generateMetadata"; + ResolveMetadataSpan["generateViewport"] = "ResolveMetadata.generateViewport"; + return ResolveMetadataSpan; +}(ResolveMetadataSpan || {}); +var MiddlewareSpan = /*#__PURE__*/ function(MiddlewareSpan) { + MiddlewareSpan["execute"] = "Middleware.execute"; + return MiddlewareSpan; +}(MiddlewareSpan || {}); +const NextVanillaSpanAllowlist = new Set([ + "Middleware.execute", + "BaseServer.handleRequest", + "Render.getServerSideProps", + "Render.getStaticProps", + "AppRender.fetch", + "AppRender.getBodyResult", + "Render.renderDocument", + "Node.runHandler", + "AppRouteRouteHandlers.runHandler", + "ResolveMetadata.generateMetadata", + "ResolveMetadata.generateViewport", + "NextNodeServer.createComponentTree", + "NextNodeServer.findPageComponents", + "NextNodeServer.getLayoutOrPageModule", + "NextNodeServer.startResponse", + "NextNodeServer.clientComponentLoading" +]); +const LogSpanAllowList = new Set([ + "NextNodeServer.findPageComponents", + "NextNodeServer.createComponentTree", + "NextNodeServer.clientComponentLoading" +]); +; + //# sourceMappingURL=constants.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/is-thenable.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +/** + * Check to see if a value is Thenable. + * + * @param promise the maybe-thenable value + * @returns true if the value is thenable + */ __turbopack_context__.s([ + "isThenable", + ()=>isThenable +]); +function isThenable(promise) { + return promise !== null && typeof promise === 'object' && 'then' in promise && typeof promise.then === 'function'; +} //# sourceMappingURL=is-thenable.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/@opentelemetry/api/index.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { + +(()=>{ + "use strict"; + var e = { + 491: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.ContextAPI = void 0; + const n = r(223); + const a = r(172); + const o = r(930); + const i = "context"; + const c = new n.NoopContextManager; + class ContextAPI { + constructor(){} + static getInstance() { + if (!this._instance) { + this._instance = new ContextAPI; + } + return this._instance; + } + setGlobalContextManager(e) { + return (0, a.registerGlobal)(i, e, o.DiagAPI.instance()); + } + active() { + return this._getContextManager().active(); + } + with(e, t, r, ...n) { + return this._getContextManager().with(e, t, r, ...n); + } + bind(e, t) { + return this._getContextManager().bind(e, t); + } + _getContextManager() { + return (0, a.getGlobal)(i) || c; + } + disable() { + this._getContextManager().disable(); + (0, a.unregisterGlobal)(i, o.DiagAPI.instance()); + } + } + t.ContextAPI = ContextAPI; + }, + 930: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.DiagAPI = void 0; + const n = r(56); + const a = r(912); + const o = r(957); + const i = r(172); + const c = "diag"; + class DiagAPI { + constructor(){ + function _logProxy(e) { + return function(...t) { + const r = (0, i.getGlobal)("diag"); + if (!r) return; + return r[e](...t); + }; + } + const e = this; + const setLogger = (t, r = { + logLevel: o.DiagLogLevel.INFO + })=>{ + var n, c, s; + if (t === e) { + const t = new Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation"); + e.error((n = t.stack) !== null && n !== void 0 ? n : t.message); + return false; + } + if (typeof r === "number") { + r = { + logLevel: r + }; + } + const u = (0, i.getGlobal)("diag"); + const l = (0, a.createLogLevelDiagLogger)((c = r.logLevel) !== null && c !== void 0 ? c : o.DiagLogLevel.INFO, t); + if (u && !r.suppressOverrideMessage) { + const e = (s = (new Error).stack) !== null && s !== void 0 ? s : ""; + u.warn(`Current logger will be overwritten from ${e}`); + l.warn(`Current logger will overwrite one already registered from ${e}`); + } + return (0, i.registerGlobal)("diag", l, e, true); + }; + e.setLogger = setLogger; + e.disable = ()=>{ + (0, i.unregisterGlobal)(c, e); + }; + e.createComponentLogger = (e)=>new n.DiagComponentLogger(e); + e.verbose = _logProxy("verbose"); + e.debug = _logProxy("debug"); + e.info = _logProxy("info"); + e.warn = _logProxy("warn"); + e.error = _logProxy("error"); + } + static instance() { + if (!this._instance) { + this._instance = new DiagAPI; + } + return this._instance; + } + } + t.DiagAPI = DiagAPI; + }, + 653: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.MetricsAPI = void 0; + const n = r(660); + const a = r(172); + const o = r(930); + const i = "metrics"; + class MetricsAPI { + constructor(){} + static getInstance() { + if (!this._instance) { + this._instance = new MetricsAPI; + } + return this._instance; + } + setGlobalMeterProvider(e) { + return (0, a.registerGlobal)(i, e, o.DiagAPI.instance()); + } + getMeterProvider() { + return (0, a.getGlobal)(i) || n.NOOP_METER_PROVIDER; + } + getMeter(e, t, r) { + return this.getMeterProvider().getMeter(e, t, r); + } + disable() { + (0, a.unregisterGlobal)(i, o.DiagAPI.instance()); + } + } + t.MetricsAPI = MetricsAPI; + }, + 181: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.PropagationAPI = void 0; + const n = r(172); + const a = r(874); + const o = r(194); + const i = r(277); + const c = r(369); + const s = r(930); + const u = "propagation"; + const l = new a.NoopTextMapPropagator; + class PropagationAPI { + constructor(){ + this.createBaggage = c.createBaggage; + this.getBaggage = i.getBaggage; + this.getActiveBaggage = i.getActiveBaggage; + this.setBaggage = i.setBaggage; + this.deleteBaggage = i.deleteBaggage; + } + static getInstance() { + if (!this._instance) { + this._instance = new PropagationAPI; + } + return this._instance; + } + setGlobalPropagator(e) { + return (0, n.registerGlobal)(u, e, s.DiagAPI.instance()); + } + inject(e, t, r = o.defaultTextMapSetter) { + return this._getGlobalPropagator().inject(e, t, r); + } + extract(e, t, r = o.defaultTextMapGetter) { + return this._getGlobalPropagator().extract(e, t, r); + } + fields() { + return this._getGlobalPropagator().fields(); + } + disable() { + (0, n.unregisterGlobal)(u, s.DiagAPI.instance()); + } + _getGlobalPropagator() { + return (0, n.getGlobal)(u) || l; + } + } + t.PropagationAPI = PropagationAPI; + }, + 997: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.TraceAPI = void 0; + const n = r(172); + const a = r(846); + const o = r(139); + const i = r(607); + const c = r(930); + const s = "trace"; + class TraceAPI { + constructor(){ + this._proxyTracerProvider = new a.ProxyTracerProvider; + this.wrapSpanContext = o.wrapSpanContext; + this.isSpanContextValid = o.isSpanContextValid; + this.deleteSpan = i.deleteSpan; + this.getSpan = i.getSpan; + this.getActiveSpan = i.getActiveSpan; + this.getSpanContext = i.getSpanContext; + this.setSpan = i.setSpan; + this.setSpanContext = i.setSpanContext; + } + static getInstance() { + if (!this._instance) { + this._instance = new TraceAPI; + } + return this._instance; + } + setGlobalTracerProvider(e) { + const t = (0, n.registerGlobal)(s, this._proxyTracerProvider, c.DiagAPI.instance()); + if (t) { + this._proxyTracerProvider.setDelegate(e); + } + return t; + } + getTracerProvider() { + return (0, n.getGlobal)(s) || this._proxyTracerProvider; + } + getTracer(e, t) { + return this.getTracerProvider().getTracer(e, t); + } + disable() { + (0, n.unregisterGlobal)(s, c.DiagAPI.instance()); + this._proxyTracerProvider = new a.ProxyTracerProvider; + } + } + t.TraceAPI = TraceAPI; + }, + 277: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.deleteBaggage = t.setBaggage = t.getActiveBaggage = t.getBaggage = void 0; + const n = r(491); + const a = r(780); + const o = (0, a.createContextKey)("OpenTelemetry Baggage Key"); + function getBaggage(e) { + return e.getValue(o) || undefined; + } + t.getBaggage = getBaggage; + function getActiveBaggage() { + return getBaggage(n.ContextAPI.getInstance().active()); + } + t.getActiveBaggage = getActiveBaggage; + function setBaggage(e, t) { + return e.setValue(o, t); + } + t.setBaggage = setBaggage; + function deleteBaggage(e) { + return e.deleteValue(o); + } + t.deleteBaggage = deleteBaggage; + }, + 993: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.BaggageImpl = void 0; + class BaggageImpl { + constructor(e){ + this._entries = e ? new Map(e) : new Map; + } + getEntry(e) { + const t = this._entries.get(e); + if (!t) { + return undefined; + } + return Object.assign({}, t); + } + getAllEntries() { + return Array.from(this._entries.entries()).map(([e, t])=>[ + e, + t + ]); + } + setEntry(e, t) { + const r = new BaggageImpl(this._entries); + r._entries.set(e, t); + return r; + } + removeEntry(e) { + const t = new BaggageImpl(this._entries); + t._entries.delete(e); + return t; + } + removeEntries(...e) { + const t = new BaggageImpl(this._entries); + for (const r of e){ + t._entries.delete(r); + } + return t; + } + clear() { + return new BaggageImpl; + } + } + t.BaggageImpl = BaggageImpl; + }, + 830: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.baggageEntryMetadataSymbol = void 0; + t.baggageEntryMetadataSymbol = Symbol("BaggageEntryMetadata"); + }, + 369: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.baggageEntryMetadataFromString = t.createBaggage = void 0; + const n = r(930); + const a = r(993); + const o = r(830); + const i = n.DiagAPI.instance(); + function createBaggage(e = {}) { + return new a.BaggageImpl(new Map(Object.entries(e))); + } + t.createBaggage = createBaggage; + function baggageEntryMetadataFromString(e) { + if (typeof e !== "string") { + i.error(`Cannot create baggage metadata from unknown type: ${typeof e}`); + e = ""; + } + return { + __TYPE__: o.baggageEntryMetadataSymbol, + toString () { + return e; + } + }; + } + t.baggageEntryMetadataFromString = baggageEntryMetadataFromString; + }, + 67: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.context = void 0; + const n = r(491); + t.context = n.ContextAPI.getInstance(); + }, + 223: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.NoopContextManager = void 0; + const n = r(780); + class NoopContextManager { + active() { + return n.ROOT_CONTEXT; + } + with(e, t, r, ...n) { + return t.call(r, ...n); + } + bind(e, t) { + return t; + } + enable() { + return this; + } + disable() { + return this; + } + } + t.NoopContextManager = NoopContextManager; + }, + 780: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.ROOT_CONTEXT = t.createContextKey = void 0; + function createContextKey(e) { + return Symbol.for(e); + } + t.createContextKey = createContextKey; + class BaseContext { + constructor(e){ + const t = this; + t._currentContext = e ? new Map(e) : new Map; + t.getValue = (e)=>t._currentContext.get(e); + t.setValue = (e, r)=>{ + const n = new BaseContext(t._currentContext); + n._currentContext.set(e, r); + return n; + }; + t.deleteValue = (e)=>{ + const r = new BaseContext(t._currentContext); + r._currentContext.delete(e); + return r; + }; + } + } + t.ROOT_CONTEXT = new BaseContext; + }, + 506: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.diag = void 0; + const n = r(930); + t.diag = n.DiagAPI.instance(); + }, + 56: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.DiagComponentLogger = void 0; + const n = r(172); + class DiagComponentLogger { + constructor(e){ + this._namespace = e.namespace || "DiagComponentLogger"; + } + debug(...e) { + return logProxy("debug", this._namespace, e); + } + error(...e) { + return logProxy("error", this._namespace, e); + } + info(...e) { + return logProxy("info", this._namespace, e); + } + warn(...e) { + return logProxy("warn", this._namespace, e); + } + verbose(...e) { + return logProxy("verbose", this._namespace, e); + } + } + t.DiagComponentLogger = DiagComponentLogger; + function logProxy(e, t, r) { + const a = (0, n.getGlobal)("diag"); + if (!a) { + return; + } + r.unshift(t); + return a[e](...r); + } + }, + 972: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.DiagConsoleLogger = void 0; + const r = [ + { + n: "error", + c: "error" + }, + { + n: "warn", + c: "warn" + }, + { + n: "info", + c: "info" + }, + { + n: "debug", + c: "debug" + }, + { + n: "verbose", + c: "trace" + } + ]; + class DiagConsoleLogger { + constructor(){ + function _consoleFunc(e) { + return function(...t) { + if (console) { + let r = console[e]; + if (typeof r !== "function") { + r = console.log; + } + if (typeof r === "function") { + return r.apply(console, t); + } + } + }; + } + for(let e = 0; e < r.length; e++){ + this[r[e].n] = _consoleFunc(r[e].c); + } + } + } + t.DiagConsoleLogger = DiagConsoleLogger; + }, + 912: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.createLogLevelDiagLogger = void 0; + const n = r(957); + function createLogLevelDiagLogger(e, t) { + if (e < n.DiagLogLevel.NONE) { + e = n.DiagLogLevel.NONE; + } else if (e > n.DiagLogLevel.ALL) { + e = n.DiagLogLevel.ALL; + } + t = t || {}; + function _filterFunc(r, n) { + const a = t[r]; + if (typeof a === "function" && e >= n) { + return a.bind(t); + } + return function() {}; + } + return { + error: _filterFunc("error", n.DiagLogLevel.ERROR), + warn: _filterFunc("warn", n.DiagLogLevel.WARN), + info: _filterFunc("info", n.DiagLogLevel.INFO), + debug: _filterFunc("debug", n.DiagLogLevel.DEBUG), + verbose: _filterFunc("verbose", n.DiagLogLevel.VERBOSE) + }; + } + t.createLogLevelDiagLogger = createLogLevelDiagLogger; + }, + 957: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.DiagLogLevel = void 0; + var r; + (function(e) { + e[e["NONE"] = 0] = "NONE"; + e[e["ERROR"] = 30] = "ERROR"; + e[e["WARN"] = 50] = "WARN"; + e[e["INFO"] = 60] = "INFO"; + e[e["DEBUG"] = 70] = "DEBUG"; + e[e["VERBOSE"] = 80] = "VERBOSE"; + e[e["ALL"] = 9999] = "ALL"; + })(r = t.DiagLogLevel || (t.DiagLogLevel = {})); + }, + 172: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.unregisterGlobal = t.getGlobal = t.registerGlobal = void 0; + const n = r(200); + const a = r(521); + const o = r(130); + const i = a.VERSION.split(".")[0]; + const c = Symbol.for(`opentelemetry.js.api.${i}`); + const s = n._globalThis; + function registerGlobal(e, t, r, n = false) { + var o; + const i = s[c] = (o = s[c]) !== null && o !== void 0 ? o : { + version: a.VERSION + }; + if (!n && i[e]) { + const t = new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`); + r.error(t.stack || t.message); + return false; + } + if (i.version !== a.VERSION) { + const t = new Error(`@opentelemetry/api: Registration of version v${i.version} for ${e} does not match previously registered API v${a.VERSION}`); + r.error(t.stack || t.message); + return false; + } + i[e] = t; + r.debug(`@opentelemetry/api: Registered a global for ${e} v${a.VERSION}.`); + return true; + } + t.registerGlobal = registerGlobal; + function getGlobal(e) { + var t, r; + const n = (t = s[c]) === null || t === void 0 ? void 0 : t.version; + if (!n || !(0, o.isCompatible)(n)) { + return; + } + return (r = s[c]) === null || r === void 0 ? void 0 : r[e]; + } + t.getGlobal = getGlobal; + function unregisterGlobal(e, t) { + t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${a.VERSION}.`); + const r = s[c]; + if (r) { + delete r[e]; + } + } + t.unregisterGlobal = unregisterGlobal; + }, + 130: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.isCompatible = t._makeCompatibilityCheck = void 0; + const n = r(521); + const a = /^(\d+)\.(\d+)\.(\d+)(-(.+))?$/; + function _makeCompatibilityCheck(e) { + const t = new Set([ + e + ]); + const r = new Set; + const n = e.match(a); + if (!n) { + return ()=>false; + } + const o = { + major: +n[1], + minor: +n[2], + patch: +n[3], + prerelease: n[4] + }; + if (o.prerelease != null) { + return function isExactmatch(t) { + return t === e; + }; + } + function _reject(e) { + r.add(e); + return false; + } + function _accept(e) { + t.add(e); + return true; + } + return function isCompatible(e) { + if (t.has(e)) { + return true; + } + if (r.has(e)) { + return false; + } + const n = e.match(a); + if (!n) { + return _reject(e); + } + const i = { + major: +n[1], + minor: +n[2], + patch: +n[3], + prerelease: n[4] + }; + if (i.prerelease != null) { + return _reject(e); + } + if (o.major !== i.major) { + return _reject(e); + } + if (o.major === 0) { + if (o.minor === i.minor && o.patch <= i.patch) { + return _accept(e); + } + return _reject(e); + } + if (o.minor <= i.minor) { + return _accept(e); + } + return _reject(e); + }; + } + t._makeCompatibilityCheck = _makeCompatibilityCheck; + t.isCompatible = _makeCompatibilityCheck(n.VERSION); + }, + 886: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.metrics = void 0; + const n = r(653); + t.metrics = n.MetricsAPI.getInstance(); + }, + 901: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.ValueType = void 0; + var r; + (function(e) { + e[e["INT"] = 0] = "INT"; + e[e["DOUBLE"] = 1] = "DOUBLE"; + })(r = t.ValueType || (t.ValueType = {})); + }, + 102: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.createNoopMeter = t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = t.NOOP_OBSERVABLE_GAUGE_METRIC = t.NOOP_OBSERVABLE_COUNTER_METRIC = t.NOOP_UP_DOWN_COUNTER_METRIC = t.NOOP_HISTOGRAM_METRIC = t.NOOP_COUNTER_METRIC = t.NOOP_METER = t.NoopObservableUpDownCounterMetric = t.NoopObservableGaugeMetric = t.NoopObservableCounterMetric = t.NoopObservableMetric = t.NoopHistogramMetric = t.NoopUpDownCounterMetric = t.NoopCounterMetric = t.NoopMetric = t.NoopMeter = void 0; + class NoopMeter { + constructor(){} + createHistogram(e, r) { + return t.NOOP_HISTOGRAM_METRIC; + } + createCounter(e, r) { + return t.NOOP_COUNTER_METRIC; + } + createUpDownCounter(e, r) { + return t.NOOP_UP_DOWN_COUNTER_METRIC; + } + createObservableGauge(e, r) { + return t.NOOP_OBSERVABLE_GAUGE_METRIC; + } + createObservableCounter(e, r) { + return t.NOOP_OBSERVABLE_COUNTER_METRIC; + } + createObservableUpDownCounter(e, r) { + return t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC; + } + addBatchObservableCallback(e, t) {} + removeBatchObservableCallback(e) {} + } + t.NoopMeter = NoopMeter; + class NoopMetric { + } + t.NoopMetric = NoopMetric; + class NoopCounterMetric extends NoopMetric { + add(e, t) {} + } + t.NoopCounterMetric = NoopCounterMetric; + class NoopUpDownCounterMetric extends NoopMetric { + add(e, t) {} + } + t.NoopUpDownCounterMetric = NoopUpDownCounterMetric; + class NoopHistogramMetric extends NoopMetric { + record(e, t) {} + } + t.NoopHistogramMetric = NoopHistogramMetric; + class NoopObservableMetric { + addCallback(e) {} + removeCallback(e) {} + } + t.NoopObservableMetric = NoopObservableMetric; + class NoopObservableCounterMetric extends NoopObservableMetric { + } + t.NoopObservableCounterMetric = NoopObservableCounterMetric; + class NoopObservableGaugeMetric extends NoopObservableMetric { + } + t.NoopObservableGaugeMetric = NoopObservableGaugeMetric; + class NoopObservableUpDownCounterMetric extends NoopObservableMetric { + } + t.NoopObservableUpDownCounterMetric = NoopObservableUpDownCounterMetric; + t.NOOP_METER = new NoopMeter; + t.NOOP_COUNTER_METRIC = new NoopCounterMetric; + t.NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric; + t.NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric; + t.NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric; + t.NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric; + t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = new NoopObservableUpDownCounterMetric; + function createNoopMeter() { + return t.NOOP_METER; + } + t.createNoopMeter = createNoopMeter; + }, + 660: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.NOOP_METER_PROVIDER = t.NoopMeterProvider = void 0; + const n = r(102); + class NoopMeterProvider { + getMeter(e, t, r) { + return n.NOOP_METER; + } + } + t.NoopMeterProvider = NoopMeterProvider; + t.NOOP_METER_PROVIDER = new NoopMeterProvider; + }, + 200: function(e, t, r) { + var n = this && this.__createBinding || (Object.create ? function(e, t, r, n) { + if (n === undefined) n = r; + Object.defineProperty(e, n, { + enumerable: true, + get: function() { + return t[r]; + } + }); + } : function(e, t, r, n) { + if (n === undefined) n = r; + e[n] = t[r]; + }); + var a = this && this.__exportStar || function(e, t) { + for(var r in e)if (r !== "default" && !Object.prototype.hasOwnProperty.call(t, r)) n(t, e, r); + }; + Object.defineProperty(t, "__esModule", { + value: true + }); + a(r(46), t); + }, + 651: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t._globalThis = void 0; + t._globalThis = typeof globalThis === "object" ? globalThis : /*TURBOPACK member replacement*/ __turbopack_context__.g; + }, + 46: function(e, t, r) { + var n = this && this.__createBinding || (Object.create ? function(e, t, r, n) { + if (n === undefined) n = r; + Object.defineProperty(e, n, { + enumerable: true, + get: function() { + return t[r]; + } + }); + } : function(e, t, r, n) { + if (n === undefined) n = r; + e[n] = t[r]; + }); + var a = this && this.__exportStar || function(e, t) { + for(var r in e)if (r !== "default" && !Object.prototype.hasOwnProperty.call(t, r)) n(t, e, r); + }; + Object.defineProperty(t, "__esModule", { + value: true + }); + a(r(651), t); + }, + 939: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.propagation = void 0; + const n = r(181); + t.propagation = n.PropagationAPI.getInstance(); + }, + 874: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.NoopTextMapPropagator = void 0; + class NoopTextMapPropagator { + inject(e, t) {} + extract(e, t) { + return e; + } + fields() { + return []; + } + } + t.NoopTextMapPropagator = NoopTextMapPropagator; + }, + 194: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.defaultTextMapSetter = t.defaultTextMapGetter = void 0; + t.defaultTextMapGetter = { + get (e, t) { + if (e == null) { + return undefined; + } + return e[t]; + }, + keys (e) { + if (e == null) { + return []; + } + return Object.keys(e); + } + }; + t.defaultTextMapSetter = { + set (e, t, r) { + if (e == null) { + return; + } + e[t] = r; + } + }; + }, + 845: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.trace = void 0; + const n = r(997); + t.trace = n.TraceAPI.getInstance(); + }, + 403: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.NonRecordingSpan = void 0; + const n = r(476); + class NonRecordingSpan { + constructor(e = n.INVALID_SPAN_CONTEXT){ + this._spanContext = e; + } + spanContext() { + return this._spanContext; + } + setAttribute(e, t) { + return this; + } + setAttributes(e) { + return this; + } + addEvent(e, t) { + return this; + } + setStatus(e) { + return this; + } + updateName(e) { + return this; + } + end(e) {} + isRecording() { + return false; + } + recordException(e, t) {} + } + t.NonRecordingSpan = NonRecordingSpan; + }, + 614: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.NoopTracer = void 0; + const n = r(491); + const a = r(607); + const o = r(403); + const i = r(139); + const c = n.ContextAPI.getInstance(); + class NoopTracer { + startSpan(e, t, r = c.active()) { + const n = Boolean(t === null || t === void 0 ? void 0 : t.root); + if (n) { + return new o.NonRecordingSpan; + } + const s = r && (0, a.getSpanContext)(r); + if (isSpanContext(s) && (0, i.isSpanContextValid)(s)) { + return new o.NonRecordingSpan(s); + } else { + return new o.NonRecordingSpan; + } + } + startActiveSpan(e, t, r, n) { + let o; + let i; + let s; + if (arguments.length < 2) { + return; + } else if (arguments.length === 2) { + s = t; + } else if (arguments.length === 3) { + o = t; + s = r; + } else { + o = t; + i = r; + s = n; + } + const u = i !== null && i !== void 0 ? i : c.active(); + const l = this.startSpan(e, o, u); + const g = (0, a.setSpan)(u, l); + return c.with(g, s, undefined, l); + } + } + t.NoopTracer = NoopTracer; + function isSpanContext(e) { + return typeof e === "object" && typeof e["spanId"] === "string" && typeof e["traceId"] === "string" && typeof e["traceFlags"] === "number"; + } + }, + 124: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.NoopTracerProvider = void 0; + const n = r(614); + class NoopTracerProvider { + getTracer(e, t, r) { + return new n.NoopTracer; + } + } + t.NoopTracerProvider = NoopTracerProvider; + }, + 125: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.ProxyTracer = void 0; + const n = r(614); + const a = new n.NoopTracer; + class ProxyTracer { + constructor(e, t, r, n){ + this._provider = e; + this.name = t; + this.version = r; + this.options = n; + } + startSpan(e, t, r) { + return this._getTracer().startSpan(e, t, r); + } + startActiveSpan(e, t, r, n) { + const a = this._getTracer(); + return Reflect.apply(a.startActiveSpan, a, arguments); + } + _getTracer() { + if (this._delegate) { + return this._delegate; + } + const e = this._provider.getDelegateTracer(this.name, this.version, this.options); + if (!e) { + return a; + } + this._delegate = e; + return this._delegate; + } + } + t.ProxyTracer = ProxyTracer; + }, + 846: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.ProxyTracerProvider = void 0; + const n = r(125); + const a = r(124); + const o = new a.NoopTracerProvider; + class ProxyTracerProvider { + getTracer(e, t, r) { + var a; + return (a = this.getDelegateTracer(e, t, r)) !== null && a !== void 0 ? a : new n.ProxyTracer(this, e, t, r); + } + getDelegate() { + var e; + return (e = this._delegate) !== null && e !== void 0 ? e : o; + } + setDelegate(e) { + this._delegate = e; + } + getDelegateTracer(e, t, r) { + var n; + return (n = this._delegate) === null || n === void 0 ? void 0 : n.getTracer(e, t, r); + } + } + t.ProxyTracerProvider = ProxyTracerProvider; + }, + 996: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.SamplingDecision = void 0; + var r; + (function(e) { + e[e["NOT_RECORD"] = 0] = "NOT_RECORD"; + e[e["RECORD"] = 1] = "RECORD"; + e[e["RECORD_AND_SAMPLED"] = 2] = "RECORD_AND_SAMPLED"; + })(r = t.SamplingDecision || (t.SamplingDecision = {})); + }, + 607: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.getSpanContext = t.setSpanContext = t.deleteSpan = t.setSpan = t.getActiveSpan = t.getSpan = void 0; + const n = r(780); + const a = r(403); + const o = r(491); + const i = (0, n.createContextKey)("OpenTelemetry Context Key SPAN"); + function getSpan(e) { + return e.getValue(i) || undefined; + } + t.getSpan = getSpan; + function getActiveSpan() { + return getSpan(o.ContextAPI.getInstance().active()); + } + t.getActiveSpan = getActiveSpan; + function setSpan(e, t) { + return e.setValue(i, t); + } + t.setSpan = setSpan; + function deleteSpan(e) { + return e.deleteValue(i); + } + t.deleteSpan = deleteSpan; + function setSpanContext(e, t) { + return setSpan(e, new a.NonRecordingSpan(t)); + } + t.setSpanContext = setSpanContext; + function getSpanContext(e) { + var t; + return (t = getSpan(e)) === null || t === void 0 ? void 0 : t.spanContext(); + } + t.getSpanContext = getSpanContext; + }, + 325: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.TraceStateImpl = void 0; + const n = r(564); + const a = 32; + const o = 512; + const i = ","; + const c = "="; + class TraceStateImpl { + constructor(e){ + this._internalState = new Map; + if (e) this._parse(e); + } + set(e, t) { + const r = this._clone(); + if (r._internalState.has(e)) { + r._internalState.delete(e); + } + r._internalState.set(e, t); + return r; + } + unset(e) { + const t = this._clone(); + t._internalState.delete(e); + return t; + } + get(e) { + return this._internalState.get(e); + } + serialize() { + return this._keys().reduce((e, t)=>{ + e.push(t + c + this.get(t)); + return e; + }, []).join(i); + } + _parse(e) { + if (e.length > o) return; + this._internalState = e.split(i).reverse().reduce((e, t)=>{ + const r = t.trim(); + const a = r.indexOf(c); + if (a !== -1) { + const o = r.slice(0, a); + const i = r.slice(a + 1, t.length); + if ((0, n.validateKey)(o) && (0, n.validateValue)(i)) { + e.set(o, i); + } else {} + } + return e; + }, new Map); + if (this._internalState.size > a) { + this._internalState = new Map(Array.from(this._internalState.entries()).reverse().slice(0, a)); + } + } + _keys() { + return Array.from(this._internalState.keys()).reverse(); + } + _clone() { + const e = new TraceStateImpl; + e._internalState = new Map(this._internalState); + return e; + } + } + t.TraceStateImpl = TraceStateImpl; + }, + 564: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.validateValue = t.validateKey = void 0; + const r = "[_0-9a-z-*/]"; + const n = `[a-z]${r}{0,255}`; + const a = `[a-z0-9]${r}{0,240}@[a-z]${r}{0,13}`; + const o = new RegExp(`^(?:${n}|${a})$`); + const i = /^[ -~]{0,255}[!-~]$/; + const c = /,|=/; + function validateKey(e) { + return o.test(e); + } + t.validateKey = validateKey; + function validateValue(e) { + return i.test(e) && !c.test(e); + } + t.validateValue = validateValue; + }, + 98: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.createTraceState = void 0; + const n = r(325); + function createTraceState(e) { + return new n.TraceStateImpl(e); + } + t.createTraceState = createTraceState; + }, + 476: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.INVALID_SPAN_CONTEXT = t.INVALID_TRACEID = t.INVALID_SPANID = void 0; + const n = r(475); + t.INVALID_SPANID = "0000000000000000"; + t.INVALID_TRACEID = "00000000000000000000000000000000"; + t.INVALID_SPAN_CONTEXT = { + traceId: t.INVALID_TRACEID, + spanId: t.INVALID_SPANID, + traceFlags: n.TraceFlags.NONE + }; + }, + 357: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.SpanKind = void 0; + var r; + (function(e) { + e[e["INTERNAL"] = 0] = "INTERNAL"; + e[e["SERVER"] = 1] = "SERVER"; + e[e["CLIENT"] = 2] = "CLIENT"; + e[e["PRODUCER"] = 3] = "PRODUCER"; + e[e["CONSUMER"] = 4] = "CONSUMER"; + })(r = t.SpanKind || (t.SpanKind = {})); + }, + 139: (e, t, r)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.wrapSpanContext = t.isSpanContextValid = t.isValidSpanId = t.isValidTraceId = void 0; + const n = r(476); + const a = r(403); + const o = /^([0-9a-f]{32})$/i; + const i = /^[0-9a-f]{16}$/i; + function isValidTraceId(e) { + return o.test(e) && e !== n.INVALID_TRACEID; + } + t.isValidTraceId = isValidTraceId; + function isValidSpanId(e) { + return i.test(e) && e !== n.INVALID_SPANID; + } + t.isValidSpanId = isValidSpanId; + function isSpanContextValid(e) { + return isValidTraceId(e.traceId) && isValidSpanId(e.spanId); + } + t.isSpanContextValid = isSpanContextValid; + function wrapSpanContext(e) { + return new a.NonRecordingSpan(e); + } + t.wrapSpanContext = wrapSpanContext; + }, + 847: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.SpanStatusCode = void 0; + var r; + (function(e) { + e[e["UNSET"] = 0] = "UNSET"; + e[e["OK"] = 1] = "OK"; + e[e["ERROR"] = 2] = "ERROR"; + })(r = t.SpanStatusCode || (t.SpanStatusCode = {})); + }, + 475: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.TraceFlags = void 0; + var r; + (function(e) { + e[e["NONE"] = 0] = "NONE"; + e[e["SAMPLED"] = 1] = "SAMPLED"; + })(r = t.TraceFlags || (t.TraceFlags = {})); + }, + 521: (e, t)=>{ + Object.defineProperty(t, "__esModule", { + value: true + }); + t.VERSION = void 0; + t.VERSION = "1.6.0"; + } + }; + var t = {}; + function __nccwpck_require__(r) { + var n = t[r]; + if (n !== undefined) { + return n.exports; + } + var a = t[r] = { + exports: {} + }; + var o = true; + try { + e[r].call(a.exports, a, a.exports, __nccwpck_require__); + o = false; + } finally{ + if (o) delete t[r]; + } + return a.exports; + } + if (typeof __nccwpck_require__ !== "undefined") __nccwpck_require__.ab = ("TURBOPACK compile-time value", "/ROOT/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/@opentelemetry/api") + "/"; + var r = {}; + (()=>{ + var e = r; + Object.defineProperty(e, "__esModule", { + value: true + }); + e.trace = e.propagation = e.metrics = e.diag = e.context = e.INVALID_SPAN_CONTEXT = e.INVALID_TRACEID = e.INVALID_SPANID = e.isValidSpanId = e.isValidTraceId = e.isSpanContextValid = e.createTraceState = e.TraceFlags = e.SpanStatusCode = e.SpanKind = e.SamplingDecision = e.ProxyTracerProvider = e.ProxyTracer = e.defaultTextMapSetter = e.defaultTextMapGetter = e.ValueType = e.createNoopMeter = e.DiagLogLevel = e.DiagConsoleLogger = e.ROOT_CONTEXT = e.createContextKey = e.baggageEntryMetadataFromString = void 0; + var t = __nccwpck_require__(369); + Object.defineProperty(e, "baggageEntryMetadataFromString", { + enumerable: true, + get: function() { + return t.baggageEntryMetadataFromString; + } + }); + var n = __nccwpck_require__(780); + Object.defineProperty(e, "createContextKey", { + enumerable: true, + get: function() { + return n.createContextKey; + } + }); + Object.defineProperty(e, "ROOT_CONTEXT", { + enumerable: true, + get: function() { + return n.ROOT_CONTEXT; + } + }); + var a = __nccwpck_require__(972); + Object.defineProperty(e, "DiagConsoleLogger", { + enumerable: true, + get: function() { + return a.DiagConsoleLogger; + } + }); + var o = __nccwpck_require__(957); + Object.defineProperty(e, "DiagLogLevel", { + enumerable: true, + get: function() { + return o.DiagLogLevel; + } + }); + var i = __nccwpck_require__(102); + Object.defineProperty(e, "createNoopMeter", { + enumerable: true, + get: function() { + return i.createNoopMeter; + } + }); + var c = __nccwpck_require__(901); + Object.defineProperty(e, "ValueType", { + enumerable: true, + get: function() { + return c.ValueType; + } + }); + var s = __nccwpck_require__(194); + Object.defineProperty(e, "defaultTextMapGetter", { + enumerable: true, + get: function() { + return s.defaultTextMapGetter; + } + }); + Object.defineProperty(e, "defaultTextMapSetter", { + enumerable: true, + get: function() { + return s.defaultTextMapSetter; + } + }); + var u = __nccwpck_require__(125); + Object.defineProperty(e, "ProxyTracer", { + enumerable: true, + get: function() { + return u.ProxyTracer; + } + }); + var l = __nccwpck_require__(846); + Object.defineProperty(e, "ProxyTracerProvider", { + enumerable: true, + get: function() { + return l.ProxyTracerProvider; + } + }); + var g = __nccwpck_require__(996); + Object.defineProperty(e, "SamplingDecision", { + enumerable: true, + get: function() { + return g.SamplingDecision; + } + }); + var p = __nccwpck_require__(357); + Object.defineProperty(e, "SpanKind", { + enumerable: true, + get: function() { + return p.SpanKind; + } + }); + var d = __nccwpck_require__(847); + Object.defineProperty(e, "SpanStatusCode", { + enumerable: true, + get: function() { + return d.SpanStatusCode; + } + }); + var _ = __nccwpck_require__(475); + Object.defineProperty(e, "TraceFlags", { + enumerable: true, + get: function() { + return _.TraceFlags; + } + }); + var f = __nccwpck_require__(98); + Object.defineProperty(e, "createTraceState", { + enumerable: true, + get: function() { + return f.createTraceState; + } + }); + var b = __nccwpck_require__(139); + Object.defineProperty(e, "isSpanContextValid", { + enumerable: true, + get: function() { + return b.isSpanContextValid; + } + }); + Object.defineProperty(e, "isValidTraceId", { + enumerable: true, + get: function() { + return b.isValidTraceId; + } + }); + Object.defineProperty(e, "isValidSpanId", { + enumerable: true, + get: function() { + return b.isValidSpanId; + } + }); + var v = __nccwpck_require__(476); + Object.defineProperty(e, "INVALID_SPANID", { + enumerable: true, + get: function() { + return v.INVALID_SPANID; + } + }); + Object.defineProperty(e, "INVALID_TRACEID", { + enumerable: true, + get: function() { + return v.INVALID_TRACEID; + } + }); + Object.defineProperty(e, "INVALID_SPAN_CONTEXT", { + enumerable: true, + get: function() { + return v.INVALID_SPAN_CONTEXT; + } + }); + const O = __nccwpck_require__(67); + Object.defineProperty(e, "context", { + enumerable: true, + get: function() { + return O.context; + } + }); + const P = __nccwpck_require__(506); + Object.defineProperty(e, "diag", { + enumerable: true, + get: function() { + return P.diag; + } + }); + const N = __nccwpck_require__(886); + Object.defineProperty(e, "metrics", { + enumerable: true, + get: function() { + return N.metrics; + } + }); + const S = __nccwpck_require__(939); + Object.defineProperty(e, "propagation", { + enumerable: true, + get: function() { + return S.propagation; + } + }); + const C = __nccwpck_require__(845); + Object.defineProperty(e, "trace", { + enumerable: true, + get: function() { + return C.trace; + } + }); + e["default"] = { + context: O.context, + diag: P.diag, + metrics: N.metrics, + propagation: S.propagation, + trace: C.trace + }; + })(); + module.exports = r; +})(); +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/trace/tracer.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "BubbledError", + ()=>BubbledError, + "SpanKind", + ()=>SpanKind, + "SpanStatusCode", + ()=>SpanStatusCode, + "getTracer", + ()=>getTracer, + "isBubbledError", + ()=>isBubbledError +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/trace/constants.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$is$2d$thenable$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/is-thenable.js [app-route] (ecmascript)"); +; +; +const NEXT_OTEL_PERFORMANCE_PREFIX = process.env.NEXT_OTEL_PERFORMANCE_PREFIX; +let api; +// we want to allow users to use their own version of @opentelemetry/api if they +// want to, so we try to require it first, and if it fails we fall back to the +// version that is bundled with Next.js +// this is because @opentelemetry/api has to be synced with the version of +// @opentelemetry/tracing that is used, and we don't want to force users to use +// the version that is bundled with Next.js. +// the API is ~stable, so this should be fine +if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable +; +else { + try { + api = __turbopack_context__.r("[externals]/next/dist/compiled/@opentelemetry/api [external] (next/dist/compiled/@opentelemetry/api, cjs)"); + } catch (err) { + api = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/@opentelemetry/api/index.js [app-route] (ecmascript)"); + } +} +const { context, propagation, trace, SpanStatusCode, SpanKind, ROOT_CONTEXT } = api; +class BubbledError extends Error { + constructor(bubble, result){ + super(), this.bubble = bubble, this.result = result; + } +} +function isBubbledError(error) { + if (typeof error !== 'object' || error === null) return false; + return error instanceof BubbledError; +} +const closeSpanWithError = (span, error)=>{ + if (isBubbledError(error) && error.bubble) { + span.setAttribute('next.bubble', true); + } else { + if (error) { + span.recordException(error); + span.setAttribute('error.type', error.name); + } + span.setStatus({ + code: SpanStatusCode.ERROR, + message: error == null ? void 0 : error.message + }); + } + span.end(); +}; +/** we use this map to propagate attributes from nested spans to the top span */ const rootSpanAttributesStore = new Map(); +const rootSpanIdKey = api.createContextKey('next.rootSpanId'); +let lastSpanId = 0; +const getSpanId = ()=>lastSpanId++; +const clientTraceDataSetter = { + set (carrier, key, value) { + carrier.push({ + key, + value + }); + } +}; +class NextTracerImpl { + /** + * Returns an instance to the trace with configured name. + * Since wrap / trace can be defined in any place prior to actual trace subscriber initialization, + * This should be lazily evaluated. + */ getTracerInstance() { + return trace.getTracer('next.js', '0.0.1'); + } + getContext() { + return context; + } + getTracePropagationData() { + const activeContext = context.active(); + const entries = []; + propagation.inject(activeContext, entries, clientTraceDataSetter); + return entries; + } + getActiveScopeSpan() { + return trace.getSpan(context == null ? void 0 : context.active()); + } + withPropagatedContext(carrier, fn, getter) { + const activeContext = context.active(); + if (trace.getSpanContext(activeContext)) { + // Active span is already set, too late to propagate. + return fn(); + } + const remoteContext = propagation.extract(activeContext, carrier, getter); + return context.with(remoteContext, fn); + } + trace(...args) { + const [type, fnOrOptions, fnOrEmpty] = args; + // coerce options form overload + const { fn, options } = typeof fnOrOptions === 'function' ? { + fn: fnOrOptions, + options: {} + } : { + fn: fnOrEmpty, + options: { + ...fnOrOptions + } + }; + const spanName = options.spanName ?? type; + if (!__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextVanillaSpanAllowlist"].has(type) && process.env.NEXT_OTEL_VERBOSE !== '1' || options.hideSpan) { + return fn(); + } + // Trying to get active scoped span to assign parent. If option specifies parent span manually, will try to use it. + let spanContext = this.getSpanContext((options == null ? void 0 : options.parentSpan) ?? this.getActiveScopeSpan()); + if (!spanContext) { + spanContext = (context == null ? void 0 : context.active()) ?? ROOT_CONTEXT; + } + // Check if there's already a root span in the store for this trace + // We are intentionally not checking whether there is an active context + // from outside of nextjs to ensure that we can provide the same level + // of telemetry when using a custom server + const existingRootSpanId = spanContext.getValue(rootSpanIdKey); + const isRootSpan = typeof existingRootSpanId !== 'number' || !rootSpanAttributesStore.has(existingRootSpanId); + const spanId = getSpanId(); + options.attributes = { + 'next.span_name': spanName, + 'next.span_type': type, + ...options.attributes + }; + return context.with(spanContext.setValue(rootSpanIdKey, spanId), ()=>this.getTracerInstance().startActiveSpan(spanName, options, (span)=>{ + let startTime; + if (NEXT_OTEL_PERFORMANCE_PREFIX && type && __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["LogSpanAllowList"].has(type)) { + startTime = 'performance' in globalThis && 'measure' in performance ? globalThis.performance.now() : undefined; + } + let cleanedUp = false; + const onCleanup = ()=>{ + if (cleanedUp) return; + cleanedUp = true; + rootSpanAttributesStore.delete(spanId); + if (startTime) { + performance.measure(`${NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(type.split('.').pop() || '').replace(/[A-Z]/g, (match)=>'-' + match.toLowerCase())}`, { + start: startTime, + end: performance.now() + }); + } + }; + if (isRootSpan) { + rootSpanAttributesStore.set(spanId, new Map(Object.entries(options.attributes ?? {}))); + } + if (fn.length > 1) { + try { + return fn(span, (err)=>closeSpanWithError(span, err)); + } catch (err) { + closeSpanWithError(span, err); + throw err; + } finally{ + onCleanup(); + } + } + try { + const result = fn(span); + if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$is$2d$thenable$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["isThenable"])(result)) { + // If there's error make sure it throws + return result.then((res)=>{ + span.end(); + // Need to pass down the promise result, + // it could be react stream response with error { error, stream } + return res; + }).catch((err)=>{ + closeSpanWithError(span, err); + throw err; + }).finally(onCleanup); + } else { + span.end(); + onCleanup(); + } + return result; + } catch (err) { + closeSpanWithError(span, err); + onCleanup(); + throw err; + } + })); + } + wrap(...args) { + const tracer = this; + const [name, options, fn] = args.length === 3 ? args : [ + args[0], + {}, + args[1] + ]; + if (!__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextVanillaSpanAllowlist"].has(name) && process.env.NEXT_OTEL_VERBOSE !== '1') { + return fn; + } + return function() { + let optionsObj = options; + if (typeof optionsObj === 'function' && typeof fn === 'function') { + optionsObj = optionsObj.apply(this, arguments); + } + const lastArgId = arguments.length - 1; + const cb = arguments[lastArgId]; + if (typeof cb === 'function') { + const scopeBoundCb = tracer.getContext().bind(context.active(), cb); + return tracer.trace(name, optionsObj, (_span, done)=>{ + arguments[lastArgId] = function(err) { + done == null ? void 0 : done(err); + return scopeBoundCb.apply(this, arguments); + }; + return fn.apply(this, arguments); + }); + } else { + return tracer.trace(name, optionsObj, ()=>fn.apply(this, arguments)); + } + }; + } + startSpan(...args) { + const [type, options] = args; + const spanContext = this.getSpanContext((options == null ? void 0 : options.parentSpan) ?? this.getActiveScopeSpan()); + return this.getTracerInstance().startSpan(type, options, spanContext); + } + getSpanContext(parentSpan) { + const spanContext = parentSpan ? trace.setSpan(context.active(), parentSpan) : undefined; + return spanContext; + } + getRootSpanAttributes() { + const spanId = context.active().getValue(rootSpanIdKey); + return rootSpanAttributesStore.get(spanId); + } + setRootSpanAttribute(key, value) { + const spanId = context.active().getValue(rootSpanIdKey); + const attributes = rootSpanAttributesStore.get(spanId); + if (attributes && !attributes.has(key)) { + attributes.set(key, value); + } + } + withSpan(span, fn) { + const spanContext = trace.setSpan(context.active(), span); + return context.with(spanContext, fn); + } +} +const getTracer = (()=>{ + const tracer = new NextTracerImpl(); + return ()=>tracer; +})(); +; + //# sourceMappingURL=tracer.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/constants.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "ACTION_SUFFIX", + ()=>ACTION_SUFFIX, + "APP_DIR_ALIAS", + ()=>APP_DIR_ALIAS, + "CACHE_ONE_YEAR", + ()=>CACHE_ONE_YEAR, + "DOT_NEXT_ALIAS", + ()=>DOT_NEXT_ALIAS, + "ESLINT_DEFAULT_DIRS", + ()=>ESLINT_DEFAULT_DIRS, + "GSP_NO_RETURNED_VALUE", + ()=>GSP_NO_RETURNED_VALUE, + "GSSP_COMPONENT_MEMBER_ERROR", + ()=>GSSP_COMPONENT_MEMBER_ERROR, + "GSSP_NO_RETURNED_VALUE", + ()=>GSSP_NO_RETURNED_VALUE, + "HTML_CONTENT_TYPE_HEADER", + ()=>HTML_CONTENT_TYPE_HEADER, + "INFINITE_CACHE", + ()=>INFINITE_CACHE, + "INSTRUMENTATION_HOOK_FILENAME", + ()=>INSTRUMENTATION_HOOK_FILENAME, + "JSON_CONTENT_TYPE_HEADER", + ()=>JSON_CONTENT_TYPE_HEADER, + "MATCHED_PATH_HEADER", + ()=>MATCHED_PATH_HEADER, + "MIDDLEWARE_FILENAME", + ()=>MIDDLEWARE_FILENAME, + "MIDDLEWARE_LOCATION_REGEXP", + ()=>MIDDLEWARE_LOCATION_REGEXP, + "NEXT_BODY_SUFFIX", + ()=>NEXT_BODY_SUFFIX, + "NEXT_CACHE_IMPLICIT_TAG_ID", + ()=>NEXT_CACHE_IMPLICIT_TAG_ID, + "NEXT_CACHE_REVALIDATED_TAGS_HEADER", + ()=>NEXT_CACHE_REVALIDATED_TAGS_HEADER, + "NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER", + ()=>NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER, + "NEXT_CACHE_SOFT_TAG_MAX_LENGTH", + ()=>NEXT_CACHE_SOFT_TAG_MAX_LENGTH, + "NEXT_CACHE_TAGS_HEADER", + ()=>NEXT_CACHE_TAGS_HEADER, + "NEXT_CACHE_TAG_MAX_ITEMS", + ()=>NEXT_CACHE_TAG_MAX_ITEMS, + "NEXT_CACHE_TAG_MAX_LENGTH", + ()=>NEXT_CACHE_TAG_MAX_LENGTH, + "NEXT_DATA_SUFFIX", + ()=>NEXT_DATA_SUFFIX, + "NEXT_INTERCEPTION_MARKER_PREFIX", + ()=>NEXT_INTERCEPTION_MARKER_PREFIX, + "NEXT_META_SUFFIX", + ()=>NEXT_META_SUFFIX, + "NEXT_QUERY_PARAM_PREFIX", + ()=>NEXT_QUERY_PARAM_PREFIX, + "NEXT_RESUME_HEADER", + ()=>NEXT_RESUME_HEADER, + "NON_STANDARD_NODE_ENV", + ()=>NON_STANDARD_NODE_ENV, + "PAGES_DIR_ALIAS", + ()=>PAGES_DIR_ALIAS, + "PRERENDER_REVALIDATE_HEADER", + ()=>PRERENDER_REVALIDATE_HEADER, + "PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER", + ()=>PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER, + "PROXY_FILENAME", + ()=>PROXY_FILENAME, + "PROXY_LOCATION_REGEXP", + ()=>PROXY_LOCATION_REGEXP, + "PUBLIC_DIR_MIDDLEWARE_CONFLICT", + ()=>PUBLIC_DIR_MIDDLEWARE_CONFLICT, + "ROOT_DIR_ALIAS", + ()=>ROOT_DIR_ALIAS, + "RSC_ACTION_CLIENT_WRAPPER_ALIAS", + ()=>RSC_ACTION_CLIENT_WRAPPER_ALIAS, + "RSC_ACTION_ENCRYPTION_ALIAS", + ()=>RSC_ACTION_ENCRYPTION_ALIAS, + "RSC_ACTION_PROXY_ALIAS", + ()=>RSC_ACTION_PROXY_ALIAS, + "RSC_ACTION_VALIDATE_ALIAS", + ()=>RSC_ACTION_VALIDATE_ALIAS, + "RSC_CACHE_WRAPPER_ALIAS", + ()=>RSC_CACHE_WRAPPER_ALIAS, + "RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS", + ()=>RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS, + "RSC_MOD_REF_PROXY_ALIAS", + ()=>RSC_MOD_REF_PROXY_ALIAS, + "RSC_SEGMENTS_DIR_SUFFIX", + ()=>RSC_SEGMENTS_DIR_SUFFIX, + "RSC_SEGMENT_SUFFIX", + ()=>RSC_SEGMENT_SUFFIX, + "RSC_SUFFIX", + ()=>RSC_SUFFIX, + "SERVER_PROPS_EXPORT_ERROR", + ()=>SERVER_PROPS_EXPORT_ERROR, + "SERVER_PROPS_GET_INIT_PROPS_CONFLICT", + ()=>SERVER_PROPS_GET_INIT_PROPS_CONFLICT, + "SERVER_PROPS_SSG_CONFLICT", + ()=>SERVER_PROPS_SSG_CONFLICT, + "SERVER_RUNTIME", + ()=>SERVER_RUNTIME, + "SSG_FALLBACK_EXPORT_ERROR", + ()=>SSG_FALLBACK_EXPORT_ERROR, + "SSG_GET_INITIAL_PROPS_CONFLICT", + ()=>SSG_GET_INITIAL_PROPS_CONFLICT, + "STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR", + ()=>STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR, + "TEXT_PLAIN_CONTENT_TYPE_HEADER", + ()=>TEXT_PLAIN_CONTENT_TYPE_HEADER, + "UNSTABLE_REVALIDATE_RENAME_ERROR", + ()=>UNSTABLE_REVALIDATE_RENAME_ERROR, + "WEBPACK_LAYERS", + ()=>WEBPACK_LAYERS, + "WEBPACK_RESOURCE_QUERIES", + ()=>WEBPACK_RESOURCE_QUERIES, + "WEB_SOCKET_MAX_RECONNECTIONS", + ()=>WEB_SOCKET_MAX_RECONNECTIONS +]); +const TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain'; +const HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8'; +const JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8'; +const NEXT_QUERY_PARAM_PREFIX = 'nxtP'; +const NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI'; +const MATCHED_PATH_HEADER = 'x-matched-path'; +const PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate'; +const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER = 'x-prerender-revalidate-if-generated'; +const RSC_SEGMENTS_DIR_SUFFIX = '.segments'; +const RSC_SEGMENT_SUFFIX = '.segment.rsc'; +const RSC_SUFFIX = '.rsc'; +const ACTION_SUFFIX = '.action'; +const NEXT_DATA_SUFFIX = '.json'; +const NEXT_META_SUFFIX = '.meta'; +const NEXT_BODY_SUFFIX = '.body'; +const NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags'; +const NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags'; +const NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER = 'x-next-revalidate-tag-token'; +const NEXT_RESUME_HEADER = 'next-resume'; +const NEXT_CACHE_TAG_MAX_ITEMS = 128; +const NEXT_CACHE_TAG_MAX_LENGTH = 256; +const NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024; +const NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_'; +const CACHE_ONE_YEAR = 31536000; +const INFINITE_CACHE = 0xfffffffe; +const MIDDLEWARE_FILENAME = 'middleware'; +const MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`; +const PROXY_FILENAME = 'proxy'; +const PROXY_LOCATION_REGEXP = `(?:src/)?${PROXY_FILENAME}`; +const INSTRUMENTATION_HOOK_FILENAME = 'instrumentation'; +const PAGES_DIR_ALIAS = 'private-next-pages'; +const DOT_NEXT_ALIAS = 'private-dot-next'; +const ROOT_DIR_ALIAS = 'private-next-root-dir'; +const APP_DIR_ALIAS = 'private-next-app-dir'; +const RSC_MOD_REF_PROXY_ALIAS = 'private-next-rsc-mod-ref-proxy'; +const RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate'; +const RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference'; +const RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper'; +const RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS = 'private-next-rsc-track-dynamic-import'; +const RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption'; +const RSC_ACTION_CLIENT_WRAPPER_ALIAS = 'private-next-rsc-action-client-wrapper'; +const PUBLIC_DIR_MIDDLEWARE_CONFLICT = `You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`; +const SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`; +const SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`; +const SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`; +const STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`; +const SERVER_PROPS_EXPORT_ERROR = `pages with \`getServerSideProps\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`; +const GSP_NO_RETURNED_VALUE = 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?'; +const GSSP_NO_RETURNED_VALUE = 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?'; +const UNSTABLE_REVALIDATE_RENAME_ERROR = 'The `unstable_revalidate` property is available for general use.\n' + 'Please use `revalidate` instead.'; +const GSSP_COMPONENT_MEMBER_ERROR = `can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`; +const NON_STANDARD_NODE_ENV = `You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`; +const SSG_FALLBACK_EXPORT_ERROR = `Pages with \`fallback\` enabled in \`getStaticPaths\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`; +const ESLINT_DEFAULT_DIRS = [ + 'app', + 'pages', + 'components', + 'lib', + 'src' +]; +const SERVER_RUNTIME = { + edge: 'edge', + experimentalEdge: 'experimental-edge', + nodejs: 'nodejs' +}; +const WEB_SOCKET_MAX_RECONNECTIONS = 12; +/** + * The names of the webpack layers. These layers are the primitives for the + * webpack chunks. + */ const WEBPACK_LAYERS_NAMES = { + /** + * The layer for the shared code between the client and server bundles. + */ shared: 'shared', + /** + * The layer for server-only runtime and picking up `react-server` export conditions. + * Including app router RSC pages and app router custom routes and metadata routes. + */ reactServerComponents: 'rsc', + /** + * Server Side Rendering layer for app (ssr). + */ serverSideRendering: 'ssr', + /** + * The browser client bundle layer for actions. + */ actionBrowser: 'action-browser', + /** + * The Node.js bundle layer for the API routes. + */ apiNode: 'api-node', + /** + * The Edge Lite bundle layer for the API routes. + */ apiEdge: 'api-edge', + /** + * The layer for the middleware code. + */ middleware: 'middleware', + /** + * The layer for the instrumentation hooks. + */ instrument: 'instrument', + /** + * The layer for assets on the edge. + */ edgeAsset: 'edge-asset', + /** + * The browser client bundle layer for App directory. + */ appPagesBrowser: 'app-pages-browser', + /** + * The browser client bundle layer for Pages directory. + */ pagesDirBrowser: 'pages-dir-browser', + /** + * The Edge Lite bundle layer for Pages directory. + */ pagesDirEdge: 'pages-dir-edge', + /** + * The Node.js bundle layer for Pages directory. + */ pagesDirNode: 'pages-dir-node' +}; +const WEBPACK_LAYERS = { + ...WEBPACK_LAYERS_NAMES, + GROUP: { + builtinReact: [ + WEBPACK_LAYERS_NAMES.reactServerComponents, + WEBPACK_LAYERS_NAMES.actionBrowser + ], + serverOnly: [ + WEBPACK_LAYERS_NAMES.reactServerComponents, + WEBPACK_LAYERS_NAMES.actionBrowser, + WEBPACK_LAYERS_NAMES.instrument, + WEBPACK_LAYERS_NAMES.middleware + ], + neutralTarget: [ + // pages api + WEBPACK_LAYERS_NAMES.apiNode, + WEBPACK_LAYERS_NAMES.apiEdge + ], + clientOnly: [ + WEBPACK_LAYERS_NAMES.serverSideRendering, + WEBPACK_LAYERS_NAMES.appPagesBrowser + ], + bundled: [ + WEBPACK_LAYERS_NAMES.reactServerComponents, + WEBPACK_LAYERS_NAMES.actionBrowser, + WEBPACK_LAYERS_NAMES.serverSideRendering, + WEBPACK_LAYERS_NAMES.appPagesBrowser, + WEBPACK_LAYERS_NAMES.shared, + WEBPACK_LAYERS_NAMES.instrument, + WEBPACK_LAYERS_NAMES.middleware + ], + appPages: [ + // app router pages and layouts + WEBPACK_LAYERS_NAMES.reactServerComponents, + WEBPACK_LAYERS_NAMES.serverSideRendering, + WEBPACK_LAYERS_NAMES.appPagesBrowser, + WEBPACK_LAYERS_NAMES.actionBrowser + ] + } +}; +const WEBPACK_RESOURCE_QUERIES = { + edgeSSREntry: '__next_edge_ssr_entry__', + metadata: '__next_metadata__', + metadataRoute: '__next_metadata_route__', + metadataImageMeta: '__next_metadata_image_meta__' +}; +; + //# sourceMappingURL=constants.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/module.compiled.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable +; +else { + if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable + ; + else { + if ("TURBOPACK compile-time truthy", 1) { + if ("TURBOPACK compile-time truthy", 1) { + module.exports = __turbopack_context__.r("[externals]/next/dist/compiled/next-server/app-page-turbo.runtime.dev.js [external] (next/dist/compiled/next-server/app-page-turbo.runtime.dev.js, cjs)"); + } else //TURBOPACK unreachable + ; + } else //TURBOPACK unreachable + ; + } +} //# sourceMappingURL=module.compiled.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +module.exports = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/module.compiled.js [app-route] (ecmascript)").vendored['react-rsc'].React; //# sourceMappingURL=react.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/hooks-server-context.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "DynamicServerError", + ()=>DynamicServerError, + "isDynamicServerError", + ()=>isDynamicServerError +]); +const DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE'; +class DynamicServerError extends Error { + constructor(description){ + super(`Dynamic server usage: ${description}`), this.description = description, this.digest = DYNAMIC_ERROR_CODE; + } +} +function isDynamicServerError(err) { + if (typeof err !== 'object' || err === null || !('digest' in err) || typeof err.digest !== 'string') { + return false; + } + return err.digest === DYNAMIC_ERROR_CODE; +} //# sourceMappingURL=hooks-server-context.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/static-generation-bailout.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "StaticGenBailoutError", + ()=>StaticGenBailoutError, + "isStaticGenBailoutError", + ()=>isStaticGenBailoutError +]); +const NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT'; +class StaticGenBailoutError extends Error { + constructor(...args){ + super(...args), this.code = NEXT_STATIC_GEN_BAILOUT; + } +} +function isStaticGenBailoutError(error) { + if (typeof error !== 'object' || error === null || !('code' in error)) { + return false; + } + return error.code === NEXT_STATIC_GEN_BAILOUT; +} //# sourceMappingURL=static-generation-bailout.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/dynamic-rendering-utils.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "isHangingPromiseRejectionError", + ()=>isHangingPromiseRejectionError, + "makeDevtoolsIOAwarePromise", + ()=>makeDevtoolsIOAwarePromise, + "makeHangingPromise", + ()=>makeHangingPromise +]); +function isHangingPromiseRejectionError(err) { + if (typeof err !== 'object' || err === null || !('digest' in err)) { + return false; + } + return err.digest === HANGING_PROMISE_REJECTION; +} +const HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION'; +class HangingPromiseRejectionError extends Error { + constructor(route, expression){ + super(`During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \`setTimeout\`, \`after\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route "${route}".`), this.route = route, this.expression = expression, this.digest = HANGING_PROMISE_REJECTION; + } +} +const abortListenersBySignal = new WeakMap(); +function makeHangingPromise(signal, route, expression) { + if (signal.aborted) { + return Promise.reject(new HangingPromiseRejectionError(route, expression)); + } else { + const hangingPromise = new Promise((_, reject)=>{ + const boundRejection = reject.bind(null, new HangingPromiseRejectionError(route, expression)); + let currentListeners = abortListenersBySignal.get(signal); + if (currentListeners) { + currentListeners.push(boundRejection); + } else { + const listeners = [ + boundRejection + ]; + abortListenersBySignal.set(signal, listeners); + signal.addEventListener('abort', ()=>{ + for(let i = 0; i < listeners.length; i++){ + listeners[i](); + } + }, { + once: true + }); + } + }); + // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so + // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct + // your own promise out of it you'll need to ensure you handle the error when it rejects. + hangingPromise.catch(ignoreReject); + return hangingPromise; + } +} +function ignoreReject() {} +function makeDevtoolsIOAwarePromise(underlying, requestStore, stage) { + if (requestStore.stagedRendering) { + // We resolve each stage in a timeout, so React DevTools will pick this up as IO. + return requestStore.stagedRendering.delayUntilStage(stage, undefined, underlying); + } + // in React DevTools if we resolve in a setTimeout we will observe + // the promise resolution as something that can suspend a boundary or root. + return new Promise((resolve)=>{ + // Must use setTimeout to be considered IO React DevTools. setImmediate will not work. + setTimeout(()=>{ + resolve(underlying); + }, 0); + }); +} //# sourceMappingURL=dynamic-rendering-utils.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-constants.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "METADATA_BOUNDARY_NAME", + ()=>METADATA_BOUNDARY_NAME, + "OUTLET_BOUNDARY_NAME", + ()=>OUTLET_BOUNDARY_NAME, + "ROOT_LAYOUT_BOUNDARY_NAME", + ()=>ROOT_LAYOUT_BOUNDARY_NAME, + "VIEWPORT_BOUNDARY_NAME", + ()=>VIEWPORT_BOUNDARY_NAME +]); +const METADATA_BOUNDARY_NAME = '__next_metadata_boundary__'; +const VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__'; +const OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__'; +const ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__'; //# sourceMappingURL=boundary-constants.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/scheduler.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +/** + * Schedules a function to be called on the next tick after the other promises + * have been resolved. + * + * @param cb the function to schedule + */ __turbopack_context__.s([ + "atLeastOneTask", + ()=>atLeastOneTask, + "scheduleImmediate", + ()=>scheduleImmediate, + "scheduleOnNextTick", + ()=>scheduleOnNextTick, + "waitAtLeastOneReactRenderTask", + ()=>waitAtLeastOneReactRenderTask +]); +const scheduleOnNextTick = (cb)=>{ + // We use Promise.resolve().then() here so that the operation is scheduled at + // the end of the promise job queue, we then add it to the next process tick + // to ensure it's evaluated afterwards. + // + // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255 + // + Promise.resolve().then(()=>{ + if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable + ; + else { + process.nextTick(cb); + } + }); +}; +const scheduleImmediate = (cb)=>{ + if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable + ; + else { + setImmediate(cb); + } +}; +function atLeastOneTask() { + return new Promise((resolve)=>scheduleImmediate(resolve)); +} +function waitAtLeastOneReactRenderTask() { + if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable + ; + else { + return new Promise((r)=>setImmediate(r)); + } +} //# sourceMappingURL=scheduler.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/lazy-dynamic/bailout-to-csr.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "BailoutToCSRError", + ()=>BailoutToCSRError, + "isBailoutToCSRError", + ()=>isBailoutToCSRError +]); +// This has to be a shared module which is shared between client component error boundary and dynamic component +const BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING'; +class BailoutToCSRError extends Error { + constructor(reason){ + super(`Bail out to client-side rendering: ${reason}`), this.reason = reason, this.digest = BAILOUT_TO_CSR; + } +} +function isBailoutToCSRError(err) { + if (typeof err !== 'object' || err === null || !('digest' in err)) { + return false; + } + return err.digest === BAILOUT_TO_CSR; +} //# sourceMappingURL=bailout-to-csr.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/invariant-error.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "InvariantError", + ()=>InvariantError +]); +class InvariantError extends Error { + constructor(message, options){ + super(`Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`, options); + this.name = 'InvariantError'; + } +} //# sourceMappingURL=invariant-error.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/app-render/dynamic-rendering.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "Postpone", + ()=>Postpone, + "PreludeState", + ()=>PreludeState, + "abortAndThrowOnSynchronousRequestDataAccess", + ()=>abortAndThrowOnSynchronousRequestDataAccess, + "abortOnSynchronousPlatformIOAccess", + ()=>abortOnSynchronousPlatformIOAccess, + "accessedDynamicData", + ()=>accessedDynamicData, + "annotateDynamicAccess", + ()=>annotateDynamicAccess, + "consumeDynamicAccess", + ()=>consumeDynamicAccess, + "createDynamicTrackingState", + ()=>createDynamicTrackingState, + "createDynamicValidationState", + ()=>createDynamicValidationState, + "createHangingInputAbortSignal", + ()=>createHangingInputAbortSignal, + "createRenderInBrowserAbortSignal", + ()=>createRenderInBrowserAbortSignal, + "delayUntilRuntimeStage", + ()=>delayUntilRuntimeStage, + "formatDynamicAPIAccesses", + ()=>formatDynamicAPIAccesses, + "getFirstDynamicReason", + ()=>getFirstDynamicReason, + "getStaticShellDisallowedDynamicReasons", + ()=>getStaticShellDisallowedDynamicReasons, + "isDynamicPostpone", + ()=>isDynamicPostpone, + "isPrerenderInterruptedError", + ()=>isPrerenderInterruptedError, + "logDisallowedDynamicError", + ()=>logDisallowedDynamicError, + "markCurrentScopeAsDynamic", + ()=>markCurrentScopeAsDynamic, + "postponeWithTracking", + ()=>postponeWithTracking, + "throwIfDisallowedDynamic", + ()=>throwIfDisallowedDynamic, + "throwToInterruptStaticGeneration", + ()=>throwToInterruptStaticGeneration, + "trackAllowedDynamicAccess", + ()=>trackAllowedDynamicAccess, + "trackDynamicDataInDynamicRender", + ()=>trackDynamicDataInDynamicRender, + "trackDynamicHoleInRuntimeShell", + ()=>trackDynamicHoleInRuntimeShell, + "trackDynamicHoleInStaticShell", + ()=>trackDynamicHoleInStaticShell, + "useDynamicRouteParams", + ()=>useDynamicRouteParams, + "useDynamicSearchParams", + ()=>useDynamicSearchParams +]); +/** + * The functions provided by this module are used to communicate certain properties + * about the currently running code so that Next.js can make decisions on how to handle + * the current execution in different rendering modes such as pre-rendering, resuming, and SSR. + * + * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering. + * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts + * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of + * Dynamic indications. + * + * The first is simply an intention to be dynamic. unstable_noStore is an example of this where + * the currently executing code simply declares that the current scope is dynamic but if you use it + * inside unstable_cache it can still be cached. This type of indication can be removed if we ever + * make the default dynamic to begin with because the only way you would ever be static is inside + * a cache scope which this indication does not affect. + * + * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic + * because it means that it is inappropriate to cache this at all. using a dynamic data source inside + * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should + * read that data outside the cache and pass it in as an argument to the cached function. + */ // Once postpone is in stable we should switch to importing the postpone export directly +var __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$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$hooks$2d$server$2d$context$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/hooks-server-context.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$static$2d$generation$2d$bailout$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/static-generation-bailout.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__ = __turbopack_context__.i("[externals]/next/dist/server/app-render/work-unit-async-storage.external.js [external] (next/dist/server/app-render/work-unit-async-storage.external.js, cjs)"); +var __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__ = __turbopack_context__.i("[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/dynamic-rendering-utils.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$framework$2f$boundary$2d$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-constants.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/scheduler.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$lazy$2d$dynamic$2f$bailout$2d$to$2d$csr$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/lazy-dynamic/bailout-to-csr.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/invariant-error.js [app-route] (ecmascript)"); +; +; +; +; +; +; +; +; +; +; +const hasPostpone = typeof __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$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"].unstable_postpone === 'function'; +function createDynamicTrackingState(isDebugDynamicAccesses) { + return { + isDebugDynamicAccesses, + dynamicAccesses: [], + syncDynamicErrorWithStack: null + }; +} +function createDynamicValidationState() { + return { + hasSuspenseAboveBody: false, + hasDynamicMetadata: false, + dynamicMetadata: null, + hasDynamicViewport: false, + hasAllowedDynamic: false, + dynamicErrors: [] + }; +} +function getFirstDynamicReason(trackingState) { + var _trackingState_dynamicAccesses_; + return (_trackingState_dynamicAccesses_ = trackingState.dynamicAccesses[0]) == null ? void 0 : _trackingState_dynamicAccesses_.expression; +} +function markCurrentScopeAsDynamic(store, workUnitStore, expression) { + if (workUnitStore) { + switch(workUnitStore.type){ + case 'cache': + case 'unstable-cache': + // Inside cache scopes, marking a scope as dynamic has no effect, + // because the outer cache scope creates a cache boundary. This is + // subtly different from reading a dynamic data source, which is + // forbidden inside a cache scope. + return; + case 'private-cache': + // A private cache scope is already dynamic by definition. + return; + case 'prerender-legacy': + case 'prerender-ppr': + case 'request': + break; + default: + workUnitStore; + } + } + // If we're forcing dynamic rendering or we're forcing static rendering, we + // don't need to do anything here because the entire page is already dynamic + // or it's static and it should not throw or postpone here. + if (store.forceDynamic || store.forceStatic) return; + if (store.dynamicShouldError) { + throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$static$2d$generation$2d$bailout$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["StaticGenBailoutError"](`Route ${store.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${expression}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), "__NEXT_ERROR_CODE", { + value: "E553", + enumerable: false, + configurable: true + }); + } + if (workUnitStore) { + switch(workUnitStore.type){ + case 'prerender-ppr': + return postponeWithTracking(store.route, expression, workUnitStore.dynamicTracking); + case 'prerender-legacy': + workUnitStore.revalidate = 0; + // We aren't prerendering, but we are generating a static page. We need + // to bail out of static generation. + const err = Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$hooks$2d$server$2d$context$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["DynamicServerError"](`Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), "__NEXT_ERROR_CODE", { + value: "E550", + enumerable: false, + configurable: true + }); + store.dynamicUsageDescription = expression; + store.dynamicUsageStack = err.stack; + throw err; + case 'request': + if ("TURBOPACK compile-time truthy", 1) { + workUnitStore.usedDynamic = true; + } + break; + default: + workUnitStore; + } + } +} +function throwToInterruptStaticGeneration(expression, store, prerenderStore) { + // We aren't prerendering but we are generating a static page. We need to bail out of static generation + const err = Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$hooks$2d$server$2d$context$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["DynamicServerError"](`Route ${store.route} couldn't be rendered statically because it used \`${expression}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), "__NEXT_ERROR_CODE", { + value: "E558", + enumerable: false, + configurable: true + }); + prerenderStore.revalidate = 0; + store.dynamicUsageDescription = expression; + store.dynamicUsageStack = err.stack; + throw err; +} +function trackDynamicDataInDynamicRender(workUnitStore) { + switch(workUnitStore.type){ + case 'cache': + case 'unstable-cache': + // Inside cache scopes, marking a scope as dynamic has no effect, + // because the outer cache scope creates a cache boundary. This is + // subtly different from reading a dynamic data source, which is + // forbidden inside a cache scope. + return; + case 'private-cache': + // A private cache scope is already dynamic by definition. + return; + case 'prerender': + case 'prerender-runtime': + case 'prerender-legacy': + case 'prerender-ppr': + case 'prerender-client': + break; + case 'request': + if ("TURBOPACK compile-time truthy", 1) { + workUnitStore.usedDynamic = true; + } + break; + default: + workUnitStore; + } +} +function abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore) { + const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`; + const error = createPrerenderInterruptedError(reason); + prerenderStore.controller.abort(error); + const dynamicTracking = prerenderStore.dynamicTracking; + if (dynamicTracking) { + dynamicTracking.dynamicAccesses.push({ + // When we aren't debugging, we don't need to create another error for the + // stack trace. + stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined, + expression + }); + } +} +function abortOnSynchronousPlatformIOAccess(route, expression, errorWithStack, prerenderStore) { + const dynamicTracking = prerenderStore.dynamicTracking; + abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore); + // It is important that we set this tracking value after aborting. Aborts are executed + // synchronously except for the case where you abort during render itself. By setting this + // value late we can use it to determine if any of the aborted tasks are the task that + // called the sync IO expression in the first place. + if (dynamicTracking) { + if (dynamicTracking.syncDynamicErrorWithStack === null) { + dynamicTracking.syncDynamicErrorWithStack = errorWithStack; + } + } +} +function abortAndThrowOnSynchronousRequestDataAccess(route, expression, errorWithStack, prerenderStore) { + const prerenderSignal = prerenderStore.controller.signal; + if (prerenderSignal.aborted === false) { + // TODO it would be better to move this aborted check into the callsite so we can avoid making + // the error object when it isn't relevant to the aborting of the prerender however + // since we need the throw semantics regardless of whether we abort it is easier to land + // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer + // to ideal implementation + abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore); + // It is important that we set this tracking value after aborting. Aborts are executed + // synchronously except for the case where you abort during render itself. By setting this + // value late we can use it to determine if any of the aborted tasks are the task that + // called the sync IO expression in the first place. + const dynamicTracking = prerenderStore.dynamicTracking; + if (dynamicTracking) { + if (dynamicTracking.syncDynamicErrorWithStack === null) { + dynamicTracking.syncDynamicErrorWithStack = errorWithStack; + } + } + } + throw createPrerenderInterruptedError(`Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`); +} +function Postpone({ reason, route }) { + const prerenderStore = __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["workUnitAsyncStorage"].getStore(); + const dynamicTracking = prerenderStore && prerenderStore.type === 'prerender-ppr' ? prerenderStore.dynamicTracking : null; + postponeWithTracking(route, reason, dynamicTracking); +} +function postponeWithTracking(route, expression, dynamicTracking) { + assertPostpone(); + if (dynamicTracking) { + dynamicTracking.dynamicAccesses.push({ + // When we aren't debugging, we don't need to create another error for the + // stack trace. + stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined, + expression + }); + } + __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$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"].unstable_postpone(createPostponeReason(route, expression)); +} +function createPostponeReason(route, expression) { + return `Route ${route} needs to bail out of prerendering at this point because it used ${expression}. ` + `React throws this special object to indicate where. It should not be caught by ` + `your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`; +} +function isDynamicPostpone(err) { + if (typeof err === 'object' && err !== null && typeof err.message === 'string') { + return isDynamicPostponeReason(err.message); + } + return false; +} +function isDynamicPostponeReason(reason) { + return reason.includes('needs to bail out of prerendering at this point because it used') && reason.includes('Learn more: https://nextjs.org/docs/messages/ppr-caught-error'); +} +if (isDynamicPostponeReason(createPostponeReason('%%%', '^^^')) === false) { + throw Object.defineProperty(new Error('Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js'), "__NEXT_ERROR_CODE", { + value: "E296", + enumerable: false, + configurable: true + }); +} +const NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED'; +function createPrerenderInterruptedError(message) { + const error = Object.defineProperty(new Error(message), "__NEXT_ERROR_CODE", { + value: "E394", + enumerable: false, + configurable: true + }); + error.digest = NEXT_PRERENDER_INTERRUPTED; + return error; +} +function isPrerenderInterruptedError(error) { + return typeof error === 'object' && error !== null && error.digest === NEXT_PRERENDER_INTERRUPTED && 'name' in error && 'message' in error && error instanceof Error; +} +function accessedDynamicData(dynamicAccesses) { + return dynamicAccesses.length > 0; +} +function consumeDynamicAccess(serverDynamic, clientDynamic) { + // We mutate because we only call this once we are no longer writing + // to the dynamicTrackingState and it's more efficient than creating a new + // array. + serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses); + return serverDynamic.dynamicAccesses; +} +function formatDynamicAPIAccesses(dynamicAccesses) { + return dynamicAccesses.filter((access)=>typeof access.stack === 'string' && access.stack.length > 0).map(({ expression, stack })=>{ + stack = stack.split('\n') // Remove the "Error: " prefix from the first line of the stack trace as + // well as the first 4 lines of the stack trace which is the distance + // from the user code and the `new Error().stack` call. + .slice(4).filter((line)=>{ + // Exclude Next.js internals from the stack trace. + if (line.includes('node_modules/next/')) { + return false; + } + // Exclude anonymous functions from the stack trace. + if (line.includes(' ()')) { + return false; + } + // Exclude Node.js internals from the stack trace. + if (line.includes(' (node:')) { + return false; + } + return true; + }).join('\n'); + return `Dynamic API Usage Debug - ${expression}:\n${stack}`; + }); +} +function assertPostpone() { + if (!hasPostpone) { + throw Object.defineProperty(new Error(`Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js`), "__NEXT_ERROR_CODE", { + value: "E224", + enumerable: false, + configurable: true + }); + } +} +function createRenderInBrowserAbortSignal() { + const controller = new AbortController(); + controller.abort(Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$lazy$2d$dynamic$2f$bailout$2d$to$2d$csr$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["BailoutToCSRError"]('Render in Browser'), "__NEXT_ERROR_CODE", { + value: "E721", + enumerable: false, + configurable: true + })); + return controller.signal; +} +function createHangingInputAbortSignal(workUnitStore) { + switch(workUnitStore.type){ + case 'prerender': + case 'prerender-runtime': + const controller = new AbortController(); + if (workUnitStore.cacheSignal) { + // If we have a cacheSignal it means we're in a prospective render. If + // the input we're waiting on is coming from another cache, we do want + // to wait for it so that we can resolve this cache entry too. + workUnitStore.cacheSignal.inputReady().then(()=>{ + controller.abort(); + }); + } else { + // Otherwise we're in the final render and we should already have all + // our caches filled. + // If the prerender uses stages, we have wait until the runtime stage, + // at which point all runtime inputs will be resolved. + // (otherwise, a runtime prerender might consider `cookies()` hanging + // even though they'd resolve in the next task.) + // + // We might still be waiting on some microtasks so we + // wait one tick before giving up. When we give up, we still want to + // render the content of this cache as deeply as we can so that we can + // suspend as deeply as possible in the tree or not at all if we don't + // end up waiting for the input. + const runtimeStagePromise = (0, __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["getRuntimeStagePromise"])(workUnitStore); + if (runtimeStagePromise) { + runtimeStagePromise.then(()=>(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["scheduleOnNextTick"])(()=>controller.abort())); + } else { + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["scheduleOnNextTick"])(()=>controller.abort()); + } + } + return controller.signal; + case 'prerender-client': + case 'prerender-ppr': + case 'prerender-legacy': + case 'request': + case 'cache': + case 'private-cache': + case 'unstable-cache': + return undefined; + default: + workUnitStore; + } +} +function annotateDynamicAccess(expression, prerenderStore) { + const dynamicTracking = prerenderStore.dynamicTracking; + if (dynamicTracking) { + dynamicTracking.dynamicAccesses.push({ + stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined, + expression + }); + } +} +function useDynamicRouteParams(expression) { + const workStore = __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["workAsyncStorage"].getStore(); + const workUnitStore = __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["workUnitAsyncStorage"].getStore(); + if (workStore && workUnitStore) { + switch(workUnitStore.type){ + case 'prerender-client': + case 'prerender': + { + const fallbackParams = workUnitStore.fallbackRouteParams; + if (fallbackParams && fallbackParams.size > 0) { + // We are in a prerender with cacheComponents semantics. We are going to + // hang here and never resolve. This will cause the currently + // rendering component to effectively be a dynamic hole. + __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$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"].use((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["makeHangingPromise"])(workUnitStore.renderSignal, workStore.route, expression)); + } + break; + } + case 'prerender-ppr': + { + const fallbackParams = workUnitStore.fallbackRouteParams; + if (fallbackParams && fallbackParams.size > 0) { + return postponeWithTracking(workStore.route, expression, workUnitStore.dynamicTracking); + } + break; + } + case 'prerender-runtime': + throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`\`${expression}\` was called during a runtime prerender. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { + value: "E771", + enumerable: false, + configurable: true + }); + case 'cache': + case 'private-cache': + throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`\`${expression}\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { + value: "E745", + enumerable: false, + configurable: true + }); + case 'prerender-legacy': + case 'request': + case 'unstable-cache': + break; + default: + workUnitStore; + } + } +} +function useDynamicSearchParams(expression) { + const workStore = __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["workAsyncStorage"].getStore(); + const workUnitStore = __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["workUnitAsyncStorage"].getStore(); + if (!workStore) { + // We assume pages router context and just return + return; + } + if (!workUnitStore) { + (0, __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["throwForMissingRequestStore"])(expression); + } + switch(workUnitStore.type){ + case 'prerender-client': + { + __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$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"].use((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["makeHangingPromise"])(workUnitStore.renderSignal, workStore.route, expression)); + break; + } + case 'prerender-legacy': + case 'prerender-ppr': + { + if (workStore.forceStatic) { + return; + } + throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$lazy$2d$dynamic$2f$bailout$2d$to$2d$csr$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["BailoutToCSRError"](expression), "__NEXT_ERROR_CODE", { + value: "E394", + enumerable: false, + configurable: true + }); + } + case 'prerender': + case 'prerender-runtime': + throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`\`${expression}\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { + value: "E795", + enumerable: false, + configurable: true + }); + case 'cache': + case 'unstable-cache': + case 'private-cache': + throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`\`${expression}\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { + value: "E745", + enumerable: false, + configurable: true + }); + case 'request': + return; + default: + workUnitStore; + } +} +const hasSuspenseRegex = /\n\s+at Suspense \(\)/; +// Common implicit body tags that React will treat as body when placed directly in html +const bodyAndImplicitTags = 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6'; +// Detects when RootLayoutBoundary (our framework marker component) appears +// after Suspense in the component stack, indicating the root layout is wrapped +// within a Suspense boundary. Ensures no body/html/implicit-body components are in between. +// +// Example matches: +// at Suspense () +// at __next_root_layout_boundary__ () +// +// Or with other components in between (but not body/html/implicit-body): +// at Suspense () +// at SomeComponent () +// at __next_root_layout_boundary__ () +const hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(`\\n\\s+at Suspense \\(\\)(?:(?!\\n\\s+at (?:${bodyAndImplicitTags}) \\(\\))[\\s\\S])*?\\n\\s+at ${__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$framework$2f$boundary$2d$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ROOT_LAYOUT_BOUNDARY_NAME"]} \\([^\\n]*\\)`); +const hasMetadataRegex = new RegExp(`\\n\\s+at ${__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$framework$2f$boundary$2d$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["METADATA_BOUNDARY_NAME"]}[\\n\\s]`); +const hasViewportRegex = new RegExp(`\\n\\s+at ${__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$framework$2f$boundary$2d$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["VIEWPORT_BOUNDARY_NAME"]}[\\n\\s]`); +const hasOutletRegex = new RegExp(`\\n\\s+at ${__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$framework$2f$boundary$2d$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["OUTLET_BOUNDARY_NAME"]}[\\n\\s]`); +function trackAllowedDynamicAccess(workStore, componentStack, dynamicValidation, clientDynamic) { + if (hasOutletRegex.test(componentStack)) { + // We don't need to track that this is dynamic. It is only so when something else is also dynamic. + return; + } else if (hasMetadataRegex.test(componentStack)) { + dynamicValidation.hasDynamicMetadata = true; + return; + } else if (hasViewportRegex.test(componentStack)) { + dynamicValidation.hasDynamicViewport = true; + return; + } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) { + // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule. + // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense + // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering. + dynamicValidation.hasAllowedDynamic = true; + dynamicValidation.hasSuspenseAboveBody = true; + return; + } else if (hasSuspenseRegex.test(componentStack)) { + // this error had a Suspense boundary above it so we don't need to report it as a source + // of disallowed + dynamicValidation.hasAllowedDynamic = true; + return; + } else if (clientDynamic.syncDynamicErrorWithStack) { + // This task was the task that called the sync error. + dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack); + return; + } else { + const message = `Route "${workStore.route}": Uncached data was accessed outside of ` + '. This delays the entire page from rendering, resulting in a ' + 'slow user experience. Learn more: ' + 'https://nextjs.org/docs/messages/blocking-route'; + const error = createErrorWithComponentOrOwnerStack(message, componentStack); + dynamicValidation.dynamicErrors.push(error); + return; + } +} +function trackDynamicHoleInRuntimeShell(workStore, componentStack, dynamicValidation, clientDynamic) { + if (hasOutletRegex.test(componentStack)) { + // We don't need to track that this is dynamic. It is only so when something else is also dynamic. + return; + } else if (hasMetadataRegex.test(componentStack)) { + const message = `Route "${workStore.route}": Uncached data or \`connection()\` was accessed inside \`generateMetadata\`. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`; + const error = createErrorWithComponentOrOwnerStack(message, componentStack); + dynamicValidation.dynamicMetadata = error; + return; + } else if (hasViewportRegex.test(componentStack)) { + const message = `Route "${workStore.route}": Uncached data or \`connection()\` was accessed inside \`generateViewport\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`; + const error = createErrorWithComponentOrOwnerStack(message, componentStack); + dynamicValidation.dynamicErrors.push(error); + return; + } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) { + // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule. + // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense + // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering. + dynamicValidation.hasAllowedDynamic = true; + dynamicValidation.hasSuspenseAboveBody = true; + return; + } else if (hasSuspenseRegex.test(componentStack)) { + // this error had a Suspense boundary above it so we don't need to report it as a source + // of disallowed + dynamicValidation.hasAllowedDynamic = true; + return; + } else if (clientDynamic.syncDynamicErrorWithStack) { + // This task was the task that called the sync error. + dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack); + return; + } else { + const message = `Route "${workStore.route}": Uncached data or \`connection()\` was accessed outside of \`\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`; + const error = createErrorWithComponentOrOwnerStack(message, componentStack); + dynamicValidation.dynamicErrors.push(error); + return; + } +} +function trackDynamicHoleInStaticShell(workStore, componentStack, dynamicValidation, clientDynamic) { + if (hasOutletRegex.test(componentStack)) { + // We don't need to track that this is dynamic. It is only so when something else is also dynamic. + return; + } else if (hasMetadataRegex.test(componentStack)) { + const message = `Route "${workStore.route}": Runtime data such as \`cookies()\`, \`headers()\`, \`params\`, or \`searchParams\` was accessed inside \`generateMetadata\` or you have file-based metadata such as icons that depend on dynamic params segments. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`; + const error = createErrorWithComponentOrOwnerStack(message, componentStack); + dynamicValidation.dynamicMetadata = error; + return; + } else if (hasViewportRegex.test(componentStack)) { + const message = `Route "${workStore.route}": Runtime data such as \`cookies()\`, \`headers()\`, \`params\`, or \`searchParams\` was accessed inside \`generateViewport\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`; + const error = createErrorWithComponentOrOwnerStack(message, componentStack); + dynamicValidation.dynamicErrors.push(error); + return; + } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) { + // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule. + // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense + // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering. + dynamicValidation.hasAllowedDynamic = true; + dynamicValidation.hasSuspenseAboveBody = true; + return; + } else if (hasSuspenseRegex.test(componentStack)) { + // this error had a Suspense boundary above it so we don't need to report it as a source + // of disallowed + dynamicValidation.hasAllowedDynamic = true; + return; + } else if (clientDynamic.syncDynamicErrorWithStack) { + // This task was the task that called the sync error. + dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack); + return; + } else { + const message = `Route "${workStore.route}": Runtime data such as \`cookies()\`, \`headers()\`, \`params\`, or \`searchParams\` was accessed outside of \`\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`; + const error = createErrorWithComponentOrOwnerStack(message, componentStack); + dynamicValidation.dynamicErrors.push(error); + return; + } +} +/** + * In dev mode, we prefer using the owner stack, otherwise the provided + * component stack is used. + */ function createErrorWithComponentOrOwnerStack(message, componentStack) { + const ownerStack = ("TURBOPACK compile-time value", "development") !== 'production' && __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$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"].captureOwnerStack ? __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$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"].captureOwnerStack() : null; + const error = Object.defineProperty(new Error(message), "__NEXT_ERROR_CODE", { + value: "E394", + enumerable: false, + configurable: true + }); + // TODO go back to owner stack here if available. This is temporarily using componentStack to get the right + // + error.stack = error.name + ': ' + message + (ownerStack || componentStack); + return error; +} +var PreludeState = /*#__PURE__*/ function(PreludeState) { + PreludeState[PreludeState["Full"] = 0] = "Full"; + PreludeState[PreludeState["Empty"] = 1] = "Empty"; + PreludeState[PreludeState["Errored"] = 2] = "Errored"; + return PreludeState; +}({}); +function logDisallowedDynamicError(workStore, error) { + console.error(error); + if (!workStore.dev) { + if (workStore.hasReadableErrorStacks) { + console.error(`To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running \`next dev\`, then open "${workStore.route}" in your browser to investigate the error.`); + } else { + console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following: + - Start the app in development mode by running \`next dev\`, then open "${workStore.route}" in your browser to investigate the error. + - Rerun the production build with \`next build --debug-prerender\` to generate better stack traces.`); + } + } +} +function throwIfDisallowedDynamic(workStore, prelude, dynamicValidation, serverDynamic) { + if (serverDynamic.syncDynamicErrorWithStack) { + logDisallowedDynamicError(workStore, serverDynamic.syncDynamicErrorWithStack); + throw new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$static$2d$generation$2d$bailout$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["StaticGenBailoutError"](); + } + if (prelude !== 0) { + if (dynamicValidation.hasSuspenseAboveBody) { + // This route has opted into allowing fully dynamic rendering + // by including a Suspense boundary above the body. In this case + // a lack of a shell is not considered disallowed so we simply return + return; + } + // We didn't have any sync bailouts but there may be user code which + // blocked the root. We would have captured these during the prerender + // and can log them here and then terminate the build/validating render + const dynamicErrors = dynamicValidation.dynamicErrors; + if (dynamicErrors.length > 0) { + for(let i = 0; i < dynamicErrors.length; i++){ + logDisallowedDynamicError(workStore, dynamicErrors[i]); + } + throw new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$static$2d$generation$2d$bailout$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["StaticGenBailoutError"](); + } + // If we got this far then the only other thing that could be blocking + // the root is dynamic Viewport. If this is dynamic then + // you need to opt into that by adding a Suspense boundary above the body + // to indicate your are ok with fully dynamic rendering. + if (dynamicValidation.hasDynamicViewport) { + console.error(`Route "${workStore.route}" has a \`generateViewport\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`); + throw new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$static$2d$generation$2d$bailout$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["StaticGenBailoutError"](); + } + if (prelude === 1) { + // If we ever get this far then we messed up the tracking of invalid dynamic. + // We still adhere to the constraint that you must produce a shell but invite the + // user to report this as a bug in Next.js. + console.error(`Route "${workStore.route}" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`); + throw new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$static$2d$generation$2d$bailout$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["StaticGenBailoutError"](); + } + } else { + if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.hasDynamicMetadata) { + console.error(`Route "${workStore.route}" has a \`generateMetadata\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`); + throw new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$static$2d$generation$2d$bailout$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["StaticGenBailoutError"](); + } + } +} +function getStaticShellDisallowedDynamicReasons(workStore, prelude, dynamicValidation) { + if (dynamicValidation.hasSuspenseAboveBody) { + // This route has opted into allowing fully dynamic rendering + // by including a Suspense boundary above the body. In this case + // a lack of a shell is not considered disallowed so we simply return + return []; + } + if (prelude !== 0) { + // We didn't have any sync bailouts but there may be user code which + // blocked the root. We would have captured these during the prerender + // and can log them here and then terminate the build/validating render + const dynamicErrors = dynamicValidation.dynamicErrors; + if (dynamicErrors.length > 0) { + return dynamicErrors; + } + if (prelude === 1) { + // If we ever get this far then we messed up the tracking of invalid dynamic. + // We still adhere to the constraint that you must produce a shell but invite the + // user to report this as a bug in Next.js. + return [ + Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`Route "${workStore.route}" did not produce a static shell and Next.js was unable to determine a reason.`), "__NEXT_ERROR_CODE", { + value: "E936", + enumerable: false, + configurable: true + }) + ]; + } + } else { + // We have a prelude but we might still have dynamic metadata without any other dynamic access + if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.dynamicErrors.length === 0 && dynamicValidation.dynamicMetadata) { + return [ + dynamicValidation.dynamicMetadata + ]; + } + } + // We had a non-empty prelude and there are no dynamic holes + return []; +} +function delayUntilRuntimeStage(prerenderStore, result) { + if (prerenderStore.runtimeStagePromise) { + return prerenderStore.runtimeStagePromise.then(()=>result); + } + return result; +} //# sourceMappingURL=dynamic-rendering.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/clone-response.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "cloneResponse", + ()=>cloneResponse +]); +const noop = ()=>{}; +let registry; +if (globalThis.FinalizationRegistry) { + registry = new FinalizationRegistry((weakRef)=>{ + const stream = weakRef.deref(); + if (stream && !stream.locked) { + stream.cancel('Response object has been garbage collected').then(noop); + } + }); +} +function cloneResponse(original) { + // If the response has no body, then we can just return the original response + // twice because it's immutable. + if (!original.body) { + return [ + original, + original + ]; + } + const [body1, body2] = original.body.tee(); + const cloned1 = new Response(body1, { + status: original.status, + statusText: original.statusText, + headers: original.headers + }); + Object.defineProperty(cloned1, 'url', { + value: original.url, + // How the original response.url behaves + configurable: true, + enumerable: true, + writable: false + }); + // The Fetch Standard allows users to skip consuming the response body by + // relying on garbage collection to release connection resources. + // https://github.com/nodejs/undici?tab=readme-ov-file#garbage-collection + // + // To cancel the stream you then need to cancel both resulting branches. + // Teeing a stream will generally lock it for the duration, preventing other + // readers from locking it. + // https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/tee + // cloned2 is stored in a react cache and cloned for subsequent requests. + // It is the original request, and is is garbage collected by a + // FinalizationRegistry in Undici, but since we're tee-ing the stream + // ourselves, we need to cancel clone1's stream (the response returned from + // our dedupe fetch) when clone1 is reclaimed, otherwise we leak memory. + if (registry && cloned1.body) { + registry.register(cloned1, new WeakRef(cloned1.body)); + } + const cloned2 = new Response(body2, { + status: original.status, + statusText: original.statusText, + headers: original.headers + }); + Object.defineProperty(cloned2, 'url', { + value: original.url, + // How the original response.url behaves + configurable: true, + enumerable: true, + writable: false + }); + return [ + cloned1, + cloned2 + ]; +} //# sourceMappingURL=clone-response.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/dedupe-fetch.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "createDedupeFetch", + ()=>createDedupeFetch +]); +/** + * Based on https://github.com/facebook/react/blob/d4e78c42a94be027b4dc7ed2659a5fddfbf9bd4e/packages/react/src/ReactFetch.js + */ var __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$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$clone$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/clone-response.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/invariant-error.js [app-route] (ecmascript)"); +; +; +; +const simpleCacheKey = '["GET",[],null,"follow",null,null,null,null]' // generateCacheKey(new Request('https://blank')); +; +// Headers that should not affect deduplication +// traceparent and tracestate are used for distributed tracing and should not affect cache keys +const headersToExcludeInCacheKey = new Set([ + 'traceparent', + 'tracestate' +]); +function generateCacheKey(request) { + // We pick the fields that goes into the key used to dedupe requests. + // We don't include the `cache` field, because we end up using whatever + // caching resulted from the first request. + // Notably we currently don't consider non-standard (or future) options. + // This might not be safe. TODO: warn for non-standard extensions differing. + // IF YOU CHANGE THIS UPDATE THE simpleCacheKey ABOVE. + const filteredHeaders = Array.from(request.headers.entries()).filter(([key])=>!headersToExcludeInCacheKey.has(key.toLowerCase())); + return JSON.stringify([ + request.method, + filteredHeaders, + request.mode, + request.redirect, + request.credentials, + request.referrer, + request.referrerPolicy, + request.integrity + ]); +} +function createDedupeFetch(originalFetch) { + const getCacheEntries = __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$rsc$2f$react$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["cache"]((url)=>[]); + return function dedupeFetch(resource, options) { + if (options && options.signal) { + // If we're passed a signal, then we assume that + // someone else controls the lifetime of this object and opts out of + // caching. It's effectively the opt-out mechanism. + // Ideally we should be able to check this on the Request but + // it always gets initialized with its own signal so we don't + // know if it's supposed to override - unless we also override the + // Request constructor. + return originalFetch(resource, options); + } + // Normalize the Request + let url; + let cacheKey; + if (typeof resource === 'string' && !options) { + // Fast path. + cacheKey = simpleCacheKey; + url = resource; + } else { + // Normalize the request. + // if resource is not a string or a URL (its an instance of Request) + // then do not instantiate a new Request but instead + // reuse the request as to not disturb the body in the event it's a ReadableStream. + const request = typeof resource === 'string' || resource instanceof URL ? new Request(resource, options) : resource; + if (request.method !== 'GET' && request.method !== 'HEAD' || request.keepalive) { + // We currently don't dedupe requests that might have side-effects. Those + // have to be explicitly cached. We assume that the request doesn't have a + // body if it's GET or HEAD. + // keepalive gets treated the same as if you passed a custom cache signal. + return originalFetch(resource, options); + } + cacheKey = generateCacheKey(request); + url = request.url; + } + const cacheEntries = getCacheEntries(url); + for(let i = 0, j = cacheEntries.length; i < j; i += 1){ + const [key, promise] = cacheEntries[i]; + if (key === cacheKey) { + return promise.then(()=>{ + const response = cacheEntries[i][2]; + if (!response) throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"]('No cached response'), "__NEXT_ERROR_CODE", { + value: "E579", + enumerable: false, + configurable: true + }); + // We're cloning the response using this utility because there exists + // a bug in the undici library around response cloning. See the + // following pull request for more details: + // https://github.com/vercel/next.js/pull/73274 + const [cloned1, cloned2] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$clone$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["cloneResponse"])(response); + cacheEntries[i][2] = cloned2; + return cloned1; + }); + } + } + // We pass the original arguments here in case normalizing the Request + // doesn't include all the options in this environment. + const promise = originalFetch(resource, options); + const entry = [ + cacheKey, + promise, + null + ]; + cacheEntries.push(entry); + return promise.then((response)=>{ + // We're cloning the response using this utility because there exists + // a bug in the undici library around response cloning. See the + // following pull request for more details: + // https://github.com/vercel/next.js/pull/73274 + const [cloned1, cloned2] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$clone$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["cloneResponse"])(response); + entry[2] = cloned2; + return cloned1; + }); + }; +} //# sourceMappingURL=dedupe-fetch.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/detached-promise.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +/** + * A `Promise.withResolvers` implementation that exposes the `resolve` and + * `reject` functions on a `Promise`. + * + * @see https://tc39.es/proposal-promise-with-resolvers/ + */ __turbopack_context__.s([ + "DetachedPromise", + ()=>DetachedPromise +]); +class DetachedPromise { + constructor(){ + let resolve; + let reject; + // Create the promise and assign the resolvers to the object. + this.promise = new Promise((res, rej)=>{ + resolve = res; + reject = rej; + }); + // We know that resolvers is defined because the Promise constructor runs + // synchronously. + this.resolve = resolve; + this.reject = reject; + } +} //# sourceMappingURL=detached-promise.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/batcher.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "Batcher", + ()=>Batcher +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/detached-promise.js [app-route] (ecmascript)"); +; +class Batcher { + constructor(cacheKeyFn, /** + * A function that will be called to schedule the wrapped function to be + * executed. This defaults to a function that will execute the function + * immediately. + */ schedulerFn = (fn)=>fn()){ + this.cacheKeyFn = cacheKeyFn; + this.schedulerFn = schedulerFn; + this.pending = new Map(); + } + static create(options) { + return new Batcher(options == null ? void 0 : options.cacheKeyFn, options == null ? void 0 : options.schedulerFn); + } + /** + * Wraps a function in a promise that will be resolved or rejected only once + * for a given key. This will allow multiple calls to the function to be + * made, but only one will be executed at a time. The result of the first + * call will be returned to all callers. + * + * @param key the key to use for the cache + * @param fn the function to wrap + * @returns a promise that resolves to the result of the function + */ async batch(key, fn) { + const cacheKey = this.cacheKeyFn ? await this.cacheKeyFn(key) : key; + if (cacheKey === null) { + return fn({ + resolve: (value)=>Promise.resolve(value), + key + }); + } + const pending = this.pending.get(cacheKey); + if (pending) return pending; + const { promise, resolve, reject } = new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["DetachedPromise"](); + this.pending.set(cacheKey, promise); + this.schedulerFn(async ()=>{ + try { + const result = await fn({ + resolve, + key + }); + // Resolving a promise multiple times is a no-op, so we can safely + // resolve all pending promises with the same result. + resolve(result); + } catch (err) { + reject(err); + } finally{ + this.pending.delete(cacheKey); + } + }); + return promise; + } +} //# sourceMappingURL=batcher.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/lru-cache.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "LRUCache", + ()=>LRUCache +]); +/** + * Node in the doubly-linked list used for LRU tracking. + * Each node represents a cache entry with bidirectional pointers. + */ class LRUNode { + constructor(key, data, size){ + this.prev = null; + this.next = null; + this.key = key; + this.data = data; + this.size = size; + } +} +/** + * Sentinel node used for head/tail boundaries. + * These nodes don't contain actual cache data but simplify list operations. + */ class SentinelNode { + constructor(){ + this.prev = null; + this.next = null; + } +} +class LRUCache { + constructor(maxSize, calculateSize, onEvict){ + this.cache = new Map(); + this.totalSize = 0; + this.maxSize = maxSize; + this.calculateSize = calculateSize; + this.onEvict = onEvict; + // Create sentinel nodes to simplify doubly-linked list operations + // HEAD <-> TAIL (empty list) + this.head = new SentinelNode(); + this.tail = new SentinelNode(); + this.head.next = this.tail; + this.tail.prev = this.head; + } + /** + * Adds a node immediately after the head (marks as most recently used). + * Used when inserting new items or when an item is accessed. + * PRECONDITION: node must be disconnected (prev/next should be null) + */ addToHead(node) { + node.prev = this.head; + node.next = this.head.next; + // head.next is always non-null (points to tail or another node) + this.head.next.prev = node; + this.head.next = node; + } + /** + * Removes a node from its current position in the doubly-linked list. + * Updates the prev/next pointers of adjacent nodes to maintain list integrity. + * PRECONDITION: node must be connected (prev/next are non-null) + */ removeNode(node) { + // Connected nodes always have non-null prev/next + node.prev.next = node.next; + node.next.prev = node.prev; + } + /** + * Moves an existing node to the head position (marks as most recently used). + * This is the core LRU operation - accessed items become most recent. + */ moveToHead(node) { + this.removeNode(node); + this.addToHead(node); + } + /** + * Removes and returns the least recently used node (the one before tail). + * This is called during eviction when the cache exceeds capacity. + * PRECONDITION: cache is not empty (ensured by caller) + */ removeTail() { + const lastNode = this.tail.prev; + // tail.prev is always non-null and always LRUNode when cache is not empty + this.removeNode(lastNode); + return lastNode; + } + /** + * Sets a key-value pair in the cache. + * If the key exists, updates the value and moves to head. + * If new, adds at head and evicts from tail if necessary. + * + * Time Complexity: + * - O(1) for uniform item sizes + * - O(k) where k is the number of items evicted (can be O(N) for variable sizes) + */ set(key, value) { + const size = (this.calculateSize == null ? void 0 : this.calculateSize.call(this, value)) ?? 1; + if (size > this.maxSize) { + console.warn('Single item size exceeds maxSize'); + return; + } + const existing = this.cache.get(key); + if (existing) { + // Update existing node: adjust size and move to head (most recent) + existing.data = value; + this.totalSize = this.totalSize - existing.size + size; + existing.size = size; + this.moveToHead(existing); + } else { + // Add new node at head (most recent position) + const newNode = new LRUNode(key, value, size); + this.cache.set(key, newNode); + this.addToHead(newNode); + this.totalSize += size; + } + // Evict least recently used items until under capacity + while(this.totalSize > this.maxSize && this.cache.size > 0){ + const tail = this.removeTail(); + this.cache.delete(tail.key); + this.totalSize -= tail.size; + this.onEvict == null ? void 0 : this.onEvict.call(this, tail.key, tail.data); + } + } + /** + * Checks if a key exists in the cache. + * This is a pure query operation - does NOT update LRU order. + * + * Time Complexity: O(1) + */ has(key) { + return this.cache.has(key); + } + /** + * Retrieves a value by key and marks it as most recently used. + * Moving to head maintains the LRU property for future evictions. + * + * Time Complexity: O(1) + */ get(key) { + const node = this.cache.get(key); + if (!node) return undefined; + // Mark as most recently used by moving to head + this.moveToHead(node); + return node.data; + } + /** + * Returns an iterator over the cache entries. The order is outputted in the + * order of most recently used to least recently used. + */ *[Symbol.iterator]() { + let current = this.head.next; + while(current && current !== this.tail){ + // Between head and tail, current is always LRUNode + const node = current; + yield [ + node.key, + node.data + ]; + current = current.next; + } + } + /** + * Removes a specific key from the cache. + * Updates both the hash map and doubly-linked list. + * + * Note: This is an explicit removal and does NOT trigger the `onEvict` + * callback. Use this for intentional deletions where eviction tracking + * is not needed. + * + * Time Complexity: O(1) + */ remove(key) { + const node = this.cache.get(key); + if (!node) return; + this.removeNode(node); + this.cache.delete(key); + this.totalSize -= node.size; + } + /** + * Returns the number of items in the cache. + */ get size() { + return this.cache.size; + } + /** + * Returns the current total size of all cached items. + * This uses the custom size calculation if provided. + */ get currentSize() { + return this.totalSize; + } +} //# sourceMappingURL=lru-cache.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/picocolors.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "bgBlack", + ()=>bgBlack, + "bgBlue", + ()=>bgBlue, + "bgCyan", + ()=>bgCyan, + "bgGreen", + ()=>bgGreen, + "bgMagenta", + ()=>bgMagenta, + "bgRed", + ()=>bgRed, + "bgWhite", + ()=>bgWhite, + "bgYellow", + ()=>bgYellow, + "black", + ()=>black, + "blue", + ()=>blue, + "bold", + ()=>bold, + "cyan", + ()=>cyan, + "dim", + ()=>dim, + "gray", + ()=>gray, + "green", + ()=>green, + "hidden", + ()=>hidden, + "inverse", + ()=>inverse, + "italic", + ()=>italic, + "magenta", + ()=>magenta, + "purple", + ()=>purple, + "red", + ()=>red, + "reset", + ()=>reset, + "strikethrough", + ()=>strikethrough, + "underline", + ()=>underline, + "white", + ()=>white, + "yellow", + ()=>yellow +]); +// ISC License +// Copyright (c) 2021 Alexey Raspopov, Kostiantyn Denysov, Anton Verinov +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// https://github.com/alexeyraspopov/picocolors/blob/b6261487e7b81aaab2440e397a356732cad9e342/picocolors.js#L1 +var _globalThis; +const { env, stdout } = ((_globalThis = globalThis) == null ? void 0 : _globalThis.process) ?? {}; +const enabled = env && !env.NO_COLOR && (env.FORCE_COLOR || (stdout == null ? void 0 : stdout.isTTY) && !env.CI && env.TERM !== 'dumb'); +const replaceClose = (str, close, replace, index)=>{ + const start = str.substring(0, index) + replace; + const end = str.substring(index + close.length); + const nextIndex = end.indexOf(close); + return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end; +}; +const formatter = (open, close, replace = open)=>{ + if (!enabled) return String; + return (input)=>{ + const string = '' + input; + const index = string.indexOf(close, open.length); + return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close; + }; +}; +const reset = enabled ? (s)=>`\x1b[0m${s}\x1b[0m` : String; +const bold = formatter('\x1b[1m', '\x1b[22m', '\x1b[22m\x1b[1m'); +const dim = formatter('\x1b[2m', '\x1b[22m', '\x1b[22m\x1b[2m'); +const italic = formatter('\x1b[3m', '\x1b[23m'); +const underline = formatter('\x1b[4m', '\x1b[24m'); +const inverse = formatter('\x1b[7m', '\x1b[27m'); +const hidden = formatter('\x1b[8m', '\x1b[28m'); +const strikethrough = formatter('\x1b[9m', '\x1b[29m'); +const black = formatter('\x1b[30m', '\x1b[39m'); +const red = formatter('\x1b[31m', '\x1b[39m'); +const green = formatter('\x1b[32m', '\x1b[39m'); +const yellow = formatter('\x1b[33m', '\x1b[39m'); +const blue = formatter('\x1b[34m', '\x1b[39m'); +const magenta = formatter('\x1b[35m', '\x1b[39m'); +const purple = formatter('\x1b[38;2;173;127;168m', '\x1b[39m'); +const cyan = formatter('\x1b[36m', '\x1b[39m'); +const white = formatter('\x1b[37m', '\x1b[39m'); +const gray = formatter('\x1b[90m', '\x1b[39m'); +const bgBlack = formatter('\x1b[40m', '\x1b[49m'); +const bgRed = formatter('\x1b[41m', '\x1b[49m'); +const bgGreen = formatter('\x1b[42m', '\x1b[49m'); +const bgYellow = formatter('\x1b[43m', '\x1b[49m'); +const bgBlue = formatter('\x1b[44m', '\x1b[49m'); +const bgMagenta = formatter('\x1b[45m', '\x1b[49m'); +const bgCyan = formatter('\x1b[46m', '\x1b[49m'); +const bgWhite = formatter('\x1b[47m', '\x1b[49m'); //# sourceMappingURL=picocolors.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/build/output/log.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "bootstrap", + ()=>bootstrap, + "error", + ()=>error, + "errorOnce", + ()=>errorOnce, + "event", + ()=>event, + "info", + ()=>info, + "prefixes", + ()=>prefixes, + "ready", + ()=>ready, + "trace", + ()=>trace, + "wait", + ()=>wait, + "warn", + ()=>warn, + "warnOnce", + ()=>warnOnce +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/picocolors.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$lru$2d$cache$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/lru-cache.js [app-route] (ecmascript)"); +; +; +const prefixes = { + wait: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["white"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["bold"])('○')), + error: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["red"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["bold"])('⨯')), + warn: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["yellow"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["bold"])('⚠')), + ready: '▲', + info: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["white"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["bold"])(' ')), + event: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["green"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["bold"])('✓')), + trace: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["magenta"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["bold"])('»')) +}; +const LOGGING_METHOD = { + log: 'log', + warn: 'warn', + error: 'error' +}; +function prefixedLog(prefixType, ...message) { + if ((message[0] === '' || message[0] === undefined) && message.length === 1) { + message.shift(); + } + const consoleMethod = prefixType in LOGGING_METHOD ? LOGGING_METHOD[prefixType] : 'log'; + const prefix = prefixes[prefixType]; + // If there's no message, don't print the prefix but a new line + if (message.length === 0) { + console[consoleMethod](''); + } else { + // Ensure if there's ANSI escape codes it's concatenated into one string. + // Chrome DevTool can only handle color if it's in one string. + if (message.length === 1 && typeof message[0] === 'string') { + console[consoleMethod](prefix + ' ' + message[0]); + } else { + console[consoleMethod](prefix, ...message); + } + } +} +function bootstrap(message) { + console.log(message); +} +function wait(...message) { + prefixedLog('wait', ...message); +} +function error(...message) { + prefixedLog('error', ...message); +} +function warn(...message) { + prefixedLog('warn', ...message); +} +function ready(...message) { + prefixedLog('ready', ...message); +} +function info(...message) { + prefixedLog('info', ...message); +} +function event(...message) { + prefixedLog('event', ...message); +} +function trace(...message) { + prefixedLog('trace', ...message); +} +const warnOnceCache = new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$lru$2d$cache$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["LRUCache"](10000, (value)=>value.length); +function warnOnce(...message) { + const key = message.join(' '); + if (!warnOnceCache.has(key)) { + warnOnceCache.set(key, key); + warn(...message); + } +} +const errorOnceCache = new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$lru$2d$cache$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["LRUCache"](10000, (value)=>value.length); +function errorOnce(...message) { + const key = message.join(' '); + if (!errorOnceCache.has(key)) { + errorOnceCache.set(key, key); + error(...message); + } +} //# sourceMappingURL=log.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/response-cache/types.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "CachedRouteKind", + ()=>CachedRouteKind, + "IncrementalCacheKind", + ()=>IncrementalCacheKind +]); +var CachedRouteKind = /*#__PURE__*/ function(CachedRouteKind) { + CachedRouteKind["APP_PAGE"] = "APP_PAGE"; + CachedRouteKind["APP_ROUTE"] = "APP_ROUTE"; + CachedRouteKind["PAGES"] = "PAGES"; + CachedRouteKind["FETCH"] = "FETCH"; + CachedRouteKind["REDIRECT"] = "REDIRECT"; + CachedRouteKind["IMAGE"] = "IMAGE"; + return CachedRouteKind; +}({}); +var IncrementalCacheKind = /*#__PURE__*/ function(IncrementalCacheKind) { + IncrementalCacheKind["APP_PAGE"] = "APP_PAGE"; + IncrementalCacheKind["APP_ROUTE"] = "APP_ROUTE"; + IncrementalCacheKind["PAGES"] = "PAGES"; + IncrementalCacheKind["FETCH"] = "FETCH"; + IncrementalCacheKind["IMAGE"] = "IMAGE"; + return IncrementalCacheKind; +}({}); //# sourceMappingURL=types.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/stream-utils/encoded-tags.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "ENCODED_TAGS", + ()=>ENCODED_TAGS +]); +const ENCODED_TAGS = { + // opening tags do not have the closing `>` since they can contain other attributes such as `` + OPENING: { + // + HEAD: new Uint8Array([ + 60, + 47, + 104, + 101, + 97, + 100, + 62 + ]), + // + BODY: new Uint8Array([ + 60, + 47, + 98, + 111, + 100, + 121, + 62 + ]), + // + HTML: new Uint8Array([ + 60, + 47, + 104, + 116, + 109, + 108, + 62 + ]), + // + BODY_AND_HTML: new Uint8Array([ + 60, + 47, + 98, + 111, + 100, + 121, + 62, + 60, + 47, + 104, + 116, + 109, + 108, + 62 + ]) + }, + META: { + // Only the match the prefix cause the suffix can be different wether it's xml compatible or not ">" or "/>" + // { +"use strict"; + +/** + * Find the starting index of Uint8Array `b` within Uint8Array `a`. + */ __turbopack_context__.s([ + "indexOfUint8Array", + ()=>indexOfUint8Array, + "isEquivalentUint8Arrays", + ()=>isEquivalentUint8Arrays, + "removeFromUint8Array", + ()=>removeFromUint8Array +]); +function indexOfUint8Array(a, b) { + if (b.length === 0) return 0; + if (a.length === 0 || b.length > a.length) return -1; + // start iterating through `a` + for(let i = 0; i <= a.length - b.length; i++){ + let completeMatch = true; + // from index `i`, iterate through `b` and check for mismatch + for(let j = 0; j < b.length; j++){ + // if the values do not match, then this isn't a complete match, exit `b` iteration early and iterate to next index of `a`. + if (a[i + j] !== b[j]) { + completeMatch = false; + break; + } + } + if (completeMatch) { + return i; + } + } + return -1; +} +function isEquivalentUint8Arrays(a, b) { + if (a.length !== b.length) return false; + for(let i = 0; i < a.length; i++){ + if (a[i] !== b[i]) return false; + } + return true; +} +function removeFromUint8Array(a, b) { + const tagIndex = indexOfUint8Array(a, b); + if (tagIndex === 0) return a.subarray(b.length); + if (tagIndex > -1) { + const removed = new Uint8Array(a.length - b.length); + removed.set(a.slice(0, tagIndex)); + removed.set(a.slice(tagIndex + b.length), tagIndex); + return removed; + } else { + return a; + } +} //# sourceMappingURL=uint8array-helpers.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/errors/constants.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "MISSING_ROOT_TAGS_ERROR", + ()=>MISSING_ROOT_TAGS_ERROR +]); +const MISSING_ROOT_TAGS_ERROR = 'NEXT_MISSING_ROOT_TAGS'; //# sourceMappingURL=constants.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/segment-cache/output-export-prefetch-encoding.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "insertBuildIdComment", + ()=>insertBuildIdComment +]); +// In output: export mode, the build id is added to the start of the HTML +// document, directly after the doctype declaration. During a prefetch, the +// client performs a range request to get the build id, so it can check whether +// the target page belongs to the same build. +// +// The first 64 bytes of the document are requested. The exact number isn't +// too important; it must be larger than the build id + doctype + closing and +// ending comment markers, but it doesn't need to match the end of the +// comment exactly. +// +// Build ids are 21 bytes long in the default implementation, though this +// can be overridden in the Next.js config. For the purposes of this check, +// it's OK to only match the start of the id, so we'll truncate it if exceeds +// a certain length. +const DOCTYPE_PREFIX = '' // 15 bytes +; +const MAX_BUILD_ID_LENGTH = 24; +function escapeBuildId(buildId) { + // If the build id is longer than the given limit, it's OK for our purposes + // to only match the beginning. + const truncated = buildId.slice(0, MAX_BUILD_ID_LENGTH); + // Replace hyphens with underscores so it doesn't break the HTML comment. + // (Unlikely, but if this did happen it would break the whole document.) + return truncated.replace(/-/g, '_'); +} +function insertBuildIdComment(originalHtml, buildId) { + if (buildId.includes('-->') || // React always inserts a doctype at the start of the document. Skip if it + // isn't present. Shouldn't happen; suggests an issue elsewhere. + !originalHtml.startsWith(DOCTYPE_PREFIX)) { + // Return the original HTML unchanged. This means the document will not + // be prefetched. + // TODO: The build id comment is currently only used during prefetches, but + // if we eventually use this mechanism for regular navigations, we may need + // to error during build if we fail to insert it for some reason. + return originalHtml; + } + // The comment must be inserted after the doctype. + return originalHtml.replace(DOCTYPE_PREFIX, DOCTYPE_PREFIX + ''); +} //# sourceMappingURL=output-export-prefetch-encoding.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/app-router-headers.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "ACTION_HEADER", + ()=>ACTION_HEADER, + "FLIGHT_HEADERS", + ()=>FLIGHT_HEADERS, + "NEXT_ACTION_NOT_FOUND_HEADER", + ()=>NEXT_ACTION_NOT_FOUND_HEADER, + "NEXT_ACTION_REVALIDATED_HEADER", + ()=>NEXT_ACTION_REVALIDATED_HEADER, + "NEXT_DID_POSTPONE_HEADER", + ()=>NEXT_DID_POSTPONE_HEADER, + "NEXT_HMR_REFRESH_HASH_COOKIE", + ()=>NEXT_HMR_REFRESH_HASH_COOKIE, + "NEXT_HMR_REFRESH_HEADER", + ()=>NEXT_HMR_REFRESH_HEADER, + "NEXT_HTML_REQUEST_ID_HEADER", + ()=>NEXT_HTML_REQUEST_ID_HEADER, + "NEXT_IS_PRERENDER_HEADER", + ()=>NEXT_IS_PRERENDER_HEADER, + "NEXT_REQUEST_ID_HEADER", + ()=>NEXT_REQUEST_ID_HEADER, + "NEXT_REWRITTEN_PATH_HEADER", + ()=>NEXT_REWRITTEN_PATH_HEADER, + "NEXT_REWRITTEN_QUERY_HEADER", + ()=>NEXT_REWRITTEN_QUERY_HEADER, + "NEXT_ROUTER_PREFETCH_HEADER", + ()=>NEXT_ROUTER_PREFETCH_HEADER, + "NEXT_ROUTER_SEGMENT_PREFETCH_HEADER", + ()=>NEXT_ROUTER_SEGMENT_PREFETCH_HEADER, + "NEXT_ROUTER_STALE_TIME_HEADER", + ()=>NEXT_ROUTER_STALE_TIME_HEADER, + "NEXT_ROUTER_STATE_TREE_HEADER", + ()=>NEXT_ROUTER_STATE_TREE_HEADER, + "NEXT_RSC_UNION_QUERY", + ()=>NEXT_RSC_UNION_QUERY, + "NEXT_URL", + ()=>NEXT_URL, + "RSC_CONTENT_TYPE_HEADER", + ()=>RSC_CONTENT_TYPE_HEADER, + "RSC_HEADER", + ()=>RSC_HEADER +]); +const RSC_HEADER = 'rsc'; +const ACTION_HEADER = 'next-action'; +const NEXT_ROUTER_STATE_TREE_HEADER = 'next-router-state-tree'; +const NEXT_ROUTER_PREFETCH_HEADER = 'next-router-prefetch'; +const NEXT_ROUTER_SEGMENT_PREFETCH_HEADER = 'next-router-segment-prefetch'; +const NEXT_HMR_REFRESH_HEADER = 'next-hmr-refresh'; +const NEXT_HMR_REFRESH_HASH_COOKIE = '__next_hmr_refresh_hash__'; +const NEXT_URL = 'next-url'; +const RSC_CONTENT_TYPE_HEADER = 'text/x-component'; +const FLIGHT_HEADERS = [ + RSC_HEADER, + NEXT_ROUTER_STATE_TREE_HEADER, + NEXT_ROUTER_PREFETCH_HEADER, + NEXT_HMR_REFRESH_HEADER, + NEXT_ROUTER_SEGMENT_PREFETCH_HEADER +]; +const NEXT_RSC_UNION_QUERY = '_rsc'; +const NEXT_ROUTER_STALE_TIME_HEADER = 'x-nextjs-stale-time'; +const NEXT_DID_POSTPONE_HEADER = 'x-nextjs-postponed'; +const NEXT_REWRITTEN_PATH_HEADER = 'x-nextjs-rewritten-path'; +const NEXT_REWRITTEN_QUERY_HEADER = 'x-nextjs-rewritten-query'; +const NEXT_IS_PRERENDER_HEADER = 'x-nextjs-prerender'; +const NEXT_ACTION_NOT_FOUND_HEADER = 'x-nextjs-action-not-found'; +const NEXT_REQUEST_ID_HEADER = 'x-nextjs-request-id'; +const NEXT_HTML_REQUEST_ID_HEADER = 'x-nextjs-html-request-id'; +const NEXT_ACTION_REVALIDATED_HEADER = 'x-action-revalidated'; //# sourceMappingURL=app-router-headers.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/hash.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +// http://www.cse.yorku.ca/~oz/hash.html +// More specifically, 32-bit hash via djbxor +// (ref: https://gist.github.com/eplawless/52813b1d8ad9af510d85?permalink_comment_id=3367765#gistcomment-3367765) +// This is due to number type differences between rust for turbopack to js number types, +// where rust does not have easy way to repreesnt js's 53-bit float number type for the matching +// overflow behavior. This is more `correct` in terms of having canonical hash across different runtime / implementation +// as can gaurantee determinstic output from 32bit hash. +__turbopack_context__.s([ + "djb2Hash", + ()=>djb2Hash, + "hexHash", + ()=>hexHash +]); +function djb2Hash(str) { + let hash = 5381; + for(let i = 0; i < str.length; i++){ + const char = str.charCodeAt(i); + hash = (hash << 5) + hash + char & 0xffffffff; + } + return hash >>> 0; +} +function hexHash(str) { + return djb2Hash(str).toString(36).slice(0, 5); +} //# sourceMappingURL=hash.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/cache-busting-search-param.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "computeCacheBustingSearchParam", + ()=>computeCacheBustingSearchParam +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$hash$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/hash.js [app-route] (ecmascript)"); +; +function computeCacheBustingSearchParam(prefetchHeader, segmentPrefetchHeader, stateTreeHeader, nextUrlHeader) { + if ((prefetchHeader === undefined || prefetchHeader === '0') && segmentPrefetchHeader === undefined && stateTreeHeader === undefined && nextUrlHeader === undefined) { + return ''; + } + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$hash$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["hexHash"])([ + prefetchHeader || '0', + segmentPrefetchHeader || '0', + stateTreeHeader || '0', + nextUrlHeader || '0' + ].join(',')); +} //# sourceMappingURL=cache-busting-search-param.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/stream-utils/node-web-streams-helper.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "chainStreams", + ()=>chainStreams, + "continueDynamicHTMLResume", + ()=>continueDynamicHTMLResume, + "continueDynamicPrerender", + ()=>continueDynamicPrerender, + "continueFizzStream", + ()=>continueFizzStream, + "continueStaticFallbackPrerender", + ()=>continueStaticFallbackPrerender, + "continueStaticPrerender", + ()=>continueStaticPrerender, + "createBufferedTransformStream", + ()=>createBufferedTransformStream, + "createDocumentClosingStream", + ()=>createDocumentClosingStream, + "createRootLayoutValidatorStream", + ()=>createRootLayoutValidatorStream, + "renderToInitialFizzStream", + ()=>renderToInitialFizzStream, + "streamFromBuffer", + ()=>streamFromBuffer, + "streamFromString", + ()=>streamFromString, + "streamToBuffer", + ()=>streamToBuffer, + "streamToString", + ()=>streamToString, + "streamToUint8Array", + ()=>streamToUint8Array +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/trace/tracer.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/trace/constants.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/detached-promise.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/scheduler.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/stream-utils/encoded-tags.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/stream-utils/uint8array-helpers.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$errors$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/errors/constants.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$segment$2d$cache$2f$output$2d$export$2d$prefetch$2d$encoding$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/segment-cache/output-export-prefetch-encoding.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$app$2d$router$2d$headers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/app-router-headers.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$cache$2d$busting$2d$search$2d$param$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/cache-busting-search-param.js [app-route] (ecmascript)"); +; +; +; +; +; +; +; +; +; +; +function voidCatch() { +// this catcher is designed to be used with pipeTo where we expect the underlying +// pipe implementation to forward errors but we don't want the pipeTo promise to reject +// and be unhandled +} +// We can share the same encoder instance everywhere +// Notably we cannot do the same for TextDecoder because it is stateful +// when handling streaming data +const encoder = new TextEncoder(); +function chainStreams(...streams) { + // If we have no streams, return an empty stream. This behavior is + // intentional as we're now providing the `RenderResult.EMPTY` value. + if (streams.length === 0) { + return new ReadableStream({ + start (controller) { + controller.close(); + } + }); + } + // If we only have 1 stream we fast path it by returning just this stream + if (streams.length === 1) { + return streams[0]; + } + const { readable, writable } = new TransformStream(); + // We always initiate pipeTo immediately. We know we have at least 2 streams + // so we need to avoid closing the writable when this one finishes. + let promise = streams[0].pipeTo(writable, { + preventClose: true + }); + let i = 1; + for(; i < streams.length - 1; i++){ + const nextStream = streams[i]; + promise = promise.then(()=>nextStream.pipeTo(writable, { + preventClose: true + })); + } + // We can omit the length check because we halted before the last stream and there + // is at least two streams so the lastStream here will always be defined + const lastStream = streams[i]; + promise = promise.then(()=>lastStream.pipeTo(writable)); + // Catch any errors from the streams and ignore them, they will be handled + // by whatever is consuming the readable stream. + promise.catch(voidCatch); + return readable; +} +function streamFromString(str) { + return new ReadableStream({ + start (controller) { + controller.enqueue(encoder.encode(str)); + controller.close(); + } + }); +} +function streamFromBuffer(chunk) { + return new ReadableStream({ + start (controller) { + controller.enqueue(chunk); + controller.close(); + } + }); +} +async function streamToChunks(stream) { + const reader = stream.getReader(); + const chunks = []; + while(true){ + const { done, value } = await reader.read(); + if (done) { + break; + } + chunks.push(value); + } + return chunks; +} +function concatUint8Arrays(chunks) { + const totalLength = chunks.reduce((sum, chunk)=>sum + chunk.length, 0); + const result = new Uint8Array(totalLength); + let offset = 0; + for (const chunk of chunks){ + result.set(chunk, offset); + offset += chunk.length; + } + return result; +} +async function streamToUint8Array(stream) { + return concatUint8Arrays(await streamToChunks(stream)); +} +async function streamToBuffer(stream) { + return Buffer.concat(await streamToChunks(stream)); +} +async function streamToString(stream, signal) { + const decoder = new TextDecoder('utf-8', { + fatal: true + }); + let string = ''; + for await (const chunk of stream){ + if (signal == null ? void 0 : signal.aborted) { + return string; + } + string += decoder.decode(chunk, { + stream: true + }); + } + string += decoder.decode(); + return string; +} +function createBufferedTransformStream(options = {}) { + const { maxBufferByteLength = Infinity } = options; + let bufferedChunks = []; + let bufferByteLength = 0; + let pending; + const flush = (controller)=>{ + try { + if (bufferedChunks.length === 0) { + return; + } + const chunk = new Uint8Array(bufferByteLength); + let copiedBytes = 0; + for(let i = 0; i < bufferedChunks.length; i++){ + const bufferedChunk = bufferedChunks[i]; + chunk.set(bufferedChunk, copiedBytes); + copiedBytes += bufferedChunk.byteLength; + } + // We just wrote all the buffered chunks so we need to reset the bufferedChunks array + // and our bufferByteLength to prepare for the next round of buffered chunks + bufferedChunks.length = 0; + bufferByteLength = 0; + controller.enqueue(chunk); + } catch { + // If an error occurs while enqueuing, it can't be due to this + // transformer. It's most likely caused by the controller having been + // errored (for example, if the stream was cancelled). + } + }; + const scheduleFlush = (controller)=>{ + if (pending) { + return; + } + const detached = new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["DetachedPromise"](); + pending = detached; + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["scheduleImmediate"])(()=>{ + try { + flush(controller); + } finally{ + pending = undefined; + detached.resolve(); + } + }); + }; + return new TransformStream({ + transform (chunk, controller) { + // Combine the previous buffer with the new chunk. + bufferedChunks.push(chunk); + bufferByteLength += chunk.byteLength; + if (bufferByteLength >= maxBufferByteLength) { + flush(controller); + } else { + scheduleFlush(controller); + } + }, + flush () { + return pending == null ? void 0 : pending.promise; + } + }); +} +function createPrefetchCommentStream(isBuildTimePrerendering, buildId) { + // Insert an extra comment at the beginning of the HTML document. This must + // come after the DOCTYPE, which is inserted by React. + // + // The first chunk sent by React will contain the doctype. After that, we can + // pass through the rest of the chunks as-is. + let didTransformFirstChunk = false; + return new TransformStream({ + transform (chunk, controller) { + if (isBuildTimePrerendering && !didTransformFirstChunk) { + didTransformFirstChunk = true; + const decoder = new TextDecoder('utf-8', { + fatal: true + }); + const chunkStr = decoder.decode(chunk, { + stream: true + }); + const updatedChunkStr = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$segment$2d$cache$2f$output$2d$export$2d$prefetch$2d$encoding$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["insertBuildIdComment"])(chunkStr, buildId); + controller.enqueue(encoder.encode(updatedChunkStr)); + return; + } + controller.enqueue(chunk); + } + }); +} +function renderToInitialFizzStream({ ReactDOMServer, element, streamOptions }) { + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getTracer"])().trace(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["AppRenderSpan"].renderToReadableStream, async ()=>ReactDOMServer.renderToReadableStream(element, streamOptions)); +} +function createMetadataTransformStream(insert) { + let chunkIndex = -1; + let isMarkRemoved = false; + return new TransformStream({ + async transform (chunk, controller) { + let iconMarkIndex = -1; + let closedHeadIndex = -1; + chunkIndex++; + if (isMarkRemoved) { + controller.enqueue(chunk); + return; + } + let iconMarkLength = 0; + // Only search for the closed head tag once + if (iconMarkIndex === -1) { + iconMarkIndex = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].META.ICON_MARK); + if (iconMarkIndex === -1) { + controller.enqueue(chunk); + return; + } else { + // When we found the `` or `>`, checking the next char to ensure we cover both cases. + iconMarkLength = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].META.ICON_MARK.length; + // Check if next char is /, this is for xml mode. + if (chunk[iconMarkIndex + iconMarkLength] === 47) { + iconMarkLength += 2; + } else { + // The last char is `>` + iconMarkLength++; + } + } + } + // Check if icon mark is inside tag in the first chunk. + if (chunkIndex === 0) { + closedHeadIndex = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.HEAD); + if (iconMarkIndex !== -1) { + // The mark icon is located in the 1st chunk before the head tag. + // We do not need to insert the script tag in this case because it's in the head. + // Just remove the icon mark from the chunk. + if (iconMarkIndex < closedHeadIndex) { + const replaced = new Uint8Array(chunk.length - iconMarkLength); + // Remove the icon mark from the chunk. + replaced.set(chunk.subarray(0, iconMarkIndex)); + replaced.set(chunk.subarray(iconMarkIndex + iconMarkLength), iconMarkIndex); + chunk = replaced; + } else { + // The icon mark is after the head tag, replace and insert the script tag at that position. + const insertion = await insert(); + const encodedInsertion = encoder.encode(insertion); + const insertionLength = encodedInsertion.length; + const replaced = new Uint8Array(chunk.length - iconMarkLength + insertionLength); + replaced.set(chunk.subarray(0, iconMarkIndex)); + replaced.set(encodedInsertion, iconMarkIndex); + replaced.set(chunk.subarray(iconMarkIndex + iconMarkLength), iconMarkIndex + insertionLength); + chunk = replaced; + } + isMarkRemoved = true; + } + // If there's no icon mark located, it will be handled later when if present in the following chunks. + } else { + // When it's appeared in the following chunks, we'll need to + // remove the mark and then insert the script tag at that position. + const insertion = await insert(); + const encodedInsertion = encoder.encode(insertion); + const insertionLength = encodedInsertion.length; + // Replace the icon mark with the hoist script or empty string. + const replaced = new Uint8Array(chunk.length - iconMarkLength + insertionLength); + // Set the first part of the chunk, before the icon mark. + replaced.set(chunk.subarray(0, iconMarkIndex)); + // Set the insertion after the icon mark. + replaced.set(encodedInsertion, iconMarkIndex); + // Set the rest of the chunk after the icon mark. + replaced.set(chunk.subarray(iconMarkIndex + iconMarkLength), iconMarkIndex + insertionLength); + chunk = replaced; + isMarkRemoved = true; + } + controller.enqueue(chunk); + } + }); +} +function createHeadInsertionTransformStream(insert) { + let inserted = false; + // We need to track if this transform saw any bytes because if it didn't + // we won't want to insert any server HTML at all + let hasBytes = false; + return new TransformStream({ + async transform (chunk, controller) { + hasBytes = true; + const insertion = await insert(); + if (inserted) { + if (insertion) { + const encodedInsertion = encoder.encode(insertion); + controller.enqueue(encodedInsertion); + } + controller.enqueue(chunk); + } else { + // TODO (@Ethan-Arrowood): Replace the generic `indexOfUint8Array` method with something finely tuned for the subset of things actually being checked for. + const index = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.HEAD); + // In fully static rendering or non PPR rendering cases: + // `/head>` will always be found in the chunk in first chunk rendering. + if (index !== -1) { + if (insertion) { + const encodedInsertion = encoder.encode(insertion); + // Get the total count of the bytes in the chunk and the insertion + // e.g. + // chunk = + // insertion = + // output = [ ] + const insertedHeadContent = new Uint8Array(chunk.length + encodedInsertion.length); + // Append the first part of the chunk, before the head tag + insertedHeadContent.set(chunk.slice(0, index)); + // Append the server inserted content + insertedHeadContent.set(encodedInsertion, index); + // Append the rest of the chunk + insertedHeadContent.set(chunk.slice(index), index + encodedInsertion.length); + controller.enqueue(insertedHeadContent); + } else { + controller.enqueue(chunk); + } + inserted = true; + } else { + // This will happens in PPR rendering during next start, when the page is partially rendered. + // When the page resumes, the head tag will be found in the middle of the chunk. + // Where we just need to append the insertion and chunk to the current stream. + // e.g. + // PPR-static: ... [ resume content ] + // PPR-resume: [ insertion ] [ rest content ] + if (insertion) { + controller.enqueue(encoder.encode(insertion)); + } + controller.enqueue(chunk); + inserted = true; + } + } + }, + async flush (controller) { + // Check before closing if there's anything remaining to insert. + if (hasBytes) { + const insertion = await insert(); + if (insertion) { + controller.enqueue(encoder.encode(insertion)); + } + } + } + }); +} +function createClientResumeScriptInsertionTransformStream() { + const segmentPath = '/_full'; + const cacheBustingHeader = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$cache$2d$busting$2d$search$2d$param$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["computeCacheBustingSearchParam"])('1', '/_full', undefined, undefined // headers[NEXT_URL] + ); + const searchStr = `${__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$app$2d$router$2d$headers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_RSC_UNION_QUERY"]}=${cacheBustingHeader}`; + const NEXT_CLIENT_RESUME_SCRIPT = ``; + let didAlreadyInsert = false; + return new TransformStream({ + transform (chunk, controller) { + if (didAlreadyInsert) { + // Already inserted the script into the head. Pass through. + controller.enqueue(chunk); + return; + } + // TODO (@Ethan-Arrowood): Replace the generic `indexOfUint8Array` method with something finely tuned for the subset of things actually being checked for. + const headClosingTagIndex = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.HEAD); + if (headClosingTagIndex === -1) { + // In fully static rendering or non PPR rendering cases: + // `/head>` will always be found in the chunk in first chunk rendering. + controller.enqueue(chunk); + return; + } + const encodedInsertion = encoder.encode(NEXT_CLIENT_RESUME_SCRIPT); + // Get the total count of the bytes in the chunk and the insertion + // e.g. + // chunk = + // insertion = + // output = [ ] + const insertedHeadContent = new Uint8Array(chunk.length + encodedInsertion.length); + // Append the first part of the chunk, before the head tag + insertedHeadContent.set(chunk.slice(0, headClosingTagIndex)); + // Append the server inserted content + insertedHeadContent.set(encodedInsertion, headClosingTagIndex); + // Append the rest of the chunk + insertedHeadContent.set(chunk.slice(headClosingTagIndex), headClosingTagIndex + encodedInsertion.length); + controller.enqueue(insertedHeadContent); + didAlreadyInsert = true; + } + }); +} +// Suffix after main body content - scripts before , +// but wait for the major chunks to be enqueued. +function createDeferredSuffixStream(suffix) { + let flushed = false; + let pending; + const flush = (controller)=>{ + const detached = new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["DetachedPromise"](); + pending = detached; + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["scheduleImmediate"])(()=>{ + try { + controller.enqueue(encoder.encode(suffix)); + } catch { + // If an error occurs while enqueuing it can't be due to this + // transformers fault. It's likely due to the controller being + // errored due to the stream being cancelled. + } finally{ + pending = undefined; + detached.resolve(); + } + }); + }; + return new TransformStream({ + transform (chunk, controller) { + controller.enqueue(chunk); + // If we've already flushed, we're done. + if (flushed) return; + // Schedule the flush to happen. + flushed = true; + flush(controller); + }, + flush (controller) { + if (pending) return pending.promise; + if (flushed) return; + // Flush now. + controller.enqueue(encoder.encode(suffix)); + } + }); +} +function createFlightDataInjectionTransformStream(stream, delayDataUntilFirstHtmlChunk) { + let htmlStreamFinished = false; + let pull = null; + let donePulling = false; + function startOrContinuePulling(controller) { + if (!pull) { + pull = startPulling(controller); + } + return pull; + } + async function startPulling(controller) { + const reader = stream.getReader(); + if (delayDataUntilFirstHtmlChunk) { + // NOTE: streaming flush + // We are buffering here for the inlined data stream because the + // "shell" stream might be chunkenized again by the underlying stream + // implementation, e.g. with a specific high-water mark. To ensure it's + // the safe timing to pipe the data stream, this extra tick is + // necessary. + // We don't start reading until we've left the current Task to ensure + // that it's inserted after flushing the shell. Note that this implementation + // might get stale if impl details of Fizz change in the future. + await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["atLeastOneTask"])(); + } + try { + while(true){ + const { done, value } = await reader.read(); + if (done) { + donePulling = true; + return; + } + // We want to prioritize HTML over RSC data. + // The SSR render is based on the same RSC stream, so when we get a new RSC chunk, + // we're likely to produce an HTML chunk as well, so give it a chance to flush first. + if (!delayDataUntilFirstHtmlChunk && !htmlStreamFinished) { + await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["atLeastOneTask"])(); + } + controller.enqueue(value); + } + } catch (err) { + controller.error(err); + } + } + return new TransformStream({ + start (controller) { + if (!delayDataUntilFirstHtmlChunk) { + startOrContinuePulling(controller); + } + }, + transform (chunk, controller) { + controller.enqueue(chunk); + // Start the streaming if it hasn't already been started yet. + if (delayDataUntilFirstHtmlChunk) { + startOrContinuePulling(controller); + } + }, + flush (controller) { + htmlStreamFinished = true; + if (donePulling) { + return; + } + return startOrContinuePulling(controller); + } + }); +} +const CLOSE_TAG = ''; +/** + * This transform stream moves the suffix to the end of the stream, so results + * like `` will be transformed to + * ``. + */ function createMoveSuffixStream() { + let foundSuffix = false; + return new TransformStream({ + transform (chunk, controller) { + if (foundSuffix) { + return controller.enqueue(chunk); + } + const index = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY_AND_HTML); + if (index > -1) { + foundSuffix = true; + // If the whole chunk is the suffix, then don't write anything, it will + // be written in the flush. + if (chunk.length === __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY_AND_HTML.length) { + return; + } + // Write out the part before the suffix. + const before = chunk.slice(0, index); + controller.enqueue(before); + // In the case where the suffix is in the middle of the chunk, we need + // to split the chunk into two parts. + if (chunk.length > __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY_AND_HTML.length + index) { + // Write out the part after the suffix. + const after = chunk.slice(index + __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY_AND_HTML.length); + controller.enqueue(after); + } + } else { + controller.enqueue(chunk); + } + }, + flush (controller) { + // Even if we didn't find the suffix, the HTML is not valid if we don't + // add it, so insert it at the end. + controller.enqueue(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY_AND_HTML); + } + }); +} +function createStripDocumentClosingTagsTransform() { + return new TransformStream({ + transform (chunk, controller) { + // We rely on the assumption that chunks will never break across a code unit. + // This is reasonable because we currently concat all of React's output from a single + // flush into one chunk before streaming it forward which means the chunk will represent + // a single coherent utf-8 string. This is not safe to use if we change our streaming to no + // longer do this large buffered chunk + if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["isEquivalentUint8Arrays"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY_AND_HTML) || (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["isEquivalentUint8Arrays"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY) || (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["isEquivalentUint8Arrays"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.HTML)) { + // the entire chunk is the closing tags; return without enqueueing anything. + return; + } + // We assume these tags will go at together at the end of the document and that + // they won't appear anywhere else in the document. This is not really a safe assumption + // but until we revamp our streaming infra this is a performant way to string the tags + chunk = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["removeFromUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY); + chunk = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["removeFromUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.HTML); + controller.enqueue(chunk); + } + }); +} +function createRootLayoutValidatorStream() { + let foundHtml = false; + let foundBody = false; + return new TransformStream({ + async transform (chunk, controller) { + // Peek into the streamed chunk to see if the tags are present. + if (!foundHtml && (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].OPENING.HTML) > -1) { + foundHtml = true; + } + if (!foundBody && (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].OPENING.BODY) > -1) { + foundBody = true; + } + controller.enqueue(chunk); + }, + flush (controller) { + const missingTags = []; + if (!foundHtml) missingTags.push('html'); + if (!foundBody) missingTags.push('body'); + if (!missingTags.length) return; + controller.enqueue(encoder.encode(` + + `)); + } + }); +} +function chainTransformers(readable, transformers) { + let stream = readable; + for (const transformer of transformers){ + if (!transformer) continue; + stream = stream.pipeThrough(transformer); + } + return stream; +} +async function continueFizzStream(renderStream, { suffix, inlinedDataStream, isStaticGeneration, isBuildTimePrerendering, buildId, getServerInsertedHTML, getServerInsertedMetadata, validateRootLayout }) { + // Suffix itself might contain close tags at the end, so we need to split it. + const suffixUnclosed = suffix ? suffix.split(CLOSE_TAG, 1)[0] : null; + if (isStaticGeneration) { + // If we're generating static HTML we need to wait for it to resolve before continuing. + await renderStream.allReady; + } else { + // Otherwise, we want to make sure Fizz is done with all microtasky work + // before we start pulling the stream and cause a flush. + await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["waitAtLeastOneReactRenderTask"])(); + } + return chainTransformers(renderStream, [ + // Buffer everything to avoid flushing too frequently + createBufferedTransformStream(), + // Add build id comment to start of the HTML document (in export mode) + createPrefetchCommentStream(isBuildTimePrerendering, buildId), + // Transform metadata + createMetadataTransformStream(getServerInsertedMetadata), + // Insert suffix content + suffixUnclosed != null && suffixUnclosed.length > 0 ? createDeferredSuffixStream(suffixUnclosed) : null, + // Insert the inlined data (Flight data, form state, etc.) stream into the HTML + inlinedDataStream ? createFlightDataInjectionTransformStream(inlinedDataStream, true) : null, + // Validate the root layout for missing html or body tags + validateRootLayout ? createRootLayoutValidatorStream() : null, + // Close tags should always be deferred to the end + createMoveSuffixStream(), + // Special head insertions + // TODO-APP: Insert server side html to end of head in app layout rendering, to avoid + // hydration errors. Remove this once it's ready to be handled by react itself. + createHeadInsertionTransformStream(getServerInsertedHTML) + ]); +} +async function continueDynamicPrerender(prerenderStream, { getServerInsertedHTML, getServerInsertedMetadata }) { + return prerenderStream // Buffer everything to avoid flushing too frequently + .pipeThrough(createBufferedTransformStream()).pipeThrough(createStripDocumentClosingTagsTransform()) // Insert generated tags to head + .pipeThrough(createHeadInsertionTransformStream(getServerInsertedHTML)) // Transform metadata + .pipeThrough(createMetadataTransformStream(getServerInsertedMetadata)); +} +async function continueStaticPrerender(prerenderStream, { inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata, isBuildTimePrerendering, buildId }) { + return prerenderStream // Buffer everything to avoid flushing too frequently + .pipeThrough(createBufferedTransformStream()) // Add build id comment to start of the HTML document (in export mode) + .pipeThrough(createPrefetchCommentStream(isBuildTimePrerendering, buildId)) // Insert generated tags to head + .pipeThrough(createHeadInsertionTransformStream(getServerInsertedHTML)) // Transform metadata + .pipeThrough(createMetadataTransformStream(getServerInsertedMetadata)) // Insert the inlined data (Flight data, form state, etc.) stream into the HTML + .pipeThrough(createFlightDataInjectionTransformStream(inlinedDataStream, true)) // Close tags should always be deferred to the end + .pipeThrough(createMoveSuffixStream()); +} +async function continueStaticFallbackPrerender(prerenderStream, { inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata, isBuildTimePrerendering, buildId }) { + // Same as `continueStaticPrerender`, but also inserts an additional script + // to instruct the client to start fetching the hydration data as early + // as possible. + return prerenderStream // Buffer everything to avoid flushing too frequently + .pipeThrough(createBufferedTransformStream()) // Add build id comment to start of the HTML document (in export mode) + .pipeThrough(createPrefetchCommentStream(isBuildTimePrerendering, buildId)) // Insert generated tags to head + .pipeThrough(createHeadInsertionTransformStream(getServerInsertedHTML)) // Insert the client resume script into the head + .pipeThrough(createClientResumeScriptInsertionTransformStream()) // Transform metadata + .pipeThrough(createMetadataTransformStream(getServerInsertedMetadata)) // Insert the inlined data (Flight data, form state, etc.) stream into the HTML + .pipeThrough(createFlightDataInjectionTransformStream(inlinedDataStream, true)) // Close tags should always be deferred to the end + .pipeThrough(createMoveSuffixStream()); +} +async function continueDynamicHTMLResume(renderStream, { delayDataUntilFirstHtmlChunk, inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata }) { + return renderStream // Buffer everything to avoid flushing too frequently + .pipeThrough(createBufferedTransformStream()) // Insert generated tags to head + .pipeThrough(createHeadInsertionTransformStream(getServerInsertedHTML)) // Transform metadata + .pipeThrough(createMetadataTransformStream(getServerInsertedMetadata)) // Insert the inlined data (Flight data, form state, etc.) stream into the HTML + .pipeThrough(createFlightDataInjectionTransformStream(inlinedDataStream, delayDataUntilFirstHtmlChunk)) // Close tags should always be deferred to the end + .pipeThrough(createMoveSuffixStream()); +} +function createDocumentClosingStream() { + return streamFromString(CLOSE_TAG); +} //# sourceMappingURL=node-web-streams-helper.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/request-meta.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +// FIXME: (wyattjoh) this is a temporary solution to allow us to pass data between bundled modules +__turbopack_context__.s([ + "NEXT_REQUEST_META", + ()=>NEXT_REQUEST_META, + "addRequestMeta", + ()=>addRequestMeta, + "getRequestMeta", + ()=>getRequestMeta, + "removeRequestMeta", + ()=>removeRequestMeta, + "setRequestMeta", + ()=>setRequestMeta +]); +const NEXT_REQUEST_META = Symbol.for('NextInternalRequestMeta'); +function getRequestMeta(req, key) { + const meta = req[NEXT_REQUEST_META] || {}; + return typeof key === 'string' ? meta[key] : meta; +} +function setRequestMeta(req, meta) { + req[NEXT_REQUEST_META] = meta; + return meta; +} +function addRequestMeta(request, key, value) { + const meta = getRequestMeta(request); + meta[key] = value; + return setRequestMeta(request, meta); +} +function removeRequestMeta(request, key) { + const meta = getRequestMeta(request); + delete meta[key]; + return setRequestMeta(request, meta); +} //# sourceMappingURL=request-meta.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/utils.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "fromNodeOutgoingHttpHeaders", + ()=>fromNodeOutgoingHttpHeaders, + "normalizeNextQueryParam", + ()=>normalizeNextQueryParam, + "splitCookiesString", + ()=>splitCookiesString, + "toNodeOutgoingHttpHeaders", + ()=>toNodeOutgoingHttpHeaders, + "validateURL", + ()=>validateURL +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/constants.js [app-route] (ecmascript)"); +; +function fromNodeOutgoingHttpHeaders(nodeHeaders) { + const headers = new Headers(); + for (let [key, value] of Object.entries(nodeHeaders)){ + const values = Array.isArray(value) ? value : [ + value + ]; + for (let v of values){ + if (typeof v === 'undefined') continue; + if (typeof v === 'number') { + v = v.toString(); + } + headers.append(key, v); + } + } + return headers; +} +function splitCookiesString(cookiesString) { + var cookiesStrings = []; + var pos = 0; + var start; + var ch; + var lastComma; + var nextStart; + var cookiesSeparatorFound; + function skipWhitespace() { + while(pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos))){ + pos += 1; + } + return pos < cookiesString.length; + } + function notSpecialChar() { + ch = cookiesString.charAt(pos); + return ch !== '=' && ch !== ';' && ch !== ','; + } + while(pos < cookiesString.length){ + start = pos; + cookiesSeparatorFound = false; + while(skipWhitespace()){ + ch = cookiesString.charAt(pos); + if (ch === ',') { + // ',' is a cookie separator if we have later first '=', not ';' or ',' + lastComma = pos; + pos += 1; + skipWhitespace(); + nextStart = pos; + while(pos < cookiesString.length && notSpecialChar()){ + pos += 1; + } + // currently special character + if (pos < cookiesString.length && cookiesString.charAt(pos) === '=') { + // we found cookies separator + cookiesSeparatorFound = true; + // pos is inside the next cookie, so back up and return it. + pos = nextStart; + cookiesStrings.push(cookiesString.substring(start, lastComma)); + start = pos; + } else { + // in param ',' or param separator ';', + // we continue from that comma + pos = lastComma + 1; + } + } else { + pos += 1; + } + } + if (!cookiesSeparatorFound || pos >= cookiesString.length) { + cookiesStrings.push(cookiesString.substring(start, cookiesString.length)); + } + } + return cookiesStrings; +} +function toNodeOutgoingHttpHeaders(headers) { + const nodeHeaders = {}; + const cookies = []; + if (headers) { + for (const [key, value] of headers.entries()){ + if (key.toLowerCase() === 'set-cookie') { + // We may have gotten a comma joined string of cookies, or multiple + // set-cookie headers. We need to merge them into one header array + // to represent all the cookies. + cookies.push(...splitCookiesString(value)); + nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies; + } else { + nodeHeaders[key] = value; + } + } + } + return nodeHeaders; +} +function validateURL(url) { + try { + return String(new URL(String(url))); + } catch (error) { + throw Object.defineProperty(new Error(`URL is malformed "${String(url)}". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`, { + cause: error + }), "__NEXT_ERROR_CODE", { + value: "E61", + enumerable: false, + configurable: true + }); + } +} +function normalizeNextQueryParam(key) { + const prefixes = [ + __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_QUERY_PARAM_PREFIX"], + __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_INTERCEPTION_MARKER_PREFIX"] + ]; + for (const prefix of prefixes){ + if (key !== prefix && key.startsWith(prefix)) { + return key.substring(prefix.length); + } + } + return null; +} //# sourceMappingURL=utils.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "detectDomainLocale", + ()=>detectDomainLocale +]); +function detectDomainLocale(domainItems, hostname, detectedLocale) { + if (!domainItems) return; + if (detectedLocale) { + detectedLocale = detectedLocale.toLowerCase(); + } + for (const item of domainItems){ + // remove port if present + const domainHostname = item.domain?.split(':', 1)[0].toLowerCase(); + if (hostname === domainHostname || detectedLocale === item.defaultLocale.toLowerCase() || item.locales?.some((locale)=>locale.toLowerCase() === detectedLocale)) { + return item; + } + } +} //# sourceMappingURL=detect-domain-locale.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +/** + * Removes the trailing slash for a given route or page path. Preserves the + * root page. Examples: + * - `/foo/bar/` -> `/foo/bar` + * - `/foo/bar` -> `/foo/bar` + * - `/` -> `/` + */ __turbopack_context__.s([ + "removeTrailingSlash", + ()=>removeTrailingSlash +]); +function removeTrailingSlash(route) { + return route.replace(/\/$/, '') || '/'; +} //# sourceMappingURL=remove-trailing-slash.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +/** + * Given a path this function will find the pathname, query and hash and return + * them. This is useful to parse full paths on the client side. + * @param path A path to parse e.g. /foo/bar?id=1#hash + */ __turbopack_context__.s([ + "parsePath", + ()=>parsePath +]); +function parsePath(path) { + const hashIndex = path.indexOf('#'); + const queryIndex = path.indexOf('?'); + const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex); + if (hasQuery || hashIndex > -1) { + return { + pathname: path.substring(0, hasQuery ? queryIndex : hashIndex), + query: hasQuery ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined) : '', + hash: hashIndex > -1 ? path.slice(hashIndex) : '' + }; + } + return { + pathname: path, + query: '', + hash: '' + }; +} //# sourceMappingURL=parse-path.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "addPathPrefix", + ()=>addPathPrefix +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$parse$2d$path$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js [app-route] (ecmascript)"); +; +function addPathPrefix(path, prefix) { + if (!path.startsWith('/') || !prefix) { + return path; + } + const { pathname, query, hash } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$parse$2d$path$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["parsePath"])(path); + return `${prefix}${pathname}${query}${hash}`; +} //# sourceMappingURL=add-path-prefix.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/add-path-suffix.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "addPathSuffix", + ()=>addPathSuffix +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$parse$2d$path$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js [app-route] (ecmascript)"); +; +function addPathSuffix(path, suffix) { + if (!path.startsWith('/') || !suffix) { + return path; + } + const { pathname, query, hash } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$parse$2d$path$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["parsePath"])(path); + return `${pathname}${suffix}${query}${hash}`; +} //# sourceMappingURL=add-path-suffix.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "pathHasPrefix", + ()=>pathHasPrefix +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$parse$2d$path$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js [app-route] (ecmascript)"); +; +function pathHasPrefix(path, prefix) { + if (typeof path !== 'string') { + return false; + } + const { pathname } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$parse$2d$path$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["parsePath"])(path); + return pathname === prefix || pathname.startsWith(prefix + '/'); +} //# sourceMappingURL=path-has-prefix.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/add-locale.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "addLocale", + ()=>addLocale +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js [app-route] (ecmascript)"); +; +; +function addLocale(path, locale, defaultLocale, ignorePrefix) { + // If no locale was given or the locale is the default locale, we don't need + // to prefix the path. + if (!locale || locale === defaultLocale) return path; + const lower = path.toLowerCase(); + // If the path is an API path or the path already has the locale prefix, we + // don't need to prefix the path. + if (!ignorePrefix) { + if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["pathHasPrefix"])(lower, '/api')) return path; + if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["pathHasPrefix"])(lower, `/${locale.toLowerCase()}`)) return path; + } + // Add the locale prefix to the path. + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["addPathPrefix"])(path, `/${locale}`); +} //# sourceMappingURL=add-locale.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "formatNextPathnameInfo", + ()=>formatNextPathnameInfo +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$remove$2d$trailing$2d$slash$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$suffix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/add-path-suffix.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$locale$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/add-locale.js [app-route] (ecmascript)"); +; +; +; +; +function formatNextPathnameInfo(info) { + let pathname = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$locale$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["addLocale"])(info.pathname, info.locale, info.buildId ? undefined : info.defaultLocale, info.ignorePrefix); + if (info.buildId || !info.trailingSlash) { + pathname = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$remove$2d$trailing$2d$slash$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["removeTrailingSlash"])(pathname); + } + if (info.buildId) { + pathname = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$suffix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["addPathSuffix"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["addPathPrefix"])(pathname, `/_next/data/${info.buildId}`), info.pathname === '/' ? 'index.json' : '.json'); + } + pathname = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["addPathPrefix"])(pathname, info.basePath); + return !info.buildId && info.trailingSlash ? !pathname.endsWith('/') ? (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$suffix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["addPathSuffix"])(pathname, '/') : pathname : (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$remove$2d$trailing$2d$slash$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["removeTrailingSlash"])(pathname); +} //# sourceMappingURL=format-next-pathname-info.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/get-hostname.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +/** + * Takes an object with a hostname property (like a parsed URL) and some + * headers that may contain Host and returns the preferred hostname. + * @param parsed An object containing a hostname property. + * @param headers A dictionary with headers containing a `host`. + */ __turbopack_context__.s([ + "getHostname", + ()=>getHostname +]); +function getHostname(parsed, headers) { + // Get the hostname from the headers if it exists, otherwise use the parsed + // hostname. + let hostname; + if (headers?.host && !Array.isArray(headers.host)) { + hostname = headers.host.toString().split(':', 1)[0]; + } else if (parsed.hostname) { + hostname = parsed.hostname; + } else return; + return hostname.toLowerCase(); +} //# sourceMappingURL=get-hostname.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "normalizeLocalePath", + ()=>normalizeLocalePath +]); +/** + * A cache of lowercased locales for each list of locales. This is stored as a + * WeakMap so if the locales are garbage collected, the cache entry will be + * removed as well. + */ const cache = new WeakMap(); +function normalizeLocalePath(pathname, locales) { + // If locales is undefined, return the pathname as is. + if (!locales) return { + pathname + }; + // Get the cached lowercased locales or create a new cache entry. + let lowercasedLocales = cache.get(locales); + if (!lowercasedLocales) { + lowercasedLocales = locales.map((locale)=>locale.toLowerCase()); + cache.set(locales, lowercasedLocales); + } + let detectedLocale; + // The first segment will be empty, because it has a leading `/`. If + // there is no further segment, there is no locale (or it's the default). + const segments = pathname.split('/', 2); + // If there's no second segment (ie, the pathname is just `/`), there's no + // locale. + if (!segments[1]) return { + pathname + }; + // The second segment will contain the locale part if any. + const segment = segments[1].toLowerCase(); + // See if the segment matches one of the locales. If it doesn't, there is + // no locale (or it's the default). + const index = lowercasedLocales.indexOf(segment); + if (index < 0) return { + pathname + }; + // Return the case-sensitive locale. + detectedLocale = locales[index]; + // Remove the `/${locale}` part of the pathname. + pathname = pathname.slice(detectedLocale.length + 1) || '/'; + return { + pathname, + detectedLocale + }; +} //# sourceMappingURL=normalize-locale-path.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "removePathPrefix", + ()=>removePathPrefix +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js [app-route] (ecmascript)"); +; +function removePathPrefix(path, prefix) { + // If the path doesn't start with the prefix we can return it as is. This + // protects us from situations where the prefix is a substring of the path + // prefix such as: + // + // For prefix: /blog + // + // /blog -> true + // /blog/ -> true + // /blog/1 -> true + // /blogging -> false + // /blogging/ -> false + // /blogging/1 -> false + if (!(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["pathHasPrefix"])(path, prefix)) { + return path; + } + // Remove the prefix from the path via slicing. + const withoutPrefix = path.slice(prefix.length); + // If the path without the prefix starts with a `/` we can return it as is. + if (withoutPrefix.startsWith('/')) { + return withoutPrefix; + } + // If the path without the prefix doesn't start with a `/` we need to add it + // back to the path to make sure it's a valid path. + return `/${withoutPrefix}`; +} //# sourceMappingURL=remove-path-prefix.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "getNextPathnameInfo", + ()=>getNextPathnameInfo +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$i18n$2f$normalize$2d$locale$2d$path$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$remove$2d$path$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js [app-route] (ecmascript)"); +; +; +; +function getNextPathnameInfo(pathname, options) { + const { basePath, i18n, trailingSlash } = options.nextConfig ?? {}; + const info = { + pathname, + trailingSlash: pathname !== '/' ? pathname.endsWith('/') : trailingSlash + }; + if (basePath && (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["pathHasPrefix"])(info.pathname, basePath)) { + info.pathname = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$remove$2d$path$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["removePathPrefix"])(info.pathname, basePath); + info.basePath = basePath; + } + let pathnameNoDataPrefix = info.pathname; + if (info.pathname.startsWith('/_next/data/') && info.pathname.endsWith('.json')) { + const paths = info.pathname.replace(/^\/_next\/data\//, '').replace(/\.json$/, '').split('/'); + const buildId = paths[0]; + info.buildId = buildId; + pathnameNoDataPrefix = paths[1] !== 'index' ? `/${paths.slice(1).join('/')}` : '/'; + // update pathname with normalized if enabled although + // we use normalized to populate locale info still + if (options.parseData === true) { + info.pathname = pathnameNoDataPrefix; + } + } + // If provided, use the locale route normalizer to detect the locale instead + // of the function below. + if (i18n) { + let result = options.i18nProvider ? options.i18nProvider.analyze(info.pathname) : (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$i18n$2f$normalize$2d$locale$2d$path$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["normalizeLocalePath"])(info.pathname, i18n.locales); + info.locale = result.detectedLocale; + info.pathname = result.pathname ?? info.pathname; + if (!result.detectedLocale && info.buildId) { + result = options.i18nProvider ? options.i18nProvider.analyze(pathnameNoDataPrefix) : (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$i18n$2f$normalize$2d$locale$2d$path$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["normalizeLocalePath"])(pathnameNoDataPrefix, i18n.locales); + if (result.detectedLocale) { + info.locale = result.detectedLocale; + } + } + } + return info; +} //# sourceMappingURL=get-next-pathname-info.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/next-url.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "NextURL", + ()=>NextURL +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$i18n$2f$detect$2d$domain$2d$locale$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$format$2d$next$2d$pathname$2d$info$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$get$2d$hostname$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/get-hostname.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$get$2d$next$2d$pathname$2d$info$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js [app-route] (ecmascript)"); +; +; +; +; +const REGEX_LOCALHOST_HOSTNAME = /(?!^https?:\/\/)(127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\[::1\]|localhost)/; +function parseURL(url, base) { + return new URL(String(url).replace(REGEX_LOCALHOST_HOSTNAME, 'localhost'), base && String(base).replace(REGEX_LOCALHOST_HOSTNAME, 'localhost')); +} +const Internal = Symbol('NextURLInternal'); +class NextURL { + constructor(input, baseOrOpts, opts){ + let base; + let options; + if (typeof baseOrOpts === 'object' && 'pathname' in baseOrOpts || typeof baseOrOpts === 'string') { + base = baseOrOpts; + options = opts || {}; + } else { + options = opts || baseOrOpts || {}; + } + this[Internal] = { + url: parseURL(input, base ?? options.base), + options: options, + basePath: '' + }; + this.analyze(); + } + analyze() { + var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig, _this_Internal_domainLocale, _this_Internal_options_nextConfig_i18n1, _this_Internal_options_nextConfig1; + const info = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$get$2d$next$2d$pathname$2d$info$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getNextPathnameInfo"])(this[Internal].url.pathname, { + nextConfig: this[Internal].options.nextConfig, + parseData: !("TURBOPACK compile-time value", void 0), + i18nProvider: this[Internal].options.i18nProvider + }); + const hostname = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$get$2d$hostname$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getHostname"])(this[Internal].url, this[Internal].options.headers); + this[Internal].domainLocale = this[Internal].options.i18nProvider ? this[Internal].options.i18nProvider.detectDomainLocale(hostname) : (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$i18n$2f$detect$2d$domain$2d$locale$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["detectDomainLocale"])((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.domains, hostname); + const defaultLocale = ((_this_Internal_domainLocale = this[Internal].domainLocale) == null ? void 0 : _this_Internal_domainLocale.defaultLocale) || ((_this_Internal_options_nextConfig1 = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n1 = _this_Internal_options_nextConfig1.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n1.defaultLocale); + this[Internal].url.pathname = info.pathname; + this[Internal].defaultLocale = defaultLocale; + this[Internal].basePath = info.basePath ?? ''; + this[Internal].buildId = info.buildId; + this[Internal].locale = info.locale ?? defaultLocale; + this[Internal].trailingSlash = info.trailingSlash; + } + formatPathname() { + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$format$2d$next$2d$pathname$2d$info$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["formatNextPathnameInfo"])({ + basePath: this[Internal].basePath, + buildId: this[Internal].buildId, + defaultLocale: !this[Internal].options.forceLocale ? this[Internal].defaultLocale : undefined, + locale: this[Internal].locale, + pathname: this[Internal].url.pathname, + trailingSlash: this[Internal].trailingSlash + }); + } + formatSearch() { + return this[Internal].url.search; + } + get buildId() { + return this[Internal].buildId; + } + set buildId(buildId) { + this[Internal].buildId = buildId; + } + get locale() { + return this[Internal].locale ?? ''; + } + set locale(locale) { + var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig; + if (!this[Internal].locale || !((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.locales.includes(locale))) { + throw Object.defineProperty(new TypeError(`The NextURL configuration includes no locale "${locale}"`), "__NEXT_ERROR_CODE", { + value: "E597", + enumerable: false, + configurable: true + }); + } + this[Internal].locale = locale; + } + get defaultLocale() { + return this[Internal].defaultLocale; + } + get domainLocale() { + return this[Internal].domainLocale; + } + get searchParams() { + return this[Internal].url.searchParams; + } + get host() { + return this[Internal].url.host; + } + set host(value) { + this[Internal].url.host = value; + } + get hostname() { + return this[Internal].url.hostname; + } + set hostname(value) { + this[Internal].url.hostname = value; + } + get port() { + return this[Internal].url.port; + } + set port(value) { + this[Internal].url.port = value; + } + get protocol() { + return this[Internal].url.protocol; + } + set protocol(value) { + this[Internal].url.protocol = value; + } + get href() { + const pathname = this.formatPathname(); + const search = this.formatSearch(); + return `${this.protocol}//${this.host}${pathname}${search}${this.hash}`; + } + set href(url) { + this[Internal].url = parseURL(url); + this.analyze(); + } + get origin() { + return this[Internal].url.origin; + } + get pathname() { + return this[Internal].url.pathname; + } + set pathname(value) { + this[Internal].url.pathname = value; + } + get hash() { + return this[Internal].url.hash; + } + set hash(value) { + this[Internal].url.hash = value; + } + get search() { + return this[Internal].url.search; + } + set search(value) { + this[Internal].url.search = value; + } + get password() { + return this[Internal].url.password; + } + set password(value) { + this[Internal].url.password = value; + } + get username() { + return this[Internal].url.username; + } + set username(value) { + this[Internal].url.username = value; + } + get basePath() { + return this[Internal].basePath; + } + set basePath(value) { + this[Internal].basePath = value.startsWith('/') ? value : `/${value}`; + } + toString() { + return this.href; + } + toJSON() { + return this.href; + } + [Symbol.for('edge-runtime.inspect.custom')]() { + return { + href: this.href, + origin: this.origin, + protocol: this.protocol, + username: this.username, + password: this.password, + host: this.host, + hostname: this.hostname, + port: this.port, + pathname: this.pathname, + search: this.search, + searchParams: this.searchParams, + hash: this.hash + }; + } + clone() { + return new NextURL(String(this), this[Internal].options); + } +} //# sourceMappingURL=next-url.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/error.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "PageSignatureError", + ()=>PageSignatureError, + "RemovedPageError", + ()=>RemovedPageError, + "RemovedUAError", + ()=>RemovedUAError +]); +class PageSignatureError extends Error { + constructor({ page }){ + super(`The middleware "${page}" accepts an async API directly with the form: + + export function middleware(request, event) { + return NextResponse.redirect('/new-location') + } + + Read more: https://nextjs.org/docs/messages/middleware-new-signature + `); + } +} +class RemovedPageError extends Error { + constructor(){ + super(`The request.page has been deprecated in favour of \`URLPattern\`. + Read more: https://nextjs.org/docs/messages/middleware-request-page + `); + } +} +class RemovedUAError extends Error { + constructor(){ + super(`The request.ua has been removed in favour of \`userAgent\` function. + Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent + `); + } +} //# sourceMappingURL=error.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all)=>{ + for(var name in all)__defProp(target, name, { + get: all[name], + enumerable: true + }); +}; +var __copyProps = (to, from, except, desc)=>{ + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from))if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { + get: ()=>from[key], + enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable + }); + } + return to; +}; +var __toCommonJS = (mod)=>__copyProps(__defProp({}, "__esModule", { + value: true + }), mod); +// src/index.ts +var src_exports = {}; +__export(src_exports, { + RequestCookies: ()=>RequestCookies, + ResponseCookies: ()=>ResponseCookies, + parseCookie: ()=>parseCookie, + parseSetCookie: ()=>parseSetCookie, + stringifyCookie: ()=>stringifyCookie +}); +module.exports = __toCommonJS(src_exports); +// src/serialize.ts +function stringifyCookie(c) { + var _a; + const attrs = [ + "path" in c && c.path && `Path=${c.path}`, + "expires" in c && (c.expires || c.expires === 0) && `Expires=${(typeof c.expires === "number" ? new Date(c.expires) : c.expires).toUTCString()}`, + "maxAge" in c && typeof c.maxAge === "number" && `Max-Age=${c.maxAge}`, + "domain" in c && c.domain && `Domain=${c.domain}`, + "secure" in c && c.secure && "Secure", + "httpOnly" in c && c.httpOnly && "HttpOnly", + "sameSite" in c && c.sameSite && `SameSite=${c.sameSite}`, + "partitioned" in c && c.partitioned && "Partitioned", + "priority" in c && c.priority && `Priority=${c.priority}` + ].filter(Boolean); + const stringified = `${c.name}=${encodeURIComponent((_a = c.value) != null ? _a : "")}`; + return attrs.length === 0 ? stringified : `${stringified}; ${attrs.join("; ")}`; +} +function parseCookie(cookie) { + const map = /* @__PURE__ */ new Map(); + for (const pair of cookie.split(/; */)){ + if (!pair) continue; + const splitAt = pair.indexOf("="); + if (splitAt === -1) { + map.set(pair, "true"); + continue; + } + const [key, value] = [ + pair.slice(0, splitAt), + pair.slice(splitAt + 1) + ]; + try { + map.set(key, decodeURIComponent(value != null ? value : "true")); + } catch {} + } + return map; +} +function parseSetCookie(setCookie) { + if (!setCookie) { + return void 0; + } + const [[name, value], ...attributes] = parseCookie(setCookie); + const { domain, expires, httponly, maxage, path, samesite, secure, partitioned, priority } = Object.fromEntries(attributes.map(([key, value2])=>[ + key.toLowerCase().replace(/-/g, ""), + value2 + ])); + const cookie = { + name, + value: decodeURIComponent(value), + domain, + ...expires && { + expires: new Date(expires) + }, + ...httponly && { + httpOnly: true + }, + ...typeof maxage === "string" && { + maxAge: Number(maxage) + }, + path, + ...samesite && { + sameSite: parseSameSite(samesite) + }, + ...secure && { + secure: true + }, + ...priority && { + priority: parsePriority(priority) + }, + ...partitioned && { + partitioned: true + } + }; + return compact(cookie); +} +function compact(t) { + const newT = {}; + for(const key in t){ + if (t[key]) { + newT[key] = t[key]; + } + } + return newT; +} +var SAME_SITE = [ + "strict", + "lax", + "none" +]; +function parseSameSite(string) { + string = string.toLowerCase(); + return SAME_SITE.includes(string) ? string : void 0; +} +var PRIORITY = [ + "low", + "medium", + "high" +]; +function parsePriority(string) { + string = string.toLowerCase(); + return PRIORITY.includes(string) ? string : void 0; +} +function splitCookiesString(cookiesString) { + if (!cookiesString) return []; + var cookiesStrings = []; + var pos = 0; + var start; + var ch; + var lastComma; + var nextStart; + var cookiesSeparatorFound; + function skipWhitespace() { + while(pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos))){ + pos += 1; + } + return pos < cookiesString.length; + } + function notSpecialChar() { + ch = cookiesString.charAt(pos); + return ch !== "=" && ch !== ";" && ch !== ","; + } + while(pos < cookiesString.length){ + start = pos; + cookiesSeparatorFound = false; + while(skipWhitespace()){ + ch = cookiesString.charAt(pos); + if (ch === ",") { + lastComma = pos; + pos += 1; + skipWhitespace(); + nextStart = pos; + while(pos < cookiesString.length && notSpecialChar()){ + pos += 1; + } + if (pos < cookiesString.length && cookiesString.charAt(pos) === "=") { + cookiesSeparatorFound = true; + pos = nextStart; + cookiesStrings.push(cookiesString.substring(start, lastComma)); + start = pos; + } else { + pos = lastComma + 1; + } + } else { + pos += 1; + } + } + if (!cookiesSeparatorFound || pos >= cookiesString.length) { + cookiesStrings.push(cookiesString.substring(start, cookiesString.length)); + } + } + return cookiesStrings; +} +// src/request-cookies.ts +var RequestCookies = class { + constructor(requestHeaders){ + /** @internal */ this._parsed = /* @__PURE__ */ new Map(); + this._headers = requestHeaders; + const header = requestHeaders.get("cookie"); + if (header) { + const parsed = parseCookie(header); + for (const [name, value] of parsed){ + this._parsed.set(name, { + name, + value + }); + } + } + } + [Symbol.iterator]() { + return this._parsed[Symbol.iterator](); + } + /** + * The amount of cookies received from the client + */ get size() { + return this._parsed.size; + } + get(...args) { + const name = typeof args[0] === "string" ? args[0] : args[0].name; + return this._parsed.get(name); + } + getAll(...args) { + var _a; + const all = Array.from(this._parsed); + if (!args.length) { + return all.map(([_, value])=>value); + } + const name = typeof args[0] === "string" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name; + return all.filter(([n])=>n === name).map(([_, value])=>value); + } + has(name) { + return this._parsed.has(name); + } + set(...args) { + const [name, value] = args.length === 1 ? [ + args[0].name, + args[0].value + ] : args; + const map = this._parsed; + map.set(name, { + name, + value + }); + this._headers.set("cookie", Array.from(map).map(([_, value2])=>stringifyCookie(value2)).join("; ")); + return this; + } + /** + * Delete the cookies matching the passed name or names in the request. + */ delete(names) { + const map = this._parsed; + const result = !Array.isArray(names) ? map.delete(names) : names.map((name)=>map.delete(name)); + this._headers.set("cookie", Array.from(map).map(([_, value])=>stringifyCookie(value)).join("; ")); + return result; + } + /** + * Delete all the cookies in the cookies in the request. + */ clear() { + this.delete(Array.from(this._parsed.keys())); + return this; + } + /** + * Format the cookies in the request as a string for logging + */ [Symbol.for("edge-runtime.inspect.custom")]() { + return `RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`; + } + toString() { + return [ + ...this._parsed.values() + ].map((v)=>`${v.name}=${encodeURIComponent(v.value)}`).join("; "); + } +}; +// src/response-cookies.ts +var ResponseCookies = class { + constructor(responseHeaders){ + /** @internal */ this._parsed = /* @__PURE__ */ new Map(); + var _a, _b, _c; + this._headers = responseHeaders; + const setCookie = (_c = (_b = (_a = responseHeaders.getSetCookie) == null ? void 0 : _a.call(responseHeaders)) != null ? _b : responseHeaders.get("set-cookie")) != null ? _c : []; + const cookieStrings = Array.isArray(setCookie) ? setCookie : splitCookiesString(setCookie); + for (const cookieString of cookieStrings){ + const parsed = parseSetCookie(cookieString); + if (parsed) this._parsed.set(parsed.name, parsed); + } + } + /** + * {@link https://wicg.github.io/cookie-store/#CookieStore-get CookieStore#get} without the Promise. + */ get(...args) { + const key = typeof args[0] === "string" ? args[0] : args[0].name; + return this._parsed.get(key); + } + /** + * {@link https://wicg.github.io/cookie-store/#CookieStore-getAll CookieStore#getAll} without the Promise. + */ getAll(...args) { + var _a; + const all = Array.from(this._parsed.values()); + if (!args.length) { + return all; + } + const key = typeof args[0] === "string" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name; + return all.filter((c)=>c.name === key); + } + has(name) { + return this._parsed.has(name); + } + /** + * {@link https://wicg.github.io/cookie-store/#CookieStore-set CookieStore#set} without the Promise. + */ set(...args) { + const [name, value, cookie] = args.length === 1 ? [ + args[0].name, + args[0].value, + args[0] + ] : args; + const map = this._parsed; + map.set(name, normalizeCookie({ + name, + value, + ...cookie + })); + replace(map, this._headers); + return this; + } + /** + * {@link https://wicg.github.io/cookie-store/#CookieStore-delete CookieStore#delete} without the Promise. + */ delete(...args) { + const [name, options] = typeof args[0] === "string" ? [ + args[0] + ] : [ + args[0].name, + args[0] + ]; + return this.set({ + ...options, + name, + value: "", + expires: /* @__PURE__ */ new Date(0) + }); + } + [Symbol.for("edge-runtime.inspect.custom")]() { + return `ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`; + } + toString() { + return [ + ...this._parsed.values() + ].map(stringifyCookie).join("; "); + } +}; +function replace(bag, headers) { + headers.delete("set-cookie"); + for (const [, value] of bag){ + const serialized = stringifyCookie(value); + headers.append("set-cookie", serialized); + } +} +function normalizeCookie(cookie = { + name: "", + value: "" +}) { + if (typeof cookie.expires === "number") { + cookie.expires = new Date(cookie.expires); + } + if (cookie.maxAge) { + cookie.expires = new Date(Date.now() + cookie.maxAge * 1e3); + } + if (cookie.path === null || cookie.path === void 0) { + cookie.path = "/"; + } + return cookie; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + RequestCookies, + ResponseCookies, + parseCookie, + parseSetCookie, + stringifyCookie +}); +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/spec-extension/cookies.js [app-route] (ecmascript) ", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f40$edge$2d$runtime$2f$cookies$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js [app-route] (ecmascript)"); //# sourceMappingURL=cookies.js.map +; +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/spec-extension/request.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "INTERNALS", + ()=>INTERNALS, + "NextRequest", + ()=>NextRequest +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$next$2d$url$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/next-url.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/utils.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/error.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$cookies$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/spec-extension/cookies.js [app-route] (ecmascript) "); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f40$edge$2d$runtime$2f$cookies$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js [app-route] (ecmascript)"); +; +; +; +; +const INTERNALS = Symbol('internal request'); +class NextRequest extends Request { + constructor(input, init = {}){ + const url = typeof input !== 'string' && 'url' in input ? input.url : String(input); + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["validateURL"])(url); + // node Request instance requires duplex option when a body + // is present or it errors, we don't handle this for + // Request being passed in since it would have already + // errored if this wasn't configured + if ("TURBOPACK compile-time truthy", 1) { + if (init.body && init.duplex !== 'half') { + init.duplex = 'half'; + } + } + if (input instanceof Request) super(input, init); + else super(url, init); + const nextUrl = new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$next$2d$url$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextURL"](url, { + headers: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["toNodeOutgoingHttpHeaders"])(this.headers), + nextConfig: init.nextConfig + }); + this[INTERNALS] = { + cookies: new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f40$edge$2d$runtime$2f$cookies$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RequestCookies"](this.headers), + nextUrl, + url: ("TURBOPACK compile-time falsy", 0) ? "TURBOPACK unreachable" : nextUrl.toString() + }; + } + [Symbol.for('edge-runtime.inspect.custom')]() { + return { + cookies: this.cookies, + nextUrl: this.nextUrl, + url: this.url, + // rest of props come from Request + bodyUsed: this.bodyUsed, + cache: this.cache, + credentials: this.credentials, + destination: this.destination, + headers: Object.fromEntries(this.headers), + integrity: this.integrity, + keepalive: this.keepalive, + method: this.method, + mode: this.mode, + redirect: this.redirect, + referrer: this.referrer, + referrerPolicy: this.referrerPolicy, + signal: this.signal + }; + } + get cookies() { + return this[INTERNALS].cookies; + } + get nextUrl() { + return this[INTERNALS].nextUrl; + } + /** + * @deprecated + * `page` has been deprecated in favour of `URLPattern`. + * Read more: https://nextjs.org/docs/messages/middleware-request-page + */ get page() { + throw new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RemovedPageError"](); + } + /** + * @deprecated + * `ua` has been removed in favour of \`userAgent\` function. + * Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent + */ get ua() { + throw new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RemovedUAError"](); + } + get url() { + return this[INTERNALS].url; + } +} //# sourceMappingURL=request.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/base-http/helpers.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +/** + * This file provides some helpers that should be used in conjunction with + * explicit environment checks. When combined with the environment checks, it + * will ensure that the correct typings are used as well as enable code + * elimination. + */ /** + * Type guard to determine if a request is a WebNextRequest. This does not + * actually check the type of the request, but rather the runtime environment. + * It's expected that when the runtime environment is the edge runtime, that any + * base request is a WebNextRequest. + */ __turbopack_context__.s([ + "isNodeNextRequest", + ()=>isNodeNextRequest, + "isNodeNextResponse", + ()=>isNodeNextResponse, + "isWebNextRequest", + ()=>isWebNextRequest, + "isWebNextResponse", + ()=>isWebNextResponse +]); +const isWebNextRequest = (req)=>("TURBOPACK compile-time value", "nodejs") === 'edge'; +const isWebNextResponse = (res)=>("TURBOPACK compile-time value", "nodejs") === 'edge'; +const isNodeNextRequest = (req)=>("TURBOPACK compile-time value", "nodejs") !== 'edge'; +const isNodeNextResponse = (res)=>("TURBOPACK compile-time value", "nodejs") !== 'edge'; //# sourceMappingURL=helpers.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/spec-extension/adapters/next-request.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "NextRequestAdapter", + ()=>NextRequestAdapter, + "ResponseAborted", + ()=>ResponseAborted, + "ResponseAbortedName", + ()=>ResponseAbortedName, + "createAbortController", + ()=>createAbortController, + "signalFromNodeResponse", + ()=>signalFromNodeResponse +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/request-meta.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/utils.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$request$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/spec-extension/request.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/base-http/helpers.js [app-route] (ecmascript)"); +; +; +; +; +const ResponseAbortedName = 'ResponseAborted'; +class ResponseAborted extends Error { + constructor(...args){ + super(...args), this.name = ResponseAbortedName; + } +} +function createAbortController(response) { + const controller = new AbortController(); + // If `finish` fires first, then `res.end()` has been called and the close is + // just us finishing the stream on our side. If `close` fires first, then we + // know the client disconnected before we finished. + response.once('close', ()=>{ + if (response.writableFinished) return; + controller.abort(new ResponseAborted()); + }); + return controller; +} +function signalFromNodeResponse(response) { + const { errored, destroyed } = response; + if (errored || destroyed) { + return AbortSignal.abort(errored ?? new ResponseAborted()); + } + const { signal } = createAbortController(response); + return signal; +} +class NextRequestAdapter { + static fromBaseNextRequest(request, signal) { + if (// environment variable check provides dead code elimination. + ("TURBOPACK compile-time value", "nodejs") === 'edge' && (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["isWebNextRequest"])(request)) //TURBOPACK unreachable + ; + else if (// environment variable check provides dead code elimination. + ("TURBOPACK compile-time value", "nodejs") !== 'edge' && (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["isNodeNextRequest"])(request)) { + return NextRequestAdapter.fromNodeNextRequest(request, signal); + } else { + throw Object.defineProperty(new Error('Invariant: Unsupported NextRequest type'), "__NEXT_ERROR_CODE", { + value: "E345", + enumerable: false, + configurable: true + }); + } + } + static fromNodeNextRequest(request, signal) { + // HEAD and GET requests can not have a body. + let body = null; + if (request.method !== 'GET' && request.method !== 'HEAD' && request.body) { + // @ts-expect-error - this is handled by undici, when streams/web land use it instead + body = request.body; + } + let url; + if (request.url.startsWith('http')) { + url = new URL(request.url); + } else { + // Grab the full URL from the request metadata. + const base = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getRequestMeta"])(request, 'initURL'); + if (!base || !base.startsWith('http')) { + // Because the URL construction relies on the fact that the URL provided + // is absolute, we need to provide a base URL. We can't use the request + // URL because it's relative, so we use a dummy URL instead. + url = new URL(request.url, 'http://n'); + } else { + url = new URL(request.url, base); + } + } + return new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$request$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextRequest"](url, { + method: request.method, + headers: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["fromNodeOutgoingHttpHeaders"])(request.headers), + duplex: 'half', + signal, + // geo + // ip + // nextConfig + // body can not be passed if request was aborted + // or we get a Request body was disturbed error + ...signal.aborted ? {} : { + body + } + }); + } + static fromWebNextRequest(request) { + // HEAD and GET requests can not have a body. + let body = null; + if (request.method !== 'GET' && request.method !== 'HEAD') { + body = request.body; + } + return new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$request$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextRequest"](request.url, { + method: request.method, + headers: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["fromNodeOutgoingHttpHeaders"])(request.headers), + duplex: 'half', + signal: request.request.signal, + // geo + // ip + // nextConfig + // body can not be passed if request was aborted + // or we get a Request body was disturbed error + ...request.request.signal.aborted ? {} : { + body + } + }); + } +} //# sourceMappingURL=next-request.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/client-component-renderer-logger.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "getClientComponentLoaderMetrics", + ()=>getClientComponentLoaderMetrics, + "wrapClientComponentLoader", + ()=>wrapClientComponentLoader +]); +// Combined load times for loading client components +let clientComponentLoadStart = 0; +let clientComponentLoadTimes = 0; +let clientComponentLoadCount = 0; +function wrapClientComponentLoader(ComponentMod) { + if (!('performance' in globalThis)) { + return ComponentMod.__next_app__; + } + return { + require: (...args)=>{ + const startTime = performance.now(); + if (clientComponentLoadStart === 0) { + clientComponentLoadStart = startTime; + } + try { + clientComponentLoadCount += 1; + return ComponentMod.__next_app__.require(...args); + } finally{ + clientComponentLoadTimes += performance.now() - startTime; + } + }, + loadChunk: (...args)=>{ + const startTime = performance.now(); + const result = ComponentMod.__next_app__.loadChunk(...args); + // Avoid wrapping `loadChunk`'s result in an extra promise in case something like React depends on its identity. + // We only need to know when it's settled. + result.finally(()=>{ + clientComponentLoadTimes += performance.now() - startTime; + }); + return result; + } + }; +} +function getClientComponentLoaderMetrics(options = {}) { + const metrics = clientComponentLoadStart === 0 ? undefined : { + clientComponentLoadStart, + clientComponentLoadTimes, + clientComponentLoadCount + }; + if (options.reset) { + clientComponentLoadStart = 0; + clientComponentLoadTimes = 0; + clientComponentLoadCount = 0; + } + return metrics; +} //# sourceMappingURL=client-component-renderer-logger.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/pipe-readable.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "isAbortError", + ()=>isAbortError, + "pipeToNodeResponse", + ()=>pipeToNodeResponse +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$next$2d$request$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/spec-extension/adapters/next-request.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/detached-promise.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/trace/tracer.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/trace/constants.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$client$2d$component$2d$renderer$2d$logger$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/client-component-renderer-logger.js [app-route] (ecmascript)"); +; +; +; +; +; +function isAbortError(e) { + return (e == null ? void 0 : e.name) === 'AbortError' || (e == null ? void 0 : e.name) === __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$next$2d$request$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ResponseAbortedName"]; +} +function createWriterFromResponse(res, waitUntilForEnd) { + let started = false; + // Create a promise that will resolve once the response has drained. See + // https://nodejs.org/api/stream.html#stream_event_drain + let drained = new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["DetachedPromise"](); + function onDrain() { + drained.resolve(); + } + res.on('drain', onDrain); + // If the finish event fires, it means we shouldn't block and wait for the + // drain event. + res.once('close', ()=>{ + res.off('drain', onDrain); + drained.resolve(); + }); + // Create a promise that will resolve once the response has finished. See + // https://nodejs.org/api/http.html#event-finish_1 + const finished = new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["DetachedPromise"](); + res.once('finish', ()=>{ + finished.resolve(); + }); + // Create a writable stream that will write to the response. + return new WritableStream({ + write: async (chunk)=>{ + // You'd think we'd want to use `start` instead of placing this in `write` + // but this ensures that we don't actually flush the headers until we've + // started writing chunks. + if (!started) { + started = true; + if ('performance' in globalThis && process.env.NEXT_OTEL_PERFORMANCE_PREFIX) { + const metrics = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$client$2d$component$2d$renderer$2d$logger$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getClientComponentLoaderMetrics"])(); + if (metrics) { + performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-client-component-loading`, { + start: metrics.clientComponentLoadStart, + end: metrics.clientComponentLoadStart + metrics.clientComponentLoadTimes + }); + } + } + res.flushHeaders(); + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getTracer"])().trace(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextNodeServerSpan"].startResponse, { + spanName: 'start response' + }, ()=>undefined); + } + try { + const ok = res.write(chunk); + // Added by the `compression` middleware, this is a function that will + // flush the partially-compressed response to the client. + if ('flush' in res && typeof res.flush === 'function') { + res.flush(); + } + // If the write returns false, it means there's some backpressure, so + // wait until it's streamed before continuing. + if (!ok) { + await drained.promise; + // Reset the drained promise so that we can wait for the next drain event. + drained = new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["DetachedPromise"](); + } + } catch (err) { + res.end(); + throw Object.defineProperty(new Error('failed to write chunk to response', { + cause: err + }), "__NEXT_ERROR_CODE", { + value: "E321", + enumerable: false, + configurable: true + }); + } + }, + abort: (err)=>{ + if (res.writableFinished) return; + res.destroy(err); + }, + close: async ()=>{ + // if a waitUntil promise was passed, wait for it to resolve before + // ending the response. + if (waitUntilForEnd) { + await waitUntilForEnd; + } + if (res.writableFinished) return; + res.end(); + return finished.promise; + } + }); +} +async function pipeToNodeResponse(readable, res, waitUntilForEnd) { + try { + // If the response has already errored, then just return now. + const { errored, destroyed } = res; + if (errored || destroyed) return; + // Create a new AbortController so that we can abort the readable if the + // client disconnects. + const controller = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$next$2d$request$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["createAbortController"])(res); + const writer = createWriterFromResponse(res, waitUntilForEnd); + await readable.pipeTo(writer, { + signal: controller.signal + }); + } catch (err) { + // If this isn't related to an abort error, re-throw it. + if (isAbortError(err)) return; + throw Object.defineProperty(new Error('failed to pipe response', { + cause: err + }), "__NEXT_ERROR_CODE", { + value: "E180", + enumerable: false, + configurable: true + }); + } +} //# sourceMappingURL=pipe-readable.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/render-result.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "default", + ()=>RenderResult +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$node$2d$web$2d$streams$2d$helper$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/stream-utils/node-web-streams-helper.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$pipe$2d$readable$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/pipe-readable.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/invariant-error.js [app-route] (ecmascript)"); +; +; +; +class RenderResult { + static #_ = /** + * A render result that represents an empty response. This is used to + * represent a response that was not found or was already sent. + */ this.EMPTY = new RenderResult(null, { + metadata: {}, + contentType: null + }); + /** + * Creates a new RenderResult instance from a static response. + * + * @param value the static response value + * @param contentType the content type of the response + * @returns a new RenderResult instance + */ static fromStatic(value, contentType) { + return new RenderResult(value, { + metadata: {}, + contentType + }); + } + constructor(response, { contentType, waitUntil, metadata }){ + this.response = response; + this.contentType = contentType; + this.metadata = metadata; + this.waitUntil = waitUntil; + } + assignMetadata(metadata) { + Object.assign(this.metadata, metadata); + } + /** + * Returns true if the response is null. It can be null if the response was + * not found or was already sent. + */ get isNull() { + return this.response === null; + } + /** + * Returns false if the response is a string. It can be a string if the page + * was prerendered. If it's not, then it was generated dynamically. + */ get isDynamic() { + return typeof this.response !== 'string'; + } + toUnchunkedString(stream = false) { + if (this.response === null) { + // If the response is null, return an empty string. This behavior is + // intentional as we're now providing the `RenderResult.EMPTY` value. + return ''; + } + if (typeof this.response !== 'string') { + if (!stream) { + throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"]('dynamic responses cannot be unchunked. This is a bug in Next.js'), "__NEXT_ERROR_CODE", { + value: "E732", + enumerable: false, + configurable: true + }); + } + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$node$2d$web$2d$streams$2d$helper$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["streamToString"])(this.readable); + } + return this.response; + } + /** + * Returns a readable stream of the response. + */ get readable() { + if (this.response === null) { + // If the response is null, return an empty stream. This behavior is + // intentional as we're now providing the `RenderResult.EMPTY` value. + return new ReadableStream({ + start (controller) { + controller.close(); + } + }); + } + if (typeof this.response === 'string') { + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$node$2d$web$2d$streams$2d$helper$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["streamFromString"])(this.response); + } + if (Buffer.isBuffer(this.response)) { + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$node$2d$web$2d$streams$2d$helper$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["streamFromBuffer"])(this.response); + } + // If the response is an array of streams, then chain them together. + if (Array.isArray(this.response)) { + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$node$2d$web$2d$streams$2d$helper$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["chainStreams"])(...this.response); + } + return this.response; + } + /** + * Coerces the response to an array of streams. This will convert the response + * to an array of streams if it is not already one. + * + * @returns An array of streams + */ coerce() { + if (this.response === null) { + // If the response is null, return an empty stream. This behavior is + // intentional as we're now providing the `RenderResult.EMPTY` value. + return []; + } + if (typeof this.response === 'string') { + return [ + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$node$2d$web$2d$streams$2d$helper$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["streamFromString"])(this.response) + ]; + } else if (Array.isArray(this.response)) { + return this.response; + } else if (Buffer.isBuffer(this.response)) { + return [ + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$node$2d$web$2d$streams$2d$helper$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["streamFromBuffer"])(this.response) + ]; + } else { + return [ + this.response + ]; + } + } + /** + * Unshifts a new stream to the response. This will convert the response to an + * array of streams if it is not already one and will add the new stream to + * the start of the array. When this response is piped, all of the streams + * will be piped one after the other. + * + * @param readable The new stream to unshift + */ unshift(readable) { + // Coerce the response to an array of streams. + this.response = this.coerce(); + // Add the new stream to the start of the array. + this.response.unshift(readable); + } + /** + * Chains a new stream to the response. This will convert the response to an + * array of streams if it is not already one and will add the new stream to + * the end. When this response is piped, all of the streams will be piped + * one after the other. + * + * @param readable The new stream to chain + */ push(readable) { + // Coerce the response to an array of streams. + this.response = this.coerce(); + // Add the new stream to the end of the array. + this.response.push(readable); + } + /** + * Pipes the response to a writable stream. This will close/cancel the + * writable stream if an error is encountered. If this doesn't throw, then + * the writable stream will be closed or aborted. + * + * @param writable Writable stream to pipe the response to + */ async pipeTo(writable) { + try { + await this.readable.pipeTo(writable, { + // We want to close the writable stream ourselves so that we can wait + // for the waitUntil promise to resolve before closing it. If an error + // is encountered, we'll abort the writable stream if we swallowed the + // error. + preventClose: true + }); + // If there is a waitUntil promise, wait for it to resolve before + // closing the writable stream. + if (this.waitUntil) await this.waitUntil; + // Close the writable stream. + await writable.close(); + } catch (err) { + // If this is an abort error, we should abort the writable stream (as we + // took ownership of it when we started piping). We don't need to re-throw + // because we handled the error. + if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$pipe$2d$readable$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["isAbortError"])(err)) { + // Abort the writable stream if an error is encountered. + await writable.abort(err); + return; + } + // We're not aborting the writer here as when this method throws it's not + // clear as to how so the caller should assume it's their responsibility + // to clean up the writer. + throw err; + } + } + /** + * Pipes the response to a node response. This will close/cancel the node + * response if an error is encountered. + * + * @param res + */ async pipeToNodeResponse(res) { + await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$pipe$2d$readable$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["pipeToNodeResponse"])(this.readable, res, this.waitUntil); + } +} //# sourceMappingURL=render-result.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/response-cache/utils.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "fromResponseCacheEntry", + ()=>fromResponseCacheEntry, + "routeKindToIncrementalCacheKind", + ()=>routeKindToIncrementalCacheKind, + "toResponseCacheEntry", + ()=>toResponseCacheEntry +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/response-cache/types.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$render$2d$result$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/render-result.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/route-kind.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/constants.js [app-route] (ecmascript)"); +; +; +; +; +async function fromResponseCacheEntry(cacheEntry) { + var _cacheEntry_value, _cacheEntry_value1; + return { + ...cacheEntry, + value: ((_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) === __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].PAGES ? { + kind: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].PAGES, + html: await cacheEntry.value.html.toUnchunkedString(true), + pageData: cacheEntry.value.pageData, + headers: cacheEntry.value.headers, + status: cacheEntry.value.status + } : ((_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind) === __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].APP_PAGE ? { + kind: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].APP_PAGE, + html: await cacheEntry.value.html.toUnchunkedString(true), + postponed: cacheEntry.value.postponed, + rscData: cacheEntry.value.rscData, + headers: cacheEntry.value.headers, + status: cacheEntry.value.status, + segmentData: cacheEntry.value.segmentData + } : cacheEntry.value + }; +} +async function toResponseCacheEntry(response) { + var _response_value, _response_value1; + if (!response) return null; + return { + isMiss: response.isMiss, + isStale: response.isStale, + cacheControl: response.cacheControl, + value: ((_response_value = response.value) == null ? void 0 : _response_value.kind) === __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].PAGES ? { + kind: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].PAGES, + html: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$render$2d$result$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"].fromStatic(response.value.html, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["HTML_CONTENT_TYPE_HEADER"]), + pageData: response.value.pageData, + headers: response.value.headers, + status: response.value.status + } : ((_response_value1 = response.value) == null ? void 0 : _response_value1.kind) === __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].APP_PAGE ? { + kind: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].APP_PAGE, + html: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$render$2d$result$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"].fromStatic(response.value.html, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["HTML_CONTENT_TYPE_HEADER"]), + rscData: response.value.rscData, + headers: response.value.headers, + status: response.value.status, + postponed: response.value.postponed, + segmentData: response.value.segmentData + } : response.value + }; +} +function routeKindToIncrementalCacheKind(routeKind) { + switch(routeKind){ + case __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RouteKind"].PAGES: + return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["IncrementalCacheKind"].PAGES; + case __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RouteKind"].APP_PAGE: + return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["IncrementalCacheKind"].APP_PAGE; + case __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RouteKind"].IMAGE: + return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["IncrementalCacheKind"].IMAGE; + case __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RouteKind"].APP_ROUTE: + return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["IncrementalCacheKind"].APP_ROUTE; + case __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RouteKind"].PAGES_API: + // Pages Router API routes are not cached in the incremental cache. + throw Object.defineProperty(new Error(`Unexpected route kind ${routeKind}`), "__NEXT_ERROR_CODE", { + value: "E64", + enumerable: false, + configurable: true + }); + default: + return routeKind; + } +} //# sourceMappingURL=utils.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/response-cache/index.js [app-route] (ecmascript) ", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "default", + ()=>ResponseCache +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$batcher$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/batcher.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$lru$2d$cache$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/lru-cache.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$output$2f$log$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/build/output/log.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/scheduler.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/response-cache/utils.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/response-cache/types.js [app-route] (ecmascript)"); +; +; +; +; +; +/** + * Parses an environment variable as a positive integer, returning the fallback + * if the value is missing, not a number, or not positive. + */ function parsePositiveInt(envValue, fallback) { + if (!envValue) return fallback; + const parsed = parseInt(envValue, 10); + return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback; +} +/** + * Default TTL (in milliseconds) for minimal mode response cache entries. + * Used for cache hit validation as a fallback for providers that don't + * send the x-invocation-id header yet. + * + * 10 seconds chosen because: + * - Long enough to dedupe rapid successive requests (e.g., page + data) + * - Short enough to not serve stale data across unrelated requests + * + * Can be configured via `NEXT_PRIVATE_RESPONSE_CACHE_TTL` environment variable. + */ const DEFAULT_TTL_MS = parsePositiveInt(process.env.NEXT_PRIVATE_RESPONSE_CACHE_TTL, 10000); +/** + * Default maximum number of entries in the response cache. + * Can be configured via `NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE` environment variable. + */ const DEFAULT_MAX_SIZE = parsePositiveInt(process.env.NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE, 150); +/** + * Separator used in compound cache keys to join pathname and invocationID. + * Using null byte (\0) since it cannot appear in valid URL paths or UUIDs. + */ const KEY_SEPARATOR = '\0'; +/** + * Sentinel value used for TTL-based cache entries (when invocationID is undefined). + * Chosen to be a clearly reserved marker for internal cache keys. + */ const TTL_SENTINEL = '__ttl_sentinel__'; +/** + * Creates a compound cache key from pathname and invocationID. + */ function createCacheKey(pathname, invocationID) { + return `${pathname}${KEY_SEPARATOR}${invocationID ?? TTL_SENTINEL}`; +} +/** + * Extracts the invocationID from a compound cache key. + * Returns undefined if the key used TTL_SENTINEL. + */ function extractInvocationID(compoundKey) { + const separatorIndex = compoundKey.lastIndexOf(KEY_SEPARATOR); + if (separatorIndex === -1) return undefined; + const invocationID = compoundKey.slice(separatorIndex + 1); + return invocationID === TTL_SENTINEL ? undefined : invocationID; +} +; +class ResponseCache { + constructor(minimal_mode, maxSize = DEFAULT_MAX_SIZE, ttl = DEFAULT_TTL_MS){ + this.getBatcher = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$batcher$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["Batcher"].create({ + // Ensure on-demand revalidate doesn't block normal requests, it should be + // safe to run an on-demand revalidate for the same key as a normal request. + cacheKeyFn: ({ key, isOnDemandRevalidate })=>`${key}-${isOnDemandRevalidate ? '1' : '0'}`, + // We wait to do any async work until after we've added our promise to + // `pendingResponses` to ensure that any any other calls will reuse the + // same promise until we've fully finished our work. + schedulerFn: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["scheduleOnNextTick"] + }); + this.revalidateBatcher = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$batcher$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["Batcher"].create({ + // We wait to do any async work until after we've added our promise to + // `pendingResponses` to ensure that any any other calls will reuse the + // same promise until we've fully finished our work. + schedulerFn: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["scheduleOnNextTick"] + }); + /** + * Set of invocation IDs that have had cache entries evicted. + * Used to detect when the cache size may be too small. + * Bounded to prevent memory growth. + */ this.evictedInvocationIDs = new Set(); + this.minimal_mode = minimal_mode; + this.maxSize = maxSize; + this.ttl = ttl; + // Create the LRU cache with eviction tracking + this.cache = new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$lru$2d$cache$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["LRUCache"](maxSize, undefined, (compoundKey)=>{ + const invocationID = extractInvocationID(compoundKey); + if (invocationID) { + // Bound to 100 entries to prevent unbounded memory growth. + // FIFO eviction is acceptable here because: + // 1. Invocations are short-lived (single request lifecycle), so older + // invocations are unlikely to still be active after 100 newer ones + // 2. This warning mechanism is best-effort for developer guidance— + // missing occasional eviction warnings doesn't affect correctness + // 3. If a long-running invocation is somehow evicted and then has + // another cache entry evicted, it will simply be re-added + if (this.evictedInvocationIDs.size >= 100) { + const first = this.evictedInvocationIDs.values().next().value; + if (first) this.evictedInvocationIDs.delete(first); + } + this.evictedInvocationIDs.add(invocationID); + } + }); + } + /** + * Gets the response cache entry for the given key. + * + * @param key - The key to get the response cache entry for. + * @param responseGenerator - The response generator to use to generate the response cache entry. + * @param context - The context for the get request. + * @returns The response cache entry. + */ async get(key, responseGenerator, context) { + // If there is no key for the cache, we can't possibly look this up in the + // cache so just return the result of the response generator. + if (!key) { + return responseGenerator({ + hasResolved: false, + previousCacheEntry: null + }); + } + // Check minimal mode cache before doing any other work. + if (this.minimal_mode) { + const cacheKey = createCacheKey(key, context.invocationID); + const cachedItem = this.cache.get(cacheKey); + if (cachedItem) { + // With invocationID: exact match found - always a hit + // With TTL mode: must check expiration + if (context.invocationID !== undefined) { + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["toResponseCacheEntry"])(cachedItem.entry); + } + // TTL mode: check expiration + const now = Date.now(); + if (cachedItem.expiresAt > now) { + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["toResponseCacheEntry"])(cachedItem.entry); + } + // TTL expired - clean up + this.cache.remove(cacheKey); + } + // Warn if this invocation had entries evicted - indicates cache may be too small. + if (context.invocationID && this.evictedInvocationIDs.has(context.invocationID)) { + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$output$2f$log$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["warnOnce"])(`Response cache entry was evicted for invocation ${context.invocationID}. ` + `Consider increasing NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE (current: ${this.maxSize}).`); + } + } + const { incrementalCache, isOnDemandRevalidate = false, isFallback = false, isRoutePPREnabled = false, isPrefetch = false, waitUntil, routeKind, invocationID } = context; + const response = await this.getBatcher.batch({ + key, + isOnDemandRevalidate + }, ({ resolve })=>{ + const promise = this.handleGet(key, responseGenerator, { + incrementalCache, + isOnDemandRevalidate, + isFallback, + isRoutePPREnabled, + isPrefetch, + routeKind, + invocationID + }, resolve); + // We need to ensure background revalidates are passed to waitUntil. + if (waitUntil) waitUntil(promise); + return promise; + }); + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["toResponseCacheEntry"])(response); + } + /** + * Handles the get request for the response cache. + * + * @param key - The key to get the response cache entry for. + * @param responseGenerator - The response generator to use to generate the response cache entry. + * @param context - The context for the get request. + * @param resolve - The resolve function to use to resolve the response cache entry. + * @returns The response cache entry. + */ async handleGet(key, responseGenerator, context, resolve) { + let previousIncrementalCacheEntry = null; + let resolved = false; + try { + // Get the previous cache entry if not in minimal mode + previousIncrementalCacheEntry = !this.minimal_mode ? await context.incrementalCache.get(key, { + kind: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["routeKindToIncrementalCacheKind"])(context.routeKind), + isRoutePPREnabled: context.isRoutePPREnabled, + isFallback: context.isFallback + }) : null; + if (previousIncrementalCacheEntry && !context.isOnDemandRevalidate) { + resolve(previousIncrementalCacheEntry); + resolved = true; + if (!previousIncrementalCacheEntry.isStale || context.isPrefetch) { + // The cached value is still valid, so we don't need to update it yet. + return previousIncrementalCacheEntry; + } + } + // Revalidate the cache entry + const incrementalResponseCacheEntry = await this.revalidate(key, context.incrementalCache, context.isRoutePPREnabled, context.isFallback, responseGenerator, previousIncrementalCacheEntry, previousIncrementalCacheEntry !== null && !context.isOnDemandRevalidate, undefined, context.invocationID); + // Handle null response + if (!incrementalResponseCacheEntry) { + // Remove the cache item if it was set so we don't use it again. + if (this.minimal_mode) { + const cacheKey = createCacheKey(key, context.invocationID); + this.cache.remove(cacheKey); + } + return null; + } + // Resolve for on-demand revalidation or if not already resolved + if (context.isOnDemandRevalidate && !resolved) { + return incrementalResponseCacheEntry; + } + return incrementalResponseCacheEntry; + } catch (err) { + // If we've already resolved the cache entry, we can't reject as we + // already resolved the cache entry so log the error here. + if (resolved) { + console.error(err); + return null; + } + throw err; + } + } + /** + * Revalidates the cache entry for the given key. + * + * @param key - The key to revalidate the cache entry for. + * @param incrementalCache - The incremental cache to use to revalidate the cache entry. + * @param isRoutePPREnabled - Whether the route is PPR enabled. + * @param isFallback - Whether the route is a fallback. + * @param responseGenerator - The response generator to use to generate the response cache entry. + * @param previousIncrementalCacheEntry - The previous cache entry to use to revalidate the cache entry. + * @param hasResolved - Whether the response has been resolved. + * @param waitUntil - Optional function to register background work. + * @param invocationID - The invocation ID for cache key scoping. + * @returns The revalidated cache entry. + */ async revalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved, waitUntil, invocationID) { + return this.revalidateBatcher.batch(key, ()=>{ + const promise = this.handleRevalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved, invocationID); + // We need to ensure background revalidates are passed to waitUntil. + if (waitUntil) waitUntil(promise); + return promise; + }); + } + async handleRevalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved, invocationID) { + try { + // Generate the response cache entry using the response generator. + const responseCacheEntry = await responseGenerator({ + hasResolved, + previousCacheEntry: previousIncrementalCacheEntry, + isRevalidating: true + }); + if (!responseCacheEntry) { + return null; + } + // Convert the response cache entry to an incremental response cache entry. + const incrementalResponseCacheEntry = await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["fromResponseCacheEntry"])({ + ...responseCacheEntry, + isMiss: !previousIncrementalCacheEntry + }); + // We want to persist the result only if it has a cache control value + // defined. + if (incrementalResponseCacheEntry.cacheControl) { + if (this.minimal_mode) { + // Set TTL expiration for cache hit validation. Entries are validated + // by invocationID when available, with TTL as a fallback for providers + // that don't send x-invocation-id. Memory is managed by LRU eviction. + const cacheKey = createCacheKey(key, invocationID); + this.cache.set(cacheKey, { + entry: incrementalResponseCacheEntry, + expiresAt: Date.now() + this.ttl + }); + } else { + await incrementalCache.set(key, incrementalResponseCacheEntry.value, { + cacheControl: incrementalResponseCacheEntry.cacheControl, + isRoutePPREnabled, + isFallback + }); + } + } + return incrementalResponseCacheEntry; + } catch (err) { + // When a path is erroring we automatically re-set the existing cache + // with new revalidate and expire times to prevent non-stop retrying. + if (previousIncrementalCacheEntry == null ? void 0 : previousIncrementalCacheEntry.cacheControl) { + const revalidate = Math.min(Math.max(previousIncrementalCacheEntry.cacheControl.revalidate || 3, 3), 30); + const expire = previousIncrementalCacheEntry.cacheControl.expire === undefined ? undefined : Math.max(revalidate + 3, previousIncrementalCacheEntry.cacheControl.expire); + await incrementalCache.set(key, previousIncrementalCacheEntry.value, { + cacheControl: { + revalidate: revalidate, + expire: expire + }, + isRoutePPREnabled, + isFallback + }); + } + // We haven't resolved yet, so let's throw to indicate an error. + throw err; + } + } +} //# sourceMappingURL=index.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/promise-with-resolvers.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "createPromiseWithResolvers", + ()=>createPromiseWithResolvers +]); +function createPromiseWithResolvers() { + // Shim of Stage 4 Promise.withResolvers proposal + let resolve; + let reject; + const promise = new Promise((res, rej)=>{ + resolve = res; + reject = rej; + }); + return { + resolve: resolve, + reject: reject, + promise + }; +} //# sourceMappingURL=promise-with-resolvers.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/app-render/staged-rendering.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "RenderStage", + ()=>RenderStage, + "StagedRenderingController", + ()=>StagedRenderingController +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/invariant-error.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$promise$2d$with$2d$resolvers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/promise-with-resolvers.js [app-route] (ecmascript)"); +; +; +var RenderStage = /*#__PURE__*/ function(RenderStage) { + RenderStage[RenderStage["Before"] = 1] = "Before"; + RenderStage[RenderStage["Static"] = 2] = "Static"; + RenderStage[RenderStage["Runtime"] = 3] = "Runtime"; + RenderStage[RenderStage["Dynamic"] = 4] = "Dynamic"; + RenderStage[RenderStage["Abandoned"] = 5] = "Abandoned"; + return RenderStage; +}({}); +class StagedRenderingController { + constructor(abortSignal = null, hasRuntimePrefetch){ + this.abortSignal = abortSignal; + this.hasRuntimePrefetch = hasRuntimePrefetch; + this.currentStage = 1; + this.staticInterruptReason = null; + this.runtimeInterruptReason = null; + this.staticStageEndTime = Infinity; + this.runtimeStageEndTime = Infinity; + this.runtimeStageListeners = []; + this.dynamicStageListeners = []; + this.runtimeStagePromise = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$promise$2d$with$2d$resolvers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["createPromiseWithResolvers"])(); + this.dynamicStagePromise = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$promise$2d$with$2d$resolvers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["createPromiseWithResolvers"])(); + this.mayAbandon = false; + if (abortSignal) { + abortSignal.addEventListener('abort', ()=>{ + const { reason } = abortSignal; + if (this.currentStage < 3) { + this.runtimeStagePromise.promise.catch(ignoreReject) // avoid unhandled rejections + ; + this.runtimeStagePromise.reject(reason); + } + if (this.currentStage < 4 || this.currentStage === 5) { + this.dynamicStagePromise.promise.catch(ignoreReject) // avoid unhandled rejections + ; + this.dynamicStagePromise.reject(reason); + } + }, { + once: true + }); + this.mayAbandon = true; + } + } + onStage(stage, callback) { + if (this.currentStage >= stage) { + callback(); + } else if (stage === 3) { + this.runtimeStageListeners.push(callback); + } else if (stage === 4) { + this.dynamicStageListeners.push(callback); + } else { + // This should never happen + throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`Invalid render stage: ${stage}`), "__NEXT_ERROR_CODE", { + value: "E881", + enumerable: false, + configurable: true + }); + } + } + canSyncInterrupt() { + // If we haven't started the render yet, it can't be interrupted. + if (this.currentStage === 1) { + return false; + } + const boundaryStage = this.hasRuntimePrefetch ? 4 : 3; + return this.currentStage < boundaryStage; + } + syncInterruptCurrentStageWithReason(reason) { + if (this.currentStage === 1) { + return; + } + // If Sync IO occurs during the initial (abandonable) render, we'll retry it, + // so we want a slightly different flow. + // See the implementation of `abandonRenderImpl` for more explanation. + if (this.mayAbandon) { + return this.abandonRenderImpl(); + } + // If we're in the final render, we cannot abandon it. We need to advance to the Dynamic stage + // and capture the interruption reason. + switch(this.currentStage){ + case 2: + { + this.staticInterruptReason = reason; + this.advanceStage(4); + return; + } + case 3: + { + // We only error for Sync IO in the runtime stage if the route + // is configured to use runtime prefetching. + // We do this to reflect the fact that during a runtime prefetch, + // Sync IO aborts aborts the render. + // Note that `canSyncInterrupt` should prevent us from getting here at all + // if runtime prefetching isn't enabled. + if (this.hasRuntimePrefetch) { + this.runtimeInterruptReason = reason; + this.advanceStage(4); + } + return; + } + case 4: + case 5: + default: + } + } + getStaticInterruptReason() { + return this.staticInterruptReason; + } + getRuntimeInterruptReason() { + return this.runtimeInterruptReason; + } + getStaticStageEndTime() { + return this.staticStageEndTime; + } + getRuntimeStageEndTime() { + return this.runtimeStageEndTime; + } + abandonRender() { + if (!this.mayAbandon) { + throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"]('`abandonRender` called on a stage controller that cannot be abandoned.'), "__NEXT_ERROR_CODE", { + value: "E938", + enumerable: false, + configurable: true + }); + } + this.abandonRenderImpl(); + } + abandonRenderImpl() { + // In staged rendering, only the initial render is abandonable. + // We can abandon the initial render if + // 1. We notice a cache miss, and need to wait for caches to fill + // 2. A sync IO error occurs, and the render should be interrupted + // (this might be a lazy intitialization of a module, + // so we still want to restart in this case and see if it still occurs) + // In either case, we'll be doing another render after this one, + // so we only want to unblock the Runtime stage, not Dynamic, because + // unblocking the dynamic stage would likely lead to wasted (uncached) IO. + const { currentStage } = this; + switch(currentStage){ + case 2: + { + this.currentStage = 5; + this.resolveRuntimeStage(); + return; + } + case 3: + { + this.currentStage = 5; + return; + } + case 4: + case 1: + case 5: + break; + default: + { + currentStage; + } + } + } + advanceStage(stage) { + // If we're already at the target stage or beyond, do nothing. + // (this can happen e.g. if sync IO advanced us to the dynamic stage) + if (stage <= this.currentStage) { + return; + } + let currentStage = this.currentStage; + this.currentStage = stage; + if (currentStage < 3 && stage >= 3) { + this.staticStageEndTime = performance.now() + performance.timeOrigin; + this.resolveRuntimeStage(); + } + if (currentStage < 4 && stage >= 4) { + this.runtimeStageEndTime = performance.now() + performance.timeOrigin; + this.resolveDynamicStage(); + return; + } + } + /** Fire the `onStage` listeners for the runtime stage and unblock any promises waiting for it. */ resolveRuntimeStage() { + const runtimeListeners = this.runtimeStageListeners; + for(let i = 0; i < runtimeListeners.length; i++){ + runtimeListeners[i](); + } + runtimeListeners.length = 0; + this.runtimeStagePromise.resolve(); + } + /** Fire the `onStage` listeners for the dynamic stage and unblock any promises waiting for it. */ resolveDynamicStage() { + const dynamicListeners = this.dynamicStageListeners; + for(let i = 0; i < dynamicListeners.length; i++){ + dynamicListeners[i](); + } + dynamicListeners.length = 0; + this.dynamicStagePromise.resolve(); + } + getStagePromise(stage) { + switch(stage){ + case 3: + { + return this.runtimeStagePromise.promise; + } + case 4: + { + return this.dynamicStagePromise.promise; + } + default: + { + stage; + throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`Invalid render stage: ${stage}`), "__NEXT_ERROR_CODE", { + value: "E881", + enumerable: false, + configurable: true + }); + } + } + } + waitForStage(stage) { + return this.getStagePromise(stage); + } + delayUntilStage(stage, displayName, resolvedValue) { + const ioTriggerPromise = this.getStagePromise(stage); + const promise = makeDevtoolsIOPromiseFromIOTrigger(ioTriggerPromise, displayName, resolvedValue); + // Analogously to `makeHangingPromise`, we might reject this promise if the signal is invoked. + // (e.g. in the case where we don't want want the render to proceed to the dynamic stage and abort it). + // We shouldn't consider this an unhandled rejection, so we attach a noop catch handler here to suppress this warning. + if (this.abortSignal) { + promise.catch(ignoreReject); + } + return promise; + } +} +function ignoreReject() {} +// TODO(restart-on-cache-miss): the layering of `delayUntilStage`, +// `makeDevtoolsIOPromiseFromIOTrigger` and and `makeDevtoolsIOAwarePromise` +// is confusing, we should clean it up. +function makeDevtoolsIOPromiseFromIOTrigger(ioTrigger, displayName, resolvedValue) { + // If we create a `new Promise` and give it a displayName + // (with no userspace code above us in the stack) + // React Devtools will use it as the IO cause when determining "suspended by". + // In particular, it should shadow any inner IO that resolved/rejected the promise + // (in case of staged rendering, this will be the `setTimeout` that triggers the relevant stage) + const promise = new Promise((resolve, reject)=>{ + ioTrigger.then(resolve.bind(null, resolvedValue), reject); + }); + if (displayName !== undefined) { + // @ts-expect-error + promise.displayName = displayName; + } + return promise; +} //# sourceMappingURL=staged-rendering.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/patch-fetch.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "NEXT_PATCH_SYMBOL", + ()=>NEXT_PATCH_SYMBOL, + "createPatchedFetcher", + ()=>createPatchedFetcher, + "patchFetch", + ()=>patchFetch, + "validateRevalidate", + ()=>validateRevalidate, + "validateTags", + ()=>validateTags +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/trace/constants.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/trace/tracer.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/constants.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$dynamic$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/app-render/dynamic-rendering.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/dynamic-rendering-utils.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$dedupe$2d$fetch$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/dedupe-fetch.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__ = __turbopack_context__.i("[externals]/next/dist/server/app-render/work-unit-async-storage.external.js [external] (next/dist/server/app-render/work-unit-async-storage.external.js, cjs)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/response-cache/index.js [app-route] (ecmascript) "); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/response-cache/types.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$clone$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/clone-response.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$staged$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/app-render/staged-rendering.js [app-route] (ecmascript)"); +; +; +; +; +; +; +; +; +; +; +const isEdgeRuntime = ("TURBOPACK compile-time value", "nodejs") === 'edge'; +const NEXT_PATCH_SYMBOL = Symbol.for('next-patch'); +function isFetchPatched() { + return globalThis[NEXT_PATCH_SYMBOL] === true; +} +function validateRevalidate(revalidateVal, route) { + try { + let normalizedRevalidate = undefined; + if (revalidateVal === false) { + normalizedRevalidate = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["INFINITE_CACHE"]; + } else if (typeof revalidateVal === 'number' && !isNaN(revalidateVal) && revalidateVal > -1) { + normalizedRevalidate = revalidateVal; + } else if (typeof revalidateVal !== 'undefined') { + throw Object.defineProperty(new Error(`Invalid revalidate value "${revalidateVal}" on "${route}", must be a non-negative number or false`), "__NEXT_ERROR_CODE", { + value: "E179", + enumerable: false, + configurable: true + }); + } + return normalizedRevalidate; + } catch (err) { + // handle client component error from attempting to check revalidate value + if (err instanceof Error && err.message.includes('Invalid revalidate')) { + throw err; + } + return undefined; + } +} +function validateTags(tags, description) { + const validTags = []; + const invalidTags = []; + for(let i = 0; i < tags.length; i++){ + const tag = tags[i]; + if (typeof tag !== 'string') { + invalidTags.push({ + tag, + reason: 'invalid type, must be a string' + }); + } else if (tag.length > __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_CACHE_TAG_MAX_LENGTH"]) { + invalidTags.push({ + tag, + reason: `exceeded max length of ${__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_CACHE_TAG_MAX_LENGTH"]}` + }); + } else { + validTags.push(tag); + } + if (validTags.length > __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_CACHE_TAG_MAX_ITEMS"]) { + console.warn(`Warning: exceeded max tag count for ${description}, dropped tags:`, tags.slice(i).join(', ')); + break; + } + } + if (invalidTags.length > 0) { + console.warn(`Warning: invalid tags passed to ${description}: `); + for (const { tag, reason } of invalidTags){ + console.log(`tag: "${tag}" ${reason}`); + } + } + return validTags; +} +function trackFetchMetric(workStore, ctx) { + if (!workStore.shouldTrackFetchMetrics) { + return; + } + workStore.fetchMetrics ??= []; + workStore.fetchMetrics.push({ + ...ctx, + end: performance.timeOrigin + performance.now(), + idx: workStore.nextFetchId || 0 + }); +} +async function createCachedPrerenderResponse(res, cacheKey, incrementalCacheContext, incrementalCache, revalidate, handleUnlock) { + // We are prerendering at build time or revalidate time with cacheComponents so we + // need to buffer the response so we can guarantee it can be read in a + // microtask. + const bodyBuffer = await res.arrayBuffer(); + const fetchedData = { + headers: Object.fromEntries(res.headers.entries()), + body: Buffer.from(bodyBuffer).toString('base64'), + status: res.status, + url: res.url + }; + // We can skip setting the serverComponentsHmrCache because we aren't in dev + // mode. + if (incrementalCacheContext) { + await incrementalCache.set(cacheKey, { + kind: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].FETCH, + data: fetchedData, + revalidate + }, incrementalCacheContext); + } + await handleUnlock(); + // We return a new Response to the caller. + return new Response(bodyBuffer, { + headers: res.headers, + status: res.status, + statusText: res.statusText + }); +} +async function createCachedDynamicResponse(workStore, res, cacheKey, incrementalCacheContext, incrementalCache, serverComponentsHmrCache, revalidate, input, handleUnlock) { + // We're cloning the response using this utility because there exists a bug in + // the undici library around response cloning. See the following pull request + // for more details: https://github.com/vercel/next.js/pull/73274 + const [cloned1, cloned2] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$clone$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["cloneResponse"])(res); + // We are dynamically rendering including dev mode. We want to return the + // response to the caller as soon as possible because it might stream over a + // very long time. + const cacheSetPromise = cloned1.arrayBuffer().then(async (arrayBuffer)=>{ + const bodyBuffer = Buffer.from(arrayBuffer); + const fetchedData = { + headers: Object.fromEntries(cloned1.headers.entries()), + body: bodyBuffer.toString('base64'), + status: cloned1.status, + url: cloned1.url + }; + serverComponentsHmrCache == null ? void 0 : serverComponentsHmrCache.set(cacheKey, fetchedData); + if (incrementalCacheContext) { + await incrementalCache.set(cacheKey, { + kind: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].FETCH, + data: fetchedData, + revalidate + }, incrementalCacheContext); + } + }).catch((error)=>console.warn(`Failed to set fetch cache`, input, error)).finally(handleUnlock); + const pendingRevalidateKey = `cache-set-${cacheKey}`; + const pendingRevalidates = workStore.pendingRevalidates ??= {}; + let pendingRevalidatePromise = Promise.resolve(); + if (pendingRevalidateKey in pendingRevalidates) { + // There is already a pending revalidate entry that we need to await to + // avoid race conditions. + pendingRevalidatePromise = pendingRevalidates[pendingRevalidateKey]; + } + pendingRevalidates[pendingRevalidateKey] = pendingRevalidatePromise.then(()=>cacheSetPromise).finally(()=>{ + // If the pending revalidate is not present in the store, then we have + // nothing to delete. + if (!(pendingRevalidates == null ? void 0 : pendingRevalidates[pendingRevalidateKey])) { + return; + } + delete pendingRevalidates[pendingRevalidateKey]; + }); + return cloned2; +} +function createPatchedFetcher(originFetch, { workAsyncStorage, workUnitAsyncStorage }) { + // Create the patched fetch function. + const patched = async function fetch(input, init) { + var _init_method, _init_next; + let url; + try { + url = new URL(input instanceof Request ? input.url : input); + url.username = ''; + url.password = ''; + } catch { + // Error caused by malformed URL should be handled by native fetch + url = undefined; + } + const fetchUrl = (url == null ? void 0 : url.href) ?? ''; + const method = (init == null ? void 0 : (_init_method = init.method) == null ? void 0 : _init_method.toUpperCase()) || 'GET'; + // Do create a new span trace for internal fetches in the + // non-verbose mode. + const isInternal = (init == null ? void 0 : (_init_next = init.next) == null ? void 0 : _init_next.internal) === true; + const hideSpan = process.env.NEXT_OTEL_FETCH_DISABLED === '1'; + // We don't track fetch metrics for internal fetches + // so it's not critical that we have a start time, as it won't be recorded. + // This is to workaround a flaky issue where performance APIs might + // not be available and will require follow-up investigation. + const fetchStart = isInternal ? undefined : performance.timeOrigin + performance.now(); + const workStore = workAsyncStorage.getStore(); + const workUnitStore = workUnitAsyncStorage.getStore(); + let cacheSignal = workUnitStore ? (0, __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$unit$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["getCacheSignal"])(workUnitStore) : null; + if (cacheSignal) { + cacheSignal.beginRead(); + } + const result = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getTracer"])().trace(isInternal ? __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextNodeServerSpan"].internalFetch : __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["AppRenderSpan"].fetch, { + hideSpan, + kind: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["SpanKind"].CLIENT, + spanName: [ + 'fetch', + method, + fetchUrl + ].filter(Boolean).join(' '), + attributes: { + 'http.url': fetchUrl, + 'http.method': method, + 'net.peer.name': url == null ? void 0 : url.hostname, + 'net.peer.port': (url == null ? void 0 : url.port) || undefined + } + }, async ()=>{ + var _getRequestMeta; + // If this is an internal fetch, we should not do any special treatment. + if (isInternal) { + return originFetch(input, init); + } + // If the workStore is not available, we can't do any + // special treatment of fetch, therefore fallback to the original + // fetch implementation. + if (!workStore) { + return originFetch(input, init); + } + // We should also fallback to the original fetch implementation if we + // are in draft mode, it does not constitute a static generation. + if (workStore.isDraftMode) { + return originFetch(input, init); + } + const isRequestInput = input && typeof input === 'object' && typeof input.method === 'string'; + const getRequestMeta = (field)=>{ + // If request input is present but init is not, retrieve from input first. + const value = init == null ? void 0 : init[field]; + return value || (isRequestInput ? input[field] : null); + }; + let finalRevalidate = undefined; + const getNextField = (field)=>{ + var _init_next, _init_next1, _input_next; + return typeof (init == null ? void 0 : (_init_next = init.next) == null ? void 0 : _init_next[field]) !== 'undefined' ? init == null ? void 0 : (_init_next1 = init.next) == null ? void 0 : _init_next1[field] : isRequestInput ? (_input_next = input.next) == null ? void 0 : _input_next[field] : undefined; + }; + // RequestInit doesn't keep extra fields e.g. next so it's + // only available if init is used separate + const originalFetchRevalidate = getNextField('revalidate'); + let currentFetchRevalidate = originalFetchRevalidate; + const tags = validateTags(getNextField('tags') || [], `fetch ${input.toString()}`); + let revalidateStore; + if (workUnitStore) { + switch(workUnitStore.type){ + case 'prerender': + case 'prerender-runtime': + // TODO: Stop accumulating tags in client prerender. (fallthrough) + case 'prerender-client': + case 'prerender-ppr': + case 'prerender-legacy': + case 'cache': + case 'private-cache': + revalidateStore = workUnitStore; + break; + case 'request': + case 'unstable-cache': + break; + default: + workUnitStore; + } + } + if (revalidateStore) { + if (Array.isArray(tags)) { + // Collect tags onto parent caches or parent prerenders. + const collectedTags = revalidateStore.tags ?? (revalidateStore.tags = []); + for (const tag of tags){ + if (!collectedTags.includes(tag)) { + collectedTags.push(tag); + } + } + } + } + const implicitTags = workUnitStore == null ? void 0 : workUnitStore.implicitTags; + let pageFetchCacheMode = workStore.fetchCache; + if (workUnitStore) { + switch(workUnitStore.type){ + case 'unstable-cache': + // Inside unstable-cache we treat it the same as force-no-store on + // the page. + pageFetchCacheMode = 'force-no-store'; + break; + case 'prerender': + case 'prerender-client': + case 'prerender-runtime': + case 'prerender-ppr': + case 'prerender-legacy': + case 'request': + case 'cache': + case 'private-cache': + break; + default: + workUnitStore; + } + } + const isUsingNoStore = !!workStore.isUnstableNoStore; + let currentFetchCacheConfig = getRequestMeta('cache'); + let cacheReason = ''; + let cacheWarning; + if (typeof currentFetchCacheConfig === 'string' && typeof currentFetchRevalidate !== 'undefined') { + // If the revalidate value conflicts with the cache value, we should warn the user and unset the conflicting values. + const isConflictingRevalidate = currentFetchCacheConfig === 'force-cache' && currentFetchRevalidate === 0 || // revalidate: >0 or revalidate: false and cache: no-store + currentFetchCacheConfig === 'no-store' && (currentFetchRevalidate > 0 || currentFetchRevalidate === false); + if (isConflictingRevalidate) { + cacheWarning = `Specified "cache: ${currentFetchCacheConfig}" and "revalidate: ${currentFetchRevalidate}", only one should be specified.`; + currentFetchCacheConfig = undefined; + currentFetchRevalidate = undefined; + } + } + const hasExplicitFetchCacheOptOut = currentFetchCacheConfig === 'no-cache' || currentFetchCacheConfig === 'no-store' || // the fetch isn't explicitly caching and the segment level cache config signals not to cache + // note: `pageFetchCacheMode` is also set by being in an unstable_cache context. + pageFetchCacheMode === 'force-no-store' || pageFetchCacheMode === 'only-no-store'; + // If no explicit fetch cache mode is set, but dynamic = `force-dynamic` is set, + // we shouldn't consider caching the fetch. This is because the `dynamic` cache + // is considered a "top-level" cache mode, whereas something like `fetchCache` is more + // fine-grained. Top-level modes are responsible for setting reasonable defaults for the + // other configurations. + const noFetchConfigAndForceDynamic = !pageFetchCacheMode && !currentFetchCacheConfig && !currentFetchRevalidate && workStore.forceDynamic; + if (// which will signal the cache to not revalidate + currentFetchCacheConfig === 'force-cache' && typeof currentFetchRevalidate === 'undefined') { + currentFetchRevalidate = false; + } else if (hasExplicitFetchCacheOptOut || noFetchConfigAndForceDynamic) { + currentFetchRevalidate = 0; + } + if (currentFetchCacheConfig === 'no-cache' || currentFetchCacheConfig === 'no-store') { + cacheReason = `cache: ${currentFetchCacheConfig}`; + } + finalRevalidate = validateRevalidate(currentFetchRevalidate, workStore.route); + const _headers = getRequestMeta('headers'); + const initHeaders = typeof (_headers == null ? void 0 : _headers.get) === 'function' ? _headers : new Headers(_headers || {}); + const hasUnCacheableHeader = initHeaders.get('authorization') || initHeaders.get('cookie'); + const isUnCacheableMethod = ![ + 'get', + 'head' + ].includes(((_getRequestMeta = getRequestMeta('method')) == null ? void 0 : _getRequestMeta.toLowerCase()) || 'get'); + /** + * We automatically disable fetch caching under the following conditions: + * - Fetch cache configs are not set. Specifically: + * - A page fetch cache mode is not set (export const fetchCache=...) + * - A fetch cache mode is not set in the fetch call (fetch(url, { cache: ... })) + * or the fetch cache mode is set to 'default' + * - A fetch revalidate value is not set in the fetch call (fetch(url, { revalidate: ... })) + * - OR the fetch comes after a configuration that triggered dynamic rendering (e.g., reading cookies()) + * and the fetch was considered uncacheable (e.g., POST method or has authorization headers) + */ const hasNoExplicitCacheConfig = pageFetchCacheMode == undefined && // eslint-disable-next-line eqeqeq + (currentFetchCacheConfig == undefined || // when considering whether to opt into the default "no-cache" fetch semantics, + // a "default" cache config should be treated the same as no cache config + currentFetchCacheConfig === 'default') && // eslint-disable-next-line eqeqeq + currentFetchRevalidate == undefined; + let autoNoCache = Boolean((hasUnCacheableHeader || isUnCacheableMethod) && (revalidateStore == null ? void 0 : revalidateStore.revalidate) === 0); + let isImplicitBuildTimeCache = false; + if (!autoNoCache && hasNoExplicitCacheConfig) { + // We don't enable automatic no-cache behavior during build-time + // prerendering so that we can still leverage the fetch cache between + // export workers. + if (workStore.isBuildTimePrerendering) { + isImplicitBuildTimeCache = true; + } else { + autoNoCache = true; + } + } + // If we have no cache config, and we're in Dynamic I/O prerendering, + // it'll be a dynamic call. We don't have to issue that dynamic call. + if (hasNoExplicitCacheConfig && workUnitStore !== undefined) { + switch(workUnitStore.type){ + case 'prerender': + case 'prerender-runtime': + // While we don't want to do caching in the client scope we know the + // fetch will be dynamic for cacheComponents so we may as well avoid the + // call here. (fallthrough) + case 'prerender-client': + if (cacheSignal) { + cacheSignal.endRead(); + cacheSignal = null; + } + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["makeHangingPromise"])(workUnitStore.renderSignal, workStore.route, 'fetch()'); + case 'request': + if (("TURBOPACK compile-time value", "development") === 'development' && workUnitStore.stagedRendering) { + if (cacheSignal) { + cacheSignal.endRead(); + cacheSignal = null; + } + await workUnitStore.stagedRendering.waitForStage(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$staged$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RenderStage"].Dynamic); + } + break; + case 'prerender-ppr': + case 'prerender-legacy': + case 'cache': + case 'private-cache': + case 'unstable-cache': + break; + default: + workUnitStore; + } + } + switch(pageFetchCacheMode){ + case 'force-no-store': + { + cacheReason = 'fetchCache = force-no-store'; + break; + } + case 'only-no-store': + { + if (currentFetchCacheConfig === 'force-cache' || typeof finalRevalidate !== 'undefined' && finalRevalidate > 0) { + throw Object.defineProperty(new Error(`cache: 'force-cache' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-no-store'`), "__NEXT_ERROR_CODE", { + value: "E448", + enumerable: false, + configurable: true + }); + } + cacheReason = 'fetchCache = only-no-store'; + break; + } + case 'only-cache': + { + if (currentFetchCacheConfig === 'no-store') { + throw Object.defineProperty(new Error(`cache: 'no-store' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-cache'`), "__NEXT_ERROR_CODE", { + value: "E521", + enumerable: false, + configurable: true + }); + } + break; + } + case 'force-cache': + { + if (typeof currentFetchRevalidate === 'undefined' || currentFetchRevalidate === 0) { + cacheReason = 'fetchCache = force-cache'; + finalRevalidate = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["INFINITE_CACHE"]; + } + break; + } + case 'default-cache': + case 'default-no-store': + case 'auto': + case undefined: + break; + default: + pageFetchCacheMode; + } + if (typeof finalRevalidate === 'undefined') { + if (pageFetchCacheMode === 'default-cache' && !isUsingNoStore) { + finalRevalidate = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["INFINITE_CACHE"]; + cacheReason = 'fetchCache = default-cache'; + } else if (pageFetchCacheMode === 'default-no-store') { + finalRevalidate = 0; + cacheReason = 'fetchCache = default-no-store'; + } else if (isUsingNoStore) { + finalRevalidate = 0; + cacheReason = 'noStore call'; + } else if (autoNoCache) { + finalRevalidate = 0; + cacheReason = 'auto no cache'; + } else { + // TODO: should we consider this case an invariant? + cacheReason = 'auto cache'; + finalRevalidate = revalidateStore ? revalidateStore.revalidate : __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["INFINITE_CACHE"]; + } + } else if (!cacheReason) { + cacheReason = `revalidate: ${finalRevalidate}`; + } + if (// `revalidate: 0` values + !(workStore.forceStatic && finalRevalidate === 0) && // we don't consider autoNoCache to switch to dynamic for ISR + !autoNoCache && // If the revalidate value isn't currently set or the value is less + // than the current revalidate value, we should update the revalidate + // value. + revalidateStore && finalRevalidate < revalidateStore.revalidate) { + // If we were setting the revalidate value to 0, we should try to + // postpone instead first. + if (finalRevalidate === 0) { + if (workUnitStore) { + switch(workUnitStore.type){ + case 'prerender': + case 'prerender-client': + case 'prerender-runtime': + if (cacheSignal) { + cacheSignal.endRead(); + cacheSignal = null; + } + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["makeHangingPromise"])(workUnitStore.renderSignal, workStore.route, 'fetch()'); + case 'request': + if (("TURBOPACK compile-time value", "development") === 'development' && workUnitStore.stagedRendering) { + if (cacheSignal) { + cacheSignal.endRead(); + cacheSignal = null; + } + await workUnitStore.stagedRendering.waitForStage(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$staged$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RenderStage"].Dynamic); + } + break; + case 'prerender-ppr': + case 'prerender-legacy': + case 'cache': + case 'private-cache': + case 'unstable-cache': + break; + default: + workUnitStore; + } + } + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$dynamic$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["markCurrentScopeAsDynamic"])(workStore, workUnitStore, `revalidate: 0 fetch ${input} ${workStore.route}`); + } + // We only want to set the revalidate store's revalidate time if it + // was explicitly set for the fetch call, i.e. + // originalFetchRevalidate. + if (revalidateStore && originalFetchRevalidate === finalRevalidate) { + revalidateStore.revalidate = finalRevalidate; + } + } + const isCacheableRevalidate = typeof finalRevalidate === 'number' && finalRevalidate > 0; + let cacheKey; + const { incrementalCache } = workStore; + let isHmrRefresh = false; + let serverComponentsHmrCache; + if (workUnitStore) { + switch(workUnitStore.type){ + case 'request': + case 'cache': + case 'private-cache': + isHmrRefresh = workUnitStore.isHmrRefresh ?? false; + serverComponentsHmrCache = workUnitStore.serverComponentsHmrCache; + break; + case 'prerender': + case 'prerender-client': + case 'prerender-runtime': + case 'prerender-ppr': + case 'prerender-legacy': + case 'unstable-cache': + break; + default: + workUnitStore; + } + } + if (incrementalCache && (isCacheableRevalidate || serverComponentsHmrCache)) { + try { + cacheKey = await incrementalCache.generateCacheKey(fetchUrl, isRequestInput ? input : init); + } catch (err) { + console.error(`Failed to generate cache key for`, input); + } + } + const fetchIdx = workStore.nextFetchId ?? 1; + workStore.nextFetchId = fetchIdx + 1; + let handleUnlock = ()=>{}; + const doOriginalFetch = async (isStale, cacheReasonOverride)=>{ + const requestInputFields = [ + 'cache', + 'credentials', + 'headers', + 'integrity', + 'keepalive', + 'method', + 'mode', + 'redirect', + 'referrer', + 'referrerPolicy', + 'window', + 'duplex', + // don't pass through signal when revalidating + ...isStale ? [] : [ + 'signal' + ] + ]; + if (isRequestInput) { + const reqInput = input; + const reqOptions = { + body: reqInput._ogBody || reqInput.body + }; + for (const field of requestInputFields){ + // @ts-expect-error custom fields + reqOptions[field] = reqInput[field]; + } + input = new Request(reqInput.url, reqOptions); + } else if (init) { + const { _ogBody, body, signal, ...otherInput } = init; + init = { + ...otherInput, + body: _ogBody || body, + signal: isStale ? undefined : signal + }; + } + // add metadata to init without editing the original + const clonedInit = { + ...init, + next: { + ...init == null ? void 0 : init.next, + fetchType: 'origin', + fetchIdx + } + }; + return originFetch(input, clonedInit).then(async (res)=>{ + if (!isStale && fetchStart) { + trackFetchMetric(workStore, { + start: fetchStart, + url: fetchUrl, + cacheReason: cacheReasonOverride || cacheReason, + cacheStatus: finalRevalidate === 0 || cacheReasonOverride ? 'skip' : 'miss', + cacheWarning, + status: res.status, + method: clonedInit.method || 'GET' + }); + } + if (res.status === 200 && incrementalCache && cacheKey && (isCacheableRevalidate || serverComponentsHmrCache)) { + const normalizedRevalidate = finalRevalidate >= __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["INFINITE_CACHE"] ? __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CACHE_ONE_YEAR"] : finalRevalidate; + const incrementalCacheConfig = isCacheableRevalidate ? { + fetchCache: true, + fetchUrl, + fetchIdx, + tags, + isImplicitBuildTimeCache + } : undefined; + switch(workUnitStore == null ? void 0 : workUnitStore.type){ + case 'prerender': + case 'prerender-client': + case 'prerender-runtime': + return createCachedPrerenderResponse(res, cacheKey, incrementalCacheConfig, incrementalCache, normalizedRevalidate, handleUnlock); + case 'request': + if (("TURBOPACK compile-time value", "development") === 'development' && workUnitStore.stagedRendering && workUnitStore.cacheSignal) { + // We're filling caches for a staged render, + // so we need to wait for the response to finish instead of streaming. + return createCachedPrerenderResponse(res, cacheKey, incrementalCacheConfig, incrementalCache, normalizedRevalidate, handleUnlock); + } + // fallthrough + case 'prerender-ppr': + case 'prerender-legacy': + case 'cache': + case 'private-cache': + case 'unstable-cache': + case undefined: + return createCachedDynamicResponse(workStore, res, cacheKey, incrementalCacheConfig, incrementalCache, serverComponentsHmrCache, normalizedRevalidate, input, handleUnlock); + default: + workUnitStore; + } + } + // we had response that we determined shouldn't be cached so we return it + // and don't cache it. This also needs to unlock the cache lock we acquired. + await handleUnlock(); + return res; + }).catch((error)=>{ + handleUnlock(); + throw error; + }); + }; + let cacheReasonOverride; + let isForegroundRevalidate = false; + let isHmrRefreshCache = false; + if (cacheKey && incrementalCache) { + let cachedFetchData; + if (isHmrRefresh && serverComponentsHmrCache) { + cachedFetchData = serverComponentsHmrCache.get(cacheKey); + isHmrRefreshCache = true; + } + if (isCacheableRevalidate && !cachedFetchData) { + handleUnlock = await incrementalCache.lock(cacheKey); + const entry = workStore.isOnDemandRevalidate ? null : await incrementalCache.get(cacheKey, { + kind: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["IncrementalCacheKind"].FETCH, + revalidate: finalRevalidate, + fetchUrl, + fetchIdx, + tags, + softTags: implicitTags == null ? void 0 : implicitTags.tags + }); + if (hasNoExplicitCacheConfig && workUnitStore) { + switch(workUnitStore.type){ + case 'prerender': + case 'prerender-client': + case 'prerender-runtime': + // We sometimes use the cache to dedupe fetches that do not + // specify a cache configuration. In these cases we want to + // make sure we still exclude them from prerenders if + // cacheComponents is on so we introduce an artificial task boundary + // here. + await getTimeoutBoundary(); + break; + case 'request': + if (("TURBOPACK compile-time value", "development") === 'development' && workUnitStore.stagedRendering) { + await workUnitStore.stagedRendering.waitForStage(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$staged$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RenderStage"].Dynamic); + } + break; + case 'prerender-ppr': + case 'prerender-legacy': + case 'cache': + case 'private-cache': + case 'unstable-cache': + break; + default: + workUnitStore; + } + } + if (entry) { + await handleUnlock(); + } else { + // in dev, incremental cache response will be null in case the browser adds `cache-control: no-cache` in the request headers + // TODO: it seems like we also hit this after revalidates in dev? + cacheReasonOverride = 'cache-control: no-cache (hard refresh)'; + } + if ((entry == null ? void 0 : entry.value) && entry.value.kind === __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].FETCH) { + // when stale and is revalidating we wait for fresh data + // so the revalidated entry has the updated data + if (workStore.isStaticGeneration && entry.isStale) { + isForegroundRevalidate = true; + } else { + if (entry.isStale) { + workStore.pendingRevalidates ??= {}; + if (!workStore.pendingRevalidates[cacheKey]) { + const pendingRevalidate = doOriginalFetch(true).then(async (response)=>({ + body: await response.arrayBuffer(), + headers: response.headers, + status: response.status, + statusText: response.statusText + })).finally(()=>{ + workStore.pendingRevalidates ??= {}; + delete workStore.pendingRevalidates[cacheKey || '']; + }); + // Attach the empty catch here so we don't get a "unhandled + // promise rejection" warning. + pendingRevalidate.catch(console.error); + workStore.pendingRevalidates[cacheKey] = pendingRevalidate; + } + } + cachedFetchData = entry.value.data; + } + } + } + if (cachedFetchData) { + if (fetchStart) { + trackFetchMetric(workStore, { + start: fetchStart, + url: fetchUrl, + cacheReason, + cacheStatus: isHmrRefreshCache ? 'hmr' : 'hit', + cacheWarning, + status: cachedFetchData.status || 200, + method: (init == null ? void 0 : init.method) || 'GET' + }); + } + const response = new Response(Buffer.from(cachedFetchData.body, 'base64'), { + headers: cachedFetchData.headers, + status: cachedFetchData.status + }); + Object.defineProperty(response, 'url', { + value: cachedFetchData.url + }); + return response; + } + } + if ((workStore.isStaticGeneration || ("TURBOPACK compile-time value", "development") === 'development' && ("TURBOPACK compile-time value", false) && workUnitStore && // eslint-disable-next-line no-restricted-syntax + workUnitStore.type === 'request' && workUnitStore.stagedRendering) && init && typeof init === 'object') { + const { cache } = init; + // Delete `cache` property as Cloudflare Workers will throw an error + if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable + ; + if (cache === 'no-store') { + // If enabled, we should bail out of static generation. + if (workUnitStore) { + switch(workUnitStore.type){ + case 'prerender': + case 'prerender-client': + case 'prerender-runtime': + if (cacheSignal) { + cacheSignal.endRead(); + cacheSignal = null; + } + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["makeHangingPromise"])(workUnitStore.renderSignal, workStore.route, 'fetch()'); + case 'request': + if (("TURBOPACK compile-time value", "development") === 'development' && workUnitStore.stagedRendering) { + if (cacheSignal) { + cacheSignal.endRead(); + cacheSignal = null; + } + await workUnitStore.stagedRendering.waitForStage(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$staged$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RenderStage"].Dynamic); + } + break; + case 'prerender-ppr': + case 'prerender-legacy': + case 'cache': + case 'private-cache': + case 'unstable-cache': + break; + default: + workUnitStore; + } + } + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$dynamic$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["markCurrentScopeAsDynamic"])(workStore, workUnitStore, `no-store fetch ${input} ${workStore.route}`); + } + const hasNextConfig = 'next' in init; + const { next = {} } = init; + if (typeof next.revalidate === 'number' && revalidateStore && next.revalidate < revalidateStore.revalidate) { + if (next.revalidate === 0) { + // If enabled, we should bail out of static generation. + if (workUnitStore) { + switch(workUnitStore.type){ + case 'prerender': + case 'prerender-client': + case 'prerender-runtime': + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$dynamic$2d$rendering$2d$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["makeHangingPromise"])(workUnitStore.renderSignal, workStore.route, 'fetch()'); + case 'request': + if (("TURBOPACK compile-time value", "development") === 'development' && workUnitStore.stagedRendering) { + await workUnitStore.stagedRendering.waitForStage(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$staged$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RenderStage"].Dynamic); + } + break; + case 'cache': + case 'private-cache': + case 'unstable-cache': + case 'prerender-legacy': + case 'prerender-ppr': + break; + default: + workUnitStore; + } + } + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$dynamic$2d$rendering$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["markCurrentScopeAsDynamic"])(workStore, workUnitStore, `revalidate: 0 fetch ${input} ${workStore.route}`); + } + if (!workStore.forceStatic || next.revalidate !== 0) { + revalidateStore.revalidate = next.revalidate; + } + } + if (hasNextConfig) delete init.next; + } + // if we are revalidating the whole page via time or on-demand and + // the fetch cache entry is stale we should still de-dupe the + // origin hit if it's a cache-able entry + if (cacheKey && isForegroundRevalidate) { + const pendingRevalidateKey = cacheKey; + workStore.pendingRevalidates ??= {}; + let pendingRevalidate = workStore.pendingRevalidates[pendingRevalidateKey]; + if (pendingRevalidate) { + const revalidatedResult = await pendingRevalidate; + return new Response(revalidatedResult.body, { + headers: revalidatedResult.headers, + status: revalidatedResult.status, + statusText: revalidatedResult.statusText + }); + } + // We used to just resolve the Response and clone it however for + // static generation with cacheComponents we need the response to be able to + // be resolved in a microtask and cloning the response will never have + // a body that can resolve in a microtask in node (as observed through + // experimentation) So instead we await the body and then when it is + // available we construct manually cloned Response objects with the + // body as an ArrayBuffer. This will be resolvable in a microtask + // making it compatible with cacheComponents. + const pendingResponse = doOriginalFetch(true, cacheReasonOverride) // We're cloning the response using this utility because there + // exists a bug in the undici library around response cloning. + // See the following pull request for more details: + // https://github.com/vercel/next.js/pull/73274 + .then(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$clone$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["cloneResponse"]); + pendingRevalidate = pendingResponse.then(async (responses)=>{ + const response = responses[0]; + return { + body: await response.arrayBuffer(), + headers: response.headers, + status: response.status, + statusText: response.statusText + }; + }).finally(()=>{ + var _workStore_pendingRevalidates; + // If the pending revalidate is not present in the store, then + // we have nothing to delete. + if (!((_workStore_pendingRevalidates = workStore.pendingRevalidates) == null ? void 0 : _workStore_pendingRevalidates[pendingRevalidateKey])) { + return; + } + delete workStore.pendingRevalidates[pendingRevalidateKey]; + }); + // Attach the empty catch here so we don't get a "unhandled promise + // rejection" warning + pendingRevalidate.catch(()=>{}); + workStore.pendingRevalidates[pendingRevalidateKey] = pendingRevalidate; + return pendingResponse.then((responses)=>responses[1]); + } else { + return doOriginalFetch(false, cacheReasonOverride); + } + }); + if (cacheSignal) { + try { + return await result; + } finally{ + if (cacheSignal) { + cacheSignal.endRead(); + } + } + } + return result; + }; + // Attach the necessary properties to the patched fetch function. + // We don't use this to determine if the fetch function has been patched, + // but for external consumers to determine if the fetch function has been + // patched. + patched.__nextPatched = true; + patched.__nextGetStaticStore = ()=>workAsyncStorage; + patched._nextOriginalFetch = originFetch; + globalThis[NEXT_PATCH_SYMBOL] = true; + // Assign the function name also as a name property, so that it's preserved + // even when mangling is enabled. + Object.defineProperty(patched, 'name', { + value: 'fetch', + writable: false + }); + return patched; +} +function patchFetch(options) { + // If we've already patched fetch, we should not patch it again. + if (isFetchPatched()) return; + // Grab the original fetch function. We'll attach this so we can use it in + // the patched fetch function. + const original = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$dedupe$2d$fetch$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["createDedupeFetch"])(globalThis.fetch); + // Set the global fetch to the patched fetch. + globalThis.fetch = createPatchedFetcher(original, options); +} +let currentTimeoutBoundary = null; +function getTimeoutBoundary() { + if (!currentTimeoutBoundary) { + currentTimeoutBoundary = new Promise((r)=>{ + setTimeout(()=>{ + currentTimeoutBoundary = null; + r(); + }, 0); + }); + } + return currentTimeoutBoundary; +} //# sourceMappingURL=patch-fetch.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/page-path/ensure-leading-slash.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +/** + * For a given page path, this function ensures that there is a leading slash. + * If there is not a leading slash, one is added, otherwise it is noop. + */ __turbopack_context__.s([ + "ensureLeadingSlash", + ()=>ensureLeadingSlash +]); +function ensureLeadingSlash(path) { + return path.startsWith('/') ? path : `/${path}`; +} //# sourceMappingURL=ensure-leading-slash.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/segment.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "DEFAULT_SEGMENT_KEY", + ()=>DEFAULT_SEGMENT_KEY, + "NOT_FOUND_SEGMENT_KEY", + ()=>NOT_FOUND_SEGMENT_KEY, + "PAGE_SEGMENT_KEY", + ()=>PAGE_SEGMENT_KEY, + "addSearchParamsIfPageSegment", + ()=>addSearchParamsIfPageSegment, + "computeSelectedLayoutSegment", + ()=>computeSelectedLayoutSegment, + "getSegmentValue", + ()=>getSegmentValue, + "getSelectedLayoutSegmentPath", + ()=>getSelectedLayoutSegmentPath, + "isGroupSegment", + ()=>isGroupSegment, + "isParallelRouteSegment", + ()=>isParallelRouteSegment +]); +function getSegmentValue(segment) { + return Array.isArray(segment) ? segment[1] : segment; +} +function isGroupSegment(segment) { + // Use array[0] for performant purpose + return segment[0] === '(' && segment.endsWith(')'); +} +function isParallelRouteSegment(segment) { + return segment.startsWith('@') && segment !== '@children'; +} +function addSearchParamsIfPageSegment(segment, searchParams) { + const isPageSegment = segment.includes(PAGE_SEGMENT_KEY); + if (isPageSegment) { + const stringifiedQuery = JSON.stringify(searchParams); + return stringifiedQuery !== '{}' ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery : PAGE_SEGMENT_KEY; + } + return segment; +} +function computeSelectedLayoutSegment(segments, parallelRouteKey) { + if (!segments || segments.length === 0) { + return null; + } + // For 'children', use first segment; for other parallel routes, use last segment + const rawSegment = parallelRouteKey === 'children' ? segments[0] : segments[segments.length - 1]; + // If the default slot is showing, return null since it's not technically "selected" (it's a fallback) + // Returning an internal value like `__DEFAULT__` would be confusing + return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment; +} +function getSelectedLayoutSegmentPath(tree, parallelRouteKey, first = true, segmentPath = []) { + let node; + if (first) { + // Use the provided parallel route key on the first parallel route + node = tree[1][parallelRouteKey]; + } else { + // After first parallel route prefer children, if there's no children pick the first parallel route. + const parallelRoutes = tree[1]; + node = parallelRoutes.children ?? Object.values(parallelRoutes)[0]; + } + if (!node) return segmentPath; + const segment = node[0]; + let segmentValue = getSegmentValue(segment); + if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) { + return segmentPath; + } + segmentPath.push(segmentValue); + return getSelectedLayoutSegmentPath(node, parallelRouteKey, false, segmentPath); +} +const PAGE_SEGMENT_KEY = '__PAGE__'; +const DEFAULT_SEGMENT_KEY = '__DEFAULT__'; +const NOT_FOUND_SEGMENT_KEY = '/_not-found'; //# sourceMappingURL=segment.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "normalizeAppPath", + ()=>normalizeAppPath, + "normalizeRscURL", + ()=>normalizeRscURL +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$page$2d$path$2f$ensure$2d$leading$2d$slash$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/page-path/ensure-leading-slash.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$segment$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/segment.js [app-route] (ecmascript)"); +; +; +function normalizeAppPath(route) { + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$page$2d$path$2f$ensure$2d$leading$2d$slash$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ensureLeadingSlash"])(route.split('/').reduce((pathname, segment, index, segments)=>{ + // Empty segments are ignored. + if (!segment) { + return pathname; + } + // Groups are ignored. + if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$segment$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["isGroupSegment"])(segment)) { + return pathname; + } + // Parallel segments are ignored. + if (segment[0] === '@') { + return pathname; + } + // The last segment (if it's a leaf) should be ignored. + if ((segment === 'page' || segment === 'route') && index === segments.length - 1) { + return pathname; + } + return `${pathname}/${segment}`; + }, '')); +} +function normalizeRscURL(url) { + return url.replace(/\.rsc($|\?)/, '$1'); +} //# sourceMappingURL=app-paths.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/app-render/manifests-singleton.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "getClientReferenceManifest", + ()=>getClientReferenceManifest, + "getServerActionsManifest", + ()=>getServerActionsManifest, + "getServerModuleMap", + ()=>getServerModuleMap, + "selectWorkerForForwarding", + ()=>selectWorkerForForwarding, + "setManifestsSingleton", + ()=>setManifestsSingleton +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/invariant-error.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$app$2d$paths$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$remove$2d$path$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__ = __turbopack_context__.i("[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)"); +; +; +; +; +; +// This is a global singleton that is, among other things, also used to +// encode/decode bound args of server function closures. This can't be using a +// AsyncLocalStorage as it might happen at the module level. +const MANIFESTS_SINGLETON = Symbol.for('next.server.manifests'); +const globalThisWithManifests = globalThis; +function createProxiedClientReferenceManifest(clientReferenceManifestsPerRoute) { + const createMappingProxy = (prop)=>{ + return new Proxy({}, { + get (_, id) { + const workStore = __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["workAsyncStorage"].getStore(); + if (workStore) { + const currentManifest = clientReferenceManifestsPerRoute.get(workStore.route); + if (currentManifest == null ? void 0 : currentManifest[prop][id]) { + return currentManifest[prop][id]; + } + // In development, we also check all other manifests to see if the + // module exists there. This is to support a scenario where React's + // I/O tracking (dev-only) creates a connection from one page to + // another through an emitted async I/O node that references client + // components from the other page, e.g. in owner props. + // TODO: Maybe we need to add a `debugBundlerConfig` option to React + // to avoid this workaround. The current workaround has the + // disadvantage that one might accidentally or intentionally share + // client references across pages (e.g. by storing them in a global + // variable), which would then only be caught in production. + if ("TURBOPACK compile-time truthy", 1) { + for (const [route, manifest] of clientReferenceManifestsPerRoute){ + if (route === workStore.route) { + continue; + } + const entry = manifest[prop][id]; + if (entry !== undefined) { + return entry; + } + } + } + } else { + // If there's no work store defined, we can assume that a client + // reference manifest is needed during module evaluation, e.g. to + // create a server function using a higher-order function. This + // might also use client components which need to be serialized by + // Flight, and therefore client references need to be resolvable. In + // that case we search all page manifests to find the module. + for (const manifest of clientReferenceManifestsPerRoute.values()){ + const entry = manifest[prop][id]; + if (entry !== undefined) { + return entry; + } + } + } + return undefined; + } + }); + }; + const mappingProxies = new Map(); + return new Proxy({}, { + get (_, prop) { + const workStore = __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["workAsyncStorage"].getStore(); + switch(prop){ + case 'moduleLoading': + case 'entryCSSFiles': + case 'entryJSFiles': + { + if (!workStore) { + throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`Cannot access "${prop}" without a work store.`), "__NEXT_ERROR_CODE", { + value: "E952", + enumerable: false, + configurable: true + }); + } + const currentManifest = clientReferenceManifestsPerRoute.get(workStore.route); + if (!currentManifest) { + throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`The client reference manifest for route "${workStore.route}" does not exist.`), "__NEXT_ERROR_CODE", { + value: "E951", + enumerable: false, + configurable: true + }); + } + return currentManifest[prop]; + } + case 'clientModules': + case 'rscModuleMapping': + case 'edgeRscModuleMapping': + case 'ssrModuleMapping': + case 'edgeSSRModuleMapping': + { + let proxy = mappingProxies.get(prop); + if (!proxy) { + proxy = createMappingProxy(prop); + mappingProxies.set(prop, proxy); + } + return proxy; + } + default: + { + throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"](`This is a proxied client reference manifest. The property "${String(prop)}" is not handled.`), "__NEXT_ERROR_CODE", { + value: "E953", + enumerable: false, + configurable: true + }); + } + } + } + }); +} +/** + * This function creates a Flight-acceptable server module map proxy from our + * Server Reference Manifest similar to our client module map. This is because + * our manifest contains a lot of internal Next.js data that are relevant to the + * runtime, workers, etc. that React doesn't need to know. + */ function createServerModuleMap() { + return new Proxy({}, { + get: (_, id)=>{ + var _getServerActionsManifest__id, _getServerActionsManifest_; + const workers = (_getServerActionsManifest_ = getServerActionsManifest()[("TURBOPACK compile-time falsy", 0) ? "TURBOPACK unreachable" : 'node']) == null ? void 0 : (_getServerActionsManifest__id = _getServerActionsManifest_[id]) == null ? void 0 : _getServerActionsManifest__id.workers; + if (!workers) { + return undefined; + } + const workStore = __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$server$2f$app$2d$render$2f$work$2d$async$2d$storage$2e$external$2e$js$2c$__cjs$29$__["workAsyncStorage"].getStore(); + let workerEntry; + if (workStore) { + workerEntry = workers[normalizeWorkerPageName(workStore.page)]; + } else { + // If there's no work store defined, we can assume that a server + // module map is needed during module evaluation, e.g. to create a + // server action using a higher-order function. Therefore it should be + // safe to return any entry from the manifest that matches the action + // ID. They all refer to the same module ID, which must also exist in + // the current page bundle. TODO: This is currently not guaranteed in + // Turbopack, and needs to be fixed. + workerEntry = Object.values(workers).at(0); + } + if (!workerEntry) { + return undefined; + } + const { moduleId, async } = workerEntry; + return { + id: moduleId, + name: id, + chunks: [], + async + }; + } + }); +} +/** + * The flight entry loader keys actions by bundlePath. bundlePath corresponds + * with the relative path (including 'app') to the page entrypoint. + */ function normalizeWorkerPageName(pageName) { + if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["pathHasPrefix"])(pageName, 'app')) { + return pageName; + } + return 'app' + pageName; +} +/** + * Converts a bundlePath (relative path to the entrypoint) to a routable page + * name. + */ function denormalizeWorkerPageName(bundlePath) { + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$app$2d$paths$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["normalizeAppPath"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$remove$2d$path$2d$prefix$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["removePathPrefix"])(bundlePath, 'app')); +} +function selectWorkerForForwarding(actionId, pageName) { + var _serverActionsManifest__actionId; + const serverActionsManifest = getServerActionsManifest(); + const workers = (_serverActionsManifest__actionId = serverActionsManifest[("TURBOPACK compile-time falsy", 0) ? "TURBOPACK unreachable" : 'node'][actionId]) == null ? void 0 : _serverActionsManifest__actionId.workers; + // There are no workers to handle this action, nothing to forward to. + if (!workers) { + return; + } + // If there is an entry for the current page, we don't need to forward. + if (workers[normalizeWorkerPageName(pageName)]) { + return; + } + // Otherwise, grab the first worker that has a handler for this action id. + return denormalizeWorkerPageName(Object.keys(workers)[0]); +} +function setManifestsSingleton({ page, clientReferenceManifest, serverActionsManifest }) { + const existingSingleton = globalThisWithManifests[MANIFESTS_SINGLETON]; + if (existingSingleton) { + existingSingleton.clientReferenceManifestsPerRoute.set((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$app$2d$paths$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["normalizeAppPath"])(page), clientReferenceManifest); + existingSingleton.serverActionsManifest = serverActionsManifest; + } else { + const clientReferenceManifestsPerRoute = new Map([ + [ + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$app$2d$paths$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["normalizeAppPath"])(page), + clientReferenceManifest + ] + ]); + const proxiedClientReferenceManifest = createProxiedClientReferenceManifest(clientReferenceManifestsPerRoute); + globalThisWithManifests[MANIFESTS_SINGLETON] = { + clientReferenceManifestsPerRoute, + proxiedClientReferenceManifest, + serverActionsManifest, + serverModuleMap: createServerModuleMap() + }; + } +} +function getManifestsSingleton() { + const manifestSingleton = globalThisWithManifests[MANIFESTS_SINGLETON]; + if (!manifestSingleton) { + throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["InvariantError"]('The manifests singleton was not initialized.'), "__NEXT_ERROR_CODE", { + value: "E950", + enumerable: false, + configurable: true + }); + } + return manifestSingleton; +} +function getClientReferenceManifest() { + return getManifestsSingleton().proxiedClientReferenceManifest; +} +function getServerActionsManifest() { + return getManifestsSingleton().serverActionsManifest; +} +function getServerModuleMap() { + return getManifestsSingleton().serverModuleMap; +} //# sourceMappingURL=manifests-singleton.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/spec-extension/adapters/reflect.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "ReflectAdapter", + ()=>ReflectAdapter +]); +class ReflectAdapter { + static get(target, prop, receiver) { + const value = Reflect.get(target, prop, receiver); + if (typeof value === 'function') { + return value.bind(target); + } + return value; + } + static set(target, prop, value, receiver) { + return Reflect.set(target, prop, value, receiver); + } + static has(target, prop) { + return Reflect.has(target, prop); + } + static deleteProperty(target, prop) { + return Reflect.deleteProperty(target, prop); + } +} //# sourceMappingURL=reflect.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/spec-extension/adapters/headers.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "HeadersAdapter", + ()=>HeadersAdapter, + "ReadonlyHeadersError", + ()=>ReadonlyHeadersError +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/spec-extension/adapters/reflect.js [app-route] (ecmascript)"); +; +class ReadonlyHeadersError extends Error { + constructor(){ + super('Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers'); + } + static callable() { + throw new ReadonlyHeadersError(); + } +} +class HeadersAdapter extends Headers { + constructor(headers){ + // We've already overridden the methods that would be called, so we're just + // calling the super constructor to ensure that the instanceof check works. + super(); + this.headers = new Proxy(headers, { + get (target, prop, receiver) { + // Because this is just an object, we expect that all "get" operations + // are for properties. If it's a "get" for a symbol, we'll just return + // the symbol. + if (typeof prop === 'symbol') { + return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].get(target, prop, receiver); + } + const lowercased = prop.toLowerCase(); + // Let's find the original casing of the key. This assumes that there is + // no mixed case keys (e.g. "Content-Type" and "content-type") in the + // headers object. + const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); + // If the original casing doesn't exist, return undefined. + if (typeof original === 'undefined') return; + // If the original casing exists, return the value. + return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].get(target, original, receiver); + }, + set (target, prop, value, receiver) { + if (typeof prop === 'symbol') { + return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].set(target, prop, value, receiver); + } + const lowercased = prop.toLowerCase(); + // Let's find the original casing of the key. This assumes that there is + // no mixed case keys (e.g. "Content-Type" and "content-type") in the + // headers object. + const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); + // If the original casing doesn't exist, use the prop as the key. + return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].set(target, original ?? prop, value, receiver); + }, + has (target, prop) { + if (typeof prop === 'symbol') return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].has(target, prop); + const lowercased = prop.toLowerCase(); + // Let's find the original casing of the key. This assumes that there is + // no mixed case keys (e.g. "Content-Type" and "content-type") in the + // headers object. + const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); + // If the original casing doesn't exist, return false. + if (typeof original === 'undefined') return false; + // If the original casing exists, return true. + return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].has(target, original); + }, + deleteProperty (target, prop) { + if (typeof prop === 'symbol') return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].deleteProperty(target, prop); + const lowercased = prop.toLowerCase(); + // Let's find the original casing of the key. This assumes that there is + // no mixed case keys (e.g. "Content-Type" and "content-type") in the + // headers object. + const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); + // If the original casing doesn't exist, return true. + if (typeof original === 'undefined') return true; + // If the original casing exists, delete the property. + return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].deleteProperty(target, original); + } + }); + } + /** + * Seals a Headers instance to prevent modification by throwing an error when + * any mutating method is called. + */ static seal(headers) { + return new Proxy(headers, { + get (target, prop, receiver) { + switch(prop){ + case 'append': + case 'delete': + case 'set': + return ReadonlyHeadersError.callable; + default: + return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$reflect$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["ReflectAdapter"].get(target, prop, receiver); + } + } + }); + } + /** + * Merges a header value into a string. This stores multiple values as an + * array, so we need to merge them into a string. + * + * @param value a header value + * @returns a merged header value (a string) + */ merge(value) { + if (Array.isArray(value)) return value.join(', '); + return value; + } + /** + * Creates a Headers instance from a plain object or a Headers instance. + * + * @param headers a plain object or a Headers instance + * @returns a headers instance + */ static from(headers) { + if (headers instanceof Headers) return headers; + return new HeadersAdapter(headers); + } + append(name, value) { + const existing = this.headers[name]; + if (typeof existing === 'string') { + this.headers[name] = [ + existing, + value + ]; + } else if (Array.isArray(existing)) { + existing.push(value); + } else { + this.headers[name] = value; + } + } + delete(name) { + delete this.headers[name]; + } + get(name) { + const value = this.headers[name]; + if (typeof value !== 'undefined') return this.merge(value); + return null; + } + has(name) { + return typeof this.headers[name] !== 'undefined'; + } + set(name, value) { + this.headers[name] = value; + } + forEach(callbackfn, thisArg) { + for (const [name, value] of this.entries()){ + callbackfn.call(thisArg, value, name, this); + } + } + *entries() { + for (const key of Object.keys(this.headers)){ + const name = key.toLowerCase(); + // We assert here that this is a string because we got it from the + // Object.keys() call above. + const value = this.get(name); + yield [ + name, + value + ]; + } + } + *keys() { + for (const key of Object.keys(this.headers)){ + const name = key.toLowerCase(); + yield name; + } + } + *values() { + for (const key of Object.keys(this.headers)){ + // We assert here that this is a string because we got it from the + // Object.keys() call above. + const value = this.get(key); + yield value; + } + } + [Symbol.iterator]() { + return this.entries(); + } +} //# sourceMappingURL=headers.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/cookie/index.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { + +(()=>{ + "use strict"; + if (typeof __nccwpck_require__ !== "undefined") __nccwpck_require__.ab = ("TURBOPACK compile-time value", "/ROOT/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/cookie") + "/"; + var e = {}; + (()=>{ + var r = e; + /*! + * cookie + * Copyright(c) 2012-2014 Roman Shtylman + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ r.parse = parse; + r.serialize = serialize; + var i = decodeURIComponent; + var t = encodeURIComponent; + var a = /; */; + var n = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/; + function parse(e, r) { + if (typeof e !== "string") { + throw new TypeError("argument str must be a string"); + } + var t = {}; + var n = r || {}; + var o = e.split(a); + var s = n.decode || i; + for(var p = 0; p < o.length; p++){ + var f = o[p]; + var u = f.indexOf("="); + if (u < 0) { + continue; + } + var v = f.substr(0, u).trim(); + var c = f.substr(++u, f.length).trim(); + if ('"' == c[0]) { + c = c.slice(1, -1); + } + if (undefined == t[v]) { + t[v] = tryDecode(c, s); + } + } + return t; + } + function serialize(e, r, i) { + var a = i || {}; + var o = a.encode || t; + if (typeof o !== "function") { + throw new TypeError("option encode is invalid"); + } + if (!n.test(e)) { + throw new TypeError("argument name is invalid"); + } + var s = o(r); + if (s && !n.test(s)) { + throw new TypeError("argument val is invalid"); + } + var p = e + "=" + s; + if (null != a.maxAge) { + var f = a.maxAge - 0; + if (isNaN(f) || !isFinite(f)) { + throw new TypeError("option maxAge is invalid"); + } + p += "; Max-Age=" + Math.floor(f); + } + if (a.domain) { + if (!n.test(a.domain)) { + throw new TypeError("option domain is invalid"); + } + p += "; Domain=" + a.domain; + } + if (a.path) { + if (!n.test(a.path)) { + throw new TypeError("option path is invalid"); + } + p += "; Path=" + a.path; + } + if (a.expires) { + if (typeof a.expires.toUTCString !== "function") { + throw new TypeError("option expires is invalid"); + } + p += "; Expires=" + a.expires.toUTCString(); + } + if (a.httpOnly) { + p += "; HttpOnly"; + } + if (a.secure) { + p += "; Secure"; + } + if (a.sameSite) { + var u = typeof a.sameSite === "string" ? a.sameSite.toLowerCase() : a.sameSite; + switch(u){ + case true: + p += "; SameSite=Strict"; + break; + case "lax": + p += "; SameSite=Lax"; + break; + case "strict": + p += "; SameSite=Strict"; + break; + case "none": + p += "; SameSite=None"; + break; + default: + throw new TypeError("option sameSite is invalid"); + } + } + return p; + } + function tryDecode(e, r) { + try { + return r(e); + } catch (r) { + return e; + } + } + })(); + module.exports = e; +})(); +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/api-utils/index.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "ApiError", + ()=>ApiError, + "COOKIE_NAME_PRERENDER_BYPASS", + ()=>COOKIE_NAME_PRERENDER_BYPASS, + "COOKIE_NAME_PRERENDER_DATA", + ()=>COOKIE_NAME_PRERENDER_DATA, + "RESPONSE_LIMIT_DEFAULT", + ()=>RESPONSE_LIMIT_DEFAULT, + "SYMBOL_CLEARED_COOKIES", + ()=>SYMBOL_CLEARED_COOKIES, + "SYMBOL_PREVIEW_DATA", + ()=>SYMBOL_PREVIEW_DATA, + "checkIsOnDemandRevalidate", + ()=>checkIsOnDemandRevalidate, + "clearPreviewData", + ()=>clearPreviewData, + "redirect", + ()=>redirect, + "sendError", + ()=>sendError, + "sendStatusCode", + ()=>sendStatusCode, + "setLazyProp", + ()=>setLazyProp, + "wrapApiHandler", + ()=>wrapApiHandler +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$headers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/spec-extension/adapters/headers.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/constants.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/trace/tracer.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/trace/constants.js [app-route] (ecmascript)"); +; +; +; +; +function wrapApiHandler(page, handler) { + return (...args)=>{ + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getTracer"])().setRootSpanAttribute('next.route', page); + // Call API route method + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getTracer"])().trace(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NodeSpan"].runHandler, { + spanName: `executing api route (pages) ${page}` + }, ()=>handler(...args)); + }; +} +function sendStatusCode(res, statusCode) { + res.statusCode = statusCode; + return res; +} +function redirect(res, statusOrUrl, url) { + if (typeof statusOrUrl === 'string') { + url = statusOrUrl; + statusOrUrl = 307; + } + if (typeof statusOrUrl !== 'number' || typeof url !== 'string') { + throw Object.defineProperty(new Error(`Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination').`), "__NEXT_ERROR_CODE", { + value: "E389", + enumerable: false, + configurable: true + }); + } + res.writeHead(statusOrUrl, { + Location: url + }); + res.write(url); + res.end(); + return res; +} +function checkIsOnDemandRevalidate(req, previewProps) { + const headers = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$headers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["HeadersAdapter"].from(req.headers); + const previewModeId = headers.get(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["PRERENDER_REVALIDATE_HEADER"]); + const isOnDemandRevalidate = previewModeId === previewProps.previewModeId; + const revalidateOnlyGenerated = headers.has(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER"]); + return { + isOnDemandRevalidate, + revalidateOnlyGenerated + }; +} +const COOKIE_NAME_PRERENDER_BYPASS = `__prerender_bypass`; +const COOKIE_NAME_PRERENDER_DATA = `__next_preview_data`; +const RESPONSE_LIMIT_DEFAULT = 4 * 1024 * 1024; +const SYMBOL_PREVIEW_DATA = Symbol(COOKIE_NAME_PRERENDER_DATA); +const SYMBOL_CLEARED_COOKIES = Symbol(COOKIE_NAME_PRERENDER_BYPASS); +function clearPreviewData(res, options = {}) { + if (SYMBOL_CLEARED_COOKIES in res) { + return res; + } + const { serialize } = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/cookie/index.js [app-route] (ecmascript)"); + const previous = res.getHeader('Set-Cookie'); + res.setHeader(`Set-Cookie`, [ + ...typeof previous === 'string' ? [ + previous + ] : Array.isArray(previous) ? previous : [], + serialize(COOKIE_NAME_PRERENDER_BYPASS, '', { + // To delete a cookie, set `expires` to a date in the past: + // https://tools.ietf.org/html/rfc6265#section-4.1.1 + // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted. + expires: new Date(0), + httpOnly: true, + sameSite: ("TURBOPACK compile-time falsy", 0) ? "TURBOPACK unreachable" : 'lax', + secure: ("TURBOPACK compile-time value", "development") !== 'development', + path: '/', + ...options.path !== undefined ? { + path: options.path + } : undefined + }), + serialize(COOKIE_NAME_PRERENDER_DATA, '', { + // To delete a cookie, set `expires` to a date in the past: + // https://tools.ietf.org/html/rfc6265#section-4.1.1 + // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted. + expires: new Date(0), + httpOnly: true, + sameSite: ("TURBOPACK compile-time falsy", 0) ? "TURBOPACK unreachable" : 'lax', + secure: ("TURBOPACK compile-time value", "development") !== 'development', + path: '/', + ...options.path !== undefined ? { + path: options.path + } : undefined + }) + ]); + Object.defineProperty(res, SYMBOL_CLEARED_COOKIES, { + value: true, + enumerable: false + }); + return res; +} +class ApiError extends Error { + constructor(statusCode, message){ + super(message); + this.statusCode = statusCode; + } +} +function sendError(res, statusCode, message) { + res.statusCode = statusCode; + res.statusMessage = message; + res.end(message); +} +function setLazyProp({ req }, prop, getter) { + const opts = { + configurable: true, + enumerable: true + }; + const optsReset = { + ...opts, + writable: true + }; + Object.defineProperty(req, prop, { + ...opts, + get: ()=>{ + const value = getter(); + // we set the property on the object to avoid recalculating it + Object.defineProperty(req, prop, { + ...optsReset, + value + }); + return value; + }, + set: (value)=>{ + Object.defineProperty(req, prop, { + ...optsReset, + value + }); + } + }); +} //# sourceMappingURL=index.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/redirect-status-code.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "RedirectStatusCode", + ()=>RedirectStatusCode +]); +var RedirectStatusCode = /*#__PURE__*/ function(RedirectStatusCode) { + RedirectStatusCode[RedirectStatusCode["SeeOther"] = 303] = "SeeOther"; + RedirectStatusCode[RedirectStatusCode["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + RedirectStatusCode[RedirectStatusCode["PermanentRedirect"] = 308] = "PermanentRedirect"; + return RedirectStatusCode; +}({}); //# sourceMappingURL=redirect-status-code.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/api-utils/get-cookie-parser.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +/** + * Parse cookies from the `headers` of request + * @param req request object + */ __turbopack_context__.s([ + "getCookieParser", + ()=>getCookieParser +]); +function getCookieParser(headers) { + return function parseCookie() { + const { cookie } = headers; + if (!cookie) { + return {}; + } + const { parse: parseCookieFn } = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/cookie/index.js [app-route] (ecmascript)"); + return parseCookieFn(Array.isArray(cookie) ? cookie.join('; ') : cookie); + }; +} //# sourceMappingURL=get-cookie-parser.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/base-http/index.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "BaseNextRequest", + ()=>BaseNextRequest, + "BaseNextResponse", + ()=>BaseNextResponse +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$redirect$2d$status$2d$code$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/redirect-status-code.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$api$2d$utils$2f$get$2d$cookie$2d$parser$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/api-utils/get-cookie-parser.js [app-route] (ecmascript)"); +; +; +class BaseNextRequest { + constructor(method, url, body){ + this.method = method; + this.url = url; + this.body = body; + } + // Utils implemented using the abstract methods above + get cookies() { + if (this._cookies) return this._cookies; + return this._cookies = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$api$2d$utils$2f$get$2d$cookie$2d$parser$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getCookieParser"])(this.headers)(); + } +} +class BaseNextResponse { + constructor(destination){ + this.destination = destination; + } + // Utils implemented using the abstract methods above + redirect(destination, statusCode) { + this.setHeader('Location', destination); + this.statusCode = statusCode; + // Since IE11 doesn't support the 308 header add backwards + // compatibility using refresh header + if (statusCode === __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$redirect$2d$status$2d$code$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RedirectStatusCode"].PermanentRedirect) { + this.setHeader('Refresh', `0;url=${destination}`); + } + return this; + } +} //# sourceMappingURL=index.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/base-http/node.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "NodeNextRequest", + ()=>NodeNextRequest, + "NodeNextResponse", + ()=>NodeNextResponse +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$api$2d$utils$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/api-utils/index.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/request-meta.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/base-http/index.js [app-route] (ecmascript)"); +; +; +; +let prop; +class NodeNextRequest extends __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["BaseNextRequest"] { + static #_ = prop = _NEXT_REQUEST_META = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_REQUEST_META"]; + constructor(_req){ + var _this__req; + super(_req.method.toUpperCase(), _req.url, _req), this._req = _req, this.headers = this._req.headers, this.fetchMetrics = (_this__req = this._req) == null ? void 0 : _this__req.fetchMetrics, this[_NEXT_REQUEST_META] = this._req[__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_REQUEST_META"]] || {}, this.streaming = false; + } + get originalRequest() { + // Need to mimic these changes to the original req object for places where we use it: + // render.tsx, api/ssg requests + this._req[__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_REQUEST_META"]] = this[__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_REQUEST_META"]]; + this._req.url = this.url; + this._req.cookies = this.cookies; + return this._req; + } + set originalRequest(value) { + this._req = value; + } + /** + * Returns the request body as a Web Readable Stream. The body here can only + * be read once as the body will start flowing as soon as the data handler + * is attached. + * + * @internal + */ stream() { + if (this.streaming) { + throw Object.defineProperty(new Error('Invariant: NodeNextRequest.stream() can only be called once'), "__NEXT_ERROR_CODE", { + value: "E467", + enumerable: false, + configurable: true + }); + } + this.streaming = true; + return new ReadableStream({ + start: (controller)=>{ + this._req.on('data', (chunk)=>{ + controller.enqueue(new Uint8Array(chunk)); + }); + this._req.on('end', ()=>{ + controller.close(); + }); + this._req.on('error', (err)=>{ + controller.error(err); + }); + } + }); + } +} +class NodeNextResponse extends __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["BaseNextResponse"] { + get originalResponse() { + if (__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$api$2d$utils$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["SYMBOL_CLEARED_COOKIES"] in this) { + this._res[__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$api$2d$utils$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["SYMBOL_CLEARED_COOKIES"]] = this[__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$api$2d$utils$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["SYMBOL_CLEARED_COOKIES"]]; + } + return this._res; + } + constructor(_res){ + super(_res), this._res = _res, this.textBody = undefined; + } + get sent() { + return this._res.finished || this._res.headersSent; + } + get statusCode() { + return this._res.statusCode; + } + set statusCode(value) { + this._res.statusCode = value; + } + get statusMessage() { + return this._res.statusMessage; + } + set statusMessage(value) { + this._res.statusMessage = value; + } + setHeader(name, value) { + this._res.setHeader(name, value); + return this; + } + removeHeader(name) { + this._res.removeHeader(name); + return this; + } + getHeaderValues(name) { + const values = this._res.getHeader(name); + if (values === undefined) return undefined; + return (Array.isArray(values) ? values : [ + values + ]).map((value)=>value.toString()); + } + hasHeader(name) { + return this._res.hasHeader(name); + } + getHeader(name) { + const values = this.getHeaderValues(name); + return Array.isArray(values) ? values.join(',') : undefined; + } + getHeaders() { + return this._res.getHeaders(); + } + appendHeader(name, value) { + const currentValues = this.getHeaderValues(name) ?? []; + if (!currentValues.includes(value)) { + this._res.setHeader(name, [ + ...currentValues, + value + ]); + } + return this; + } + body(value) { + this.textBody = value; + return this; + } + send() { + this._res.end(this.textBody); + } + onClose(callback) { + this.originalResponse.on('close', callback); + } +} +var _NEXT_REQUEST_META; //# sourceMappingURL=node.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/instrumentation/utils.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "getRevalidateReason", + ()=>getRevalidateReason +]); +function getRevalidateReason(params) { + if (params.isOnDemandRevalidate) { + return 'on-demand'; + } + if (params.isStaticGeneration) { + return 'stale'; + } + return undefined; +} //# sourceMappingURL=utils.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/send-response.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "sendResponse", + ()=>sendResponse +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/base-http/helpers.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$pipe$2d$readable$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/pipe-readable.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/utils.js [app-route] (ecmascript)"); +; +; +; +async function sendResponse(req, res, response, waitUntil) { + if (// environment variable check provides dead code elimination. + ("TURBOPACK compile-time value", "nodejs") !== 'edge' && (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$helpers$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["isNodeNextResponse"])(res)) { + var _response_headers; + // Copy over the response status. + res.statusCode = response.status; + res.statusMessage = response.statusText; + // TODO: this is not spec-compliant behavior and we should not restrict + // headers that are allowed to appear many times. + // + // See: + // https://github.com/vercel/next.js/pull/70127 + const headersWithMultipleValuesAllowed = [ + // can add more headers to this list if needed + 'set-cookie', + 'www-authenticate', + 'proxy-authenticate', + 'vary' + ]; + (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{ + // `x-middleware-set-cookie` is an internal header not needed for the response + if (name.toLowerCase() === 'x-middleware-set-cookie') { + return; + } + // The append handling is special cased for `set-cookie`. + if (name.toLowerCase() === 'set-cookie') { + // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici + for (const cookie of (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["splitCookiesString"])(value)){ + res.appendHeader(name, cookie); + } + } else { + // only append the header if it is either not present in the outbound response + // or if the header supports multiple values + const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'; + if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) { + res.appendHeader(name, value); + } + } + }); + /** + * The response can't be directly piped to the underlying response. The + * following is duplicated from the edge runtime handler. + * + * See packages/next/server/next-server.ts + */ const { originalResponse } = res; + // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD + if (response.body && req.method !== 'HEAD') { + await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$pipe$2d$readable$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["pipeToNodeResponse"])(response.body, originalResponse, waitUntil); + } else { + originalResponse.end(); + } + } +} //# sourceMappingURL=send-response.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/cache-control.js [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "getCacheControlHeader", + ()=>getCacheControlHeader +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/constants.js [app-route] (ecmascript)"); +; +function getCacheControlHeader({ revalidate, expire }) { + const swrHeader = typeof revalidate === 'number' && expire !== undefined && revalidate < expire ? `, stale-while-revalidate=${expire - revalidate}` : ''; + if (revalidate === 0) { + return 'private, no-cache, no-store, max-age=0, must-revalidate'; + } else if (typeof revalidate === 'number') { + return `s-maxage=${revalidate}${swrHeader}`; + } + return `s-maxage=${__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CACHE_ONE_YEAR"]}${swrHeader}`; +} //# sourceMappingURL=cache-control.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "detectDomainLocale", { + enumerable: true, + get: function() { + return detectDomainLocale; + } +}); +function detectDomainLocale(domainItems, hostname, detectedLocale) { + if (!domainItems) return; + if (detectedLocale) { + detectedLocale = detectedLocale.toLowerCase(); + } + for (const item of domainItems){ + // remove port if present + const domainHostname = item.domain?.split(':', 1)[0].toLowerCase(); + if (hostname === domainHostname || detectedLocale === item.defaultLocale.toLowerCase() || item.locales?.some((locale)=>locale.toLowerCase() === detectedLocale)) { + return item; + } + } +} //# sourceMappingURL=detect-domain-locale.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +/** + * Removes the trailing slash for a given route or page path. Preserves the + * root page. Examples: + * - `/foo/bar/` -> `/foo/bar` + * - `/foo/bar` -> `/foo/bar` + * - `/` -> `/` + */ Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "removeTrailingSlash", { + enumerable: true, + get: function() { + return removeTrailingSlash; + } +}); +function removeTrailingSlash(route) { + return route.replace(/\/$/, '') || '/'; +} //# sourceMappingURL=remove-trailing-slash.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/parse-path.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +/** + * Given a path this function will find the pathname, query and hash and return + * them. This is useful to parse full paths on the client side. + * @param path A path to parse e.g. /foo/bar?id=1#hash + */ Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "parsePath", { + enumerable: true, + get: function() { + return parsePath; + } +}); +function parsePath(path) { + const hashIndex = path.indexOf('#'); + const queryIndex = path.indexOf('?'); + const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex); + if (hasQuery || hashIndex > -1) { + return { + pathname: path.substring(0, hasQuery ? queryIndex : hashIndex), + query: hasQuery ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined) : '', + hash: hashIndex > -1 ? path.slice(hashIndex) : '' + }; + } + return { + pathname: path, + query: '', + hash: '' + }; +} //# sourceMappingURL=parse-path.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "addPathPrefix", { + enumerable: true, + get: function() { + return addPathPrefix; + } +}); +const _parsepath = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/parse-path.js [app-route] (ecmascript)"); +function addPathPrefix(path, prefix) { + if (!path.startsWith('/') || !prefix) { + return path; + } + const { pathname, query, hash } = (0, _parsepath.parsePath)(path); + return `${prefix}${pathname}${query}${hash}`; +} //# sourceMappingURL=add-path-prefix.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "addPathSuffix", { + enumerable: true, + get: function() { + return addPathSuffix; + } +}); +const _parsepath = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/parse-path.js [app-route] (ecmascript)"); +function addPathSuffix(path, suffix) { + if (!path.startsWith('/') || !suffix) { + return path; + } + const { pathname, query, hash } = (0, _parsepath.parsePath)(path); + return `${pathname}${suffix}${query}${hash}`; +} //# sourceMappingURL=add-path-suffix.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "pathHasPrefix", { + enumerable: true, + get: function() { + return pathHasPrefix; + } +}); +const _parsepath = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/parse-path.js [app-route] (ecmascript)"); +function pathHasPrefix(path, prefix) { + if (typeof path !== 'string') { + return false; + } + const { pathname } = (0, _parsepath.parsePath)(path); + return pathname === prefix || pathname.startsWith(prefix + '/'); +} //# sourceMappingURL=path-has-prefix.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/add-locale.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "addLocale", { + enumerable: true, + get: function() { + return addLocale; + } +}); +const _addpathprefix = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js [app-route] (ecmascript)"); +const _pathhasprefix = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js [app-route] (ecmascript)"); +function addLocale(path, locale, defaultLocale, ignorePrefix) { + // If no locale was given or the locale is the default locale, we don't need + // to prefix the path. + if (!locale || locale === defaultLocale) return path; + const lower = path.toLowerCase(); + // If the path is an API path or the path already has the locale prefix, we + // don't need to prefix the path. + if (!ignorePrefix) { + if ((0, _pathhasprefix.pathHasPrefix)(lower, '/api')) return path; + if ((0, _pathhasprefix.pathHasPrefix)(lower, `/${locale.toLowerCase()}`)) return path; + } + // Add the locale prefix to the path. + return (0, _addpathprefix.addPathPrefix)(path, `/${locale}`); +} //# sourceMappingURL=add-locale.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "formatNextPathnameInfo", { + enumerable: true, + get: function() { + return formatNextPathnameInfo; + } +}); +const _removetrailingslash = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js [app-route] (ecmascript)"); +const _addpathprefix = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js [app-route] (ecmascript)"); +const _addpathsuffix = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js [app-route] (ecmascript)"); +const _addlocale = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/add-locale.js [app-route] (ecmascript)"); +function formatNextPathnameInfo(info) { + let pathname = (0, _addlocale.addLocale)(info.pathname, info.locale, info.buildId ? undefined : info.defaultLocale, info.ignorePrefix); + if (info.buildId || !info.trailingSlash) { + pathname = (0, _removetrailingslash.removeTrailingSlash)(pathname); + } + if (info.buildId) { + pathname = (0, _addpathsuffix.addPathSuffix)((0, _addpathprefix.addPathPrefix)(pathname, `/_next/data/${info.buildId}`), info.pathname === '/' ? 'index.json' : '.json'); + } + pathname = (0, _addpathprefix.addPathPrefix)(pathname, info.basePath); + return !info.buildId && info.trailingSlash ? !pathname.endsWith('/') ? (0, _addpathsuffix.addPathSuffix)(pathname, '/') : pathname : (0, _removetrailingslash.removeTrailingSlash)(pathname); +} //# sourceMappingURL=format-next-pathname-info.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/get-hostname.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "getHostname", { + enumerable: true, + get: function() { + return getHostname; + } +}); +function getHostname(parsed, headers) { + // Get the hostname from the headers if it exists, otherwise use the parsed + // hostname. + let hostname; + if (headers?.host && !Array.isArray(headers.host)) { + hostname = headers.host.toString().split(':', 1)[0]; + } else if (parsed.hostname) { + hostname = parsed.hostname; + } else return; + return hostname.toLowerCase(); +} //# sourceMappingURL=get-hostname.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "normalizeLocalePath", { + enumerable: true, + get: function() { + return normalizeLocalePath; + } +}); +/** + * A cache of lowercased locales for each list of locales. This is stored as a + * WeakMap so if the locales are garbage collected, the cache entry will be + * removed as well. + */ const cache = new WeakMap(); +function normalizeLocalePath(pathname, locales) { + // If locales is undefined, return the pathname as is. + if (!locales) return { + pathname + }; + // Get the cached lowercased locales or create a new cache entry. + let lowercasedLocales = cache.get(locales); + if (!lowercasedLocales) { + lowercasedLocales = locales.map((locale)=>locale.toLowerCase()); + cache.set(locales, lowercasedLocales); + } + let detectedLocale; + // The first segment will be empty, because it has a leading `/`. If + // there is no further segment, there is no locale (or it's the default). + const segments = pathname.split('/', 2); + // If there's no second segment (ie, the pathname is just `/`), there's no + // locale. + if (!segments[1]) return { + pathname + }; + // The second segment will contain the locale part if any. + const segment = segments[1].toLowerCase(); + // See if the segment matches one of the locales. If it doesn't, there is + // no locale (or it's the default). + const index = lowercasedLocales.indexOf(segment); + if (index < 0) return { + pathname + }; + // Return the case-sensitive locale. + detectedLocale = locales[index]; + // Remove the `/${locale}` part of the pathname. + pathname = pathname.slice(detectedLocale.length + 1) || '/'; + return { + pathname, + detectedLocale + }; +} //# sourceMappingURL=normalize-locale-path.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "removePathPrefix", { + enumerable: true, + get: function() { + return removePathPrefix; + } +}); +const _pathhasprefix = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js [app-route] (ecmascript)"); +function removePathPrefix(path, prefix) { + // If the path doesn't start with the prefix we can return it as is. This + // protects us from situations where the prefix is a substring of the path + // prefix such as: + // + // For prefix: /blog + // + // /blog -> true + // /blog/ -> true + // /blog/1 -> true + // /blogging -> false + // /blogging/ -> false + // /blogging/1 -> false + if (!(0, _pathhasprefix.pathHasPrefix)(path, prefix)) { + return path; + } + // Remove the prefix from the path via slicing. + const withoutPrefix = path.slice(prefix.length); + // If the path without the prefix starts with a `/` we can return it as is. + if (withoutPrefix.startsWith('/')) { + return withoutPrefix; + } + // If the path without the prefix doesn't start with a `/` we need to add it + // back to the path to make sure it's a valid path. + return `/${withoutPrefix}`; +} //# sourceMappingURL=remove-path-prefix.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "getNextPathnameInfo", { + enumerable: true, + get: function() { + return getNextPathnameInfo; + } +}); +const _normalizelocalepath = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js [app-route] (ecmascript)"); +const _removepathprefix = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js [app-route] (ecmascript)"); +const _pathhasprefix = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js [app-route] (ecmascript)"); +function getNextPathnameInfo(pathname, options) { + const { basePath, i18n, trailingSlash } = options.nextConfig ?? {}; + const info = { + pathname, + trailingSlash: pathname !== '/' ? pathname.endsWith('/') : trailingSlash + }; + if (basePath && (0, _pathhasprefix.pathHasPrefix)(info.pathname, basePath)) { + info.pathname = (0, _removepathprefix.removePathPrefix)(info.pathname, basePath); + info.basePath = basePath; + } + let pathnameNoDataPrefix = info.pathname; + if (info.pathname.startsWith('/_next/data/') && info.pathname.endsWith('.json')) { + const paths = info.pathname.replace(/^\/_next\/data\//, '').replace(/\.json$/, '').split('/'); + const buildId = paths[0]; + info.buildId = buildId; + pathnameNoDataPrefix = paths[1] !== 'index' ? `/${paths.slice(1).join('/')}` : '/'; + // update pathname with normalized if enabled although + // we use normalized to populate locale info still + if (options.parseData === true) { + info.pathname = pathnameNoDataPrefix; + } + } + // If provided, use the locale route normalizer to detect the locale instead + // of the function below. + if (i18n) { + let result = options.i18nProvider ? options.i18nProvider.analyze(info.pathname) : (0, _normalizelocalepath.normalizeLocalePath)(info.pathname, i18n.locales); + info.locale = result.detectedLocale; + info.pathname = result.pathname ?? info.pathname; + if (!result.detectedLocale && info.buildId) { + result = options.i18nProvider ? options.i18nProvider.analyze(pathnameNoDataPrefix) : (0, _normalizelocalepath.normalizeLocalePath)(pathnameNoDataPrefix, i18n.locales); + if (result.detectedLocale) { + info.locale = result.detectedLocale; + } + } + } + return info; +} //# sourceMappingURL=get-next-pathname-info.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/next-url.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "NextURL", { + enumerable: true, + get: function() { + return NextURL; + } +}); +const _detectdomainlocale = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js [app-route] (ecmascript)"); +const _formatnextpathnameinfo = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js [app-route] (ecmascript)"); +const _gethostname = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/get-hostname.js [app-route] (ecmascript)"); +const _getnextpathnameinfo = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js [app-route] (ecmascript)"); +const REGEX_LOCALHOST_HOSTNAME = /(?!^https?:\/\/)(127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\[::1\]|localhost)/; +function parseURL(url, base) { + return new URL(String(url).replace(REGEX_LOCALHOST_HOSTNAME, 'localhost'), base && String(base).replace(REGEX_LOCALHOST_HOSTNAME, 'localhost')); +} +const Internal = Symbol('NextURLInternal'); +class NextURL { + constructor(input, baseOrOpts, opts){ + let base; + let options; + if (typeof baseOrOpts === 'object' && 'pathname' in baseOrOpts || typeof baseOrOpts === 'string') { + base = baseOrOpts; + options = opts || {}; + } else { + options = opts || baseOrOpts || {}; + } + this[Internal] = { + url: parseURL(input, base ?? options.base), + options: options, + basePath: '' + }; + this.analyze(); + } + analyze() { + var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig, _this_Internal_domainLocale, _this_Internal_options_nextConfig_i18n1, _this_Internal_options_nextConfig1; + const info = (0, _getnextpathnameinfo.getNextPathnameInfo)(this[Internal].url.pathname, { + nextConfig: this[Internal].options.nextConfig, + parseData: !("TURBOPACK compile-time value", void 0), + i18nProvider: this[Internal].options.i18nProvider + }); + const hostname = (0, _gethostname.getHostname)(this[Internal].url, this[Internal].options.headers); + this[Internal].domainLocale = this[Internal].options.i18nProvider ? this[Internal].options.i18nProvider.detectDomainLocale(hostname) : (0, _detectdomainlocale.detectDomainLocale)((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.domains, hostname); + const defaultLocale = ((_this_Internal_domainLocale = this[Internal].domainLocale) == null ? void 0 : _this_Internal_domainLocale.defaultLocale) || ((_this_Internal_options_nextConfig1 = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n1 = _this_Internal_options_nextConfig1.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n1.defaultLocale); + this[Internal].url.pathname = info.pathname; + this[Internal].defaultLocale = defaultLocale; + this[Internal].basePath = info.basePath ?? ''; + this[Internal].buildId = info.buildId; + this[Internal].locale = info.locale ?? defaultLocale; + this[Internal].trailingSlash = info.trailingSlash; + } + formatPathname() { + return (0, _formatnextpathnameinfo.formatNextPathnameInfo)({ + basePath: this[Internal].basePath, + buildId: this[Internal].buildId, + defaultLocale: !this[Internal].options.forceLocale ? this[Internal].defaultLocale : undefined, + locale: this[Internal].locale, + pathname: this[Internal].url.pathname, + trailingSlash: this[Internal].trailingSlash + }); + } + formatSearch() { + return this[Internal].url.search; + } + get buildId() { + return this[Internal].buildId; + } + set buildId(buildId) { + this[Internal].buildId = buildId; + } + get locale() { + return this[Internal].locale ?? ''; + } + set locale(locale) { + var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig; + if (!this[Internal].locale || !((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.locales.includes(locale))) { + throw Object.defineProperty(new TypeError(`The NextURL configuration includes no locale "${locale}"`), "__NEXT_ERROR_CODE", { + value: "E597", + enumerable: false, + configurable: true + }); + } + this[Internal].locale = locale; + } + get defaultLocale() { + return this[Internal].defaultLocale; + } + get domainLocale() { + return this[Internal].domainLocale; + } + get searchParams() { + return this[Internal].url.searchParams; + } + get host() { + return this[Internal].url.host; + } + set host(value) { + this[Internal].url.host = value; + } + get hostname() { + return this[Internal].url.hostname; + } + set hostname(value) { + this[Internal].url.hostname = value; + } + get port() { + return this[Internal].url.port; + } + set port(value) { + this[Internal].url.port = value; + } + get protocol() { + return this[Internal].url.protocol; + } + set protocol(value) { + this[Internal].url.protocol = value; + } + get href() { + const pathname = this.formatPathname(); + const search = this.formatSearch(); + return `${this.protocol}//${this.host}${pathname}${search}${this.hash}`; + } + set href(url) { + this[Internal].url = parseURL(url); + this.analyze(); + } + get origin() { + return this[Internal].url.origin; + } + get pathname() { + return this[Internal].url.pathname; + } + set pathname(value) { + this[Internal].url.pathname = value; + } + get hash() { + return this[Internal].url.hash; + } + set hash(value) { + this[Internal].url.hash = value; + } + get search() { + return this[Internal].url.search; + } + set search(value) { + this[Internal].url.search = value; + } + get password() { + return this[Internal].url.password; + } + set password(value) { + this[Internal].url.password = value; + } + get username() { + return this[Internal].url.username; + } + set username(value) { + this[Internal].url.username = value; + } + get basePath() { + return this[Internal].basePath; + } + set basePath(value) { + this[Internal].basePath = value.startsWith('/') ? value : `/${value}`; + } + toString() { + return this.href; + } + toJSON() { + return this.href; + } + [Symbol.for('edge-runtime.inspect.custom')]() { + return { + href: this.href, + origin: this.origin, + protocol: this.protocol, + username: this.username, + password: this.password, + host: this.host, + hostname: this.hostname, + port: this.port, + pathname: this.pathname, + search: this.search, + searchParams: this.searchParams, + hash: this.hash + }; + } + clone() { + return new NextURL(String(this), this[Internal].options); + } +} //# sourceMappingURL=next-url.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/constants.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + ACTION_SUFFIX: null, + APP_DIR_ALIAS: null, + CACHE_ONE_YEAR: null, + DOT_NEXT_ALIAS: null, + ESLINT_DEFAULT_DIRS: null, + GSP_NO_RETURNED_VALUE: null, + GSSP_COMPONENT_MEMBER_ERROR: null, + GSSP_NO_RETURNED_VALUE: null, + HTML_CONTENT_TYPE_HEADER: null, + INFINITE_CACHE: null, + INSTRUMENTATION_HOOK_FILENAME: null, + JSON_CONTENT_TYPE_HEADER: null, + MATCHED_PATH_HEADER: null, + MIDDLEWARE_FILENAME: null, + MIDDLEWARE_LOCATION_REGEXP: null, + NEXT_BODY_SUFFIX: null, + NEXT_CACHE_IMPLICIT_TAG_ID: null, + NEXT_CACHE_REVALIDATED_TAGS_HEADER: null, + NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER: null, + NEXT_CACHE_SOFT_TAG_MAX_LENGTH: null, + NEXT_CACHE_TAGS_HEADER: null, + NEXT_CACHE_TAG_MAX_ITEMS: null, + NEXT_CACHE_TAG_MAX_LENGTH: null, + NEXT_DATA_SUFFIX: null, + NEXT_INTERCEPTION_MARKER_PREFIX: null, + NEXT_META_SUFFIX: null, + NEXT_QUERY_PARAM_PREFIX: null, + NEXT_RESUME_HEADER: null, + NON_STANDARD_NODE_ENV: null, + PAGES_DIR_ALIAS: null, + PRERENDER_REVALIDATE_HEADER: null, + PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER: null, + PROXY_FILENAME: null, + PROXY_LOCATION_REGEXP: null, + PUBLIC_DIR_MIDDLEWARE_CONFLICT: null, + ROOT_DIR_ALIAS: null, + RSC_ACTION_CLIENT_WRAPPER_ALIAS: null, + RSC_ACTION_ENCRYPTION_ALIAS: null, + RSC_ACTION_PROXY_ALIAS: null, + RSC_ACTION_VALIDATE_ALIAS: null, + RSC_CACHE_WRAPPER_ALIAS: null, + RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS: null, + RSC_MOD_REF_PROXY_ALIAS: null, + RSC_SEGMENTS_DIR_SUFFIX: null, + RSC_SEGMENT_SUFFIX: null, + RSC_SUFFIX: null, + SERVER_PROPS_EXPORT_ERROR: null, + SERVER_PROPS_GET_INIT_PROPS_CONFLICT: null, + SERVER_PROPS_SSG_CONFLICT: null, + SERVER_RUNTIME: null, + SSG_FALLBACK_EXPORT_ERROR: null, + SSG_GET_INITIAL_PROPS_CONFLICT: null, + STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR: null, + TEXT_PLAIN_CONTENT_TYPE_HEADER: null, + UNSTABLE_REVALIDATE_RENAME_ERROR: null, + WEBPACK_LAYERS: null, + WEBPACK_RESOURCE_QUERIES: null, + WEB_SOCKET_MAX_RECONNECTIONS: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + ACTION_SUFFIX: function() { + return ACTION_SUFFIX; + }, + APP_DIR_ALIAS: function() { + return APP_DIR_ALIAS; + }, + CACHE_ONE_YEAR: function() { + return CACHE_ONE_YEAR; + }, + DOT_NEXT_ALIAS: function() { + return DOT_NEXT_ALIAS; + }, + ESLINT_DEFAULT_DIRS: function() { + return ESLINT_DEFAULT_DIRS; + }, + GSP_NO_RETURNED_VALUE: function() { + return GSP_NO_RETURNED_VALUE; + }, + GSSP_COMPONENT_MEMBER_ERROR: function() { + return GSSP_COMPONENT_MEMBER_ERROR; + }, + GSSP_NO_RETURNED_VALUE: function() { + return GSSP_NO_RETURNED_VALUE; + }, + HTML_CONTENT_TYPE_HEADER: function() { + return HTML_CONTENT_TYPE_HEADER; + }, + INFINITE_CACHE: function() { + return INFINITE_CACHE; + }, + INSTRUMENTATION_HOOK_FILENAME: function() { + return INSTRUMENTATION_HOOK_FILENAME; + }, + JSON_CONTENT_TYPE_HEADER: function() { + return JSON_CONTENT_TYPE_HEADER; + }, + MATCHED_PATH_HEADER: function() { + return MATCHED_PATH_HEADER; + }, + MIDDLEWARE_FILENAME: function() { + return MIDDLEWARE_FILENAME; + }, + MIDDLEWARE_LOCATION_REGEXP: function() { + return MIDDLEWARE_LOCATION_REGEXP; + }, + NEXT_BODY_SUFFIX: function() { + return NEXT_BODY_SUFFIX; + }, + NEXT_CACHE_IMPLICIT_TAG_ID: function() { + return NEXT_CACHE_IMPLICIT_TAG_ID; + }, + NEXT_CACHE_REVALIDATED_TAGS_HEADER: function() { + return NEXT_CACHE_REVALIDATED_TAGS_HEADER; + }, + NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER: function() { + return NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER; + }, + NEXT_CACHE_SOFT_TAG_MAX_LENGTH: function() { + return NEXT_CACHE_SOFT_TAG_MAX_LENGTH; + }, + NEXT_CACHE_TAGS_HEADER: function() { + return NEXT_CACHE_TAGS_HEADER; + }, + NEXT_CACHE_TAG_MAX_ITEMS: function() { + return NEXT_CACHE_TAG_MAX_ITEMS; + }, + NEXT_CACHE_TAG_MAX_LENGTH: function() { + return NEXT_CACHE_TAG_MAX_LENGTH; + }, + NEXT_DATA_SUFFIX: function() { + return NEXT_DATA_SUFFIX; + }, + NEXT_INTERCEPTION_MARKER_PREFIX: function() { + return NEXT_INTERCEPTION_MARKER_PREFIX; + }, + NEXT_META_SUFFIX: function() { + return NEXT_META_SUFFIX; + }, + NEXT_QUERY_PARAM_PREFIX: function() { + return NEXT_QUERY_PARAM_PREFIX; + }, + NEXT_RESUME_HEADER: function() { + return NEXT_RESUME_HEADER; + }, + NON_STANDARD_NODE_ENV: function() { + return NON_STANDARD_NODE_ENV; + }, + PAGES_DIR_ALIAS: function() { + return PAGES_DIR_ALIAS; + }, + PRERENDER_REVALIDATE_HEADER: function() { + return PRERENDER_REVALIDATE_HEADER; + }, + PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER: function() { + return PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER; + }, + PROXY_FILENAME: function() { + return PROXY_FILENAME; + }, + PROXY_LOCATION_REGEXP: function() { + return PROXY_LOCATION_REGEXP; + }, + PUBLIC_DIR_MIDDLEWARE_CONFLICT: function() { + return PUBLIC_DIR_MIDDLEWARE_CONFLICT; + }, + ROOT_DIR_ALIAS: function() { + return ROOT_DIR_ALIAS; + }, + RSC_ACTION_CLIENT_WRAPPER_ALIAS: function() { + return RSC_ACTION_CLIENT_WRAPPER_ALIAS; + }, + RSC_ACTION_ENCRYPTION_ALIAS: function() { + return RSC_ACTION_ENCRYPTION_ALIAS; + }, + RSC_ACTION_PROXY_ALIAS: function() { + return RSC_ACTION_PROXY_ALIAS; + }, + RSC_ACTION_VALIDATE_ALIAS: function() { + return RSC_ACTION_VALIDATE_ALIAS; + }, + RSC_CACHE_WRAPPER_ALIAS: function() { + return RSC_CACHE_WRAPPER_ALIAS; + }, + RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS: function() { + return RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS; + }, + RSC_MOD_REF_PROXY_ALIAS: function() { + return RSC_MOD_REF_PROXY_ALIAS; + }, + RSC_SEGMENTS_DIR_SUFFIX: function() { + return RSC_SEGMENTS_DIR_SUFFIX; + }, + RSC_SEGMENT_SUFFIX: function() { + return RSC_SEGMENT_SUFFIX; + }, + RSC_SUFFIX: function() { + return RSC_SUFFIX; + }, + SERVER_PROPS_EXPORT_ERROR: function() { + return SERVER_PROPS_EXPORT_ERROR; + }, + SERVER_PROPS_GET_INIT_PROPS_CONFLICT: function() { + return SERVER_PROPS_GET_INIT_PROPS_CONFLICT; + }, + SERVER_PROPS_SSG_CONFLICT: function() { + return SERVER_PROPS_SSG_CONFLICT; + }, + SERVER_RUNTIME: function() { + return SERVER_RUNTIME; + }, + SSG_FALLBACK_EXPORT_ERROR: function() { + return SSG_FALLBACK_EXPORT_ERROR; + }, + SSG_GET_INITIAL_PROPS_CONFLICT: function() { + return SSG_GET_INITIAL_PROPS_CONFLICT; + }, + STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR: function() { + return STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR; + }, + TEXT_PLAIN_CONTENT_TYPE_HEADER: function() { + return TEXT_PLAIN_CONTENT_TYPE_HEADER; + }, + UNSTABLE_REVALIDATE_RENAME_ERROR: function() { + return UNSTABLE_REVALIDATE_RENAME_ERROR; + }, + WEBPACK_LAYERS: function() { + return WEBPACK_LAYERS; + }, + WEBPACK_RESOURCE_QUERIES: function() { + return WEBPACK_RESOURCE_QUERIES; + }, + WEB_SOCKET_MAX_RECONNECTIONS: function() { + return WEB_SOCKET_MAX_RECONNECTIONS; + } +}); +const TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain'; +const HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8'; +const JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8'; +const NEXT_QUERY_PARAM_PREFIX = 'nxtP'; +const NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI'; +const MATCHED_PATH_HEADER = 'x-matched-path'; +const PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate'; +const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER = 'x-prerender-revalidate-if-generated'; +const RSC_SEGMENTS_DIR_SUFFIX = '.segments'; +const RSC_SEGMENT_SUFFIX = '.segment.rsc'; +const RSC_SUFFIX = '.rsc'; +const ACTION_SUFFIX = '.action'; +const NEXT_DATA_SUFFIX = '.json'; +const NEXT_META_SUFFIX = '.meta'; +const NEXT_BODY_SUFFIX = '.body'; +const NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags'; +const NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags'; +const NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER = 'x-next-revalidate-tag-token'; +const NEXT_RESUME_HEADER = 'next-resume'; +const NEXT_CACHE_TAG_MAX_ITEMS = 128; +const NEXT_CACHE_TAG_MAX_LENGTH = 256; +const NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024; +const NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_'; +const CACHE_ONE_YEAR = 31536000; +const INFINITE_CACHE = 0xfffffffe; +const MIDDLEWARE_FILENAME = 'middleware'; +const MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`; +const PROXY_FILENAME = 'proxy'; +const PROXY_LOCATION_REGEXP = `(?:src/)?${PROXY_FILENAME}`; +const INSTRUMENTATION_HOOK_FILENAME = 'instrumentation'; +const PAGES_DIR_ALIAS = 'private-next-pages'; +const DOT_NEXT_ALIAS = 'private-dot-next'; +const ROOT_DIR_ALIAS = 'private-next-root-dir'; +const APP_DIR_ALIAS = 'private-next-app-dir'; +const RSC_MOD_REF_PROXY_ALIAS = 'private-next-rsc-mod-ref-proxy'; +const RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate'; +const RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference'; +const RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper'; +const RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS = 'private-next-rsc-track-dynamic-import'; +const RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption'; +const RSC_ACTION_CLIENT_WRAPPER_ALIAS = 'private-next-rsc-action-client-wrapper'; +const PUBLIC_DIR_MIDDLEWARE_CONFLICT = `You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`; +const SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`; +const SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`; +const SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`; +const STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`; +const SERVER_PROPS_EXPORT_ERROR = `pages with \`getServerSideProps\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`; +const GSP_NO_RETURNED_VALUE = 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?'; +const GSSP_NO_RETURNED_VALUE = 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?'; +const UNSTABLE_REVALIDATE_RENAME_ERROR = 'The `unstable_revalidate` property is available for general use.\n' + 'Please use `revalidate` instead.'; +const GSSP_COMPONENT_MEMBER_ERROR = `can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`; +const NON_STANDARD_NODE_ENV = `You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`; +const SSG_FALLBACK_EXPORT_ERROR = `Pages with \`fallback\` enabled in \`getStaticPaths\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`; +const ESLINT_DEFAULT_DIRS = [ + 'app', + 'pages', + 'components', + 'lib', + 'src' +]; +const SERVER_RUNTIME = { + edge: 'edge', + experimentalEdge: 'experimental-edge', + nodejs: 'nodejs' +}; +const WEB_SOCKET_MAX_RECONNECTIONS = 12; +/** + * The names of the webpack layers. These layers are the primitives for the + * webpack chunks. + */ const WEBPACK_LAYERS_NAMES = { + /** + * The layer for the shared code between the client and server bundles. + */ shared: 'shared', + /** + * The layer for server-only runtime and picking up `react-server` export conditions. + * Including app router RSC pages and app router custom routes and metadata routes. + */ reactServerComponents: 'rsc', + /** + * Server Side Rendering layer for app (ssr). + */ serverSideRendering: 'ssr', + /** + * The browser client bundle layer for actions. + */ actionBrowser: 'action-browser', + /** + * The Node.js bundle layer for the API routes. + */ apiNode: 'api-node', + /** + * The Edge Lite bundle layer for the API routes. + */ apiEdge: 'api-edge', + /** + * The layer for the middleware code. + */ middleware: 'middleware', + /** + * The layer for the instrumentation hooks. + */ instrument: 'instrument', + /** + * The layer for assets on the edge. + */ edgeAsset: 'edge-asset', + /** + * The browser client bundle layer for App directory. + */ appPagesBrowser: 'app-pages-browser', + /** + * The browser client bundle layer for Pages directory. + */ pagesDirBrowser: 'pages-dir-browser', + /** + * The Edge Lite bundle layer for Pages directory. + */ pagesDirEdge: 'pages-dir-edge', + /** + * The Node.js bundle layer for Pages directory. + */ pagesDirNode: 'pages-dir-node' +}; +const WEBPACK_LAYERS = { + ...WEBPACK_LAYERS_NAMES, + GROUP: { + builtinReact: [ + WEBPACK_LAYERS_NAMES.reactServerComponents, + WEBPACK_LAYERS_NAMES.actionBrowser + ], + serverOnly: [ + WEBPACK_LAYERS_NAMES.reactServerComponents, + WEBPACK_LAYERS_NAMES.actionBrowser, + WEBPACK_LAYERS_NAMES.instrument, + WEBPACK_LAYERS_NAMES.middleware + ], + neutralTarget: [ + // pages api + WEBPACK_LAYERS_NAMES.apiNode, + WEBPACK_LAYERS_NAMES.apiEdge + ], + clientOnly: [ + WEBPACK_LAYERS_NAMES.serverSideRendering, + WEBPACK_LAYERS_NAMES.appPagesBrowser + ], + bundled: [ + WEBPACK_LAYERS_NAMES.reactServerComponents, + WEBPACK_LAYERS_NAMES.actionBrowser, + WEBPACK_LAYERS_NAMES.serverSideRendering, + WEBPACK_LAYERS_NAMES.appPagesBrowser, + WEBPACK_LAYERS_NAMES.shared, + WEBPACK_LAYERS_NAMES.instrument, + WEBPACK_LAYERS_NAMES.middleware + ], + appPages: [ + // app router pages and layouts + WEBPACK_LAYERS_NAMES.reactServerComponents, + WEBPACK_LAYERS_NAMES.serverSideRendering, + WEBPACK_LAYERS_NAMES.appPagesBrowser, + WEBPACK_LAYERS_NAMES.actionBrowser + ] + } +}; +const WEBPACK_RESOURCE_QUERIES = { + edgeSSREntry: '__next_edge_ssr_entry__', + metadata: '__next_metadata__', + metadataRoute: '__next_metadata_route__', + metadataImageMeta: '__next_metadata_image_meta__' +}; //# sourceMappingURL=constants.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/utils.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + fromNodeOutgoingHttpHeaders: null, + normalizeNextQueryParam: null, + splitCookiesString: null, + toNodeOutgoingHttpHeaders: null, + validateURL: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + fromNodeOutgoingHttpHeaders: function() { + return fromNodeOutgoingHttpHeaders; + }, + normalizeNextQueryParam: function() { + return normalizeNextQueryParam; + }, + splitCookiesString: function() { + return splitCookiesString; + }, + toNodeOutgoingHttpHeaders: function() { + return toNodeOutgoingHttpHeaders; + }, + validateURL: function() { + return validateURL; + } +}); +const _constants = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/constants.js [app-route] (ecmascript)"); +function fromNodeOutgoingHttpHeaders(nodeHeaders) { + const headers = new Headers(); + for (let [key, value] of Object.entries(nodeHeaders)){ + const values = Array.isArray(value) ? value : [ + value + ]; + for (let v of values){ + if (typeof v === 'undefined') continue; + if (typeof v === 'number') { + v = v.toString(); + } + headers.append(key, v); + } + } + return headers; +} +function splitCookiesString(cookiesString) { + var cookiesStrings = []; + var pos = 0; + var start; + var ch; + var lastComma; + var nextStart; + var cookiesSeparatorFound; + function skipWhitespace() { + while(pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos))){ + pos += 1; + } + return pos < cookiesString.length; + } + function notSpecialChar() { + ch = cookiesString.charAt(pos); + return ch !== '=' && ch !== ';' && ch !== ','; + } + while(pos < cookiesString.length){ + start = pos; + cookiesSeparatorFound = false; + while(skipWhitespace()){ + ch = cookiesString.charAt(pos); + if (ch === ',') { + // ',' is a cookie separator if we have later first '=', not ';' or ',' + lastComma = pos; + pos += 1; + skipWhitespace(); + nextStart = pos; + while(pos < cookiesString.length && notSpecialChar()){ + pos += 1; + } + // currently special character + if (pos < cookiesString.length && cookiesString.charAt(pos) === '=') { + // we found cookies separator + cookiesSeparatorFound = true; + // pos is inside the next cookie, so back up and return it. + pos = nextStart; + cookiesStrings.push(cookiesString.substring(start, lastComma)); + start = pos; + } else { + // in param ',' or param separator ';', + // we continue from that comma + pos = lastComma + 1; + } + } else { + pos += 1; + } + } + if (!cookiesSeparatorFound || pos >= cookiesString.length) { + cookiesStrings.push(cookiesString.substring(start, cookiesString.length)); + } + } + return cookiesStrings; +} +function toNodeOutgoingHttpHeaders(headers) { + const nodeHeaders = {}; + const cookies = []; + if (headers) { + for (const [key, value] of headers.entries()){ + if (key.toLowerCase() === 'set-cookie') { + // We may have gotten a comma joined string of cookies, or multiple + // set-cookie headers. We need to merge them into one header array + // to represent all the cookies. + cookies.push(...splitCookiesString(value)); + nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies; + } else { + nodeHeaders[key] = value; + } + } + } + return nodeHeaders; +} +function validateURL(url) { + try { + return String(new URL(String(url))); + } catch (error) { + throw Object.defineProperty(new Error(`URL is malformed "${String(url)}". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`, { + cause: error + }), "__NEXT_ERROR_CODE", { + value: "E61", + enumerable: false, + configurable: true + }); + } +} +function normalizeNextQueryParam(key) { + const prefixes = [ + _constants.NEXT_QUERY_PARAM_PREFIX, + _constants.NEXT_INTERCEPTION_MARKER_PREFIX + ]; + for (const prefix of prefixes){ + if (key !== prefix && key.startsWith(prefix)) { + return key.substring(prefix.length); + } + } + return null; +} //# sourceMappingURL=utils.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/error.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + PageSignatureError: null, + RemovedPageError: null, + RemovedUAError: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + PageSignatureError: function() { + return PageSignatureError; + }, + RemovedPageError: function() { + return RemovedPageError; + }, + RemovedUAError: function() { + return RemovedUAError; + } +}); +class PageSignatureError extends Error { + constructor({ page }){ + super(`The middleware "${page}" accepts an async API directly with the form: + + export function middleware(request, event) { + return NextResponse.redirect('/new-location') + } + + Read more: https://nextjs.org/docs/messages/middleware-new-signature + `); + } +} +class RemovedPageError extends Error { + constructor(){ + super(`The request.page has been deprecated in favour of \`URLPattern\`. + Read more: https://nextjs.org/docs/messages/middleware-request-page + `); + } +} +class RemovedUAError extends Error { + constructor(){ + super(`The request.ua has been removed in favour of \`userAgent\` function. + Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent + `); + } +} //# sourceMappingURL=error.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/cookies.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + RequestCookies: null, + ResponseCookies: null, + stringifyCookie: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + RequestCookies: function() { + return _cookies.RequestCookies; + }, + ResponseCookies: function() { + return _cookies.ResponseCookies; + }, + stringifyCookie: function() { + return _cookies.stringifyCookie; + } +}); +const _cookies = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js [app-route] (ecmascript)"); //# sourceMappingURL=cookies.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/request.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + INTERNALS: null, + NextRequest: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + INTERNALS: function() { + return INTERNALS; + }, + NextRequest: function() { + return NextRequest; + } +}); +const _nexturl = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/next-url.js [app-route] (ecmascript)"); +const _utils = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/utils.js [app-route] (ecmascript)"); +const _error = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/error.js [app-route] (ecmascript)"); +const _cookies = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/cookies.js [app-route] (ecmascript)"); +const INTERNALS = Symbol('internal request'); +class NextRequest extends Request { + constructor(input, init = {}){ + const url = typeof input !== 'string' && 'url' in input ? input.url : String(input); + (0, _utils.validateURL)(url); + // node Request instance requires duplex option when a body + // is present or it errors, we don't handle this for + // Request being passed in since it would have already + // errored if this wasn't configured + if ("TURBOPACK compile-time truthy", 1) { + if (init.body && init.duplex !== 'half') { + init.duplex = 'half'; + } + } + if (input instanceof Request) super(input, init); + else super(url, init); + const nextUrl = new _nexturl.NextURL(url, { + headers: (0, _utils.toNodeOutgoingHttpHeaders)(this.headers), + nextConfig: init.nextConfig + }); + this[INTERNALS] = { + cookies: new _cookies.RequestCookies(this.headers), + nextUrl, + url: ("TURBOPACK compile-time falsy", 0) ? "TURBOPACK unreachable" : nextUrl.toString() + }; + } + [Symbol.for('edge-runtime.inspect.custom')]() { + return { + cookies: this.cookies, + nextUrl: this.nextUrl, + url: this.url, + // rest of props come from Request + bodyUsed: this.bodyUsed, + cache: this.cache, + credentials: this.credentials, + destination: this.destination, + headers: Object.fromEntries(this.headers), + integrity: this.integrity, + keepalive: this.keepalive, + method: this.method, + mode: this.mode, + redirect: this.redirect, + referrer: this.referrer, + referrerPolicy: this.referrerPolicy, + signal: this.signal + }; + } + get cookies() { + return this[INTERNALS].cookies; + } + get nextUrl() { + return this[INTERNALS].nextUrl; + } + /** + * @deprecated + * `page` has been deprecated in favour of `URLPattern`. + * Read more: https://nextjs.org/docs/messages/middleware-request-page + */ get page() { + throw new _error.RemovedPageError(); + } + /** + * @deprecated + * `ua` has been removed in favour of \`userAgent\` function. + * Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent + */ get ua() { + throw new _error.RemovedUAError(); + } + get url() { + return this[INTERNALS].url; + } +} //# sourceMappingURL=request.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/adapters/reflect.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "ReflectAdapter", { + enumerable: true, + get: function() { + return ReflectAdapter; + } +}); +class ReflectAdapter { + static get(target, prop, receiver) { + const value = Reflect.get(target, prop, receiver); + if (typeof value === 'function') { + return value.bind(target); + } + return value; + } + static set(target, prop, value, receiver) { + return Reflect.set(target, prop, value, receiver); + } + static has(target, prop) { + return Reflect.has(target, prop); + } + static deleteProperty(target, prop) { + return Reflect.deleteProperty(target, prop); + } +} //# sourceMappingURL=reflect.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/response.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "NextResponse", { + enumerable: true, + get: function() { + return NextResponse; + } +}); +const _cookies = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/cookies.js [app-route] (ecmascript)"); +const _nexturl = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/next-url.js [app-route] (ecmascript)"); +const _utils = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/utils.js [app-route] (ecmascript)"); +const _reflect = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/adapters/reflect.js [app-route] (ecmascript)"); +const _cookies1 = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/cookies.js [app-route] (ecmascript)"); +const INTERNALS = Symbol('internal response'); +const REDIRECTS = new Set([ + 301, + 302, + 303, + 307, + 308 +]); +function handleMiddlewareField(init, headers) { + var _init_request; + if (init == null ? void 0 : (_init_request = init.request) == null ? void 0 : _init_request.headers) { + if (!(init.request.headers instanceof Headers)) { + throw Object.defineProperty(new Error('request.headers must be an instance of Headers'), "__NEXT_ERROR_CODE", { + value: "E119", + enumerable: false, + configurable: true + }); + } + const keys = []; + for (const [key, value] of init.request.headers){ + headers.set('x-middleware-request-' + key, value); + keys.push(key); + } + headers.set('x-middleware-override-headers', keys.join(',')); + } +} +class NextResponse extends Response { + constructor(body, init = {}){ + super(body, init); + const headers = this.headers; + const cookies = new _cookies1.ResponseCookies(headers); + const cookiesProxy = new Proxy(cookies, { + get (target, prop, receiver) { + switch(prop){ + case 'delete': + case 'set': + { + return (...args)=>{ + const result = Reflect.apply(target[prop], target, args); + const newHeaders = new Headers(headers); + if (result instanceof _cookies1.ResponseCookies) { + headers.set('x-middleware-set-cookie', result.getAll().map((cookie)=>(0, _cookies.stringifyCookie)(cookie)).join(',')); + } + handleMiddlewareField(init, newHeaders); + return result; + }; + } + default: + return _reflect.ReflectAdapter.get(target, prop, receiver); + } + } + }); + this[INTERNALS] = { + cookies: cookiesProxy, + url: init.url ? new _nexturl.NextURL(init.url, { + headers: (0, _utils.toNodeOutgoingHttpHeaders)(headers), + nextConfig: init.nextConfig + }) : undefined + }; + } + [Symbol.for('edge-runtime.inspect.custom')]() { + return { + cookies: this.cookies, + url: this.url, + // rest of props come from Response + body: this.body, + bodyUsed: this.bodyUsed, + headers: Object.fromEntries(this.headers), + ok: this.ok, + redirected: this.redirected, + status: this.status, + statusText: this.statusText, + type: this.type + }; + } + get cookies() { + return this[INTERNALS].cookies; + } + static json(body, init) { + const response = Response.json(body, init); + return new NextResponse(response.body, response); + } + static redirect(url, init) { + const status = typeof init === 'number' ? init : (init == null ? void 0 : init.status) ?? 307; + if (!REDIRECTS.has(status)) { + throw Object.defineProperty(new RangeError('Failed to execute "redirect" on "response": Invalid status code'), "__NEXT_ERROR_CODE", { + value: "E529", + enumerable: false, + configurable: true + }); + } + const initObj = typeof init === 'object' ? init : {}; + const headers = new Headers(initObj == null ? void 0 : initObj.headers); + headers.set('Location', (0, _utils.validateURL)(url)); + return new NextResponse(null, { + ...initObj, + headers, + status + }); + } + static rewrite(destination, init) { + const headers = new Headers(init == null ? void 0 : init.headers); + headers.set('x-middleware-rewrite', (0, _utils.validateURL)(destination)); + handleMiddlewareField(init, headers); + return new NextResponse(null, { + ...init, + headers + }); + } + static next(init) { + const headers = new Headers(init == null ? void 0 : init.headers); + headers.set('x-middleware-next', '1'); + handleMiddlewareField(init, headers); + return new NextResponse(null, { + ...init, + headers + }); + } +} //# sourceMappingURL=response.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/image-response.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +/** + * @deprecated ImageResponse moved from "next/server" to "next/og" since Next.js 14, please import from "next/og" instead. + * Migration with codemods: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#next-og-import + */ Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "ImageResponse", { + enumerable: true, + get: function() { + return ImageResponse; + } +}); +function ImageResponse() { + throw Object.defineProperty(new Error('ImageResponse moved from "next/server" to "next/og" since Next.js 14, please import from "next/og" instead'), "__NEXT_ERROR_CODE", { + value: "E183", + enumerable: false, + configurable: true + }); +} //# sourceMappingURL=image-response.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/ua-parser-js/ua-parser.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { + +(()=>{ + var i = { + 226: function(i, e) { + (function(o, a) { + "use strict"; + var r = "1.0.35", t = "", n = "?", s = "function", b = "undefined", w = "object", l = "string", d = "major", c = "model", u = "name", p = "type", m = "vendor", f = "version", h = "architecture", v = "console", g = "mobile", k = "tablet", x = "smarttv", _ = "wearable", y = "embedded", q = 350; + var T = "Amazon", S = "Apple", z = "ASUS", N = "BlackBerry", A = "Browser", C = "Chrome", E = "Edge", O = "Firefox", U = "Google", j = "Huawei", P = "LG", R = "Microsoft", M = "Motorola", B = "Opera", V = "Samsung", D = "Sharp", I = "Sony", W = "Viera", F = "Xiaomi", G = "Zebra", H = "Facebook", L = "Chromium OS", Z = "Mac OS"; + var extend = function(i, e) { + var o = {}; + for(var a in i){ + if (e[a] && e[a].length % 2 === 0) { + o[a] = e[a].concat(i[a]); + } else { + o[a] = i[a]; + } + } + return o; + }, enumerize = function(i) { + var e = {}; + for(var o = 0; o < i.length; o++){ + e[i[o].toUpperCase()] = i[o]; + } + return e; + }, has = function(i, e) { + return typeof i === l ? lowerize(e).indexOf(lowerize(i)) !== -1 : false; + }, lowerize = function(i) { + return i.toLowerCase(); + }, majorize = function(i) { + return typeof i === l ? i.replace(/[^\d\.]/g, t).split(".")[0] : a; + }, trim = function(i, e) { + if (typeof i === l) { + i = i.replace(/^\s\s*/, t); + return typeof e === b ? i : i.substring(0, q); + } + }; + var rgxMapper = function(i, e) { + var o = 0, r, t, n, b, l, d; + while(o < e.length && !l){ + var c = e[o], u = e[o + 1]; + r = t = 0; + while(r < c.length && !l){ + if (!c[r]) { + break; + } + l = c[r++].exec(i); + if (!!l) { + for(n = 0; n < u.length; n++){ + d = l[++t]; + b = u[n]; + if (typeof b === w && b.length > 0) { + if (b.length === 2) { + if (typeof b[1] == s) { + this[b[0]] = b[1].call(this, d); + } else { + this[b[0]] = b[1]; + } + } else if (b.length === 3) { + if (typeof b[1] === s && !(b[1].exec && b[1].test)) { + this[b[0]] = d ? b[1].call(this, d, b[2]) : a; + } else { + this[b[0]] = d ? d.replace(b[1], b[2]) : a; + } + } else if (b.length === 4) { + this[b[0]] = d ? b[3].call(this, d.replace(b[1], b[2])) : a; + } + } else { + this[b] = d ? d : a; + } + } + } + } + o += 2; + } + }, strMapper = function(i, e) { + for(var o in e){ + if (typeof e[o] === w && e[o].length > 0) { + for(var r = 0; r < e[o].length; r++){ + if (has(e[o][r], i)) { + return o === n ? a : o; + } + } + } else if (has(e[o], i)) { + return o === n ? a : o; + } + } + return i; + }; + var $ = { + "1.0": "/8", + 1.2: "/1", + 1.3: "/3", + "2.0": "/412", + "2.0.2": "/416", + "2.0.3": "/417", + "2.0.4": "/419", + "?": "/" + }, X = { + ME: "4.90", + "NT 3.11": "NT3.51", + "NT 4.0": "NT4.0", + 2e3: "NT 5.0", + XP: [ + "NT 5.1", + "NT 5.2" + ], + Vista: "NT 6.0", + 7: "NT 6.1", + 8: "NT 6.2", + 8.1: "NT 6.3", + 10: [ + "NT 6.4", + "NT 10.0" + ], + RT: "ARM" + }; + var K = { + browser: [ + [ + /\b(?:crmo|crios)\/([\w\.]+)/i + ], + [ + f, + [ + u, + "Chrome" + ] + ], + [ + /edg(?:e|ios|a)?\/([\w\.]+)/i + ], + [ + f, + [ + u, + "Edge" + ] + ], + [ + /(opera mini)\/([-\w\.]+)/i, + /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i, + /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i + ], + [ + u, + f + ], + [ + /opios[\/ ]+([\w\.]+)/i + ], + [ + f, + [ + u, + B + " Mini" + ] + ], + [ + /\bopr\/([\w\.]+)/i + ], + [ + f, + [ + u, + B + ] + ], + [ + /(kindle)\/([\w\.]+)/i, + /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i, + /(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i, + /(ba?idubrowser)[\/ ]?([\w\.]+)/i, + /(?:ms|\()(ie) ([\w\.]+)/i, + /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i, + /(heytap|ovi)browser\/([\d\.]+)/i, + /(weibo)__([\d\.]+)/i + ], + [ + u, + f + ], + [ + /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i + ], + [ + f, + [ + u, + "UC" + A + ] + ], + [ + /microm.+\bqbcore\/([\w\.]+)/i, + /\bqbcore\/([\w\.]+).+microm/i + ], + [ + f, + [ + u, + "WeChat(Win) Desktop" + ] + ], + [ + /micromessenger\/([\w\.]+)/i + ], + [ + f, + [ + u, + "WeChat" + ] + ], + [ + /konqueror\/([\w\.]+)/i + ], + [ + f, + [ + u, + "Konqueror" + ] + ], + [ + /trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i + ], + [ + f, + [ + u, + "IE" + ] + ], + [ + /ya(?:search)?browser\/([\w\.]+)/i + ], + [ + f, + [ + u, + "Yandex" + ] + ], + [ + /(avast|avg)\/([\w\.]+)/i + ], + [ + [ + u, + /(.+)/, + "$1 Secure " + A + ], + f + ], + [ + /\bfocus\/([\w\.]+)/i + ], + [ + f, + [ + u, + O + " Focus" + ] + ], + [ + /\bopt\/([\w\.]+)/i + ], + [ + f, + [ + u, + B + " Touch" + ] + ], + [ + /coc_coc\w+\/([\w\.]+)/i + ], + [ + f, + [ + u, + "Coc Coc" + ] + ], + [ + /dolfin\/([\w\.]+)/i + ], + [ + f, + [ + u, + "Dolphin" + ] + ], + [ + /coast\/([\w\.]+)/i + ], + [ + f, + [ + u, + B + " Coast" + ] + ], + [ + /miuibrowser\/([\w\.]+)/i + ], + [ + f, + [ + u, + "MIUI " + A + ] + ], + [ + /fxios\/([-\w\.]+)/i + ], + [ + f, + [ + u, + O + ] + ], + [ + /\bqihu|(qi?ho?o?|360)browser/i + ], + [ + [ + u, + "360 " + A + ] + ], + [ + /(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i + ], + [ + [ + u, + /(.+)/, + "$1 " + A + ], + f + ], + [ + /(comodo_dragon)\/([\w\.]+)/i + ], + [ + [ + u, + /_/g, + " " + ], + f + ], + [ + /(electron)\/([\w\.]+) safari/i, + /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, + /m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i + ], + [ + u, + f + ], + [ + /(metasr)[\/ ]?([\w\.]+)/i, + /(lbbrowser)/i, + /\[(linkedin)app\]/i + ], + [ + u + ], + [ + /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i + ], + [ + [ + u, + H + ], + f + ], + [ + /(kakao(?:talk|story))[\/ ]([\w\.]+)/i, + /(naver)\(.*?(\d+\.[\w\.]+).*\)/i, + /safari (line)\/([\w\.]+)/i, + /\b(line)\/([\w\.]+)\/iab/i, + /(chromium|instagram)[\/ ]([-\w\.]+)/i + ], + [ + u, + f + ], + [ + /\bgsa\/([\w\.]+) .*safari\//i + ], + [ + f, + [ + u, + "GSA" + ] + ], + [ + /musical_ly(?:.+app_?version\/|_)([\w\.]+)/i + ], + [ + f, + [ + u, + "TikTok" + ] + ], + [ + /headlesschrome(?:\/([\w\.]+)| )/i + ], + [ + f, + [ + u, + C + " Headless" + ] + ], + [ + / wv\).+(chrome)\/([\w\.]+)/i + ], + [ + [ + u, + C + " WebView" + ], + f + ], + [ + /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i + ], + [ + f, + [ + u, + "Android " + A + ] + ], + [ + /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i + ], + [ + u, + f + ], + [ + /version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i + ], + [ + f, + [ + u, + "Mobile Safari" + ] + ], + [ + /version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i + ], + [ + f, + u + ], + [ + /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i + ], + [ + u, + [ + f, + strMapper, + $ + ] + ], + [ + /(webkit|khtml)\/([\w\.]+)/i + ], + [ + u, + f + ], + [ + /(navigator|netscape\d?)\/([-\w\.]+)/i + ], + [ + [ + u, + "Netscape" + ], + f + ], + [ + /mobile vr; rv:([\w\.]+)\).+firefox/i + ], + [ + f, + [ + u, + O + " Reality" + ] + ], + [ + /ekiohf.+(flow)\/([\w\.]+)/i, + /(swiftfox)/i, + /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i, + /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i, + /(firefox)\/([\w\.]+)/i, + /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i, + /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i, + /(links) \(([\w\.]+)/i, + /panasonic;(viera)/i + ], + [ + u, + f + ], + [ + /(cobalt)\/([\w\.]+)/i + ], + [ + u, + [ + f, + /master.|lts./, + "" + ] + ] + ], + cpu: [ + [ + /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i + ], + [ + [ + h, + "amd64" + ] + ], + [ + /(ia32(?=;))/i + ], + [ + [ + h, + lowerize + ] + ], + [ + /((?:i[346]|x)86)[;\)]/i + ], + [ + [ + h, + "ia32" + ] + ], + [ + /\b(aarch64|arm(v?8e?l?|_?64))\b/i + ], + [ + [ + h, + "arm64" + ] + ], + [ + /\b(arm(?:v[67])?ht?n?[fl]p?)\b/i + ], + [ + [ + h, + "armhf" + ] + ], + [ + /windows (ce|mobile); ppc;/i + ], + [ + [ + h, + "arm" + ] + ], + [ + /((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i + ], + [ + [ + h, + /ower/, + t, + lowerize + ] + ], + [ + /(sun4\w)[;\)]/i + ], + [ + [ + h, + "sparc" + ] + ], + [ + /((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i + ], + [ + [ + h, + lowerize + ] + ] + ], + device: [ + [ + /\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i + ], + [ + c, + [ + m, + V + ], + [ + p, + k + ] + ], + [ + /\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i, + /samsung[- ]([-\w]+)/i, + /sec-(sgh\w+)/i + ], + [ + c, + [ + m, + V + ], + [ + p, + g + ] + ], + [ + /(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i + ], + [ + c, + [ + m, + S + ], + [ + p, + g + ] + ], + [ + /\((ipad);[-\w\),; ]+apple/i, + /applecoremedia\/[\w\.]+ \((ipad)/i, + /\b(ipad)\d\d?,\d\d?[;\]].+ios/i + ], + [ + c, + [ + m, + S + ], + [ + p, + k + ] + ], + [ + /(macintosh);/i + ], + [ + c, + [ + m, + S + ] + ], + [ + /\b(sh-?[altvz]?\d\d[a-ekm]?)/i + ], + [ + c, + [ + m, + D + ], + [ + p, + g + ] + ], + [ + /\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i + ], + [ + c, + [ + m, + j + ], + [ + p, + k + ] + ], + [ + /(?:huawei|honor)([-\w ]+)[;\)]/i, + /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i + ], + [ + c, + [ + m, + j + ], + [ + p, + g + ] + ], + [ + /\b(poco[\w ]+)(?: bui|\))/i, + /\b; (\w+) build\/hm\1/i, + /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, + /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, + /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i + ], + [ + [ + c, + /_/g, + " " + ], + [ + m, + F + ], + [ + p, + g + ] + ], + [ + /\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i + ], + [ + [ + c, + /_/g, + " " + ], + [ + m, + F + ], + [ + p, + k + ] + ], + [ + /; (\w+) bui.+ oppo/i, + /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i + ], + [ + c, + [ + m, + "OPPO" + ], + [ + p, + g + ] + ], + [ + /vivo (\w+)(?: bui|\))/i, + /\b(v[12]\d{3}\w?[at])(?: bui|;)/i + ], + [ + c, + [ + m, + "Vivo" + ], + [ + p, + g + ] + ], + [ + /\b(rmx[12]\d{3})(?: bui|;|\))/i + ], + [ + c, + [ + m, + "Realme" + ], + [ + p, + g + ] + ], + [ + /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i, + /\bmot(?:orola)?[- ](\w*)/i, + /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i + ], + [ + c, + [ + m, + M + ], + [ + p, + g + ] + ], + [ + /\b(mz60\d|xoom[2 ]{0,2}) build\//i + ], + [ + c, + [ + m, + M + ], + [ + p, + k + ] + ], + [ + /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i + ], + [ + c, + [ + m, + P + ], + [ + p, + k + ] + ], + [ + /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i, + /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i, + /\blg-?([\d\w]+) bui/i + ], + [ + c, + [ + m, + P + ], + [ + p, + g + ] + ], + [ + /(ideatab[-\w ]+)/i, + /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i + ], + [ + c, + [ + m, + "Lenovo" + ], + [ + p, + k + ] + ], + [ + /(?:maemo|nokia).*(n900|lumia \d+)/i, + /nokia[-_ ]?([-\w\.]*)/i + ], + [ + [ + c, + /_/g, + " " + ], + [ + m, + "Nokia" + ], + [ + p, + g + ] + ], + [ + /(pixel c)\b/i + ], + [ + c, + [ + m, + U + ], + [ + p, + k + ] + ], + [ + /droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i + ], + [ + c, + [ + m, + U + ], + [ + p, + g + ] + ], + [ + /droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i + ], + [ + c, + [ + m, + I + ], + [ + p, + g + ] + ], + [ + /sony tablet [ps]/i, + /\b(?:sony)?sgp\w+(?: bui|\))/i + ], + [ + [ + c, + "Xperia Tablet" + ], + [ + m, + I + ], + [ + p, + k + ] + ], + [ + / (kb2005|in20[12]5|be20[12][59])\b/i, + /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i + ], + [ + c, + [ + m, + "OnePlus" + ], + [ + p, + g + ] + ], + [ + /(alexa)webm/i, + /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i, + /(kf[a-z]+)( bui|\)).+silk\//i + ], + [ + c, + [ + m, + T + ], + [ + p, + k + ] + ], + [ + /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i + ], + [ + [ + c, + /(.+)/g, + "Fire Phone $1" + ], + [ + m, + T + ], + [ + p, + g + ] + ], + [ + /(playbook);[-\w\),; ]+(rim)/i + ], + [ + c, + m, + [ + p, + k + ] + ], + [ + /\b((?:bb[a-f]|st[hv])100-\d)/i, + /\(bb10; (\w+)/i + ], + [ + c, + [ + m, + N + ], + [ + p, + g + ] + ], + [ + /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i + ], + [ + c, + [ + m, + z + ], + [ + p, + k + ] + ], + [ + / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i + ], + [ + c, + [ + m, + z + ], + [ + p, + g + ] + ], + [ + /(nexus 9)/i + ], + [ + c, + [ + m, + "HTC" + ], + [ + p, + k + ] + ], + [ + /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i, + /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i, + /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i + ], + [ + m, + [ + c, + /_/g, + " " + ], + [ + p, + g + ] + ], + [ + /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i + ], + [ + c, + [ + m, + "Acer" + ], + [ + p, + k + ] + ], + [ + /droid.+; (m[1-5] note) bui/i, + /\bmz-([-\w]{2,})/i + ], + [ + c, + [ + m, + "Meizu" + ], + [ + p, + g + ] + ], + [ + /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i, + /(hp) ([\w ]+\w)/i, + /(asus)-?(\w+)/i, + /(microsoft); (lumia[\w ]+)/i, + /(lenovo)[-_ ]?([-\w]+)/i, + /(jolla)/i, + /(oppo) ?([\w ]+) bui/i + ], + [ + m, + c, + [ + p, + g + ] + ], + [ + /(kobo)\s(ereader|touch)/i, + /(archos) (gamepad2?)/i, + /(hp).+(touchpad(?!.+tablet)|tablet)/i, + /(kindle)\/([\w\.]+)/i, + /(nook)[\w ]+build\/(\w+)/i, + /(dell) (strea[kpr\d ]*[\dko])/i, + /(le[- ]+pan)[- ]+(\w{1,9}) bui/i, + /(trinity)[- ]*(t\d{3}) bui/i, + /(gigaset)[- ]+(q\w{1,9}) bui/i, + /(vodafone) ([\w ]+)(?:\)| bui)/i + ], + [ + m, + c, + [ + p, + k + ] + ], + [ + /(surface duo)/i + ], + [ + c, + [ + m, + R + ], + [ + p, + k + ] + ], + [ + /droid [\d\.]+; (fp\du?)(?: b|\))/i + ], + [ + c, + [ + m, + "Fairphone" + ], + [ + p, + g + ] + ], + [ + /(u304aa)/i + ], + [ + c, + [ + m, + "AT&T" + ], + [ + p, + g + ] + ], + [ + /\bsie-(\w*)/i + ], + [ + c, + [ + m, + "Siemens" + ], + [ + p, + g + ] + ], + [ + /\b(rct\w+) b/i + ], + [ + c, + [ + m, + "RCA" + ], + [ + p, + k + ] + ], + [ + /\b(venue[\d ]{2,7}) b/i + ], + [ + c, + [ + m, + "Dell" + ], + [ + p, + k + ] + ], + [ + /\b(q(?:mv|ta)\w+) b/i + ], + [ + c, + [ + m, + "Verizon" + ], + [ + p, + k + ] + ], + [ + /\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i + ], + [ + c, + [ + m, + "Barnes & Noble" + ], + [ + p, + k + ] + ], + [ + /\b(tm\d{3}\w+) b/i + ], + [ + c, + [ + m, + "NuVision" + ], + [ + p, + k + ] + ], + [ + /\b(k88) b/i + ], + [ + c, + [ + m, + "ZTE" + ], + [ + p, + k + ] + ], + [ + /\b(nx\d{3}j) b/i + ], + [ + c, + [ + m, + "ZTE" + ], + [ + p, + g + ] + ], + [ + /\b(gen\d{3}) b.+49h/i + ], + [ + c, + [ + m, + "Swiss" + ], + [ + p, + g + ] + ], + [ + /\b(zur\d{3}) b/i + ], + [ + c, + [ + m, + "Swiss" + ], + [ + p, + k + ] + ], + [ + /\b((zeki)?tb.*\b) b/i + ], + [ + c, + [ + m, + "Zeki" + ], + [ + p, + k + ] + ], + [ + /\b([yr]\d{2}) b/i, + /\b(dragon[- ]+touch |dt)(\w{5}) b/i + ], + [ + [ + m, + "Dragon Touch" + ], + c, + [ + p, + k + ] + ], + [ + /\b(ns-?\w{0,9}) b/i + ], + [ + c, + [ + m, + "Insignia" + ], + [ + p, + k + ] + ], + [ + /\b((nxa|next)-?\w{0,9}) b/i + ], + [ + c, + [ + m, + "NextBook" + ], + [ + p, + k + ] + ], + [ + /\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i + ], + [ + [ + m, + "Voice" + ], + c, + [ + p, + g + ] + ], + [ + /\b(lvtel\-)?(v1[12]) b/i + ], + [ + [ + m, + "LvTel" + ], + c, + [ + p, + g + ] + ], + [ + /\b(ph-1) /i + ], + [ + c, + [ + m, + "Essential" + ], + [ + p, + g + ] + ], + [ + /\b(v(100md|700na|7011|917g).*\b) b/i + ], + [ + c, + [ + m, + "Envizen" + ], + [ + p, + k + ] + ], + [ + /\b(trio[-\w\. ]+) b/i + ], + [ + c, + [ + m, + "MachSpeed" + ], + [ + p, + k + ] + ], + [ + /\btu_(1491) b/i + ], + [ + c, + [ + m, + "Rotor" + ], + [ + p, + k + ] + ], + [ + /(shield[\w ]+) b/i + ], + [ + c, + [ + m, + "Nvidia" + ], + [ + p, + k + ] + ], + [ + /(sprint) (\w+)/i + ], + [ + m, + c, + [ + p, + g + ] + ], + [ + /(kin\.[onetw]{3})/i + ], + [ + [ + c, + /\./g, + " " + ], + [ + m, + R + ], + [ + p, + g + ] + ], + [ + /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i + ], + [ + c, + [ + m, + G + ], + [ + p, + k + ] + ], + [ + /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i + ], + [ + c, + [ + m, + G + ], + [ + p, + g + ] + ], + [ + /smart-tv.+(samsung)/i + ], + [ + m, + [ + p, + x + ] + ], + [ + /hbbtv.+maple;(\d+)/i + ], + [ + [ + c, + /^/, + "SmartTV" + ], + [ + m, + V + ], + [ + p, + x + ] + ], + [ + /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i + ], + [ + [ + m, + P + ], + [ + p, + x + ] + ], + [ + /(apple) ?tv/i + ], + [ + m, + [ + c, + S + " TV" + ], + [ + p, + x + ] + ], + [ + /crkey/i + ], + [ + [ + c, + C + "cast" + ], + [ + m, + U + ], + [ + p, + x + ] + ], + [ + /droid.+aft(\w)( bui|\))/i + ], + [ + c, + [ + m, + T + ], + [ + p, + x + ] + ], + [ + /\(dtv[\);].+(aquos)/i, + /(aquos-tv[\w ]+)\)/i + ], + [ + c, + [ + m, + D + ], + [ + p, + x + ] + ], + [ + /(bravia[\w ]+)( bui|\))/i + ], + [ + c, + [ + m, + I + ], + [ + p, + x + ] + ], + [ + /(mitv-\w{5}) bui/i + ], + [ + c, + [ + m, + F + ], + [ + p, + x + ] + ], + [ + /Hbbtv.*(technisat) (.*);/i + ], + [ + m, + c, + [ + p, + x + ] + ], + [ + /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, + /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i + ], + [ + [ + m, + trim + ], + [ + c, + trim + ], + [ + p, + x + ] + ], + [ + /\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i + ], + [ + [ + p, + x + ] + ], + [ + /(ouya)/i, + /(nintendo) ([wids3utch]+)/i + ], + [ + m, + c, + [ + p, + v + ] + ], + [ + /droid.+; (shield) bui/i + ], + [ + c, + [ + m, + "Nvidia" + ], + [ + p, + v + ] + ], + [ + /(playstation [345portablevi]+)/i + ], + [ + c, + [ + m, + I + ], + [ + p, + v + ] + ], + [ + /\b(xbox(?: one)?(?!; xbox))[\); ]/i + ], + [ + c, + [ + m, + R + ], + [ + p, + v + ] + ], + [ + /((pebble))app/i + ], + [ + m, + c, + [ + p, + _ + ] + ], + [ + /(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i + ], + [ + c, + [ + m, + S + ], + [ + p, + _ + ] + ], + [ + /droid.+; (glass) \d/i + ], + [ + c, + [ + m, + U + ], + [ + p, + _ + ] + ], + [ + /droid.+; (wt63?0{2,3})\)/i + ], + [ + c, + [ + m, + G + ], + [ + p, + _ + ] + ], + [ + /(quest( 2| pro)?)/i + ], + [ + c, + [ + m, + H + ], + [ + p, + _ + ] + ], + [ + /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i + ], + [ + m, + [ + p, + y + ] + ], + [ + /(aeobc)\b/i + ], + [ + c, + [ + m, + T + ], + [ + p, + y + ] + ], + [ + /droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i + ], + [ + c, + [ + p, + g + ] + ], + [ + /droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i + ], + [ + c, + [ + p, + k + ] + ], + [ + /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i + ], + [ + [ + p, + k + ] + ], + [ + /(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i + ], + [ + [ + p, + g + ] + ], + [ + /(android[-\w\. ]{0,9});.+buil/i + ], + [ + c, + [ + m, + "Generic" + ] + ] + ], + engine: [ + [ + /windows.+ edge\/([\w\.]+)/i + ], + [ + f, + [ + u, + E + "HTML" + ] + ], + [ + /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i + ], + [ + f, + [ + u, + "Blink" + ] + ], + [ + /(presto)\/([\w\.]+)/i, + /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, + /ekioh(flow)\/([\w\.]+)/i, + /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, + /(icab)[\/ ]([23]\.[\d\.]+)/i, + /\b(libweb)/i + ], + [ + u, + f + ], + [ + /rv\:([\w\.]{1,9})\b.+(gecko)/i + ], + [ + f, + u + ] + ], + os: [ + [ + /microsoft (windows) (vista|xp)/i + ], + [ + u, + f + ], + [ + /(windows) nt 6\.2; (arm)/i, + /(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i, + /(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i + ], + [ + u, + [ + f, + strMapper, + X + ] + ], + [ + /(win(?=3|9|n)|win 9x )([nt\d\.]+)/i + ], + [ + [ + u, + "Windows" + ], + [ + f, + strMapper, + X + ] + ], + [ + /ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, + /ios;fbsv\/([\d\.]+)/i, + /cfnetwork\/.+darwin/i + ], + [ + [ + f, + /_/g, + "." + ], + [ + u, + "iOS" + ] + ], + [ + /(mac os x) ?([\w\. ]*)/i, + /(macintosh|mac_powerpc\b)(?!.+haiku)/i + ], + [ + [ + u, + Z + ], + [ + f, + /_/g, + "." + ] + ], + [ + /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i + ], + [ + f, + u + ], + [ + /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i, + /(blackberry)\w*\/([\w\.]*)/i, + /(tizen|kaios)[\/ ]([\w\.]+)/i, + /\((series40);/i + ], + [ + u, + f + ], + [ + /\(bb(10);/i + ], + [ + f, + [ + u, + N + ] + ], + [ + /(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i + ], + [ + f, + [ + u, + "Symbian" + ] + ], + [ + /mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i + ], + [ + f, + [ + u, + O + " OS" + ] + ], + [ + /web0s;.+rt(tv)/i, + /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i + ], + [ + f, + [ + u, + "webOS" + ] + ], + [ + /watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i + ], + [ + f, + [ + u, + "watchOS" + ] + ], + [ + /crkey\/([\d\.]+)/i + ], + [ + f, + [ + u, + C + "cast" + ] + ], + [ + /(cros) [\w]+(?:\)| ([\w\.]+)\b)/i + ], + [ + [ + u, + L + ], + f + ], + [ + /panasonic;(viera)/i, + /(netrange)mmh/i, + /(nettv)\/(\d+\.[\w\.]+)/i, + /(nintendo|playstation) ([wids345portablevuch]+)/i, + /(xbox); +xbox ([^\);]+)/i, + /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, + /(mint)[\/\(\) ]?(\w*)/i, + /(mageia|vectorlinux)[; ]/i, + /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i, + /(hurd|linux) ?([\w\.]*)/i, + /(gnu) ?([\w\.]*)/i, + /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i, + /(haiku) (\w+)/i + ], + [ + u, + f + ], + [ + /(sunos) ?([\w\.\d]*)/i + ], + [ + [ + u, + "Solaris" + ], + f + ], + [ + /((?:open)?solaris)[-\/ ]?([\w\.]*)/i, + /(aix) ((\d)(?=\.|\)| )[\w\.])*/i, + /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, + /(unix) ?([\w\.]*)/i + ], + [ + u, + f + ] + ] + }; + var UAParser = function(i, e) { + if (typeof i === w) { + e = i; + i = a; + } + if (!(this instanceof UAParser)) { + return new UAParser(i, e).getResult(); + } + var r = typeof o !== b && o.navigator ? o.navigator : a; + var n = i || (r && r.userAgent ? r.userAgent : t); + var v = r && r.userAgentData ? r.userAgentData : a; + var x = e ? extend(K, e) : K; + var _ = r && r.userAgent == n; + this.getBrowser = function() { + var i = {}; + i[u] = a; + i[f] = a; + rgxMapper.call(i, n, x.browser); + i[d] = majorize(i[f]); + if (_ && r && r.brave && typeof r.brave.isBrave == s) { + i[u] = "Brave"; + } + return i; + }; + this.getCPU = function() { + var i = {}; + i[h] = a; + rgxMapper.call(i, n, x.cpu); + return i; + }; + this.getDevice = function() { + var i = {}; + i[m] = a; + i[c] = a; + i[p] = a; + rgxMapper.call(i, n, x.device); + if (_ && !i[p] && v && v.mobile) { + i[p] = g; + } + if (_ && i[c] == "Macintosh" && r && typeof r.standalone !== b && r.maxTouchPoints && r.maxTouchPoints > 2) { + i[c] = "iPad"; + i[p] = k; + } + return i; + }; + this.getEngine = function() { + var i = {}; + i[u] = a; + i[f] = a; + rgxMapper.call(i, n, x.engine); + return i; + }; + this.getOS = function() { + var i = {}; + i[u] = a; + i[f] = a; + rgxMapper.call(i, n, x.os); + if (_ && !i[u] && v && v.platform != "Unknown") { + i[u] = v.platform.replace(/chrome os/i, L).replace(/macos/i, Z); + } + return i; + }; + this.getResult = function() { + return { + ua: this.getUA(), + browser: this.getBrowser(), + engine: this.getEngine(), + os: this.getOS(), + device: this.getDevice(), + cpu: this.getCPU() + }; + }; + this.getUA = function() { + return n; + }; + this.setUA = function(i) { + n = typeof i === l && i.length > q ? trim(i, q) : i; + return this; + }; + this.setUA(n); + return this; + }; + UAParser.VERSION = r; + UAParser.BROWSER = enumerize([ + u, + f, + d + ]); + UAParser.CPU = enumerize([ + h + ]); + UAParser.DEVICE = enumerize([ + c, + m, + p, + v, + g, + x, + k, + _, + y + ]); + UAParser.ENGINE = UAParser.OS = enumerize([ + u, + f + ]); + if (typeof e !== b) { + if ("object" !== b && i.exports) { + e = i.exports = UAParser; + } + e.UAParser = UAParser; + } else { + if (typeof define === s && define.amd) { + ((r)=>r !== undefined && __turbopack_context__.v(r))(function() { + return UAParser; + }(__turbopack_context__.r, exports, module)); + } else if (typeof o !== b) { + o.UAParser = UAParser; + } + } + var Q = typeof o !== b && (o.jQuery || o.Zepto); + if (Q && !Q.ua) { + var Y = new UAParser; + Q.ua = Y.getResult(); + Q.ua.get = function() { + return Y.getUA(); + }; + Q.ua.set = function(i) { + Y.setUA(i); + var e = Y.getResult(); + for(var o in e){ + Q.ua[o] = e[o]; + } + }; + } + })(("TURBOPACK compile-time falsy", 0) ? "TURBOPACK unreachable" : this); + } + }; + var e = {}; + function __nccwpck_require__(o) { + var a = e[o]; + if (a !== undefined) { + return a.exports; + } + var r = e[o] = { + exports: {} + }; + var t = true; + try { + i[o].call(r.exports, r, r.exports, __nccwpck_require__); + t = false; + } finally{ + if (t) delete e[o]; + } + return r.exports; + } + if (typeof __nccwpck_require__ !== "undefined") __nccwpck_require__.ab = ("TURBOPACK compile-time value", "/ROOT/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/ua-parser-js") + "/"; + var o = __nccwpck_require__(226); + module.exports = o; +})(); +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/user-agent.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + isBot: null, + userAgent: null, + userAgentFromString: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + isBot: function() { + return isBot; + }, + userAgent: function() { + return userAgent; + }, + userAgentFromString: function() { + return userAgentFromString; + } +}); +const _uaparserjs = /*#__PURE__*/ _interop_require_default(__turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/ua-parser-js/ua-parser.js [app-route] (ecmascript)")); +function _interop_require_default(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; +} +function isBot(input) { + return /Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Google-InspectionTool|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(input); +} +function userAgentFromString(input) { + return { + ...(0, _uaparserjs.default)(input), + isBot: input === undefined ? false : isBot(input) + }; +} +function userAgent({ headers }) { + return userAgentFromString(headers.get('user-agent') || undefined); +} //# sourceMappingURL=user-agent.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/url-pattern.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "URLPattern", { + enumerable: true, + get: function() { + return GlobalURLPattern; + } +}); +const GlobalURLPattern = typeof URLPattern === 'undefined' ? undefined : URLPattern; //# sourceMappingURL=url-pattern.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/after/after.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "after", { + enumerable: true, + get: function() { + return after; + } +}); +const _workasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)"); +function after(task) { + const workStore = _workasyncstorageexternal.workAsyncStorage.getStore(); + if (!workStore) { + // TODO(after): the linked docs page talks about *dynamic* APIs, which after soon won't be anymore + throw Object.defineProperty(new Error('`after` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context'), "__NEXT_ERROR_CODE", { + value: "E468", + enumerable: false, + configurable: true + }); + } + const { afterContext } = workStore; + return afterContext.after(task); +} //# sourceMappingURL=after.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/after/index.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && __export(__turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/after/after.js [app-route] (ecmascript)")); +_export_star(__turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/after/after.js [app-route] (ecmascript)"), exports); +function _export_star(from, to) { + Object.keys(from).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) { + Object.defineProperty(to, k, { + enumerable: true, + get: function() { + return from[k]; + } + }); + } + }); + return from; +} //# sourceMappingURL=index.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/hooks-server-context.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + DynamicServerError: null, + isDynamicServerError: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + DynamicServerError: function() { + return DynamicServerError; + }, + isDynamicServerError: function() { + return isDynamicServerError; + } +}); +const DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE'; +class DynamicServerError extends Error { + constructor(description){ + super(`Dynamic server usage: ${description}`), this.description = description, this.digest = DYNAMIC_ERROR_CODE; + } +} +function isDynamicServerError(err) { + if (typeof err !== 'object' || err === null || !('digest' in err) || typeof err.digest !== 'string') { + return false; + } + return err.digest === DYNAMIC_ERROR_CODE; +} +if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { + Object.defineProperty(exports.default, '__esModule', { + value: true + }); + Object.assign(exports.default, exports); + module.exports = exports.default; +} //# sourceMappingURL=hooks-server-context.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/static-generation-bailout.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + StaticGenBailoutError: null, + isStaticGenBailoutError: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + StaticGenBailoutError: function() { + return StaticGenBailoutError; + }, + isStaticGenBailoutError: function() { + return isStaticGenBailoutError; + } +}); +const NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT'; +class StaticGenBailoutError extends Error { + constructor(...args){ + super(...args), this.code = NEXT_STATIC_GEN_BAILOUT; + } +} +function isStaticGenBailoutError(error) { + if (typeof error !== 'object' || error === null || !('code' in error)) { + return false; + } + return error.code === NEXT_STATIC_GEN_BAILOUT; +} +if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { + Object.defineProperty(exports.default, '__esModule', { + value: true + }); + Object.assign(exports.default, exports); + module.exports = exports.default; +} //# sourceMappingURL=static-generation-bailout.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/dynamic-rendering-utils.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + isHangingPromiseRejectionError: null, + makeDevtoolsIOAwarePromise: null, + makeHangingPromise: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + isHangingPromiseRejectionError: function() { + return isHangingPromiseRejectionError; + }, + makeDevtoolsIOAwarePromise: function() { + return makeDevtoolsIOAwarePromise; + }, + makeHangingPromise: function() { + return makeHangingPromise; + } +}); +function isHangingPromiseRejectionError(err) { + if (typeof err !== 'object' || err === null || !('digest' in err)) { + return false; + } + return err.digest === HANGING_PROMISE_REJECTION; +} +const HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION'; +class HangingPromiseRejectionError extends Error { + constructor(route, expression){ + super(`During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \`setTimeout\`, \`after\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route "${route}".`), this.route = route, this.expression = expression, this.digest = HANGING_PROMISE_REJECTION; + } +} +const abortListenersBySignal = new WeakMap(); +function makeHangingPromise(signal, route, expression) { + if (signal.aborted) { + return Promise.reject(new HangingPromiseRejectionError(route, expression)); + } else { + const hangingPromise = new Promise((_, reject)=>{ + const boundRejection = reject.bind(null, new HangingPromiseRejectionError(route, expression)); + let currentListeners = abortListenersBySignal.get(signal); + if (currentListeners) { + currentListeners.push(boundRejection); + } else { + const listeners = [ + boundRejection + ]; + abortListenersBySignal.set(signal, listeners); + signal.addEventListener('abort', ()=>{ + for(let i = 0; i < listeners.length; i++){ + listeners[i](); + } + }, { + once: true + }); + } + }); + // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so + // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct + // your own promise out of it you'll need to ensure you handle the error when it rejects. + hangingPromise.catch(ignoreReject); + return hangingPromise; + } +} +function ignoreReject() {} +function makeDevtoolsIOAwarePromise(underlying, requestStore, stage) { + if (requestStore.stagedRendering) { + // We resolve each stage in a timeout, so React DevTools will pick this up as IO. + return requestStore.stagedRendering.delayUntilStage(stage, undefined, underlying); + } + // in React DevTools if we resolve in a setTimeout we will observe + // the promise resolution as something that can suspend a boundary or root. + return new Promise((resolve)=>{ + // Must use setTimeout to be considered IO React DevTools. setImmediate will not work. + setTimeout(()=>{ + resolve(underlying); + }, 0); + }); +} //# sourceMappingURL=dynamic-rendering-utils.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-constants.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + METADATA_BOUNDARY_NAME: null, + OUTLET_BOUNDARY_NAME: null, + ROOT_LAYOUT_BOUNDARY_NAME: null, + VIEWPORT_BOUNDARY_NAME: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + METADATA_BOUNDARY_NAME: function() { + return METADATA_BOUNDARY_NAME; + }, + OUTLET_BOUNDARY_NAME: function() { + return OUTLET_BOUNDARY_NAME; + }, + ROOT_LAYOUT_BOUNDARY_NAME: function() { + return ROOT_LAYOUT_BOUNDARY_NAME; + }, + VIEWPORT_BOUNDARY_NAME: function() { + return VIEWPORT_BOUNDARY_NAME; + } +}); +const METADATA_BOUNDARY_NAME = '__next_metadata_boundary__'; +const VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__'; +const OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__'; +const ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__'; //# sourceMappingURL=boundary-constants.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/scheduler.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + atLeastOneTask: null, + scheduleImmediate: null, + scheduleOnNextTick: null, + waitAtLeastOneReactRenderTask: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + atLeastOneTask: function() { + return atLeastOneTask; + }, + scheduleImmediate: function() { + return scheduleImmediate; + }, + scheduleOnNextTick: function() { + return scheduleOnNextTick; + }, + waitAtLeastOneReactRenderTask: function() { + return waitAtLeastOneReactRenderTask; + } +}); +const scheduleOnNextTick = (cb)=>{ + // We use Promise.resolve().then() here so that the operation is scheduled at + // the end of the promise job queue, we then add it to the next process tick + // to ensure it's evaluated afterwards. + // + // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255 + // + Promise.resolve().then(()=>{ + if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable + ; + else { + process.nextTick(cb); + } + }); +}; +const scheduleImmediate = (cb)=>{ + if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable + ; + else { + setImmediate(cb); + } +}; +function atLeastOneTask() { + return new Promise((resolve)=>scheduleImmediate(resolve)); +} +function waitAtLeastOneReactRenderTask() { + if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable + ; + else { + return new Promise((r)=>setImmediate(r)); + } +} //# sourceMappingURL=scheduler.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +// This has to be a shared module which is shared between client component error boundary and dynamic component +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + BailoutToCSRError: null, + isBailoutToCSRError: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + BailoutToCSRError: function() { + return BailoutToCSRError; + }, + isBailoutToCSRError: function() { + return isBailoutToCSRError; + } +}); +const BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING'; +class BailoutToCSRError extends Error { + constructor(reason){ + super(`Bail out to client-side rendering: ${reason}`), this.reason = reason, this.digest = BAILOUT_TO_CSR; + } +} +function isBailoutToCSRError(err) { + if (typeof err !== 'object' || err === null || !('digest' in err)) { + return false; + } + return err.digest === BAILOUT_TO_CSR; +} //# sourceMappingURL=bailout-to-csr.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/invariant-error.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "InvariantError", { + enumerable: true, + get: function() { + return InvariantError; + } +}); +class InvariantError extends Error { + constructor(message, options){ + super(`Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`, options); + this.name = 'InvariantError'; + } +} //# sourceMappingURL=invariant-error.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/app-render/dynamic-rendering.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +/** + * The functions provided by this module are used to communicate certain properties + * about the currently running code so that Next.js can make decisions on how to handle + * the current execution in different rendering modes such as pre-rendering, resuming, and SSR. + * + * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering. + * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts + * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of + * Dynamic indications. + * + * The first is simply an intention to be dynamic. unstable_noStore is an example of this where + * the currently executing code simply declares that the current scope is dynamic but if you use it + * inside unstable_cache it can still be cached. This type of indication can be removed if we ever + * make the default dynamic to begin with because the only way you would ever be static is inside + * a cache scope which this indication does not affect. + * + * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic + * because it means that it is inappropriate to cache this at all. using a dynamic data source inside + * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should + * read that data outside the cache and pass it in as an argument to the cached function. + */ Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + Postpone: null, + PreludeState: null, + abortAndThrowOnSynchronousRequestDataAccess: null, + abortOnSynchronousPlatformIOAccess: null, + accessedDynamicData: null, + annotateDynamicAccess: null, + consumeDynamicAccess: null, + createDynamicTrackingState: null, + createDynamicValidationState: null, + createHangingInputAbortSignal: null, + createRenderInBrowserAbortSignal: null, + delayUntilRuntimeStage: null, + formatDynamicAPIAccesses: null, + getFirstDynamicReason: null, + getStaticShellDisallowedDynamicReasons: null, + isDynamicPostpone: null, + isPrerenderInterruptedError: null, + logDisallowedDynamicError: null, + markCurrentScopeAsDynamic: null, + postponeWithTracking: null, + throwIfDisallowedDynamic: null, + throwToInterruptStaticGeneration: null, + trackAllowedDynamicAccess: null, + trackDynamicDataInDynamicRender: null, + trackDynamicHoleInRuntimeShell: null, + trackDynamicHoleInStaticShell: null, + useDynamicRouteParams: null, + useDynamicSearchParams: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + Postpone: function() { + return Postpone; + }, + PreludeState: function() { + return PreludeState; + }, + abortAndThrowOnSynchronousRequestDataAccess: function() { + return abortAndThrowOnSynchronousRequestDataAccess; + }, + abortOnSynchronousPlatformIOAccess: function() { + return abortOnSynchronousPlatformIOAccess; + }, + accessedDynamicData: function() { + return accessedDynamicData; + }, + annotateDynamicAccess: function() { + return annotateDynamicAccess; + }, + consumeDynamicAccess: function() { + return consumeDynamicAccess; + }, + createDynamicTrackingState: function() { + return createDynamicTrackingState; + }, + createDynamicValidationState: function() { + return createDynamicValidationState; + }, + createHangingInputAbortSignal: function() { + return createHangingInputAbortSignal; + }, + createRenderInBrowserAbortSignal: function() { + return createRenderInBrowserAbortSignal; + }, + delayUntilRuntimeStage: function() { + return delayUntilRuntimeStage; + }, + formatDynamicAPIAccesses: function() { + return formatDynamicAPIAccesses; + }, + getFirstDynamicReason: function() { + return getFirstDynamicReason; + }, + getStaticShellDisallowedDynamicReasons: function() { + return getStaticShellDisallowedDynamicReasons; + }, + isDynamicPostpone: function() { + return isDynamicPostpone; + }, + isPrerenderInterruptedError: function() { + return isPrerenderInterruptedError; + }, + logDisallowedDynamicError: function() { + return logDisallowedDynamicError; + }, + markCurrentScopeAsDynamic: function() { + return markCurrentScopeAsDynamic; + }, + postponeWithTracking: function() { + return postponeWithTracking; + }, + throwIfDisallowedDynamic: function() { + return throwIfDisallowedDynamic; + }, + throwToInterruptStaticGeneration: function() { + return throwToInterruptStaticGeneration; + }, + trackAllowedDynamicAccess: function() { + return trackAllowedDynamicAccess; + }, + trackDynamicDataInDynamicRender: function() { + return trackDynamicDataInDynamicRender; + }, + trackDynamicHoleInRuntimeShell: function() { + return trackDynamicHoleInRuntimeShell; + }, + trackDynamicHoleInStaticShell: function() { + return trackDynamicHoleInStaticShell; + }, + useDynamicRouteParams: function() { + return useDynamicRouteParams; + }, + useDynamicSearchParams: function() { + return useDynamicSearchParams; + } +}); +const _react = /*#__PURE__*/ _interop_require_default(__turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js [app-route] (ecmascript)")); +const _hooksservercontext = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/hooks-server-context.js [app-route] (ecmascript)"); +const _staticgenerationbailout = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/static-generation-bailout.js [app-route] (ecmascript)"); +const _workunitasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-unit-async-storage.external.js [external] (next/dist/server/app-render/work-unit-async-storage.external.js, cjs)"); +const _workasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)"); +const _dynamicrenderingutils = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/dynamic-rendering-utils.js [app-route] (ecmascript)"); +const _boundaryconstants = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-constants.js [app-route] (ecmascript)"); +const _scheduler = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/scheduler.js [app-route] (ecmascript)"); +const _bailouttocsr = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js [app-route] (ecmascript)"); +const _invarianterror = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/invariant-error.js [app-route] (ecmascript)"); +function _interop_require_default(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; +} +const hasPostpone = typeof _react.default.unstable_postpone === 'function'; +function createDynamicTrackingState(isDebugDynamicAccesses) { + return { + isDebugDynamicAccesses, + dynamicAccesses: [], + syncDynamicErrorWithStack: null + }; +} +function createDynamicValidationState() { + return { + hasSuspenseAboveBody: false, + hasDynamicMetadata: false, + dynamicMetadata: null, + hasDynamicViewport: false, + hasAllowedDynamic: false, + dynamicErrors: [] + }; +} +function getFirstDynamicReason(trackingState) { + var _trackingState_dynamicAccesses_; + return (_trackingState_dynamicAccesses_ = trackingState.dynamicAccesses[0]) == null ? void 0 : _trackingState_dynamicAccesses_.expression; +} +function markCurrentScopeAsDynamic(store, workUnitStore, expression) { + if (workUnitStore) { + switch(workUnitStore.type){ + case 'cache': + case 'unstable-cache': + // Inside cache scopes, marking a scope as dynamic has no effect, + // because the outer cache scope creates a cache boundary. This is + // subtly different from reading a dynamic data source, which is + // forbidden inside a cache scope. + return; + case 'private-cache': + // A private cache scope is already dynamic by definition. + return; + case 'prerender-legacy': + case 'prerender-ppr': + case 'request': + break; + default: + workUnitStore; + } + } + // If we're forcing dynamic rendering or we're forcing static rendering, we + // don't need to do anything here because the entire page is already dynamic + // or it's static and it should not throw or postpone here. + if (store.forceDynamic || store.forceStatic) return; + if (store.dynamicShouldError) { + throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${store.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${expression}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), "__NEXT_ERROR_CODE", { + value: "E553", + enumerable: false, + configurable: true + }); + } + if (workUnitStore) { + switch(workUnitStore.type){ + case 'prerender-ppr': + return postponeWithTracking(store.route, expression, workUnitStore.dynamicTracking); + case 'prerender-legacy': + workUnitStore.revalidate = 0; + // We aren't prerendering, but we are generating a static page. We need + // to bail out of static generation. + const err = Object.defineProperty(new _hooksservercontext.DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), "__NEXT_ERROR_CODE", { + value: "E550", + enumerable: false, + configurable: true + }); + store.dynamicUsageDescription = expression; + store.dynamicUsageStack = err.stack; + throw err; + case 'request': + if ("TURBOPACK compile-time truthy", 1) { + workUnitStore.usedDynamic = true; + } + break; + default: + workUnitStore; + } + } +} +function throwToInterruptStaticGeneration(expression, store, prerenderStore) { + // We aren't prerendering but we are generating a static page. We need to bail out of static generation + const err = Object.defineProperty(new _hooksservercontext.DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used \`${expression}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), "__NEXT_ERROR_CODE", { + value: "E558", + enumerable: false, + configurable: true + }); + prerenderStore.revalidate = 0; + store.dynamicUsageDescription = expression; + store.dynamicUsageStack = err.stack; + throw err; +} +function trackDynamicDataInDynamicRender(workUnitStore) { + switch(workUnitStore.type){ + case 'cache': + case 'unstable-cache': + // Inside cache scopes, marking a scope as dynamic has no effect, + // because the outer cache scope creates a cache boundary. This is + // subtly different from reading a dynamic data source, which is + // forbidden inside a cache scope. + return; + case 'private-cache': + // A private cache scope is already dynamic by definition. + return; + case 'prerender': + case 'prerender-runtime': + case 'prerender-legacy': + case 'prerender-ppr': + case 'prerender-client': + break; + case 'request': + if ("TURBOPACK compile-time truthy", 1) { + workUnitStore.usedDynamic = true; + } + break; + default: + workUnitStore; + } +} +function abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore) { + const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`; + const error = createPrerenderInterruptedError(reason); + prerenderStore.controller.abort(error); + const dynamicTracking = prerenderStore.dynamicTracking; + if (dynamicTracking) { + dynamicTracking.dynamicAccesses.push({ + // When we aren't debugging, we don't need to create another error for the + // stack trace. + stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined, + expression + }); + } +} +function abortOnSynchronousPlatformIOAccess(route, expression, errorWithStack, prerenderStore) { + const dynamicTracking = prerenderStore.dynamicTracking; + abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore); + // It is important that we set this tracking value after aborting. Aborts are executed + // synchronously except for the case where you abort during render itself. By setting this + // value late we can use it to determine if any of the aborted tasks are the task that + // called the sync IO expression in the first place. + if (dynamicTracking) { + if (dynamicTracking.syncDynamicErrorWithStack === null) { + dynamicTracking.syncDynamicErrorWithStack = errorWithStack; + } + } +} +function abortAndThrowOnSynchronousRequestDataAccess(route, expression, errorWithStack, prerenderStore) { + const prerenderSignal = prerenderStore.controller.signal; + if (prerenderSignal.aborted === false) { + // TODO it would be better to move this aborted check into the callsite so we can avoid making + // the error object when it isn't relevant to the aborting of the prerender however + // since we need the throw semantics regardless of whether we abort it is easier to land + // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer + // to ideal implementation + abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore); + // It is important that we set this tracking value after aborting. Aborts are executed + // synchronously except for the case where you abort during render itself. By setting this + // value late we can use it to determine if any of the aborted tasks are the task that + // called the sync IO expression in the first place. + const dynamicTracking = prerenderStore.dynamicTracking; + if (dynamicTracking) { + if (dynamicTracking.syncDynamicErrorWithStack === null) { + dynamicTracking.syncDynamicErrorWithStack = errorWithStack; + } + } + } + throw createPrerenderInterruptedError(`Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`); +} +function Postpone({ reason, route }) { + const prerenderStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); + const dynamicTracking = prerenderStore && prerenderStore.type === 'prerender-ppr' ? prerenderStore.dynamicTracking : null; + postponeWithTracking(route, reason, dynamicTracking); +} +function postponeWithTracking(route, expression, dynamicTracking) { + assertPostpone(); + if (dynamicTracking) { + dynamicTracking.dynamicAccesses.push({ + // When we aren't debugging, we don't need to create another error for the + // stack trace. + stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined, + expression + }); + } + _react.default.unstable_postpone(createPostponeReason(route, expression)); +} +function createPostponeReason(route, expression) { + return `Route ${route} needs to bail out of prerendering at this point because it used ${expression}. ` + `React throws this special object to indicate where. It should not be caught by ` + `your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`; +} +function isDynamicPostpone(err) { + if (typeof err === 'object' && err !== null && typeof err.message === 'string') { + return isDynamicPostponeReason(err.message); + } + return false; +} +function isDynamicPostponeReason(reason) { + return reason.includes('needs to bail out of prerendering at this point because it used') && reason.includes('Learn more: https://nextjs.org/docs/messages/ppr-caught-error'); +} +if (isDynamicPostponeReason(createPostponeReason('%%%', '^^^')) === false) { + throw Object.defineProperty(new Error('Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js'), "__NEXT_ERROR_CODE", { + value: "E296", + enumerable: false, + configurable: true + }); +} +const NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED'; +function createPrerenderInterruptedError(message) { + const error = Object.defineProperty(new Error(message), "__NEXT_ERROR_CODE", { + value: "E394", + enumerable: false, + configurable: true + }); + error.digest = NEXT_PRERENDER_INTERRUPTED; + return error; +} +function isPrerenderInterruptedError(error) { + return typeof error === 'object' && error !== null && error.digest === NEXT_PRERENDER_INTERRUPTED && 'name' in error && 'message' in error && error instanceof Error; +} +function accessedDynamicData(dynamicAccesses) { + return dynamicAccesses.length > 0; +} +function consumeDynamicAccess(serverDynamic, clientDynamic) { + // We mutate because we only call this once we are no longer writing + // to the dynamicTrackingState and it's more efficient than creating a new + // array. + serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses); + return serverDynamic.dynamicAccesses; +} +function formatDynamicAPIAccesses(dynamicAccesses) { + return dynamicAccesses.filter((access)=>typeof access.stack === 'string' && access.stack.length > 0).map(({ expression, stack })=>{ + stack = stack.split('\n') // Remove the "Error: " prefix from the first line of the stack trace as + // well as the first 4 lines of the stack trace which is the distance + // from the user code and the `new Error().stack` call. + .slice(4).filter((line)=>{ + // Exclude Next.js internals from the stack trace. + if (line.includes('node_modules/next/')) { + return false; + } + // Exclude anonymous functions from the stack trace. + if (line.includes(' ()')) { + return false; + } + // Exclude Node.js internals from the stack trace. + if (line.includes(' (node:')) { + return false; + } + return true; + }).join('\n'); + return `Dynamic API Usage Debug - ${expression}:\n${stack}`; + }); +} +function assertPostpone() { + if (!hasPostpone) { + throw Object.defineProperty(new Error(`Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js`), "__NEXT_ERROR_CODE", { + value: "E224", + enumerable: false, + configurable: true + }); + } +} +function createRenderInBrowserAbortSignal() { + const controller = new AbortController(); + controller.abort(Object.defineProperty(new _bailouttocsr.BailoutToCSRError('Render in Browser'), "__NEXT_ERROR_CODE", { + value: "E721", + enumerable: false, + configurable: true + })); + return controller.signal; +} +function createHangingInputAbortSignal(workUnitStore) { + switch(workUnitStore.type){ + case 'prerender': + case 'prerender-runtime': + const controller = new AbortController(); + if (workUnitStore.cacheSignal) { + // If we have a cacheSignal it means we're in a prospective render. If + // the input we're waiting on is coming from another cache, we do want + // to wait for it so that we can resolve this cache entry too. + workUnitStore.cacheSignal.inputReady().then(()=>{ + controller.abort(); + }); + } else { + // Otherwise we're in the final render and we should already have all + // our caches filled. + // If the prerender uses stages, we have wait until the runtime stage, + // at which point all runtime inputs will be resolved. + // (otherwise, a runtime prerender might consider `cookies()` hanging + // even though they'd resolve in the next task.) + // + // We might still be waiting on some microtasks so we + // wait one tick before giving up. When we give up, we still want to + // render the content of this cache as deeply as we can so that we can + // suspend as deeply as possible in the tree or not at all if we don't + // end up waiting for the input. + const runtimeStagePromise = (0, _workunitasyncstorageexternal.getRuntimeStagePromise)(workUnitStore); + if (runtimeStagePromise) { + runtimeStagePromise.then(()=>(0, _scheduler.scheduleOnNextTick)(()=>controller.abort())); + } else { + (0, _scheduler.scheduleOnNextTick)(()=>controller.abort()); + } + } + return controller.signal; + case 'prerender-client': + case 'prerender-ppr': + case 'prerender-legacy': + case 'request': + case 'cache': + case 'private-cache': + case 'unstable-cache': + return undefined; + default: + workUnitStore; + } +} +function annotateDynamicAccess(expression, prerenderStore) { + const dynamicTracking = prerenderStore.dynamicTracking; + if (dynamicTracking) { + dynamicTracking.dynamicAccesses.push({ + stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined, + expression + }); + } +} +function useDynamicRouteParams(expression) { + const workStore = _workasyncstorageexternal.workAsyncStorage.getStore(); + const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); + if (workStore && workUnitStore) { + switch(workUnitStore.type){ + case 'prerender-client': + case 'prerender': + { + const fallbackParams = workUnitStore.fallbackRouteParams; + if (fallbackParams && fallbackParams.size > 0) { + // We are in a prerender with cacheComponents semantics. We are going to + // hang here and never resolve. This will cause the currently + // rendering component to effectively be a dynamic hole. + _react.default.use((0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, expression)); + } + break; + } + case 'prerender-ppr': + { + const fallbackParams = workUnitStore.fallbackRouteParams; + if (fallbackParams && fallbackParams.size > 0) { + return postponeWithTracking(workStore.route, expression, workUnitStore.dynamicTracking); + } + break; + } + case 'prerender-runtime': + throw Object.defineProperty(new _invarianterror.InvariantError(`\`${expression}\` was called during a runtime prerender. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { + value: "E771", + enumerable: false, + configurable: true + }); + case 'cache': + case 'private-cache': + throw Object.defineProperty(new _invarianterror.InvariantError(`\`${expression}\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { + value: "E745", + enumerable: false, + configurable: true + }); + case 'prerender-legacy': + case 'request': + case 'unstable-cache': + break; + default: + workUnitStore; + } + } +} +function useDynamicSearchParams(expression) { + const workStore = _workasyncstorageexternal.workAsyncStorage.getStore(); + const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); + if (!workStore) { + // We assume pages router context and just return + return; + } + if (!workUnitStore) { + (0, _workunitasyncstorageexternal.throwForMissingRequestStore)(expression); + } + switch(workUnitStore.type){ + case 'prerender-client': + { + _react.default.use((0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, expression)); + break; + } + case 'prerender-legacy': + case 'prerender-ppr': + { + if (workStore.forceStatic) { + return; + } + throw Object.defineProperty(new _bailouttocsr.BailoutToCSRError(expression), "__NEXT_ERROR_CODE", { + value: "E394", + enumerable: false, + configurable: true + }); + } + case 'prerender': + case 'prerender-runtime': + throw Object.defineProperty(new _invarianterror.InvariantError(`\`${expression}\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { + value: "E795", + enumerable: false, + configurable: true + }); + case 'cache': + case 'unstable-cache': + case 'private-cache': + throw Object.defineProperty(new _invarianterror.InvariantError(`\`${expression}\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { + value: "E745", + enumerable: false, + configurable: true + }); + case 'request': + return; + default: + workUnitStore; + } +} +const hasSuspenseRegex = /\n\s+at Suspense \(\)/; +// Common implicit body tags that React will treat as body when placed directly in html +const bodyAndImplicitTags = 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6'; +// Detects when RootLayoutBoundary (our framework marker component) appears +// after Suspense in the component stack, indicating the root layout is wrapped +// within a Suspense boundary. Ensures no body/html/implicit-body components are in between. +// +// Example matches: +// at Suspense () +// at __next_root_layout_boundary__ () +// +// Or with other components in between (but not body/html/implicit-body): +// at Suspense () +// at SomeComponent () +// at __next_root_layout_boundary__ () +const hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(`\\n\\s+at Suspense \\(\\)(?:(?!\\n\\s+at (?:${bodyAndImplicitTags}) \\(\\))[\\s\\S])*?\\n\\s+at ${_boundaryconstants.ROOT_LAYOUT_BOUNDARY_NAME} \\([^\\n]*\\)`); +const hasMetadataRegex = new RegExp(`\\n\\s+at ${_boundaryconstants.METADATA_BOUNDARY_NAME}[\\n\\s]`); +const hasViewportRegex = new RegExp(`\\n\\s+at ${_boundaryconstants.VIEWPORT_BOUNDARY_NAME}[\\n\\s]`); +const hasOutletRegex = new RegExp(`\\n\\s+at ${_boundaryconstants.OUTLET_BOUNDARY_NAME}[\\n\\s]`); +function trackAllowedDynamicAccess(workStore, componentStack, dynamicValidation, clientDynamic) { + if (hasOutletRegex.test(componentStack)) { + // We don't need to track that this is dynamic. It is only so when something else is also dynamic. + return; + } else if (hasMetadataRegex.test(componentStack)) { + dynamicValidation.hasDynamicMetadata = true; + return; + } else if (hasViewportRegex.test(componentStack)) { + dynamicValidation.hasDynamicViewport = true; + return; + } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) { + // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule. + // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense + // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering. + dynamicValidation.hasAllowedDynamic = true; + dynamicValidation.hasSuspenseAboveBody = true; + return; + } else if (hasSuspenseRegex.test(componentStack)) { + // this error had a Suspense boundary above it so we don't need to report it as a source + // of disallowed + dynamicValidation.hasAllowedDynamic = true; + return; + } else if (clientDynamic.syncDynamicErrorWithStack) { + // This task was the task that called the sync error. + dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack); + return; + } else { + const message = `Route "${workStore.route}": Uncached data was accessed outside of ` + '. This delays the entire page from rendering, resulting in a ' + 'slow user experience. Learn more: ' + 'https://nextjs.org/docs/messages/blocking-route'; + const error = createErrorWithComponentOrOwnerStack(message, componentStack); + dynamicValidation.dynamicErrors.push(error); + return; + } +} +function trackDynamicHoleInRuntimeShell(workStore, componentStack, dynamicValidation, clientDynamic) { + if (hasOutletRegex.test(componentStack)) { + // We don't need to track that this is dynamic. It is only so when something else is also dynamic. + return; + } else if (hasMetadataRegex.test(componentStack)) { + const message = `Route "${workStore.route}": Uncached data or \`connection()\` was accessed inside \`generateMetadata\`. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`; + const error = createErrorWithComponentOrOwnerStack(message, componentStack); + dynamicValidation.dynamicMetadata = error; + return; + } else if (hasViewportRegex.test(componentStack)) { + const message = `Route "${workStore.route}": Uncached data or \`connection()\` was accessed inside \`generateViewport\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`; + const error = createErrorWithComponentOrOwnerStack(message, componentStack); + dynamicValidation.dynamicErrors.push(error); + return; + } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) { + // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule. + // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense + // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering. + dynamicValidation.hasAllowedDynamic = true; + dynamicValidation.hasSuspenseAboveBody = true; + return; + } else if (hasSuspenseRegex.test(componentStack)) { + // this error had a Suspense boundary above it so we don't need to report it as a source + // of disallowed + dynamicValidation.hasAllowedDynamic = true; + return; + } else if (clientDynamic.syncDynamicErrorWithStack) { + // This task was the task that called the sync error. + dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack); + return; + } else { + const message = `Route "${workStore.route}": Uncached data or \`connection()\` was accessed outside of \`\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`; + const error = createErrorWithComponentOrOwnerStack(message, componentStack); + dynamicValidation.dynamicErrors.push(error); + return; + } +} +function trackDynamicHoleInStaticShell(workStore, componentStack, dynamicValidation, clientDynamic) { + if (hasOutletRegex.test(componentStack)) { + // We don't need to track that this is dynamic. It is only so when something else is also dynamic. + return; + } else if (hasMetadataRegex.test(componentStack)) { + const message = `Route "${workStore.route}": Runtime data such as \`cookies()\`, \`headers()\`, \`params\`, or \`searchParams\` was accessed inside \`generateMetadata\` or you have file-based metadata such as icons that depend on dynamic params segments. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`; + const error = createErrorWithComponentOrOwnerStack(message, componentStack); + dynamicValidation.dynamicMetadata = error; + return; + } else if (hasViewportRegex.test(componentStack)) { + const message = `Route "${workStore.route}": Runtime data such as \`cookies()\`, \`headers()\`, \`params\`, or \`searchParams\` was accessed inside \`generateViewport\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`; + const error = createErrorWithComponentOrOwnerStack(message, componentStack); + dynamicValidation.dynamicErrors.push(error); + return; + } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) { + // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule. + // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense + // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering. + dynamicValidation.hasAllowedDynamic = true; + dynamicValidation.hasSuspenseAboveBody = true; + return; + } else if (hasSuspenseRegex.test(componentStack)) { + // this error had a Suspense boundary above it so we don't need to report it as a source + // of disallowed + dynamicValidation.hasAllowedDynamic = true; + return; + } else if (clientDynamic.syncDynamicErrorWithStack) { + // This task was the task that called the sync error. + dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack); + return; + } else { + const message = `Route "${workStore.route}": Runtime data such as \`cookies()\`, \`headers()\`, \`params\`, or \`searchParams\` was accessed outside of \`\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`; + const error = createErrorWithComponentOrOwnerStack(message, componentStack); + dynamicValidation.dynamicErrors.push(error); + return; + } +} +/** + * In dev mode, we prefer using the owner stack, otherwise the provided + * component stack is used. + */ function createErrorWithComponentOrOwnerStack(message, componentStack) { + const ownerStack = ("TURBOPACK compile-time value", "development") !== 'production' && _react.default.captureOwnerStack ? _react.default.captureOwnerStack() : null; + const error = Object.defineProperty(new Error(message), "__NEXT_ERROR_CODE", { + value: "E394", + enumerable: false, + configurable: true + }); + // TODO go back to owner stack here if available. This is temporarily using componentStack to get the right + // + error.stack = error.name + ': ' + message + (ownerStack || componentStack); + return error; +} +var PreludeState = /*#__PURE__*/ function(PreludeState) { + PreludeState[PreludeState["Full"] = 0] = "Full"; + PreludeState[PreludeState["Empty"] = 1] = "Empty"; + PreludeState[PreludeState["Errored"] = 2] = "Errored"; + return PreludeState; +}({}); +function logDisallowedDynamicError(workStore, error) { + console.error(error); + if (!workStore.dev) { + if (workStore.hasReadableErrorStacks) { + console.error(`To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running \`next dev\`, then open "${workStore.route}" in your browser to investigate the error.`); + } else { + console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following: + - Start the app in development mode by running \`next dev\`, then open "${workStore.route}" in your browser to investigate the error. + - Rerun the production build with \`next build --debug-prerender\` to generate better stack traces.`); + } + } +} +function throwIfDisallowedDynamic(workStore, prelude, dynamicValidation, serverDynamic) { + if (serverDynamic.syncDynamicErrorWithStack) { + logDisallowedDynamicError(workStore, serverDynamic.syncDynamicErrorWithStack); + throw new _staticgenerationbailout.StaticGenBailoutError(); + } + if (prelude !== 0) { + if (dynamicValidation.hasSuspenseAboveBody) { + // This route has opted into allowing fully dynamic rendering + // by including a Suspense boundary above the body. In this case + // a lack of a shell is not considered disallowed so we simply return + return; + } + // We didn't have any sync bailouts but there may be user code which + // blocked the root. We would have captured these during the prerender + // and can log them here and then terminate the build/validating render + const dynamicErrors = dynamicValidation.dynamicErrors; + if (dynamicErrors.length > 0) { + for(let i = 0; i < dynamicErrors.length; i++){ + logDisallowedDynamicError(workStore, dynamicErrors[i]); + } + throw new _staticgenerationbailout.StaticGenBailoutError(); + } + // If we got this far then the only other thing that could be blocking + // the root is dynamic Viewport. If this is dynamic then + // you need to opt into that by adding a Suspense boundary above the body + // to indicate your are ok with fully dynamic rendering. + if (dynamicValidation.hasDynamicViewport) { + console.error(`Route "${workStore.route}" has a \`generateViewport\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`); + throw new _staticgenerationbailout.StaticGenBailoutError(); + } + if (prelude === 1) { + // If we ever get this far then we messed up the tracking of invalid dynamic. + // We still adhere to the constraint that you must produce a shell but invite the + // user to report this as a bug in Next.js. + console.error(`Route "${workStore.route}" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`); + throw new _staticgenerationbailout.StaticGenBailoutError(); + } + } else { + if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.hasDynamicMetadata) { + console.error(`Route "${workStore.route}" has a \`generateMetadata\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`); + throw new _staticgenerationbailout.StaticGenBailoutError(); + } + } +} +function getStaticShellDisallowedDynamicReasons(workStore, prelude, dynamicValidation) { + if (dynamicValidation.hasSuspenseAboveBody) { + // This route has opted into allowing fully dynamic rendering + // by including a Suspense boundary above the body. In this case + // a lack of a shell is not considered disallowed so we simply return + return []; + } + if (prelude !== 0) { + // We didn't have any sync bailouts but there may be user code which + // blocked the root. We would have captured these during the prerender + // and can log them here and then terminate the build/validating render + const dynamicErrors = dynamicValidation.dynamicErrors; + if (dynamicErrors.length > 0) { + return dynamicErrors; + } + if (prelude === 1) { + // If we ever get this far then we messed up the tracking of invalid dynamic. + // We still adhere to the constraint that you must produce a shell but invite the + // user to report this as a bug in Next.js. + return [ + Object.defineProperty(new _invarianterror.InvariantError(`Route "${workStore.route}" did not produce a static shell and Next.js was unable to determine a reason.`), "__NEXT_ERROR_CODE", { + value: "E936", + enumerable: false, + configurable: true + }) + ]; + } + } else { + // We have a prelude but we might still have dynamic metadata without any other dynamic access + if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.dynamicErrors.length === 0 && dynamicValidation.dynamicMetadata) { + return [ + dynamicValidation.dynamicMetadata + ]; + } + } + // We had a non-empty prelude and there are no dynamic holes + return []; +} +function delayUntilRuntimeStage(prerenderStore, result) { + if (prerenderStore.runtimeStagePromise) { + return prerenderStore.runtimeStagePromise.then(()=>result); + } + return result; +} //# sourceMappingURL=dynamic-rendering.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/request/utils.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + isRequestAPICallableInsideAfter: null, + throwForSearchParamsAccessInUseCache: null, + throwWithStaticGenerationBailoutErrorWithDynamicError: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + isRequestAPICallableInsideAfter: function() { + return isRequestAPICallableInsideAfter; + }, + throwForSearchParamsAccessInUseCache: function() { + return throwForSearchParamsAccessInUseCache; + }, + throwWithStaticGenerationBailoutErrorWithDynamicError: function() { + return throwWithStaticGenerationBailoutErrorWithDynamicError; + } +}); +const _staticgenerationbailout = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/static-generation-bailout.js [app-route] (ecmascript)"); +const _aftertaskasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/after-task-async-storage.external.js [external] (next/dist/server/app-render/after-task-async-storage.external.js, cjs)"); +function throwWithStaticGenerationBailoutErrorWithDynamicError(route, expression) { + throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${route} with \`dynamic = "error"\` couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), "__NEXT_ERROR_CODE", { + value: "E543", + enumerable: false, + configurable: true + }); +} +function throwForSearchParamsAccessInUseCache(workStore, constructorOpt) { + const error = Object.defineProperty(new Error(`Route ${workStore.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`), "__NEXT_ERROR_CODE", { + value: "E842", + enumerable: false, + configurable: true + }); + Error.captureStackTrace(error, constructorOpt); + workStore.invalidDynamicUsageError ??= error; + throw error; +} +function isRequestAPICallableInsideAfter() { + const afterTaskStore = _aftertaskasyncstorageexternal.afterTaskAsyncStorage.getStore(); + return (afterTaskStore == null ? void 0 : afterTaskStore.rootTaskSpawnPhase) === 'action'; +} //# sourceMappingURL=utils.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/promise-with-resolvers.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "createPromiseWithResolvers", { + enumerable: true, + get: function() { + return createPromiseWithResolvers; + } +}); +function createPromiseWithResolvers() { + // Shim of Stage 4 Promise.withResolvers proposal + let resolve; + let reject; + const promise = new Promise((res, rej)=>{ + resolve = res; + reject = rej; + }); + return { + resolve: resolve, + reject: reject, + promise + }; +} //# sourceMappingURL=promise-with-resolvers.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/app-render/staged-rendering.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + RenderStage: null, + StagedRenderingController: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + RenderStage: function() { + return RenderStage; + }, + StagedRenderingController: function() { + return StagedRenderingController; + } +}); +const _invarianterror = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/invariant-error.js [app-route] (ecmascript)"); +const _promisewithresolvers = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/promise-with-resolvers.js [app-route] (ecmascript)"); +var RenderStage = /*#__PURE__*/ function(RenderStage) { + RenderStage[RenderStage["Before"] = 1] = "Before"; + RenderStage[RenderStage["Static"] = 2] = "Static"; + RenderStage[RenderStage["Runtime"] = 3] = "Runtime"; + RenderStage[RenderStage["Dynamic"] = 4] = "Dynamic"; + RenderStage[RenderStage["Abandoned"] = 5] = "Abandoned"; + return RenderStage; +}({}); +class StagedRenderingController { + constructor(abortSignal = null, hasRuntimePrefetch){ + this.abortSignal = abortSignal; + this.hasRuntimePrefetch = hasRuntimePrefetch; + this.currentStage = 1; + this.staticInterruptReason = null; + this.runtimeInterruptReason = null; + this.staticStageEndTime = Infinity; + this.runtimeStageEndTime = Infinity; + this.runtimeStageListeners = []; + this.dynamicStageListeners = []; + this.runtimeStagePromise = (0, _promisewithresolvers.createPromiseWithResolvers)(); + this.dynamicStagePromise = (0, _promisewithresolvers.createPromiseWithResolvers)(); + this.mayAbandon = false; + if (abortSignal) { + abortSignal.addEventListener('abort', ()=>{ + const { reason } = abortSignal; + if (this.currentStage < 3) { + this.runtimeStagePromise.promise.catch(ignoreReject) // avoid unhandled rejections + ; + this.runtimeStagePromise.reject(reason); + } + if (this.currentStage < 4 || this.currentStage === 5) { + this.dynamicStagePromise.promise.catch(ignoreReject) // avoid unhandled rejections + ; + this.dynamicStagePromise.reject(reason); + } + }, { + once: true + }); + this.mayAbandon = true; + } + } + onStage(stage, callback) { + if (this.currentStage >= stage) { + callback(); + } else if (stage === 3) { + this.runtimeStageListeners.push(callback); + } else if (stage === 4) { + this.dynamicStageListeners.push(callback); + } else { + // This should never happen + throw Object.defineProperty(new _invarianterror.InvariantError(`Invalid render stage: ${stage}`), "__NEXT_ERROR_CODE", { + value: "E881", + enumerable: false, + configurable: true + }); + } + } + canSyncInterrupt() { + // If we haven't started the render yet, it can't be interrupted. + if (this.currentStage === 1) { + return false; + } + const boundaryStage = this.hasRuntimePrefetch ? 4 : 3; + return this.currentStage < boundaryStage; + } + syncInterruptCurrentStageWithReason(reason) { + if (this.currentStage === 1) { + return; + } + // If Sync IO occurs during the initial (abandonable) render, we'll retry it, + // so we want a slightly different flow. + // See the implementation of `abandonRenderImpl` for more explanation. + if (this.mayAbandon) { + return this.abandonRenderImpl(); + } + // If we're in the final render, we cannot abandon it. We need to advance to the Dynamic stage + // and capture the interruption reason. + switch(this.currentStage){ + case 2: + { + this.staticInterruptReason = reason; + this.advanceStage(4); + return; + } + case 3: + { + // We only error for Sync IO in the runtime stage if the route + // is configured to use runtime prefetching. + // We do this to reflect the fact that during a runtime prefetch, + // Sync IO aborts aborts the render. + // Note that `canSyncInterrupt` should prevent us from getting here at all + // if runtime prefetching isn't enabled. + if (this.hasRuntimePrefetch) { + this.runtimeInterruptReason = reason; + this.advanceStage(4); + } + return; + } + case 4: + case 5: + default: + } + } + getStaticInterruptReason() { + return this.staticInterruptReason; + } + getRuntimeInterruptReason() { + return this.runtimeInterruptReason; + } + getStaticStageEndTime() { + return this.staticStageEndTime; + } + getRuntimeStageEndTime() { + return this.runtimeStageEndTime; + } + abandonRender() { + if (!this.mayAbandon) { + throw Object.defineProperty(new _invarianterror.InvariantError('`abandonRender` called on a stage controller that cannot be abandoned.'), "__NEXT_ERROR_CODE", { + value: "E938", + enumerable: false, + configurable: true + }); + } + this.abandonRenderImpl(); + } + abandonRenderImpl() { + // In staged rendering, only the initial render is abandonable. + // We can abandon the initial render if + // 1. We notice a cache miss, and need to wait for caches to fill + // 2. A sync IO error occurs, and the render should be interrupted + // (this might be a lazy intitialization of a module, + // so we still want to restart in this case and see if it still occurs) + // In either case, we'll be doing another render after this one, + // so we only want to unblock the Runtime stage, not Dynamic, because + // unblocking the dynamic stage would likely lead to wasted (uncached) IO. + const { currentStage } = this; + switch(currentStage){ + case 2: + { + this.currentStage = 5; + this.resolveRuntimeStage(); + return; + } + case 3: + { + this.currentStage = 5; + return; + } + case 4: + case 1: + case 5: + break; + default: + { + currentStage; + } + } + } + advanceStage(stage) { + // If we're already at the target stage or beyond, do nothing. + // (this can happen e.g. if sync IO advanced us to the dynamic stage) + if (stage <= this.currentStage) { + return; + } + let currentStage = this.currentStage; + this.currentStage = stage; + if (currentStage < 3 && stage >= 3) { + this.staticStageEndTime = performance.now() + performance.timeOrigin; + this.resolveRuntimeStage(); + } + if (currentStage < 4 && stage >= 4) { + this.runtimeStageEndTime = performance.now() + performance.timeOrigin; + this.resolveDynamicStage(); + return; + } + } + /** Fire the `onStage` listeners for the runtime stage and unblock any promises waiting for it. */ resolveRuntimeStage() { + const runtimeListeners = this.runtimeStageListeners; + for(let i = 0; i < runtimeListeners.length; i++){ + runtimeListeners[i](); + } + runtimeListeners.length = 0; + this.runtimeStagePromise.resolve(); + } + /** Fire the `onStage` listeners for the dynamic stage and unblock any promises waiting for it. */ resolveDynamicStage() { + const dynamicListeners = this.dynamicStageListeners; + for(let i = 0; i < dynamicListeners.length; i++){ + dynamicListeners[i](); + } + dynamicListeners.length = 0; + this.dynamicStagePromise.resolve(); + } + getStagePromise(stage) { + switch(stage){ + case 3: + { + return this.runtimeStagePromise.promise; + } + case 4: + { + return this.dynamicStagePromise.promise; + } + default: + { + stage; + throw Object.defineProperty(new _invarianterror.InvariantError(`Invalid render stage: ${stage}`), "__NEXT_ERROR_CODE", { + value: "E881", + enumerable: false, + configurable: true + }); + } + } + } + waitForStage(stage) { + return this.getStagePromise(stage); + } + delayUntilStage(stage, displayName, resolvedValue) { + const ioTriggerPromise = this.getStagePromise(stage); + const promise = makeDevtoolsIOPromiseFromIOTrigger(ioTriggerPromise, displayName, resolvedValue); + // Analogously to `makeHangingPromise`, we might reject this promise if the signal is invoked. + // (e.g. in the case where we don't want want the render to proceed to the dynamic stage and abort it). + // We shouldn't consider this an unhandled rejection, so we attach a noop catch handler here to suppress this warning. + if (this.abortSignal) { + promise.catch(ignoreReject); + } + return promise; + } +} +function ignoreReject() {} +// TODO(restart-on-cache-miss): the layering of `delayUntilStage`, +// `makeDevtoolsIOPromiseFromIOTrigger` and and `makeDevtoolsIOAwarePromise` +// is confusing, we should clean it up. +function makeDevtoolsIOPromiseFromIOTrigger(ioTrigger, displayName, resolvedValue) { + // If we create a `new Promise` and give it a displayName + // (with no userspace code above us in the stack) + // React Devtools will use it as the IO cause when determining "suspended by". + // In particular, it should shadow any inner IO that resolved/rejected the promise + // (in case of staged rendering, this will be the `setTimeout` that triggers the relevant stage) + const promise = new Promise((resolve, reject)=>{ + ioTrigger.then(resolve.bind(null, resolvedValue), reject); + }); + if (displayName !== undefined) { + // @ts-expect-error + promise.displayName = displayName; + } + return promise; +} //# sourceMappingURL=staged-rendering.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/request/connection.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "connection", { + enumerable: true, + get: function() { + return connection; + } +}); +const _workasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)"); +const _workunitasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-unit-async-storage.external.js [external] (next/dist/server/app-render/work-unit-async-storage.external.js, cjs)"); +const _dynamicrendering = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/app-render/dynamic-rendering.js [app-route] (ecmascript)"); +const _staticgenerationbailout = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/static-generation-bailout.js [app-route] (ecmascript)"); +const _dynamicrenderingutils = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/dynamic-rendering-utils.js [app-route] (ecmascript)"); +const _utils = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/request/utils.js [app-route] (ecmascript)"); +const _stagedrendering = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/app-render/staged-rendering.js [app-route] (ecmascript)"); +function connection() { + const callingExpression = 'connection'; + const workStore = _workasyncstorageexternal.workAsyncStorage.getStore(); + const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); + if (workStore) { + if (workUnitStore && workUnitStore.phase === 'after' && !(0, _utils.isRequestAPICallableInsideAfter)()) { + throw Object.defineProperty(new Error(`Route ${workStore.route} used \`connection()\` inside \`after()\`. The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but \`after()\` executes after the request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`), "__NEXT_ERROR_CODE", { + value: "E827", + enumerable: false, + configurable: true + }); + } + if (workStore.forceStatic) { + // When using forceStatic, we override all other logic and always just + // return a resolving promise without tracking. + return Promise.resolve(undefined); + } + if (workStore.dynamicShouldError) { + throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${workStore.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`connection()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), "__NEXT_ERROR_CODE", { + value: "E847", + enumerable: false, + configurable: true + }); + } + if (workUnitStore) { + switch(workUnitStore.type){ + case 'cache': + { + const error = Object.defineProperty(new Error(`Route ${workStore.route} used \`connection()\` inside "use cache". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual request, but caches must be able to be produced before a request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`), "__NEXT_ERROR_CODE", { + value: "E841", + enumerable: false, + configurable: true + }); + Error.captureStackTrace(error, connection); + workStore.invalidDynamicUsageError ??= error; + throw error; + } + case 'private-cache': + { + // It might not be intuitive to throw for private caches as well, but + // we don't consider runtime prefetches as "actual requests" (in the + // navigation sense), despite allowing them to read cookies. + const error = Object.defineProperty(new Error(`Route ${workStore.route} used \`connection()\` inside "use cache: private". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual navigation request, but caches must be able to be produced before a navigation request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`), "__NEXT_ERROR_CODE", { + value: "E837", + enumerable: false, + configurable: true + }); + Error.captureStackTrace(error, connection); + workStore.invalidDynamicUsageError ??= error; + throw error; + } + case 'unstable-cache': + throw Object.defineProperty(new Error(`Route ${workStore.route} used \`connection()\` inside a function cached with \`unstable_cache()\`. The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but caches must be able to be produced before a Request so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`), "__NEXT_ERROR_CODE", { + value: "E840", + enumerable: false, + configurable: true + }); + case 'prerender': + case 'prerender-client': + case 'prerender-runtime': + // We return a promise that never resolves to allow the prerender to + // stall at this point. + return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, '`connection()`'); + case 'prerender-ppr': + // We use React's postpone API to interrupt rendering here to create a + // dynamic hole + return (0, _dynamicrendering.postponeWithTracking)(workStore.route, 'connection', workUnitStore.dynamicTracking); + case 'prerender-legacy': + // We throw an error here to interrupt prerendering to mark the route + // as dynamic + return (0, _dynamicrendering.throwToInterruptStaticGeneration)('connection', workStore, workUnitStore); + case 'request': + (0, _dynamicrendering.trackDynamicDataInDynamicRender)(workUnitStore); + if ("TURBOPACK compile-time truthy", 1) { + // Semantically we only need the dev tracking when running in `next dev` + // but since you would never use next dev with production NODE_ENV we use this + // as a proxy so we can statically exclude this code from production builds. + if (workUnitStore.asyncApiPromises) { + return workUnitStore.asyncApiPromises.connection; + } + return (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(undefined, workUnitStore, _stagedrendering.RenderStage.Dynamic); + } else //TURBOPACK unreachable + ; + default: + workUnitStore; + } + } + } + // If we end up here, there was no work store or work unit store present. + (0, _workunitasyncstorageexternal.throwForMissingRequestStore)(callingExpression); +} //# sourceMappingURL=connection.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/server.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { + +const serverExports = { + NextRequest: __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/request.js [app-route] (ecmascript)").NextRequest, + NextResponse: __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/response.js [app-route] (ecmascript)").NextResponse, + ImageResponse: __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/image-response.js [app-route] (ecmascript)").ImageResponse, + userAgentFromString: __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/user-agent.js [app-route] (ecmascript)").userAgentFromString, + userAgent: __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/user-agent.js [app-route] (ecmascript)").userAgent, + URLPattern: __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/url-pattern.js [app-route] (ecmascript)").URLPattern, + after: __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/after/index.js [app-route] (ecmascript)").after, + connection: __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/request/connection.js [app-route] (ecmascript)").connection +}; +// https://nodejs.org/api/esm.html#commonjs-namespaces +// When importing CommonJS modules, the module.exports object is provided as the default export +module.exports = serverExports; +// make import { xxx } from 'next/server' work +exports.NextRequest = serverExports.NextRequest; +exports.NextResponse = serverExports.NextResponse; +exports.ImageResponse = serverExports.ImageResponse; +exports.userAgentFromString = serverExports.userAgentFromString; +exports.userAgent = serverExports.userAgent; +exports.URLPattern = serverExports.URLPattern; +exports.after = serverExports.after; +exports.connection = serverExports.connection; +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/action-revalidation-kind.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + ActionDidNotRevalidate: null, + ActionDidRevalidateDynamicOnly: null, + ActionDidRevalidateStaticAndDynamic: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + ActionDidNotRevalidate: function() { + return ActionDidNotRevalidate; + }, + ActionDidRevalidateDynamicOnly: function() { + return ActionDidRevalidateDynamicOnly; + }, + ActionDidRevalidateStaticAndDynamic: function() { + return ActionDidRevalidateStaticAndDynamic; + } +}); +const ActionDidNotRevalidate = 0; +const ActionDidRevalidateStaticAndDynamic = 1; +const ActionDidRevalidateDynamicOnly = 2; //# sourceMappingURL=action-revalidation-kind.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + MutableRequestCookiesAdapter: null, + ReadonlyRequestCookiesError: null, + RequestCookiesAdapter: null, + appendMutableCookies: null, + areCookiesMutableInCurrentPhase: null, + createCookiesWithMutableAccessCheck: null, + getModifiedCookieValues: null, + responseCookiesToRequestCookies: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + MutableRequestCookiesAdapter: function() { + return MutableRequestCookiesAdapter; + }, + ReadonlyRequestCookiesError: function() { + return ReadonlyRequestCookiesError; + }, + RequestCookiesAdapter: function() { + return RequestCookiesAdapter; + }, + appendMutableCookies: function() { + return appendMutableCookies; + }, + areCookiesMutableInCurrentPhase: function() { + return areCookiesMutableInCurrentPhase; + }, + createCookiesWithMutableAccessCheck: function() { + return createCookiesWithMutableAccessCheck; + }, + getModifiedCookieValues: function() { + return getModifiedCookieValues; + }, + responseCookiesToRequestCookies: function() { + return responseCookiesToRequestCookies; + } +}); +const _cookies = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/cookies.js [app-route] (ecmascript)"); +const _reflect = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/adapters/reflect.js [app-route] (ecmascript)"); +const _workasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)"); +const _actionrevalidationkind = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/action-revalidation-kind.js [app-route] (ecmascript)"); +class ReadonlyRequestCookiesError extends Error { + constructor(){ + super('Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options'); + } + static callable() { + throw new ReadonlyRequestCookiesError(); + } +} +class RequestCookiesAdapter { + static seal(cookies) { + return new Proxy(cookies, { + get (target, prop, receiver) { + switch(prop){ + case 'clear': + case 'delete': + case 'set': + return ReadonlyRequestCookiesError.callable; + default: + return _reflect.ReflectAdapter.get(target, prop, receiver); + } + } + }); + } +} +const SYMBOL_MODIFY_COOKIE_VALUES = Symbol.for('next.mutated.cookies'); +function getModifiedCookieValues(cookies) { + const modified = cookies[SYMBOL_MODIFY_COOKIE_VALUES]; + if (!modified || !Array.isArray(modified) || modified.length === 0) { + return []; + } + return modified; +} +function appendMutableCookies(headers, mutableCookies) { + const modifiedCookieValues = getModifiedCookieValues(mutableCookies); + if (modifiedCookieValues.length === 0) { + return false; + } + // Return a new response that extends the response with + // the modified cookies as fallbacks. `res` cookies + // will still take precedence. + const resCookies = new _cookies.ResponseCookies(headers); + const returnedCookies = resCookies.getAll(); + // Set the modified cookies as fallbacks. + for (const cookie of modifiedCookieValues){ + resCookies.set(cookie); + } + // Set the original cookies as the final values. + for (const cookie of returnedCookies){ + resCookies.set(cookie); + } + return true; +} +class MutableRequestCookiesAdapter { + static wrap(cookies, onUpdateCookies) { + const responseCookies = new _cookies.ResponseCookies(new Headers()); + for (const cookie of cookies.getAll()){ + responseCookies.set(cookie); + } + let modifiedValues = []; + const modifiedCookies = new Set(); + const updateResponseCookies = ()=>{ + // TODO-APP: change method of getting workStore + const workStore = _workasyncstorageexternal.workAsyncStorage.getStore(); + if (workStore) { + workStore.pathWasRevalidated = _actionrevalidationkind.ActionDidRevalidateStaticAndDynamic; + } + const allCookies = responseCookies.getAll(); + modifiedValues = allCookies.filter((c)=>modifiedCookies.has(c.name)); + if (onUpdateCookies) { + const serializedCookies = []; + for (const cookie of modifiedValues){ + const tempCookies = new _cookies.ResponseCookies(new Headers()); + tempCookies.set(cookie); + serializedCookies.push(tempCookies.toString()); + } + onUpdateCookies(serializedCookies); + } + }; + const wrappedCookies = new Proxy(responseCookies, { + get (target, prop, receiver) { + switch(prop){ + // A special symbol to get the modified cookie values + case SYMBOL_MODIFY_COOKIE_VALUES: + return modifiedValues; + // TODO: Throw error if trying to set a cookie after the response + // headers have been set. + case 'delete': + return function(...args) { + modifiedCookies.add(typeof args[0] === 'string' ? args[0] : args[0].name); + try { + target.delete(...args); + return wrappedCookies; + } finally{ + updateResponseCookies(); + } + }; + case 'set': + return function(...args) { + modifiedCookies.add(typeof args[0] === 'string' ? args[0] : args[0].name); + try { + target.set(...args); + return wrappedCookies; + } finally{ + updateResponseCookies(); + } + }; + default: + return _reflect.ReflectAdapter.get(target, prop, receiver); + } + } + }); + return wrappedCookies; + } +} +function createCookiesWithMutableAccessCheck(requestStore) { + const wrappedCookies = new Proxy(requestStore.mutableCookies, { + get (target, prop, receiver) { + switch(prop){ + case 'delete': + return function(...args) { + ensureCookiesAreStillMutable(requestStore, 'cookies().delete'); + target.delete(...args); + return wrappedCookies; + }; + case 'set': + return function(...args) { + ensureCookiesAreStillMutable(requestStore, 'cookies().set'); + target.set(...args); + return wrappedCookies; + }; + default: + return _reflect.ReflectAdapter.get(target, prop, receiver); + } + } + }); + return wrappedCookies; +} +function areCookiesMutableInCurrentPhase(requestStore) { + return requestStore.phase === 'action'; +} +/** Ensure that cookies() starts throwing on mutation + * if we changed phases and can no longer mutate. + * + * This can happen when going: + * 'render' -> 'after' + * 'action' -> 'render' + * */ function ensureCookiesAreStillMutable(requestStore, _callingExpression) { + if (!areCookiesMutableInCurrentPhase(requestStore)) { + // TODO: maybe we can give a more precise error message based on callingExpression? + throw new ReadonlyRequestCookiesError(); + } +} +function responseCookiesToRequestCookies(responseCookies) { + const requestCookies = new _cookies.RequestCookies(new Headers()); + for (const cookie of responseCookies.getAll()){ + requestCookies.set(cookie); + } + return requestCookies; +} //# sourceMappingURL=request-cookies.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "createDedupedByCallsiteServerErrorLoggerDev", { + enumerable: true, + get: function() { + return createDedupedByCallsiteServerErrorLoggerDev; + } +}); +const _react = /*#__PURE__*/ _interop_require_wildcard(__turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js [app-route] (ecmascript)")); +function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== "function") return null; + var cacheBabelInterop = new WeakMap(); + var cacheNodeInterop = new WeakMap(); + return (_getRequireWildcardCache = function(nodeInterop) { + return nodeInterop ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); +} +function _interop_require_wildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) { + return obj; + } + if (obj === null || typeof obj !== "object" && typeof obj !== "function") { + return { + default: obj + }; + } + var cache = _getRequireWildcardCache(nodeInterop); + if (cache && cache.has(obj)) { + return cache.get(obj); + } + var newObj = { + __proto__: null + }; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for(var key in obj){ + if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + if (desc && (desc.get || desc.set)) { + Object.defineProperty(newObj, key, desc); + } else { + newObj[key] = obj[key]; + } + } + } + newObj.default = obj; + if (cache) { + cache.set(obj, newObj); + } + return newObj; +} +const errorRef = { + current: null +}; +// React.cache is currently only available in canary/experimental React channels. +const cache = typeof _react.cache === 'function' ? _react.cache : (fn)=>fn; +// When Cache Components is enabled, we record these as errors so that they +// are captured by the dev overlay as it's more critical to fix these +// when enabled. +const logErrorOrWarn = ("TURBOPACK compile-time falsy", 0) ? "TURBOPACK unreachable" : console.warn; +// We don't want to dedupe across requests. +// The developer might've just attempted to fix the warning so we should warn again if it still happens. +const flushCurrentErrorIfNew = cache((key)=>{ + try { + logErrorOrWarn(errorRef.current); + } finally{ + errorRef.current = null; + } +}); +function createDedupedByCallsiteServerErrorLoggerDev(getMessage) { + return function logDedupedError(...args) { + const message = getMessage(...args); + if ("TURBOPACK compile-time truthy", 1) { + var _stack; + const callStackFrames = (_stack = new Error().stack) == null ? void 0 : _stack.split('\n'); + if (callStackFrames === undefined || callStackFrames.length < 4) { + logErrorOrWarn(message); + } else { + // Error: + // logDedupedError + // asyncApiBeingAccessedSynchronously + // + // TODO: This breaks if sourcemaps with ignore lists are enabled. + const key = callStackFrames[4]; + errorRef.current = message; + flushCurrentErrorIfNew(key); + } + } else //TURBOPACK unreachable + ; + }; +} //# sourceMappingURL=create-deduped-by-callsite-server-error-logger.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/request/cookies.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "cookies", { + enumerable: true, + get: function() { + return cookies; + } +}); +const _requestcookies = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js [app-route] (ecmascript)"); +const _cookies = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/cookies.js [app-route] (ecmascript)"); +const _workasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)"); +const _workunitasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-unit-async-storage.external.js [external] (next/dist/server/app-render/work-unit-async-storage.external.js, cjs)"); +const _dynamicrendering = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/app-render/dynamic-rendering.js [app-route] (ecmascript)"); +const _staticgenerationbailout = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/static-generation-bailout.js [app-route] (ecmascript)"); +const _dynamicrenderingutils = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/dynamic-rendering-utils.js [app-route] (ecmascript)"); +const _creatededupedbycallsiteservererrorlogger = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js [app-route] (ecmascript)"); +const _utils = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/request/utils.js [app-route] (ecmascript)"); +const _invarianterror = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/invariant-error.js [app-route] (ecmascript)"); +const _stagedrendering = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/app-render/staged-rendering.js [app-route] (ecmascript)"); +function cookies() { + const callingExpression = 'cookies'; + const workStore = _workasyncstorageexternal.workAsyncStorage.getStore(); + const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); + if (workStore) { + if (workUnitStore && workUnitStore.phase === 'after' && !(0, _utils.isRequestAPICallableInsideAfter)()) { + throw Object.defineProperty(new Error(`Route ${workStore.route} used \`cookies()\` inside \`after()\`. This is not supported. If you need this data inside an \`after()\` callback, use \`cookies()\` outside of the callback. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`), "__NEXT_ERROR_CODE", { + value: "E843", + enumerable: false, + configurable: true + }); + } + if (workStore.forceStatic) { + // When using forceStatic we override all other logic and always just return an empty + // cookies object without tracking + const underlyingCookies = createEmptyCookies(); + return makeUntrackedCookies(underlyingCookies); + } + if (workStore.dynamicShouldError) { + throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${workStore.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`cookies()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), "__NEXT_ERROR_CODE", { + value: "E849", + enumerable: false, + configurable: true + }); + } + if (workUnitStore) { + switch(workUnitStore.type){ + case 'cache': + const error = Object.defineProperty(new Error(`Route ${workStore.route} used \`cookies()\` inside "use cache". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`cookies()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`), "__NEXT_ERROR_CODE", { + value: "E831", + enumerable: false, + configurable: true + }); + Error.captureStackTrace(error, cookies); + workStore.invalidDynamicUsageError ??= error; + throw error; + case 'unstable-cache': + throw Object.defineProperty(new Error(`Route ${workStore.route} used \`cookies()\` inside a function cached with \`unstable_cache()\`. Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`cookies()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`), "__NEXT_ERROR_CODE", { + value: "E846", + enumerable: false, + configurable: true + }); + case 'prerender': + return makeHangingCookies(workStore, workUnitStore); + case 'prerender-client': + const exportName = '`cookies`'; + throw Object.defineProperty(new _invarianterror.InvariantError(`${exportName} must not be used within a Client Component. Next.js should be preventing ${exportName} from being included in Client Components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { + value: "E832", + enumerable: false, + configurable: true + }); + case 'prerender-ppr': + // We need track dynamic access here eagerly to keep continuity with + // how cookies has worked in PPR without cacheComponents. + return (0, _dynamicrendering.postponeWithTracking)(workStore.route, callingExpression, workUnitStore.dynamicTracking); + case 'prerender-legacy': + // We track dynamic access here so we don't need to wrap the cookies + // in individual property access tracking. + return (0, _dynamicrendering.throwToInterruptStaticGeneration)(callingExpression, workStore, workUnitStore); + case 'prerender-runtime': + return (0, _dynamicrendering.delayUntilRuntimeStage)(workUnitStore, makeUntrackedCookies(workUnitStore.cookies)); + case 'private-cache': + // Private caches are delayed until the runtime stage in use-cache-wrapper, + // so we don't need an additional delay here. + return makeUntrackedCookies(workUnitStore.cookies); + case 'request': + (0, _dynamicrendering.trackDynamicDataInDynamicRender)(workUnitStore); + let underlyingCookies; + if ((0, _requestcookies.areCookiesMutableInCurrentPhase)(workUnitStore)) { + // We can't conditionally return different types here based on the context. + // To avoid confusion, we always return the readonly type here. + underlyingCookies = workUnitStore.userspaceMutableCookies; + } else { + underlyingCookies = workUnitStore.cookies; + } + if ("TURBOPACK compile-time truthy", 1) { + // Semantically we only need the dev tracking when running in `next dev` + // but since you would never use next dev with production NODE_ENV we use this + // as a proxy so we can statically exclude this code from production builds. + return makeUntrackedCookiesWithDevWarnings(workUnitStore, underlyingCookies, workStore == null ? void 0 : workStore.route); + } else //TURBOPACK unreachable + ; + default: + workUnitStore; + } + } + } + // If we end up here, there was no work store or work unit store present. + (0, _workunitasyncstorageexternal.throwForMissingRequestStore)(callingExpression); +} +function createEmptyCookies() { + return _requestcookies.RequestCookiesAdapter.seal(new _cookies.RequestCookies(new Headers({}))); +} +const CachedCookies = new WeakMap(); +function makeHangingCookies(workStore, prerenderStore) { + const cachedPromise = CachedCookies.get(prerenderStore); + if (cachedPromise) { + return cachedPromise; + } + const promise = (0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, workStore.route, '`cookies()`'); + CachedCookies.set(prerenderStore, promise); + return promise; +} +function makeUntrackedCookies(underlyingCookies) { + const cachedCookies = CachedCookies.get(underlyingCookies); + if (cachedCookies) { + return cachedCookies; + } + const promise = Promise.resolve(underlyingCookies); + CachedCookies.set(underlyingCookies, promise); + return promise; +} +function makeUntrackedCookiesWithDevWarnings(requestStore, underlyingCookies, route) { + if (requestStore.asyncApiPromises) { + let promise; + if (underlyingCookies === requestStore.mutableCookies) { + promise = requestStore.asyncApiPromises.mutableCookies; + } else if (underlyingCookies === requestStore.cookies) { + promise = requestStore.asyncApiPromises.cookies; + } else { + throw Object.defineProperty(new _invarianterror.InvariantError('Received an underlying cookies object that does not match either `cookies` or `mutableCookies`'), "__NEXT_ERROR_CODE", { + value: "E890", + enumerable: false, + configurable: true + }); + } + return instrumentCookiesPromiseWithDevWarnings(promise, route); + } + const cachedCookies = CachedCookies.get(underlyingCookies); + if (cachedCookies) { + return cachedCookies; + } + const promise = (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(underlyingCookies, requestStore, _stagedrendering.RenderStage.Runtime); + const proxiedPromise = instrumentCookiesPromiseWithDevWarnings(promise, route); + CachedCookies.set(underlyingCookies, proxiedPromise); + return proxiedPromise; +} +const warnForSyncAccess = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createCookiesAccessError); +function instrumentCookiesPromiseWithDevWarnings(promise, route) { + Object.defineProperties(promise, { + [Symbol.iterator]: replaceableWarningDescriptorForSymbolIterator(promise, route), + size: replaceableWarningDescriptor(promise, 'size', route), + get: replaceableWarningDescriptor(promise, 'get', route), + getAll: replaceableWarningDescriptor(promise, 'getAll', route), + has: replaceableWarningDescriptor(promise, 'has', route), + set: replaceableWarningDescriptor(promise, 'set', route), + delete: replaceableWarningDescriptor(promise, 'delete', route), + clear: replaceableWarningDescriptor(promise, 'clear', route), + toString: replaceableWarningDescriptor(promise, 'toString', route) + }); + return promise; +} +function replaceableWarningDescriptor(target, prop, route) { + return { + enumerable: false, + get () { + warnForSyncAccess(route, `\`cookies().${prop}\``); + return undefined; + }, + set (value) { + Object.defineProperty(target, prop, { + value, + writable: true, + configurable: true + }); + }, + configurable: true + }; +} +function replaceableWarningDescriptorForSymbolIterator(target, route) { + return { + enumerable: false, + get () { + warnForSyncAccess(route, '`...cookies()` or similar iteration'); + return undefined; + }, + set (value) { + Object.defineProperty(target, Symbol.iterator, { + value, + writable: true, + enumerable: true, + configurable: true + }); + }, + configurable: true + }; +} +function createCookiesAccessError(route, expression) { + const prefix = route ? `Route "${route}" ` : 'This route '; + return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\`cookies()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), "__NEXT_ERROR_CODE", { + value: "E830", + enumerable: false, + configurable: true + }); +} //# sourceMappingURL=cookies.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/adapters/headers.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + HeadersAdapter: null, + ReadonlyHeadersError: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + HeadersAdapter: function() { + return HeadersAdapter; + }, + ReadonlyHeadersError: function() { + return ReadonlyHeadersError; + } +}); +const _reflect = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/adapters/reflect.js [app-route] (ecmascript)"); +class ReadonlyHeadersError extends Error { + constructor(){ + super('Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers'); + } + static callable() { + throw new ReadonlyHeadersError(); + } +} +class HeadersAdapter extends Headers { + constructor(headers){ + // We've already overridden the methods that would be called, so we're just + // calling the super constructor to ensure that the instanceof check works. + super(); + this.headers = new Proxy(headers, { + get (target, prop, receiver) { + // Because this is just an object, we expect that all "get" operations + // are for properties. If it's a "get" for a symbol, we'll just return + // the symbol. + if (typeof prop === 'symbol') { + return _reflect.ReflectAdapter.get(target, prop, receiver); + } + const lowercased = prop.toLowerCase(); + // Let's find the original casing of the key. This assumes that there is + // no mixed case keys (e.g. "Content-Type" and "content-type") in the + // headers object. + const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); + // If the original casing doesn't exist, return undefined. + if (typeof original === 'undefined') return; + // If the original casing exists, return the value. + return _reflect.ReflectAdapter.get(target, original, receiver); + }, + set (target, prop, value, receiver) { + if (typeof prop === 'symbol') { + return _reflect.ReflectAdapter.set(target, prop, value, receiver); + } + const lowercased = prop.toLowerCase(); + // Let's find the original casing of the key. This assumes that there is + // no mixed case keys (e.g. "Content-Type" and "content-type") in the + // headers object. + const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); + // If the original casing doesn't exist, use the prop as the key. + return _reflect.ReflectAdapter.set(target, original ?? prop, value, receiver); + }, + has (target, prop) { + if (typeof prop === 'symbol') return _reflect.ReflectAdapter.has(target, prop); + const lowercased = prop.toLowerCase(); + // Let's find the original casing of the key. This assumes that there is + // no mixed case keys (e.g. "Content-Type" and "content-type") in the + // headers object. + const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); + // If the original casing doesn't exist, return false. + if (typeof original === 'undefined') return false; + // If the original casing exists, return true. + return _reflect.ReflectAdapter.has(target, original); + }, + deleteProperty (target, prop) { + if (typeof prop === 'symbol') return _reflect.ReflectAdapter.deleteProperty(target, prop); + const lowercased = prop.toLowerCase(); + // Let's find the original casing of the key. This assumes that there is + // no mixed case keys (e.g. "Content-Type" and "content-type") in the + // headers object. + const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased); + // If the original casing doesn't exist, return true. + if (typeof original === 'undefined') return true; + // If the original casing exists, delete the property. + return _reflect.ReflectAdapter.deleteProperty(target, original); + } + }); + } + /** + * Seals a Headers instance to prevent modification by throwing an error when + * any mutating method is called. + */ static seal(headers) { + return new Proxy(headers, { + get (target, prop, receiver) { + switch(prop){ + case 'append': + case 'delete': + case 'set': + return ReadonlyHeadersError.callable; + default: + return _reflect.ReflectAdapter.get(target, prop, receiver); + } + } + }); + } + /** + * Merges a header value into a string. This stores multiple values as an + * array, so we need to merge them into a string. + * + * @param value a header value + * @returns a merged header value (a string) + */ merge(value) { + if (Array.isArray(value)) return value.join(', '); + return value; + } + /** + * Creates a Headers instance from a plain object or a Headers instance. + * + * @param headers a plain object or a Headers instance + * @returns a headers instance + */ static from(headers) { + if (headers instanceof Headers) return headers; + return new HeadersAdapter(headers); + } + append(name, value) { + const existing = this.headers[name]; + if (typeof existing === 'string') { + this.headers[name] = [ + existing, + value + ]; + } else if (Array.isArray(existing)) { + existing.push(value); + } else { + this.headers[name] = value; + } + } + delete(name) { + delete this.headers[name]; + } + get(name) { + const value = this.headers[name]; + if (typeof value !== 'undefined') return this.merge(value); + return null; + } + has(name) { + return typeof this.headers[name] !== 'undefined'; + } + set(name, value) { + this.headers[name] = value; + } + forEach(callbackfn, thisArg) { + for (const [name, value] of this.entries()){ + callbackfn.call(thisArg, value, name, this); + } + } + *entries() { + for (const key of Object.keys(this.headers)){ + const name = key.toLowerCase(); + // We assert here that this is a string because we got it from the + // Object.keys() call above. + const value = this.get(name); + yield [ + name, + value + ]; + } + } + *keys() { + for (const key of Object.keys(this.headers)){ + const name = key.toLowerCase(); + yield name; + } + } + *values() { + for (const key of Object.keys(this.headers)){ + // We assert here that this is a string because we got it from the + // Object.keys() call above. + const value = this.get(key); + yield value; + } + } + [Symbol.iterator]() { + return this.entries(); + } +} //# sourceMappingURL=headers.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/request/headers.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "headers", { + enumerable: true, + get: function() { + return headers; + } +}); +const _headers = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/adapters/headers.js [app-route] (ecmascript)"); +const _workasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)"); +const _workunitasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-unit-async-storage.external.js [external] (next/dist/server/app-render/work-unit-async-storage.external.js, cjs)"); +const _dynamicrendering = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/app-render/dynamic-rendering.js [app-route] (ecmascript)"); +const _staticgenerationbailout = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/static-generation-bailout.js [app-route] (ecmascript)"); +const _dynamicrenderingutils = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/dynamic-rendering-utils.js [app-route] (ecmascript)"); +const _creatededupedbycallsiteservererrorlogger = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js [app-route] (ecmascript)"); +const _utils = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/request/utils.js [app-route] (ecmascript)"); +const _invarianterror = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/invariant-error.js [app-route] (ecmascript)"); +const _stagedrendering = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/app-render/staged-rendering.js [app-route] (ecmascript)"); +function headers() { + const callingExpression = 'headers'; + const workStore = _workasyncstorageexternal.workAsyncStorage.getStore(); + const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); + if (workStore) { + if (workUnitStore && workUnitStore.phase === 'after' && !(0, _utils.isRequestAPICallableInsideAfter)()) { + throw Object.defineProperty(new Error(`Route ${workStore.route} used \`headers()\` inside \`after()\`. This is not supported. If you need this data inside an \`after()\` callback, use \`headers()\` outside of the callback. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`), "__NEXT_ERROR_CODE", { + value: "E839", + enumerable: false, + configurable: true + }); + } + if (workStore.forceStatic) { + // When using forceStatic we override all other logic and always just return an empty + // headers object without tracking + const underlyingHeaders = _headers.HeadersAdapter.seal(new Headers({})); + return makeUntrackedHeaders(underlyingHeaders); + } + if (workUnitStore) { + switch(workUnitStore.type){ + case 'cache': + { + const error = Object.defineProperty(new Error(`Route ${workStore.route} used \`headers()\` inside "use cache". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`headers()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`), "__NEXT_ERROR_CODE", { + value: "E833", + enumerable: false, + configurable: true + }); + Error.captureStackTrace(error, headers); + workStore.invalidDynamicUsageError ??= error; + throw error; + } + case 'unstable-cache': + throw Object.defineProperty(new Error(`Route ${workStore.route} used \`headers()\` inside a function cached with \`unstable_cache()\`. Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`headers()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`), "__NEXT_ERROR_CODE", { + value: "E838", + enumerable: false, + configurable: true + }); + case 'prerender': + case 'prerender-client': + case 'private-cache': + case 'prerender-runtime': + case 'prerender-ppr': + case 'prerender-legacy': + case 'request': + break; + default: + workUnitStore; + } + } + if (workStore.dynamicShouldError) { + throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${workStore.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`headers()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), "__NEXT_ERROR_CODE", { + value: "E828", + enumerable: false, + configurable: true + }); + } + if (workUnitStore) { + switch(workUnitStore.type){ + case 'prerender': + return makeHangingHeaders(workStore, workUnitStore); + case 'prerender-client': + const exportName = '`headers`'; + throw Object.defineProperty(new _invarianterror.InvariantError(`${exportName} must not be used within a client component. Next.js should be preventing ${exportName} from being included in client components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { + value: "E693", + enumerable: false, + configurable: true + }); + case 'prerender-ppr': + // PPR Prerender (no cacheComponents) + // We are prerendering with PPR. We need track dynamic access here eagerly + // to keep continuity with how headers has worked in PPR without cacheComponents. + // TODO consider switching the semantic to throw on property access instead + return (0, _dynamicrendering.postponeWithTracking)(workStore.route, callingExpression, workUnitStore.dynamicTracking); + case 'prerender-legacy': + // Legacy Prerender + // We are in a legacy static generation mode while prerendering + // We track dynamic access here so we don't need to wrap the headers in + // individual property access tracking. + return (0, _dynamicrendering.throwToInterruptStaticGeneration)(callingExpression, workStore, workUnitStore); + case 'prerender-runtime': + return (0, _dynamicrendering.delayUntilRuntimeStage)(workUnitStore, makeUntrackedHeaders(workUnitStore.headers)); + case 'private-cache': + // Private caches are delayed until the runtime stage in use-cache-wrapper, + // so we don't need an additional delay here. + return makeUntrackedHeaders(workUnitStore.headers); + case 'request': + (0, _dynamicrendering.trackDynamicDataInDynamicRender)(workUnitStore); + if ("TURBOPACK compile-time truthy", 1) { + // Semantically we only need the dev tracking when running in `next dev` + // but since you would never use next dev with production NODE_ENV we use this + // as a proxy so we can statically exclude this code from production builds. + return makeUntrackedHeadersWithDevWarnings(workUnitStore.headers, workStore == null ? void 0 : workStore.route, workUnitStore); + } else //TURBOPACK unreachable + ; + //TURBOPACK unreachable + ; + default: + workUnitStore; + } + } + } + // If we end up here, there was no work store or work unit store present. + (0, _workunitasyncstorageexternal.throwForMissingRequestStore)(callingExpression); +} +const CachedHeaders = new WeakMap(); +function makeHangingHeaders(workStore, prerenderStore) { + const cachedHeaders = CachedHeaders.get(prerenderStore); + if (cachedHeaders) { + return cachedHeaders; + } + const promise = (0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, workStore.route, '`headers()`'); + CachedHeaders.set(prerenderStore, promise); + return promise; +} +function makeUntrackedHeaders(underlyingHeaders) { + const cachedHeaders = CachedHeaders.get(underlyingHeaders); + if (cachedHeaders) { + return cachedHeaders; + } + const promise = Promise.resolve(underlyingHeaders); + CachedHeaders.set(underlyingHeaders, promise); + return promise; +} +function makeUntrackedHeadersWithDevWarnings(underlyingHeaders, route, requestStore) { + if (requestStore.asyncApiPromises) { + const promise = requestStore.asyncApiPromises.headers; + return instrumentHeadersPromiseWithDevWarnings(promise, route); + } + const cachedHeaders = CachedHeaders.get(underlyingHeaders); + if (cachedHeaders) { + return cachedHeaders; + } + const promise = (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(underlyingHeaders, requestStore, _stagedrendering.RenderStage.Runtime); + const proxiedPromise = instrumentHeadersPromiseWithDevWarnings(promise, route); + CachedHeaders.set(underlyingHeaders, proxiedPromise); + return proxiedPromise; +} +const warnForSyncAccess = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createHeadersAccessError); +function instrumentHeadersPromiseWithDevWarnings(promise, route) { + Object.defineProperties(promise, { + [Symbol.iterator]: replaceableWarningDescriptorForSymbolIterator(promise, route), + append: replaceableWarningDescriptor(promise, 'append', route), + delete: replaceableWarningDescriptor(promise, 'delete', route), + get: replaceableWarningDescriptor(promise, 'get', route), + has: replaceableWarningDescriptor(promise, 'has', route), + set: replaceableWarningDescriptor(promise, 'set', route), + getSetCookie: replaceableWarningDescriptor(promise, 'getSetCookie', route), + forEach: replaceableWarningDescriptor(promise, 'forEach', route), + keys: replaceableWarningDescriptor(promise, 'keys', route), + values: replaceableWarningDescriptor(promise, 'values', route), + entries: replaceableWarningDescriptor(promise, 'entries', route) + }); + return promise; +} +function replaceableWarningDescriptor(target, prop, route) { + return { + enumerable: false, + get () { + warnForSyncAccess(route, `\`headers().${prop}\``); + return undefined; + }, + set (value) { + Object.defineProperty(target, prop, { + value, + writable: true, + configurable: true + }); + }, + configurable: true + }; +} +function replaceableWarningDescriptorForSymbolIterator(target, route) { + return { + enumerable: false, + get () { + warnForSyncAccess(route, '`...headers()` or similar iteration'); + return undefined; + }, + set (value) { + Object.defineProperty(target, Symbol.iterator, { + value, + writable: true, + enumerable: true, + configurable: true + }); + }, + configurable: true + }; +} +function createHeadersAccessError(route, expression) { + const prefix = route ? `Route "${route}" ` : 'This route '; + return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\`headers()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), "__NEXT_ERROR_CODE", { + value: "E836", + enumerable: false, + configurable: true + }); +} //# sourceMappingURL=headers.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/request/draft-mode.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "draftMode", { + enumerable: true, + get: function() { + return draftMode; + } +}); +const _workunitasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-unit-async-storage.external.js [external] (next/dist/server/app-render/work-unit-async-storage.external.js, cjs)"); +const _workasyncstorageexternal = __turbopack_context__.r("[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)"); +const _dynamicrendering = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/app-render/dynamic-rendering.js [app-route] (ecmascript)"); +const _creatededupedbycallsiteservererrorlogger = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js [app-route] (ecmascript)"); +const _staticgenerationbailout = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/static-generation-bailout.js [app-route] (ecmascript)"); +const _hooksservercontext = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/hooks-server-context.js [app-route] (ecmascript)"); +const _invarianterror = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/invariant-error.js [app-route] (ecmascript)"); +const _reflect = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/web/spec-extension/adapters/reflect.js [app-route] (ecmascript)"); +function draftMode() { + const callingExpression = 'draftMode'; + const workStore = _workasyncstorageexternal.workAsyncStorage.getStore(); + const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); + if (!workStore || !workUnitStore) { + (0, _workunitasyncstorageexternal.throwForMissingRequestStore)(callingExpression); + } + switch(workUnitStore.type){ + case 'prerender-runtime': + // TODO(runtime-ppr): does it make sense to delay this? normally it's always microtasky + return (0, _dynamicrendering.delayUntilRuntimeStage)(workUnitStore, createOrGetCachedDraftMode(workUnitStore.draftMode, workStore)); + case 'request': + return createOrGetCachedDraftMode(workUnitStore.draftMode, workStore); + case 'cache': + case 'private-cache': + case 'unstable-cache': + // Inside of `"use cache"` or `unstable_cache`, draft mode is available if + // the outmost work unit store is a request store (or a runtime prerender), + // and if draft mode is enabled. + const draftModeProvider = (0, _workunitasyncstorageexternal.getDraftModeProviderForCacheScope)(workStore, workUnitStore); + if (draftModeProvider) { + return createOrGetCachedDraftMode(draftModeProvider, workStore); + } + // Otherwise, we fall through to providing an empty draft mode. + // eslint-disable-next-line no-fallthrough + case 'prerender': + case 'prerender-client': + case 'prerender-ppr': + case 'prerender-legacy': + // Return empty draft mode + return createOrGetCachedDraftMode(null, workStore); + default: + return workUnitStore; + } +} +function createOrGetCachedDraftMode(draftModeProvider, workStore) { + const cacheKey = draftModeProvider ?? NullDraftMode; + const cachedDraftMode = CachedDraftModes.get(cacheKey); + if (cachedDraftMode) { + return cachedDraftMode; + } + if (("TURBOPACK compile-time value", "development") === 'development' && !(workStore == null ? void 0 : workStore.isPrefetchRequest)) { + const route = workStore == null ? void 0 : workStore.route; + return createDraftModeWithDevWarnings(draftModeProvider, route); + } else { + return Promise.resolve(new DraftMode(draftModeProvider)); + } +} +const NullDraftMode = {}; +const CachedDraftModes = new WeakMap(); +function createDraftModeWithDevWarnings(underlyingProvider, route) { + const instance = new DraftMode(underlyingProvider); + const promise = Promise.resolve(instance); + const proxiedPromise = new Proxy(promise, { + get (target, prop, receiver) { + switch(prop){ + case 'isEnabled': + warnForSyncAccess(route, `\`draftMode().${prop}\``); + break; + case 'enable': + case 'disable': + { + warnForSyncAccess(route, `\`draftMode().${prop}()\``); + break; + } + default: + { + // We only warn for well-defined properties of the draftMode object. + } + } + return _reflect.ReflectAdapter.get(target, prop, receiver); + } + }); + return proxiedPromise; +} +class DraftMode { + constructor(provider){ + this._provider = provider; + } + get isEnabled() { + if (this._provider !== null) { + return this._provider.isEnabled; + } + return false; + } + enable() { + // We have a store we want to track dynamic data access to ensure we + // don't statically generate routes that manipulate draft mode. + trackDynamicDraftMode('draftMode().enable()', this.enable); + if (this._provider !== null) { + this._provider.enable(); + } + } + disable() { + trackDynamicDraftMode('draftMode().disable()', this.disable); + if (this._provider !== null) { + this._provider.disable(); + } + } +} +const warnForSyncAccess = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createDraftModeAccessError); +function createDraftModeAccessError(route, expression) { + const prefix = route ? `Route "${route}" ` : 'This route '; + return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\`draftMode()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), "__NEXT_ERROR_CODE", { + value: "E835", + enumerable: false, + configurable: true + }); +} +function trackDynamicDraftMode(expression, constructorOpt) { + const workStore = _workasyncstorageexternal.workAsyncStorage.getStore(); + const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); + if (workStore) { + // We have a store we want to track dynamic data access to ensure we + // don't statically generate routes that manipulate draft mode. + if ((workUnitStore == null ? void 0 : workUnitStore.phase) === 'after') { + throw Object.defineProperty(new Error(`Route ${workStore.route} used "${expression}" inside \`after()\`. The enabled status of \`draftMode()\` can be read inside \`after()\` but you cannot enable or disable \`draftMode()\`. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`), "__NEXT_ERROR_CODE", { + value: "E845", + enumerable: false, + configurable: true + }); + } + if (workStore.dynamicShouldError) { + throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${workStore.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${expression}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), "__NEXT_ERROR_CODE", { + value: "E553", + enumerable: false, + configurable: true + }); + } + if (workUnitStore) { + switch(workUnitStore.type){ + case 'cache': + case 'private-cache': + { + const error = Object.defineProperty(new Error(`Route ${workStore.route} used "${expression}" inside "use cache". The enabled status of \`draftMode()\` can be read in caches but you must not enable or disable \`draftMode()\` inside a cache. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`), "__NEXT_ERROR_CODE", { + value: "E829", + enumerable: false, + configurable: true + }); + Error.captureStackTrace(error, constructorOpt); + workStore.invalidDynamicUsageError ??= error; + throw error; + } + case 'unstable-cache': + throw Object.defineProperty(new Error(`Route ${workStore.route} used "${expression}" inside a function cached with \`unstable_cache()\`. The enabled status of \`draftMode()\` can be read in caches but you must not enable or disable \`draftMode()\` inside a cache. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`), "__NEXT_ERROR_CODE", { + value: "E844", + enumerable: false, + configurable: true + }); + case 'prerender': + case 'prerender-runtime': + { + const error = Object.defineProperty(new Error(`Route ${workStore.route} used ${expression} without first calling \`await connection()\`. See more info here: https://nextjs.org/docs/messages/next-prerender-sync-headers`), "__NEXT_ERROR_CODE", { + value: "E126", + enumerable: false, + configurable: true + }); + return (0, _dynamicrendering.abortAndThrowOnSynchronousRequestDataAccess)(workStore.route, expression, error, workUnitStore); + } + case 'prerender-client': + const exportName = '`draftMode`'; + throw Object.defineProperty(new _invarianterror.InvariantError(`${exportName} must not be used within a Client Component. Next.js should be preventing ${exportName} from being included in Client Components statically, but did not in this case.`), "__NEXT_ERROR_CODE", { + value: "E832", + enumerable: false, + configurable: true + }); + case 'prerender-ppr': + return (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, workUnitStore.dynamicTracking); + case 'prerender-legacy': + workUnitStore.revalidate = 0; + const err = Object.defineProperty(new _hooksservercontext.DynamicServerError(`Route ${workStore.route} couldn't be rendered statically because it used \`${expression}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), "__NEXT_ERROR_CODE", { + value: "E558", + enumerable: false, + configurable: true + }); + workStore.dynamicUsageDescription = expression; + workStore.dynamicUsageStack = err.stack; + throw err; + case 'request': + (0, _dynamicrendering.trackDynamicDataInDynamicRender)(workUnitStore); + break; + default: + workUnitStore; + } + } + } +} //# sourceMappingURL=draft-mode.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/headers.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { + +module.exports.cookies = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/request/cookies.js [app-route] (ecmascript)").cookies; +module.exports.headers = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/request/headers.js [app-route] (ecmascript)").headers; +module.exports.draftMode = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/request/draft-mode.js [app-route] (ecmascript)").draftMode; +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/readonly-url-search-params.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +/** + * ReadonlyURLSearchParams implementation shared between client and server. + * This file is intentionally not marked as 'use client' or 'use server' + * so it can be imported by both environments. + */ /** @internal */ Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "ReadonlyURLSearchParams", { + enumerable: true, + get: function() { + return ReadonlyURLSearchParams; + } +}); +class ReadonlyURLSearchParamsError extends Error { + constructor(){ + super('Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams'); + } +} +class ReadonlyURLSearchParams extends URLSearchParams { + /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ append() { + throw new ReadonlyURLSearchParamsError(); + } + /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ delete() { + throw new ReadonlyURLSearchParamsError(); + } + /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ set() { + throw new ReadonlyURLSearchParamsError(); + } + /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ sort() { + throw new ReadonlyURLSearchParamsError(); + } +} +if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { + Object.defineProperty(exports.default, '__esModule', { + value: true + }); + Object.assign(exports.default, exports); + module.exports = exports.default; +} //# sourceMappingURL=readonly-url-search-params.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/redirect-status-code.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "RedirectStatusCode", { + enumerable: true, + get: function() { + return RedirectStatusCode; + } +}); +var RedirectStatusCode = /*#__PURE__*/ function(RedirectStatusCode) { + RedirectStatusCode[RedirectStatusCode["SeeOther"] = 303] = "SeeOther"; + RedirectStatusCode[RedirectStatusCode["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + RedirectStatusCode[RedirectStatusCode["PermanentRedirect"] = 308] = "PermanentRedirect"; + return RedirectStatusCode; +}({}); +if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { + Object.defineProperty(exports.default, '__esModule', { + value: true + }); + Object.assign(exports.default, exports); + module.exports = exports.default; +} //# sourceMappingURL=redirect-status-code.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/redirect-error.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + REDIRECT_ERROR_CODE: null, + RedirectType: null, + isRedirectError: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + REDIRECT_ERROR_CODE: function() { + return REDIRECT_ERROR_CODE; + }, + RedirectType: function() { + return RedirectType; + }, + isRedirectError: function() { + return isRedirectError; + } +}); +const _redirectstatuscode = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/redirect-status-code.js [app-route] (ecmascript)"); +const REDIRECT_ERROR_CODE = 'NEXT_REDIRECT'; +var RedirectType = /*#__PURE__*/ function(RedirectType) { + RedirectType["push"] = "push"; + RedirectType["replace"] = "replace"; + return RedirectType; +}({}); +function isRedirectError(error) { + if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') { + return false; + } + const digest = error.digest.split(';'); + const [errorCode, type] = digest; + const destination = digest.slice(2, -2).join(';'); + const status = digest.at(-2); + const statusCode = Number(status); + return errorCode === REDIRECT_ERROR_CODE && (type === 'replace' || type === 'push') && typeof destination === 'string' && !isNaN(statusCode) && statusCode in _redirectstatuscode.RedirectStatusCode; +} +if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { + Object.defineProperty(exports.default, '__esModule', { + value: true + }); + Object.assign(exports.default, exports); + module.exports = exports.default; +} //# sourceMappingURL=redirect-error.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/redirect.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + getRedirectError: null, + getRedirectStatusCodeFromError: null, + getRedirectTypeFromError: null, + getURLFromRedirectError: null, + permanentRedirect: null, + redirect: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + getRedirectError: function() { + return getRedirectError; + }, + getRedirectStatusCodeFromError: function() { + return getRedirectStatusCodeFromError; + }, + getRedirectTypeFromError: function() { + return getRedirectTypeFromError; + }, + getURLFromRedirectError: function() { + return getURLFromRedirectError; + }, + permanentRedirect: function() { + return permanentRedirect; + }, + redirect: function() { + return redirect; + } +}); +const _redirectstatuscode = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/redirect-status-code.js [app-route] (ecmascript)"); +const _redirecterror = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/redirect-error.js [app-route] (ecmascript)"); +const actionAsyncStorage = ("TURBOPACK compile-time truthy", 1) ? __turbopack_context__.r("[externals]/next/dist/server/app-render/action-async-storage.external.js [external] (next/dist/server/app-render/action-async-storage.external.js, cjs)").actionAsyncStorage : "TURBOPACK unreachable"; +function getRedirectError(url, type, statusCode = _redirectstatuscode.RedirectStatusCode.TemporaryRedirect) { + const error = Object.defineProperty(new Error(_redirecterror.REDIRECT_ERROR_CODE), "__NEXT_ERROR_CODE", { + value: "E394", + enumerable: false, + configurable: true + }); + error.digest = `${_redirecterror.REDIRECT_ERROR_CODE};${type};${url};${statusCode};`; + return error; +} +function redirect(/** The URL to redirect to */ url, type) { + type ??= actionAsyncStorage?.getStore()?.isAction ? _redirecterror.RedirectType.push : _redirecterror.RedirectType.replace; + throw getRedirectError(url, type, _redirectstatuscode.RedirectStatusCode.TemporaryRedirect); +} +function permanentRedirect(/** The URL to redirect to */ url, type = _redirecterror.RedirectType.replace) { + throw getRedirectError(url, type, _redirectstatuscode.RedirectStatusCode.PermanentRedirect); +} +function getURLFromRedirectError(error) { + if (!(0, _redirecterror.isRedirectError)(error)) return null; + // Slices off the beginning of the digest that contains the code and the + // separating ';'. + return error.digest.split(';').slice(2, -2).join(';'); +} +function getRedirectTypeFromError(error) { + if (!(0, _redirecterror.isRedirectError)(error)) { + throw Object.defineProperty(new Error('Not a redirect error'), "__NEXT_ERROR_CODE", { + value: "E260", + enumerable: false, + configurable: true + }); + } + return error.digest.split(';', 2)[1]; +} +function getRedirectStatusCodeFromError(error) { + if (!(0, _redirecterror.isRedirectError)(error)) { + throw Object.defineProperty(new Error('Not a redirect error'), "__NEXT_ERROR_CODE", { + value: "E260", + enumerable: false, + configurable: true + }); + } + return Number(error.digest.split(';').at(-2)); +} +if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { + Object.defineProperty(exports.default, '__esModule', { + value: true + }); + Object.assign(exports.default, exports); + module.exports = exports.default; +} //# sourceMappingURL=redirect.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + HTTPAccessErrorStatus: null, + HTTP_ERROR_FALLBACK_ERROR_CODE: null, + getAccessFallbackErrorTypeByStatus: null, + getAccessFallbackHTTPStatus: null, + isHTTPAccessFallbackError: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + HTTPAccessErrorStatus: function() { + return HTTPAccessErrorStatus; + }, + HTTP_ERROR_FALLBACK_ERROR_CODE: function() { + return HTTP_ERROR_FALLBACK_ERROR_CODE; + }, + getAccessFallbackErrorTypeByStatus: function() { + return getAccessFallbackErrorTypeByStatus; + }, + getAccessFallbackHTTPStatus: function() { + return getAccessFallbackHTTPStatus; + }, + isHTTPAccessFallbackError: function() { + return isHTTPAccessFallbackError; + } +}); +const HTTPAccessErrorStatus = { + NOT_FOUND: 404, + FORBIDDEN: 403, + UNAUTHORIZED: 401 +}; +const ALLOWED_CODES = new Set(Object.values(HTTPAccessErrorStatus)); +const HTTP_ERROR_FALLBACK_ERROR_CODE = 'NEXT_HTTP_ERROR_FALLBACK'; +function isHTTPAccessFallbackError(error) { + if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') { + return false; + } + const [prefix, httpStatus] = error.digest.split(';'); + return prefix === HTTP_ERROR_FALLBACK_ERROR_CODE && ALLOWED_CODES.has(Number(httpStatus)); +} +function getAccessFallbackHTTPStatus(error) { + const httpStatus = error.digest.split(';')[1]; + return Number(httpStatus); +} +function getAccessFallbackErrorTypeByStatus(status) { + switch(status){ + case 401: + return 'unauthorized'; + case 403: + return 'forbidden'; + case 404: + return 'not-found'; + default: + return; + } +} +if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { + Object.defineProperty(exports.default, '__esModule', { + value: true + }); + Object.assign(exports.default, exports); + module.exports = exports.default; +} //# sourceMappingURL=http-access-fallback.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/not-found.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "notFound", { + enumerable: true, + get: function() { + return notFound; + } +}); +const _httpaccessfallback = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js [app-route] (ecmascript)"); +/** + * This function allows you to render the [not-found.js file](https://nextjs.org/docs/app/api-reference/file-conventions/not-found) + * within a route segment as well as inject a tag. + * + * `notFound()` can be used in + * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components), + * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and + * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations). + * + * - In a Server Component, this will insert a `` meta tag and set the status code to 404. + * - In a Route Handler or Server Action, it will serve a 404 to the caller. + * + * Read more: [Next.js Docs: `notFound`](https://nextjs.org/docs/app/api-reference/functions/not-found) + */ const DIGEST = `${_httpaccessfallback.HTTP_ERROR_FALLBACK_ERROR_CODE};404`; +function notFound() { + const error = Object.defineProperty(new Error(DIGEST), "__NEXT_ERROR_CODE", { + value: "E394", + enumerable: false, + configurable: true + }); + error.digest = DIGEST; + throw error; +} +if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { + Object.defineProperty(exports.default, '__esModule', { + value: true + }); + Object.assign(exports.default, exports); + module.exports = exports.default; +} //# sourceMappingURL=not-found.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/forbidden.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "forbidden", { + enumerable: true, + get: function() { + return forbidden; + } +}); +const _httpaccessfallback = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js [app-route] (ecmascript)"); +// TODO: Add `forbidden` docs +/** + * @experimental + * This function allows you to render the [forbidden.js file](https://nextjs.org/docs/app/api-reference/file-conventions/forbidden) + * within a route segment as well as inject a tag. + * + * `forbidden()` can be used in + * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components), + * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and + * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations). + * + * Read more: [Next.js Docs: `forbidden`](https://nextjs.org/docs/app/api-reference/functions/forbidden) + */ const DIGEST = `${_httpaccessfallback.HTTP_ERROR_FALLBACK_ERROR_CODE};403`; +function forbidden() { + if ("TURBOPACK compile-time truthy", 1) { + throw Object.defineProperty(new Error(`\`forbidden()\` is experimental and only allowed to be enabled when \`experimental.authInterrupts\` is enabled.`), "__NEXT_ERROR_CODE", { + value: "E488", + enumerable: false, + configurable: true + }); + } + const error = Object.defineProperty(new Error(DIGEST), "__NEXT_ERROR_CODE", { + value: "E394", + enumerable: false, + configurable: true + }); + error.digest = DIGEST; + throw error; +} +if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { + Object.defineProperty(exports.default, '__esModule', { + value: true + }); + Object.assign(exports.default, exports); + module.exports = exports.default; +} //# sourceMappingURL=forbidden.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/unauthorized.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "unauthorized", { + enumerable: true, + get: function() { + return unauthorized; + } +}); +const _httpaccessfallback = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js [app-route] (ecmascript)"); +// TODO: Add `unauthorized` docs +/** + * @experimental + * This function allows you to render the [unauthorized.js file](https://nextjs.org/docs/app/api-reference/file-conventions/unauthorized) + * within a route segment as well as inject a tag. + * + * `unauthorized()` can be used in + * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components), + * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and + * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations). + * + * + * Read more: [Next.js Docs: `unauthorized`](https://nextjs.org/docs/app/api-reference/functions/unauthorized) + */ const DIGEST = `${_httpaccessfallback.HTTP_ERROR_FALLBACK_ERROR_CODE};401`; +function unauthorized() { + if ("TURBOPACK compile-time truthy", 1) { + throw Object.defineProperty(new Error(`\`unauthorized()\` is experimental and only allowed to be used when \`experimental.authInterrupts\` is enabled.`), "__NEXT_ERROR_CODE", { + value: "E411", + enumerable: false, + configurable: true + }); + } + const error = Object.defineProperty(new Error(DIGEST), "__NEXT_ERROR_CODE", { + value: "E394", + enumerable: false, + configurable: true + }); + error.digest = DIGEST; + throw error; +} +if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { + Object.defineProperty(exports.default, '__esModule', { + value: true + }); + Object.assign(exports.default, exports); + module.exports = exports.default; +} //# sourceMappingURL=unauthorized.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/lib/router-utils/is-postpone.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "isPostpone", { + enumerable: true, + get: function() { + return isPostpone; + } +}); +const REACT_POSTPONE_TYPE = Symbol.for('react.postpone'); +function isPostpone(error) { + return typeof error === 'object' && error !== null && error.$$typeof === REACT_POSTPONE_TYPE; +} //# sourceMappingURL=is-postpone.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/is-next-router-error.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "isNextRouterError", { + enumerable: true, + get: function() { + return isNextRouterError; + } +}); +const _httpaccessfallback = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js [app-route] (ecmascript)"); +const _redirecterror = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/redirect-error.js [app-route] (ecmascript)"); +function isNextRouterError(error) { + return (0, _redirecterror.isRedirectError)(error) || (0, _httpaccessfallback.isHTTPAccessFallbackError)(error); +} +if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { + Object.defineProperty(exports.default, '__esModule', { + value: true + }); + Object.assign(exports.default, exports); + module.exports = exports.default; +} //# sourceMappingURL=is-next-router-error.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/unstable-rethrow.server.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "unstable_rethrow", { + enumerable: true, + get: function() { + return unstable_rethrow; + } +}); +const _dynamicrenderingutils = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/dynamic-rendering-utils.js [app-route] (ecmascript)"); +const _ispostpone = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/lib/router-utils/is-postpone.js [app-route] (ecmascript)"); +const _bailouttocsr = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js [app-route] (ecmascript)"); +const _isnextroutererror = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/is-next-router-error.js [app-route] (ecmascript)"); +const _dynamicrendering = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/app-render/dynamic-rendering.js [app-route] (ecmascript)"); +const _hooksservercontext = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/hooks-server-context.js [app-route] (ecmascript)"); +function unstable_rethrow(error) { + if ((0, _isnextroutererror.isNextRouterError)(error) || (0, _bailouttocsr.isBailoutToCSRError)(error) || (0, _hooksservercontext.isDynamicServerError)(error) || (0, _dynamicrendering.isDynamicPostpone)(error) || (0, _ispostpone.isPostpone)(error) || (0, _dynamicrenderingutils.isHangingPromiseRejectionError)(error) || (0, _dynamicrendering.isPrerenderInterruptedError)(error)) { + throw error; + } + if (error instanceof Error && 'cause' in error) { + unstable_rethrow(error.cause); + } +} +if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { + Object.defineProperty(exports.default, '__esModule', { + value: true + }); + Object.assign(exports.default, exports); + module.exports = exports.default; +} //# sourceMappingURL=unstable-rethrow.server.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/unstable-rethrow.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +/** + * This function should be used to rethrow internal Next.js errors so that they can be handled by the framework. + * When wrapping an API that uses errors to interrupt control flow, you should use this function before you do any error handling. + * This function will rethrow the error if it is a Next.js error so it can be handled, otherwise it will do nothing. + * + * Read more: [Next.js Docs: `unstable_rethrow`](https://nextjs.org/docs/app/api-reference/functions/unstable_rethrow) + */ Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "unstable_rethrow", { + enumerable: true, + get: function() { + return unstable_rethrow; + } +}); +const unstable_rethrow = ("TURBOPACK compile-time truthy", 1) ? __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/unstable-rethrow.server.js [app-route] (ecmascript)").unstable_rethrow : "TURBOPACK unreachable"; +if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { + Object.defineProperty(exports.default, '__esModule', { + value: true + }); + Object.assign(exports.default, exports); + module.exports = exports.default; +} //# sourceMappingURL=unstable-rethrow.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/navigation.react-server.js [app-route] (ecmascript)", ((__turbopack_context__, module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +0 && (module.exports = { + ReadonlyURLSearchParams: null, + RedirectType: null, + forbidden: null, + notFound: null, + permanentRedirect: null, + redirect: null, + unauthorized: null, + unstable_isUnrecognizedActionError: null, + unstable_rethrow: null +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + ReadonlyURLSearchParams: function() { + return _readonlyurlsearchparams.ReadonlyURLSearchParams; + }, + RedirectType: function() { + return _redirecterror.RedirectType; + }, + forbidden: function() { + return _forbidden.forbidden; + }, + notFound: function() { + return _notfound.notFound; + }, + permanentRedirect: function() { + return _redirect.permanentRedirect; + }, + redirect: function() { + return _redirect.redirect; + }, + unauthorized: function() { + return _unauthorized.unauthorized; + }, + unstable_isUnrecognizedActionError: function() { + return unstable_isUnrecognizedActionError; + }, + unstable_rethrow: function() { + return _unstablerethrow.unstable_rethrow; + } +}); +const _readonlyurlsearchparams = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/readonly-url-search-params.js [app-route] (ecmascript)"); +const _redirect = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/redirect.js [app-route] (ecmascript)"); +const _redirecterror = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/redirect-error.js [app-route] (ecmascript)"); +const _notfound = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/not-found.js [app-route] (ecmascript)"); +const _forbidden = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/forbidden.js [app-route] (ecmascript)"); +const _unauthorized = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/unauthorized.js [app-route] (ecmascript)"); +const _unstablerethrow = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/unstable-rethrow.js [app-route] (ecmascript)"); +function unstable_isUnrecognizedActionError() { + throw Object.defineProperty(new Error('`unstable_isUnrecognizedActionError` can only be used on the client.'), "__NEXT_ERROR_CODE", { + value: "E776", + enumerable: false, + configurable: true + }); +} +if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { + Object.defineProperty(exports.default, '__esModule', { + value: true + }); + Object.assign(exports.default, exports); + module.exports = exports.default; +} //# sourceMappingURL=navigation.react-server.js.map +}), +"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/api/navigation.react-server.js [app-route] (ecmascript) ", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$client$2f$components$2f$navigation$2e$react$2d$server$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/navigation.react-server.js [app-route] (ecmascript)"); //# sourceMappingURL=navigation.react-server.js.map +; +}), +"[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/projects/[id]/workflow/route.ts [app-route] (ecmascript)\" } [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +return __turbopack_context__.a(async (__turbopack_handle_async_dependencies__, __turbopack_async_result__) => { try { + +__turbopack_context__.s([ + "handler", + ()=>handler, + "patchFetch", + ()=>patchFetch, + "routeModule", + ()=>routeModule, + "serverHooks", + ()=>serverHooks, + "workAsyncStorage", + ()=>workAsyncStorage, + "workUnitAsyncStorage", + ()=>workUnitAsyncStorage +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$modules$2f$app$2d$route$2f$module$2e$compiled$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/route-modules/app-route/module.compiled.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/route-kind.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$patch$2d$fetch$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/patch-fetch.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/request-meta.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/trace/tracer.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$manifests$2d$singleton$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/app-render/manifests-singleton.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$app$2d$paths$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$node$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/base-http/node.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$next$2d$request$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/spec-extension/adapters/next-request.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/trace/constants.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$instrumentation$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/instrumentation/utils.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$send$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/send-response.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/web/utils.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$cache$2d$control$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/lib/cache-control.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/constants.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$shared$2f$lib$2f$no$2d$fallback$2d$error$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$shared$2f$lib$2f$no$2d$fallback$2d$error$2e$external$2e$js$2c$__cjs$29$__ = __turbopack_context__.i("[externals]/next/dist/shared/lib/no-fallback-error.external.js [external] (next/dist/shared/lib/no-fallback-error.external.js, cjs)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/response-cache/index.js [app-route] (ecmascript) "); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/server/response-cache/types.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$app$2f$api$2f$projects$2f5b$id$5d2f$workflow$2f$route$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/app/api/projects/[id]/workflow/route.ts [app-route] (ecmascript)"); +var __turbopack_async_dependencies__ = __turbopack_handle_async_dependencies__([ + __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$app$2f$api$2f$projects$2f5b$id$5d2f$workflow$2f$route$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__ +]); +[__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$app$2f$api$2f$projects$2f5b$id$5d2f$workflow$2f$route$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__] = __turbopack_async_dependencies__.then ? (await __turbopack_async_dependencies__)() : __turbopack_async_dependencies__; +; +; +; +; +; +; +; +; +; +; +; +; +; +; +; +; +; +; +// We inject the nextConfigOutput here so that we can use them in the route +// module. +const nextConfigOutput = ""; +const routeModule = new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$modules$2f$app$2d$route$2f$module$2e$compiled$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["AppRouteRouteModule"]({ + definition: { + kind: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RouteKind"].APP_ROUTE, + page: "/api/projects/[id]/workflow/route", + pathname: "/api/projects/[id]/workflow", + filename: "route", + bundlePath: "" + }, + distDir: ("TURBOPACK compile-time value", ".next\\dev") || '', + relativeProjectDir: ("TURBOPACK compile-time value", "") || '', + resolvedPagePath: "[project]/Documents/00 - projet/plumeia/src/app/api/projects/[id]/workflow/route.ts", + nextConfigOutput, + userland: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$app$2f$api$2f$projects$2f5b$id$5d2f$workflow$2f$route$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__ +}); +// Pull out the exports that we need to expose from the module. This should +// be eliminated when we've moved the other routes to the new format. These +// are used to hook into the route. +const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; +function patchFetch() { + return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$patch$2d$fetch$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["patchFetch"])({ + workAsyncStorage, + workUnitAsyncStorage + }); +} +; +async function handler(req, res, ctx) { + if (routeModule.isDev) { + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["addRequestMeta"])(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint()); + } + let srcPage = "/api/projects/[id]/workflow/route"; + // turbopack doesn't normalize `/index` in the page name + // so we need to to process dynamic routes properly + // TODO: fix turbopack providing differing value from webpack + if ("TURBOPACK compile-time truthy", 1) { + srcPage = srcPage.replace(/\/index$/, '') || '/'; + } else if (srcPage === '/index') { + // we always normalize /index specifically + srcPage = '/'; + } + const multiZoneDraftMode = ("TURBOPACK compile-time value", false); + const prepareResult = await routeModule.prepare(req, res, { + srcPage, + multiZoneDraftMode + }); + if (!prepareResult) { + res.statusCode = 400; + res.end('Bad Request'); + ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); + return null; + } + const { buildId, params, nextConfig, parsedUrl, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname, clientReferenceManifest, serverActionsManifest } = prepareResult; + const normalizedSrcPage = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$app$2d$paths$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["normalizeAppPath"])(srcPage); + let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); + const render404 = async ()=>{ + // TODO: should route-module itself handle rendering the 404 + if (routerServerContext == null ? void 0 : routerServerContext.render404) { + await routerServerContext.render404(req, res, parsedUrl, false); + } else { + res.end('This page could not be found'); + } + return null; + }; + if (isIsr && !isDraftMode) { + const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); + const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; + if (prerenderInfo) { + if (prerenderInfo.fallback === false && !isPrerendered) { + if (nextConfig.experimental.adapterPath) { + return await render404(); + } + throw new __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$shared$2f$lib$2f$no$2d$fallback$2d$error$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$shared$2f$lib$2f$no$2d$fallback$2d$error$2e$external$2e$js$2c$__cjs$29$__["NoFallbackError"](); + } + } + } + let cacheKey = null; + if (isIsr && !routeModule.isDev && !isDraftMode) { + cacheKey = resolvedPathname; + // ensure /index and / is normalized to one key + cacheKey = cacheKey === '/index' ? '/' : cacheKey; + } + const supportsDynamicResponse = routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports + // dynamic HTML. + !isIsr; + // This is a revalidation request if the request is for a static + // page and it is not being resumed from a postponed render and + // it is not a dynamic RSC request then it is a revalidation + // request. + const isStaticGeneration = isIsr && !supportsDynamicResponse; + // Before rendering (which initializes component tree modules), we have to + // set the reference manifests to our global store so Server Action's + // encryption util can access to them at the top level of the page module. + if (serverActionsManifest && clientReferenceManifest) { + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$manifests$2d$singleton$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["setManifestsSingleton"])({ + page: srcPage, + clientReferenceManifest, + serverActionsManifest + }); + } + const method = req.method || 'GET'; + const tracer = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getTracer"])(); + const activeSpan = tracer.getActiveScopeSpan(); + const context = { + params, + prerenderManifest, + renderOpts: { + experimental: { + authInterrupts: Boolean(nextConfig.experimental.authInterrupts) + }, + cacheComponents: Boolean(nextConfig.cacheComponents), + supportsDynamicResponse, + incrementalCache: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getRequestMeta"])(req, 'incrementalCache'), + cacheLifeProfiles: nextConfig.cacheLife, + waitUntil: ctx.waitUntil, + onClose: (cb)=>{ + res.on('close', cb); + }, + onAfterTaskError: undefined, + onInstrumentationRequestError: (error, _request, errorContext, silenceLog)=>routeModule.onRequestError(req, error, errorContext, silenceLog, routerServerContext) + }, + sharedContext: { + buildId + } + }; + const nodeNextReq = new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$node$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NodeNextRequest"](req); + const nodeNextRes = new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$node$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NodeNextResponse"](res); + const nextReq = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$next$2d$request$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextRequestAdapter"].fromNodeNextRequest(nodeNextReq, (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$next$2d$request$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["signalFromNodeResponse"])(res)); + try { + const invokeRouteModule = async (span)=>{ + return routeModule.handle(nextReq, context).finally(()=>{ + if (!span) return; + span.setAttributes({ + 'http.status_code': res.statusCode, + 'next.rsc': false + }); + const rootSpanAttributes = tracer.getRootSpanAttributes(); + // We were unable to get attributes, probably OTEL is not enabled + if (!rootSpanAttributes) { + return; + } + if (rootSpanAttributes.get('next.span_type') !== __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["BaseServerSpan"].handleRequest) { + console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); + return; + } + const route = rootSpanAttributes.get('next.route'); + if (route) { + const name = `${method} ${route}`; + span.setAttributes({ + 'next.route': route, + 'http.route': route, + 'next.span_name': name + }); + span.updateName(name); + } else { + span.updateName(`${method} ${srcPage}`); + } + }); + }; + const isMinimalMode = Boolean(("TURBOPACK compile-time value", false) || (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getRequestMeta"])(req, 'minimalMode')); + const handleResponse = async (currentSpan)=>{ + var _cacheEntry_value; + const responseGenerator = async ({ previousCacheEntry })=>{ + try { + if (!isMinimalMode && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { + res.statusCode = 404; + // on-demand revalidate always sets this header + res.setHeader('x-nextjs-cache', 'REVALIDATED'); + res.end('This page could not be found'); + return null; + } + const response = await invokeRouteModule(currentSpan); + req.fetchMetrics = context.renderOpts.fetchMetrics; + let pendingWaitUntil = context.renderOpts.pendingWaitUntil; + // Attempt using provided waitUntil if available + // if it's not we fallback to sendResponse's handling + if (pendingWaitUntil) { + if (ctx.waitUntil) { + ctx.waitUntil(pendingWaitUntil); + pendingWaitUntil = undefined; + } + } + const cacheTags = context.renderOpts.collectedTags; + // If the request is for a static response, we can cache it so long + // as it's not edge. + if (isIsr) { + const blob = await response.blob(); + // Copy the headers from the response. + const headers = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["toNodeOutgoingHttpHeaders"])(response.headers); + if (cacheTags) { + headers[__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_CACHE_TAGS_HEADER"]] = cacheTags; + } + if (!headers['content-type'] && blob.type) { + headers['content-type'] = blob.type; + } + const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["INFINITE_CACHE"] ? false : context.renderOpts.collectedRevalidate; + const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["INFINITE_CACHE"] ? undefined : context.renderOpts.collectedExpire; + // Create the cache entry for the response. + const cacheEntry = { + value: { + kind: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].APP_ROUTE, + status: response.status, + body: Buffer.from(await blob.arrayBuffer()), + headers + }, + cacheControl: { + revalidate, + expire + } + }; + return cacheEntry; + } else { + // send response without caching if not ISR + await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$send$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["sendResponse"])(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); + return null; + } + } catch (err) { + // if this is a background revalidate we need to report + // the request error here as it won't be bubbled + if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { + const silenceLog = false; + await routeModule.onRequestError(req, err, { + routerKind: 'App Router', + routePath: srcPage, + routeType: 'route', + revalidateReason: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$instrumentation$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getRevalidateReason"])({ + isStaticGeneration, + isOnDemandRevalidate + }) + }, silenceLog, routerServerContext); + } + throw err; + } + }; + const cacheEntry = await routeModule.handleResponse({ + req, + nextConfig, + cacheKey, + routeKind: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["RouteKind"].APP_ROUTE, + isFallback: false, + prerenderManifest, + isRoutePPREnabled: false, + isOnDemandRevalidate, + revalidateOnlyGenerated, + responseGenerator, + waitUntil: ctx.waitUntil, + isMinimalMode + }); + // we don't create a cacheEntry for ISR + if (!isIsr) { + return null; + } + if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["CachedRouteKind"].APP_ROUTE) { + var _cacheEntry_value1; + throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { + value: "E701", + enumerable: false, + configurable: true + }); + } + if (!isMinimalMode) { + res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); + } + // Draft mode should never be cached + if (isDraftMode) { + res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); + } + const headers = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["fromNodeOutgoingHttpHeaders"])(cacheEntry.value.headers); + if (!(isMinimalMode && isIsr)) { + headers.delete(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NEXT_CACHE_TAGS_HEADER"]); + } + // If cache control is already set on the response we don't + // override it to allow users to customize it via next.config + if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { + headers.set('Cache-Control', (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$cache$2d$control$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getCacheControlHeader"])(cacheEntry.cacheControl)); + } + await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$send$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["sendResponse"])(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { + headers, + status: cacheEntry.value.status || 200 + })); + return null; + }; + // TODO: activeSpan code path is for when wrapped by + // next-server can be removed when this is no longer used + if (activeSpan) { + await handleResponse(activeSpan); + } else { + await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["BaseServerSpan"].handleRequest, { + spanName: `${method} ${srcPage}`, + kind: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["SpanKind"].SERVER, + attributes: { + 'http.method': method, + 'http.target': req.url + } + }, handleResponse)); + } + } catch (err) { + if (!(err instanceof __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$shared$2f$lib$2f$no$2d$fallback$2d$error$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$shared$2f$lib$2f$no$2d$fallback$2d$error$2e$external$2e$js$2c$__cjs$29$__["NoFallbackError"])) { + const silenceLog = false; + await routeModule.onRequestError(req, err, { + routerKind: 'App Router', + routePath: normalizedSrcPage, + routeType: 'route', + revalidateReason: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$instrumentation$2f$utils$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["getRevalidateReason"])({ + isStaticGeneration, + isOnDemandRevalidate + }) + }, silenceLog, routerServerContext); + } + // rethrow so that we can handle serving error page + // If this is during static generation, throw the error again. + if (isIsr) throw err; + // Otherwise, send a 500 response. + await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$send$2d$response$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["sendResponse"])(nodeNextReq, nodeNextRes, new Response(null, { + status: 500 + })); + return null; + } +} //# sourceMappingURL=app-route.js.map +__turbopack_async_result__(); +} catch(e) { __turbopack_async_result__(e); } }, false);}), +]; + +//# sourceMappingURL=549ce_next_f33af993._.js.map \ No newline at end of file diff --git a/.next/dev/server/chunks/549ce_next_f33af993._.js.map b/.next/dev/server/chunks/549ce_next_f33af993._.js.map new file mode 100644 index 0000000..9906e2d --- /dev/null +++ b/.next/dev/server/chunks/549ce_next_f33af993._.js.map @@ -0,0 +1,144 @@ +{ + "version": 3, + "sources": [], + "sections": [ + {"offset": {"line": 3, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-route/module.compiled.js"],"sourcesContent":["if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/app-route/module.js')\n} else {\n if (process.env.__NEXT_EXPERIMENTAL_REACT) {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.prod.js')\n }\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-route.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-route.runtime.prod.js')\n }\n }\n }\n}\n"],"names":["process","env","NEXT_RUNTIME","module","exports","require","__NEXT_EXPERIMENTAL_REACT","NODE_ENV","TURBOPACK"],"mappings":"AAAA,IAAIA,QAAQC,GAAG,CAACC,YAAY,KAAK,QAAQ;;KAElC;IACL,IAAIF,QAAQC,GAAG,CAACK,yBAAyB,EAAE;;SAcpC;QACL,IAAIN,QAAQC,GAAG,CAACM,QAAQ,KAAK,WAAe;YAC1C,IAAIP,QAAQC,GAAG,CAACO,SAAS,eAAE;gBACzBL,OAAOC,OAAO,GAAGC,QAAQ;YAC3B,OAAO;;QAGT,OAAO;;IAOT;AACF","ignoreList":[0]}}, + {"offset": {"line": 22, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-kind.ts"],"sourcesContent":["export const enum RouteKind {\n /**\n * `PAGES` represents all the React pages that are under `pages/`.\n */\n PAGES = 'PAGES',\n /**\n * `PAGES_API` represents all the API routes under `pages/api/`.\n */\n PAGES_API = 'PAGES_API',\n /**\n * `APP_PAGE` represents all the React pages that are under `app/` with the\n * filename of `page.{j,t}s{,x}`.\n */\n APP_PAGE = 'APP_PAGE',\n /**\n * `APP_ROUTE` represents all the API routes and metadata routes that are under `app/` with the\n * filename of `route.{j,t}s{,x}`.\n */\n APP_ROUTE = 'APP_ROUTE',\n\n /**\n * `IMAGE` represents all the images that are generated by `next/image`.\n */\n IMAGE = 'IMAGE',\n}\n"],"names":["RouteKind"],"mappings":";;;;AAAO,IAAWA,YAAAA,WAAAA,GAAAA,SAAAA,SAAAA;IAChB;;GAEC,GAAA,SAAA,CAAA,QAAA,GAAA;IAED;;GAEC,GAAA,SAAA,CAAA,YAAA,GAAA;IAED;;;GAGC,GAAA,SAAA,CAAA,WAAA,GAAA;IAED;;;GAGC,GAAA,SAAA,CAAA,YAAA,GAAA;IAGD;;GAEC,GAAA,SAAA,CAAA,QAAA,GAAA;WAtBeA;MAwBjB","ignoreList":[0]}}, + {"offset": {"line": 50, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/lib/trace/constants.ts"],"sourcesContent":["/**\n * Contains predefined constants for the trace span name in next/server.\n *\n * Currently, next/server/tracer is internal implementation only for tracking\n * next.js's implementation only with known span names defined here.\n **/\n\n// eslint typescript has a bug with TS enums\n\nenum BaseServerSpan {\n handleRequest = 'BaseServer.handleRequest',\n run = 'BaseServer.run',\n pipe = 'BaseServer.pipe',\n getStaticHTML = 'BaseServer.getStaticHTML',\n render = 'BaseServer.render',\n renderToResponseWithComponents = 'BaseServer.renderToResponseWithComponents',\n renderToResponse = 'BaseServer.renderToResponse',\n renderToHTML = 'BaseServer.renderToHTML',\n renderError = 'BaseServer.renderError',\n renderErrorToResponse = 'BaseServer.renderErrorToResponse',\n renderErrorToHTML = 'BaseServer.renderErrorToHTML',\n render404 = 'BaseServer.render404',\n}\n\nenum LoadComponentsSpan {\n loadDefaultErrorComponents = 'LoadComponents.loadDefaultErrorComponents',\n loadComponents = 'LoadComponents.loadComponents',\n}\n\nenum NextServerSpan {\n getRequestHandler = 'NextServer.getRequestHandler',\n getRequestHandlerWithMetadata = 'NextServer.getRequestHandlerWithMetadata',\n getServer = 'NextServer.getServer',\n getServerRequestHandler = 'NextServer.getServerRequestHandler',\n createServer = 'createServer.createServer',\n}\n\nenum NextNodeServerSpan {\n compression = 'NextNodeServer.compression',\n getBuildId = 'NextNodeServer.getBuildId',\n createComponentTree = 'NextNodeServer.createComponentTree',\n clientComponentLoading = 'NextNodeServer.clientComponentLoading',\n getLayoutOrPageModule = 'NextNodeServer.getLayoutOrPageModule',\n generateStaticRoutes = 'NextNodeServer.generateStaticRoutes',\n generateFsStaticRoutes = 'NextNodeServer.generateFsStaticRoutes',\n generatePublicRoutes = 'NextNodeServer.generatePublicRoutes',\n generateImageRoutes = 'NextNodeServer.generateImageRoutes.route',\n sendRenderResult = 'NextNodeServer.sendRenderResult',\n proxyRequest = 'NextNodeServer.proxyRequest',\n runApi = 'NextNodeServer.runApi',\n render = 'NextNodeServer.render',\n renderHTML = 'NextNodeServer.renderHTML',\n imageOptimizer = 'NextNodeServer.imageOptimizer',\n getPagePath = 'NextNodeServer.getPagePath',\n getRoutesManifest = 'NextNodeServer.getRoutesManifest',\n findPageComponents = 'NextNodeServer.findPageComponents',\n getFontManifest = 'NextNodeServer.getFontManifest',\n getServerComponentManifest = 'NextNodeServer.getServerComponentManifest',\n getRequestHandler = 'NextNodeServer.getRequestHandler',\n renderToHTML = 'NextNodeServer.renderToHTML',\n renderError = 'NextNodeServer.renderError',\n renderErrorToHTML = 'NextNodeServer.renderErrorToHTML',\n render404 = 'NextNodeServer.render404',\n startResponse = 'NextNodeServer.startResponse',\n\n // nested inner span, does not require parent scope name\n route = 'route',\n onProxyReq = 'onProxyReq',\n apiResolver = 'apiResolver',\n internalFetch = 'internalFetch',\n}\n\nenum StartServerSpan {\n startServer = 'startServer.startServer',\n}\n\nenum RenderSpan {\n getServerSideProps = 'Render.getServerSideProps',\n getStaticProps = 'Render.getStaticProps',\n renderToString = 'Render.renderToString',\n renderDocument = 'Render.renderDocument',\n createBodyResult = 'Render.createBodyResult',\n}\n\nenum AppRenderSpan {\n renderToString = 'AppRender.renderToString',\n renderToReadableStream = 'AppRender.renderToReadableStream',\n getBodyResult = 'AppRender.getBodyResult',\n fetch = 'AppRender.fetch',\n}\n\nenum RouterSpan {\n executeRoute = 'Router.executeRoute',\n}\n\nenum NodeSpan {\n runHandler = 'Node.runHandler',\n}\n\nenum AppRouteRouteHandlersSpan {\n runHandler = 'AppRouteRouteHandlers.runHandler',\n}\n\nenum ResolveMetadataSpan {\n generateMetadata = 'ResolveMetadata.generateMetadata',\n generateViewport = 'ResolveMetadata.generateViewport',\n}\n\nenum MiddlewareSpan {\n execute = 'Middleware.execute',\n}\n\ntype SpanTypes =\n | `${BaseServerSpan}`\n | `${LoadComponentsSpan}`\n | `${NextServerSpan}`\n | `${StartServerSpan}`\n | `${NextNodeServerSpan}`\n | `${RenderSpan}`\n | `${RouterSpan}`\n | `${AppRenderSpan}`\n | `${NodeSpan}`\n | `${AppRouteRouteHandlersSpan}`\n | `${ResolveMetadataSpan}`\n | `${MiddlewareSpan}`\n\n// This list is used to filter out spans that are not relevant to the user\nexport const NextVanillaSpanAllowlist = new Set([\n MiddlewareSpan.execute,\n BaseServerSpan.handleRequest,\n RenderSpan.getServerSideProps,\n RenderSpan.getStaticProps,\n AppRenderSpan.fetch,\n AppRenderSpan.getBodyResult,\n RenderSpan.renderDocument,\n NodeSpan.runHandler,\n AppRouteRouteHandlersSpan.runHandler,\n ResolveMetadataSpan.generateMetadata,\n ResolveMetadataSpan.generateViewport,\n NextNodeServerSpan.createComponentTree,\n NextNodeServerSpan.findPageComponents,\n NextNodeServerSpan.getLayoutOrPageModule,\n NextNodeServerSpan.startResponse,\n NextNodeServerSpan.clientComponentLoading,\n])\n\n// These Spans are allowed to be always logged\n// when the otel log prefix env is set\nexport const LogSpanAllowList = new Set([\n NextNodeServerSpan.findPageComponents,\n NextNodeServerSpan.createComponentTree,\n NextNodeServerSpan.clientComponentLoading,\n])\n\nexport {\n BaseServerSpan,\n LoadComponentsSpan,\n NextServerSpan,\n NextNodeServerSpan,\n StartServerSpan,\n RenderSpan,\n RouterSpan,\n AppRenderSpan,\n NodeSpan,\n AppRouteRouteHandlersSpan,\n ResolveMetadataSpan,\n MiddlewareSpan,\n}\n\nexport type { SpanTypes }\n"],"names":["BaseServerSpan","LoadComponentsSpan","NextServerSpan","NextNodeServerSpan","StartServerSpan","RenderSpan","AppRenderSpan","RouterSpan","NodeSpan","AppRouteRouteHandlersSpan","ResolveMetadataSpan","MiddlewareSpan","NextVanillaSpanAllowlist","Set","LogSpanAllowList"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;EAKE,GAEF,4CAA4C;AAE5C,IAAKA,iBAAAA,WAAAA,GAAAA,SAAAA,cAAAA;;;;;;;;;;;;;WAAAA;EAAAA,kBAAAA,CAAAA;AAeL,IAAKC,qBAAAA,WAAAA,GAAAA,SAAAA,kBAAAA;;;WAAAA;EAAAA,sBAAAA,CAAAA;AAKL,IAAKC,iBAAAA,WAAAA,GAAAA,SAAAA,cAAAA;;;;;;WAAAA;EAAAA,kBAAAA,CAAAA;AAQL,IAAKC,qBAAAA,WAAAA,GAAAA,SAAAA,kBAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4BH,wDAAwD;;;;;WA5BrDA;EAAAA,sBAAAA,CAAAA;AAmCL,IAAKC,kBAAAA,WAAAA,GAAAA,SAAAA,eAAAA;;WAAAA;EAAAA,mBAAAA,CAAAA;AAIL,IAAKC,aAAAA,WAAAA,GAAAA,SAAAA,UAAAA;;;;;;WAAAA;EAAAA,cAAAA,CAAAA;AAQL,IAAKC,gBAAAA,WAAAA,GAAAA,SAAAA,aAAAA;;;;;WAAAA;EAAAA,iBAAAA,CAAAA;AAOL,IAAKC,aAAAA,WAAAA,GAAAA,SAAAA,UAAAA;;WAAAA;EAAAA,cAAAA,CAAAA;AAIL,IAAKC,WAAAA,WAAAA,GAAAA,SAAAA,QAAAA;;WAAAA;EAAAA,YAAAA,CAAAA;AAIL,IAAKC,4BAAAA,WAAAA,GAAAA,SAAAA,yBAAAA;;WAAAA;EAAAA,6BAAAA,CAAAA;AAIL,IAAKC,sBAAAA,WAAAA,GAAAA,SAAAA,mBAAAA;;;WAAAA;EAAAA,uBAAAA,CAAAA;AAKL,IAAKC,iBAAAA,WAAAA,GAAAA,SAAAA,cAAAA;;WAAAA;EAAAA,kBAAAA,CAAAA;AAmBE,MAAMC,2BAA2B,IAAIC,IAAI;;;;;;;;;;;;;;;;;CAiB/C,EAAC;AAIK,MAAMC,mBAAmB,IAAID,IAAI;;;;CAIvC,EAAC","ignoreList":[0]}}, + {"offset": {"line": 217, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/is-thenable.ts"],"sourcesContent":["/**\n * Check to see if a value is Thenable.\n *\n * @param promise the maybe-thenable value\n * @returns true if the value is thenable\n */\nexport function isThenable(\n promise: Promise | T\n): promise is Promise {\n return (\n promise !== null &&\n typeof promise === 'object' &&\n 'then' in promise &&\n typeof promise.then === 'function'\n )\n}\n"],"names":["isThenable","promise","then"],"mappings":"AAAA;;;;;CAKC,GACD;;;;AAAO,SAASA,WACdC,OAAuB;IAEvB,OACEA,YAAY,QACZ,OAAOA,YAAY,YACnB,UAAUA,WACV,OAAOA,QAAQC,IAAI,KAAK;AAE5B","ignoreList":[0]}}, + {"offset": {"line": 232, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/dist/compiled/%40opentelemetry/api/index.js"],"sourcesContent":["(()=>{\"use strict\";var e={491:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ContextAPI=void 0;const n=r(223);const a=r(172);const o=r(930);const i=\"context\";const c=new n.NoopContextManager;class ContextAPI{constructor(){}static getInstance(){if(!this._instance){this._instance=new ContextAPI}return this._instance}setGlobalContextManager(e){return(0,a.registerGlobal)(i,e,o.DiagAPI.instance())}active(){return this._getContextManager().active()}with(e,t,r,...n){return this._getContextManager().with(e,t,r,...n)}bind(e,t){return this._getContextManager().bind(e,t)}_getContextManager(){return(0,a.getGlobal)(i)||c}disable(){this._getContextManager().disable();(0,a.unregisterGlobal)(i,o.DiagAPI.instance())}}t.ContextAPI=ContextAPI},930:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagAPI=void 0;const n=r(56);const a=r(912);const o=r(957);const i=r(172);const c=\"diag\";class DiagAPI{constructor(){function _logProxy(e){return function(...t){const r=(0,i.getGlobal)(\"diag\");if(!r)return;return r[e](...t)}}const e=this;const setLogger=(t,r={logLevel:o.DiagLogLevel.INFO})=>{var n,c,s;if(t===e){const t=new Error(\"Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation\");e.error((n=t.stack)!==null&&n!==void 0?n:t.message);return false}if(typeof r===\"number\"){r={logLevel:r}}const u=(0,i.getGlobal)(\"diag\");const l=(0,a.createLogLevelDiagLogger)((c=r.logLevel)!==null&&c!==void 0?c:o.DiagLogLevel.INFO,t);if(u&&!r.suppressOverrideMessage){const e=(s=(new Error).stack)!==null&&s!==void 0?s:\"\";u.warn(`Current logger will be overwritten from ${e}`);l.warn(`Current logger will overwrite one already registered from ${e}`)}return(0,i.registerGlobal)(\"diag\",l,e,true)};e.setLogger=setLogger;e.disable=()=>{(0,i.unregisterGlobal)(c,e)};e.createComponentLogger=e=>new n.DiagComponentLogger(e);e.verbose=_logProxy(\"verbose\");e.debug=_logProxy(\"debug\");e.info=_logProxy(\"info\");e.warn=_logProxy(\"warn\");e.error=_logProxy(\"error\")}static instance(){if(!this._instance){this._instance=new DiagAPI}return this._instance}}t.DiagAPI=DiagAPI},653:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.MetricsAPI=void 0;const n=r(660);const a=r(172);const o=r(930);const i=\"metrics\";class MetricsAPI{constructor(){}static getInstance(){if(!this._instance){this._instance=new MetricsAPI}return this._instance}setGlobalMeterProvider(e){return(0,a.registerGlobal)(i,e,o.DiagAPI.instance())}getMeterProvider(){return(0,a.getGlobal)(i)||n.NOOP_METER_PROVIDER}getMeter(e,t,r){return this.getMeterProvider().getMeter(e,t,r)}disable(){(0,a.unregisterGlobal)(i,o.DiagAPI.instance())}}t.MetricsAPI=MetricsAPI},181:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.PropagationAPI=void 0;const n=r(172);const a=r(874);const o=r(194);const i=r(277);const c=r(369);const s=r(930);const u=\"propagation\";const l=new a.NoopTextMapPropagator;class PropagationAPI{constructor(){this.createBaggage=c.createBaggage;this.getBaggage=i.getBaggage;this.getActiveBaggage=i.getActiveBaggage;this.setBaggage=i.setBaggage;this.deleteBaggage=i.deleteBaggage}static getInstance(){if(!this._instance){this._instance=new PropagationAPI}return this._instance}setGlobalPropagator(e){return(0,n.registerGlobal)(u,e,s.DiagAPI.instance())}inject(e,t,r=o.defaultTextMapSetter){return this._getGlobalPropagator().inject(e,t,r)}extract(e,t,r=o.defaultTextMapGetter){return this._getGlobalPropagator().extract(e,t,r)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,n.unregisterGlobal)(u,s.DiagAPI.instance())}_getGlobalPropagator(){return(0,n.getGlobal)(u)||l}}t.PropagationAPI=PropagationAPI},997:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.TraceAPI=void 0;const n=r(172);const a=r(846);const o=r(139);const i=r(607);const c=r(930);const s=\"trace\";class TraceAPI{constructor(){this._proxyTracerProvider=new a.ProxyTracerProvider;this.wrapSpanContext=o.wrapSpanContext;this.isSpanContextValid=o.isSpanContextValid;this.deleteSpan=i.deleteSpan;this.getSpan=i.getSpan;this.getActiveSpan=i.getActiveSpan;this.getSpanContext=i.getSpanContext;this.setSpan=i.setSpan;this.setSpanContext=i.setSpanContext}static getInstance(){if(!this._instance){this._instance=new TraceAPI}return this._instance}setGlobalTracerProvider(e){const t=(0,n.registerGlobal)(s,this._proxyTracerProvider,c.DiagAPI.instance());if(t){this._proxyTracerProvider.setDelegate(e)}return t}getTracerProvider(){return(0,n.getGlobal)(s)||this._proxyTracerProvider}getTracer(e,t){return this.getTracerProvider().getTracer(e,t)}disable(){(0,n.unregisterGlobal)(s,c.DiagAPI.instance());this._proxyTracerProvider=new a.ProxyTracerProvider}}t.TraceAPI=TraceAPI},277:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.deleteBaggage=t.setBaggage=t.getActiveBaggage=t.getBaggage=void 0;const n=r(491);const a=r(780);const o=(0,a.createContextKey)(\"OpenTelemetry Baggage Key\");function getBaggage(e){return e.getValue(o)||undefined}t.getBaggage=getBaggage;function getActiveBaggage(){return getBaggage(n.ContextAPI.getInstance().active())}t.getActiveBaggage=getActiveBaggage;function setBaggage(e,t){return e.setValue(o,t)}t.setBaggage=setBaggage;function deleteBaggage(e){return e.deleteValue(o)}t.deleteBaggage=deleteBaggage},993:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.BaggageImpl=void 0;class BaggageImpl{constructor(e){this._entries=e?new Map(e):new Map}getEntry(e){const t=this._entries.get(e);if(!t){return undefined}return Object.assign({},t)}getAllEntries(){return Array.from(this._entries.entries()).map((([e,t])=>[e,t]))}setEntry(e,t){const r=new BaggageImpl(this._entries);r._entries.set(e,t);return r}removeEntry(e){const t=new BaggageImpl(this._entries);t._entries.delete(e);return t}removeEntries(...e){const t=new BaggageImpl(this._entries);for(const r of e){t._entries.delete(r)}return t}clear(){return new BaggageImpl}}t.BaggageImpl=BaggageImpl},830:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.baggageEntryMetadataSymbol=void 0;t.baggageEntryMetadataSymbol=Symbol(\"BaggageEntryMetadata\")},369:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.baggageEntryMetadataFromString=t.createBaggage=void 0;const n=r(930);const a=r(993);const o=r(830);const i=n.DiagAPI.instance();function createBaggage(e={}){return new a.BaggageImpl(new Map(Object.entries(e)))}t.createBaggage=createBaggage;function baggageEntryMetadataFromString(e){if(typeof e!==\"string\"){i.error(`Cannot create baggage metadata from unknown type: ${typeof e}`);e=\"\"}return{__TYPE__:o.baggageEntryMetadataSymbol,toString(){return e}}}t.baggageEntryMetadataFromString=baggageEntryMetadataFromString},67:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.context=void 0;const n=r(491);t.context=n.ContextAPI.getInstance()},223:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopContextManager=void 0;const n=r(780);class NoopContextManager{active(){return n.ROOT_CONTEXT}with(e,t,r,...n){return t.call(r,...n)}bind(e,t){return t}enable(){return this}disable(){return this}}t.NoopContextManager=NoopContextManager},780:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ROOT_CONTEXT=t.createContextKey=void 0;function createContextKey(e){return Symbol.for(e)}t.createContextKey=createContextKey;class BaseContext{constructor(e){const t=this;t._currentContext=e?new Map(e):new Map;t.getValue=e=>t._currentContext.get(e);t.setValue=(e,r)=>{const n=new BaseContext(t._currentContext);n._currentContext.set(e,r);return n};t.deleteValue=e=>{const r=new BaseContext(t._currentContext);r._currentContext.delete(e);return r}}}t.ROOT_CONTEXT=new BaseContext},506:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.diag=void 0;const n=r(930);t.diag=n.DiagAPI.instance()},56:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagComponentLogger=void 0;const n=r(172);class DiagComponentLogger{constructor(e){this._namespace=e.namespace||\"DiagComponentLogger\"}debug(...e){return logProxy(\"debug\",this._namespace,e)}error(...e){return logProxy(\"error\",this._namespace,e)}info(...e){return logProxy(\"info\",this._namespace,e)}warn(...e){return logProxy(\"warn\",this._namespace,e)}verbose(...e){return logProxy(\"verbose\",this._namespace,e)}}t.DiagComponentLogger=DiagComponentLogger;function logProxy(e,t,r){const a=(0,n.getGlobal)(\"diag\");if(!a){return}r.unshift(t);return a[e](...r)}},972:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagConsoleLogger=void 0;const r=[{n:\"error\",c:\"error\"},{n:\"warn\",c:\"warn\"},{n:\"info\",c:\"info\"},{n:\"debug\",c:\"debug\"},{n:\"verbose\",c:\"trace\"}];class DiagConsoleLogger{constructor(){function _consoleFunc(e){return function(...t){if(console){let r=console[e];if(typeof r!==\"function\"){r=console.log}if(typeof r===\"function\"){return r.apply(console,t)}}}}for(let e=0;e{Object.defineProperty(t,\"__esModule\",{value:true});t.createLogLevelDiagLogger=void 0;const n=r(957);function createLogLevelDiagLogger(e,t){if(en.DiagLogLevel.ALL){e=n.DiagLogLevel.ALL}t=t||{};function _filterFunc(r,n){const a=t[r];if(typeof a===\"function\"&&e>=n){return a.bind(t)}return function(){}}return{error:_filterFunc(\"error\",n.DiagLogLevel.ERROR),warn:_filterFunc(\"warn\",n.DiagLogLevel.WARN),info:_filterFunc(\"info\",n.DiagLogLevel.INFO),debug:_filterFunc(\"debug\",n.DiagLogLevel.DEBUG),verbose:_filterFunc(\"verbose\",n.DiagLogLevel.VERBOSE)}}t.createLogLevelDiagLogger=createLogLevelDiagLogger},957:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagLogLevel=void 0;var r;(function(e){e[e[\"NONE\"]=0]=\"NONE\";e[e[\"ERROR\"]=30]=\"ERROR\";e[e[\"WARN\"]=50]=\"WARN\";e[e[\"INFO\"]=60]=\"INFO\";e[e[\"DEBUG\"]=70]=\"DEBUG\";e[e[\"VERBOSE\"]=80]=\"VERBOSE\";e[e[\"ALL\"]=9999]=\"ALL\"})(r=t.DiagLogLevel||(t.DiagLogLevel={}))},172:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.unregisterGlobal=t.getGlobal=t.registerGlobal=void 0;const n=r(200);const a=r(521);const o=r(130);const i=a.VERSION.split(\".\")[0];const c=Symbol.for(`opentelemetry.js.api.${i}`);const s=n._globalThis;function registerGlobal(e,t,r,n=false){var o;const i=s[c]=(o=s[c])!==null&&o!==void 0?o:{version:a.VERSION};if(!n&&i[e]){const t=new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`);r.error(t.stack||t.message);return false}if(i.version!==a.VERSION){const t=new Error(`@opentelemetry/api: Registration of version v${i.version} for ${e} does not match previously registered API v${a.VERSION}`);r.error(t.stack||t.message);return false}i[e]=t;r.debug(`@opentelemetry/api: Registered a global for ${e} v${a.VERSION}.`);return true}t.registerGlobal=registerGlobal;function getGlobal(e){var t,r;const n=(t=s[c])===null||t===void 0?void 0:t.version;if(!n||!(0,o.isCompatible)(n)){return}return(r=s[c])===null||r===void 0?void 0:r[e]}t.getGlobal=getGlobal;function unregisterGlobal(e,t){t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${a.VERSION}.`);const r=s[c];if(r){delete r[e]}}t.unregisterGlobal=unregisterGlobal},130:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.isCompatible=t._makeCompatibilityCheck=void 0;const n=r(521);const a=/^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;function _makeCompatibilityCheck(e){const t=new Set([e]);const r=new Set;const n=e.match(a);if(!n){return()=>false}const o={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(o.prerelease!=null){return function isExactmatch(t){return t===e}}function _reject(e){r.add(e);return false}function _accept(e){t.add(e);return true}return function isCompatible(e){if(t.has(e)){return true}if(r.has(e)){return false}const n=e.match(a);if(!n){return _reject(e)}const i={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(i.prerelease!=null){return _reject(e)}if(o.major!==i.major){return _reject(e)}if(o.major===0){if(o.minor===i.minor&&o.patch<=i.patch){return _accept(e)}return _reject(e)}if(o.minor<=i.minor){return _accept(e)}return _reject(e)}}t._makeCompatibilityCheck=_makeCompatibilityCheck;t.isCompatible=_makeCompatibilityCheck(n.VERSION)},886:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.metrics=void 0;const n=r(653);t.metrics=n.MetricsAPI.getInstance()},901:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ValueType=void 0;var r;(function(e){e[e[\"INT\"]=0]=\"INT\";e[e[\"DOUBLE\"]=1]=\"DOUBLE\"})(r=t.ValueType||(t.ValueType={}))},102:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.createNoopMeter=t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=t.NOOP_OBSERVABLE_GAUGE_METRIC=t.NOOP_OBSERVABLE_COUNTER_METRIC=t.NOOP_UP_DOWN_COUNTER_METRIC=t.NOOP_HISTOGRAM_METRIC=t.NOOP_COUNTER_METRIC=t.NOOP_METER=t.NoopObservableUpDownCounterMetric=t.NoopObservableGaugeMetric=t.NoopObservableCounterMetric=t.NoopObservableMetric=t.NoopHistogramMetric=t.NoopUpDownCounterMetric=t.NoopCounterMetric=t.NoopMetric=t.NoopMeter=void 0;class NoopMeter{constructor(){}createHistogram(e,r){return t.NOOP_HISTOGRAM_METRIC}createCounter(e,r){return t.NOOP_COUNTER_METRIC}createUpDownCounter(e,r){return t.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(e,r){return t.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(e,r){return t.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(e,r){return t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(e,t){}removeBatchObservableCallback(e){}}t.NoopMeter=NoopMeter;class NoopMetric{}t.NoopMetric=NoopMetric;class NoopCounterMetric extends NoopMetric{add(e,t){}}t.NoopCounterMetric=NoopCounterMetric;class NoopUpDownCounterMetric extends NoopMetric{add(e,t){}}t.NoopUpDownCounterMetric=NoopUpDownCounterMetric;class NoopHistogramMetric extends NoopMetric{record(e,t){}}t.NoopHistogramMetric=NoopHistogramMetric;class NoopObservableMetric{addCallback(e){}removeCallback(e){}}t.NoopObservableMetric=NoopObservableMetric;class NoopObservableCounterMetric extends NoopObservableMetric{}t.NoopObservableCounterMetric=NoopObservableCounterMetric;class NoopObservableGaugeMetric extends NoopObservableMetric{}t.NoopObservableGaugeMetric=NoopObservableGaugeMetric;class NoopObservableUpDownCounterMetric extends NoopObservableMetric{}t.NoopObservableUpDownCounterMetric=NoopObservableUpDownCounterMetric;t.NOOP_METER=new NoopMeter;t.NOOP_COUNTER_METRIC=new NoopCounterMetric;t.NOOP_HISTOGRAM_METRIC=new NoopHistogramMetric;t.NOOP_UP_DOWN_COUNTER_METRIC=new NoopUpDownCounterMetric;t.NOOP_OBSERVABLE_COUNTER_METRIC=new NoopObservableCounterMetric;t.NOOP_OBSERVABLE_GAUGE_METRIC=new NoopObservableGaugeMetric;t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new NoopObservableUpDownCounterMetric;function createNoopMeter(){return t.NOOP_METER}t.createNoopMeter=createNoopMeter},660:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NOOP_METER_PROVIDER=t.NoopMeterProvider=void 0;const n=r(102);class NoopMeterProvider{getMeter(e,t,r){return n.NOOP_METER}}t.NoopMeterProvider=NoopMeterProvider;t.NOOP_METER_PROVIDER=new NoopMeterProvider},200:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var a=this&&this.__exportStar||function(e,t){for(var r in e)if(r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r))n(t,e,r)};Object.defineProperty(t,\"__esModule\",{value:true});a(r(46),t)},651:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t._globalThis=void 0;t._globalThis=typeof globalThis===\"object\"?globalThis:global},46:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var a=this&&this.__exportStar||function(e,t){for(var r in e)if(r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r))n(t,e,r)};Object.defineProperty(t,\"__esModule\",{value:true});a(r(651),t)},939:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.propagation=void 0;const n=r(181);t.propagation=n.PropagationAPI.getInstance()},874:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopTextMapPropagator=void 0;class NoopTextMapPropagator{inject(e,t){}extract(e,t){return e}fields(){return[]}}t.NoopTextMapPropagator=NoopTextMapPropagator},194:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.defaultTextMapSetter=t.defaultTextMapGetter=void 0;t.defaultTextMapGetter={get(e,t){if(e==null){return undefined}return e[t]},keys(e){if(e==null){return[]}return Object.keys(e)}};t.defaultTextMapSetter={set(e,t,r){if(e==null){return}e[t]=r}}},845:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.trace=void 0;const n=r(997);t.trace=n.TraceAPI.getInstance()},403:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NonRecordingSpan=void 0;const n=r(476);class NonRecordingSpan{constructor(e=n.INVALID_SPAN_CONTEXT){this._spanContext=e}spanContext(){return this._spanContext}setAttribute(e,t){return this}setAttributes(e){return this}addEvent(e,t){return this}setStatus(e){return this}updateName(e){return this}end(e){}isRecording(){return false}recordException(e,t){}}t.NonRecordingSpan=NonRecordingSpan},614:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopTracer=void 0;const n=r(491);const a=r(607);const o=r(403);const i=r(139);const c=n.ContextAPI.getInstance();class NoopTracer{startSpan(e,t,r=c.active()){const n=Boolean(t===null||t===void 0?void 0:t.root);if(n){return new o.NonRecordingSpan}const s=r&&(0,a.getSpanContext)(r);if(isSpanContext(s)&&(0,i.isSpanContextValid)(s)){return new o.NonRecordingSpan(s)}else{return new o.NonRecordingSpan}}startActiveSpan(e,t,r,n){let o;let i;let s;if(arguments.length<2){return}else if(arguments.length===2){s=t}else if(arguments.length===3){o=t;s=r}else{o=t;i=r;s=n}const u=i!==null&&i!==void 0?i:c.active();const l=this.startSpan(e,o,u);const g=(0,a.setSpan)(u,l);return c.with(g,s,undefined,l)}}t.NoopTracer=NoopTracer;function isSpanContext(e){return typeof e===\"object\"&&typeof e[\"spanId\"]===\"string\"&&typeof e[\"traceId\"]===\"string\"&&typeof e[\"traceFlags\"]===\"number\"}},124:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopTracerProvider=void 0;const n=r(614);class NoopTracerProvider{getTracer(e,t,r){return new n.NoopTracer}}t.NoopTracerProvider=NoopTracerProvider},125:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ProxyTracer=void 0;const n=r(614);const a=new n.NoopTracer;class ProxyTracer{constructor(e,t,r,n){this._provider=e;this.name=t;this.version=r;this.options=n}startSpan(e,t,r){return this._getTracer().startSpan(e,t,r)}startActiveSpan(e,t,r,n){const a=this._getTracer();return Reflect.apply(a.startActiveSpan,a,arguments)}_getTracer(){if(this._delegate){return this._delegate}const e=this._provider.getDelegateTracer(this.name,this.version,this.options);if(!e){return a}this._delegate=e;return this._delegate}}t.ProxyTracer=ProxyTracer},846:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ProxyTracerProvider=void 0;const n=r(125);const a=r(124);const o=new a.NoopTracerProvider;class ProxyTracerProvider{getTracer(e,t,r){var a;return(a=this.getDelegateTracer(e,t,r))!==null&&a!==void 0?a:new n.ProxyTracer(this,e,t,r)}getDelegate(){var e;return(e=this._delegate)!==null&&e!==void 0?e:o}setDelegate(e){this._delegate=e}getDelegateTracer(e,t,r){var n;return(n=this._delegate)===null||n===void 0?void 0:n.getTracer(e,t,r)}}t.ProxyTracerProvider=ProxyTracerProvider},996:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.SamplingDecision=void 0;var r;(function(e){e[e[\"NOT_RECORD\"]=0]=\"NOT_RECORD\";e[e[\"RECORD\"]=1]=\"RECORD\";e[e[\"RECORD_AND_SAMPLED\"]=2]=\"RECORD_AND_SAMPLED\"})(r=t.SamplingDecision||(t.SamplingDecision={}))},607:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.getSpanContext=t.setSpanContext=t.deleteSpan=t.setSpan=t.getActiveSpan=t.getSpan=void 0;const n=r(780);const a=r(403);const o=r(491);const i=(0,n.createContextKey)(\"OpenTelemetry Context Key SPAN\");function getSpan(e){return e.getValue(i)||undefined}t.getSpan=getSpan;function getActiveSpan(){return getSpan(o.ContextAPI.getInstance().active())}t.getActiveSpan=getActiveSpan;function setSpan(e,t){return e.setValue(i,t)}t.setSpan=setSpan;function deleteSpan(e){return e.deleteValue(i)}t.deleteSpan=deleteSpan;function setSpanContext(e,t){return setSpan(e,new a.NonRecordingSpan(t))}t.setSpanContext=setSpanContext;function getSpanContext(e){var t;return(t=getSpan(e))===null||t===void 0?void 0:t.spanContext()}t.getSpanContext=getSpanContext},325:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.TraceStateImpl=void 0;const n=r(564);const a=32;const o=512;const i=\",\";const c=\"=\";class TraceStateImpl{constructor(e){this._internalState=new Map;if(e)this._parse(e)}set(e,t){const r=this._clone();if(r._internalState.has(e)){r._internalState.delete(e)}r._internalState.set(e,t);return r}unset(e){const t=this._clone();t._internalState.delete(e);return t}get(e){return this._internalState.get(e)}serialize(){return this._keys().reduce(((e,t)=>{e.push(t+c+this.get(t));return e}),[]).join(i)}_parse(e){if(e.length>o)return;this._internalState=e.split(i).reverse().reduce(((e,t)=>{const r=t.trim();const a=r.indexOf(c);if(a!==-1){const o=r.slice(0,a);const i=r.slice(a+1,t.length);if((0,n.validateKey)(o)&&(0,n.validateValue)(i)){e.set(o,i)}else{}}return e}),new Map);if(this._internalState.size>a){this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,a))}}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){const e=new TraceStateImpl;e._internalState=new Map(this._internalState);return e}}t.TraceStateImpl=TraceStateImpl},564:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.validateValue=t.validateKey=void 0;const r=\"[_0-9a-z-*/]\";const n=`[a-z]${r}{0,255}`;const a=`[a-z0-9]${r}{0,240}@[a-z]${r}{0,13}`;const o=new RegExp(`^(?:${n}|${a})$`);const i=/^[ -~]{0,255}[!-~]$/;const c=/,|=/;function validateKey(e){return o.test(e)}t.validateKey=validateKey;function validateValue(e){return i.test(e)&&!c.test(e)}t.validateValue=validateValue},98:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.createTraceState=void 0;const n=r(325);function createTraceState(e){return new n.TraceStateImpl(e)}t.createTraceState=createTraceState},476:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.INVALID_SPAN_CONTEXT=t.INVALID_TRACEID=t.INVALID_SPANID=void 0;const n=r(475);t.INVALID_SPANID=\"0000000000000000\";t.INVALID_TRACEID=\"00000000000000000000000000000000\";t.INVALID_SPAN_CONTEXT={traceId:t.INVALID_TRACEID,spanId:t.INVALID_SPANID,traceFlags:n.TraceFlags.NONE}},357:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.SpanKind=void 0;var r;(function(e){e[e[\"INTERNAL\"]=0]=\"INTERNAL\";e[e[\"SERVER\"]=1]=\"SERVER\";e[e[\"CLIENT\"]=2]=\"CLIENT\";e[e[\"PRODUCER\"]=3]=\"PRODUCER\";e[e[\"CONSUMER\"]=4]=\"CONSUMER\"})(r=t.SpanKind||(t.SpanKind={}))},139:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.wrapSpanContext=t.isSpanContextValid=t.isValidSpanId=t.isValidTraceId=void 0;const n=r(476);const a=r(403);const o=/^([0-9a-f]{32})$/i;const i=/^[0-9a-f]{16}$/i;function isValidTraceId(e){return o.test(e)&&e!==n.INVALID_TRACEID}t.isValidTraceId=isValidTraceId;function isValidSpanId(e){return i.test(e)&&e!==n.INVALID_SPANID}t.isValidSpanId=isValidSpanId;function isSpanContextValid(e){return isValidTraceId(e.traceId)&&isValidSpanId(e.spanId)}t.isSpanContextValid=isSpanContextValid;function wrapSpanContext(e){return new a.NonRecordingSpan(e)}t.wrapSpanContext=wrapSpanContext},847:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.SpanStatusCode=void 0;var r;(function(e){e[e[\"UNSET\"]=0]=\"UNSET\";e[e[\"OK\"]=1]=\"OK\";e[e[\"ERROR\"]=2]=\"ERROR\"})(r=t.SpanStatusCode||(t.SpanStatusCode={}))},475:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.TraceFlags=void 0;var r;(function(e){e[e[\"NONE\"]=0]=\"NONE\";e[e[\"SAMPLED\"]=1]=\"SAMPLED\"})(r=t.TraceFlags||(t.TraceFlags={}))},521:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.VERSION=void 0;t.VERSION=\"1.6.0\"}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var a=t[r]={exports:{}};var o=true;try{e[r].call(a.exports,a,a.exports,__nccwpck_require__);o=false}finally{if(o)delete t[r]}return a.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var r={};(()=>{var e=r;Object.defineProperty(e,\"__esModule\",{value:true});e.trace=e.propagation=e.metrics=e.diag=e.context=e.INVALID_SPAN_CONTEXT=e.INVALID_TRACEID=e.INVALID_SPANID=e.isValidSpanId=e.isValidTraceId=e.isSpanContextValid=e.createTraceState=e.TraceFlags=e.SpanStatusCode=e.SpanKind=e.SamplingDecision=e.ProxyTracerProvider=e.ProxyTracer=e.defaultTextMapSetter=e.defaultTextMapGetter=e.ValueType=e.createNoopMeter=e.DiagLogLevel=e.DiagConsoleLogger=e.ROOT_CONTEXT=e.createContextKey=e.baggageEntryMetadataFromString=void 0;var t=__nccwpck_require__(369);Object.defineProperty(e,\"baggageEntryMetadataFromString\",{enumerable:true,get:function(){return t.baggageEntryMetadataFromString}});var n=__nccwpck_require__(780);Object.defineProperty(e,\"createContextKey\",{enumerable:true,get:function(){return n.createContextKey}});Object.defineProperty(e,\"ROOT_CONTEXT\",{enumerable:true,get:function(){return n.ROOT_CONTEXT}});var a=__nccwpck_require__(972);Object.defineProperty(e,\"DiagConsoleLogger\",{enumerable:true,get:function(){return a.DiagConsoleLogger}});var o=__nccwpck_require__(957);Object.defineProperty(e,\"DiagLogLevel\",{enumerable:true,get:function(){return o.DiagLogLevel}});var i=__nccwpck_require__(102);Object.defineProperty(e,\"createNoopMeter\",{enumerable:true,get:function(){return i.createNoopMeter}});var c=__nccwpck_require__(901);Object.defineProperty(e,\"ValueType\",{enumerable:true,get:function(){return c.ValueType}});var s=__nccwpck_require__(194);Object.defineProperty(e,\"defaultTextMapGetter\",{enumerable:true,get:function(){return s.defaultTextMapGetter}});Object.defineProperty(e,\"defaultTextMapSetter\",{enumerable:true,get:function(){return s.defaultTextMapSetter}});var u=__nccwpck_require__(125);Object.defineProperty(e,\"ProxyTracer\",{enumerable:true,get:function(){return u.ProxyTracer}});var l=__nccwpck_require__(846);Object.defineProperty(e,\"ProxyTracerProvider\",{enumerable:true,get:function(){return l.ProxyTracerProvider}});var g=__nccwpck_require__(996);Object.defineProperty(e,\"SamplingDecision\",{enumerable:true,get:function(){return g.SamplingDecision}});var p=__nccwpck_require__(357);Object.defineProperty(e,\"SpanKind\",{enumerable:true,get:function(){return p.SpanKind}});var d=__nccwpck_require__(847);Object.defineProperty(e,\"SpanStatusCode\",{enumerable:true,get:function(){return d.SpanStatusCode}});var _=__nccwpck_require__(475);Object.defineProperty(e,\"TraceFlags\",{enumerable:true,get:function(){return _.TraceFlags}});var f=__nccwpck_require__(98);Object.defineProperty(e,\"createTraceState\",{enumerable:true,get:function(){return f.createTraceState}});var b=__nccwpck_require__(139);Object.defineProperty(e,\"isSpanContextValid\",{enumerable:true,get:function(){return b.isSpanContextValid}});Object.defineProperty(e,\"isValidTraceId\",{enumerable:true,get:function(){return b.isValidTraceId}});Object.defineProperty(e,\"isValidSpanId\",{enumerable:true,get:function(){return b.isValidSpanId}});var v=__nccwpck_require__(476);Object.defineProperty(e,\"INVALID_SPANID\",{enumerable:true,get:function(){return v.INVALID_SPANID}});Object.defineProperty(e,\"INVALID_TRACEID\",{enumerable:true,get:function(){return v.INVALID_TRACEID}});Object.defineProperty(e,\"INVALID_SPAN_CONTEXT\",{enumerable:true,get:function(){return v.INVALID_SPAN_CONTEXT}});const O=__nccwpck_require__(67);Object.defineProperty(e,\"context\",{enumerable:true,get:function(){return O.context}});const P=__nccwpck_require__(506);Object.defineProperty(e,\"diag\",{enumerable:true,get:function(){return P.diag}});const N=__nccwpck_require__(886);Object.defineProperty(e,\"metrics\",{enumerable:true,get:function(){return N.metrics}});const S=__nccwpck_require__(939);Object.defineProperty(e,\"propagation\",{enumerable:true,get:function(){return S.propagation}});const C=__nccwpck_require__(845);Object.defineProperty(e,\"trace\",{enumerable:true,get:function(){return C.trace}});e[\"default\"]={context:O.context,diag:P.diag,metrics:N.metrics,propagation:S.propagation,trace:C.trace}})();module.exports=r})();"],"names":[],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 1718, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/lib/trace/tracer.ts"],"sourcesContent":["import type { FetchEventResult } from '../../web/types'\nimport type { TextMapSetter } from '@opentelemetry/api'\nimport type { SpanTypes } from './constants'\nimport { LogSpanAllowList, NextVanillaSpanAllowlist } from './constants'\n\nimport type {\n ContextAPI,\n Span,\n SpanOptions,\n Tracer,\n AttributeValue,\n TextMapGetter,\n} from 'next/dist/compiled/@opentelemetry/api'\nimport { isThenable } from '../../../shared/lib/is-thenable'\n\nconst NEXT_OTEL_PERFORMANCE_PREFIX = process.env.NEXT_OTEL_PERFORMANCE_PREFIX\n\nlet api: typeof import('next/dist/compiled/@opentelemetry/api')\n\n// we want to allow users to use their own version of @opentelemetry/api if they\n// want to, so we try to require it first, and if it fails we fall back to the\n// version that is bundled with Next.js\n// this is because @opentelemetry/api has to be synced with the version of\n// @opentelemetry/tracing that is used, and we don't want to force users to use\n// the version that is bundled with Next.js.\n// the API is ~stable, so this should be fine\nif (process.env.NEXT_RUNTIME === 'edge') {\n api = require('@opentelemetry/api') as typeof import('@opentelemetry/api')\n} else {\n try {\n api = require('@opentelemetry/api') as typeof import('@opentelemetry/api')\n } catch (err) {\n api =\n require('next/dist/compiled/@opentelemetry/api') as typeof import('next/dist/compiled/@opentelemetry/api')\n }\n}\n\nconst { context, propagation, trace, SpanStatusCode, SpanKind, ROOT_CONTEXT } =\n api\n\nexport class BubbledError extends Error {\n constructor(\n public readonly bubble?: boolean,\n public readonly result?: FetchEventResult\n ) {\n super()\n }\n}\n\nexport function isBubbledError(error: unknown): error is BubbledError {\n if (typeof error !== 'object' || error === null) return false\n return error instanceof BubbledError\n}\n\nconst closeSpanWithError = (span: Span, error?: Error) => {\n if (isBubbledError(error) && error.bubble) {\n span.setAttribute('next.bubble', true)\n } else {\n if (error) {\n span.recordException(error)\n span.setAttribute('error.type', error.name)\n }\n span.setStatus({ code: SpanStatusCode.ERROR, message: error?.message })\n }\n span.end()\n}\n\ntype TracerSpanOptions = Omit & {\n parentSpan?: Span\n spanName?: string\n attributes?: Partial>\n hideSpan?: boolean\n}\n\ninterface NextTracer {\n getContext(): ContextAPI\n\n /**\n * Instruments a function by automatically creating a span activated on its\n * scope.\n *\n * The span will automatically be finished when one of these conditions is\n * met:\n *\n * * The function returns a promise, in which case the span will finish when\n * the promise is resolved or rejected.\n * * The function takes a callback as its second parameter, in which case the\n * span will finish when that callback is called.\n * * The function doesn't accept a callback and doesn't return a promise, in\n * which case the span will finish at the end of the function execution.\n *\n */\n trace(\n type: SpanTypes,\n fn: (span?: Span, done?: (error?: Error) => any) => Promise\n ): Promise\n trace(\n type: SpanTypes,\n fn: (span?: Span, done?: (error?: Error) => any) => T\n ): T\n trace(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: (span?: Span, done?: (error?: Error) => any) => Promise\n ): Promise\n trace(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: (span?: Span, done?: (error?: Error) => any) => T\n ): T\n\n /**\n * Wrap a function to automatically create a span activated on its\n * scope when it's called.\n *\n * The span will automatically be finished when one of these conditions is\n * met:\n *\n * * The function returns a promise, in which case the span will finish when\n * the promise is resolved or rejected.\n * * The function takes a callback as its last parameter, in which case the\n * span will finish when that callback is called.\n * * The function doesn't accept a callback and doesn't return a promise, in\n * which case the span will finish at the end of the function execution.\n */\n wrap) => any>(type: SpanTypes, fn: T): T\n wrap) => any>(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: T\n ): T\n wrap) => any>(\n type: SpanTypes,\n options: (...args: any[]) => TracerSpanOptions,\n fn: T\n ): T\n\n /**\n * Starts and returns a new Span representing a logical unit of work.\n *\n * This method do NOT modify the current Context by default. In result, any inner span will not\n * automatically set its parent context to the span created by this method unless manually activate\n * context via `tracer.getContext().with`. `trace`, or `wrap` is generally recommended as it gracefully\n * handles context activation. (ref: https://github.com/open-telemetry/opentelemetry-js/issues/1923)\n */\n startSpan(type: SpanTypes): Span\n startSpan(type: SpanTypes, options: TracerSpanOptions): Span\n\n /**\n * Returns currently activated span if current context is in the scope of the span.\n * Returns undefined otherwise.\n */\n getActiveScopeSpan(): Span | undefined\n\n /**\n * Returns trace propagation data for the currently active context. The format is equal to data provided\n * through the OpenTelemetry propagator API.\n */\n getTracePropagationData(): ClientTraceDataEntry[]\n\n /**\n * Executes a function with the given span set as the active span in the context.\n * This allows child spans created within the function to automatically parent to this span.\n */\n withSpan(span: Span, fn: () => T): T\n}\n\ntype NextAttributeNames =\n | 'next.route'\n | 'next.page'\n | 'next.rsc'\n | 'next.segment'\n | 'next.span_name'\n | 'next.span_type'\n | 'next.clientComponentLoadCount'\ntype OTELAttributeNames = `http.${string}` | `net.${string}`\ntype AttributeNames = NextAttributeNames | OTELAttributeNames\n\n/** we use this map to propagate attributes from nested spans to the top span */\nconst rootSpanAttributesStore = new Map<\n number,\n Map\n>()\nconst rootSpanIdKey = api.createContextKey('next.rootSpanId')\nlet lastSpanId = 0\nconst getSpanId = () => lastSpanId++\n\nexport interface ClientTraceDataEntry {\n key: string\n value: string\n}\n\nconst clientTraceDataSetter: TextMapSetter = {\n set(carrier, key, value) {\n carrier.push({\n key,\n value,\n })\n },\n}\n\nclass NextTracerImpl implements NextTracer {\n /**\n * Returns an instance to the trace with configured name.\n * Since wrap / trace can be defined in any place prior to actual trace subscriber initialization,\n * This should be lazily evaluated.\n */\n private getTracerInstance(): Tracer {\n return trace.getTracer('next.js', '0.0.1')\n }\n\n public getContext(): ContextAPI {\n return context\n }\n\n public getTracePropagationData(): ClientTraceDataEntry[] {\n const activeContext = context.active()\n const entries: ClientTraceDataEntry[] = []\n propagation.inject(activeContext, entries, clientTraceDataSetter)\n return entries\n }\n\n public getActiveScopeSpan(): Span | undefined {\n return trace.getSpan(context?.active())\n }\n\n public withPropagatedContext(\n carrier: C,\n fn: () => T,\n getter?: TextMapGetter\n ): T {\n const activeContext = context.active()\n if (trace.getSpanContext(activeContext)) {\n // Active span is already set, too late to propagate.\n return fn()\n }\n const remoteContext = propagation.extract(activeContext, carrier, getter)\n return context.with(remoteContext, fn)\n }\n\n // Trace, wrap implementation is inspired by datadog trace implementation\n // (https://datadoghq.dev/dd-trace-js/interfaces/tracer.html#trace).\n public trace(\n type: SpanTypes,\n fn: (span?: Span, done?: (error?: Error) => any) => Promise\n ): Promise\n public trace(\n type: SpanTypes,\n fn: (span?: Span, done?: (error?: Error) => any) => T\n ): T\n public trace(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: (span?: Span, done?: (error?: Error) => any) => Promise\n ): Promise\n public trace(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: (span?: Span, done?: (error?: Error) => any) => T\n ): T\n public trace(...args: Array) {\n const [type, fnOrOptions, fnOrEmpty] = args\n\n // coerce options form overload\n const {\n fn,\n options,\n }: {\n fn: (span?: Span, done?: (error?: Error) => any) => T | Promise\n options: TracerSpanOptions\n } =\n typeof fnOrOptions === 'function'\n ? {\n fn: fnOrOptions,\n options: {},\n }\n : {\n fn: fnOrEmpty,\n options: { ...fnOrOptions },\n }\n\n const spanName = options.spanName ?? type\n\n if (\n (!NextVanillaSpanAllowlist.has(type) &&\n process.env.NEXT_OTEL_VERBOSE !== '1') ||\n options.hideSpan\n ) {\n return fn()\n }\n\n // Trying to get active scoped span to assign parent. If option specifies parent span manually, will try to use it.\n let spanContext = this.getSpanContext(\n options?.parentSpan ?? this.getActiveScopeSpan()\n )\n\n if (!spanContext) {\n spanContext = context?.active() ?? ROOT_CONTEXT\n }\n // Check if there's already a root span in the store for this trace\n // We are intentionally not checking whether there is an active context\n // from outside of nextjs to ensure that we can provide the same level\n // of telemetry when using a custom server\n const existingRootSpanId = spanContext.getValue(rootSpanIdKey)\n const isRootSpan =\n typeof existingRootSpanId !== 'number' ||\n !rootSpanAttributesStore.has(existingRootSpanId)\n\n const spanId = getSpanId()\n\n options.attributes = {\n 'next.span_name': spanName,\n 'next.span_type': type,\n ...options.attributes,\n }\n\n return context.with(spanContext.setValue(rootSpanIdKey, spanId), () =>\n this.getTracerInstance().startActiveSpan(\n spanName,\n options,\n (span: Span) => {\n let startTime: number | undefined\n if (\n NEXT_OTEL_PERFORMANCE_PREFIX &&\n type &&\n LogSpanAllowList.has(type)\n ) {\n startTime =\n 'performance' in globalThis && 'measure' in performance\n ? globalThis.performance.now()\n : undefined\n }\n\n let cleanedUp = false\n const onCleanup = () => {\n if (cleanedUp) return\n cleanedUp = true\n rootSpanAttributesStore.delete(spanId)\n if (startTime) {\n performance.measure(\n `${NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(\n type.split('.').pop() || ''\n ).replace(\n /[A-Z]/g,\n (match: string) => '-' + match.toLowerCase()\n )}`,\n {\n start: startTime,\n end: performance.now(),\n }\n )\n }\n }\n\n if (isRootSpan) {\n rootSpanAttributesStore.set(\n spanId,\n new Map(\n Object.entries(options.attributes ?? {}) as [\n AttributeNames,\n AttributeValue | undefined,\n ][]\n )\n )\n }\n if (fn.length > 1) {\n try {\n return fn(span, (err) => closeSpanWithError(span, err))\n } catch (err: any) {\n closeSpanWithError(span, err)\n throw err\n } finally {\n onCleanup()\n }\n }\n\n try {\n const result = fn(span)\n if (isThenable(result)) {\n // If there's error make sure it throws\n return result\n .then((res) => {\n span.end()\n // Need to pass down the promise result,\n // it could be react stream response with error { error, stream }\n return res\n })\n .catch((err) => {\n closeSpanWithError(span, err)\n throw err\n })\n .finally(onCleanup)\n } else {\n span.end()\n onCleanup()\n }\n\n return result\n } catch (err: any) {\n closeSpanWithError(span, err)\n onCleanup()\n throw err\n }\n }\n )\n )\n }\n\n public wrap) => any>(type: SpanTypes, fn: T): T\n public wrap) => any>(\n type: SpanTypes,\n options: TracerSpanOptions,\n fn: T\n ): T\n public wrap) => any>(\n type: SpanTypes,\n options: (...args: any[]) => TracerSpanOptions,\n fn: T\n ): T\n public wrap(...args: Array) {\n const tracer = this\n const [name, options, fn] =\n args.length === 3 ? args : [args[0], {}, args[1]]\n\n if (\n !NextVanillaSpanAllowlist.has(name) &&\n process.env.NEXT_OTEL_VERBOSE !== '1'\n ) {\n return fn\n }\n\n return function (this: any) {\n let optionsObj = options\n if (typeof optionsObj === 'function' && typeof fn === 'function') {\n optionsObj = optionsObj.apply(this, arguments)\n }\n\n const lastArgId = arguments.length - 1\n const cb = arguments[lastArgId]\n\n if (typeof cb === 'function') {\n const scopeBoundCb = tracer.getContext().bind(context.active(), cb)\n return tracer.trace(name, optionsObj, (_span, done) => {\n arguments[lastArgId] = function (err: any) {\n done?.(err)\n return scopeBoundCb.apply(this, arguments)\n }\n\n return fn.apply(this, arguments)\n })\n } else {\n return tracer.trace(name, optionsObj, () => fn.apply(this, arguments))\n }\n }\n }\n\n public startSpan(type: SpanTypes): Span\n public startSpan(type: SpanTypes, options: TracerSpanOptions): Span\n public startSpan(...args: Array): Span {\n const [type, options]: [string, TracerSpanOptions | undefined] = args as any\n\n const spanContext = this.getSpanContext(\n options?.parentSpan ?? this.getActiveScopeSpan()\n )\n return this.getTracerInstance().startSpan(type, options, spanContext)\n }\n\n private getSpanContext(parentSpan?: Span) {\n const spanContext = parentSpan\n ? trace.setSpan(context.active(), parentSpan)\n : undefined\n\n return spanContext\n }\n\n public getRootSpanAttributes() {\n const spanId = context.active().getValue(rootSpanIdKey) as number\n return rootSpanAttributesStore.get(spanId)\n }\n\n public setRootSpanAttribute(key: AttributeNames, value: AttributeValue) {\n const spanId = context.active().getValue(rootSpanIdKey) as number\n const attributes = rootSpanAttributesStore.get(spanId)\n if (attributes && !attributes.has(key)) {\n attributes.set(key, value)\n }\n }\n\n public withSpan(span: Span, fn: () => T): T {\n const spanContext = trace.setSpan(context.active(), span)\n return context.with(spanContext, fn)\n }\n}\n\nconst getTracer = (() => {\n const tracer = new NextTracerImpl()\n\n return () => tracer\n})()\n\nexport { getTracer, SpanStatusCode, SpanKind }\nexport type { NextTracer, Span, SpanOptions, ContextAPI, TracerSpanOptions }\n"],"names":["LogSpanAllowList","NextVanillaSpanAllowlist","isThenable","NEXT_OTEL_PERFORMANCE_PREFIX","process","env","api","NEXT_RUNTIME","require","err","context","propagation","trace","SpanStatusCode","SpanKind","ROOT_CONTEXT","BubbledError","Error","constructor","bubble","result","isBubbledError","error","closeSpanWithError","span","setAttribute","recordException","name","setStatus","code","ERROR","message","end","rootSpanAttributesStore","Map","rootSpanIdKey","createContextKey","lastSpanId","getSpanId","clientTraceDataSetter","set","carrier","key","value","push","NextTracerImpl","getTracerInstance","getTracer","getContext","getTracePropagationData","activeContext","active","entries","inject","getActiveScopeSpan","getSpan","withPropagatedContext","fn","getter","getSpanContext","remoteContext","extract","with","args","type","fnOrOptions","fnOrEmpty","options","spanName","has","NEXT_OTEL_VERBOSE","hideSpan","spanContext","parentSpan","existingRootSpanId","getValue","isRootSpan","spanId","attributes","setValue","startActiveSpan","startTime","globalThis","performance","now","undefined","cleanedUp","onCleanup","delete","measure","split","pop","replace","match","toLowerCase","start","Object","length","then","res","catch","finally","wrap","tracer","optionsObj","apply","arguments","lastArgId","cb","scopeBoundCb","bind","_span","done","startSpan","setSpan","getRootSpanAttributes","get","setRootSpanAttribute","withSpan"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 1972, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/lib/constants.ts"],"sourcesContent":["import type { ServerRuntime } from '../types'\n\nexport const TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain'\nexport const HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8'\nexport const JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8'\nexport const NEXT_QUERY_PARAM_PREFIX = 'nxtP'\nexport const NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI'\n\nexport const MATCHED_PATH_HEADER = 'x-matched-path'\nexport const PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate'\nexport const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER =\n 'x-prerender-revalidate-if-generated'\n\nexport const RSC_SEGMENTS_DIR_SUFFIX = '.segments'\nexport const RSC_SEGMENT_SUFFIX = '.segment.rsc'\nexport const RSC_SUFFIX = '.rsc'\nexport const ACTION_SUFFIX = '.action'\nexport const NEXT_DATA_SUFFIX = '.json'\nexport const NEXT_META_SUFFIX = '.meta'\nexport const NEXT_BODY_SUFFIX = '.body'\n\nexport const NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags'\nexport const NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags'\nexport const NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER =\n 'x-next-revalidate-tag-token'\n\nexport const NEXT_RESUME_HEADER = 'next-resume'\n\n// if these change make sure we update the related\n// documentation as well\nexport const NEXT_CACHE_TAG_MAX_ITEMS = 128\nexport const NEXT_CACHE_TAG_MAX_LENGTH = 256\nexport const NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024\nexport const NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_'\n\n// in seconds\nexport const CACHE_ONE_YEAR = 31536000\n\n// in seconds, represents revalidate=false. I.e. never revaliate.\n// We use this value since it can be represented as a V8 SMI for optimal performance.\n// It can also be serialized as JSON if it ever leaks accidentally as an actual value.\nexport const INFINITE_CACHE = 0xfffffffe\n\n// Patterns to detect middleware files\nexport const MIDDLEWARE_FILENAME = 'middleware'\nexport const MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`\n\n// Patterns to detect proxy files (replacement for middleware)\nexport const PROXY_FILENAME = 'proxy'\nexport const PROXY_LOCATION_REGEXP = `(?:src/)?${PROXY_FILENAME}`\n\n// Pattern to detect instrumentation hooks file\nexport const INSTRUMENTATION_HOOK_FILENAME = 'instrumentation'\n\n// Because on Windows absolute paths in the generated code can break because of numbers, eg 1 in the path,\n// we have to use a private alias\nexport const PAGES_DIR_ALIAS = 'private-next-pages'\nexport const DOT_NEXT_ALIAS = 'private-dot-next'\nexport const ROOT_DIR_ALIAS = 'private-next-root-dir'\nexport const APP_DIR_ALIAS = 'private-next-app-dir'\nexport const RSC_MOD_REF_PROXY_ALIAS = 'private-next-rsc-mod-ref-proxy'\nexport const RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate'\nexport const RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference'\nexport const RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper'\nexport const RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS =\n 'private-next-rsc-track-dynamic-import'\nexport const RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption'\nexport const RSC_ACTION_CLIENT_WRAPPER_ALIAS =\n 'private-next-rsc-action-client-wrapper'\n\nexport const PUBLIC_DIR_MIDDLEWARE_CONFLICT = `You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`\n\nexport const SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`\n\nexport const SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`\n\nexport const SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`\n\nexport const STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`\n\nexport const SERVER_PROPS_EXPORT_ERROR = `pages with \\`getServerSideProps\\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`\n\nexport const GSP_NO_RETURNED_VALUE =\n 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?'\nexport const GSSP_NO_RETURNED_VALUE =\n 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?'\n\nexport const UNSTABLE_REVALIDATE_RENAME_ERROR =\n 'The `unstable_revalidate` property is available for general use.\\n' +\n 'Please use `revalidate` instead.'\n\nexport const GSSP_COMPONENT_MEMBER_ERROR = `can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`\n\nexport const NON_STANDARD_NODE_ENV = `You are using a non-standard \"NODE_ENV\" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`\n\nexport const SSG_FALLBACK_EXPORT_ERROR = `Pages with \\`fallback\\` enabled in \\`getStaticPaths\\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`\n\nexport const ESLINT_DEFAULT_DIRS = ['app', 'pages', 'components', 'lib', 'src']\n\nexport const SERVER_RUNTIME: Record = {\n edge: 'edge',\n experimentalEdge: 'experimental-edge',\n nodejs: 'nodejs',\n}\n\nexport const WEB_SOCKET_MAX_RECONNECTIONS = 12\n\n/**\n * The names of the webpack layers. These layers are the primitives for the\n * webpack chunks.\n */\nconst WEBPACK_LAYERS_NAMES = {\n /**\n * The layer for the shared code between the client and server bundles.\n */\n shared: 'shared',\n /**\n * The layer for server-only runtime and picking up `react-server` export conditions.\n * Including app router RSC pages and app router custom routes and metadata routes.\n */\n reactServerComponents: 'rsc',\n /**\n * Server Side Rendering layer for app (ssr).\n */\n serverSideRendering: 'ssr',\n /**\n * The browser client bundle layer for actions.\n */\n actionBrowser: 'action-browser',\n /**\n * The Node.js bundle layer for the API routes.\n */\n apiNode: 'api-node',\n /**\n * The Edge Lite bundle layer for the API routes.\n */\n apiEdge: 'api-edge',\n /**\n * The layer for the middleware code.\n */\n middleware: 'middleware',\n /**\n * The layer for the instrumentation hooks.\n */\n instrument: 'instrument',\n /**\n * The layer for assets on the edge.\n */\n edgeAsset: 'edge-asset',\n /**\n * The browser client bundle layer for App directory.\n */\n appPagesBrowser: 'app-pages-browser',\n /**\n * The browser client bundle layer for Pages directory.\n */\n pagesDirBrowser: 'pages-dir-browser',\n /**\n * The Edge Lite bundle layer for Pages directory.\n */\n pagesDirEdge: 'pages-dir-edge',\n /**\n * The Node.js bundle layer for Pages directory.\n */\n pagesDirNode: 'pages-dir-node',\n} as const\n\nexport type WebpackLayerName =\n (typeof WEBPACK_LAYERS_NAMES)[keyof typeof WEBPACK_LAYERS_NAMES]\n\nconst WEBPACK_LAYERS = {\n ...WEBPACK_LAYERS_NAMES,\n GROUP: {\n builtinReact: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n ],\n serverOnly: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware,\n ],\n neutralTarget: [\n // pages api\n WEBPACK_LAYERS_NAMES.apiNode,\n WEBPACK_LAYERS_NAMES.apiEdge,\n ],\n clientOnly: [\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n ],\n bundled: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.shared,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware,\n ],\n appPages: [\n // app router pages and layouts\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n ],\n },\n}\n\nconst WEBPACK_RESOURCE_QUERIES = {\n edgeSSREntry: '__next_edge_ssr_entry__',\n metadata: '__next_metadata__',\n metadataRoute: '__next_metadata_route__',\n metadataImageMeta: '__next_metadata_image_meta__',\n}\n\nexport { WEBPACK_LAYERS, WEBPACK_RESOURCE_QUERIES }\n"],"names":["TEXT_PLAIN_CONTENT_TYPE_HEADER","HTML_CONTENT_TYPE_HEADER","JSON_CONTENT_TYPE_HEADER","NEXT_QUERY_PARAM_PREFIX","NEXT_INTERCEPTION_MARKER_PREFIX","MATCHED_PATH_HEADER","PRERENDER_REVALIDATE_HEADER","PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER","RSC_SEGMENTS_DIR_SUFFIX","RSC_SEGMENT_SUFFIX","RSC_SUFFIX","ACTION_SUFFIX","NEXT_DATA_SUFFIX","NEXT_META_SUFFIX","NEXT_BODY_SUFFIX","NEXT_CACHE_TAGS_HEADER","NEXT_CACHE_REVALIDATED_TAGS_HEADER","NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER","NEXT_RESUME_HEADER","NEXT_CACHE_TAG_MAX_ITEMS","NEXT_CACHE_TAG_MAX_LENGTH","NEXT_CACHE_SOFT_TAG_MAX_LENGTH","NEXT_CACHE_IMPLICIT_TAG_ID","CACHE_ONE_YEAR","INFINITE_CACHE","MIDDLEWARE_FILENAME","MIDDLEWARE_LOCATION_REGEXP","PROXY_FILENAME","PROXY_LOCATION_REGEXP","INSTRUMENTATION_HOOK_FILENAME","PAGES_DIR_ALIAS","DOT_NEXT_ALIAS","ROOT_DIR_ALIAS","APP_DIR_ALIAS","RSC_MOD_REF_PROXY_ALIAS","RSC_ACTION_VALIDATE_ALIAS","RSC_ACTION_PROXY_ALIAS","RSC_CACHE_WRAPPER_ALIAS","RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS","RSC_ACTION_ENCRYPTION_ALIAS","RSC_ACTION_CLIENT_WRAPPER_ALIAS","PUBLIC_DIR_MIDDLEWARE_CONFLICT","SSG_GET_INITIAL_PROPS_CONFLICT","SERVER_PROPS_GET_INIT_PROPS_CONFLICT","SERVER_PROPS_SSG_CONFLICT","STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR","SERVER_PROPS_EXPORT_ERROR","GSP_NO_RETURNED_VALUE","GSSP_NO_RETURNED_VALUE","UNSTABLE_REVALIDATE_RENAME_ERROR","GSSP_COMPONENT_MEMBER_ERROR","NON_STANDARD_NODE_ENV","SSG_FALLBACK_EXPORT_ERROR","ESLINT_DEFAULT_DIRS","SERVER_RUNTIME","edge","experimentalEdge","nodejs","WEB_SOCKET_MAX_RECONNECTIONS","WEBPACK_LAYERS_NAMES","shared","reactServerComponents","serverSideRendering","actionBrowser","apiNode","apiEdge","middleware","instrument","edgeAsset","appPagesBrowser","pagesDirBrowser","pagesDirEdge","pagesDirNode","WEBPACK_LAYERS","GROUP","builtinReact","serverOnly","neutralTarget","clientOnly","bundled","appPages","WEBPACK_RESOURCE_QUERIES","edgeSSREntry","metadata","metadataRoute","metadataImageMeta"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 2253, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/module.compiled.js"],"sourcesContent":["if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/app-page/module.js')\n} else {\n if (process.env.__NEXT_EXPERIMENTAL_REACT) {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.prod.js')\n }\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.prod.js')\n }\n }\n }\n}\n"],"names":["process","env","NEXT_RUNTIME","module","exports","require","__NEXT_EXPERIMENTAL_REACT","NODE_ENV","TURBOPACK"],"mappings":"AAAA,IAAIA,QAAQC,GAAG,CAACC,YAAY,KAAK,QAAQ;;KAElC;IACL,IAAIF,QAAQC,GAAG,CAACK,yBAAyB,EAAE;;SAcpC;QACL,IAAIN,QAAQC,GAAG,CAACM,QAAQ,KAAK,WAAe;YAC1C,IAAIP,QAAQC,GAAG,CAACO,SAAS,eAAE;gBACzBL,OAAOC,OAAO,GAAGC,QAAQ;YAC3B,OAAO;;QAGT,OAAO;;IAOT;AACF","ignoreList":[0]}}, + {"offset": {"line": 2272, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/rsc/react.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-rsc']!.React\n"],"names":["module","exports","require","vendored","React"],"mappings":"AAAAA,OAAOC,OAAO,GACZC,QAAQ,4JACRC,QAAQ,CAAC,YAAY,CAAEC,KAAK","ignoreList":[0]}}, + {"offset": {"line": 2277, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/hooks-server-context.ts"],"sourcesContent":["const DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE'\n\nexport class DynamicServerError extends Error {\n digest: typeof DYNAMIC_ERROR_CODE = DYNAMIC_ERROR_CODE\n\n constructor(public readonly description: string) {\n super(`Dynamic server usage: ${description}`)\n }\n}\n\nexport function isDynamicServerError(err: unknown): err is DynamicServerError {\n if (\n typeof err !== 'object' ||\n err === null ||\n !('digest' in err) ||\n typeof err.digest !== 'string'\n ) {\n return false\n }\n\n return err.digest === DYNAMIC_ERROR_CODE\n}\n"],"names":["DYNAMIC_ERROR_CODE","DynamicServerError","Error","constructor","description","digest","isDynamicServerError","err"],"mappings":";;;;;;AAAA,MAAMA,qBAAqB;AAEpB,MAAMC,2BAA2BC;IAGtCC,YAA4BC,WAAmB,CAAE;QAC/C,KAAK,CAAC,CAAC,sBAAsB,EAAEA,aAAa,GAAA,IAAA,CADlBA,WAAAA,GAAAA,aAAAA,IAAAA,CAF5BC,MAAAA,GAAoCL;IAIpC;AACF;AAEO,SAASM,qBAAqBC,GAAY;IAC/C,IACE,OAAOA,QAAQ,YACfA,QAAQ,QACR,CAAE,CAAA,YAAYA,GAAE,KAChB,OAAOA,IAAIF,MAAM,KAAK,UACtB;QACA,OAAO;IACT;IAEA,OAAOE,IAAIF,MAAM,KAAKL;AACxB","ignoreList":[0]}}, + {"offset": {"line": 2299, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/static-generation-bailout.ts"],"sourcesContent":["const NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT'\n\nexport class StaticGenBailoutError extends Error {\n public readonly code = NEXT_STATIC_GEN_BAILOUT\n}\n\nexport function isStaticGenBailoutError(\n error: unknown\n): error is StaticGenBailoutError {\n if (typeof error !== 'object' || error === null || !('code' in error)) {\n return false\n }\n\n return error.code === NEXT_STATIC_GEN_BAILOUT\n}\n"],"names":["NEXT_STATIC_GEN_BAILOUT","StaticGenBailoutError","Error","code","isStaticGenBailoutError","error"],"mappings":";;;;;;AAAA,MAAMA,0BAA0B;AAEzB,MAAMC,8BAA8BC;;QAApC,KAAA,IAAA,OAAA,IAAA,CACWC,IAAAA,GAAOH;;AACzB;AAEO,SAASI,wBACdC,KAAc;IAEd,IAAI,OAAOA,UAAU,YAAYA,UAAU,QAAQ,CAAE,CAAA,UAAUA,KAAI,GAAI;QACrE,OAAO;IACT;IAEA,OAAOA,MAAMF,IAAI,KAAKH;AACxB","ignoreList":[0]}}, + {"offset": {"line": 2321, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/dynamic-rendering-utils.ts"],"sourcesContent":["import type { NonStaticRenderStage } from './app-render/staged-rendering'\nimport type { RequestStore } from './app-render/work-unit-async-storage.external'\n\nexport function isHangingPromiseRejectionError(\n err: unknown\n): err is HangingPromiseRejectionError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === HANGING_PROMISE_REJECTION\n}\n\nconst HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION'\n\nclass HangingPromiseRejectionError extends Error {\n public readonly digest = HANGING_PROMISE_REJECTION\n\n constructor(\n public readonly route: string,\n public readonly expression: string\n ) {\n super(\n `During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \\`setTimeout\\`, \\`after\\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route \"${route}\".`\n )\n }\n}\n\ntype AbortListeners = Array<(err: unknown) => void>\nconst abortListenersBySignal = new WeakMap()\n\n/**\n * This function constructs a promise that will never resolve. This is primarily\n * useful for cacheComponents where we use promise resolution timing to determine which\n * parts of a render can be included in a prerender.\n *\n * @internal\n */\nexport function makeHangingPromise(\n signal: AbortSignal,\n route: string,\n expression: string\n): Promise {\n if (signal.aborted) {\n return Promise.reject(new HangingPromiseRejectionError(route, expression))\n } else {\n const hangingPromise = new Promise((_, reject) => {\n const boundRejection = reject.bind(\n null,\n new HangingPromiseRejectionError(route, expression)\n )\n let currentListeners = abortListenersBySignal.get(signal)\n if (currentListeners) {\n currentListeners.push(boundRejection)\n } else {\n const listeners = [boundRejection]\n abortListenersBySignal.set(signal, listeners)\n signal.addEventListener(\n 'abort',\n () => {\n for (let i = 0; i < listeners.length; i++) {\n listeners[i]()\n }\n },\n { once: true }\n )\n }\n })\n // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so\n // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct\n // your own promise out of it you'll need to ensure you handle the error when it rejects.\n hangingPromise.catch(ignoreReject)\n return hangingPromise\n }\n}\n\nfunction ignoreReject() {}\n\nexport function makeDevtoolsIOAwarePromise(\n underlying: T,\n requestStore: RequestStore,\n stage: NonStaticRenderStage\n): Promise {\n if (requestStore.stagedRendering) {\n // We resolve each stage in a timeout, so React DevTools will pick this up as IO.\n return requestStore.stagedRendering.delayUntilStage(\n stage,\n undefined,\n underlying\n )\n }\n // in React DevTools if we resolve in a setTimeout we will observe\n // the promise resolution as something that can suspend a boundary or root.\n return new Promise((resolve) => {\n // Must use setTimeout to be considered IO React DevTools. setImmediate will not work.\n setTimeout(() => {\n resolve(underlying)\n }, 0)\n })\n}\n"],"names":["isHangingPromiseRejectionError","err","digest","HANGING_PROMISE_REJECTION","HangingPromiseRejectionError","Error","constructor","route","expression","abortListenersBySignal","WeakMap","makeHangingPromise","signal","aborted","Promise","reject","hangingPromise","_","boundRejection","bind","currentListeners","get","push","listeners","set","addEventListener","i","length","once","catch","ignoreReject","makeDevtoolsIOAwarePromise","underlying","requestStore","stage","stagedRendering","delayUntilStage","undefined","resolve","setTimeout"],"mappings":";;;;;;;;AAGO,SAASA,+BACdC,GAAY;IAEZ,IAAI,OAAOA,QAAQ,YAAYA,QAAQ,QAAQ,CAAE,CAAA,YAAYA,GAAE,GAAI;QACjE,OAAO;IACT;IAEA,OAAOA,IAAIC,MAAM,KAAKC;AACxB;AAEA,MAAMA,4BAA4B;AAElC,MAAMC,qCAAqCC;IAGzCC,YACkBC,KAAa,EACbC,UAAkB,CAClC;QACA,KAAK,CACH,CAAC,qBAAqB,EAAEA,WAAW,qGAAqG,EAAEA,WAAW,8KAA8K,EAAED,MAAM,EAAE,CAAC,GAAA,IAAA,CAJhUA,KAAAA,GAAAA,OAAAA,IAAAA,CACAC,UAAAA,GAAAA,YAAAA,IAAAA,CAJFN,MAAAA,GAASC;IASzB;AACF;AAGA,MAAMM,yBAAyB,IAAIC;AAS5B,SAASC,mBACdC,MAAmB,EACnBL,KAAa,EACbC,UAAkB;IAElB,IAAII,OAAOC,OAAO,EAAE;QAClB,OAAOC,QAAQC,MAAM,CAAC,IAAIX,6BAA6BG,OAAOC;IAChE,OAAO;QACL,MAAMQ,iBAAiB,IAAIF,QAAW,CAACG,GAAGF;YACxC,MAAMG,iBAAiBH,OAAOI,IAAI,CAChC,MACA,IAAIf,6BAA6BG,OAAOC;YAE1C,IAAIY,mBAAmBX,uBAAuBY,GAAG,CAACT;YAClD,IAAIQ,kBAAkB;gBACpBA,iBAAiBE,IAAI,CAACJ;YACxB,OAAO;gBACL,MAAMK,YAAY;oBAACL;iBAAe;gBAClCT,uBAAuBe,GAAG,CAACZ,QAAQW;gBACnCX,OAAOa,gBAAgB,CACrB,SACA;oBACE,IAAK,IAAIC,IAAI,GAAGA,IAAIH,UAAUI,MAAM,EAAED,IAAK;wBACzCH,SAAS,CAACG,EAAE;oBACd;gBACF,GACA;oBAAEE,MAAM;gBAAK;YAEjB;QACF;QACA,2GAA2G;QAC3G,6GAA6G;QAC7G,yFAAyF;QACzFZ,eAAea,KAAK,CAACC;QACrB,OAAOd;IACT;AACF;AAEA,SAASc,gBAAgB;AAElB,SAASC,2BACdC,UAAa,EACbC,YAA0B,EAC1BC,KAA2B;IAE3B,IAAID,aAAaE,eAAe,EAAE;QAChC,iFAAiF;QACjF,OAAOF,aAAaE,eAAe,CAACC,eAAe,CACjDF,OACAG,WACAL;IAEJ;IACA,kEAAkE;IAClE,2EAA2E;IAC3E,OAAO,IAAIlB,QAAW,CAACwB;QACrB,sFAAsF;QACtFC,WAAW;YACTD,QAAQN;QACV,GAAG;IACL;AACF","ignoreList":[0]}}, + {"offset": {"line": 2391, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/lib/framework/boundary-constants.tsx"],"sourcesContent":["export const METADATA_BOUNDARY_NAME = '__next_metadata_boundary__'\nexport const VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__'\nexport const OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__'\nexport const ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__'\n"],"names":["METADATA_BOUNDARY_NAME","VIEWPORT_BOUNDARY_NAME","OUTLET_BOUNDARY_NAME","ROOT_LAYOUT_BOUNDARY_NAME"],"mappings":";;;;;;;;;;AAAO,MAAMA,yBAAyB,6BAA4B;AAC3D,MAAMC,yBAAyB,6BAA4B;AAC3D,MAAMC,uBAAuB,2BAA0B;AACvD,MAAMC,4BAA4B,gCAA+B","ignoreList":[0]}}, + {"offset": {"line": 2409, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/lib/scheduler.ts"],"sourcesContent":["export type ScheduledFn = () => T | PromiseLike\nexport type SchedulerFn = (cb: ScheduledFn) => void\n\n/**\n * Schedules a function to be called on the next tick after the other promises\n * have been resolved.\n *\n * @param cb the function to schedule\n */\nexport const scheduleOnNextTick = (cb: ScheduledFn) => {\n // We use Promise.resolve().then() here so that the operation is scheduled at\n // the end of the promise job queue, we then add it to the next process tick\n // to ensure it's evaluated afterwards.\n //\n // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255\n //\n Promise.resolve().then(() => {\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0)\n } else {\n process.nextTick(cb)\n }\n })\n}\n\n/**\n * Schedules a function to be called using `setImmediate` or `setTimeout` if\n * `setImmediate` is not available (like in the Edge runtime).\n *\n * @param cb the function to schedule\n */\nexport const scheduleImmediate = (cb: ScheduledFn): void => {\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0)\n } else {\n setImmediate(cb)\n }\n}\n\n/**\n * returns a promise than resolves in a future task. There is no guarantee that the task it resolves in\n * will be the next task but if you await it you can at least be sure that the current task is over and\n * most usefully that the entire microtask queue of the current task has been emptied.\n */\nexport function atLeastOneTask() {\n return new Promise((resolve) => scheduleImmediate(resolve))\n}\n\n/**\n * This utility function is extracted to make it easier to find places where we are doing\n * specific timing tricks to try to schedule work after React has rendered. This is especially\n * important at the moment because Next.js uses the edge builds of React which use setTimeout to\n * schedule work when you might expect that something like setImmediate would do the trick.\n *\n * Long term we should switch to the node versions of React rendering when possible and then\n * update this to use setImmediate rather than setTimeout\n */\nexport function waitAtLeastOneReactRenderTask(): Promise {\n if (process.env.NEXT_RUNTIME === 'edge') {\n return new Promise((r) => setTimeout(r, 0))\n } else {\n return new Promise((r) => setImmediate(r))\n }\n}\n"],"names":["scheduleOnNextTick","cb","Promise","resolve","then","process","env","NEXT_RUNTIME","setTimeout","nextTick","scheduleImmediate","setImmediate","atLeastOneTask","waitAtLeastOneReactRenderTask","r"],"mappings":"AAGA;;;;;CAKC,GACD;;;;;;;;;;AAAO,MAAMA,qBAAqB,CAACC;IACjC,6EAA6E;IAC7E,4EAA4E;IAC5E,uCAAuC;IACvC,EAAE;IACF,kLAAkL;IAClL,EAAE;IACFC,QAAQC,OAAO,GAAGC,IAAI,CAAC;QACrB,IAAIC,QAAQC,GAAG,CAACC,YAAY,KAAK,QAAQ;;aAElC;YACLF,QAAQI,QAAQ,CAACR;QACnB;IACF;AACF,EAAC;AAQM,MAAMS,oBAAoB,CAACT;IAChC,IAAII,QAAQC,GAAG,CAACC,YAAY,KAAK,QAAQ;;SAElC;QACLI,aAAaV;IACf;AACF,EAAC;AAOM,SAASW;IACd,OAAO,IAAIV,QAAc,CAACC,UAAYO,kBAAkBP;AAC1D;AAWO,SAASU;IACd,IAAIR,QAAQC,GAAG,CAACC,YAAY,KAAK,QAAQ;;SAElC;QACL,OAAO,IAAIL,QAAQ,CAACY,IAAMH,aAAaG;IACzC;AACF","ignoreList":[0]}}, + {"offset": {"line": 2460, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/lazy-dynamic/bailout-to-csr.ts"],"sourcesContent":["// This has to be a shared module which is shared between client component error boundary and dynamic component\nconst BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING'\n\n/** An error that should be thrown when we want to bail out to client-side rendering. */\nexport class BailoutToCSRError extends Error {\n public readonly digest = BAILOUT_TO_CSR\n\n constructor(public readonly reason: string) {\n super(`Bail out to client-side rendering: ${reason}`)\n }\n}\n\n/** Checks if a passed argument is an error that is thrown if we want to bail out to client-side rendering. */\nexport function isBailoutToCSRError(err: unknown): err is BailoutToCSRError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === BAILOUT_TO_CSR\n}\n"],"names":["BAILOUT_TO_CSR","BailoutToCSRError","Error","constructor","reason","digest","isBailoutToCSRError","err"],"mappings":";;;;;;AAAA,+GAA+G;AAC/G,MAAMA,iBAAiB;AAGhB,MAAMC,0BAA0BC;IAGrCC,YAA4BC,MAAc,CAAE;QAC1C,KAAK,CAAC,CAAC,mCAAmC,EAAEA,QAAQ,GAAA,IAAA,CAD1BA,MAAAA,GAAAA,QAAAA,IAAAA,CAFZC,MAAAA,GAASL;IAIzB;AACF;AAGO,SAASM,oBAAoBC,GAAY;IAC9C,IAAI,OAAOA,QAAQ,YAAYA,QAAQ,QAAQ,CAAE,CAAA,YAAYA,GAAE,GAAI;QACjE,OAAO;IACT;IAEA,OAAOA,IAAIF,MAAM,KAAKL;AACxB","ignoreList":[0]}}, + {"offset": {"line": 2483, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/invariant-error.ts"],"sourcesContent":["export class InvariantError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(\n `Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`,\n options\n )\n this.name = 'InvariantError'\n }\n}\n"],"names":["InvariantError","Error","constructor","message","options","endsWith","name"],"mappings":";;;;AAAO,MAAMA,uBAAuBC;IAClCC,YAAYC,OAAe,EAAEC,OAAsB,CAAE;QACnD,KAAK,CACH,CAAC,WAAW,EAAED,QAAQE,QAAQ,CAAC,OAAOF,UAAUA,UAAU,IAAI,0BAA0B,CAAC,EACzFC;QAEF,IAAI,CAACE,IAAI,GAAG;IACd;AACF","ignoreList":[0]}}, + {"offset": {"line": 2497, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/app-render/dynamic-rendering.ts"],"sourcesContent":["/**\n * The functions provided by this module are used to communicate certain properties\n * about the currently running code so that Next.js can make decisions on how to handle\n * the current execution in different rendering modes such as pre-rendering, resuming, and SSR.\n *\n * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering.\n * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts\n * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of\n * Dynamic indications.\n *\n * The first is simply an intention to be dynamic. unstable_noStore is an example of this where\n * the currently executing code simply declares that the current scope is dynamic but if you use it\n * inside unstable_cache it can still be cached. This type of indication can be removed if we ever\n * make the default dynamic to begin with because the only way you would ever be static is inside\n * a cache scope which this indication does not affect.\n *\n * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic\n * because it means that it is inappropriate to cache this at all. using a dynamic data source inside\n * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should\n * read that data outside the cache and pass it in as an argument to the cached function.\n */\n\nimport type { WorkStore } from '../app-render/work-async-storage.external'\nimport type {\n WorkUnitStore,\n PrerenderStoreLegacy,\n PrerenderStoreModern,\n PrerenderStoreModernRuntime,\n} from '../app-render/work-unit-async-storage.external'\n\n// Once postpone is in stable we should switch to importing the postpone export directly\nimport React from 'react'\n\nimport { DynamicServerError } from '../../client/components/hooks-server-context'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport {\n getRuntimeStagePromise,\n throwForMissingRequestStore,\n workUnitAsyncStorage,\n} from './work-unit-async-storage.external'\nimport { workAsyncStorage } from '../app-render/work-async-storage.external'\nimport { makeHangingPromise } from '../dynamic-rendering-utils'\nimport {\n METADATA_BOUNDARY_NAME,\n VIEWPORT_BOUNDARY_NAME,\n OUTLET_BOUNDARY_NAME,\n ROOT_LAYOUT_BOUNDARY_NAME,\n} from '../../lib/framework/boundary-constants'\nimport { scheduleOnNextTick } from '../../lib/scheduler'\nimport { BailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr'\nimport { InvariantError } from '../../shared/lib/invariant-error'\n\nconst hasPostpone = typeof React.unstable_postpone === 'function'\n\nexport type DynamicAccess = {\n /**\n * If debugging, this will contain the stack trace of where the dynamic access\n * occurred. This is used to provide more information to the user about why\n * their page is being rendered dynamically.\n */\n stack?: string\n\n /**\n * The expression that was accessed dynamically.\n */\n expression: string\n}\n\n// Stores dynamic reasons used during an RSC render.\nexport type DynamicTrackingState = {\n /**\n * When true, stack information will also be tracked during dynamic access.\n */\n readonly isDebugDynamicAccesses: boolean | undefined\n\n /**\n * The dynamic accesses that occurred during the render.\n */\n readonly dynamicAccesses: Array\n\n syncDynamicErrorWithStack: null | Error\n}\n\n// Stores dynamic reasons used during an SSR render.\nexport type DynamicValidationState = {\n hasSuspenseAboveBody: boolean\n hasDynamicMetadata: boolean\n dynamicMetadata: null | Error\n hasDynamicViewport: boolean\n hasAllowedDynamic: boolean\n dynamicErrors: Array\n}\n\nexport function createDynamicTrackingState(\n isDebugDynamicAccesses: boolean | undefined\n): DynamicTrackingState {\n return {\n isDebugDynamicAccesses,\n dynamicAccesses: [],\n syncDynamicErrorWithStack: null,\n }\n}\n\nexport function createDynamicValidationState(): DynamicValidationState {\n return {\n hasSuspenseAboveBody: false,\n hasDynamicMetadata: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: [],\n }\n}\n\nexport function getFirstDynamicReason(\n trackingState: DynamicTrackingState\n): undefined | string {\n return trackingState.dynamicAccesses[0]?.expression\n}\n\n/**\n * This function communicates that the current scope should be treated as dynamic.\n *\n * In most cases this function is a no-op but if called during\n * a PPR prerender it will postpone the current sub-tree and calling\n * it during a normal prerender will cause the entire prerender to abort\n */\nexport function markCurrentScopeAsDynamic(\n store: WorkStore,\n workUnitStore: undefined | Exclude,\n expression: string\n): void {\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'request':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n // If we're forcing dynamic rendering or we're forcing static rendering, we\n // don't need to do anything here because the entire page is already dynamic\n // or it's static and it should not throw or postpone here.\n if (store.forceDynamic || store.forceStatic) return\n\n if (store.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender-ppr':\n return postponeWithTracking(\n store.route,\n expression,\n workUnitStore.dynamicTracking\n )\n case 'prerender-legacy':\n workUnitStore.revalidate = 0\n\n // We aren't prerendering, but we are generating a static page. We need\n // to bail out of static generation.\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n case 'request':\n if (process.env.NODE_ENV !== 'production') {\n workUnitStore.usedDynamic = true\n }\n break\n default:\n workUnitStore satisfies never\n }\n }\n}\n\n/**\n * This function is meant to be used when prerendering without cacheComponents or PPR.\n * When called during a build it will cause Next.js to consider the route as dynamic.\n *\n * @internal\n */\nexport function throwToInterruptStaticGeneration(\n expression: string,\n store: WorkStore,\n prerenderStore: PrerenderStoreLegacy\n): never {\n // We aren't prerendering but we are generating a static page. We need to bail out of static generation\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n\n prerenderStore.revalidate = 0\n\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n}\n\n/**\n * This function should be used to track whether something dynamic happened even when\n * we are in a dynamic render. This is useful for Dev where all renders are dynamic but\n * we still track whether dynamic APIs were accessed for helpful messaging\n *\n * @internal\n */\nexport function trackDynamicDataInDynamicRender(workUnitStore: WorkUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'prerender-client':\n break\n case 'request':\n if (process.env.NODE_ENV !== 'production') {\n workUnitStore.usedDynamic = true\n }\n break\n default:\n workUnitStore satisfies never\n }\n}\n\nfunction abortOnSynchronousDynamicDataAccess(\n route: string,\n expression: string,\n prerenderStore: PrerenderStoreModern\n): void {\n const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`\n\n const error = createPrerenderInterruptedError(reason)\n\n prerenderStore.controller.abort(error)\n\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n}\n\nexport function abortOnSynchronousPlatformIOAccess(\n route: string,\n expression: string,\n errorWithStack: Error,\n prerenderStore: PrerenderStoreModern\n): void {\n const dynamicTracking = prerenderStore.dynamicTracking\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore)\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack\n }\n }\n}\n\n/**\n * use this function when prerendering with cacheComponents. If we are doing a\n * prospective prerender we don't actually abort because we want to discover\n * all caches for the shell. If this is the actual prerender we do abort.\n *\n * This function accepts a prerenderStore but the caller should ensure we're\n * actually running in cacheComponents mode.\n *\n * @internal\n */\nexport function abortAndThrowOnSynchronousRequestDataAccess(\n route: string,\n expression: string,\n errorWithStack: Error,\n prerenderStore: PrerenderStoreModern\n): never {\n const prerenderSignal = prerenderStore.controller.signal\n if (prerenderSignal.aborted === false) {\n // TODO it would be better to move this aborted check into the callsite so we can avoid making\n // the error object when it isn't relevant to the aborting of the prerender however\n // since we need the throw semantics regardless of whether we abort it is easier to land\n // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer\n // to ideal implementation\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore)\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack\n }\n }\n }\n throw createPrerenderInterruptedError(\n `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`\n )\n}\n\n/**\n * This component will call `React.postpone` that throws the postponed error.\n */\ntype PostponeProps = {\n reason: string\n route: string\n}\nexport function Postpone({ reason, route }: PostponeProps): never {\n const prerenderStore = workUnitAsyncStorage.getStore()\n const dynamicTracking =\n prerenderStore && prerenderStore.type === 'prerender-ppr'\n ? prerenderStore.dynamicTracking\n : null\n postponeWithTracking(route, reason, dynamicTracking)\n}\n\nexport function postponeWithTracking(\n route: string,\n expression: string,\n dynamicTracking: null | DynamicTrackingState\n): never {\n assertPostpone()\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n\n React.unstable_postpone(createPostponeReason(route, expression))\n}\n\nfunction createPostponeReason(route: string, expression: string) {\n return (\n `Route ${route} needs to bail out of prerendering at this point because it used ${expression}. ` +\n `React throws this special object to indicate where. It should not be caught by ` +\n `your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`\n )\n}\n\nexport function isDynamicPostpone(err: unknown) {\n if (\n typeof err === 'object' &&\n err !== null &&\n typeof (err as any).message === 'string'\n ) {\n return isDynamicPostponeReason((err as any).message)\n }\n return false\n}\n\nfunction isDynamicPostponeReason(reason: string) {\n return (\n reason.includes(\n 'needs to bail out of prerendering at this point because it used'\n ) &&\n reason.includes(\n 'Learn more: https://nextjs.org/docs/messages/ppr-caught-error'\n )\n )\n}\n\nif (isDynamicPostponeReason(createPostponeReason('%%%', '^^^')) === false) {\n throw new Error(\n 'Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js'\n )\n}\n\nconst NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED'\n\nfunction createPrerenderInterruptedError(message: string): Error {\n const error = new Error(message)\n ;(error as any).digest = NEXT_PRERENDER_INTERRUPTED\n return error\n}\n\ntype DigestError = Error & {\n digest: string\n}\n\nexport function isPrerenderInterruptedError(\n error: unknown\n): error is DigestError {\n return (\n typeof error === 'object' &&\n error !== null &&\n (error as any).digest === NEXT_PRERENDER_INTERRUPTED &&\n 'name' in error &&\n 'message' in error &&\n error instanceof Error\n )\n}\n\nexport function accessedDynamicData(\n dynamicAccesses: Array\n): boolean {\n return dynamicAccesses.length > 0\n}\n\nexport function consumeDynamicAccess(\n serverDynamic: DynamicTrackingState,\n clientDynamic: DynamicTrackingState\n): DynamicTrackingState['dynamicAccesses'] {\n // We mutate because we only call this once we are no longer writing\n // to the dynamicTrackingState and it's more efficient than creating a new\n // array.\n serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses)\n return serverDynamic.dynamicAccesses\n}\n\nexport function formatDynamicAPIAccesses(\n dynamicAccesses: Array\n): string[] {\n return dynamicAccesses\n .filter(\n (access): access is Required =>\n typeof access.stack === 'string' && access.stack.length > 0\n )\n .map(({ expression, stack }) => {\n stack = stack\n .split('\\n')\n // Remove the \"Error: \" prefix from the first line of the stack trace as\n // well as the first 4 lines of the stack trace which is the distance\n // from the user code and the `new Error().stack` call.\n .slice(4)\n .filter((line) => {\n // Exclude Next.js internals from the stack trace.\n if (line.includes('node_modules/next/')) {\n return false\n }\n\n // Exclude anonymous functions from the stack trace.\n if (line.includes(' ()')) {\n return false\n }\n\n // Exclude Node.js internals from the stack trace.\n if (line.includes(' (node:')) {\n return false\n }\n\n return true\n })\n .join('\\n')\n return `Dynamic API Usage Debug - ${expression}:\\n${stack}`\n })\n}\n\nfunction assertPostpone() {\n if (!hasPostpone) {\n throw new Error(\n `Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js`\n )\n }\n}\n\n/**\n * This is a bit of a hack to allow us to abort a render using a Postpone instance instead of an Error which changes React's\n * abort semantics slightly.\n */\nexport function createRenderInBrowserAbortSignal(): AbortSignal {\n const controller = new AbortController()\n controller.abort(new BailoutToCSRError('Render in Browser'))\n return controller.signal\n}\n\n/**\n * In a prerender, we may end up with hanging Promises as inputs due them\n * stalling on connection() or because they're loading dynamic data. In that\n * case we need to abort the encoding of arguments since they'll never complete.\n */\nexport function createHangingInputAbortSignal(\n workUnitStore: WorkUnitStore\n): AbortSignal | undefined {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-runtime':\n const controller = new AbortController()\n\n if (workUnitStore.cacheSignal) {\n // If we have a cacheSignal it means we're in a prospective render. If\n // the input we're waiting on is coming from another cache, we do want\n // to wait for it so that we can resolve this cache entry too.\n workUnitStore.cacheSignal.inputReady().then(() => {\n controller.abort()\n })\n } else {\n // Otherwise we're in the final render and we should already have all\n // our caches filled.\n // If the prerender uses stages, we have wait until the runtime stage,\n // at which point all runtime inputs will be resolved.\n // (otherwise, a runtime prerender might consider `cookies()` hanging\n // even though they'd resolve in the next task.)\n //\n // We might still be waiting on some microtasks so we\n // wait one tick before giving up. When we give up, we still want to\n // render the content of this cache as deeply as we can so that we can\n // suspend as deeply as possible in the tree or not at all if we don't\n // end up waiting for the input.\n const runtimeStagePromise = getRuntimeStagePromise(workUnitStore)\n if (runtimeStagePromise) {\n runtimeStagePromise.then(() =>\n scheduleOnNextTick(() => controller.abort())\n )\n } else {\n scheduleOnNextTick(() => controller.abort())\n }\n }\n\n return controller.signal\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n return undefined\n default:\n workUnitStore satisfies never\n }\n}\n\nexport function annotateDynamicAccess(\n expression: string,\n prerenderStore: PrerenderStoreModern\n) {\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n}\n\nexport function useDynamicRouteParams(expression: string) {\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n if (workStore && workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender-client':\n case 'prerender': {\n const fallbackParams = workUnitStore.fallbackRouteParams\n\n if (fallbackParams && fallbackParams.size > 0) {\n // We are in a prerender with cacheComponents semantics. We are going to\n // hang here and never resolve. This will cause the currently\n // rendering component to effectively be a dynamic hole.\n React.use(\n makeHangingPromise(\n workUnitStore.renderSignal,\n workStore.route,\n expression\n )\n )\n }\n break\n }\n case 'prerender-ppr': {\n const fallbackParams = workUnitStore.fallbackRouteParams\n if (fallbackParams && fallbackParams.size > 0) {\n return postponeWithTracking(\n workStore.route,\n expression,\n workUnitStore.dynamicTracking\n )\n }\n break\n }\n case 'prerender-runtime':\n throw new InvariantError(\n `\\`${expression}\\` was called during a runtime prerender. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'cache':\n case 'private-cache':\n throw new InvariantError(\n `\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'prerender-legacy':\n case 'request':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n}\n\nexport function useDynamicSearchParams(expression: string) {\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (!workStore) {\n // We assume pages router context and just return\n return\n }\n\n if (!workUnitStore) {\n throwForMissingRequestStore(expression)\n }\n\n switch (workUnitStore.type) {\n case 'prerender-client': {\n React.use(\n makeHangingPromise(\n workUnitStore.renderSignal,\n workStore.route,\n expression\n )\n )\n break\n }\n case 'prerender-legacy':\n case 'prerender-ppr': {\n if (workStore.forceStatic) {\n return\n }\n throw new BailoutToCSRError(expression)\n }\n case 'prerender':\n case 'prerender-runtime':\n throw new InvariantError(\n `\\`${expression}\\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'cache':\n case 'unstable-cache':\n case 'private-cache':\n throw new InvariantError(\n `\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'request':\n return\n default:\n workUnitStore satisfies never\n }\n}\n\nconst hasSuspenseRegex = /\\n\\s+at Suspense \\(\\)/\n\n// Common implicit body tags that React will treat as body when placed directly in html\nconst bodyAndImplicitTags =\n 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6'\n\n// Detects when RootLayoutBoundary (our framework marker component) appears\n// after Suspense in the component stack, indicating the root layout is wrapped\n// within a Suspense boundary. Ensures no body/html/implicit-body components are in between.\n//\n// Example matches:\n// at Suspense ()\n// at __next_root_layout_boundary__ ()\n//\n// Or with other components in between (but not body/html/implicit-body):\n// at Suspense ()\n// at SomeComponent ()\n// at __next_root_layout_boundary__ ()\nconst hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(\n `\\\\n\\\\s+at Suspense \\\\(\\\\)(?:(?!\\\\n\\\\s+at (?:${bodyAndImplicitTags}) \\\\(\\\\))[\\\\s\\\\S])*?\\\\n\\\\s+at ${ROOT_LAYOUT_BOUNDARY_NAME} \\\\([^\\\\n]*\\\\)`\n)\n\nconst hasMetadataRegex = new RegExp(\n `\\\\n\\\\s+at ${METADATA_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst hasViewportRegex = new RegExp(\n `\\\\n\\\\s+at ${VIEWPORT_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst hasOutletRegex = new RegExp(`\\\\n\\\\s+at ${OUTLET_BOUNDARY_NAME}[\\\\n\\\\s]`)\n\nexport function trackAllowedDynamicAccess(\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n dynamicValidation.hasDynamicMetadata = true\n return\n } else if (hasViewportRegex.test(componentStack)) {\n dynamicValidation.hasDynamicViewport = true\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(\n clientDynamic.syncDynamicErrorWithStack\n )\n return\n } else {\n const message =\n `Route \"${workStore.route}\": Uncached data was accessed outside of ` +\n '. This delays the entire page from rendering, resulting in a ' +\n 'slow user experience. Learn more: ' +\n 'https://nextjs.org/docs/messages/blocking-route'\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicErrors.push(error)\n return\n }\n}\n\nexport function trackDynamicHoleInRuntimeShell(\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed inside \\`generateMetadata\\`. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicMetadata = error\n return\n } else if (hasViewportRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed inside \\`generateViewport\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicErrors.push(error)\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(\n clientDynamic.syncDynamicErrorWithStack\n )\n return\n } else {\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed outside of \\`\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicErrors.push(error)\n return\n }\n}\n\nexport function trackDynamicHoleInStaticShell(\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateMetadata\\` or you have file-based metadata such as icons that depend on dynamic params segments. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicMetadata = error\n return\n } else if (hasViewportRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateViewport\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicErrors.push(error)\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(\n clientDynamic.syncDynamicErrorWithStack\n )\n return\n } else {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed outside of \\`\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicErrors.push(error)\n return\n }\n}\n\n/**\n * In dev mode, we prefer using the owner stack, otherwise the provided\n * component stack is used.\n */\nfunction createErrorWithComponentOrOwnerStack(\n message: string,\n componentStack: string\n) {\n const ownerStack =\n process.env.NODE_ENV !== 'production' && React.captureOwnerStack\n ? React.captureOwnerStack()\n : null\n\n const error = new Error(message)\n // TODO go back to owner stack here if available. This is temporarily using componentStack to get the right\n //\n error.stack = error.name + ': ' + message + (ownerStack || componentStack)\n return error\n}\n\nexport enum PreludeState {\n Full = 0,\n Empty = 1,\n Errored = 2,\n}\n\nexport function logDisallowedDynamicError(\n workStore: WorkStore,\n error: Error\n): void {\n console.error(error)\n\n if (!workStore.dev) {\n if (workStore.hasReadableErrorStacks) {\n console.error(\n `To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running \\`next dev\\`, then open \"${workStore.route}\" in your browser to investigate the error.`\n )\n } else {\n console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following:\n - Start the app in development mode by running \\`next dev\\`, then open \"${workStore.route}\" in your browser to investigate the error.\n - Rerun the production build with \\`next build --debug-prerender\\` to generate better stack traces.`)\n }\n }\n}\n\nexport function throwIfDisallowedDynamic(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState,\n serverDynamic: DynamicTrackingState\n): void {\n if (serverDynamic.syncDynamicErrorWithStack) {\n logDisallowedDynamicError(\n workStore,\n serverDynamic.syncDynamicErrorWithStack\n )\n throw new StaticGenBailoutError()\n }\n\n if (prelude !== PreludeState.Full) {\n if (dynamicValidation.hasSuspenseAboveBody) {\n // This route has opted into allowing fully dynamic rendering\n // by including a Suspense boundary above the body. In this case\n // a lack of a shell is not considered disallowed so we simply return\n return\n }\n\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n for (let i = 0; i < dynamicErrors.length; i++) {\n logDisallowedDynamicError(workStore, dynamicErrors[i])\n }\n\n throw new StaticGenBailoutError()\n }\n\n // If we got this far then the only other thing that could be blocking\n // the root is dynamic Viewport. If this is dynamic then\n // you need to opt into that by adding a Suspense boundary above the body\n // to indicate your are ok with fully dynamic rendering.\n if (dynamicValidation.hasDynamicViewport) {\n console.error(\n `Route \"${workStore.route}\" has a \\`generateViewport\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`\n )\n throw new StaticGenBailoutError()\n }\n\n if (prelude === PreludeState.Empty) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n console.error(\n `Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`\n )\n throw new StaticGenBailoutError()\n }\n } else {\n if (\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.hasDynamicMetadata\n ) {\n console.error(\n `Route \"${workStore.route}\" has a \\`generateMetadata\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`\n )\n throw new StaticGenBailoutError()\n }\n }\n}\n\nexport function getStaticShellDisallowedDynamicReasons(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState\n): Array {\n if (dynamicValidation.hasSuspenseAboveBody) {\n // This route has opted into allowing fully dynamic rendering\n // by including a Suspense boundary above the body. In this case\n // a lack of a shell is not considered disallowed so we simply return\n return []\n }\n\n if (prelude !== PreludeState.Full) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n if (prelude === PreludeState.Empty) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n return [\n new InvariantError(\n `Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason.`\n ),\n ]\n }\n } else {\n // We have a prelude but we might still have dynamic metadata without any other dynamic access\n if (\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.dynamicErrors.length === 0 &&\n dynamicValidation.dynamicMetadata\n ) {\n return [dynamicValidation.dynamicMetadata]\n }\n }\n // We had a non-empty prelude and there are no dynamic holes\n return []\n}\n\nexport function delayUntilRuntimeStage(\n prerenderStore: PrerenderStoreModernRuntime,\n result: Promise\n): Promise {\n if (prerenderStore.runtimeStagePromise) {\n return prerenderStore.runtimeStagePromise.then(() => result)\n }\n return result\n}\n"],"names":["React","DynamicServerError","StaticGenBailoutError","getRuntimeStagePromise","throwForMissingRequestStore","workUnitAsyncStorage","workAsyncStorage","makeHangingPromise","METADATA_BOUNDARY_NAME","VIEWPORT_BOUNDARY_NAME","OUTLET_BOUNDARY_NAME","ROOT_LAYOUT_BOUNDARY_NAME","scheduleOnNextTick","BailoutToCSRError","InvariantError","hasPostpone","unstable_postpone","createDynamicTrackingState","isDebugDynamicAccesses","dynamicAccesses","syncDynamicErrorWithStack","createDynamicValidationState","hasSuspenseAboveBody","hasDynamicMetadata","dynamicMetadata","hasDynamicViewport","hasAllowedDynamic","dynamicErrors","getFirstDynamicReason","trackingState","expression","markCurrentScopeAsDynamic","store","workUnitStore","type","forceDynamic","forceStatic","dynamicShouldError","route","postponeWithTracking","dynamicTracking","revalidate","err","dynamicUsageDescription","dynamicUsageStack","stack","process","env","NODE_ENV","usedDynamic","throwToInterruptStaticGeneration","prerenderStore","trackDynamicDataInDynamicRender","abortOnSynchronousDynamicDataAccess","reason","error","createPrerenderInterruptedError","controller","abort","push","Error","undefined","abortOnSynchronousPlatformIOAccess","errorWithStack","abortAndThrowOnSynchronousRequestDataAccess","prerenderSignal","signal","aborted","Postpone","getStore","assertPostpone","createPostponeReason","isDynamicPostpone","message","isDynamicPostponeReason","includes","NEXT_PRERENDER_INTERRUPTED","digest","isPrerenderInterruptedError","accessedDynamicData","length","consumeDynamicAccess","serverDynamic","clientDynamic","formatDynamicAPIAccesses","filter","access","map","split","slice","line","join","createRenderInBrowserAbortSignal","AbortController","createHangingInputAbortSignal","cacheSignal","inputReady","then","runtimeStagePromise","annotateDynamicAccess","useDynamicRouteParams","workStore","fallbackParams","fallbackRouteParams","size","use","renderSignal","useDynamicSearchParams","hasSuspenseRegex","bodyAndImplicitTags","hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex","RegExp","hasMetadataRegex","hasViewportRegex","hasOutletRegex","trackAllowedDynamicAccess","componentStack","dynamicValidation","test","createErrorWithComponentOrOwnerStack","trackDynamicHoleInRuntimeShell","trackDynamicHoleInStaticShell","ownerStack","captureOwnerStack","name","PreludeState","logDisallowedDynamicError","console","dev","hasReadableErrorStacks","throwIfDisallowedDynamic","prelude","i","getStaticShellDisallowedDynamicReasons","delayUntilRuntimeStage","result"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 3265, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/lib/clone-response.ts"],"sourcesContent":["const noop = () => {}\n\nlet registry: FinalizationRegistry> | undefined\n\nif (globalThis.FinalizationRegistry) {\n registry = new FinalizationRegistry((weakRef: WeakRef) => {\n const stream = weakRef.deref()\n if (stream && !stream.locked) {\n stream.cancel('Response object has been garbage collected').then(noop)\n }\n })\n}\n\n/**\n * Clones a response by teeing the body so we can return two independent\n * ReadableStreams from it. This avoids the bug in the undici library around\n * response cloning.\n *\n * After cloning, the original response's body will be consumed and closed.\n *\n * @see https://github.com/vercel/next.js/pull/73274\n *\n * @param original - The original response to clone.\n * @returns A tuple containing two independent clones of the original response.\n */\nexport function cloneResponse(original: Response): [Response, Response] {\n // If the response has no body, then we can just return the original response\n // twice because it's immutable.\n if (!original.body) {\n return [original, original]\n }\n\n const [body1, body2] = original.body.tee()\n\n const cloned1 = new Response(body1, {\n status: original.status,\n statusText: original.statusText,\n headers: original.headers,\n })\n\n Object.defineProperty(cloned1, 'url', {\n value: original.url,\n // How the original response.url behaves\n configurable: true,\n enumerable: true,\n writable: false,\n })\n\n // The Fetch Standard allows users to skip consuming the response body by\n // relying on garbage collection to release connection resources.\n // https://github.com/nodejs/undici?tab=readme-ov-file#garbage-collection\n //\n // To cancel the stream you then need to cancel both resulting branches.\n // Teeing a stream will generally lock it for the duration, preventing other\n // readers from locking it.\n // https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/tee\n\n // cloned2 is stored in a react cache and cloned for subsequent requests.\n // It is the original request, and is is garbage collected by a\n // FinalizationRegistry in Undici, but since we're tee-ing the stream\n // ourselves, we need to cancel clone1's stream (the response returned from\n // our dedupe fetch) when clone1 is reclaimed, otherwise we leak memory.\n if (registry && cloned1.body) {\n registry.register(cloned1, new WeakRef(cloned1.body))\n }\n\n const cloned2 = new Response(body2, {\n status: original.status,\n statusText: original.statusText,\n headers: original.headers,\n })\n\n Object.defineProperty(cloned2, 'url', {\n value: original.url,\n // How the original response.url behaves\n configurable: true,\n enumerable: true,\n writable: false,\n })\n\n return [cloned1, cloned2]\n}\n"],"names":["noop","registry","globalThis","FinalizationRegistry","weakRef","stream","deref","locked","cancel","then","cloneResponse","original","body","body1","body2","tee","cloned1","Response","status","statusText","headers","Object","defineProperty","value","url","configurable","enumerable","writable","register","WeakRef","cloned2"],"mappings":";;;;AAAA,MAAMA,OAAO,KAAO;AAEpB,IAAIC;AAEJ,IAAIC,WAAWC,oBAAoB,EAAE;IACnCF,WAAW,IAAIE,qBAAqB,CAACC;QACnC,MAAMC,SAASD,QAAQE,KAAK;QAC5B,IAAID,UAAU,CAACA,OAAOE,MAAM,EAAE;YAC5BF,OAAOG,MAAM,CAAC,8CAA8CC,IAAI,CAACT;QACnE;IACF;AACF;AAcO,SAASU,cAAcC,QAAkB;IAC9C,6EAA6E;IAC7E,gCAAgC;IAChC,IAAI,CAACA,SAASC,IAAI,EAAE;QAClB,OAAO;YAACD;YAAUA;SAAS;IAC7B;IAEA,MAAM,CAACE,OAAOC,MAAM,GAAGH,SAASC,IAAI,CAACG,GAAG;IAExC,MAAMC,UAAU,IAAIC,SAASJ,OAAO;QAClCK,QAAQP,SAASO,MAAM;QACvBC,YAAYR,SAASQ,UAAU;QAC/BC,SAAST,SAASS,OAAO;IAC3B;IAEAC,OAAOC,cAAc,CAACN,SAAS,OAAO;QACpCO,OAAOZ,SAASa,GAAG;QACnB,wCAAwC;QACxCC,cAAc;QACdC,YAAY;QACZC,UAAU;IACZ;IAEA,yEAAyE;IACzE,iEAAiE;IACjE,yEAAyE;IACzE,EAAE;IACF,wEAAwE;IACxE,4EAA4E;IAC5E,2BAA2B;IAC3B,sEAAsE;IAEtE,yEAAyE;IACzE,+DAA+D;IAC/D,qEAAqE;IACrE,2EAA2E;IAC3E,wEAAwE;IACxE,IAAI1B,YAAYe,QAAQJ,IAAI,EAAE;QAC5BX,SAAS2B,QAAQ,CAACZ,SAAS,IAAIa,QAAQb,QAAQJ,IAAI;IACrD;IAEA,MAAMkB,UAAU,IAAIb,SAASH,OAAO;QAClCI,QAAQP,SAASO,MAAM;QACvBC,YAAYR,SAASQ,UAAU;QAC/BC,SAAST,SAASS,OAAO;IAC3B;IAEAC,OAAOC,cAAc,CAACQ,SAAS,OAAO;QACpCP,OAAOZ,SAASa,GAAG;QACnB,wCAAwC;QACxCC,cAAc;QACdC,YAAY;QACZC,UAAU;IACZ;IAEA,OAAO;QAACX;QAASc;KAAQ;AAC3B","ignoreList":[0]}}, + {"offset": {"line": 3338, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/lib/dedupe-fetch.ts"],"sourcesContent":["/**\n * Based on https://github.com/facebook/react/blob/d4e78c42a94be027b4dc7ed2659a5fddfbf9bd4e/packages/react/src/ReactFetch.js\n */\nimport * as React from 'react'\nimport { cloneResponse } from './clone-response'\nimport { InvariantError } from '../../shared/lib/invariant-error'\n\nconst simpleCacheKey = '[\"GET\",[],null,\"follow\",null,null,null,null]' // generateCacheKey(new Request('https://blank'));\n\n// Headers that should not affect deduplication\n// traceparent and tracestate are used for distributed tracing and should not affect cache keys\nconst headersToExcludeInCacheKey = new Set(['traceparent', 'tracestate'])\n\nfunction generateCacheKey(request: Request): string {\n // We pick the fields that goes into the key used to dedupe requests.\n // We don't include the `cache` field, because we end up using whatever\n // caching resulted from the first request.\n // Notably we currently don't consider non-standard (or future) options.\n // This might not be safe. TODO: warn for non-standard extensions differing.\n // IF YOU CHANGE THIS UPDATE THE simpleCacheKey ABOVE.\n\n const filteredHeaders = Array.from(request.headers.entries()).filter(\n ([key]) => !headersToExcludeInCacheKey.has(key.toLowerCase())\n )\n\n return JSON.stringify([\n request.method,\n filteredHeaders,\n request.mode,\n request.redirect,\n request.credentials,\n request.referrer,\n request.referrerPolicy,\n request.integrity,\n ])\n}\n\ntype CacheEntry = [\n key: string,\n promise: Promise,\n response: Response | null,\n]\n\nexport function createDedupeFetch(originalFetch: typeof fetch) {\n const getCacheEntries = React.cache(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- url is the cache key\n (url: string): CacheEntry[] => []\n )\n\n return function dedupeFetch(\n resource: URL | RequestInfo,\n options?: RequestInit\n ): Promise {\n if (options && options.signal) {\n // If we're passed a signal, then we assume that\n // someone else controls the lifetime of this object and opts out of\n // caching. It's effectively the opt-out mechanism.\n // Ideally we should be able to check this on the Request but\n // it always gets initialized with its own signal so we don't\n // know if it's supposed to override - unless we also override the\n // Request constructor.\n return originalFetch(resource, options)\n }\n // Normalize the Request\n let url: string\n let cacheKey: string\n if (typeof resource === 'string' && !options) {\n // Fast path.\n cacheKey = simpleCacheKey\n url = resource\n } else {\n // Normalize the request.\n // if resource is not a string or a URL (its an instance of Request)\n // then do not instantiate a new Request but instead\n // reuse the request as to not disturb the body in the event it's a ReadableStream.\n const request =\n typeof resource === 'string' || resource instanceof URL\n ? new Request(resource, options)\n : resource\n if (\n (request.method !== 'GET' && request.method !== 'HEAD') ||\n request.keepalive\n ) {\n // We currently don't dedupe requests that might have side-effects. Those\n // have to be explicitly cached. We assume that the request doesn't have a\n // body if it's GET or HEAD.\n // keepalive gets treated the same as if you passed a custom cache signal.\n return originalFetch(resource, options)\n }\n cacheKey = generateCacheKey(request)\n url = request.url\n }\n\n const cacheEntries = getCacheEntries(url)\n for (let i = 0, j = cacheEntries.length; i < j; i += 1) {\n const [key, promise] = cacheEntries[i]\n if (key === cacheKey) {\n return promise.then(() => {\n const response = cacheEntries[i][2]\n if (!response) throw new InvariantError('No cached response')\n\n // We're cloning the response using this utility because there exists\n // a bug in the undici library around response cloning. See the\n // following pull request for more details:\n // https://github.com/vercel/next.js/pull/73274\n const [cloned1, cloned2] = cloneResponse(response)\n cacheEntries[i][2] = cloned2\n return cloned1\n })\n }\n }\n\n // We pass the original arguments here in case normalizing the Request\n // doesn't include all the options in this environment.\n const promise = originalFetch(resource, options)\n const entry: CacheEntry = [cacheKey, promise, null]\n cacheEntries.push(entry)\n\n return promise.then((response) => {\n // We're cloning the response using this utility because there exists\n // a bug in the undici library around response cloning. See the\n // following pull request for more details:\n // https://github.com/vercel/next.js/pull/73274\n const [cloned1, cloned2] = cloneResponse(response)\n entry[2] = cloned2\n return cloned1\n })\n }\n}\n"],"names":["React","cloneResponse","InvariantError","simpleCacheKey","headersToExcludeInCacheKey","Set","generateCacheKey","request","filteredHeaders","Array","from","headers","entries","filter","key","has","toLowerCase","JSON","stringify","method","mode","redirect","credentials","referrer","referrerPolicy","integrity","createDedupeFetch","originalFetch","getCacheEntries","cache","url","dedupeFetch","resource","options","signal","cacheKey","URL","Request","keepalive","cacheEntries","i","j","length","promise","then","response","cloned1","cloned2","entry","push"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 3458, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/lib/detached-promise.ts"],"sourcesContent":["/**\n * A `Promise.withResolvers` implementation that exposes the `resolve` and\n * `reject` functions on a `Promise`.\n *\n * @see https://tc39.es/proposal-promise-with-resolvers/\n */\nexport class DetachedPromise {\n public readonly resolve: (value: T | PromiseLike) => void\n public readonly reject: (reason: any) => void\n public readonly promise: Promise\n\n constructor() {\n let resolve: (value: T | PromiseLike) => void\n let reject: (reason: any) => void\n\n // Create the promise and assign the resolvers to the object.\n this.promise = new Promise((res, rej) => {\n resolve = res\n reject = rej\n })\n\n // We know that resolvers is defined because the Promise constructor runs\n // synchronously.\n this.resolve = resolve!\n this.reject = reject!\n }\n}\n"],"names":["DetachedPromise","constructor","resolve","reject","promise","Promise","res","rej"],"mappings":"AAAA;;;;;CAKC,GACD;;;;AAAO,MAAMA;IAKXC,aAAc;QACZ,IAAIC;QACJ,IAAIC;QAEJ,6DAA6D;QAC7D,IAAI,CAACC,OAAO,GAAG,IAAIC,QAAW,CAACC,KAAKC;YAClCL,UAAUI;YACVH,SAASI;QACX;QAEA,yEAAyE;QACzE,iBAAiB;QACjB,IAAI,CAACL,OAAO,GAAGA;QACf,IAAI,CAACC,MAAM,GAAGA;IAChB;AACF","ignoreList":[0]}}, + {"offset": {"line": 3486, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/lib/batcher.ts"],"sourcesContent":["import type { SchedulerFn } from './scheduler'\n\nimport { DetachedPromise } from './detached-promise'\n\ntype CacheKeyFn = (\n key: K\n) => PromiseLike | C\n\ntype BatcherOptions = {\n cacheKeyFn?: CacheKeyFn\n schedulerFn?: SchedulerFn\n}\n\ntype WorkFnContext = {\n resolve: (value: V | PromiseLike) => void\n key: K\n}\n\ntype WorkFn = (context: WorkFnContext) => Promise\n\n/**\n * A wrapper for a function that will only allow one call to the function to\n * execute at a time.\n */\nexport class Batcher {\n private readonly pending = new Map>()\n\n protected constructor(\n private readonly cacheKeyFn?: CacheKeyFn,\n /**\n * A function that will be called to schedule the wrapped function to be\n * executed. This defaults to a function that will execute the function\n * immediately.\n */\n private readonly schedulerFn: SchedulerFn = (fn) => fn()\n ) {}\n\n /**\n * Creates a new instance of PendingWrapper. If the key extends a string or\n * number, the key will be used as the cache key. If the key is an object, a\n * cache key function must be provided.\n */\n public static create(\n options?: BatcherOptions\n ): Batcher\n public static create(\n options: BatcherOptions &\n Required, 'cacheKeyFn'>>\n ): Batcher\n public static create(\n options?: BatcherOptions\n ): Batcher {\n return new Batcher(options?.cacheKeyFn, options?.schedulerFn)\n }\n\n /**\n * Wraps a function in a promise that will be resolved or rejected only once\n * for a given key. This will allow multiple calls to the function to be\n * made, but only one will be executed at a time. The result of the first\n * call will be returned to all callers.\n *\n * @param key the key to use for the cache\n * @param fn the function to wrap\n * @returns a promise that resolves to the result of the function\n */\n public async batch(key: K, fn: WorkFn): Promise {\n const cacheKey = (this.cacheKeyFn ? await this.cacheKeyFn(key) : key) as C\n if (cacheKey === null) {\n return fn({ resolve: (value) => Promise.resolve(value), key })\n }\n\n const pending = this.pending.get(cacheKey)\n if (pending) return pending\n\n const { promise, resolve, reject } = new DetachedPromise()\n this.pending.set(cacheKey, promise)\n\n this.schedulerFn(async () => {\n try {\n const result = await fn({ resolve, key })\n\n // Resolving a promise multiple times is a no-op, so we can safely\n // resolve all pending promises with the same result.\n resolve(result)\n } catch (err) {\n reject(err)\n } finally {\n this.pending.delete(cacheKey)\n }\n })\n\n return promise\n }\n}\n"],"names":["DetachedPromise","Batcher","cacheKeyFn","schedulerFn","fn","pending","Map","create","options","batch","key","cacheKey","resolve","value","Promise","get","promise","reject","set","result","err","delete"],"mappings":";;;;AAEA,SAASA,eAAe,QAAQ,qBAAoB;;AAsB7C,MAAMC;IAGX,YACmBC,UAA6B,EAC9C;;;;KAIC,GACgBC,cAAiC,CAACC,KAAOA,IAAI,CAC9D;aAPiBF,UAAAA,GAAAA;aAMAC,WAAAA,GAAAA;aATFE,OAAAA,GAAU,IAAIC;IAU5B;IAcH,OAAcC,OACZC,OAA8B,EACZ;QAClB,OAAO,IAAIP,QAAiBO,WAAAA,OAAAA,KAAAA,IAAAA,QAASN,UAAU,EAAEM,WAAAA,OAAAA,KAAAA,IAAAA,QAASL,WAAW;IACvE;IAEA;;;;;;;;;GASC,GACD,MAAaM,MAAMC,GAAM,EAAEN,EAAgB,EAAc;QACvD,MAAMO,WAAY,IAAI,CAACT,UAAU,GAAG,MAAM,IAAI,CAACA,UAAU,CAACQ,OAAOA;QACjE,IAAIC,aAAa,MAAM;YACrB,OAAOP,GAAG;gBAAEQ,SAAS,CAACC,QAAUC,QAAQF,OAAO,CAACC;gBAAQH;YAAI;QAC9D;QAEA,MAAML,UAAU,IAAI,CAACA,OAAO,CAACU,GAAG,CAACJ;QACjC,IAAIN,SAAS,OAAOA;QAEpB,MAAM,EAAEW,OAAO,EAAEJ,OAAO,EAAEK,MAAM,EAAE,GAAG,IAAIjB,kOAAAA;QACzC,IAAI,CAACK,OAAO,CAACa,GAAG,CAACP,UAAUK;QAE3B,IAAI,CAACb,WAAW,CAAC;YACf,IAAI;gBACF,MAAMgB,SAAS,MAAMf,GAAG;oBAAEQ;oBAASF;gBAAI;gBAEvC,kEAAkE;gBAClE,qDAAqD;gBACrDE,QAAQO;YACV,EAAE,OAAOC,KAAK;gBACZH,OAAOG;YACT,SAAU;gBACR,IAAI,CAACf,OAAO,CAACgB,MAAM,CAACV;YACtB;QACF;QAEA,OAAOK;IACT;AACF","ignoreList":[0]}}, + {"offset": {"line": 3548, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/lib/lru-cache.ts"],"sourcesContent":["/**\n * Node in the doubly-linked list used for LRU tracking.\n * Each node represents a cache entry with bidirectional pointers.\n */\nclass LRUNode {\n public readonly key: string\n public data: T\n public size: number\n public prev: LRUNode | SentinelNode | null = null\n public next: LRUNode | SentinelNode | null = null\n\n constructor(key: string, data: T, size: number) {\n this.key = key\n this.data = data\n this.size = size\n }\n}\n\n/**\n * Sentinel node used for head/tail boundaries.\n * These nodes don't contain actual cache data but simplify list operations.\n */\nclass SentinelNode {\n public prev: LRUNode | SentinelNode | null = null\n public next: LRUNode | SentinelNode | null = null\n}\n\n/**\n * LRU (Least Recently Used) Cache implementation using a doubly-linked list\n * and hash map for O(1) operations.\n *\n * Algorithm:\n * - Uses a doubly-linked list to maintain access order (most recent at head)\n * - Hash map provides O(1) key-to-node lookup\n * - Sentinel head/tail nodes simplify edge case handling\n * - Size-based eviction supports custom size calculation functions\n *\n * Data Structure Layout:\n * HEAD <-> [most recent] <-> ... <-> [least recent] <-> TAIL\n *\n * Operations:\n * - get(): Move accessed node to head (mark as most recent)\n * - set(): Add new node at head, evict from tail if over capacity\n * - Eviction: Remove least recent node (tail.prev) when size exceeds limit\n */\nexport class LRUCache {\n private readonly cache: Map> = new Map()\n private readonly head: SentinelNode\n private readonly tail: SentinelNode\n private totalSize: number = 0\n private readonly maxSize: number\n private readonly calculateSize: ((value: T) => number) | undefined\n private readonly onEvict: ((key: string, value: T) => void) | undefined\n\n constructor(\n maxSize: number,\n calculateSize?: (value: T) => number,\n onEvict?: (key: string, value: T) => void\n ) {\n this.maxSize = maxSize\n this.calculateSize = calculateSize\n this.onEvict = onEvict\n\n // Create sentinel nodes to simplify doubly-linked list operations\n // HEAD <-> TAIL (empty list)\n this.head = new SentinelNode()\n this.tail = new SentinelNode()\n this.head.next = this.tail\n this.tail.prev = this.head\n }\n\n /**\n * Adds a node immediately after the head (marks as most recently used).\n * Used when inserting new items or when an item is accessed.\n * PRECONDITION: node must be disconnected (prev/next should be null)\n */\n private addToHead(node: LRUNode): void {\n node.prev = this.head\n node.next = this.head.next\n // head.next is always non-null (points to tail or another node)\n this.head.next!.prev = node\n this.head.next = node\n }\n\n /**\n * Removes a node from its current position in the doubly-linked list.\n * Updates the prev/next pointers of adjacent nodes to maintain list integrity.\n * PRECONDITION: node must be connected (prev/next are non-null)\n */\n private removeNode(node: LRUNode): void {\n // Connected nodes always have non-null prev/next\n node.prev!.next = node.next\n node.next!.prev = node.prev\n }\n\n /**\n * Moves an existing node to the head position (marks as most recently used).\n * This is the core LRU operation - accessed items become most recent.\n */\n private moveToHead(node: LRUNode): void {\n this.removeNode(node)\n this.addToHead(node)\n }\n\n /**\n * Removes and returns the least recently used node (the one before tail).\n * This is called during eviction when the cache exceeds capacity.\n * PRECONDITION: cache is not empty (ensured by caller)\n */\n private removeTail(): LRUNode {\n const lastNode = this.tail.prev as LRUNode\n // tail.prev is always non-null and always LRUNode when cache is not empty\n this.removeNode(lastNode)\n return lastNode\n }\n\n /**\n * Sets a key-value pair in the cache.\n * If the key exists, updates the value and moves to head.\n * If new, adds at head and evicts from tail if necessary.\n *\n * Time Complexity:\n * - O(1) for uniform item sizes\n * - O(k) where k is the number of items evicted (can be O(N) for variable sizes)\n */\n public set(key: string, value: T): void {\n const size = this.calculateSize?.(value) ?? 1\n if (size > this.maxSize) {\n console.warn('Single item size exceeds maxSize')\n return\n }\n\n const existing = this.cache.get(key)\n if (existing) {\n // Update existing node: adjust size and move to head (most recent)\n existing.data = value\n this.totalSize = this.totalSize - existing.size + size\n existing.size = size\n this.moveToHead(existing)\n } else {\n // Add new node at head (most recent position)\n const newNode = new LRUNode(key, value, size)\n this.cache.set(key, newNode)\n this.addToHead(newNode)\n this.totalSize += size\n }\n\n // Evict least recently used items until under capacity\n while (this.totalSize > this.maxSize && this.cache.size > 0) {\n const tail = this.removeTail()\n this.cache.delete(tail.key)\n this.totalSize -= tail.size\n this.onEvict?.(tail.key, tail.data)\n }\n }\n\n /**\n * Checks if a key exists in the cache.\n * This is a pure query operation - does NOT update LRU order.\n *\n * Time Complexity: O(1)\n */\n public has(key: string): boolean {\n return this.cache.has(key)\n }\n\n /**\n * Retrieves a value by key and marks it as most recently used.\n * Moving to head maintains the LRU property for future evictions.\n *\n * Time Complexity: O(1)\n */\n public get(key: string): T | undefined {\n const node = this.cache.get(key)\n if (!node) return undefined\n\n // Mark as most recently used by moving to head\n this.moveToHead(node)\n\n return node.data\n }\n\n /**\n * Returns an iterator over the cache entries. The order is outputted in the\n * order of most recently used to least recently used.\n */\n public *[Symbol.iterator](): IterableIterator<[string, T]> {\n let current = this.head.next\n while (current && current !== this.tail) {\n // Between head and tail, current is always LRUNode\n const node = current as LRUNode\n yield [node.key, node.data]\n current = current.next\n }\n }\n\n /**\n * Removes a specific key from the cache.\n * Updates both the hash map and doubly-linked list.\n *\n * Note: This is an explicit removal and does NOT trigger the `onEvict`\n * callback. Use this for intentional deletions where eviction tracking\n * is not needed.\n *\n * Time Complexity: O(1)\n */\n public remove(key: string): void {\n const node = this.cache.get(key)\n if (!node) return\n\n this.removeNode(node)\n this.cache.delete(key)\n this.totalSize -= node.size\n }\n\n /**\n * Returns the number of items in the cache.\n */\n public get size(): number {\n return this.cache.size\n }\n\n /**\n * Returns the current total size of all cached items.\n * This uses the custom size calculation if provided.\n */\n public get currentSize(): number {\n return this.totalSize\n }\n}\n"],"names":["LRUNode","constructor","key","data","size","prev","next","SentinelNode","LRUCache","maxSize","calculateSize","onEvict","cache","Map","totalSize","head","tail","addToHead","node","removeNode","moveToHead","removeTail","lastNode","set","value","console","warn","existing","get","newNode","delete","has","undefined","Symbol","iterator","current","remove","currentSize"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 3727, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/lib/picocolors.ts"],"sourcesContent":["// ISC License\n\n// Copyright (c) 2021 Alexey Raspopov, Kostiantyn Denysov, Anton Verinov\n\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n//\n// https://github.com/alexeyraspopov/picocolors/blob/b6261487e7b81aaab2440e397a356732cad9e342/picocolors.js#L1\n\nconst { env, stdout } = globalThis?.process ?? {}\n\nconst enabled =\n env &&\n !env.NO_COLOR &&\n (env.FORCE_COLOR || (stdout?.isTTY && !env.CI && env.TERM !== 'dumb'))\n\nconst replaceClose = (\n str: string,\n close: string,\n replace: string,\n index: number\n): string => {\n const start = str.substring(0, index) + replace\n const end = str.substring(index + close.length)\n const nextIndex = end.indexOf(close)\n return ~nextIndex\n ? start + replaceClose(end, close, replace, nextIndex)\n : start + end\n}\n\nconst formatter = (open: string, close: string, replace = open) => {\n if (!enabled) return String\n return (input: string) => {\n const string = '' + input\n const index = string.indexOf(close, open.length)\n return ~index\n ? open + replaceClose(string, close, replace, index) + close\n : open + string + close\n }\n}\n\nexport const reset = enabled ? (s: string) => `\\x1b[0m${s}\\x1b[0m` : String\nexport const bold = formatter('\\x1b[1m', '\\x1b[22m', '\\x1b[22m\\x1b[1m')\nexport const dim = formatter('\\x1b[2m', '\\x1b[22m', '\\x1b[22m\\x1b[2m')\nexport const italic = formatter('\\x1b[3m', '\\x1b[23m')\nexport const underline = formatter('\\x1b[4m', '\\x1b[24m')\nexport const inverse = formatter('\\x1b[7m', '\\x1b[27m')\nexport const hidden = formatter('\\x1b[8m', '\\x1b[28m')\nexport const strikethrough = formatter('\\x1b[9m', '\\x1b[29m')\nexport const black = formatter('\\x1b[30m', '\\x1b[39m')\nexport const red = formatter('\\x1b[31m', '\\x1b[39m')\nexport const green = formatter('\\x1b[32m', '\\x1b[39m')\nexport const yellow = formatter('\\x1b[33m', '\\x1b[39m')\nexport const blue = formatter('\\x1b[34m', '\\x1b[39m')\nexport const magenta = formatter('\\x1b[35m', '\\x1b[39m')\nexport const purple = formatter('\\x1b[38;2;173;127;168m', '\\x1b[39m')\nexport const cyan = formatter('\\x1b[36m', '\\x1b[39m')\nexport const white = formatter('\\x1b[37m', '\\x1b[39m')\nexport const gray = formatter('\\x1b[90m', '\\x1b[39m')\nexport const bgBlack = formatter('\\x1b[40m', '\\x1b[49m')\nexport const bgRed = formatter('\\x1b[41m', '\\x1b[49m')\nexport const bgGreen = formatter('\\x1b[42m', '\\x1b[49m')\nexport const bgYellow = formatter('\\x1b[43m', '\\x1b[49m')\nexport const bgBlue = formatter('\\x1b[44m', '\\x1b[49m')\nexport const bgMagenta = formatter('\\x1b[45m', '\\x1b[49m')\nexport const bgCyan = formatter('\\x1b[46m', '\\x1b[49m')\nexport const bgWhite = formatter('\\x1b[47m', '\\x1b[49m')\n"],"names":["globalThis","env","stdout","process","enabled","NO_COLOR","FORCE_COLOR","isTTY","CI","TERM","replaceClose","str","close","replace","index","start","substring","end","length","nextIndex","indexOf","formatter","open","String","input","string","reset","s","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","purple","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,cAAc;AAEd,wEAAwE;AAExE,2EAA2E;AAC3E,yEAAyE;AACzE,oEAAoE;AAEpE,2EAA2E;AAC3E,mEAAmE;AACnE,0EAA0E;AAC1E,yEAAyE;AACzE,wEAAwE;AACxE,0EAA0E;AAC1E,iEAAiE;AACjE,EAAE;AACF,8GAA8G;IAEtFA;AAAxB,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAE,GAAGF,CAAAA,CAAAA,cAAAA,UAAAA,KAAAA,OAAAA,KAAAA,IAAAA,YAAYG,OAAO,KAAI,CAAC;AAEhD,MAAMC,UACJH,OACA,CAACA,IAAII,QAAQ,IACZJ,CAAAA,IAAIK,WAAW,IAAKJ,CAAAA,UAAAA,OAAAA,KAAAA,IAAAA,OAAQK,KAAK,KAAI,CAACN,IAAIO,EAAE,IAAIP,IAAIQ,IAAI,KAAK,MAAM;AAEtE,MAAMC,eAAe,CACnBC,KACAC,OACAC,SACAC;IAEA,MAAMC,QAAQJ,IAAIK,SAAS,CAAC,GAAGF,SAASD;IACxC,MAAMI,MAAMN,IAAIK,SAAS,CAACF,QAAQF,MAAMM,MAAM;IAC9C,MAAMC,YAAYF,IAAIG,OAAO,CAACR;IAC9B,OAAO,CAACO,YACJJ,QAAQL,aAAaO,KAAKL,OAAOC,SAASM,aAC1CJ,QAAQE;AACd;AAEA,MAAMI,YAAY,CAACC,MAAcV,OAAeC,UAAUS,IAAI;IAC5D,IAAI,CAAClB,SAAS,OAAOmB;IACrB,OAAO,CAACC;QACN,MAAMC,SAAS,KAAKD;QACpB,MAAMV,QAAQW,OAAOL,OAAO,CAACR,OAAOU,KAAKJ,MAAM;QAC/C,OAAO,CAACJ,QACJQ,OAAOZ,aAAae,QAAQb,OAAOC,SAASC,SAASF,QACrDU,OAAOG,SAASb;IACtB;AACF;AAEO,MAAMc,QAAQtB,UAAU,CAACuB,IAAc,CAAC,OAAO,EAAEA,EAAE,OAAO,CAAC,GAAGJ,OAAM;AACpE,MAAMK,OAAOP,UAAU,WAAW,YAAY,mBAAkB;AAChE,MAAMQ,MAAMR,UAAU,WAAW,YAAY,mBAAkB;AAC/D,MAAMS,SAAST,UAAU,WAAW,YAAW;AAC/C,MAAMU,YAAYV,UAAU,WAAW,YAAW;AAClD,MAAMW,UAAUX,UAAU,WAAW,YAAW;AAChD,MAAMY,SAASZ,UAAU,WAAW,YAAW;AAC/C,MAAMa,gBAAgBb,UAAU,WAAW,YAAW;AACtD,MAAMc,QAAQd,UAAU,YAAY,YAAW;AAC/C,MAAMe,MAAMf,UAAU,YAAY,YAAW;AAC7C,MAAMgB,QAAQhB,UAAU,YAAY,YAAW;AAC/C,MAAMiB,SAASjB,UAAU,YAAY,YAAW;AAChD,MAAMkB,OAAOlB,UAAU,YAAY,YAAW;AAC9C,MAAMmB,UAAUnB,UAAU,YAAY,YAAW;AACjD,MAAMoB,SAASpB,UAAU,0BAA0B,YAAW;AAC9D,MAAMqB,OAAOrB,UAAU,YAAY,YAAW;AAC9C,MAAMsB,QAAQtB,UAAU,YAAY,YAAW;AAC/C,MAAMuB,OAAOvB,UAAU,YAAY,YAAW;AAC9C,MAAMwB,UAAUxB,UAAU,YAAY,YAAW;AACjD,MAAMyB,QAAQzB,UAAU,YAAY,YAAW;AAC/C,MAAM0B,UAAU1B,UAAU,YAAY,YAAW;AACjD,MAAM2B,WAAW3B,UAAU,YAAY,YAAW;AAClD,MAAM4B,SAAS5B,UAAU,YAAY,YAAW;AAChD,MAAM6B,YAAY7B,UAAU,YAAY,YAAW;AACnD,MAAM8B,SAAS9B,UAAU,YAAY,YAAW;AAChD,MAAM+B,UAAU/B,UAAU,YAAY,YAAW","ignoreList":[0]}}, + {"offset": {"line": 3842, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/build/output/log.ts"],"sourcesContent":["import { bold, green, magenta, red, yellow, white } from '../../lib/picocolors'\nimport { LRUCache } from '../../server/lib/lru-cache'\n\nexport const prefixes = {\n wait: white(bold('○')),\n error: red(bold('⨯')),\n warn: yellow(bold('⚠')),\n ready: '▲', // no color\n info: white(bold(' ')),\n event: green(bold('✓')),\n trace: magenta(bold('»')),\n} as const\n\nconst LOGGING_METHOD = {\n log: 'log',\n warn: 'warn',\n error: 'error',\n} as const\n\nfunction prefixedLog(prefixType: keyof typeof prefixes, ...message: any[]) {\n if ((message[0] === '' || message[0] === undefined) && message.length === 1) {\n message.shift()\n }\n\n const consoleMethod: keyof typeof LOGGING_METHOD =\n prefixType in LOGGING_METHOD\n ? LOGGING_METHOD[prefixType as keyof typeof LOGGING_METHOD]\n : 'log'\n\n const prefix = prefixes[prefixType]\n // If there's no message, don't print the prefix but a new line\n if (message.length === 0) {\n console[consoleMethod]('')\n } else {\n // Ensure if there's ANSI escape codes it's concatenated into one string.\n // Chrome DevTool can only handle color if it's in one string.\n if (message.length === 1 && typeof message[0] === 'string') {\n console[consoleMethod](prefix + ' ' + message[0])\n } else {\n console[consoleMethod](prefix, ...message)\n }\n }\n}\n\nexport function bootstrap(message: string) {\n console.log(message)\n}\n\nexport function wait(...message: any[]) {\n prefixedLog('wait', ...message)\n}\n\nexport function error(...message: any[]) {\n prefixedLog('error', ...message)\n}\n\nexport function warn(...message: any[]) {\n prefixedLog('warn', ...message)\n}\n\nexport function ready(...message: any[]) {\n prefixedLog('ready', ...message)\n}\n\nexport function info(...message: any[]) {\n prefixedLog('info', ...message)\n}\n\nexport function event(...message: any[]) {\n prefixedLog('event', ...message)\n}\n\nexport function trace(...message: any[]) {\n prefixedLog('trace', ...message)\n}\n\nconst warnOnceCache = new LRUCache(10_000, (value) => value.length)\nexport function warnOnce(...message: any[]) {\n const key = message.join(' ')\n if (!warnOnceCache.has(key)) {\n warnOnceCache.set(key, key)\n warn(...message)\n }\n}\n\nconst errorOnceCache = new LRUCache(10_000, (value) => value.length)\nexport function errorOnce(...message: any[]) {\n const key = message.join(' ')\n if (!errorOnceCache.has(key)) {\n errorOnceCache.set(key, key)\n error(...message)\n }\n}\n"],"names":["bold","green","magenta","red","yellow","white","LRUCache","prefixes","wait","error","warn","ready","info","event","trace","LOGGING_METHOD","log","prefixedLog","prefixType","message","undefined","length","shift","consoleMethod","prefix","console","bootstrap","warnOnceCache","value","warnOnce","key","join","has","set","errorOnceCache","errorOnce"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,IAAI,EAAEC,KAAK,EAAEC,OAAO,EAAEC,GAAG,EAAEC,MAAM,EAAEC,KAAK,QAAQ,uBAAsB;AAC/E,SAASC,QAAQ,QAAQ,6BAA4B;;;AAE9C,MAAMC,WAAW;IACtBC,UAAMH,+MAAAA,MAAML,8MAAAA,EAAK;IACjBS,WAAON,6MAAAA,MAAIH,8MAAAA,EAAK;IAChBU,UAAMN,gNAAAA,MAAOJ,8MAAAA,EAAK;IAClBW,OAAO;IACPC,UAAMP,+MAAAA,MAAML,8MAAAA,EAAK;IACjBa,WAAOZ,+MAAAA,MAAMD,8MAAAA,EAAK;IAClBc,WAAOZ,iNAAAA,MAAQF,8MAAAA,EAAK;AACtB,EAAU;AAEV,MAAMe,iBAAiB;IACrBC,KAAK;IACLN,MAAM;IACND,OAAO;AACT;AAEA,SAASQ,YAAYC,UAAiC,EAAE,GAAGC,OAAc;IACvE,IAAKA,CAAAA,OAAO,CAAC,EAAE,KAAK,MAAMA,OAAO,CAAC,EAAE,KAAKC,SAAQ,KAAMD,QAAQE,MAAM,KAAK,GAAG;QAC3EF,QAAQG,KAAK;IACf;IAEA,MAAMC,gBACJL,cAAcH,iBACVA,cAAc,CAACG,WAA0C,GACzD;IAEN,MAAMM,SAASjB,QAAQ,CAACW,WAAW;IACnC,+DAA+D;IAC/D,IAAIC,QAAQE,MAAM,KAAK,GAAG;QACxBI,OAAO,CAACF,cAAc,CAAC;IACzB,OAAO;QACL,yEAAyE;QACzE,8DAA8D;QAC9D,IAAIJ,QAAQE,MAAM,KAAK,KAAK,OAAOF,OAAO,CAAC,EAAE,KAAK,UAAU;YAC1DM,OAAO,CAACF,cAAc,CAACC,SAAS,MAAML,OAAO,CAAC,EAAE;QAClD,OAAO;YACLM,OAAO,CAACF,cAAc,CAACC,WAAWL;QACpC;IACF;AACF;AAEO,SAASO,UAAUP,OAAe;IACvCM,QAAQT,GAAG,CAACG;AACd;AAEO,SAASX,KAAK,GAAGW,OAAc;IACpCF,YAAY,WAAWE;AACzB;AAEO,SAASV,MAAM,GAAGU,OAAc;IACrCF,YAAY,YAAYE;AAC1B;AAEO,SAAST,KAAK,GAAGS,OAAc;IACpCF,YAAY,WAAWE;AACzB;AAEO,SAASR,MAAM,GAAGQ,OAAc;IACrCF,YAAY,YAAYE;AAC1B;AAEO,SAASP,KAAK,GAAGO,OAAc;IACpCF,YAAY,WAAWE;AACzB;AAEO,SAASN,MAAM,GAAGM,OAAc;IACrCF,YAAY,YAAYE;AAC1B;AAEO,SAASL,MAAM,GAAGK,OAAc;IACrCF,YAAY,YAAYE;AAC1B;AAEA,MAAMQ,gBAAgB,IAAIrB,8NAAAA,CAAiB,OAAQ,CAACsB,QAAUA,MAAMP,MAAM;AACnE,SAASQ,SAAS,GAAGV,OAAc;IACxC,MAAMW,MAAMX,QAAQY,IAAI,CAAC;IACzB,IAAI,CAACJ,cAAcK,GAAG,CAACF,MAAM;QAC3BH,cAAcM,GAAG,CAACH,KAAKA;QACvBpB,QAAQS;IACV;AACF;AAEA,MAAMe,iBAAiB,IAAI5B,8NAAAA,CAAiB,OAAQ,CAACsB,QAAUA,MAAMP,MAAM;AACpE,SAASc,UAAU,GAAGhB,OAAc;IACzC,MAAMW,MAAMX,QAAQY,IAAI,CAAC;IACzB,IAAI,CAACG,eAAeF,GAAG,CAACF,MAAM;QAC5BI,eAAeD,GAAG,CAACH,KAAKA;QACxBrB,SAASU;IACX;AACF","ignoreList":[0]}}, + {"offset": {"line": 3947, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/response-cache/types.ts"],"sourcesContent":["import type { OutgoingHttpHeaders } from 'http'\nimport type RenderResult from '../render-result'\nimport type { CacheControl, Revalidate } from '../lib/cache-control'\nimport type { RouteKind } from '../route-kind'\n\nexport interface ResponseCacheBase {\n get(\n key: string | null,\n responseGenerator: ResponseGenerator,\n context: {\n isOnDemandRevalidate?: boolean\n isPrefetch?: boolean\n incrementalCache: IncrementalCache\n /**\n * This is a hint to the cache to help it determine what kind of route\n * this is so it knows where to look up the cache entry from. If not\n * provided it will test the filesystem to check.\n */\n routeKind: RouteKind\n\n /**\n * True if this is a fallback request.\n */\n isFallback?: boolean\n\n /**\n * True if the route is enabled for PPR.\n */\n isRoutePPREnabled?: boolean\n }\n ): Promise\n}\n\n// The server components HMR cache might store other data as well in the future,\n// at which point this should be refactored to a discriminated union type.\nexport interface ServerComponentsHmrCache {\n get(key: string): CachedFetchData | undefined\n set(key: string, data: CachedFetchData): void\n}\n\nexport type CachedFetchData = {\n headers: Record\n body: string\n url: string\n status?: number\n}\n\nexport const enum CachedRouteKind {\n APP_PAGE = 'APP_PAGE',\n APP_ROUTE = 'APP_ROUTE',\n PAGES = 'PAGES',\n FETCH = 'FETCH',\n REDIRECT = 'REDIRECT',\n IMAGE = 'IMAGE',\n}\n\nexport interface CachedFetchValue {\n kind: CachedRouteKind.FETCH\n data: CachedFetchData\n // tags are only present with file-system-cache\n // fetch cache stores tags outside of cache entry\n tags?: string[]\n revalidate: number\n}\n\nexport interface CachedRedirectValue {\n kind: CachedRouteKind.REDIRECT\n props: Object\n}\n\nexport interface CachedAppPageValue {\n kind: CachedRouteKind.APP_PAGE\n // this needs to be a RenderResult so since renderResponse\n // expects that type instead of a string\n html: RenderResult\n rscData: Buffer | undefined\n status: number | undefined\n postponed: string | undefined\n headers: OutgoingHttpHeaders | undefined\n segmentData: Map | undefined\n}\n\nexport interface CachedPageValue {\n kind: CachedRouteKind.PAGES\n // this needs to be a RenderResult so since renderResponse\n // expects that type instead of a string\n html: RenderResult\n pageData: Object\n status: number | undefined\n headers: OutgoingHttpHeaders | undefined\n}\n\nexport interface CachedRouteValue {\n kind: CachedRouteKind.APP_ROUTE\n // this needs to be a RenderResult so since renderResponse\n // expects that type instead of a string\n body: Buffer\n status: number\n headers: OutgoingHttpHeaders\n}\n\nexport interface CachedImageValue {\n kind: CachedRouteKind.IMAGE\n etag: string\n upstreamEtag: string\n buffer: Buffer\n extension: string\n isMiss?: boolean\n isStale?: boolean\n}\n\nexport interface IncrementalCachedAppPageValue {\n kind: CachedRouteKind.APP_PAGE\n // this needs to be a string since the cache expects to store\n // the string value\n html: string\n rscData: Buffer | undefined\n headers: OutgoingHttpHeaders | undefined\n postponed: string | undefined\n status: number | undefined\n segmentData: Map | undefined\n}\n\nexport interface IncrementalCachedPageValue {\n kind: CachedRouteKind.PAGES\n // this needs to be a string since the cache expects to store\n // the string value\n html: string\n pageData: Object\n headers: OutgoingHttpHeaders | undefined\n status: number | undefined\n}\n\nexport interface IncrementalResponseCacheEntry {\n cacheControl?: CacheControl\n /**\n * timestamp in milliseconds to revalidate after\n */\n revalidateAfter?: Revalidate\n /**\n * `-1` here dictates a blocking revalidate should be used\n */\n isStale?: boolean | -1\n isMiss?: boolean\n value: Exclude | null\n}\n\nexport interface IncrementalFetchCacheEntry {\n /**\n * `-1` here dictates a blocking revalidate should be used\n */\n isStale?: boolean | -1\n value: CachedFetchValue\n}\n\nexport type IncrementalCacheEntry =\n | IncrementalResponseCacheEntry\n | IncrementalFetchCacheEntry\n\nexport type IncrementalCacheValue =\n | CachedRedirectValue\n | IncrementalCachedPageValue\n | IncrementalCachedAppPageValue\n | CachedImageValue\n | CachedFetchValue\n | CachedRouteValue\n\nexport type ResponseCacheValue =\n | CachedRedirectValue\n | CachedPageValue\n | CachedAppPageValue\n | CachedImageValue\n | CachedRouteValue\n\nexport type ResponseCacheEntry = {\n cacheControl?: CacheControl\n value: ResponseCacheValue | null\n isStale?: boolean | -1\n isMiss?: boolean\n}\n\n/**\n * @param hasResolved whether the responseGenerator has resolved it's promise\n * @param previousCacheEntry the previous cache entry if it exists or the current\n */\nexport type ResponseGenerator = (state: {\n hasResolved: boolean\n previousCacheEntry?: IncrementalResponseCacheEntry | null\n isRevalidating?: boolean\n span?: any\n\n /**\n * When true, this indicates that the response generator is being called in a\n * context where the response must be generated statically.\n *\n * CRITICAL: This should only currently be used when revalidating due to a\n * dynamic RSC request.\n */\n forceStaticRender?: boolean\n}) => Promise\n\nexport const enum IncrementalCacheKind {\n APP_PAGE = 'APP_PAGE',\n APP_ROUTE = 'APP_ROUTE',\n PAGES = 'PAGES',\n FETCH = 'FETCH',\n IMAGE = 'IMAGE',\n}\n\nexport interface GetIncrementalFetchCacheContext {\n kind: IncrementalCacheKind.FETCH\n revalidate?: Revalidate\n fetchUrl?: string\n fetchIdx?: number\n tags?: string[]\n softTags?: string[]\n}\n\nexport interface GetIncrementalResponseCacheContext {\n kind: Exclude\n\n /**\n * True if the route is enabled for PPR.\n */\n isRoutePPREnabled?: boolean\n\n /**\n * True if this is a fallback request.\n */\n isFallback: boolean\n}\n\nexport interface SetIncrementalFetchCacheContext {\n fetchCache: true\n fetchUrl?: string\n fetchIdx?: number\n tags?: string[]\n isImplicitBuildTimeCache?: boolean\n}\n\nexport interface SetIncrementalResponseCacheContext {\n fetchCache?: false\n cacheControl?: CacheControl\n\n /**\n * True if the route is enabled for PPR.\n */\n isRoutePPREnabled?: boolean\n\n /**\n * True if this is a fallback request.\n */\n isFallback?: boolean\n}\n\nexport interface IncrementalResponseCache {\n get(\n cacheKey: string,\n ctx: GetIncrementalResponseCacheContext\n ): Promise\n set(\n key: string,\n data: Exclude | null,\n ctx: SetIncrementalResponseCacheContext\n ): Promise\n}\n\nexport interface IncrementalCache extends IncrementalResponseCache {\n get(\n cacheKey: string,\n ctx: GetIncrementalFetchCacheContext\n ): Promise\n get(\n cacheKey: string,\n ctx: GetIncrementalResponseCacheContext\n ): Promise\n set(\n key: string,\n data: CachedFetchValue | null,\n ctx: SetIncrementalFetchCacheContext\n ): Promise\n set(\n key: string,\n data: Exclude | null,\n ctx: SetIncrementalResponseCacheContext\n ): Promise\n revalidateTag(\n tags: string | string[],\n durations?: { expire?: number }\n ): Promise\n}\n"],"names":["CachedRouteKind","IncrementalCacheKind"],"mappings":";;;;;;AA+CO,IAAWA,kBAAAA,WAAAA,GAAAA,SAAAA,eAAAA;;;;;;;WAAAA;MAOjB;AAmJM,IAAWC,uBAAAA,WAAAA,GAAAA,SAAAA,oBAAAA;;;;;;WAAAA;MAMjB","ignoreList":[0]}}, + {"offset": {"line": 3974, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/stream-utils/encoded-tags.ts"],"sourcesContent":["export const ENCODED_TAGS = {\n // opening tags do not have the closing `>` since they can contain other attributes such as ``\n OPENING: {\n // \n HEAD: new Uint8Array([60, 47, 104, 101, 97, 100, 62]),\n // \n BODY: new Uint8Array([60, 47, 98, 111, 100, 121, 62]),\n // \n HTML: new Uint8Array([60, 47, 104, 116, 109, 108, 62]),\n // \n BODY_AND_HTML: new Uint8Array([\n 60, 47, 98, 111, 100, 121, 62, 60, 47, 104, 116, 109, 108, 62,\n ]),\n },\n META: {\n // Only the match the prefix cause the suffix can be different wether it's xml compatible or not \">\" or \"/>\"\n // a.length) return -1\n\n // start iterating through `a`\n for (let i = 0; i <= a.length - b.length; i++) {\n let completeMatch = true\n // from index `i`, iterate through `b` and check for mismatch\n for (let j = 0; j < b.length; j++) {\n // if the values do not match, then this isn't a complete match, exit `b` iteration early and iterate to next index of `a`.\n if (a[i + j] !== b[j]) {\n completeMatch = false\n break\n }\n }\n\n if (completeMatch) {\n return i\n }\n }\n\n return -1\n}\n\n/**\n * Check if two Uint8Arrays are strictly equivalent.\n */\nexport function isEquivalentUint8Arrays(a: Uint8Array, b: Uint8Array) {\n if (a.length !== b.length) return false\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false\n }\n\n return true\n}\n\n/**\n * Remove Uint8Array `b` from Uint8Array `a`.\n *\n * If `b` is not in `a`, `a` is returned unchanged.\n *\n * Otherwise, the function returns a new Uint8Array instance with size `a.length - b.length`\n */\nexport function removeFromUint8Array(a: Uint8Array, b: Uint8Array) {\n const tagIndex = indexOfUint8Array(a, b)\n if (tagIndex === 0) return a.subarray(b.length)\n if (tagIndex > -1) {\n const removed = new Uint8Array(a.length - b.length)\n removed.set(a.slice(0, tagIndex))\n removed.set(a.slice(tagIndex + b.length), tagIndex)\n return removed\n } else {\n return a\n }\n}\n"],"names":["indexOfUint8Array","a","b","length","i","completeMatch","j","isEquivalentUint8Arrays","removeFromUint8Array","tagIndex","subarray","removed","Uint8Array","set","slice"],"mappings":"AAAA;;CAEC,GACD;;;;;;;;AAAO,SAASA,kBAAkBC,CAAa,EAAEC,CAAa;IAC5D,IAAIA,EAAEC,MAAM,KAAK,GAAG,OAAO;IAC3B,IAAIF,EAAEE,MAAM,KAAK,KAAKD,EAAEC,MAAM,GAAGF,EAAEE,MAAM,EAAE,OAAO,CAAC;IAEnD,8BAA8B;IAC9B,IAAK,IAAIC,IAAI,GAAGA,KAAKH,EAAEE,MAAM,GAAGD,EAAEC,MAAM,EAAEC,IAAK;QAC7C,IAAIC,gBAAgB;QACpB,6DAA6D;QAC7D,IAAK,IAAIC,IAAI,GAAGA,IAAIJ,EAAEC,MAAM,EAAEG,IAAK;YACjC,2HAA2H;YAC3H,IAAIL,CAAC,CAACG,IAAIE,EAAE,KAAKJ,CAAC,CAACI,EAAE,EAAE;gBACrBD,gBAAgB;gBAChB;YACF;QACF;QAEA,IAAIA,eAAe;YACjB,OAAOD;QACT;IACF;IAEA,OAAO,CAAC;AACV;AAKO,SAASG,wBAAwBN,CAAa,EAAEC,CAAa;IAClE,IAAID,EAAEE,MAAM,KAAKD,EAAEC,MAAM,EAAE,OAAO;IAElC,IAAK,IAAIC,IAAI,GAAGA,IAAIH,EAAEE,MAAM,EAAEC,IAAK;QACjC,IAAIH,CAAC,CAACG,EAAE,KAAKF,CAAC,CAACE,EAAE,EAAE,OAAO;IAC5B;IAEA,OAAO;AACT;AASO,SAASI,qBAAqBP,CAAa,EAAEC,CAAa;IAC/D,MAAMO,WAAWT,kBAAkBC,GAAGC;IACtC,IAAIO,aAAa,GAAG,OAAOR,EAAES,QAAQ,CAACR,EAAEC,MAAM;IAC9C,IAAIM,WAAW,CAAC,GAAG;QACjB,MAAME,UAAU,IAAIC,WAAWX,EAAEE,MAAM,GAAGD,EAAEC,MAAM;QAClDQ,QAAQE,GAAG,CAACZ,EAAEa,KAAK,CAAC,GAAGL;QACvBE,QAAQE,GAAG,CAACZ,EAAEa,KAAK,CAACL,WAAWP,EAAEC,MAAM,GAAGM;QAC1C,OAAOE;IACT,OAAO;QACL,OAAOV;IACT;AACF","ignoreList":[0]}}, + {"offset": {"line": 4137, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/errors/constants.ts"],"sourcesContent":["export const MISSING_ROOT_TAGS_ERROR = 'NEXT_MISSING_ROOT_TAGS'\n"],"names":["MISSING_ROOT_TAGS_ERROR"],"mappings":";;;;AAAO,MAAMA,0BAA0B,yBAAwB","ignoreList":[0]}}, + {"offset": {"line": 4146, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/segment-cache/output-export-prefetch-encoding.ts"],"sourcesContent":["// In output: export mode, the build id is added to the start of the HTML\n// document, directly after the doctype declaration. During a prefetch, the\n// client performs a range request to get the build id, so it can check whether\n// the target page belongs to the same build.\n//\n// The first 64 bytes of the document are requested. The exact number isn't\n// too important; it must be larger than the build id + doctype + closing and\n// ending comment markers, but it doesn't need to match the end of the\n// comment exactly.\n//\n// Build ids are 21 bytes long in the default implementation, though this\n// can be overridden in the Next.js config. For the purposes of this check,\n// it's OK to only match the start of the id, so we'll truncate it if exceeds\n// a certain length.\n\nconst DOCTYPE_PREFIX = '' // 15 bytes\nconst MAX_BUILD_ID_LENGTH = 24\n\nfunction escapeBuildId(buildId: string) {\n // If the build id is longer than the given limit, it's OK for our purposes\n // to only match the beginning.\n const truncated = buildId.slice(0, MAX_BUILD_ID_LENGTH)\n // Replace hyphens with underscores so it doesn't break the HTML comment.\n // (Unlikely, but if this did happen it would break the whole document.)\n return truncated.replace(/-/g, '_')\n}\n\nexport function insertBuildIdComment(originalHtml: string, buildId: string) {\n if (\n // Skip if the build id contains a closing comment marker.\n buildId.includes('-->') ||\n // React always inserts a doctype at the start of the document. Skip if it\n // isn't present. Shouldn't happen; suggests an issue elsewhere.\n !originalHtml.startsWith(DOCTYPE_PREFIX)\n ) {\n // Return the original HTML unchanged. This means the document will not\n // be prefetched.\n // TODO: The build id comment is currently only used during prefetches, but\n // if we eventually use this mechanism for regular navigations, we may need\n // to error during build if we fail to insert it for some reason.\n return originalHtml\n }\n // The comment must be inserted after the doctype.\n return originalHtml.replace(\n DOCTYPE_PREFIX,\n DOCTYPE_PREFIX + ''\n )\n}\n"],"names":["DOCTYPE_PREFIX","MAX_BUILD_ID_LENGTH","escapeBuildId","buildId","truncated","slice","replace","insertBuildIdComment","originalHtml","includes","startsWith"],"mappings":";;;;AAAA,yEAAyE;AACzE,2EAA2E;AAC3E,+EAA+E;AAC/E,6CAA6C;AAC7C,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,sEAAsE;AACtE,mBAAmB;AACnB,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,6EAA6E;AAC7E,oBAAoB;AAEpB,MAAMA,iBAAiB,kBAAkB,WAAW;;AACpD,MAAMC,sBAAsB;AAE5B,SAASC,cAAcC,OAAe;IACpC,2EAA2E;IAC3E,+BAA+B;IAC/B,MAAMC,YAAYD,QAAQE,KAAK,CAAC,GAAGJ;IACnC,yEAAyE;IACzE,wEAAwE;IACxE,OAAOG,UAAUE,OAAO,CAAC,MAAM;AACjC;AAEO,SAASC,qBAAqBC,YAAoB,EAAEL,OAAe;IACxE,IACE,AACAA,QAAQM,QAAQ,CAAC,UACjB,+BAF0D,2CAEgB;IAC1E,gEAAgE;IAChE,CAACD,aAAaE,UAAU,CAACV,iBACzB;QACA,uEAAuE;QACvE,iBAAiB;QACjB,2EAA2E;QAC3E,2EAA2E;QAC3E,iEAAiE;QACjE,OAAOQ;IACT;IACA,kDAAkD;IAClD,OAAOA,aAAaF,OAAO,CACzBN,gBACAA,iBAAiB,SAASE,cAAcC,WAAW;AAEvD","ignoreList":[0]}}, + {"offset": {"line": 4193, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/app-router-headers.ts"],"sourcesContent":["export const RSC_HEADER = 'rsc' as const\nexport const ACTION_HEADER = 'next-action' as const\n// TODO: Instead of sending the full router state, we only need to send the\n// segment path. Saves bytes. Then we could also use this field for segment\n// prefetches, which also need to specify a particular segment.\nexport const NEXT_ROUTER_STATE_TREE_HEADER = 'next-router-state-tree' as const\nexport const NEXT_ROUTER_PREFETCH_HEADER = 'next-router-prefetch' as const\n// This contains the path to the segment being prefetched.\n// TODO: If we change next-router-state-tree to be a segment path, we can use\n// that instead. Then next-router-prefetch and next-router-segment-prefetch can\n// be merged into a single enum.\nexport const NEXT_ROUTER_SEGMENT_PREFETCH_HEADER =\n 'next-router-segment-prefetch' as const\nexport const NEXT_HMR_REFRESH_HEADER = 'next-hmr-refresh' as const\nexport const NEXT_HMR_REFRESH_HASH_COOKIE = '__next_hmr_refresh_hash__' as const\nexport const NEXT_URL = 'next-url' as const\nexport const RSC_CONTENT_TYPE_HEADER = 'text/x-component' as const\n\nexport const FLIGHT_HEADERS = [\n RSC_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n NEXT_ROUTER_PREFETCH_HEADER,\n NEXT_HMR_REFRESH_HEADER,\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER,\n] as const\n\nexport const NEXT_RSC_UNION_QUERY = '_rsc' as const\n\nexport const NEXT_ROUTER_STALE_TIME_HEADER = 'x-nextjs-stale-time' as const\nexport const NEXT_DID_POSTPONE_HEADER = 'x-nextjs-postponed' as const\nexport const NEXT_REWRITTEN_PATH_HEADER = 'x-nextjs-rewritten-path' as const\nexport const NEXT_REWRITTEN_QUERY_HEADER = 'x-nextjs-rewritten-query' as const\nexport const NEXT_IS_PRERENDER_HEADER = 'x-nextjs-prerender' as const\nexport const NEXT_ACTION_NOT_FOUND_HEADER = 'x-nextjs-action-not-found' as const\nexport const NEXT_REQUEST_ID_HEADER = 'x-nextjs-request-id' as const\nexport const NEXT_HTML_REQUEST_ID_HEADER = 'x-nextjs-html-request-id' as const\n\n// TODO: Should this include nextjs in the name, like the others?\nexport const NEXT_ACTION_REVALIDATED_HEADER = 'x-action-revalidated' as const\n"],"names":["RSC_HEADER","ACTION_HEADER","NEXT_ROUTER_STATE_TREE_HEADER","NEXT_ROUTER_PREFETCH_HEADER","NEXT_ROUTER_SEGMENT_PREFETCH_HEADER","NEXT_HMR_REFRESH_HEADER","NEXT_HMR_REFRESH_HASH_COOKIE","NEXT_URL","RSC_CONTENT_TYPE_HEADER","FLIGHT_HEADERS","NEXT_RSC_UNION_QUERY","NEXT_ROUTER_STALE_TIME_HEADER","NEXT_DID_POSTPONE_HEADER","NEXT_REWRITTEN_PATH_HEADER","NEXT_REWRITTEN_QUERY_HEADER","NEXT_IS_PRERENDER_HEADER","NEXT_ACTION_NOT_FOUND_HEADER","NEXT_REQUEST_ID_HEADER","NEXT_HTML_REQUEST_ID_HEADER","NEXT_ACTION_REVALIDATED_HEADER"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAMA,aAAa,MAAc;AACjC,MAAMC,gBAAgB,cAAsB;AAI5C,MAAMC,gCAAgC,yBAAiC;AACvE,MAAMC,8BAA8B,uBAA+B;AAKnE,MAAMC,sCACX,+BAAuC;AAClC,MAAMC,0BAA0B,mBAA2B;AAC3D,MAAMC,+BAA+B,4BAAoC;AACzE,MAAMC,WAAW,WAAmB;AACpC,MAAMC,0BAA0B,mBAA2B;AAE3D,MAAMC,iBAAiB;IAC5BT;IACAE;IACAC;IACAE;IACAD;CACD,CAAS;AAEH,MAAMM,uBAAuB,OAAe;AAE5C,MAAMC,gCAAgC,sBAA8B;AACpE,MAAMC,2BAA2B,qBAA6B;AAC9D,MAAMC,6BAA6B,0BAAkC;AACrE,MAAMC,8BAA8B,2BAAmC;AACvE,MAAMC,2BAA2B,qBAA6B;AAC9D,MAAMC,+BAA+B,4BAAoC;AACzE,MAAMC,yBAAyB,sBAA8B;AAC7D,MAAMC,8BAA8B,2BAAmC;AAGvE,MAAMC,iCAAiC,uBAA+B","ignoreList":[0]}}, + {"offset": {"line": 4265, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/hash.ts"],"sourcesContent":["// http://www.cse.yorku.ca/~oz/hash.html\n// More specifically, 32-bit hash via djbxor\n// (ref: https://gist.github.com/eplawless/52813b1d8ad9af510d85?permalink_comment_id=3367765#gistcomment-3367765)\n// This is due to number type differences between rust for turbopack to js number types,\n// where rust does not have easy way to repreesnt js's 53-bit float number type for the matching\n// overflow behavior. This is more `correct` in terms of having canonical hash across different runtime / implementation\n// as can gaurantee determinstic output from 32bit hash.\nexport function djb2Hash(str: string) {\n let hash = 5381\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i)\n hash = ((hash << 5) + hash + char) & 0xffffffff\n }\n return hash >>> 0\n}\n\nexport function hexHash(str: string) {\n return djb2Hash(str).toString(36).slice(0, 5)\n}\n"],"names":["djb2Hash","str","hash","i","length","char","charCodeAt","hexHash","toString","slice"],"mappings":"AAAA,wCAAwC;AACxC,4CAA4C;AAC5C,iHAAiH;AACjH,wFAAwF;AACxF,gGAAgG;AAChG,wHAAwH;AACxH,wDAAwD;;;;;;;AACjD,SAASA,SAASC,GAAW;IAClC,IAAIC,OAAO;IACX,IAAK,IAAIC,IAAI,GAAGA,IAAIF,IAAIG,MAAM,EAAED,IAAK;QACnC,MAAME,OAAOJ,IAAIK,UAAU,CAACH;QAC5BD,OAASA,CAAAA,QAAQ,CAAA,IAAKA,OAAOG,OAAQ;IACvC;IACA,OAAOH,SAAS;AAClB;AAEO,SAASK,QAAQN,GAAW;IACjC,OAAOD,SAASC,KAAKO,QAAQ,CAAC,IAAIC,KAAK,CAAC,GAAG;AAC7C","ignoreList":[0]}}, + {"offset": {"line": 4293, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/cache-busting-search-param.ts"],"sourcesContent":["import { hexHash } from '../../hash'\n\nexport function computeCacheBustingSearchParam(\n prefetchHeader: '1' | '2' | '0' | undefined,\n segmentPrefetchHeader: string | string[] | undefined,\n stateTreeHeader: string | string[] | undefined,\n nextUrlHeader: string | string[] | undefined\n): string {\n if (\n (prefetchHeader === undefined || prefetchHeader === '0') &&\n segmentPrefetchHeader === undefined &&\n stateTreeHeader === undefined &&\n nextUrlHeader === undefined\n ) {\n return ''\n }\n return hexHash(\n [\n prefetchHeader || '0',\n segmentPrefetchHeader || '0',\n stateTreeHeader || '0',\n nextUrlHeader || '0',\n ].join(',')\n )\n}\n"],"names":["hexHash","computeCacheBustingSearchParam","prefetchHeader","segmentPrefetchHeader","stateTreeHeader","nextUrlHeader","undefined","join"],"mappings":";;;;AAAA,SAASA,OAAO,QAAQ,aAAY;;AAE7B,SAASC,+BACdC,cAA2C,EAC3CC,qBAAoD,EACpDC,eAA8C,EAC9CC,aAA4C;IAE5C,IACGH,CAAAA,mBAAmBI,aAAaJ,mBAAmB,GAAE,KACtDC,0BAA0BG,aAC1BF,oBAAoBE,aACpBD,kBAAkBC,WAClB;QACA,OAAO;IACT;IACA,WAAON,qNAAAA,EACL;QACEE,kBAAkB;QAClBC,yBAAyB;QACzBC,mBAAmB;QACnBC,iBAAiB;KAClB,CAACE,IAAI,CAAC;AAEX","ignoreList":[0]}}, + {"offset": {"line": 4314, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/stream-utils/node-web-streams-helper.ts"],"sourcesContent":["import type { ReactDOMServerReadableStream } from 'react-dom/server'\nimport { getTracer } from '../lib/trace/tracer'\nimport { AppRenderSpan } from '../lib/trace/constants'\nimport { DetachedPromise } from '../../lib/detached-promise'\nimport {\n scheduleImmediate,\n atLeastOneTask,\n waitAtLeastOneReactRenderTask,\n} from '../../lib/scheduler'\nimport { ENCODED_TAGS } from './encoded-tags'\nimport {\n indexOfUint8Array,\n isEquivalentUint8Arrays,\n removeFromUint8Array,\n} from './uint8array-helpers'\nimport { MISSING_ROOT_TAGS_ERROR } from '../../shared/lib/errors/constants'\nimport { insertBuildIdComment } from '../../shared/lib/segment-cache/output-export-prefetch-encoding'\nimport {\n RSC_HEADER,\n NEXT_ROUTER_PREFETCH_HEADER,\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER,\n NEXT_RSC_UNION_QUERY,\n} from '../../client/components/app-router-headers'\nimport { computeCacheBustingSearchParam } from '../../shared/lib/router/utils/cache-busting-search-param'\n\nfunction voidCatch() {\n // this catcher is designed to be used with pipeTo where we expect the underlying\n // pipe implementation to forward errors but we don't want the pipeTo promise to reject\n // and be unhandled\n}\n\n// We can share the same encoder instance everywhere\n// Notably we cannot do the same for TextDecoder because it is stateful\n// when handling streaming data\nconst encoder = new TextEncoder()\n\nexport function chainStreams(\n ...streams: ReadableStream[]\n): ReadableStream {\n // If we have no streams, return an empty stream. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n if (streams.length === 0) {\n return new ReadableStream({\n start(controller) {\n controller.close()\n },\n })\n }\n\n // If we only have 1 stream we fast path it by returning just this stream\n if (streams.length === 1) {\n return streams[0]\n }\n\n const { readable, writable } = new TransformStream()\n\n // We always initiate pipeTo immediately. We know we have at least 2 streams\n // so we need to avoid closing the writable when this one finishes.\n let promise = streams[0].pipeTo(writable, { preventClose: true })\n\n let i = 1\n for (; i < streams.length - 1; i++) {\n const nextStream = streams[i]\n promise = promise.then(() =>\n nextStream.pipeTo(writable, { preventClose: true })\n )\n }\n\n // We can omit the length check because we halted before the last stream and there\n // is at least two streams so the lastStream here will always be defined\n const lastStream = streams[i]\n promise = promise.then(() => lastStream.pipeTo(writable))\n\n // Catch any errors from the streams and ignore them, they will be handled\n // by whatever is consuming the readable stream.\n promise.catch(voidCatch)\n\n return readable\n}\n\nexport function streamFromString(str: string): ReadableStream {\n return new ReadableStream({\n start(controller) {\n controller.enqueue(encoder.encode(str))\n controller.close()\n },\n })\n}\n\nexport function streamFromBuffer(chunk: Buffer): ReadableStream {\n return new ReadableStream({\n start(controller) {\n controller.enqueue(chunk)\n controller.close()\n },\n })\n}\n\nasync function streamToChunks(\n stream: ReadableStream\n): Promise> {\n const reader = stream.getReader()\n const chunks: Array = []\n\n while (true) {\n const { done, value } = await reader.read()\n if (done) {\n break\n }\n\n chunks.push(value)\n }\n\n return chunks\n}\n\nfunction concatUint8Arrays(chunks: Array): Uint8Array {\n const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0)\n const result = new Uint8Array(totalLength)\n let offset = 0\n for (const chunk of chunks) {\n result.set(chunk, offset)\n offset += chunk.length\n }\n return result\n}\n\nexport async function streamToUint8Array(\n stream: ReadableStream\n): Promise {\n return concatUint8Arrays(await streamToChunks(stream))\n}\n\nexport async function streamToBuffer(\n stream: ReadableStream\n): Promise {\n return Buffer.concat(await streamToChunks(stream))\n}\n\nexport async function streamToString(\n stream: ReadableStream,\n signal?: AbortSignal\n): Promise {\n const decoder = new TextDecoder('utf-8', { fatal: true })\n let string = ''\n\n for await (const chunk of stream) {\n if (signal?.aborted) {\n return string\n }\n\n string += decoder.decode(chunk, { stream: true })\n }\n\n string += decoder.decode()\n\n return string\n}\n\nexport type BufferedTransformOptions = {\n /**\n * Flush synchronously once the buffer reaches this many bytes.\n */\n readonly maxBufferByteLength?: number\n}\n\nexport function createBufferedTransformStream(\n options: BufferedTransformOptions = {}\n): TransformStream {\n const { maxBufferByteLength = Infinity } = options\n\n let bufferedChunks: Array = []\n let bufferByteLength: number = 0\n let pending: DetachedPromise | undefined\n\n const flush = (controller: TransformStreamDefaultController) => {\n try {\n if (bufferedChunks.length === 0) {\n return\n }\n\n const chunk = new Uint8Array(bufferByteLength)\n let copiedBytes = 0\n\n for (let i = 0; i < bufferedChunks.length; i++) {\n const bufferedChunk = bufferedChunks[i]\n chunk.set(bufferedChunk, copiedBytes)\n copiedBytes += bufferedChunk.byteLength\n }\n // We just wrote all the buffered chunks so we need to reset the bufferedChunks array\n // and our bufferByteLength to prepare for the next round of buffered chunks\n bufferedChunks.length = 0\n bufferByteLength = 0\n controller.enqueue(chunk)\n } catch {\n // If an error occurs while enqueuing, it can't be due to this\n // transformer. It's most likely caused by the controller having been\n // errored (for example, if the stream was cancelled).\n }\n }\n\n const scheduleFlush = (controller: TransformStreamDefaultController) => {\n if (pending) {\n return\n }\n\n const detached = new DetachedPromise()\n pending = detached\n\n scheduleImmediate(() => {\n try {\n flush(controller)\n } finally {\n pending = undefined\n detached.resolve()\n }\n })\n }\n\n return new TransformStream({\n transform(chunk, controller) {\n // Combine the previous buffer with the new chunk.\n bufferedChunks.push(chunk)\n bufferByteLength += chunk.byteLength\n\n if (bufferByteLength >= maxBufferByteLength) {\n flush(controller)\n } else {\n scheduleFlush(controller)\n }\n },\n flush() {\n return pending?.promise\n },\n })\n}\n\nfunction createPrefetchCommentStream(\n isBuildTimePrerendering: boolean,\n buildId: string\n): TransformStream {\n // Insert an extra comment at the beginning of the HTML document. This must\n // come after the DOCTYPE, which is inserted by React.\n //\n // The first chunk sent by React will contain the doctype. After that, we can\n // pass through the rest of the chunks as-is.\n let didTransformFirstChunk = false\n return new TransformStream({\n transform(chunk, controller) {\n if (isBuildTimePrerendering && !didTransformFirstChunk) {\n didTransformFirstChunk = true\n const decoder = new TextDecoder('utf-8', { fatal: true })\n const chunkStr = decoder.decode(chunk, {\n stream: true,\n })\n const updatedChunkStr = insertBuildIdComment(chunkStr, buildId)\n controller.enqueue(encoder.encode(updatedChunkStr))\n return\n }\n controller.enqueue(chunk)\n },\n })\n}\n\nexport function renderToInitialFizzStream({\n ReactDOMServer,\n element,\n streamOptions,\n}: {\n ReactDOMServer: {\n renderToReadableStream: typeof import('react-dom/server').renderToReadableStream\n }\n element: React.ReactElement\n streamOptions?: Parameters[1]\n}): Promise {\n return getTracer().trace(AppRenderSpan.renderToReadableStream, async () =>\n ReactDOMServer.renderToReadableStream(element, streamOptions)\n )\n}\n\nfunction createMetadataTransformStream(\n insert: () => Promise | string\n): TransformStream {\n let chunkIndex = -1\n let isMarkRemoved = false\n\n return new TransformStream({\n async transform(chunk, controller) {\n let iconMarkIndex = -1\n let closedHeadIndex = -1\n chunkIndex++\n\n if (isMarkRemoved) {\n controller.enqueue(chunk)\n return\n }\n let iconMarkLength = 0\n // Only search for the closed head tag once\n if (iconMarkIndex === -1) {\n iconMarkIndex = indexOfUint8Array(chunk, ENCODED_TAGS.META.ICON_MARK)\n if (iconMarkIndex === -1) {\n controller.enqueue(chunk)\n return\n } else {\n // When we found the `` or `>`, checking the next char to ensure we cover both cases.\n iconMarkLength = ENCODED_TAGS.META.ICON_MARK.length\n // Check if next char is /, this is for xml mode.\n if (chunk[iconMarkIndex + iconMarkLength] === 47) {\n iconMarkLength += 2\n } else {\n // The last char is `>`\n iconMarkLength++\n }\n }\n }\n\n // Check if icon mark is inside tag in the first chunk.\n if (chunkIndex === 0) {\n closedHeadIndex = indexOfUint8Array(chunk, ENCODED_TAGS.CLOSED.HEAD)\n if (iconMarkIndex !== -1) {\n // The mark icon is located in the 1st chunk before the head tag.\n // We do not need to insert the script tag in this case because it's in the head.\n // Just remove the icon mark from the chunk.\n if (iconMarkIndex < closedHeadIndex) {\n const replaced = new Uint8Array(chunk.length - iconMarkLength)\n\n // Remove the icon mark from the chunk.\n replaced.set(chunk.subarray(0, iconMarkIndex))\n replaced.set(\n chunk.subarray(iconMarkIndex + iconMarkLength),\n iconMarkIndex\n )\n chunk = replaced\n } else {\n // The icon mark is after the head tag, replace and insert the script tag at that position.\n const insertion = await insert()\n const encodedInsertion = encoder.encode(insertion)\n const insertionLength = encodedInsertion.length\n const replaced = new Uint8Array(\n chunk.length - iconMarkLength + insertionLength\n )\n replaced.set(chunk.subarray(0, iconMarkIndex))\n replaced.set(encodedInsertion, iconMarkIndex)\n replaced.set(\n chunk.subarray(iconMarkIndex + iconMarkLength),\n iconMarkIndex + insertionLength\n )\n chunk = replaced\n }\n isMarkRemoved = true\n }\n // If there's no icon mark located, it will be handled later when if present in the following chunks.\n } else {\n // When it's appeared in the following chunks, we'll need to\n // remove the mark and then insert the script tag at that position.\n const insertion = await insert()\n const encodedInsertion = encoder.encode(insertion)\n const insertionLength = encodedInsertion.length\n // Replace the icon mark with the hoist script or empty string.\n const replaced = new Uint8Array(\n chunk.length - iconMarkLength + insertionLength\n )\n // Set the first part of the chunk, before the icon mark.\n replaced.set(chunk.subarray(0, iconMarkIndex))\n // Set the insertion after the icon mark.\n replaced.set(encodedInsertion, iconMarkIndex)\n\n // Set the rest of the chunk after the icon mark.\n replaced.set(\n chunk.subarray(iconMarkIndex + iconMarkLength),\n iconMarkIndex + insertionLength\n )\n chunk = replaced\n isMarkRemoved = true\n }\n controller.enqueue(chunk)\n },\n })\n}\n\nfunction createHeadInsertionTransformStream(\n insert: () => Promise\n): TransformStream {\n let inserted = false\n\n // We need to track if this transform saw any bytes because if it didn't\n // we won't want to insert any server HTML at all\n let hasBytes = false\n\n return new TransformStream({\n async transform(chunk, controller) {\n hasBytes = true\n\n const insertion = await insert()\n if (inserted) {\n if (insertion) {\n const encodedInsertion = encoder.encode(insertion)\n controller.enqueue(encodedInsertion)\n }\n controller.enqueue(chunk)\n } else {\n // TODO (@Ethan-Arrowood): Replace the generic `indexOfUint8Array` method with something finely tuned for the subset of things actually being checked for.\n const index = indexOfUint8Array(chunk, ENCODED_TAGS.CLOSED.HEAD)\n // In fully static rendering or non PPR rendering cases:\n // `/head>` will always be found in the chunk in first chunk rendering.\n if (index !== -1) {\n if (insertion) {\n const encodedInsertion = encoder.encode(insertion)\n // Get the total count of the bytes in the chunk and the insertion\n // e.g.\n // chunk = \n // insertion = \n // output = [ ] \n const insertedHeadContent = new Uint8Array(\n chunk.length + encodedInsertion.length\n )\n // Append the first part of the chunk, before the head tag\n insertedHeadContent.set(chunk.slice(0, index))\n // Append the server inserted content\n insertedHeadContent.set(encodedInsertion, index)\n // Append the rest of the chunk\n insertedHeadContent.set(\n chunk.slice(index),\n index + encodedInsertion.length\n )\n controller.enqueue(insertedHeadContent)\n } else {\n controller.enqueue(chunk)\n }\n inserted = true\n } else {\n // This will happens in PPR rendering during next start, when the page is partially rendered.\n // When the page resumes, the head tag will be found in the middle of the chunk.\n // Where we just need to append the insertion and chunk to the current stream.\n // e.g.\n // PPR-static: ... [ resume content ] \n // PPR-resume: [ insertion ] [ rest content ]\n if (insertion) {\n controller.enqueue(encoder.encode(insertion))\n }\n controller.enqueue(chunk)\n inserted = true\n }\n }\n },\n async flush(controller) {\n // Check before closing if there's anything remaining to insert.\n if (hasBytes) {\n const insertion = await insert()\n if (insertion) {\n controller.enqueue(encoder.encode(insertion))\n }\n }\n },\n })\n}\n\nfunction createClientResumeScriptInsertionTransformStream(): TransformStream<\n Uint8Array,\n Uint8Array\n> {\n const segmentPath = '/_full'\n const cacheBustingHeader = computeCacheBustingSearchParam(\n '1', // headers[NEXT_ROUTER_PREFETCH_HEADER]\n '/_full', // headers[NEXT_ROUTER_SEGMENT_PREFETCH_HEADER]\n undefined, // headers[NEXT_ROUTER_STATE_TREE_HEADER]\n undefined // headers[NEXT_URL]\n )\n const searchStr = `${NEXT_RSC_UNION_QUERY}=${cacheBustingHeader}`\n const NEXT_CLIENT_RESUME_SCRIPT = ``\n\n let didAlreadyInsert = false\n return new TransformStream({\n transform(chunk, controller) {\n if (didAlreadyInsert) {\n // Already inserted the script into the head. Pass through.\n controller.enqueue(chunk)\n return\n }\n // TODO (@Ethan-Arrowood): Replace the generic `indexOfUint8Array` method with something finely tuned for the subset of things actually being checked for.\n const headClosingTagIndex = indexOfUint8Array(\n chunk,\n ENCODED_TAGS.CLOSED.HEAD\n )\n\n if (headClosingTagIndex === -1) {\n // In fully static rendering or non PPR rendering cases:\n // `/head>` will always be found in the chunk in first chunk rendering.\n controller.enqueue(chunk)\n return\n }\n\n const encodedInsertion = encoder.encode(NEXT_CLIENT_RESUME_SCRIPT)\n // Get the total count of the bytes in the chunk and the insertion\n // e.g.\n // chunk = \n // insertion = \n // output = [ ] \n const insertedHeadContent = new Uint8Array(\n chunk.length + encodedInsertion.length\n )\n // Append the first part of the chunk, before the head tag\n insertedHeadContent.set(chunk.slice(0, headClosingTagIndex))\n // Append the server inserted content\n insertedHeadContent.set(encodedInsertion, headClosingTagIndex)\n // Append the rest of the chunk\n insertedHeadContent.set(\n chunk.slice(headClosingTagIndex),\n headClosingTagIndex + encodedInsertion.length\n )\n\n controller.enqueue(insertedHeadContent)\n didAlreadyInsert = true\n },\n })\n}\n\n// Suffix after main body content - scripts before ,\n// but wait for the major chunks to be enqueued.\nfunction createDeferredSuffixStream(\n suffix: string\n): TransformStream {\n let flushed = false\n let pending: DetachedPromise | undefined\n\n const flush = (controller: TransformStreamDefaultController) => {\n const detached = new DetachedPromise()\n pending = detached\n\n scheduleImmediate(() => {\n try {\n controller.enqueue(encoder.encode(suffix))\n } catch {\n // If an error occurs while enqueuing it can't be due to this\n // transformers fault. It's likely due to the controller being\n // errored due to the stream being cancelled.\n } finally {\n pending = undefined\n detached.resolve()\n }\n })\n }\n\n return new TransformStream({\n transform(chunk, controller) {\n controller.enqueue(chunk)\n\n // If we've already flushed, we're done.\n if (flushed) return\n\n // Schedule the flush to happen.\n flushed = true\n flush(controller)\n },\n flush(controller) {\n if (pending) return pending.promise\n if (flushed) return\n\n // Flush now.\n controller.enqueue(encoder.encode(suffix))\n },\n })\n}\n\nfunction createFlightDataInjectionTransformStream(\n stream: ReadableStream,\n delayDataUntilFirstHtmlChunk: boolean\n): TransformStream {\n let htmlStreamFinished = false\n\n let pull: Promise | null = null\n let donePulling = false\n\n function startOrContinuePulling(\n controller: TransformStreamDefaultController\n ) {\n if (!pull) {\n pull = startPulling(controller)\n }\n return pull\n }\n\n async function startPulling(controller: TransformStreamDefaultController) {\n const reader = stream.getReader()\n\n if (delayDataUntilFirstHtmlChunk) {\n // NOTE: streaming flush\n // We are buffering here for the inlined data stream because the\n // \"shell\" stream might be chunkenized again by the underlying stream\n // implementation, e.g. with a specific high-water mark. To ensure it's\n // the safe timing to pipe the data stream, this extra tick is\n // necessary.\n\n // We don't start reading until we've left the current Task to ensure\n // that it's inserted after flushing the shell. Note that this implementation\n // might get stale if impl details of Fizz change in the future.\n await atLeastOneTask()\n }\n\n try {\n while (true) {\n const { done, value } = await reader.read()\n if (done) {\n donePulling = true\n return\n }\n\n // We want to prioritize HTML over RSC data.\n // The SSR render is based on the same RSC stream, so when we get a new RSC chunk,\n // we're likely to produce an HTML chunk as well, so give it a chance to flush first.\n if (!delayDataUntilFirstHtmlChunk && !htmlStreamFinished) {\n await atLeastOneTask()\n }\n controller.enqueue(value)\n }\n } catch (err) {\n controller.error(err)\n }\n }\n\n return new TransformStream({\n start(controller) {\n if (!delayDataUntilFirstHtmlChunk) {\n startOrContinuePulling(controller)\n }\n },\n transform(chunk, controller) {\n controller.enqueue(chunk)\n\n // Start the streaming if it hasn't already been started yet.\n if (delayDataUntilFirstHtmlChunk) {\n startOrContinuePulling(controller)\n }\n },\n flush(controller) {\n htmlStreamFinished = true\n if (donePulling) {\n return\n }\n return startOrContinuePulling(controller)\n },\n })\n}\n\nconst CLOSE_TAG = ''\n\n/**\n * This transform stream moves the suffix to the end of the stream, so results\n * like `` will be transformed to\n * ``.\n */\nfunction createMoveSuffixStream(): TransformStream {\n let foundSuffix = false\n\n return new TransformStream({\n transform(chunk, controller) {\n if (foundSuffix) {\n return controller.enqueue(chunk)\n }\n\n const index = indexOfUint8Array(chunk, ENCODED_TAGS.CLOSED.BODY_AND_HTML)\n if (index > -1) {\n foundSuffix = true\n\n // If the whole chunk is the suffix, then don't write anything, it will\n // be written in the flush.\n if (chunk.length === ENCODED_TAGS.CLOSED.BODY_AND_HTML.length) {\n return\n }\n\n // Write out the part before the suffix.\n const before = chunk.slice(0, index)\n controller.enqueue(before)\n\n // In the case where the suffix is in the middle of the chunk, we need\n // to split the chunk into two parts.\n if (chunk.length > ENCODED_TAGS.CLOSED.BODY_AND_HTML.length + index) {\n // Write out the part after the suffix.\n const after = chunk.slice(\n index + ENCODED_TAGS.CLOSED.BODY_AND_HTML.length\n )\n controller.enqueue(after)\n }\n } else {\n controller.enqueue(chunk)\n }\n },\n flush(controller) {\n // Even if we didn't find the suffix, the HTML is not valid if we don't\n // add it, so insert it at the end.\n controller.enqueue(ENCODED_TAGS.CLOSED.BODY_AND_HTML)\n },\n })\n}\n\nfunction createStripDocumentClosingTagsTransform(): TransformStream<\n Uint8Array,\n Uint8Array\n> {\n return new TransformStream({\n transform(chunk, controller) {\n // We rely on the assumption that chunks will never break across a code unit.\n // This is reasonable because we currently concat all of React's output from a single\n // flush into one chunk before streaming it forward which means the chunk will represent\n // a single coherent utf-8 string. This is not safe to use if we change our streaming to no\n // longer do this large buffered chunk\n if (\n isEquivalentUint8Arrays(chunk, ENCODED_TAGS.CLOSED.BODY_AND_HTML) ||\n isEquivalentUint8Arrays(chunk, ENCODED_TAGS.CLOSED.BODY) ||\n isEquivalentUint8Arrays(chunk, ENCODED_TAGS.CLOSED.HTML)\n ) {\n // the entire chunk is the closing tags; return without enqueueing anything.\n return\n }\n\n // We assume these tags will go at together at the end of the document and that\n // they won't appear anywhere else in the document. This is not really a safe assumption\n // but until we revamp our streaming infra this is a performant way to string the tags\n chunk = removeFromUint8Array(chunk, ENCODED_TAGS.CLOSED.BODY)\n chunk = removeFromUint8Array(chunk, ENCODED_TAGS.CLOSED.HTML)\n\n controller.enqueue(chunk)\n },\n })\n}\n\n/*\n * Checks if the root layout is missing the html or body tags\n * and if so, it will inject a script tag to throw an error in the browser, showing the user\n * the error message in the error overlay.\n */\nexport function createRootLayoutValidatorStream(): TransformStream<\n Uint8Array,\n Uint8Array\n> {\n let foundHtml = false\n let foundBody = false\n return new TransformStream({\n async transform(chunk, controller) {\n // Peek into the streamed chunk to see if the tags are present.\n if (\n !foundHtml &&\n indexOfUint8Array(chunk, ENCODED_TAGS.OPENING.HTML) > -1\n ) {\n foundHtml = true\n }\n\n if (\n !foundBody &&\n indexOfUint8Array(chunk, ENCODED_TAGS.OPENING.BODY) > -1\n ) {\n foundBody = true\n }\n\n controller.enqueue(chunk)\n },\n flush(controller) {\n const missingTags: ('html' | 'body')[] = []\n if (!foundHtml) missingTags.push('html')\n if (!foundBody) missingTags.push('body')\n\n if (!missingTags.length) return\n\n controller.enqueue(\n encoder.encode(\n `\n `<${c}>`)\n .join(\n missingTags.length > 1 ? ' and ' : ''\n )} tags in the root layout.\\nRead more at https://nextjs.org/docs/messages/missing-root-layout-tags\"\n data-next-error-digest=\"${MISSING_ROOT_TAGS_ERROR}\"\n data-next-error-stack=\"\"\n >\n `\n )\n )\n },\n })\n}\n\nfunction chainTransformers(\n readable: ReadableStream,\n transformers: ReadonlyArray | null>\n): ReadableStream {\n let stream = readable\n for (const transformer of transformers) {\n if (!transformer) continue\n\n stream = stream.pipeThrough(transformer)\n }\n return stream\n}\n\nexport type ContinueStreamOptions = {\n inlinedDataStream: ReadableStream | undefined\n isStaticGeneration: boolean\n isBuildTimePrerendering: boolean\n buildId: string\n getServerInsertedHTML: () => Promise\n getServerInsertedMetadata: () => Promise\n validateRootLayout?: boolean\n /**\n * Suffix to inject after the buffered data, but before the close tags.\n */\n suffix?: string | undefined\n}\n\nexport async function continueFizzStream(\n renderStream: ReactDOMServerReadableStream,\n {\n suffix,\n inlinedDataStream,\n isStaticGeneration,\n isBuildTimePrerendering,\n buildId,\n getServerInsertedHTML,\n getServerInsertedMetadata,\n validateRootLayout,\n }: ContinueStreamOptions\n): Promise> {\n // Suffix itself might contain close tags at the end, so we need to split it.\n const suffixUnclosed = suffix ? suffix.split(CLOSE_TAG, 1)[0] : null\n\n if (isStaticGeneration) {\n // If we're generating static HTML we need to wait for it to resolve before continuing.\n await renderStream.allReady\n } else {\n // Otherwise, we want to make sure Fizz is done with all microtasky work\n // before we start pulling the stream and cause a flush.\n await waitAtLeastOneReactRenderTask()\n }\n\n return chainTransformers(renderStream, [\n // Buffer everything to avoid flushing too frequently\n createBufferedTransformStream(),\n\n // Add build id comment to start of the HTML document (in export mode)\n createPrefetchCommentStream(isBuildTimePrerendering, buildId),\n\n // Transform metadata\n createMetadataTransformStream(getServerInsertedMetadata),\n\n // Insert suffix content\n suffixUnclosed != null && suffixUnclosed.length > 0\n ? createDeferredSuffixStream(suffixUnclosed)\n : null,\n\n // Insert the inlined data (Flight data, form state, etc.) stream into the HTML\n inlinedDataStream\n ? createFlightDataInjectionTransformStream(inlinedDataStream, true)\n : null,\n\n // Validate the root layout for missing html or body tags\n validateRootLayout ? createRootLayoutValidatorStream() : null,\n\n // Close tags should always be deferred to the end\n createMoveSuffixStream(),\n\n // Special head insertions\n // TODO-APP: Insert server side html to end of head in app layout rendering, to avoid\n // hydration errors. Remove this once it's ready to be handled by react itself.\n createHeadInsertionTransformStream(getServerInsertedHTML),\n ])\n}\n\ntype ContinueDynamicPrerenderOptions = {\n getServerInsertedHTML: () => Promise\n getServerInsertedMetadata: () => Promise\n}\n\nexport async function continueDynamicPrerender(\n prerenderStream: ReadableStream,\n {\n getServerInsertedHTML,\n getServerInsertedMetadata,\n }: ContinueDynamicPrerenderOptions\n) {\n return (\n prerenderStream\n // Buffer everything to avoid flushing too frequently\n .pipeThrough(createBufferedTransformStream())\n .pipeThrough(createStripDocumentClosingTagsTransform())\n // Insert generated tags to head\n .pipeThrough(createHeadInsertionTransformStream(getServerInsertedHTML))\n // Transform metadata\n .pipeThrough(createMetadataTransformStream(getServerInsertedMetadata))\n )\n}\n\ntype ContinueStaticPrerenderOptions = {\n inlinedDataStream: ReadableStream\n getServerInsertedHTML: () => Promise\n getServerInsertedMetadata: () => Promise\n isBuildTimePrerendering: boolean\n buildId: string\n}\n\nexport async function continueStaticPrerender(\n prerenderStream: ReadableStream,\n {\n inlinedDataStream,\n getServerInsertedHTML,\n getServerInsertedMetadata,\n isBuildTimePrerendering,\n buildId,\n }: ContinueStaticPrerenderOptions\n) {\n return (\n prerenderStream\n // Buffer everything to avoid flushing too frequently\n .pipeThrough(createBufferedTransformStream())\n // Add build id comment to start of the HTML document (in export mode)\n .pipeThrough(\n createPrefetchCommentStream(isBuildTimePrerendering, buildId)\n )\n // Insert generated tags to head\n .pipeThrough(createHeadInsertionTransformStream(getServerInsertedHTML))\n // Transform metadata\n .pipeThrough(createMetadataTransformStream(getServerInsertedMetadata))\n // Insert the inlined data (Flight data, form state, etc.) stream into the HTML\n .pipeThrough(\n createFlightDataInjectionTransformStream(inlinedDataStream, true)\n )\n // Close tags should always be deferred to the end\n .pipeThrough(createMoveSuffixStream())\n )\n}\n\nexport async function continueStaticFallbackPrerender(\n prerenderStream: ReadableStream,\n {\n inlinedDataStream,\n getServerInsertedHTML,\n getServerInsertedMetadata,\n isBuildTimePrerendering,\n buildId,\n }: ContinueStaticPrerenderOptions\n) {\n // Same as `continueStaticPrerender`, but also inserts an additional script\n // to instruct the client to start fetching the hydration data as early\n // as possible.\n return (\n prerenderStream\n // Buffer everything to avoid flushing too frequently\n .pipeThrough(createBufferedTransformStream())\n // Add build id comment to start of the HTML document (in export mode)\n .pipeThrough(\n createPrefetchCommentStream(isBuildTimePrerendering, buildId)\n )\n // Insert generated tags to head\n .pipeThrough(createHeadInsertionTransformStream(getServerInsertedHTML))\n // Insert the client resume script into the head\n .pipeThrough(createClientResumeScriptInsertionTransformStream())\n // Transform metadata\n .pipeThrough(createMetadataTransformStream(getServerInsertedMetadata))\n // Insert the inlined data (Flight data, form state, etc.) stream into the HTML\n .pipeThrough(\n createFlightDataInjectionTransformStream(inlinedDataStream, true)\n )\n // Close tags should always be deferred to the end\n .pipeThrough(createMoveSuffixStream())\n )\n}\n\ntype ContinueResumeOptions = {\n inlinedDataStream: ReadableStream\n getServerInsertedHTML: () => Promise\n getServerInsertedMetadata: () => Promise\n delayDataUntilFirstHtmlChunk: boolean\n}\n\nexport async function continueDynamicHTMLResume(\n renderStream: ReadableStream,\n {\n delayDataUntilFirstHtmlChunk,\n inlinedDataStream,\n getServerInsertedHTML,\n getServerInsertedMetadata,\n }: ContinueResumeOptions\n) {\n return (\n renderStream\n // Buffer everything to avoid flushing too frequently\n .pipeThrough(createBufferedTransformStream())\n // Insert generated tags to head\n .pipeThrough(createHeadInsertionTransformStream(getServerInsertedHTML))\n // Transform metadata\n .pipeThrough(createMetadataTransformStream(getServerInsertedMetadata))\n // Insert the inlined data (Flight data, form state, etc.) stream into the HTML\n .pipeThrough(\n createFlightDataInjectionTransformStream(\n inlinedDataStream,\n delayDataUntilFirstHtmlChunk\n )\n )\n // Close tags should always be deferred to the end\n .pipeThrough(createMoveSuffixStream())\n )\n}\n\nexport function createDocumentClosingStream(): ReadableStream {\n return streamFromString(CLOSE_TAG)\n}\n"],"names":["getTracer","AppRenderSpan","DetachedPromise","scheduleImmediate","atLeastOneTask","waitAtLeastOneReactRenderTask","ENCODED_TAGS","indexOfUint8Array","isEquivalentUint8Arrays","removeFromUint8Array","MISSING_ROOT_TAGS_ERROR","insertBuildIdComment","RSC_HEADER","NEXT_ROUTER_PREFETCH_HEADER","NEXT_ROUTER_SEGMENT_PREFETCH_HEADER","NEXT_RSC_UNION_QUERY","computeCacheBustingSearchParam","voidCatch","encoder","TextEncoder","chainStreams","streams","length","ReadableStream","start","controller","close","readable","writable","TransformStream","promise","pipeTo","preventClose","i","nextStream","then","lastStream","catch","streamFromString","str","enqueue","encode","streamFromBuffer","chunk","streamToChunks","stream","reader","getReader","chunks","done","value","read","push","concatUint8Arrays","totalLength","reduce","sum","result","Uint8Array","offset","set","streamToUint8Array","streamToBuffer","Buffer","concat","streamToString","signal","decoder","TextDecoder","fatal","string","aborted","decode","createBufferedTransformStream","options","maxBufferByteLength","Infinity","bufferedChunks","bufferByteLength","pending","flush","copiedBytes","bufferedChunk","byteLength","scheduleFlush","detached","undefined","resolve","transform","createPrefetchCommentStream","isBuildTimePrerendering","buildId","didTransformFirstChunk","chunkStr","updatedChunkStr","renderToInitialFizzStream","ReactDOMServer","element","streamOptions","trace","renderToReadableStream","createMetadataTransformStream","insert","chunkIndex","isMarkRemoved","iconMarkIndex","closedHeadIndex","iconMarkLength","META","ICON_MARK","CLOSED","HEAD","replaced","subarray","insertion","encodedInsertion","insertionLength","createHeadInsertionTransformStream","inserted","hasBytes","index","insertedHeadContent","slice","createClientResumeScriptInsertionTransformStream","segmentPath","cacheBustingHeader","searchStr","NEXT_CLIENT_RESUME_SCRIPT","didAlreadyInsert","headClosingTagIndex","createDeferredSuffixStream","suffix","flushed","createFlightDataInjectionTransformStream","delayDataUntilFirstHtmlChunk","htmlStreamFinished","pull","donePulling","startOrContinuePulling","startPulling","err","error","CLOSE_TAG","createMoveSuffixStream","foundSuffix","BODY_AND_HTML","before","after","createStripDocumentClosingTagsTransform","BODY","HTML","createRootLayoutValidatorStream","foundHtml","foundBody","OPENING","missingTags","map","c","join","chainTransformers","transformers","transformer","pipeThrough","continueFizzStream","renderStream","inlinedDataStream","isStaticGeneration","getServerInsertedHTML","getServerInsertedMetadata","validateRootLayout","suffixUnclosed","split","allReady","continueDynamicPrerender","prerenderStream","continueStaticPrerender","continueStaticFallbackPrerender","continueDynamicHTMLResume","createDocumentClosingStream"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAASA,SAAS,QAAQ,sBAAqB;AAC/C,SAASC,aAAa,QAAQ,yBAAwB;AACtD,SAASC,eAAe,QAAQ,6BAA4B;AAC5D,SACEC,iBAAiB,EACjBC,cAAc,EACdC,6BAA6B,QACxB,sBAAqB;AAC5B,SAASC,YAAY,QAAQ,iBAAgB;AAC7C,SACEC,iBAAiB,EACjBC,uBAAuB,EACvBC,oBAAoB,QACf,uBAAsB;AAC7B,SAASC,uBAAuB,QAAQ,oCAAmC;AAC3E,SAASC,oBAAoB,QAAQ,iEAAgE;AACrG,SACEC,UAAU,EACVC,2BAA2B,EAC3BC,mCAAmC,EACnCC,oBAAoB,QACf,6CAA4C;AACnD,SAASC,8BAA8B,QAAQ,2DAA0D;;;;;;;;;;;AAEzG,SAASC;AACP,iFAAiF;AACjF,uFAAuF;AACvF,mBAAmB;AACrB;AAEA,oDAAoD;AACpD,uEAAuE;AACvE,+BAA+B;AAC/B,MAAMC,UAAU,IAAIC;AAEb,SAASC,aACd,GAAGC,OAA4B;IAE/B,kEAAkE;IAClE,qEAAqE;IACrE,IAAIA,QAAQC,MAAM,KAAK,GAAG;QACxB,OAAO,IAAIC,eAAkB;YAC3BC,OAAMC,UAAU;gBACdA,WAAWC,KAAK;YAClB;QACF;IACF;IAEA,yEAAyE;IACzE,IAAIL,QAAQC,MAAM,KAAK,GAAG;QACxB,OAAOD,OAAO,CAAC,EAAE;IACnB;IAEA,MAAM,EAAEM,QAAQ,EAAEC,QAAQ,EAAE,GAAG,IAAIC;IAEnC,4EAA4E;IAC5E,mEAAmE;IACnE,IAAIC,UAAUT,OAAO,CAAC,EAAE,CAACU,MAAM,CAACH,UAAU;QAAEI,cAAc;IAAK;IAE/D,IAAIC,IAAI;IACR,MAAOA,IAAIZ,QAAQC,MAAM,GAAG,GAAGW,IAAK;QAClC,MAAMC,aAAab,OAAO,CAACY,EAAE;QAC7BH,UAAUA,QAAQK,IAAI,CAAC,IACrBD,WAAWH,MAAM,CAACH,UAAU;gBAAEI,cAAc;YAAK;IAErD;IAEA,kFAAkF;IAClF,wEAAwE;IACxE,MAAMI,aAAaf,OAAO,CAACY,EAAE;IAC7BH,UAAUA,QAAQK,IAAI,CAAC,IAAMC,WAAWL,MAAM,CAACH;IAE/C,0EAA0E;IAC1E,gDAAgD;IAChDE,QAAQO,KAAK,CAACpB;IAEd,OAAOU;AACT;AAEO,SAASW,iBAAiBC,GAAW;IAC1C,OAAO,IAAIhB,eAAe;QACxBC,OAAMC,UAAU;YACdA,WAAWe,OAAO,CAACtB,QAAQuB,MAAM,CAACF;YAClCd,WAAWC,KAAK;QAClB;IACF;AACF;AAEO,SAASgB,iBAAiBC,KAAa;IAC5C,OAAO,IAAIpB,eAAe;QACxBC,OAAMC,UAAU;YACdA,WAAWe,OAAO,CAACG;YACnBlB,WAAWC,KAAK;QAClB;IACF;AACF;AAEA,eAAekB,eACbC,MAAkC;IAElC,MAAMC,SAASD,OAAOE,SAAS;IAC/B,MAAMC,SAA4B,EAAE;IAEpC,MAAO,KAAM;QACX,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAE,GAAG,MAAMJ,OAAOK,IAAI;QACzC,IAAIF,MAAM;YACR;QACF;QAEAD,OAAOI,IAAI,CAACF;IACd;IAEA,OAAOF;AACT;AAEA,SAASK,kBAAkBL,MAAyB;IAClD,MAAMM,cAAcN,OAAOO,MAAM,CAAC,CAACC,KAAKb,QAAUa,MAAMb,MAAMrB,MAAM,EAAE;IACtE,MAAMmC,SAAS,IAAIC,WAAWJ;IAC9B,IAAIK,SAAS;IACb,KAAK,MAAMhB,SAASK,OAAQ;QAC1BS,OAAOG,GAAG,CAACjB,OAAOgB;QAClBA,UAAUhB,MAAMrB,MAAM;IACxB;IACA,OAAOmC;AACT;AAEO,eAAeI,mBACpBhB,MAAkC;IAElC,OAAOQ,kBAAkB,MAAMT,eAAeC;AAChD;AAEO,eAAeiB,eACpBjB,MAAkC;IAElC,OAAOkB,OAAOC,MAAM,CAAC,MAAMpB,eAAeC;AAC5C;AAEO,eAAeoB,eACpBpB,MAAkC,EAClCqB,MAAoB;IAEpB,MAAMC,UAAU,IAAIC,YAAY,SAAS;QAAEC,OAAO;IAAK;IACvD,IAAIC,SAAS;IAEb,WAAW,MAAM3B,SAASE,OAAQ;QAChC,IAAIqB,UAAAA,OAAAA,KAAAA,IAAAA,OAAQK,OAAO,EAAE;YACnB,OAAOD;QACT;QAEAA,UAAUH,QAAQK,MAAM,CAAC7B,OAAO;YAAEE,QAAQ;QAAK;IACjD;IAEAyB,UAAUH,QAAQK,MAAM;IAExB,OAAOF;AACT;AASO,SAASG,8BACdC,UAAoC,CAAC,CAAC;IAEtC,MAAM,EAAEC,sBAAsBC,QAAQ,EAAE,GAAGF;IAE3C,IAAIG,iBAAoC,EAAE;IAC1C,IAAIC,mBAA2B;IAC/B,IAAIC;IAEJ,MAAMC,QAAQ,CAACvD;QACb,IAAI;YACF,IAAIoD,eAAevD,MAAM,KAAK,GAAG;gBAC/B;YACF;YAEA,MAAMqB,QAAQ,IAAIe,WAAWoB;YAC7B,IAAIG,cAAc;YAElB,IAAK,IAAIhD,IAAI,GAAGA,IAAI4C,eAAevD,MAAM,EAAEW,IAAK;gBAC9C,MAAMiD,gBAAgBL,cAAc,CAAC5C,EAAE;gBACvCU,MAAMiB,GAAG,CAACsB,eAAeD;gBACzBA,eAAeC,cAAcC,UAAU;YACzC;YACA,qFAAqF;YACrF,4EAA4E;YAC5EN,eAAevD,MAAM,GAAG;YACxBwD,mBAAmB;YACnBrD,WAAWe,OAAO,CAACG;QACrB,EAAE,OAAM;QACN,8DAA8D;QAC9D,qEAAqE;QACrE,sDAAsD;QACxD;IACF;IAEA,MAAMyC,gBAAgB,CAAC3D;QACrB,IAAIsD,SAAS;YACX;QACF;QAEA,MAAMM,WAAW,IAAInF,kOAAAA;QACrB6E,UAAUM;YAEVlF,0NAAAA,EAAkB;YAChB,IAAI;gBACF6E,MAAMvD;YACR,SAAU;gBACRsD,UAAUO;gBACVD,SAASE,OAAO;YAClB;QACF;IACF;IAEA,OAAO,IAAI1D,gBAAgB;QACzB2D,WAAU7C,KAAK,EAAElB,UAAU;YACzB,kDAAkD;YAClDoD,eAAezB,IAAI,CAACT;YACpBmC,oBAAoBnC,MAAMwC,UAAU;YAEpC,IAAIL,oBAAoBH,qBAAqB;gBAC3CK,MAAMvD;YACR,OAAO;gBACL2D,cAAc3D;YAChB;QACF;QACAuD;YACE,OAAOD,WAAAA,OAAAA,KAAAA,IAAAA,QAASjD,OAAO;QACzB;IACF;AACF;AAEA,SAAS2D,4BACPC,uBAAgC,EAChCC,OAAe;IAEf,2EAA2E;IAC3E,sDAAsD;IACtD,EAAE;IACF,6EAA6E;IAC7E,6CAA6C;IAC7C,IAAIC,yBAAyB;IAC7B,OAAO,IAAI/D,gBAAgB;QACzB2D,WAAU7C,KAAK,EAAElB,UAAU;YACzB,IAAIiE,2BAA2B,CAACE,wBAAwB;gBACtDA,yBAAyB;gBACzB,MAAMzB,UAAU,IAAIC,YAAY,SAAS;oBAAEC,OAAO;gBAAK;gBACvD,MAAMwB,WAAW1B,QAAQK,MAAM,CAAC7B,OAAO;oBACrCE,QAAQ;gBACV;gBACA,MAAMiD,sBAAkBnF,0RAAAA,EAAqBkF,UAAUF;gBACvDlE,WAAWe,OAAO,CAACtB,QAAQuB,MAAM,CAACqD;gBAClC;YACF;YACArE,WAAWe,OAAO,CAACG;QACrB;IACF;AACF;AAEO,SAASoD,0BAA0B,EACxCC,cAAc,EACdC,OAAO,EACPC,aAAa,EAOd;IACC,WAAOlG,kOAAAA,IAAYmG,KAAK,CAAClG,yOAAAA,CAAcmG,sBAAsB,EAAE,UAC7DJ,eAAeI,sBAAsB,CAACH,SAASC;AAEnD;AAEA,SAASG,8BACPC,MAAsC;IAEtC,IAAIC,aAAa,CAAC;IAClB,IAAIC,gBAAgB;IAEpB,OAAO,IAAI3E,gBAAgB;QACzB,MAAM2D,WAAU7C,KAAK,EAAElB,UAAU;YAC/B,IAAIgF,gBAAgB,CAAC;YACrB,IAAIC,kBAAkB,CAAC;YACvBH;YAEA,IAAIC,eAAe;gBACjB/E,WAAWe,OAAO,CAACG;gBACnB;YACF;YACA,IAAIgE,iBAAiB;YACrB,2CAA2C;YAC3C,IAAIF,kBAAkB,CAAC,GAAG;gBACxBA,oBAAgBlG,4PAAAA,EAAkBoC,OAAOrC,iPAAAA,CAAasG,IAAI,CAACC,SAAS;gBACpE,IAAIJ,kBAAkB,CAAC,GAAG;oBACxBhF,WAAWe,OAAO,CAACG;oBACnB;gBACF,OAAO;oBACL,4FAA4F;oBAC5F,mGAAmG;oBACnGgE,iBAAiBrG,iPAAAA,CAAasG,IAAI,CAACC,SAAS,CAACvF,MAAM;oBACnD,iDAAiD;oBACjD,IAAIqB,KAAK,CAAC8D,gBAAgBE,eAAe,KAAK,IAAI;wBAChDA,kBAAkB;oBACpB,OAAO;wBACL,uBAAuB;wBACvBA;oBACF;gBACF;YACF;YAEA,8DAA8D;YAC9D,IAAIJ,eAAe,GAAG;gBACpBG,sBAAkBnG,4PAAAA,EAAkBoC,OAAOrC,iPAAAA,CAAawG,MAAM,CAACC,IAAI;gBACnE,IAAIN,kBAAkB,CAAC,GAAG;oBACxB,iEAAiE;oBACjE,iFAAiF;oBACjF,4CAA4C;oBAC5C,IAAIA,gBAAgBC,iBAAiB;wBACnC,MAAMM,WAAW,IAAItD,WAAWf,MAAMrB,MAAM,GAAGqF;wBAE/C,uCAAuC;wBACvCK,SAASpD,GAAG,CAACjB,MAAMsE,QAAQ,CAAC,GAAGR;wBAC/BO,SAASpD,GAAG,CACVjB,MAAMsE,QAAQ,CAACR,gBAAgBE,iBAC/BF;wBAEF9D,QAAQqE;oBACV,OAAO;wBACL,2FAA2F;wBAC3F,MAAME,YAAY,MAAMZ;wBACxB,MAAMa,mBAAmBjG,QAAQuB,MAAM,CAACyE;wBACxC,MAAME,kBAAkBD,iBAAiB7F,MAAM;wBAC/C,MAAM0F,WAAW,IAAItD,WACnBf,MAAMrB,MAAM,GAAGqF,iBAAiBS;wBAElCJ,SAASpD,GAAG,CAACjB,MAAMsE,QAAQ,CAAC,GAAGR;wBAC/BO,SAASpD,GAAG,CAACuD,kBAAkBV;wBAC/BO,SAASpD,GAAG,CACVjB,MAAMsE,QAAQ,CAACR,gBAAgBE,iBAC/BF,gBAAgBW;wBAElBzE,QAAQqE;oBACV;oBACAR,gBAAgB;gBAClB;YACA,qGAAqG;YACvG,OAAO;gBACL,4DAA4D;gBAC5D,mEAAmE;gBACnE,MAAMU,YAAY,MAAMZ;gBACxB,MAAMa,mBAAmBjG,QAAQuB,MAAM,CAACyE;gBACxC,MAAME,kBAAkBD,iBAAiB7F,MAAM;gBAC/C,+DAA+D;gBAC/D,MAAM0F,WAAW,IAAItD,WACnBf,MAAMrB,MAAM,GAAGqF,iBAAiBS;gBAElC,yDAAyD;gBACzDJ,SAASpD,GAAG,CAACjB,MAAMsE,QAAQ,CAAC,GAAGR;gBAC/B,yCAAyC;gBACzCO,SAASpD,GAAG,CAACuD,kBAAkBV;gBAE/B,iDAAiD;gBACjDO,SAASpD,GAAG,CACVjB,MAAMsE,QAAQ,CAACR,gBAAgBE,iBAC/BF,gBAAgBW;gBAElBzE,QAAQqE;gBACRR,gBAAgB;YAClB;YACA/E,WAAWe,OAAO,CAACG;QACrB;IACF;AACF;AAEA,SAAS0E,mCACPf,MAA6B;IAE7B,IAAIgB,WAAW;IAEf,wEAAwE;IACxE,iDAAiD;IACjD,IAAIC,WAAW;IAEf,OAAO,IAAI1F,gBAAgB;QACzB,MAAM2D,WAAU7C,KAAK,EAAElB,UAAU;YAC/B8F,WAAW;YAEX,MAAML,YAAY,MAAMZ;YACxB,IAAIgB,UAAU;gBACZ,IAAIJ,WAAW;oBACb,MAAMC,mBAAmBjG,QAAQuB,MAAM,CAACyE;oBACxCzF,WAAWe,OAAO,CAAC2E;gBACrB;gBACA1F,WAAWe,OAAO,CAACG;YACrB,OAAO;gBACL,0JAA0J;gBAC1J,MAAM6E,YAAQjH,4PAAAA,EAAkBoC,OAAOrC,iPAAAA,CAAawG,MAAM,CAACC,IAAI;gBAC/D,wDAAwD;gBACxD,uEAAuE;gBACvE,IAAIS,UAAU,CAAC,GAAG;oBAChB,IAAIN,WAAW;wBACb,MAAMC,mBAAmBjG,QAAQuB,MAAM,CAACyE;wBACxC,kEAAkE;wBAClE,OAAO;wBACP,8CAA8C;wBAC9C,mCAAmC;wBACnC,yEAAyE;wBACzE,MAAMO,sBAAsB,IAAI/D,WAC9Bf,MAAMrB,MAAM,GAAG6F,iBAAiB7F,MAAM;wBAExC,0DAA0D;wBAC1DmG,oBAAoB7D,GAAG,CAACjB,MAAM+E,KAAK,CAAC,GAAGF;wBACvC,qCAAqC;wBACrCC,oBAAoB7D,GAAG,CAACuD,kBAAkBK;wBAC1C,+BAA+B;wBAC/BC,oBAAoB7D,GAAG,CACrBjB,MAAM+E,KAAK,CAACF,QACZA,QAAQL,iBAAiB7F,MAAM;wBAEjCG,WAAWe,OAAO,CAACiF;oBACrB,OAAO;wBACLhG,WAAWe,OAAO,CAACG;oBACrB;oBACA2E,WAAW;gBACb,OAAO;oBACL,6FAA6F;oBAC7F,gFAAgF;oBAChF,8EAA8E;oBAC9E,OAAO;oBACP,gEAAgE;oBAChE,6CAA6C;oBAC7C,IAAIJ,WAAW;wBACbzF,WAAWe,OAAO,CAACtB,QAAQuB,MAAM,CAACyE;oBACpC;oBACAzF,WAAWe,OAAO,CAACG;oBACnB2E,WAAW;gBACb;YACF;QACF;QACA,MAAMtC,OAAMvD,UAAU;YACpB,gEAAgE;YAChE,IAAI8F,UAAU;gBACZ,MAAML,YAAY,MAAMZ;gBACxB,IAAIY,WAAW;oBACbzF,WAAWe,OAAO,CAACtB,QAAQuB,MAAM,CAACyE;gBACpC;YACF;QACF;IACF;AACF;AAEA,SAASS;IAIP,MAAMC,cAAc;IACpB,MAAMC,yBAAqB7G,8RAAAA,EACzB,KACA,UACAsE,WACAA,UAAU,0BAA0B;;IAEtC,MAAMwC,YAAY,GAAG/G,6PAAAA,CAAqB,CAAC,EAAE8G,oBAAoB;IACjE,MAAME,4BAA4B,CAAC,uDAAuD,EAAED,UAAU,uCAAuC,EAAElH,mPAAAA,CAAW,QAAQ,EAAEC,oQAAAA,CAA4B,QAAQ,EAAEC,4QAAAA,CAAoC,IAAI,EAAE8G,YAAY,aAAa,CAAC;IAE9Q,IAAII,mBAAmB;IACvB,OAAO,IAAInG,gBAAgB;QACzB2D,WAAU7C,KAAK,EAAElB,UAAU;YACzB,IAAIuG,kBAAkB;gBACpB,2DAA2D;gBAC3DvG,WAAWe,OAAO,CAACG;gBACnB;YACF;YACA,0JAA0J;YAC1J,MAAMsF,0BAAsB1H,4PAAAA,EAC1BoC,OACArC,iPAAAA,CAAawG,MAAM,CAACC,IAAI;YAG1B,IAAIkB,wBAAwB,CAAC,GAAG;gBAC9B,wDAAwD;gBACxD,uEAAuE;gBACvExG,WAAWe,OAAO,CAACG;gBACnB;YACF;YAEA,MAAMwE,mBAAmBjG,QAAQuB,MAAM,CAACsF;YACxC,kEAAkE;YAClE,OAAO;YACP,8CAA8C;YAC9C,mCAAmC;YACnC,yEAAyE;YACzE,MAAMN,sBAAsB,IAAI/D,WAC9Bf,MAAMrB,MAAM,GAAG6F,iBAAiB7F,MAAM;YAExC,0DAA0D;YAC1DmG,oBAAoB7D,GAAG,CAACjB,MAAM+E,KAAK,CAAC,GAAGO;YACvC,qCAAqC;YACrCR,oBAAoB7D,GAAG,CAACuD,kBAAkBc;YAC1C,+BAA+B;YAC/BR,oBAAoB7D,GAAG,CACrBjB,MAAM+E,KAAK,CAACO,sBACZA,sBAAsBd,iBAAiB7F,MAAM;YAG/CG,WAAWe,OAAO,CAACiF;YACnBO,mBAAmB;QACrB;IACF;AACF;AAEA,2DAA2D;AAC3D,gDAAgD;AAChD,SAASE,2BACPC,MAAc;IAEd,IAAIC,UAAU;IACd,IAAIrD;IAEJ,MAAMC,QAAQ,CAACvD;QACb,MAAM4D,WAAW,IAAInF,kOAAAA;QACrB6E,UAAUM;YAEVlF,0NAAAA,EAAkB;YAChB,IAAI;gBACFsB,WAAWe,OAAO,CAACtB,QAAQuB,MAAM,CAAC0F;YACpC,EAAE,OAAM;YACN,6DAA6D;YAC7D,8DAA8D;YAC9D,6CAA6C;YAC/C,SAAU;gBACRpD,UAAUO;gBACVD,SAASE,OAAO;YAClB;QACF;IACF;IAEA,OAAO,IAAI1D,gBAAgB;QACzB2D,WAAU7C,KAAK,EAAElB,UAAU;YACzBA,WAAWe,OAAO,CAACG;YAEnB,wCAAwC;YACxC,IAAIyF,SAAS;YAEb,gCAAgC;YAChCA,UAAU;YACVpD,MAAMvD;QACR;QACAuD,OAAMvD,UAAU;YACd,IAAIsD,SAAS,OAAOA,QAAQjD,OAAO;YACnC,IAAIsG,SAAS;YAEb,aAAa;YACb3G,WAAWe,OAAO,CAACtB,QAAQuB,MAAM,CAAC0F;QACpC;IACF;AACF;AAEA,SAASE,yCACPxF,MAAkC,EAClCyF,4BAAqC;IAErC,IAAIC,qBAAqB;IAEzB,IAAIC,OAA6B;IACjC,IAAIC,cAAc;IAElB,SAASC,uBACPjH,UAA4C;QAE5C,IAAI,CAAC+G,MAAM;YACTA,OAAOG,aAAalH;QACtB;QACA,OAAO+G;IACT;IAEA,eAAeG,aAAalH,UAA4C;QACtE,MAAMqB,SAASD,OAAOE,SAAS;QAE/B,IAAIuF,8BAA8B;YAChC,wBAAwB;YACxB,gEAAgE;YAChE,qEAAqE;YACrE,uEAAuE;YACvE,8DAA8D;YAC9D,aAAa;YAEb,qEAAqE;YACrE,6EAA6E;YAC7E,gEAAgE;YAChE,UAAMlI,uNAAAA;QACR;QAEA,IAAI;YACF,MAAO,KAAM;gBACX,MAAM,EAAE6C,IAAI,EAAEC,KAAK,EAAE,GAAG,MAAMJ,OAAOK,IAAI;gBACzC,IAAIF,MAAM;oBACRwF,cAAc;oBACd;gBACF;gBAEA,4CAA4C;gBAC5C,kFAAkF;gBAClF,qFAAqF;gBACrF,IAAI,CAACH,gCAAgC,CAACC,oBAAoB;oBACxD,UAAMnI,uNAAAA;gBACR;gBACAqB,WAAWe,OAAO,CAACU;YACrB;QACF,EAAE,OAAO0F,KAAK;YACZnH,WAAWoH,KAAK,CAACD;QACnB;IACF;IAEA,OAAO,IAAI/G,gBAAgB;QACzBL,OAAMC,UAAU;YACd,IAAI,CAAC6G,8BAA8B;gBACjCI,uBAAuBjH;YACzB;QACF;QACA+D,WAAU7C,KAAK,EAAElB,UAAU;YACzBA,WAAWe,OAAO,CAACG;YAEnB,6DAA6D;YAC7D,IAAI2F,8BAA8B;gBAChCI,uBAAuBjH;YACzB;QACF;QACAuD,OAAMvD,UAAU;YACd8G,qBAAqB;YACrB,IAAIE,aAAa;gBACf;YACF;YACA,OAAOC,uBAAuBjH;QAChC;IACF;AACF;AAEA,MAAMqH,YAAY;AAElB;;;;CAIC,GACD,SAASC;IACP,IAAIC,cAAc;IAElB,OAAO,IAAInH,gBAAgB;QACzB2D,WAAU7C,KAAK,EAAElB,UAAU;YACzB,IAAIuH,aAAa;gBACf,OAAOvH,WAAWe,OAAO,CAACG;YAC5B;YAEA,MAAM6E,YAAQjH,4PAAAA,EAAkBoC,OAAOrC,iPAAAA,CAAawG,MAAM,CAACmC,aAAa;YACxE,IAAIzB,QAAQ,CAAC,GAAG;gBACdwB,cAAc;gBAEd,uEAAuE;gBACvE,2BAA2B;gBAC3B,IAAIrG,MAAMrB,MAAM,KAAKhB,iPAAAA,CAAawG,MAAM,CAACmC,aAAa,CAAC3H,MAAM,EAAE;oBAC7D;gBACF;gBAEA,wCAAwC;gBACxC,MAAM4H,SAASvG,MAAM+E,KAAK,CAAC,GAAGF;gBAC9B/F,WAAWe,OAAO,CAAC0G;gBAEnB,sEAAsE;gBACtE,qCAAqC;gBACrC,IAAIvG,MAAMrB,MAAM,GAAGhB,iPAAAA,CAAawG,MAAM,CAACmC,aAAa,CAAC3H,MAAM,GAAGkG,OAAO;oBACnE,uCAAuC;oBACvC,MAAM2B,QAAQxG,MAAM+E,KAAK,CACvBF,QAAQlH,iPAAAA,CAAawG,MAAM,CAACmC,aAAa,CAAC3H,MAAM;oBAElDG,WAAWe,OAAO,CAAC2G;gBACrB;YACF,OAAO;gBACL1H,WAAWe,OAAO,CAACG;YACrB;QACF;QACAqC,OAAMvD,UAAU;YACd,uEAAuE;YACvE,mCAAmC;YACnCA,WAAWe,OAAO,CAAClC,iPAAAA,CAAawG,MAAM,CAACmC,aAAa;QACtD;IACF;AACF;AAEA,SAASG;IAIP,OAAO,IAAIvH,gBAAgB;QACzB2D,WAAU7C,KAAK,EAAElB,UAAU;YACzB,6EAA6E;YAC7E,qFAAqF;YACrF,wFAAwF;YACxF,2FAA2F;YAC3F,sCAAsC;YACtC,QACEjB,kQAAAA,EAAwBmC,OAAOrC,iPAAAA,CAAawG,MAAM,CAACmC,aAAa,SAChEzI,kQAAAA,EAAwBmC,OAAOrC,iPAAAA,CAAawG,MAAM,CAACuC,IAAI,SACvD7I,kQAAAA,EAAwBmC,OAAOrC,iPAAAA,CAAawG,MAAM,CAACwC,IAAI,GACvD;gBACA,4EAA4E;gBAC5E;YACF;YAEA,+EAA+E;YAC/E,wFAAwF;YACxF,sFAAsF;YACtF3G,YAAQlC,+PAAAA,EAAqBkC,OAAOrC,iPAAAA,CAAawG,MAAM,CAACuC,IAAI;YAC5D1G,YAAQlC,+PAAAA,EAAqBkC,OAAOrC,iPAAAA,CAAawG,MAAM,CAACwC,IAAI;YAE5D7H,WAAWe,OAAO,CAACG;QACrB;IACF;AACF;AAOO,SAAS4G;IAId,IAAIC,YAAY;IAChB,IAAIC,YAAY;IAChB,OAAO,IAAI5H,gBAAgB;QACzB,MAAM2D,WAAU7C,KAAK,EAAElB,UAAU;YAC/B,+DAA+D;YAC/D,IACE,CAAC+H,iBACDjJ,4PAAAA,EAAkBoC,OAAOrC,iPAAAA,CAAaoJ,OAAO,CAACJ,IAAI,IAAI,CAAC,GACvD;gBACAE,YAAY;YACd;YAEA,IACE,CAACC,iBACDlJ,4PAAAA,EAAkBoC,OAAOrC,iPAAAA,CAAaoJ,OAAO,CAACL,IAAI,IAAI,CAAC,GACvD;gBACAI,YAAY;YACd;YAEAhI,WAAWe,OAAO,CAACG;QACrB;QACAqC,OAAMvD,UAAU;YACd,MAAMkI,cAAmC,EAAE;YAC3C,IAAI,CAACH,WAAWG,YAAYvG,IAAI,CAAC;YACjC,IAAI,CAACqG,WAAWE,YAAYvG,IAAI,CAAC;YAEjC,IAAI,CAACuG,YAAYrI,MAAM,EAAE;YAEzBG,WAAWe,OAAO,CAChBtB,QAAQuB,MAAM,CACZ,CAAC;;+CAEoC,EAAEkH,YAChCC,GAAG,CAAC,CAACC,IAAM,CAAC,CAAC,EAAEA,EAAE,CAAC,CAAC,EACnBC,IAAI,CACHH,YAAYrI,MAAM,GAAG,IAAI,UAAU,IACnC;sCACoB,EAAEZ,oPAAAA,CAAwB;;;UAGtD,CAAC;QAGP;IACF;AACF;AAEA,SAASqJ,kBACPpI,QAA2B,EAC3BqI,YAAyD;IAEzD,IAAInH,SAASlB;IACb,KAAK,MAAMsI,eAAeD,aAAc;QACtC,IAAI,CAACC,aAAa;QAElBpH,SAASA,OAAOqH,WAAW,CAACD;IAC9B;IACA,OAAOpH;AACT;AAgBO,eAAesH,mBACpBC,YAA0C,EAC1C,EACEjC,MAAM,EACNkC,iBAAiB,EACjBC,kBAAkB,EAClB5E,uBAAuB,EACvBC,OAAO,EACP4E,qBAAqB,EACrBC,yBAAyB,EACzBC,kBAAkB,EACI;IAExB,6EAA6E;IAC7E,MAAMC,iBAAiBvC,SAASA,OAAOwC,KAAK,CAAC7B,WAAW,EAAE,CAAC,EAAE,GAAG;IAEhE,IAAIwB,oBAAoB;QACtB,uFAAuF;QACvF,MAAMF,aAAaQ,QAAQ;IAC7B,OAAO;QACL,wEAAwE;QACxE,wDAAwD;QACxD,UAAMvK,sOAAAA;IACR;IAEA,OAAO0J,kBAAkBK,cAAc;QACrC,qDAAqD;QACrD3F;QAEA,sEAAsE;QACtEgB,4BAA4BC,yBAAyBC;QAErD,qBAAqB;QACrBU,8BAA8BmE;QAE9B,wBAAwB;QACxBE,kBAAkB,QAAQA,eAAepJ,MAAM,GAAG,IAC9C4G,2BAA2BwC,kBAC3B;QAEJ,+EAA+E;QAC/EL,oBACIhC,yCAAyCgC,mBAAmB,QAC5D;QAEJ,yDAAyD;QACzDI,qBAAqBlB,oCAAoC;QAEzD,kDAAkD;QAClDR;QAEA,0BAA0B;QAC1B,qFAAqF;QACrF,+EAA+E;QAC/E1B,mCAAmCkD;KACpC;AACH;AAOO,eAAeM,yBACpBC,eAA2C,EAC3C,EACEP,qBAAqB,EACrBC,yBAAyB,EACO;IAElC,OACEM,gBACE,qDAAqD;KACpDZ,WAAW,CAACzF,iCACZyF,WAAW,CAACd,2CACb,gCAAgC;KAC/Bc,WAAW,CAAC7C,mCAAmCkD,wBAChD,qBAAqB;KACpBL,WAAW,CAAC7D,8BAA8BmE;AAEjD;AAUO,eAAeO,wBACpBD,eAA2C,EAC3C,EACET,iBAAiB,EACjBE,qBAAqB,EACrBC,yBAAyB,EACzB9E,uBAAuB,EACvBC,OAAO,EACwB;IAEjC,OACEmF,gBACE,qDAAqD;KACpDZ,WAAW,CAACzF,iCACb,sEAAsE;KACrEyF,WAAW,CACVzE,4BAA4BC,yBAAyBC,UAEvD,gCAAgC;KAC/BuE,WAAW,CAAC7C,mCAAmCkD,wBAChD,qBAAqB;KACpBL,WAAW,CAAC7D,8BAA8BmE,4BAC3C,+EAA+E;KAC9EN,WAAW,CACV7B,yCAAyCgC,mBAAmB,OAE9D,kDAAkD;KACjDH,WAAW,CAACnB;AAEnB;AAEO,eAAeiC,gCACpBF,eAA2C,EAC3C,EACET,iBAAiB,EACjBE,qBAAqB,EACrBC,yBAAyB,EACzB9E,uBAAuB,EACvBC,OAAO,EACwB;IAEjC,2EAA2E;IAC3E,uEAAuE;IACvE,eAAe;IACf,OACEmF,gBACE,qDAAqD;KACpDZ,WAAW,CAACzF,iCACb,sEAAsE;KACrEyF,WAAW,CACVzE,4BAA4BC,yBAAyBC,UAEvD,gCAAgC;KAC/BuE,WAAW,CAAC7C,mCAAmCkD,wBAChD,gDAAgD;KAC/CL,WAAW,CAACvC,oDACb,qBAAqB;KACpBuC,WAAW,CAAC7D,8BAA8BmE,4BAC3C,+EAA+E;KAC9EN,WAAW,CACV7B,yCAAyCgC,mBAAmB,OAE9D,kDAAkD;KACjDH,WAAW,CAACnB;AAEnB;AASO,eAAekC,0BACpBb,YAAwC,EACxC,EACE9B,4BAA4B,EAC5B+B,iBAAiB,EACjBE,qBAAqB,EACrBC,yBAAyB,EACH;IAExB,OACEJ,aACE,qDAAqD;KACpDF,WAAW,CAACzF,iCACb,gCAAgC;KAC/ByF,WAAW,CAAC7C,mCAAmCkD,wBAChD,qBAAqB;KACpBL,WAAW,CAAC7D,8BAA8BmE,4BAC3C,+EAA+E;KAC9EN,WAAW,CACV7B,yCACEgC,mBACA/B,+BAGJ,kDAAkD;KACjD4B,WAAW,CAACnB;AAEnB;AAEO,SAASmC;IACd,OAAO5I,iBAAiBwG;AAC1B","ignoreList":[0]}}, + {"offset": {"line": 5021, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/request-meta.ts"],"sourcesContent":["import type { IncomingMessage } from 'http'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { UrlWithParsedQuery } from 'url'\nimport type { BaseNextRequest } from './base-http'\nimport type { CloneableBody } from './body-streams'\nimport type { RouteMatch } from './route-matches/route-match'\nimport type { NEXT_RSC_UNION_QUERY } from '../client/components/app-router-headers'\nimport type {\n ResponseCacheEntry,\n ServerComponentsHmrCache,\n} from './response-cache'\nimport type { PagesDevOverlayBridgeType } from '../next-devtools/userspace/pages/pages-dev-overlay-setup'\nimport type { OpaqueFallbackRouteParams } from './request/fallback-params'\nimport type { IncrementalCache } from './lib/incremental-cache'\n\n// FIXME: (wyattjoh) this is a temporary solution to allow us to pass data between bundled modules\nexport const NEXT_REQUEST_META = Symbol.for('NextInternalRequestMeta')\n\nexport type NextIncomingMessage = (BaseNextRequest | IncomingMessage) & {\n [NEXT_REQUEST_META]?: RequestMeta\n}\n\n/**\n * The callback function to call when a response cache entry was generated or\n * looked up in the cache. When it returns true, the server assumes that the\n * handler has already responded to the request and will not do so itself.\n */\nexport type OnCacheEntryHandler = (\n /**\n * The response cache entry that was generated or looked up in the cache.\n */\n cacheEntry: ResponseCacheEntry,\n\n /**\n * The request metadata.\n */\n requestMeta: {\n /**\n * The URL that was used to make the request.\n */\n url: string | undefined\n }\n) => Promise | boolean | void\n\nexport interface RequestMeta {\n /**\n * The query that was used to make the request.\n */\n initQuery?: ParsedUrlQuery\n\n /**\n * The URL that was used to make the request.\n */\n initURL?: string\n\n /**\n * The protocol that was used to make the request.\n */\n initProtocol?: string\n\n /**\n * The body that was read from the request. This is used to allow the body to\n * be read multiple times.\n */\n clonableBody?: CloneableBody\n\n /**\n * True when the request matched a locale domain that was configured in the\n * next.config.js file.\n */\n isLocaleDomain?: boolean\n\n /**\n * True when the request had locale information stripped from the pathname\n * part of the URL.\n */\n didStripLocale?: boolean\n\n /**\n * If the request had it's URL rewritten, this is the URL it was rewritten to.\n */\n rewroteURL?: string\n\n /**\n * The cookies that were added by middleware and were added to the response.\n */\n middlewareCookie?: string[]\n\n /**\n * The match on the request for a given route.\n */\n match?: RouteMatch\n\n /**\n * The incremental cache to use for the request.\n */\n incrementalCache?: IncrementalCache\n\n /**\n * The server components HMR cache, only for dev.\n */\n serverComponentsHmrCache?: ServerComponentsHmrCache\n\n /**\n * Equals the segment path that was used for the prefetch RSC request.\n */\n segmentPrefetchRSCRequest?: string\n\n /**\n * True when the request is for the prefetch flight data.\n */\n isPrefetchRSCRequest?: true\n\n /**\n * True when the request is for the flight data.\n */\n isRSCRequest?: true\n\n /**\n * A search param set by the Next.js client when performing RSC requests.\n * Because some CDNs do not vary their cache entries on our custom headers,\n * this search param represents a hash of the header values. For any cached\n * RSC request, we should verify that the hash matches before responding.\n * Otherwise this can lead to cache poisoning.\n * TODO: Consider not using custom request headers at all, and instead encode\n * everything into the search param.\n */\n cacheBustingSearchParam?: string\n\n /**\n * True when the request is for the `/_next/data` route using the pages\n * router.\n */\n isNextDataReq?: true\n\n /**\n * Postponed state to use for resumption. If present it's assumed that the\n * request is for a page that has postponed (there are no guarantees that the\n * page actually has postponed though as it would incur an additional cache\n * lookup).\n */\n postponed?: string\n\n /**\n * If provided, this will be called when a response cache entry was generated\n * or looked up in the cache.\n *\n * @deprecated Use `onCacheEntryV2` instead.\n */\n onCacheEntry?: OnCacheEntryHandler\n\n /**\n * If provided, this will be called when a response cache entry was generated\n * or looked up in the cache.\n */\n onCacheEntryV2?: OnCacheEntryHandler\n\n /**\n * The previous revalidate before rendering 404 page for notFound: true\n */\n notFoundRevalidate?: number | false\n\n /**\n * In development, the original source page that returned a 404.\n */\n developmentNotFoundSourcePage?: string\n\n /**\n * The path we routed to and should be invoked\n */\n invokePath?: string\n\n /**\n * The specific page output we should be matching\n */\n invokeOutput?: string\n\n /**\n * The status we are invoking the request with from routing\n */\n invokeStatus?: number\n\n /**\n * The routing error we are invoking with\n */\n invokeError?: Error\n\n /**\n * The query parsed for the invocation\n */\n invokeQuery?: Record\n\n /**\n * Whether the request is a middleware invocation\n */\n middlewareInvoke?: boolean\n\n /**\n * Whether the request should render the fallback shell or not.\n */\n renderFallbackShell?: boolean\n\n /**\n * Whether the request is for the custom error page.\n */\n customErrorRender?: true\n\n /**\n * Whether to bubble up the NoFallbackError to the caller when a 404 is\n * returned.\n */\n bubbleNoFallback?: true\n\n /**\n * True when the request had locale information inferred from the default\n * locale.\n */\n localeInferredFromDefault?: true\n\n /**\n * The locale that was inferred or explicitly set for the request.\n */\n locale?: string\n\n /**\n * The default locale that was inferred or explicitly set for the request.\n */\n defaultLocale?: string\n\n /**\n * The relative project dir the server is running in from project root\n */\n relativeProjectDir?: string\n\n /**\n * The dist directory the server is currently using\n */\n distDir?: string\n\n /**\n * The query after resolving routes\n */\n query?: ParsedUrlQuery\n\n /**\n * The params after resolving routes\n */\n params?: ParsedUrlQuery\n\n /**\n * ErrorOverlay component to use in development for pages router\n */\n PagesErrorDebug?: PagesDevOverlayBridgeType\n\n /**\n * Whether server is in minimal mode (this will be replaced with more\n * specific flags in future)\n */\n minimalMode?: boolean\n\n /**\n * DEV only: The fallback params that should be used when validating prerenders during dev\n */\n devFallbackParams?: OpaqueFallbackRouteParams\n\n /**\n * DEV only: Request timings in process.hrtime.bigint()\n */\n devRequestTimingStart?: bigint\n devRequestTimingMiddlewareStart?: bigint\n devRequestTimingMiddlewareEnd?: bigint\n devRequestTimingInternalsEnd?: bigint\n\n /**\n * DEV only: The duration of getStaticPaths/generateStaticParams in process.hrtime.bigint()\n */\n devGenerateStaticParamsDuration?: bigint\n}\n\n/**\n * Gets the request metadata. If no key is provided, the entire metadata object\n * is returned.\n *\n * @param req the request to get the metadata from\n * @param key the key to get from the metadata (optional)\n * @returns the value for the key or the entire metadata object\n */\nexport function getRequestMeta(\n req: NextIncomingMessage,\n key?: undefined\n): RequestMeta\nexport function getRequestMeta(\n req: NextIncomingMessage,\n key: K\n): RequestMeta[K]\nexport function getRequestMeta(\n req: NextIncomingMessage,\n key?: K\n): RequestMeta | RequestMeta[K] {\n const meta = req[NEXT_REQUEST_META] || {}\n return typeof key === 'string' ? meta[key] : meta\n}\n\n/**\n * Sets the request metadata.\n *\n * @param req the request to set the metadata on\n * @param meta the metadata to set\n * @returns the mutated request metadata\n */\nexport function setRequestMeta(req: NextIncomingMessage, meta: RequestMeta) {\n req[NEXT_REQUEST_META] = meta\n return meta\n}\n\n/**\n * Adds a value to the request metadata.\n *\n * @param request the request to mutate\n * @param key the key to set\n * @param value the value to set\n * @returns the mutated request metadata\n */\nexport function addRequestMeta(\n request: NextIncomingMessage,\n key: K,\n value: RequestMeta[K]\n) {\n const meta = getRequestMeta(request)\n meta[key] = value\n return setRequestMeta(request, meta)\n}\n\n/**\n * Removes a key from the request metadata.\n *\n * @param request the request to mutate\n * @param key the key to remove\n * @returns the mutated request metadata\n */\nexport function removeRequestMeta(\n request: NextIncomingMessage,\n key: K\n) {\n const meta = getRequestMeta(request)\n delete meta[key]\n return setRequestMeta(request, meta)\n}\n\ntype NextQueryMetadata = {\n /**\n * The `_rsc` query parameter used for cache busting to ensure that the RSC\n * requests do not get cached by the browser explicitly.\n */\n [NEXT_RSC_UNION_QUERY]?: string\n}\n\nexport type NextParsedUrlQuery = ParsedUrlQuery & NextQueryMetadata\n\nexport interface NextUrlWithParsedQuery extends UrlWithParsedQuery {\n query: NextParsedUrlQuery\n}\n"],"names":["NEXT_REQUEST_META","Symbol","for","getRequestMeta","req","key","meta","setRequestMeta","addRequestMeta","request","value","removeRequestMeta"],"mappings":"AAeA,kGAAkG;;;;;;;;;;;;;AAC3F,MAAMA,oBAAoBC,OAAOC,GAAG,CAAC,2BAA0B;AAuR/D,SAASC,eACdC,GAAwB,EACxBC,GAAO;IAEP,MAAMC,OAAOF,GAAG,CAACJ,kBAAkB,IAAI,CAAC;IACxC,OAAO,OAAOK,QAAQ,WAAWC,IAAI,CAACD,IAAI,GAAGC;AAC/C;AASO,SAASC,eAAeH,GAAwB,EAAEE,IAAiB;IACxEF,GAAG,CAACJ,kBAAkB,GAAGM;IACzB,OAAOA;AACT;AAUO,SAASE,eACdC,OAA4B,EAC5BJ,GAAM,EACNK,KAAqB;IAErB,MAAMJ,OAAOH,eAAeM;IAC5BH,IAAI,CAACD,IAAI,GAAGK;IACZ,OAAOH,eAAeE,SAASH;AACjC;AASO,SAASK,kBACdF,OAA4B,EAC5BJ,GAAM;IAEN,MAAMC,OAAOH,eAAeM;IAC5B,OAAOH,IAAI,CAACD,IAAI;IAChB,OAAOE,eAAeE,SAASH;AACjC","ignoreList":[0]}}, + {"offset": {"line": 5057, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/utils.ts"],"sourcesContent":["import type { OutgoingHttpHeaders } from 'http'\nimport {\n NEXT_INTERCEPTION_MARKER_PREFIX,\n NEXT_QUERY_PARAM_PREFIX,\n} from '../../lib/constants'\n\n/**\n * Converts a Node.js IncomingHttpHeaders object to a Headers object. Any\n * headers with multiple values will be joined with a comma and space. Any\n * headers that have an undefined value will be ignored and others will be\n * coerced to strings.\n *\n * @param nodeHeaders the headers object to convert\n * @returns the converted headers object\n */\nexport function fromNodeOutgoingHttpHeaders(\n nodeHeaders: OutgoingHttpHeaders\n): Headers {\n const headers = new Headers()\n for (let [key, value] of Object.entries(nodeHeaders)) {\n const values = Array.isArray(value) ? value : [value]\n for (let v of values) {\n if (typeof v === 'undefined') continue\n if (typeof v === 'number') {\n v = v.toString()\n }\n\n headers.append(key, v)\n }\n }\n return headers\n}\n\n/*\n Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n that are within a single set-cookie field-value, such as in the Expires portion.\n This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n React Native's fetch does this for *every* header, including set-cookie.\n \n Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nexport function splitCookiesString(cookiesString: string) {\n var cookiesStrings = []\n var pos = 0\n var start\n var ch\n var lastComma\n var nextStart\n var cookiesSeparatorFound\n\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1\n }\n return pos < cookiesString.length\n }\n\n function notSpecialChar() {\n ch = cookiesString.charAt(pos)\n\n return ch !== '=' && ch !== ';' && ch !== ','\n }\n\n while (pos < cookiesString.length) {\n start = pos\n cookiesSeparatorFound = false\n\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos)\n if (ch === ',') {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos\n pos += 1\n\n skipWhitespace()\n nextStart = pos\n\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1\n }\n\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === '=') {\n // we found cookies separator\n cookiesSeparatorFound = true\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart\n cookiesStrings.push(cookiesString.substring(start, lastComma))\n start = pos\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1\n }\n } else {\n pos += 1\n }\n }\n\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length))\n }\n }\n\n return cookiesStrings\n}\n\n/**\n * Converts a Headers object to a Node.js OutgoingHttpHeaders object. This is\n * required to support the set-cookie header, which may have multiple values.\n *\n * @param headers the headers object to convert\n * @returns the converted headers object\n */\nexport function toNodeOutgoingHttpHeaders(\n headers: Headers\n): OutgoingHttpHeaders {\n const nodeHeaders: OutgoingHttpHeaders = {}\n const cookies: string[] = []\n if (headers) {\n for (const [key, value] of headers.entries()) {\n if (key.toLowerCase() === 'set-cookie') {\n // We may have gotten a comma joined string of cookies, or multiple\n // set-cookie headers. We need to merge them into one header array\n // to represent all the cookies.\n cookies.push(...splitCookiesString(value))\n nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies\n } else {\n nodeHeaders[key] = value\n }\n }\n }\n return nodeHeaders\n}\n\n/**\n * Validate the correctness of a user-provided URL.\n */\nexport function validateURL(url: string | URL): string {\n try {\n return String(new URL(String(url)))\n } catch (error: any) {\n throw new Error(\n `URL is malformed \"${String(\n url\n )}\". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`,\n { cause: error }\n )\n }\n}\n\n/**\n * Normalizes `nxtP` and `nxtI` query param values to remove the prefix.\n * This function does not mutate the input key.\n */\nexport function normalizeNextQueryParam(key: string): null | string {\n const prefixes = [NEXT_QUERY_PARAM_PREFIX, NEXT_INTERCEPTION_MARKER_PREFIX]\n for (const prefix of prefixes) {\n if (key !== prefix && key.startsWith(prefix)) {\n return key.substring(prefix.length)\n }\n }\n return null\n}\n"],"names":["NEXT_INTERCEPTION_MARKER_PREFIX","NEXT_QUERY_PARAM_PREFIX","fromNodeOutgoingHttpHeaders","nodeHeaders","headers","Headers","key","value","Object","entries","values","Array","isArray","v","toString","append","splitCookiesString","cookiesString","cookiesStrings","pos","start","ch","lastComma","nextStart","cookiesSeparatorFound","skipWhitespace","length","test","charAt","notSpecialChar","push","substring","toNodeOutgoingHttpHeaders","cookies","toLowerCase","validateURL","url","String","URL","error","Error","cause","normalizeNextQueryParam","prefixes","prefix","startsWith"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 5189, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/i18n/detect-domain-locale.ts"],"sourcesContent":["import type { DomainLocale } from '../../../server/config-shared'\n\nexport function detectDomainLocale(\n domainItems?: readonly DomainLocale[],\n hostname?: string,\n detectedLocale?: string\n) {\n if (!domainItems) return\n\n if (detectedLocale) {\n detectedLocale = detectedLocale.toLowerCase()\n }\n\n for (const item of domainItems) {\n // remove port if present\n const domainHostname = item.domain?.split(':', 1)[0].toLowerCase()\n if (\n hostname === domainHostname ||\n detectedLocale === item.defaultLocale.toLowerCase() ||\n item.locales?.some((locale) => locale.toLowerCase() === detectedLocale)\n ) {\n return item\n }\n }\n}\n"],"names":["detectDomainLocale","domainItems","hostname","detectedLocale","toLowerCase","item","domainHostname","domain","split","defaultLocale","locales","some","locale"],"mappings":";;;;AAEO,SAASA,mBACdC,WAAqC,EACrCC,QAAiB,EACjBC,cAAuB;IAEvB,IAAI,CAACF,aAAa;IAElB,IAAIE,gBAAgB;QAClBA,iBAAiBA,eAAeC,WAAW;IAC7C;IAEA,KAAK,MAAMC,QAAQJ,YAAa;QAC9B,yBAAyB;QACzB,MAAMK,iBAAiBD,KAAKE,MAAM,EAAEC,MAAM,KAAK,EAAE,CAAC,EAAE,CAACJ;QACrD,IACEF,aAAaI,kBACbH,mBAAmBE,KAAKI,aAAa,CAACL,WAAW,MACjDC,KAAKK,OAAO,EAAEC,KAAK,CAACC,SAAWA,OAAOR,WAAW,OAAOD,iBACxD;YACA,OAAOE;QACT;IACF;AACF","ignoreList":[0]}}, + {"offset": {"line": 5210, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/remove-trailing-slash.ts"],"sourcesContent":["/**\n * Removes the trailing slash for a given route or page path. Preserves the\n * root page. Examples:\n * - `/foo/bar/` -> `/foo/bar`\n * - `/foo/bar` -> `/foo/bar`\n * - `/` -> `/`\n */\nexport function removeTrailingSlash(route: string) {\n return route.replace(/\\/$/, '') || '/'\n}\n"],"names":["removeTrailingSlash","route","replace"],"mappings":"AAAA;;;;;;CAMC,GACD;;;;AAAO,SAASA,oBAAoBC,KAAa;IAC/C,OAAOA,MAAMC,OAAO,CAAC,OAAO,OAAO;AACrC","ignoreList":[0]}}, + {"offset": {"line": 5227, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/parse-path.ts"],"sourcesContent":["/**\n * Given a path this function will find the pathname, query and hash and return\n * them. This is useful to parse full paths on the client side.\n * @param path A path to parse e.g. /foo/bar?id=1#hash\n */\nexport function parsePath(path: string) {\n const hashIndex = path.indexOf('#')\n const queryIndex = path.indexOf('?')\n const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex)\n\n if (hasQuery || hashIndex > -1) {\n return {\n pathname: path.substring(0, hasQuery ? queryIndex : hashIndex),\n query: hasQuery\n ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined)\n : '',\n hash: hashIndex > -1 ? path.slice(hashIndex) : '',\n }\n }\n\n return { pathname: path, query: '', hash: '' }\n}\n"],"names":["parsePath","path","hashIndex","indexOf","queryIndex","hasQuery","pathname","substring","query","undefined","hash","slice"],"mappings":"AAAA;;;;CAIC,GACD;;;;AAAO,SAASA,UAAUC,IAAY;IACpC,MAAMC,YAAYD,KAAKE,OAAO,CAAC;IAC/B,MAAMC,aAAaH,KAAKE,OAAO,CAAC;IAChC,MAAME,WAAWD,aAAa,CAAC,KAAMF,CAAAA,YAAY,KAAKE,aAAaF,SAAQ;IAE3E,IAAIG,YAAYH,YAAY,CAAC,GAAG;QAC9B,OAAO;YACLI,UAAUL,KAAKM,SAAS,CAAC,GAAGF,WAAWD,aAAaF;YACpDM,OAAOH,WACHJ,KAAKM,SAAS,CAACH,YAAYF,YAAY,CAAC,IAAIA,YAAYO,aACxD;YACJC,MAAMR,YAAY,CAAC,IAAID,KAAKU,KAAK,CAACT,aAAa;QACjD;IACF;IAEA,OAAO;QAAEI,UAAUL;QAAMO,OAAO;QAAIE,MAAM;IAAG;AAC/C","ignoreList":[0]}}, + {"offset": {"line": 5256, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/add-path-prefix.ts"],"sourcesContent":["import { parsePath } from './parse-path'\n\n/**\n * Adds the provided prefix to the given path. It first ensures that the path\n * is indeed starting with a slash.\n */\nexport function addPathPrefix(path: string, prefix?: string) {\n if (!path.startsWith('/') || !prefix) {\n return path\n }\n\n const { pathname, query, hash } = parsePath(path)\n return `${prefix}${pathname}${query}${hash}`\n}\n"],"names":["parsePath","addPathPrefix","path","prefix","startsWith","pathname","query","hash"],"mappings":";;;;AAAA,SAASA,SAAS,QAAQ,eAAc;;AAMjC,SAASC,cAAcC,IAAY,EAAEC,MAAe;IACzD,IAAI,CAACD,KAAKE,UAAU,CAAC,QAAQ,CAACD,QAAQ;QACpC,OAAOD;IACT;IAEA,MAAM,EAAEG,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAE,OAAGP,mPAAAA,EAAUE;IAC5C,OAAO,GAAGC,SAASE,WAAWC,QAAQC,MAAM;AAC9C","ignoreList":[0]}}, + {"offset": {"line": 5273, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/add-path-suffix.ts"],"sourcesContent":["import { parsePath } from './parse-path'\n\n/**\n * Similarly to `addPathPrefix`, this function adds a suffix at the end on the\n * provided path. It also works only for paths ensuring the argument starts\n * with a slash.\n */\nexport function addPathSuffix(path: string, suffix?: string) {\n if (!path.startsWith('/') || !suffix) {\n return path\n }\n\n const { pathname, query, hash } = parsePath(path)\n return `${pathname}${suffix}${query}${hash}`\n}\n"],"names":["parsePath","addPathSuffix","path","suffix","startsWith","pathname","query","hash"],"mappings":";;;;AAAA,SAASA,SAAS,QAAQ,eAAc;;AAOjC,SAASC,cAAcC,IAAY,EAAEC,MAAe;IACzD,IAAI,CAACD,KAAKE,UAAU,CAAC,QAAQ,CAACD,QAAQ;QACpC,OAAOD;IACT;IAEA,MAAM,EAAEG,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAE,OAAGP,mPAAAA,EAAUE;IAC5C,OAAO,GAAGG,WAAWF,SAASG,QAAQC,MAAM;AAC9C","ignoreList":[0]}}, + {"offset": {"line": 5290, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/path-has-prefix.ts"],"sourcesContent":["import { parsePath } from './parse-path'\n\n/**\n * Checks if a given path starts with a given prefix. It ensures it matches\n * exactly without containing extra chars. e.g. prefix /docs should replace\n * for /docs, /docs/, /docs/a but not /docsss\n * @param path The path to check.\n * @param prefix The prefix to check against.\n */\nexport function pathHasPrefix(path: string, prefix: string) {\n if (typeof path !== 'string') {\n return false\n }\n\n const { pathname } = parsePath(path)\n return pathname === prefix || pathname.startsWith(prefix + '/')\n}\n"],"names":["parsePath","pathHasPrefix","path","prefix","pathname","startsWith"],"mappings":";;;;AAAA,SAASA,SAAS,QAAQ,eAAc;;AASjC,SAASC,cAAcC,IAAY,EAAEC,MAAc;IACxD,IAAI,OAAOD,SAAS,UAAU;QAC5B,OAAO;IACT;IAEA,MAAM,EAAEE,QAAQ,EAAE,OAAGJ,mPAAAA,EAAUE;IAC/B,OAAOE,aAAaD,UAAUC,SAASC,UAAU,CAACF,SAAS;AAC7D","ignoreList":[0]}}, + {"offset": {"line": 5307, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/add-locale.ts"],"sourcesContent":["import { addPathPrefix } from './add-path-prefix'\nimport { pathHasPrefix } from './path-has-prefix'\n\n/**\n * For a given path and a locale, if the locale is given, it will prefix the\n * locale. The path shouldn't be an API path. If a default locale is given the\n * prefix will be omitted if the locale is already the default locale.\n */\nexport function addLocale(\n path: string,\n locale?: string | false,\n defaultLocale?: string,\n ignorePrefix?: boolean\n) {\n // If no locale was given or the locale is the default locale, we don't need\n // to prefix the path.\n if (!locale || locale === defaultLocale) return path\n\n const lower = path.toLowerCase()\n\n // If the path is an API path or the path already has the locale prefix, we\n // don't need to prefix the path.\n if (!ignorePrefix) {\n if (pathHasPrefix(lower, '/api')) return path\n if (pathHasPrefix(lower, `/${locale.toLowerCase()}`)) return path\n }\n\n // Add the locale prefix to the path.\n return addPathPrefix(path, `/${locale}`)\n}\n"],"names":["addPathPrefix","pathHasPrefix","addLocale","path","locale","defaultLocale","ignorePrefix","lower","toLowerCase"],"mappings":";;;;AAAA,SAASA,aAAa,QAAQ,oBAAmB;AACjD,SAASC,aAAa,QAAQ,oBAAmB;;;AAO1C,SAASC,UACdC,IAAY,EACZC,MAAuB,EACvBC,aAAsB,EACtBC,YAAsB;IAEtB,4EAA4E;IAC5E,sBAAsB;IACtB,IAAI,CAACF,UAAUA,WAAWC,eAAe,OAAOF;IAEhD,MAAMI,QAAQJ,KAAKK,WAAW;IAE9B,2EAA2E;IAC3E,iCAAiC;IACjC,IAAI,CAACF,cAAc;QACjB,QAAIL,+PAAAA,EAAcM,OAAO,SAAS,OAAOJ;QACzC,QAAIF,+PAAAA,EAAcM,OAAO,CAAC,CAAC,EAAEH,OAAOI,WAAW,IAAI,GAAG,OAAOL;IAC/D;IAEA,qCAAqC;IACrC,WAAOH,+PAAAA,EAAcG,MAAM,CAAC,CAAC,EAAEC,QAAQ;AACzC","ignoreList":[0]}}, + {"offset": {"line": 5333, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/format-next-pathname-info.ts"],"sourcesContent":["import type { NextPathnameInfo } from './get-next-pathname-info'\nimport { removeTrailingSlash } from './remove-trailing-slash'\nimport { addPathPrefix } from './add-path-prefix'\nimport { addPathSuffix } from './add-path-suffix'\nimport { addLocale } from './add-locale'\n\ninterface ExtendedInfo extends NextPathnameInfo {\n defaultLocale?: string\n ignorePrefix?: boolean\n}\n\nexport function formatNextPathnameInfo(info: ExtendedInfo) {\n let pathname = addLocale(\n info.pathname,\n info.locale,\n info.buildId ? undefined : info.defaultLocale,\n info.ignorePrefix\n )\n\n if (info.buildId || !info.trailingSlash) {\n pathname = removeTrailingSlash(pathname)\n }\n\n if (info.buildId) {\n pathname = addPathSuffix(\n addPathPrefix(pathname, `/_next/data/${info.buildId}`),\n info.pathname === '/' ? 'index.json' : '.json'\n )\n }\n\n pathname = addPathPrefix(pathname, info.basePath)\n return !info.buildId && info.trailingSlash\n ? !pathname.endsWith('/')\n ? addPathSuffix(pathname, '/')\n : pathname\n : removeTrailingSlash(pathname)\n}\n"],"names":["removeTrailingSlash","addPathPrefix","addPathSuffix","addLocale","formatNextPathnameInfo","info","pathname","locale","buildId","undefined","defaultLocale","ignorePrefix","trailingSlash","basePath","endsWith"],"mappings":";;;;AACA,SAASA,mBAAmB,QAAQ,0BAAyB;AAC7D,SAASC,aAAa,QAAQ,oBAAmB;AACjD,SAASC,aAAa,QAAQ,oBAAmB;AACjD,SAASC,SAAS,QAAQ,eAAc;;;;;AAOjC,SAASC,uBAAuBC,IAAkB;IACvD,IAAIC,eAAWH,mPAAAA,EACbE,KAAKC,QAAQ,EACbD,KAAKE,MAAM,EACXF,KAAKG,OAAO,GAAGC,YAAYJ,KAAKK,aAAa,EAC7CL,KAAKM,YAAY;IAGnB,IAAIN,KAAKG,OAAO,IAAI,CAACH,KAAKO,aAAa,EAAE;QACvCN,eAAWN,2QAAAA,EAAoBM;IACjC;IAEA,IAAID,KAAKG,OAAO,EAAE;QAChBF,eAAWJ,+PAAAA,MACTD,+PAAAA,EAAcK,UAAU,CAAC,YAAY,EAAED,KAAKG,OAAO,EAAE,GACrDH,KAAKC,QAAQ,KAAK,MAAM,eAAe;IAE3C;IAEAA,eAAWL,+PAAAA,EAAcK,UAAUD,KAAKQ,QAAQ;IAChD,OAAO,CAACR,KAAKG,OAAO,IAAIH,KAAKO,aAAa,GACtC,CAACN,SAASQ,QAAQ,CAAC,WACjBZ,+PAAAA,EAAcI,UAAU,OACxBA,eACFN,2QAAAA,EAAoBM;AAC1B","ignoreList":[0]}}, + {"offset": {"line": 5360, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/get-hostname.ts"],"sourcesContent":["import type { OutgoingHttpHeaders } from 'http'\n\n/**\n * Takes an object with a hostname property (like a parsed URL) and some\n * headers that may contain Host and returns the preferred hostname.\n * @param parsed An object containing a hostname property.\n * @param headers A dictionary with headers containing a `host`.\n */\nexport function getHostname(\n parsed: { hostname?: string | null },\n headers?: OutgoingHttpHeaders\n): string | undefined {\n // Get the hostname from the headers if it exists, otherwise use the parsed\n // hostname.\n let hostname: string\n if (headers?.host && !Array.isArray(headers.host)) {\n hostname = headers.host.toString().split(':', 1)[0]\n } else if (parsed.hostname) {\n hostname = parsed.hostname\n } else return\n\n return hostname.toLowerCase()\n}\n"],"names":["getHostname","parsed","headers","hostname","host","Array","isArray","toString","split","toLowerCase"],"mappings":"AAEA;;;;;CAKC,GACD;;;;AAAO,SAASA,YACdC,MAAoC,EACpCC,OAA6B;IAE7B,2EAA2E;IAC3E,YAAY;IACZ,IAAIC;IACJ,IAAID,SAASE,QAAQ,CAACC,MAAMC,OAAO,CAACJ,QAAQE,IAAI,GAAG;QACjDD,WAAWD,QAAQE,IAAI,CAACG,QAAQ,GAAGC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE;IACrD,OAAO,IAAIP,OAAOE,QAAQ,EAAE;QAC1BA,WAAWF,OAAOE,QAAQ;IAC5B,OAAO;IAEP,OAAOA,SAASM,WAAW;AAC7B","ignoreList":[0]}}, + {"offset": {"line": 5384, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/i18n/normalize-locale-path.ts"],"sourcesContent":["export interface PathLocale {\n detectedLocale?: string\n pathname: string\n}\n\n/**\n * A cache of lowercased locales for each list of locales. This is stored as a\n * WeakMap so if the locales are garbage collected, the cache entry will be\n * removed as well.\n */\nconst cache = new WeakMap()\n\n/**\n * For a pathname that may include a locale from a list of locales, it\n * removes the locale from the pathname returning it alongside with the\n * detected locale.\n *\n * @param pathname A pathname that may include a locale.\n * @param locales A list of locales.\n * @returns The detected locale and pathname without locale\n */\nexport function normalizeLocalePath(\n pathname: string,\n locales?: readonly string[]\n): PathLocale {\n // If locales is undefined, return the pathname as is.\n if (!locales) return { pathname }\n\n // Get the cached lowercased locales or create a new cache entry.\n let lowercasedLocales = cache.get(locales)\n if (!lowercasedLocales) {\n lowercasedLocales = locales.map((locale) => locale.toLowerCase())\n cache.set(locales, lowercasedLocales)\n }\n\n let detectedLocale: string | undefined\n\n // The first segment will be empty, because it has a leading `/`. If\n // there is no further segment, there is no locale (or it's the default).\n const segments = pathname.split('/', 2)\n\n // If there's no second segment (ie, the pathname is just `/`), there's no\n // locale.\n if (!segments[1]) return { pathname }\n\n // The second segment will contain the locale part if any.\n const segment = segments[1].toLowerCase()\n\n // See if the segment matches one of the locales. If it doesn't, there is\n // no locale (or it's the default).\n const index = lowercasedLocales.indexOf(segment)\n if (index < 0) return { pathname }\n\n // Return the case-sensitive locale.\n detectedLocale = locales[index]\n\n // Remove the `/${locale}` part of the pathname.\n pathname = pathname.slice(detectedLocale.length + 1) || '/'\n\n return { pathname, detectedLocale }\n}\n"],"names":["cache","WeakMap","normalizeLocalePath","pathname","locales","lowercasedLocales","get","map","locale","toLowerCase","set","detectedLocale","segments","split","segment","index","indexOf","slice","length"],"mappings":";;;;AAKA;;;;CAIC,GACD,MAAMA,QAAQ,IAAIC;AAWX,SAASC,oBACdC,QAAgB,EAChBC,OAA2B;IAE3B,sDAAsD;IACtD,IAAI,CAACA,SAAS,OAAO;QAAED;IAAS;IAEhC,iEAAiE;IACjE,IAAIE,oBAAoBL,MAAMM,GAAG,CAACF;IAClC,IAAI,CAACC,mBAAmB;QACtBA,oBAAoBD,QAAQG,GAAG,CAAC,CAACC,SAAWA,OAAOC,WAAW;QAC9DT,MAAMU,GAAG,CAACN,SAASC;IACrB;IAEA,IAAIM;IAEJ,oEAAoE;IACpE,yEAAyE;IACzE,MAAMC,WAAWT,SAASU,KAAK,CAAC,KAAK;IAErC,0EAA0E;IAC1E,UAAU;IACV,IAAI,CAACD,QAAQ,CAAC,EAAE,EAAE,OAAO;QAAET;IAAS;IAEpC,0DAA0D;IAC1D,MAAMW,UAAUF,QAAQ,CAAC,EAAE,CAACH,WAAW;IAEvC,yEAAyE;IACzE,mCAAmC;IACnC,MAAMM,QAAQV,kBAAkBW,OAAO,CAACF;IACxC,IAAIC,QAAQ,GAAG,OAAO;QAAEZ;IAAS;IAEjC,oCAAoC;IACpCQ,iBAAiBP,OAAO,CAACW,MAAM;IAE/B,gDAAgD;IAChDZ,WAAWA,SAASc,KAAK,CAACN,eAAeO,MAAM,GAAG,MAAM;IAExD,OAAO;QAAEf;QAAUQ;IAAe;AACpC","ignoreList":[0]}}, + {"offset": {"line": 5434, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/remove-path-prefix.ts"],"sourcesContent":["import { pathHasPrefix } from './path-has-prefix'\n\n/**\n * Given a path and a prefix it will remove the prefix when it exists in the\n * given path. It ensures it matches exactly without containing extra chars\n * and if the prefix is not there it will be noop.\n *\n * @param path The path to remove the prefix from.\n * @param prefix The prefix to be removed.\n */\nexport function removePathPrefix(path: string, prefix: string): string {\n // If the path doesn't start with the prefix we can return it as is. This\n // protects us from situations where the prefix is a substring of the path\n // prefix such as:\n //\n // For prefix: /blog\n //\n // /blog -> true\n // /blog/ -> true\n // /blog/1 -> true\n // /blogging -> false\n // /blogging/ -> false\n // /blogging/1 -> false\n if (!pathHasPrefix(path, prefix)) {\n return path\n }\n\n // Remove the prefix from the path via slicing.\n const withoutPrefix = path.slice(prefix.length)\n\n // If the path without the prefix starts with a `/` we can return it as is.\n if (withoutPrefix.startsWith('/')) {\n return withoutPrefix\n }\n\n // If the path without the prefix doesn't start with a `/` we need to add it\n // back to the path to make sure it's a valid path.\n return `/${withoutPrefix}`\n}\n"],"names":["pathHasPrefix","removePathPrefix","path","prefix","withoutPrefix","slice","length","startsWith"],"mappings":";;;;AAAA,SAASA,aAAa,QAAQ,oBAAmB;;AAU1C,SAASC,iBAAiBC,IAAY,EAAEC,MAAc;IAC3D,yEAAyE;IACzE,0EAA0E;IAC1E,kBAAkB;IAClB,EAAE;IACF,oBAAoB;IACpB,EAAE;IACF,kBAAkB;IAClB,mBAAmB;IACnB,oBAAoB;IACpB,uBAAuB;IACvB,wBAAwB;IACxB,yBAAyB;IACzB,IAAI,KAACH,+PAAAA,EAAcE,MAAMC,SAAS;QAChC,OAAOD;IACT;IAEA,+CAA+C;IAC/C,MAAME,gBAAgBF,KAAKG,KAAK,CAACF,OAAOG,MAAM;IAE9C,2EAA2E;IAC3E,IAAIF,cAAcG,UAAU,CAAC,MAAM;QACjC,OAAOH;IACT;IAEA,4EAA4E;IAC5E,mDAAmD;IACnD,OAAO,CAAC,CAAC,EAAEA,eAAe;AAC5B","ignoreList":[0]}}, + {"offset": {"line": 5470, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/get-next-pathname-info.ts"],"sourcesContent":["import { normalizeLocalePath } from '../../i18n/normalize-locale-path'\nimport { removePathPrefix } from './remove-path-prefix'\nimport { pathHasPrefix } from './path-has-prefix'\nimport type { I18NProvider } from '../../../../server/lib/i18n-provider'\n\nexport interface NextPathnameInfo {\n /**\n * The base path in case the pathname included it.\n */\n basePath?: string\n /**\n * The buildId for when the parsed URL is a data URL. Parsing it can be\n * disabled with the `parseData` option.\n */\n buildId?: string\n /**\n * If there was a locale in the pathname, this will hold its value.\n */\n locale?: string\n /**\n * The processed pathname without a base path, locale, or data URL elements\n * when parsing it is enabled.\n */\n pathname: string\n /**\n * A boolean telling if the pathname had a trailingSlash. This can be only\n * true if trailingSlash is enabled.\n */\n trailingSlash?: boolean\n}\n\ninterface Options {\n /**\n * When passed to true, this function will also parse Nextjs data URLs.\n */\n parseData?: boolean\n /**\n * A partial of the Next.js configuration to parse the URL.\n */\n nextConfig?: {\n basePath?: string\n i18n?: { locales?: readonly string[] } | null\n trailingSlash?: boolean\n }\n\n /**\n * If provided, this normalizer will be used to detect the locale instead of\n * the default locale detection.\n */\n i18nProvider?: I18NProvider\n}\n\nexport function getNextPathnameInfo(\n pathname: string,\n options: Options\n): NextPathnameInfo {\n const { basePath, i18n, trailingSlash } = options.nextConfig ?? {}\n const info: NextPathnameInfo = {\n pathname,\n trailingSlash: pathname !== '/' ? pathname.endsWith('/') : trailingSlash,\n }\n\n if (basePath && pathHasPrefix(info.pathname, basePath)) {\n info.pathname = removePathPrefix(info.pathname, basePath)\n info.basePath = basePath\n }\n let pathnameNoDataPrefix = info.pathname\n\n if (\n info.pathname.startsWith('/_next/data/') &&\n info.pathname.endsWith('.json')\n ) {\n const paths = info.pathname\n .replace(/^\\/_next\\/data\\//, '')\n .replace(/\\.json$/, '')\n .split('/')\n\n const buildId = paths[0]\n info.buildId = buildId\n pathnameNoDataPrefix =\n paths[1] !== 'index' ? `/${paths.slice(1).join('/')}` : '/'\n\n // update pathname with normalized if enabled although\n // we use normalized to populate locale info still\n if (options.parseData === true) {\n info.pathname = pathnameNoDataPrefix\n }\n }\n\n // If provided, use the locale route normalizer to detect the locale instead\n // of the function below.\n if (i18n) {\n let result = options.i18nProvider\n ? options.i18nProvider.analyze(info.pathname)\n : normalizeLocalePath(info.pathname, i18n.locales)\n\n info.locale = result.detectedLocale\n info.pathname = result.pathname ?? info.pathname\n\n if (!result.detectedLocale && info.buildId) {\n result = options.i18nProvider\n ? options.i18nProvider.analyze(pathnameNoDataPrefix)\n : normalizeLocalePath(pathnameNoDataPrefix, i18n.locales)\n\n if (result.detectedLocale) {\n info.locale = result.detectedLocale\n }\n }\n }\n return info\n}\n"],"names":["normalizeLocalePath","removePathPrefix","pathHasPrefix","getNextPathnameInfo","pathname","options","basePath","i18n","trailingSlash","nextConfig","info","endsWith","pathnameNoDataPrefix","startsWith","paths","replace","split","buildId","slice","join","parseData","result","i18nProvider","analyze","locales","locale","detectedLocale"],"mappings":";;;;AAAA,SAASA,mBAAmB,QAAQ,mCAAkC;AACtE,SAASC,gBAAgB,QAAQ,uBAAsB;AACvD,SAASC,aAAa,QAAQ,oBAAmB;;;;AAkD1C,SAASC,oBACdC,QAAgB,EAChBC,OAAgB;IAEhB,MAAM,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,aAAa,EAAE,GAAGH,QAAQI,UAAU,IAAI,CAAC;IACjE,MAAMC,OAAyB;QAC7BN;QACAI,eAAeJ,aAAa,MAAMA,SAASO,QAAQ,CAAC,OAAOH;IAC7D;IAEA,IAAIF,gBAAYJ,+PAAAA,EAAcQ,KAAKN,QAAQ,EAAEE,WAAW;QACtDI,KAAKN,QAAQ,OAAGH,qQAAAA,EAAiBS,KAAKN,QAAQ,EAAEE;QAChDI,KAAKJ,QAAQ,GAAGA;IAClB;IACA,IAAIM,uBAAuBF,KAAKN,QAAQ;IAExC,IACEM,KAAKN,QAAQ,CAACS,UAAU,CAAC,mBACzBH,KAAKN,QAAQ,CAACO,QAAQ,CAAC,UACvB;QACA,MAAMG,QAAQJ,KAAKN,QAAQ,CACxBW,OAAO,CAAC,oBAAoB,IAC5BA,OAAO,CAAC,WAAW,IACnBC,KAAK,CAAC;QAET,MAAMC,UAAUH,KAAK,CAAC,EAAE;QACxBJ,KAAKO,OAAO,GAAGA;QACfL,uBACEE,KAAK,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,EAAEA,MAAMI,KAAK,CAAC,GAAGC,IAAI,CAAC,MAAM,GAAG;QAE1D,sDAAsD;QACtD,kDAAkD;QAClD,IAAId,QAAQe,SAAS,KAAK,MAAM;YAC9BV,KAAKN,QAAQ,GAAGQ;QAClB;IACF;IAEA,4EAA4E;IAC5E,yBAAyB;IACzB,IAAIL,MAAM;QACR,IAAIc,SAAShB,QAAQiB,YAAY,GAC7BjB,QAAQiB,YAAY,CAACC,OAAO,CAACb,KAAKN,QAAQ,QAC1CJ,gQAAAA,EAAoBU,KAAKN,QAAQ,EAAEG,KAAKiB,OAAO;QAEnDd,KAAKe,MAAM,GAAGJ,OAAOK,cAAc;QACnChB,KAAKN,QAAQ,GAAGiB,OAAOjB,QAAQ,IAAIM,KAAKN,QAAQ;QAEhD,IAAI,CAACiB,OAAOK,cAAc,IAAIhB,KAAKO,OAAO,EAAE;YAC1CI,SAAShB,QAAQiB,YAAY,GACzBjB,QAAQiB,YAAY,CAACC,OAAO,CAACX,4BAC7BZ,gQAAAA,EAAoBY,sBAAsBL,KAAKiB,OAAO;YAE1D,IAAIH,OAAOK,cAAc,EAAE;gBACzBhB,KAAKe,MAAM,GAAGJ,OAAOK,cAAc;YACrC;QACF;IACF;IACA,OAAOhB;AACT","ignoreList":[0]}}, + {"offset": {"line": 5521, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/next-url.ts"],"sourcesContent":["import type { OutgoingHttpHeaders } from 'http'\nimport type { DomainLocale, I18NConfig } from '../config-shared'\nimport type { I18NProvider } from '../lib/i18n-provider'\n\nimport { detectDomainLocale } from '../../shared/lib/i18n/detect-domain-locale'\nimport { formatNextPathnameInfo } from '../../shared/lib/router/utils/format-next-pathname-info'\nimport { getHostname } from '../../shared/lib/get-hostname'\nimport { getNextPathnameInfo } from '../../shared/lib/router/utils/get-next-pathname-info'\n\ninterface Options {\n base?: string | URL\n headers?: OutgoingHttpHeaders\n forceLocale?: boolean\n nextConfig?: {\n basePath?: string\n i18n?: I18NConfig | null\n trailingSlash?: boolean\n }\n i18nProvider?: I18NProvider\n}\n\nconst REGEX_LOCALHOST_HOSTNAME =\n /(?!^https?:\\/\\/)(127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\\[::1\\]|localhost)/\n\nfunction parseURL(url: string | URL, base?: string | URL) {\n return new URL(\n String(url).replace(REGEX_LOCALHOST_HOSTNAME, 'localhost'),\n base && String(base).replace(REGEX_LOCALHOST_HOSTNAME, 'localhost')\n )\n}\n\nconst Internal = Symbol('NextURLInternal')\n\nexport class NextURL {\n private [Internal]: {\n basePath: string\n buildId?: string\n flightSearchParameters?: Record\n defaultLocale?: string\n domainLocale?: DomainLocale\n locale?: string\n options: Options\n trailingSlash?: boolean\n url: URL\n }\n\n constructor(input: string | URL, base?: string | URL, opts?: Options)\n constructor(input: string | URL, opts?: Options)\n constructor(\n input: string | URL,\n baseOrOpts?: string | URL | Options,\n opts?: Options\n ) {\n let base: undefined | string | URL\n let options: Options\n\n if (\n (typeof baseOrOpts === 'object' && 'pathname' in baseOrOpts) ||\n typeof baseOrOpts === 'string'\n ) {\n base = baseOrOpts\n options = opts || {}\n } else {\n options = opts || baseOrOpts || {}\n }\n\n this[Internal] = {\n url: parseURL(input, base ?? options.base),\n options: options,\n basePath: '',\n }\n\n this.analyze()\n }\n\n private analyze() {\n const info = getNextPathnameInfo(this[Internal].url.pathname, {\n nextConfig: this[Internal].options.nextConfig,\n parseData: !process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE,\n i18nProvider: this[Internal].options.i18nProvider,\n })\n\n const hostname = getHostname(\n this[Internal].url,\n this[Internal].options.headers\n )\n this[Internal].domainLocale = this[Internal].options.i18nProvider\n ? this[Internal].options.i18nProvider.detectDomainLocale(hostname)\n : detectDomainLocale(\n this[Internal].options.nextConfig?.i18n?.domains,\n hostname\n )\n\n const defaultLocale =\n this[Internal].domainLocale?.defaultLocale ||\n this[Internal].options.nextConfig?.i18n?.defaultLocale\n\n this[Internal].url.pathname = info.pathname\n this[Internal].defaultLocale = defaultLocale\n this[Internal].basePath = info.basePath ?? ''\n this[Internal].buildId = info.buildId\n this[Internal].locale = info.locale ?? defaultLocale\n this[Internal].trailingSlash = info.trailingSlash\n }\n\n private formatPathname() {\n return formatNextPathnameInfo({\n basePath: this[Internal].basePath,\n buildId: this[Internal].buildId,\n defaultLocale: !this[Internal].options.forceLocale\n ? this[Internal].defaultLocale\n : undefined,\n locale: this[Internal].locale,\n pathname: this[Internal].url.pathname,\n trailingSlash: this[Internal].trailingSlash,\n })\n }\n\n private formatSearch() {\n return this[Internal].url.search\n }\n\n public get buildId() {\n return this[Internal].buildId\n }\n\n public set buildId(buildId: string | undefined) {\n this[Internal].buildId = buildId\n }\n\n public get locale() {\n return this[Internal].locale ?? ''\n }\n\n public set locale(locale: string) {\n if (\n !this[Internal].locale ||\n !this[Internal].options.nextConfig?.i18n?.locales.includes(locale)\n ) {\n throw new TypeError(\n `The NextURL configuration includes no locale \"${locale}\"`\n )\n }\n\n this[Internal].locale = locale\n }\n\n get defaultLocale() {\n return this[Internal].defaultLocale\n }\n\n get domainLocale() {\n return this[Internal].domainLocale\n }\n\n get searchParams() {\n return this[Internal].url.searchParams\n }\n\n get host() {\n return this[Internal].url.host\n }\n\n set host(value: string) {\n this[Internal].url.host = value\n }\n\n get hostname() {\n return this[Internal].url.hostname\n }\n\n set hostname(value: string) {\n this[Internal].url.hostname = value\n }\n\n get port() {\n return this[Internal].url.port\n }\n\n set port(value: string) {\n this[Internal].url.port = value\n }\n\n get protocol() {\n return this[Internal].url.protocol\n }\n\n set protocol(value: string) {\n this[Internal].url.protocol = value\n }\n\n get href() {\n const pathname = this.formatPathname()\n const search = this.formatSearch()\n return `${this.protocol}//${this.host}${pathname}${search}${this.hash}`\n }\n\n set href(url: string) {\n this[Internal].url = parseURL(url)\n this.analyze()\n }\n\n get origin() {\n return this[Internal].url.origin\n }\n\n get pathname() {\n return this[Internal].url.pathname\n }\n\n set pathname(value: string) {\n this[Internal].url.pathname = value\n }\n\n get hash() {\n return this[Internal].url.hash\n }\n\n set hash(value: string) {\n this[Internal].url.hash = value\n }\n\n get search() {\n return this[Internal].url.search\n }\n\n set search(value: string) {\n this[Internal].url.search = value\n }\n\n get password() {\n return this[Internal].url.password\n }\n\n set password(value: string) {\n this[Internal].url.password = value\n }\n\n get username() {\n return this[Internal].url.username\n }\n\n set username(value: string) {\n this[Internal].url.username = value\n }\n\n get basePath() {\n return this[Internal].basePath\n }\n\n set basePath(value: string) {\n this[Internal].basePath = value.startsWith('/') ? value : `/${value}`\n }\n\n toString() {\n return this.href\n }\n\n toJSON() {\n return this.href\n }\n\n [Symbol.for('edge-runtime.inspect.custom')]() {\n return {\n href: this.href,\n origin: this.origin,\n protocol: this.protocol,\n username: this.username,\n password: this.password,\n host: this.host,\n hostname: this.hostname,\n port: this.port,\n pathname: this.pathname,\n search: this.search,\n searchParams: this.searchParams,\n hash: this.hash,\n }\n }\n\n clone() {\n return new NextURL(String(this), this[Internal].options)\n }\n}\n"],"names":["detectDomainLocale","formatNextPathnameInfo","getHostname","getNextPathnameInfo","REGEX_LOCALHOST_HOSTNAME","parseURL","url","base","URL","String","replace","Internal","Symbol","NextURL","constructor","input","baseOrOpts","opts","options","basePath","analyze","info","pathname","nextConfig","parseData","process","env","__NEXT_NO_MIDDLEWARE_URL_NORMALIZE","i18nProvider","hostname","headers","domainLocale","i18n","domains","defaultLocale","buildId","locale","trailingSlash","formatPathname","forceLocale","undefined","formatSearch","search","locales","includes","TypeError","searchParams","host","value","port","protocol","href","hash","origin","password","username","startsWith","toString","toJSON","for","clone"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 5716, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/error.ts"],"sourcesContent":["export class PageSignatureError extends Error {\n constructor({ page }: { page: string }) {\n super(`The middleware \"${page}\" accepts an async API directly with the form:\n \n export function middleware(request, event) {\n return NextResponse.redirect('/new-location')\n }\n \n Read more: https://nextjs.org/docs/messages/middleware-new-signature\n `)\n }\n}\n\nexport class RemovedPageError extends Error {\n constructor() {\n super(`The request.page has been deprecated in favour of \\`URLPattern\\`.\n Read more: https://nextjs.org/docs/messages/middleware-request-page\n `)\n }\n}\n\nexport class RemovedUAError extends Error {\n constructor() {\n super(`The request.ua has been removed in favour of \\`userAgent\\` function.\n Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n `)\n }\n}\n"],"names":["PageSignatureError","Error","constructor","page","RemovedPageError","RemovedUAError"],"mappings":";;;;;;;;AAAO,MAAMA,2BAA2BC;IACtCC,YAAY,EAAEC,IAAI,EAAoB,CAAE;QACtC,KAAK,CAAC,CAAC,gBAAgB,EAAEA,KAAK;;;;;;;EAOhC,CAAC;IACD;AACF;AAEO,MAAMC,yBAAyBH;IACpCC,aAAc;QACZ,KAAK,CAAC,CAAC;;EAET,CAAC;IACD;AACF;AAEO,MAAMG,uBAAuBJ;IAClCC,aAAc;QACZ,KAAK,CAAC,CAAC;;EAET,CAAC;IACD;AACF","ignoreList":[0]}}, + {"offset": {"line": 5754, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/dist/compiled/%40edge-runtime/cookies/index.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n RequestCookies: () => RequestCookies,\n ResponseCookies: () => ResponseCookies,\n parseCookie: () => parseCookie,\n parseSetCookie: () => parseSetCookie,\n stringifyCookie: () => stringifyCookie\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/serialize.ts\nfunction stringifyCookie(c) {\n var _a;\n const attrs = [\n \"path\" in c && c.path && `Path=${c.path}`,\n \"expires\" in c && (c.expires || c.expires === 0) && `Expires=${(typeof c.expires === \"number\" ? new Date(c.expires) : c.expires).toUTCString()}`,\n \"maxAge\" in c && typeof c.maxAge === \"number\" && `Max-Age=${c.maxAge}`,\n \"domain\" in c && c.domain && `Domain=${c.domain}`,\n \"secure\" in c && c.secure && \"Secure\",\n \"httpOnly\" in c && c.httpOnly && \"HttpOnly\",\n \"sameSite\" in c && c.sameSite && `SameSite=${c.sameSite}`,\n \"partitioned\" in c && c.partitioned && \"Partitioned\",\n \"priority\" in c && c.priority && `Priority=${c.priority}`\n ].filter(Boolean);\n const stringified = `${c.name}=${encodeURIComponent((_a = c.value) != null ? _a : \"\")}`;\n return attrs.length === 0 ? stringified : `${stringified}; ${attrs.join(\"; \")}`;\n}\nfunction parseCookie(cookie) {\n const map = /* @__PURE__ */ new Map();\n for (const pair of cookie.split(/; */)) {\n if (!pair)\n continue;\n const splitAt = pair.indexOf(\"=\");\n if (splitAt === -1) {\n map.set(pair, \"true\");\n continue;\n }\n const [key, value] = [pair.slice(0, splitAt), pair.slice(splitAt + 1)];\n try {\n map.set(key, decodeURIComponent(value != null ? value : \"true\"));\n } catch {\n }\n }\n return map;\n}\nfunction parseSetCookie(setCookie) {\n if (!setCookie) {\n return void 0;\n }\n const [[name, value], ...attributes] = parseCookie(setCookie);\n const {\n domain,\n expires,\n httponly,\n maxage,\n path,\n samesite,\n secure,\n partitioned,\n priority\n } = Object.fromEntries(\n attributes.map(([key, value2]) => [\n key.toLowerCase().replace(/-/g, \"\"),\n value2\n ])\n );\n const cookie = {\n name,\n value: decodeURIComponent(value),\n domain,\n ...expires && { expires: new Date(expires) },\n ...httponly && { httpOnly: true },\n ...typeof maxage === \"string\" && { maxAge: Number(maxage) },\n path,\n ...samesite && { sameSite: parseSameSite(samesite) },\n ...secure && { secure: true },\n ...priority && { priority: parsePriority(priority) },\n ...partitioned && { partitioned: true }\n };\n return compact(cookie);\n}\nfunction compact(t) {\n const newT = {};\n for (const key in t) {\n if (t[key]) {\n newT[key] = t[key];\n }\n }\n return newT;\n}\nvar SAME_SITE = [\"strict\", \"lax\", \"none\"];\nfunction parseSameSite(string) {\n string = string.toLowerCase();\n return SAME_SITE.includes(string) ? string : void 0;\n}\nvar PRIORITY = [\"low\", \"medium\", \"high\"];\nfunction parsePriority(string) {\n string = string.toLowerCase();\n return PRIORITY.includes(string) ? string : void 0;\n}\nfunction splitCookiesString(cookiesString) {\n if (!cookiesString)\n return [];\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n lastComma = pos;\n pos += 1;\n skipWhitespace();\n nextStart = pos;\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n cookiesSeparatorFound = true;\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n return cookiesStrings;\n}\n\n// src/request-cookies.ts\nvar RequestCookies = class {\n constructor(requestHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n this._headers = requestHeaders;\n const header = requestHeaders.get(\"cookie\");\n if (header) {\n const parsed = parseCookie(header);\n for (const [name, value] of parsed) {\n this._parsed.set(name, { name, value });\n }\n }\n }\n [Symbol.iterator]() {\n return this._parsed[Symbol.iterator]();\n }\n /**\n * The amount of cookies received from the client\n */\n get size() {\n return this._parsed.size;\n }\n get(...args) {\n const name = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(name);\n }\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed);\n if (!args.length) {\n return all.map(([_, value]) => value);\n }\n const name = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter(([n]) => n === name).map(([_, value]) => value);\n }\n has(name) {\n return this._parsed.has(name);\n }\n set(...args) {\n const [name, value] = args.length === 1 ? [args[0].name, args[0].value] : args;\n const map = this._parsed;\n map.set(name, { name, value });\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value2]) => stringifyCookie(value2)).join(\"; \")\n );\n return this;\n }\n /**\n * Delete the cookies matching the passed name or names in the request.\n */\n delete(names) {\n const map = this._parsed;\n const result = !Array.isArray(names) ? map.delete(names) : names.map((name) => map.delete(name));\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value]) => stringifyCookie(value)).join(\"; \")\n );\n return result;\n }\n /**\n * Delete all the cookies in the cookies in the request.\n */\n clear() {\n this.delete(Array.from(this._parsed.keys()));\n return this;\n }\n /**\n * Format the cookies in the request as a string for logging\n */\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map((v) => `${v.name}=${encodeURIComponent(v.value)}`).join(\"; \");\n }\n};\n\n// src/response-cookies.ts\nvar ResponseCookies = class {\n constructor(responseHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n var _a, _b, _c;\n this._headers = responseHeaders;\n const setCookie = (_c = (_b = (_a = responseHeaders.getSetCookie) == null ? void 0 : _a.call(responseHeaders)) != null ? _b : responseHeaders.get(\"set-cookie\")) != null ? _c : [];\n const cookieStrings = Array.isArray(setCookie) ? setCookie : splitCookiesString(setCookie);\n for (const cookieString of cookieStrings) {\n const parsed = parseSetCookie(cookieString);\n if (parsed)\n this._parsed.set(parsed.name, parsed);\n }\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-get CookieStore#get} without the Promise.\n */\n get(...args) {\n const key = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(key);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-getAll CookieStore#getAll} without the Promise.\n */\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed.values());\n if (!args.length) {\n return all;\n }\n const key = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter((c) => c.name === key);\n }\n has(name) {\n return this._parsed.has(name);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-set CookieStore#set} without the Promise.\n */\n set(...args) {\n const [name, value, cookie] = args.length === 1 ? [args[0].name, args[0].value, args[0]] : args;\n const map = this._parsed;\n map.set(name, normalizeCookie({ name, value, ...cookie }));\n replace(map, this._headers);\n return this;\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-delete CookieStore#delete} without the Promise.\n */\n delete(...args) {\n const [name, options] = typeof args[0] === \"string\" ? [args[0]] : [args[0].name, args[0]];\n return this.set({ ...options, name, value: \"\", expires: /* @__PURE__ */ new Date(0) });\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map(stringifyCookie).join(\"; \");\n }\n};\nfunction replace(bag, headers) {\n headers.delete(\"set-cookie\");\n for (const [, value] of bag) {\n const serialized = stringifyCookie(value);\n headers.append(\"set-cookie\", serialized);\n }\n}\nfunction normalizeCookie(cookie = { name: \"\", value: \"\" }) {\n if (typeof cookie.expires === \"number\") {\n cookie.expires = new Date(cookie.expires);\n }\n if (cookie.maxAge) {\n cookie.expires = new Date(Date.now() + cookie.maxAge * 1e3);\n }\n if (cookie.path === null || cookie.path === void 0) {\n cookie.path = \"/\";\n }\n return cookie;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n RequestCookies,\n ResponseCookies,\n parseCookie,\n parseSetCookie,\n stringifyCookie\n});\n"],"names":[],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 6124, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/spec-extension/cookies.ts"],"sourcesContent":["export {\n RequestCookies,\n ResponseCookies,\n stringifyCookie,\n} from 'next/dist/compiled/@edge-runtime/cookies'\n"],"names":["RequestCookies","ResponseCookies","stringifyCookie"],"mappings":";AAAA,SACEA,cAAc,EACdC,eAAe,EACfC,eAAe,QACV,2CAA0C","ignoreList":[0]}}, + {"offset": {"line": 6131, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/spec-extension/request.ts"],"sourcesContent":["import type { I18NConfig } from '../../config-shared'\nimport { NextURL } from '../next-url'\nimport { toNodeOutgoingHttpHeaders, validateURL } from '../utils'\nimport { RemovedUAError, RemovedPageError } from '../error'\nimport { RequestCookies } from './cookies'\n\nexport const INTERNALS = Symbol('internal request')\n\n/**\n * This class extends the [Web `Request` API](https://developer.mozilla.org/docs/Web/API/Request) with additional convenience methods.\n *\n * Read more: [Next.js Docs: `NextRequest`](https://nextjs.org/docs/app/api-reference/functions/next-request)\n */\nexport class NextRequest extends Request {\n /** @internal */\n [INTERNALS]: {\n cookies: RequestCookies\n url: string\n nextUrl: NextURL\n }\n\n constructor(input: URL | RequestInfo, init: RequestInit = {}) {\n const url =\n typeof input !== 'string' && 'url' in input ? input.url : String(input)\n\n validateURL(url)\n\n // node Request instance requires duplex option when a body\n // is present or it errors, we don't handle this for\n // Request being passed in since it would have already\n // errored if this wasn't configured\n if (process.env.NEXT_RUNTIME !== 'edge') {\n if (init.body && init.duplex !== 'half') {\n init.duplex = 'half'\n }\n }\n\n if (input instanceof Request) super(input, init)\n else super(url, init)\n\n const nextUrl = new NextURL(url, {\n headers: toNodeOutgoingHttpHeaders(this.headers),\n nextConfig: init.nextConfig,\n })\n this[INTERNALS] = {\n cookies: new RequestCookies(this.headers),\n nextUrl,\n url: process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE\n ? url\n : nextUrl.toString(),\n }\n }\n\n [Symbol.for('edge-runtime.inspect.custom')]() {\n return {\n cookies: this.cookies,\n nextUrl: this.nextUrl,\n url: this.url,\n // rest of props come from Request\n bodyUsed: this.bodyUsed,\n cache: this.cache,\n credentials: this.credentials,\n destination: this.destination,\n headers: Object.fromEntries(this.headers),\n integrity: this.integrity,\n keepalive: this.keepalive,\n method: this.method,\n mode: this.mode,\n redirect: this.redirect,\n referrer: this.referrer,\n referrerPolicy: this.referrerPolicy,\n signal: this.signal,\n }\n }\n\n public get cookies() {\n return this[INTERNALS].cookies\n }\n\n public get nextUrl() {\n return this[INTERNALS].nextUrl\n }\n\n /**\n * @deprecated\n * `page` has been deprecated in favour of `URLPattern`.\n * Read more: https://nextjs.org/docs/messages/middleware-request-page\n */\n public get page() {\n throw new RemovedPageError()\n }\n\n /**\n * @deprecated\n * `ua` has been removed in favour of \\`userAgent\\` function.\n * Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n */\n public get ua() {\n throw new RemovedUAError()\n }\n\n public get url() {\n return this[INTERNALS].url\n }\n}\n\nexport interface RequestInit extends globalThis.RequestInit {\n nextConfig?: {\n basePath?: string\n i18n?: I18NConfig | null\n trailingSlash?: boolean\n }\n signal?: AbortSignal\n // see https://github.com/whatwg/fetch/pull/1457\n duplex?: 'half'\n}\n"],"names":["NextURL","toNodeOutgoingHttpHeaders","validateURL","RemovedUAError","RemovedPageError","RequestCookies","INTERNALS","Symbol","NextRequest","Request","constructor","input","init","url","String","process","env","NEXT_RUNTIME","body","duplex","nextUrl","headers","nextConfig","cookies","__NEXT_NO_MIDDLEWARE_URL_NORMALIZE","toString","for","bodyUsed","cache","credentials","destination","Object","fromEntries","integrity","keepalive","method","mode","redirect","referrer","referrerPolicy","signal","page","ua"],"mappings":";;;;;;AACA,SAASA,OAAO,QAAQ,cAAa;AACrC,SAASC,yBAAyB,EAAEC,WAAW,QAAQ,WAAU;AACjE,SAASC,cAAc,EAAEC,gBAAgB,QAAQ,WAAU;;AAC3D,SAASC,cAAc,QAAQ,YAAW;;;;;AAEnC,MAAMC,YAAYC,OAAO,oBAAmB;AAO5C,MAAMC,oBAAoBC;IAQ/BC,YAAYC,KAAwB,EAAEC,OAAoB,CAAC,CAAC,CAAE;QAC5D,MAAMC,MACJ,OAAOF,UAAU,YAAY,SAASA,QAAQA,MAAME,GAAG,GAAGC,OAAOH;YAEnET,0NAAAA,EAAYW;QAEZ,2DAA2D;QAC3D,oDAAoD;QACpD,sDAAsD;QACtD,oCAAoC;QACpC,IAAIE,QAAQC,GAAG,CAACC,YAAY,KAAK,OAAQ;YACvC,IAAIL,KAAKM,IAAI,IAAIN,KAAKO,MAAM,KAAK,QAAQ;gBACvCP,KAAKO,MAAM,GAAG;YAChB;QACF;QAEA,IAAIR,iBAAiBF,SAAS,KAAK,CAACE,OAAOC;aACtC,KAAK,CAACC,KAAKD;QAEhB,MAAMQ,UAAU,IAAIpB,4NAAAA,CAAQa,KAAK;YAC/BQ,aAASpB,wOAAAA,EAA0B,IAAI,CAACoB,OAAO;YAC/CC,YAAYV,KAAKU,UAAU;QAC7B;QACA,IAAI,CAAChB,UAAU,GAAG;YAChBiB,SAAS,IAAIlB,iPAAAA,CAAe,IAAI,CAACgB,OAAO;YACxCD;YACAP,KAAKE,QAAQC,GAAG,CAACQ,0BACbX,QAD+C,kBAE/CO,QAAQK,QAAQ;QACtB;IACF;IAEA,CAAClB,OAAOmB,GAAG,CAAC,+BAA+B,GAAG;QAC5C,OAAO;YACLH,SAAS,IAAI,CAACA,OAAO;YACrBH,SAAS,IAAI,CAACA,OAAO;YACrBP,KAAK,IAAI,CAACA,GAAG;YACb,kCAAkC;YAClCc,UAAU,IAAI,CAACA,QAAQ;YACvBC,OAAO,IAAI,CAACA,KAAK;YACjBC,aAAa,IAAI,CAACA,WAAW;YAC7BC,aAAa,IAAI,CAACA,WAAW;YAC7BT,SAASU,OAAOC,WAAW,CAAC,IAAI,CAACX,OAAO;YACxCY,WAAW,IAAI,CAACA,SAAS;YACzBC,WAAW,IAAI,CAACA,SAAS;YACzBC,QAAQ,IAAI,CAACA,MAAM;YACnBC,MAAM,IAAI,CAACA,IAAI;YACfC,UAAU,IAAI,CAACA,QAAQ;YACvBC,UAAU,IAAI,CAACA,QAAQ;YACvBC,gBAAgB,IAAI,CAACA,cAAc;YACnCC,QAAQ,IAAI,CAACA,MAAM;QACrB;IACF;IAEA,IAAWjB,UAAU;QACnB,OAAO,IAAI,CAACjB,UAAU,CAACiB,OAAO;IAChC;IAEA,IAAWH,UAAU;QACnB,OAAO,IAAI,CAACd,UAAU,CAACc,OAAO;IAChC;IAEA;;;;GAIC,GACD,IAAWqB,OAAO;QAChB,MAAM,IAAIrC,+NAAAA;IACZ;IAEA;;;;GAIC,GACD,IAAWsC,KAAK;QACd,MAAM,IAAIvC,6NAAAA;IACZ;IAEA,IAAWU,MAAM;QACf,OAAO,IAAI,CAACP,UAAU,CAACO,GAAG;IAC5B;AACF","ignoreList":[0]}}, + {"offset": {"line": 6221, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/base-http/helpers.ts"],"sourcesContent":["import type { BaseNextRequest, BaseNextResponse } from './'\nimport type { NodeNextRequest, NodeNextResponse } from './node'\nimport type { WebNextRequest, WebNextResponse } from './web'\n\n/**\n * This file provides some helpers that should be used in conjunction with\n * explicit environment checks. When combined with the environment checks, it\n * will ensure that the correct typings are used as well as enable code\n * elimination.\n */\n\n/**\n * Type guard to determine if a request is a WebNextRequest. This does not\n * actually check the type of the request, but rather the runtime environment.\n * It's expected that when the runtime environment is the edge runtime, that any\n * base request is a WebNextRequest.\n */\nexport const isWebNextRequest = (req: BaseNextRequest): req is WebNextRequest =>\n process.env.NEXT_RUNTIME === 'edge'\n\n/**\n * Type guard to determine if a response is a WebNextResponse. This does not\n * actually check the type of the response, but rather the runtime environment.\n * It's expected that when the runtime environment is the edge runtime, that any\n * base response is a WebNextResponse.\n */\nexport const isWebNextResponse = (\n res: BaseNextResponse\n): res is WebNextResponse => process.env.NEXT_RUNTIME === 'edge'\n\n/**\n * Type guard to determine if a request is a NodeNextRequest. This does not\n * actually check the type of the request, but rather the runtime environment.\n * It's expected that when the runtime environment is the node runtime, that any\n * base request is a NodeNextRequest.\n */\nexport const isNodeNextRequest = (\n req: BaseNextRequest\n): req is NodeNextRequest => process.env.NEXT_RUNTIME !== 'edge'\n\n/**\n * Type guard to determine if a response is a NodeNextResponse. This does not\n * actually check the type of the response, but rather the runtime environment.\n * It's expected that when the runtime environment is the node runtime, that any\n * base response is a NodeNextResponse.\n */\nexport const isNodeNextResponse = (\n res: BaseNextResponse\n): res is NodeNextResponse => process.env.NEXT_RUNTIME !== 'edge'\n"],"names":["isWebNextRequest","req","process","env","NEXT_RUNTIME","isWebNextResponse","res","isNodeNextRequest","isNodeNextResponse"],"mappings":"AAIA;;;;;CAKC,GAED;;;;;CAKC,GACD;;;;;;;;;;AAAO,MAAMA,mBAAmB,CAACC,MAC/BC,QAAQC,GAAG,CAACC,YAAY,uBAAK,OAAM;AAQ9B,MAAMC,oBAAoB,CAC/BC,MAC2BJ,QAAQC,GAAG,CAACC,YAAY,uBAAK,OAAM;AAQzD,MAAMG,oBAAoB,CAC/BN,MAC2BC,QAAQC,GAAG,CAACC,YAAY,uBAAK,OAAM;AAQzD,MAAMI,qBAAqB,CAChCF,MAC4BJ,QAAQC,GAAG,CAACC,YAAY,uBAAK,OAAM","ignoreList":[0]}}, + {"offset": {"line": 6249, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/spec-extension/adapters/next-request.ts"],"sourcesContent":["import type { BaseNextRequest } from '../../../base-http'\nimport type { NodeNextRequest } from '../../../base-http/node'\nimport type { WebNextRequest } from '../../../base-http/web'\nimport type { Writable } from 'node:stream'\n\nimport { getRequestMeta } from '../../../request-meta'\nimport { fromNodeOutgoingHttpHeaders } from '../../utils'\nimport { NextRequest } from '../request'\nimport { isNodeNextRequest, isWebNextRequest } from '../../../base-http/helpers'\n\nexport const ResponseAbortedName = 'ResponseAborted'\nexport class ResponseAborted extends Error {\n public readonly name = ResponseAbortedName\n}\n\n/**\n * Creates an AbortController tied to the closing of a ServerResponse (or other\n * appropriate Writable).\n *\n * If the `close` event is fired before the `finish` event, then we'll send the\n * `abort` signal.\n */\nexport function createAbortController(response: Writable): AbortController {\n const controller = new AbortController()\n\n // If `finish` fires first, then `res.end()` has been called and the close is\n // just us finishing the stream on our side. If `close` fires first, then we\n // know the client disconnected before we finished.\n response.once('close', () => {\n if (response.writableFinished) return\n\n controller.abort(new ResponseAborted())\n })\n\n return controller\n}\n\n/**\n * Creates an AbortSignal tied to the closing of a ServerResponse (or other\n * appropriate Writable).\n *\n * This cannot be done with the request (IncomingMessage or Readable) because\n * the `abort` event will not fire if to data has been fully read (because that\n * will \"close\" the readable stream and nothing fires after that).\n */\nexport function signalFromNodeResponse(response: Writable): AbortSignal {\n const { errored, destroyed } = response\n if (errored || destroyed) {\n return AbortSignal.abort(errored ?? new ResponseAborted())\n }\n\n const { signal } = createAbortController(response)\n return signal\n}\n\nexport class NextRequestAdapter {\n public static fromBaseNextRequest(\n request: BaseNextRequest,\n signal: AbortSignal\n ): NextRequest {\n if (\n // The type check here ensures that `req` is correctly typed, and the\n // environment variable check provides dead code elimination.\n process.env.NEXT_RUNTIME === 'edge' &&\n isWebNextRequest(request)\n ) {\n return NextRequestAdapter.fromWebNextRequest(request)\n } else if (\n // The type check here ensures that `req` is correctly typed, and the\n // environment variable check provides dead code elimination.\n process.env.NEXT_RUNTIME !== 'edge' &&\n isNodeNextRequest(request)\n ) {\n return NextRequestAdapter.fromNodeNextRequest(request, signal)\n } else {\n throw new Error('Invariant: Unsupported NextRequest type')\n }\n }\n\n public static fromNodeNextRequest(\n request: NodeNextRequest,\n signal: AbortSignal\n ): NextRequest {\n // HEAD and GET requests can not have a body.\n let body: BodyInit | null = null\n if (request.method !== 'GET' && request.method !== 'HEAD' && request.body) {\n // @ts-expect-error - this is handled by undici, when streams/web land use it instead\n body = request.body\n }\n\n let url: URL\n if (request.url.startsWith('http')) {\n url = new URL(request.url)\n } else {\n // Grab the full URL from the request metadata.\n const base = getRequestMeta(request, 'initURL')\n if (!base || !base.startsWith('http')) {\n // Because the URL construction relies on the fact that the URL provided\n // is absolute, we need to provide a base URL. We can't use the request\n // URL because it's relative, so we use a dummy URL instead.\n url = new URL(request.url, 'http://n')\n } else {\n url = new URL(request.url, base)\n }\n }\n\n return new NextRequest(url, {\n method: request.method,\n headers: fromNodeOutgoingHttpHeaders(request.headers),\n duplex: 'half',\n signal,\n // geo\n // ip\n // nextConfig\n\n // body can not be passed if request was aborted\n // or we get a Request body was disturbed error\n ...(signal.aborted\n ? {}\n : {\n body,\n }),\n })\n }\n\n public static fromWebNextRequest(request: WebNextRequest): NextRequest {\n // HEAD and GET requests can not have a body.\n let body: ReadableStream | null = null\n if (request.method !== 'GET' && request.method !== 'HEAD') {\n body = request.body\n }\n\n return new NextRequest(request.url, {\n method: request.method,\n headers: fromNodeOutgoingHttpHeaders(request.headers),\n duplex: 'half',\n signal: request.request.signal,\n // geo\n // ip\n // nextConfig\n\n // body can not be passed if request was aborted\n // or we get a Request body was disturbed error\n ...(request.request.signal.aborted\n ? {}\n : {\n body,\n }),\n })\n }\n}\n"],"names":["getRequestMeta","fromNodeOutgoingHttpHeaders","NextRequest","isNodeNextRequest","isWebNextRequest","ResponseAbortedName","ResponseAborted","Error","name","createAbortController","response","controller","AbortController","once","writableFinished","abort","signalFromNodeResponse","errored","destroyed","AbortSignal","signal","NextRequestAdapter","fromBaseNextRequest","request","process","env","NEXT_RUNTIME","fromWebNextRequest","fromNodeNextRequest","body","method","url","startsWith","URL","base","headers","duplex","aborted"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 6373, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/client-component-renderer-logger.ts"],"sourcesContent":["import type { AppPageModule } from './route-modules/app-page/module'\n\n// Combined load times for loading client components\nlet clientComponentLoadStart = 0\nlet clientComponentLoadTimes = 0\nlet clientComponentLoadCount = 0\n\nexport function wrapClientComponentLoader(\n ComponentMod: AppPageModule\n): AppPageModule['__next_app__'] {\n if (!('performance' in globalThis)) {\n return ComponentMod.__next_app__\n }\n\n return {\n require: (...args) => {\n const startTime = performance.now()\n\n if (clientComponentLoadStart === 0) {\n clientComponentLoadStart = startTime\n }\n\n try {\n clientComponentLoadCount += 1\n return ComponentMod.__next_app__.require(...args)\n } finally {\n clientComponentLoadTimes += performance.now() - startTime\n }\n },\n loadChunk: (...args) => {\n const startTime = performance.now()\n const result = ComponentMod.__next_app__.loadChunk(...args)\n // Avoid wrapping `loadChunk`'s result in an extra promise in case something like React depends on its identity.\n // We only need to know when it's settled.\n result.finally(() => {\n clientComponentLoadTimes += performance.now() - startTime\n })\n return result\n },\n }\n}\n\nexport function getClientComponentLoaderMetrics(\n options: { reset?: boolean } = {}\n) {\n const metrics =\n clientComponentLoadStart === 0\n ? undefined\n : {\n clientComponentLoadStart,\n clientComponentLoadTimes,\n clientComponentLoadCount,\n }\n\n if (options.reset) {\n clientComponentLoadStart = 0\n clientComponentLoadTimes = 0\n clientComponentLoadCount = 0\n }\n\n return metrics\n}\n"],"names":["clientComponentLoadStart","clientComponentLoadTimes","clientComponentLoadCount","wrapClientComponentLoader","ComponentMod","globalThis","__next_app__","require","args","startTime","performance","now","loadChunk","result","finally","getClientComponentLoaderMetrics","options","metrics","undefined","reset"],"mappings":";;;;;;AAEA,oDAAoD;AACpD,IAAIA,2BAA2B;AAC/B,IAAIC,2BAA2B;AAC/B,IAAIC,2BAA2B;AAExB,SAASC,0BACdC,YAA2B;IAE3B,IAAI,CAAE,CAAA,iBAAiBC,UAAS,GAAI;QAClC,OAAOD,aAAaE,YAAY;IAClC;IAEA,OAAO;QACLC,SAAS,CAAC,GAAGC;YACX,MAAMC,YAAYC,YAAYC,GAAG;YAEjC,IAAIX,6BAA6B,GAAG;gBAClCA,2BAA2BS;YAC7B;YAEA,IAAI;gBACFP,4BAA4B;gBAC5B,OAAOE,aAAaE,YAAY,CAACC,OAAO,IAAIC;YAC9C,SAAU;gBACRP,4BAA4BS,YAAYC,GAAG,KAAKF;YAClD;QACF;QACAG,WAAW,CAAC,GAAGJ;YACb,MAAMC,YAAYC,YAAYC,GAAG;YACjC,MAAME,SAAST,aAAaE,YAAY,CAACM,SAAS,IAAIJ;YACtD,gHAAgH;YAChH,0CAA0C;YAC1CK,OAAOC,OAAO,CAAC;gBACbb,4BAA4BS,YAAYC,GAAG,KAAKF;YAClD;YACA,OAAOI;QACT;IACF;AACF;AAEO,SAASE,gCACdC,UAA+B,CAAC,CAAC;IAEjC,MAAMC,UACJjB,6BAA6B,IACzBkB,YACA;QACElB;QACAC;QACAC;IACF;IAEN,IAAIc,QAAQG,KAAK,EAAE;QACjBnB,2BAA2B;QAC3BC,2BAA2B;QAC3BC,2BAA2B;IAC7B;IAEA,OAAOe;AACT","ignoreList":[0]}}, + {"offset": {"line": 6429, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/pipe-readable.ts"],"sourcesContent":["import type { ServerResponse } from 'node:http'\n\nimport {\n ResponseAbortedName,\n createAbortController,\n} from './web/spec-extension/adapters/next-request'\nimport { DetachedPromise } from '../lib/detached-promise'\nimport { getTracer } from './lib/trace/tracer'\nimport { NextNodeServerSpan } from './lib/trace/constants'\nimport { getClientComponentLoaderMetrics } from './client-component-renderer-logger'\n\nexport function isAbortError(e: any): e is Error & { name: 'AbortError' } {\n return e?.name === 'AbortError' || e?.name === ResponseAbortedName\n}\n\nfunction createWriterFromResponse(\n res: ServerResponse,\n waitUntilForEnd?: Promise\n): WritableStream {\n let started = false\n\n // Create a promise that will resolve once the response has drained. See\n // https://nodejs.org/api/stream.html#stream_event_drain\n let drained = new DetachedPromise()\n function onDrain() {\n drained.resolve()\n }\n res.on('drain', onDrain)\n\n // If the finish event fires, it means we shouldn't block and wait for the\n // drain event.\n res.once('close', () => {\n res.off('drain', onDrain)\n drained.resolve()\n })\n\n // Create a promise that will resolve once the response has finished. See\n // https://nodejs.org/api/http.html#event-finish_1\n const finished = new DetachedPromise()\n res.once('finish', () => {\n finished.resolve()\n })\n\n // Create a writable stream that will write to the response.\n return new WritableStream({\n write: async (chunk) => {\n // You'd think we'd want to use `start` instead of placing this in `write`\n // but this ensures that we don't actually flush the headers until we've\n // started writing chunks.\n if (!started) {\n started = true\n\n if (\n 'performance' in globalThis &&\n process.env.NEXT_OTEL_PERFORMANCE_PREFIX\n ) {\n const metrics = getClientComponentLoaderMetrics()\n if (metrics) {\n performance.measure(\n `${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-client-component-loading`,\n {\n start: metrics.clientComponentLoadStart,\n end:\n metrics.clientComponentLoadStart +\n metrics.clientComponentLoadTimes,\n }\n )\n }\n }\n\n res.flushHeaders()\n getTracer().trace(\n NextNodeServerSpan.startResponse,\n {\n spanName: 'start response',\n },\n () => undefined\n )\n }\n\n try {\n const ok = res.write(chunk)\n\n // Added by the `compression` middleware, this is a function that will\n // flush the partially-compressed response to the client.\n if ('flush' in res && typeof res.flush === 'function') {\n res.flush()\n }\n\n // If the write returns false, it means there's some backpressure, so\n // wait until it's streamed before continuing.\n if (!ok) {\n await drained.promise\n\n // Reset the drained promise so that we can wait for the next drain event.\n drained = new DetachedPromise()\n }\n } catch (err) {\n res.end()\n throw new Error('failed to write chunk to response', { cause: err })\n }\n },\n abort: (err) => {\n if (res.writableFinished) return\n\n res.destroy(err)\n },\n close: async () => {\n // if a waitUntil promise was passed, wait for it to resolve before\n // ending the response.\n if (waitUntilForEnd) {\n await waitUntilForEnd\n }\n\n if (res.writableFinished) return\n\n res.end()\n return finished.promise\n },\n })\n}\n\nexport async function pipeToNodeResponse(\n readable: ReadableStream,\n res: ServerResponse,\n waitUntilForEnd?: Promise\n) {\n try {\n // If the response has already errored, then just return now.\n const { errored, destroyed } = res\n if (errored || destroyed) return\n\n // Create a new AbortController so that we can abort the readable if the\n // client disconnects.\n const controller = createAbortController(res)\n\n const writer = createWriterFromResponse(res, waitUntilForEnd)\n\n await readable.pipeTo(writer, { signal: controller.signal })\n } catch (err: any) {\n // If this isn't related to an abort error, re-throw it.\n if (isAbortError(err)) return\n\n throw new Error('failed to pipe response', { cause: err })\n }\n}\n"],"names":["ResponseAbortedName","createAbortController","DetachedPromise","getTracer","NextNodeServerSpan","getClientComponentLoaderMetrics","isAbortError","e","name","createWriterFromResponse","res","waitUntilForEnd","started","drained","onDrain","resolve","on","once","off","finished","WritableStream","write","chunk","globalThis","process","env","NEXT_OTEL_PERFORMANCE_PREFIX","metrics","performance","measure","start","clientComponentLoadStart","end","clientComponentLoadTimes","flushHeaders","trace","startResponse","spanName","undefined","ok","flush","promise","err","Error","cause","abort","writableFinished","destroy","close","pipeToNodeResponse","readable","errored","destroyed","controller","writer","pipeTo","signal"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 6560, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/render-result.ts"],"sourcesContent":["import type { OutgoingHttpHeaders, ServerResponse } from 'http'\nimport type { CacheControl } from './lib/cache-control'\nimport type { FetchMetrics } from './base-http'\n\nimport {\n chainStreams,\n streamFromBuffer,\n streamFromString,\n streamToString,\n} from './stream-utils/node-web-streams-helper'\nimport { isAbortError, pipeToNodeResponse } from './pipe-readable'\nimport type { RenderResumeDataCache } from './resume-data-cache/resume-data-cache'\nimport { InvariantError } from '../shared/lib/invariant-error'\nimport type {\n HTML_CONTENT_TYPE_HEADER,\n JSON_CONTENT_TYPE_HEADER,\n TEXT_PLAIN_CONTENT_TYPE_HEADER,\n} from '../lib/constants'\nimport type { RSC_CONTENT_TYPE_HEADER } from '../client/components/app-router-headers'\n\ntype ContentTypeOption =\n | typeof RSC_CONTENT_TYPE_HEADER // For App Page RSC responses\n | typeof HTML_CONTENT_TYPE_HEADER // For App Page, Pages HTML responses\n | typeof JSON_CONTENT_TYPE_HEADER // For API routes, Next.js data requests\n | typeof TEXT_PLAIN_CONTENT_TYPE_HEADER // For simplified errors\n\nexport type AppPageRenderResultMetadata = {\n flightData?: Buffer\n cacheControl?: CacheControl\n staticBailoutInfo?: {\n stack?: string\n description?: string\n }\n\n /**\n * The postponed state if the render had postponed and needs to be resumed.\n */\n postponed?: string\n\n /**\n * The headers to set on the response that were added by the render.\n */\n headers?: OutgoingHttpHeaders\n statusCode?: number\n fetchTags?: string\n fetchMetrics?: FetchMetrics\n\n segmentData?: Map\n\n /**\n * In development, the resume data cache is warmed up before the render. This\n * is attached to the metadata so that it can be used during the render. When\n * prerendering, the filled resume data cache is also attached to the metadata\n * so that it can be used when prerendering matching fallback shells.\n */\n renderResumeDataCache?: RenderResumeDataCache\n}\n\nexport type PagesRenderResultMetadata = {\n pageData?: any\n cacheControl?: CacheControl\n assetQueryString?: string\n isNotFound?: boolean\n isRedirect?: boolean\n}\n\nexport type StaticRenderResultMetadata = {}\n\nexport type RenderResultMetadata = AppPageRenderResultMetadata &\n PagesRenderResultMetadata &\n StaticRenderResultMetadata\n\nexport type RenderResultResponse =\n | ReadableStream[]\n | ReadableStream\n | string\n | Buffer\n | null\n\nexport type RenderResultOptions<\n Metadata extends RenderResultMetadata = RenderResultMetadata,\n> = {\n contentType: ContentTypeOption | null\n waitUntil?: Promise\n metadata: Metadata\n}\n\nexport default class RenderResult<\n Metadata extends RenderResultMetadata = RenderResultMetadata,\n> {\n /**\n * The detected content type for the response. This is used to set the\n * `Content-Type` header.\n */\n public readonly contentType: ContentTypeOption | null\n\n /**\n * The metadata for the response. This is used to set the revalidation times\n * and other metadata.\n */\n public readonly metadata: Readonly\n\n /**\n * The response itself. This can be a string, a stream, or null. If it's a\n * string, then it's a static response. If it's a stream, then it's a\n * dynamic response. If it's null, then the response was not found or was\n * already sent.\n */\n private response: RenderResultResponse\n\n /**\n * A render result that represents an empty response. This is used to\n * represent a response that was not found or was already sent.\n */\n public static readonly EMPTY = new RenderResult(\n null,\n { metadata: {}, contentType: null }\n )\n\n /**\n * Creates a new RenderResult instance from a static response.\n *\n * @param value the static response value\n * @param contentType the content type of the response\n * @returns a new RenderResult instance\n */\n public static fromStatic(\n value: string | Buffer,\n contentType: ContentTypeOption\n ) {\n return new RenderResult(value, {\n metadata: {},\n contentType,\n })\n }\n\n private readonly waitUntil?: Promise\n\n constructor(\n response: RenderResultResponse,\n { contentType, waitUntil, metadata }: RenderResultOptions\n ) {\n this.response = response\n this.contentType = contentType\n this.metadata = metadata\n this.waitUntil = waitUntil\n }\n\n public assignMetadata(metadata: Metadata) {\n Object.assign(this.metadata, metadata)\n }\n\n /**\n * Returns true if the response is null. It can be null if the response was\n * not found or was already sent.\n */\n public get isNull(): boolean {\n return this.response === null\n }\n\n /**\n * Returns false if the response is a string. It can be a string if the page\n * was prerendered. If it's not, then it was generated dynamically.\n */\n public get isDynamic(): boolean {\n return typeof this.response !== 'string'\n }\n\n /**\n * Returns the response if it is a string. If the page was dynamic, this will\n * return a promise if the `stream` option is true, or it will throw an error.\n *\n * @param stream Whether or not to return a promise if the response is dynamic\n * @returns The response as a string\n */\n public toUnchunkedString(stream?: false): string\n public toUnchunkedString(stream: true): Promise\n public toUnchunkedString(stream = false): Promise | string {\n if (this.response === null) {\n // If the response is null, return an empty string. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n return ''\n }\n\n if (typeof this.response !== 'string') {\n if (!stream) {\n throw new InvariantError(\n 'dynamic responses cannot be unchunked. This is a bug in Next.js'\n )\n }\n\n return streamToString(this.readable)\n }\n\n return this.response\n }\n\n /**\n * Returns a readable stream of the response.\n */\n private get readable(): ReadableStream {\n if (this.response === null) {\n // If the response is null, return an empty stream. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n return new ReadableStream({\n start(controller) {\n controller.close()\n },\n })\n }\n\n if (typeof this.response === 'string') {\n return streamFromString(this.response)\n }\n\n if (Buffer.isBuffer(this.response)) {\n return streamFromBuffer(this.response)\n }\n\n // If the response is an array of streams, then chain them together.\n if (Array.isArray(this.response)) {\n return chainStreams(...this.response)\n }\n\n return this.response\n }\n\n /**\n * Coerces the response to an array of streams. This will convert the response\n * to an array of streams if it is not already one.\n *\n * @returns An array of streams\n */\n private coerce(): ReadableStream[] {\n if (this.response === null) {\n // If the response is null, return an empty stream. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n return []\n }\n\n if (typeof this.response === 'string') {\n return [streamFromString(this.response)]\n } else if (Array.isArray(this.response)) {\n return this.response\n } else if (Buffer.isBuffer(this.response)) {\n return [streamFromBuffer(this.response)]\n } else {\n return [this.response]\n }\n }\n\n /**\n * Unshifts a new stream to the response. This will convert the response to an\n * array of streams if it is not already one and will add the new stream to\n * the start of the array. When this response is piped, all of the streams\n * will be piped one after the other.\n *\n * @param readable The new stream to unshift\n */\n public unshift(readable: ReadableStream): void {\n // Coerce the response to an array of streams.\n this.response = this.coerce()\n\n // Add the new stream to the start of the array.\n this.response.unshift(readable)\n }\n\n /**\n * Chains a new stream to the response. This will convert the response to an\n * array of streams if it is not already one and will add the new stream to\n * the end. When this response is piped, all of the streams will be piped\n * one after the other.\n *\n * @param readable The new stream to chain\n */\n public push(readable: ReadableStream): void {\n // Coerce the response to an array of streams.\n this.response = this.coerce()\n\n // Add the new stream to the end of the array.\n this.response.push(readable)\n }\n\n /**\n * Pipes the response to a writable stream. This will close/cancel the\n * writable stream if an error is encountered. If this doesn't throw, then\n * the writable stream will be closed or aborted.\n *\n * @param writable Writable stream to pipe the response to\n */\n public async pipeTo(writable: WritableStream): Promise {\n try {\n await this.readable.pipeTo(writable, {\n // We want to close the writable stream ourselves so that we can wait\n // for the waitUntil promise to resolve before closing it. If an error\n // is encountered, we'll abort the writable stream if we swallowed the\n // error.\n preventClose: true,\n })\n\n // If there is a waitUntil promise, wait for it to resolve before\n // closing the writable stream.\n if (this.waitUntil) await this.waitUntil\n\n // Close the writable stream.\n await writable.close()\n } catch (err) {\n // If this is an abort error, we should abort the writable stream (as we\n // took ownership of it when we started piping). We don't need to re-throw\n // because we handled the error.\n if (isAbortError(err)) {\n // Abort the writable stream if an error is encountered.\n await writable.abort(err)\n\n return\n }\n\n // We're not aborting the writer here as when this method throws it's not\n // clear as to how so the caller should assume it's their responsibility\n // to clean up the writer.\n throw err\n }\n }\n\n /**\n * Pipes the response to a node response. This will close/cancel the node\n * response if an error is encountered.\n *\n * @param res\n */\n public async pipeToNodeResponse(res: ServerResponse) {\n await pipeToNodeResponse(this.readable, res, this.waitUntil)\n }\n}\n"],"names":["chainStreams","streamFromBuffer","streamFromString","streamToString","isAbortError","pipeToNodeResponse","InvariantError","RenderResult","EMPTY","metadata","contentType","fromStatic","value","constructor","response","waitUntil","assignMetadata","Object","assign","isNull","isDynamic","toUnchunkedString","stream","readable","ReadableStream","start","controller","close","Buffer","isBuffer","Array","isArray","coerce","unshift","push","pipeTo","writable","preventClose","err","abort","res"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 6754, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/response-cache/utils.ts"],"sourcesContent":["import {\n CachedRouteKind,\n IncrementalCacheKind,\n type CachedAppPageValue,\n type CachedPageValue,\n type IncrementalResponseCacheEntry,\n type ResponseCacheEntry,\n} from './types'\n\nimport RenderResult from '../render-result'\nimport { RouteKind } from '../route-kind'\nimport { HTML_CONTENT_TYPE_HEADER } from '../../lib/constants'\n\nexport async function fromResponseCacheEntry(\n cacheEntry: ResponseCacheEntry\n): Promise {\n return {\n ...cacheEntry,\n value:\n cacheEntry.value?.kind === CachedRouteKind.PAGES\n ? {\n kind: CachedRouteKind.PAGES,\n html: await cacheEntry.value.html.toUnchunkedString(true),\n pageData: cacheEntry.value.pageData,\n headers: cacheEntry.value.headers,\n status: cacheEntry.value.status,\n }\n : cacheEntry.value?.kind === CachedRouteKind.APP_PAGE\n ? {\n kind: CachedRouteKind.APP_PAGE,\n html: await cacheEntry.value.html.toUnchunkedString(true),\n postponed: cacheEntry.value.postponed,\n rscData: cacheEntry.value.rscData,\n headers: cacheEntry.value.headers,\n status: cacheEntry.value.status,\n segmentData: cacheEntry.value.segmentData,\n }\n : cacheEntry.value,\n }\n}\n\nexport async function toResponseCacheEntry(\n response: IncrementalResponseCacheEntry | null\n): Promise {\n if (!response) return null\n\n return {\n isMiss: response.isMiss,\n isStale: response.isStale,\n cacheControl: response.cacheControl,\n value:\n response.value?.kind === CachedRouteKind.PAGES\n ? ({\n kind: CachedRouteKind.PAGES,\n html: RenderResult.fromStatic(\n response.value.html,\n HTML_CONTENT_TYPE_HEADER\n ),\n pageData: response.value.pageData,\n headers: response.value.headers,\n status: response.value.status,\n } satisfies CachedPageValue)\n : response.value?.kind === CachedRouteKind.APP_PAGE\n ? ({\n kind: CachedRouteKind.APP_PAGE,\n html: RenderResult.fromStatic(\n response.value.html,\n HTML_CONTENT_TYPE_HEADER\n ),\n rscData: response.value.rscData,\n headers: response.value.headers,\n status: response.value.status,\n postponed: response.value.postponed,\n segmentData: response.value.segmentData,\n } satisfies CachedAppPageValue)\n : response.value,\n }\n}\n\nexport function routeKindToIncrementalCacheKind(\n routeKind: RouteKind\n): Exclude {\n switch (routeKind) {\n case RouteKind.PAGES:\n return IncrementalCacheKind.PAGES\n case RouteKind.APP_PAGE:\n return IncrementalCacheKind.APP_PAGE\n case RouteKind.IMAGE:\n return IncrementalCacheKind.IMAGE\n case RouteKind.APP_ROUTE:\n return IncrementalCacheKind.APP_ROUTE\n case RouteKind.PAGES_API:\n // Pages Router API routes are not cached in the incremental cache.\n throw new Error(`Unexpected route kind ${routeKind}`)\n default:\n return routeKind satisfies never\n }\n}\n"],"names":["CachedRouteKind","IncrementalCacheKind","RenderResult","RouteKind","HTML_CONTENT_TYPE_HEADER","fromResponseCacheEntry","cacheEntry","value","kind","PAGES","html","toUnchunkedString","pageData","headers","status","APP_PAGE","postponed","rscData","segmentData","toResponseCacheEntry","response","isMiss","isStale","cacheControl","fromStatic","routeKindToIncrementalCacheKind","routeKind","IMAGE","APP_ROUTE","PAGES_API","Error"],"mappings":";;;;;;;;AAAA,SACEA,eAAe,EACfC,oBAAoB,QAKf,UAAS;AAEhB,OAAOC,kBAAkB,mBAAkB;AAC3C,SAASC,SAAS,QAAQ,gBAAe;AACzC,SAASC,wBAAwB,QAAQ,sBAAqB;;;;;AAEvD,eAAeC,uBACpBC,UAA8B;QAK1BA,mBAQIA;IAXR,OAAO;QACL,GAAGA,UAAU;QACbC,OACED,CAAAA,CAAAA,oBAAAA,WAAWC,KAAK,KAAA,OAAA,KAAA,IAAhBD,kBAAkBE,IAAI,MAAKR,4OAAAA,CAAgBS,KAAK,GAC5C;YACED,MAAMR,4OAAAA,CAAgBS,KAAK;YAC3BC,MAAM,MAAMJ,WAAWC,KAAK,CAACG,IAAI,CAACC,iBAAiB,CAAC;YACpDC,UAAUN,WAAWC,KAAK,CAACK,QAAQ;YACnCC,SAASP,WAAWC,KAAK,CAACM,OAAO;YACjCC,QAAQR,WAAWC,KAAK,CAACO,MAAM;QACjC,IACAR,CAAAA,CAAAA,qBAAAA,WAAWC,KAAK,KAAA,OAAA,KAAA,IAAhBD,mBAAkBE,IAAI,MAAKR,4OAAAA,CAAgBe,QAAQ,GACjD;YACEP,MAAMR,4OAAAA,CAAgBe,QAAQ;YAC9BL,MAAM,MAAMJ,WAAWC,KAAK,CAACG,IAAI,CAACC,iBAAiB,CAAC;YACpDK,WAAWV,WAAWC,KAAK,CAACS,SAAS;YACrCC,SAASX,WAAWC,KAAK,CAACU,OAAO;YACjCJ,SAASP,WAAWC,KAAK,CAACM,OAAO;YACjCC,QAAQR,WAAWC,KAAK,CAACO,MAAM;YAC/BI,aAAaZ,WAAWC,KAAK,CAACW,WAAW;QAC3C,IACAZ,WAAWC,KAAK;IAC1B;AACF;AAEO,eAAeY,qBACpBC,QAA8C;QAS1CA,iBAWIA;IAlBR,IAAI,CAACA,UAAU,OAAO;IAEtB,OAAO;QACLC,QAAQD,SAASC,MAAM;QACvBC,SAASF,SAASE,OAAO;QACzBC,cAAcH,SAASG,YAAY;QACnChB,OACEa,CAAAA,CAAAA,kBAAAA,SAASb,KAAK,KAAA,OAAA,KAAA,IAAda,gBAAgBZ,IAAI,MAAKR,4OAAAA,CAAgBS,KAAK,GACzC;YACCD,MAAMR,4OAAAA,CAAgBS,KAAK;YAC3BC,MAAMR,0NAAAA,CAAasB,UAAU,CAC3BJ,SAASb,KAAK,CAACG,IAAI,EACnBN,iOAAAA;YAEFQ,UAAUQ,SAASb,KAAK,CAACK,QAAQ;YACjCC,SAASO,SAASb,KAAK,CAACM,OAAO;YAC/BC,QAAQM,SAASb,KAAK,CAACO,MAAM;QAC/B,IACAM,CAAAA,CAAAA,mBAAAA,SAASb,KAAK,KAAA,OAAA,KAAA,IAAda,iBAAgBZ,IAAI,MAAKR,4OAAAA,CAAgBe,QAAQ,GAC9C;YACCP,MAAMR,4OAAAA,CAAgBe,QAAQ;YAC9BL,MAAMR,0NAAAA,CAAasB,UAAU,CAC3BJ,SAASb,KAAK,CAACG,IAAI,EACnBN,iOAAAA;YAEFa,SAASG,SAASb,KAAK,CAACU,OAAO;YAC/BJ,SAASO,SAASb,KAAK,CAACM,OAAO;YAC/BC,QAAQM,SAASb,KAAK,CAACO,MAAM;YAC7BE,WAAWI,SAASb,KAAK,CAACS,SAAS;YACnCE,aAAaE,SAASb,KAAK,CAACW,WAAW;QACzC,IACAE,SAASb,KAAK;IACxB;AACF;AAEO,SAASkB,gCACdC,SAAoB;IAEpB,OAAQA;QACN,KAAKvB,yNAAAA,CAAUM,KAAK;YAClB,OAAOR,iPAAAA,CAAqBQ,KAAK;QACnC,KAAKN,yNAAAA,CAAUY,QAAQ;YACrB,OAAOd,iPAAAA,CAAqBc,QAAQ;QACtC,KAAKZ,yNAAAA,CAAUwB,KAAK;YAClB,OAAO1B,iPAAAA,CAAqB0B,KAAK;QACnC,KAAKxB,yNAAAA,CAAUyB,SAAS;YACtB,OAAO3B,iPAAAA,CAAqB2B,SAAS;QACvC,KAAKzB,yNAAAA,CAAU0B,SAAS;YACtB,mEAAmE;YACnE,MAAM,OAAA,cAA+C,CAA/C,IAAIC,MAAM,CAAC,sBAAsB,EAAEJ,WAAW,GAA9C,qBAAA;uBAAA;4BAAA;8BAAA;YAA8C;QACtD;YACE,OAAOA;IACX;AACF","ignoreList":[0]}}, + {"offset": {"line": 6840, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/response-cache/index.ts"],"sourcesContent":["import type {\n ResponseCacheEntry,\n ResponseGenerator,\n ResponseCacheBase,\n IncrementalResponseCacheEntry,\n IncrementalResponseCache,\n} from './types'\n\nimport { Batcher } from '../../lib/batcher'\nimport { LRUCache } from '../lib/lru-cache'\nimport { warnOnce } from '../../build/output/log'\nimport { scheduleOnNextTick } from '../../lib/scheduler'\nimport {\n fromResponseCacheEntry,\n routeKindToIncrementalCacheKind,\n toResponseCacheEntry,\n} from './utils'\nimport type { RouteKind } from '../route-kind'\n\n/**\n * Parses an environment variable as a positive integer, returning the fallback\n * if the value is missing, not a number, or not positive.\n */\nfunction parsePositiveInt(\n envValue: string | undefined,\n fallback: number\n): number {\n if (!envValue) return fallback\n const parsed = parseInt(envValue, 10)\n return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback\n}\n\n/**\n * Default TTL (in milliseconds) for minimal mode response cache entries.\n * Used for cache hit validation as a fallback for providers that don't\n * send the x-invocation-id header yet.\n *\n * 10 seconds chosen because:\n * - Long enough to dedupe rapid successive requests (e.g., page + data)\n * - Short enough to not serve stale data across unrelated requests\n *\n * Can be configured via `NEXT_PRIVATE_RESPONSE_CACHE_TTL` environment variable.\n */\nconst DEFAULT_TTL_MS = parsePositiveInt(\n process.env.NEXT_PRIVATE_RESPONSE_CACHE_TTL,\n 10_000\n)\n\n/**\n * Default maximum number of entries in the response cache.\n * Can be configured via `NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE` environment variable.\n */\nconst DEFAULT_MAX_SIZE = parsePositiveInt(\n process.env.NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE,\n 150\n)\n\n/**\n * Separator used in compound cache keys to join pathname and invocationID.\n * Using null byte (\\0) since it cannot appear in valid URL paths or UUIDs.\n */\nconst KEY_SEPARATOR = '\\0'\n\n/**\n * Sentinel value used for TTL-based cache entries (when invocationID is undefined).\n * Chosen to be a clearly reserved marker for internal cache keys.\n */\nconst TTL_SENTINEL = '__ttl_sentinel__'\n\n/**\n * Entry stored in the LRU cache.\n */\ntype CacheEntry = {\n entry: IncrementalResponseCacheEntry | null\n /**\n * TTL expiration timestamp in milliseconds. Used as a fallback for\n * cache hit validation when providers don't send x-invocation-id.\n * Memory pressure is managed by LRU eviction rather than timers.\n */\n expiresAt: number\n}\n\n/**\n * Creates a compound cache key from pathname and invocationID.\n */\nfunction createCacheKey(\n pathname: string,\n invocationID: string | undefined\n): string {\n return `${pathname}${KEY_SEPARATOR}${invocationID ?? TTL_SENTINEL}`\n}\n\n/**\n * Extracts the invocationID from a compound cache key.\n * Returns undefined if the key used TTL_SENTINEL.\n */\nfunction extractInvocationID(compoundKey: string): string | undefined {\n const separatorIndex = compoundKey.lastIndexOf(KEY_SEPARATOR)\n if (separatorIndex === -1) return undefined\n\n const invocationID = compoundKey.slice(separatorIndex + 1)\n return invocationID === TTL_SENTINEL ? undefined : invocationID\n}\n\nexport * from './types'\n\nexport default class ResponseCache implements ResponseCacheBase {\n private readonly getBatcher = Batcher.create<\n { key: string; isOnDemandRevalidate: boolean },\n IncrementalResponseCacheEntry | null,\n string\n >({\n // Ensure on-demand revalidate doesn't block normal requests, it should be\n // safe to run an on-demand revalidate for the same key as a normal request.\n cacheKeyFn: ({ key, isOnDemandRevalidate }) =>\n `${key}-${isOnDemandRevalidate ? '1' : '0'}`,\n // We wait to do any async work until after we've added our promise to\n // `pendingResponses` to ensure that any any other calls will reuse the\n // same promise until we've fully finished our work.\n schedulerFn: scheduleOnNextTick,\n })\n\n private readonly revalidateBatcher = Batcher.create<\n string,\n IncrementalResponseCacheEntry | null\n >({\n // We wait to do any async work until after we've added our promise to\n // `pendingResponses` to ensure that any any other calls will reuse the\n // same promise until we've fully finished our work.\n schedulerFn: scheduleOnNextTick,\n })\n\n /**\n * LRU cache for minimal mode using compound keys (pathname + invocationID).\n * This allows multiple invocations to cache the same pathname without\n * overwriting each other's entries.\n */\n private readonly cache: LRUCache\n\n /**\n * Set of invocation IDs that have had cache entries evicted.\n * Used to detect when the cache size may be too small.\n * Bounded to prevent memory growth.\n */\n private readonly evictedInvocationIDs: Set = new Set()\n\n /**\n * The configured max size, stored for logging.\n */\n private readonly maxSize: number\n\n /**\n * The configured TTL for cache entries in milliseconds.\n */\n private readonly ttl: number\n\n // we don't use minimal_mode name here as this.minimal_mode is\n // statically replace for server runtimes but we need it to\n // be dynamic here\n private minimal_mode?: boolean\n\n constructor(\n minimal_mode: boolean,\n maxSize: number = DEFAULT_MAX_SIZE,\n ttl: number = DEFAULT_TTL_MS\n ) {\n this.minimal_mode = minimal_mode\n this.maxSize = maxSize\n this.ttl = ttl\n\n // Create the LRU cache with eviction tracking\n this.cache = new LRUCache(maxSize, undefined, (compoundKey) => {\n const invocationID = extractInvocationID(compoundKey)\n if (invocationID) {\n // Bound to 100 entries to prevent unbounded memory growth.\n // FIFO eviction is acceptable here because:\n // 1. Invocations are short-lived (single request lifecycle), so older\n // invocations are unlikely to still be active after 100 newer ones\n // 2. This warning mechanism is best-effort for developer guidance—\n // missing occasional eviction warnings doesn't affect correctness\n // 3. If a long-running invocation is somehow evicted and then has\n // another cache entry evicted, it will simply be re-added\n if (this.evictedInvocationIDs.size >= 100) {\n const first = this.evictedInvocationIDs.values().next().value\n if (first) this.evictedInvocationIDs.delete(first)\n }\n this.evictedInvocationIDs.add(invocationID)\n }\n })\n }\n\n /**\n * Gets the response cache entry for the given key.\n *\n * @param key - The key to get the response cache entry for.\n * @param responseGenerator - The response generator to use to generate the response cache entry.\n * @param context - The context for the get request.\n * @returns The response cache entry.\n */\n public async get(\n key: string | null,\n responseGenerator: ResponseGenerator,\n context: {\n routeKind: RouteKind\n isOnDemandRevalidate?: boolean\n isPrefetch?: boolean\n incrementalCache: IncrementalResponseCache\n isRoutePPREnabled?: boolean\n isFallback?: boolean\n waitUntil?: (prom: Promise) => void\n\n /**\n * The invocation ID from the infrastructure. Used to scope the\n * in-memory cache to a single revalidation request in minimal mode.\n */\n invocationID?: string\n }\n ): Promise {\n // If there is no key for the cache, we can't possibly look this up in the\n // cache so just return the result of the response generator.\n if (!key) {\n return responseGenerator({\n hasResolved: false,\n previousCacheEntry: null,\n })\n }\n\n // Check minimal mode cache before doing any other work.\n if (this.minimal_mode) {\n const cacheKey = createCacheKey(key, context.invocationID)\n const cachedItem = this.cache.get(cacheKey)\n\n if (cachedItem) {\n // With invocationID: exact match found - always a hit\n // With TTL mode: must check expiration\n if (context.invocationID !== undefined) {\n return toResponseCacheEntry(cachedItem.entry)\n }\n\n // TTL mode: check expiration\n const now = Date.now()\n if (cachedItem.expiresAt > now) {\n return toResponseCacheEntry(cachedItem.entry)\n }\n\n // TTL expired - clean up\n this.cache.remove(cacheKey)\n }\n\n // Warn if this invocation had entries evicted - indicates cache may be too small.\n if (\n context.invocationID &&\n this.evictedInvocationIDs.has(context.invocationID)\n ) {\n warnOnce(\n `Response cache entry was evicted for invocation ${context.invocationID}. ` +\n `Consider increasing NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE (current: ${this.maxSize}).`\n )\n }\n }\n\n const {\n incrementalCache,\n isOnDemandRevalidate = false,\n isFallback = false,\n isRoutePPREnabled = false,\n isPrefetch = false,\n waitUntil,\n routeKind,\n invocationID,\n } = context\n\n const response = await this.getBatcher.batch(\n { key, isOnDemandRevalidate },\n ({ resolve }) => {\n const promise = this.handleGet(\n key,\n responseGenerator,\n {\n incrementalCache,\n isOnDemandRevalidate,\n isFallback,\n isRoutePPREnabled,\n isPrefetch,\n routeKind,\n invocationID,\n },\n resolve\n )\n\n // We need to ensure background revalidates are passed to waitUntil.\n if (waitUntil) waitUntil(promise)\n\n return promise\n }\n )\n\n return toResponseCacheEntry(response)\n }\n\n /**\n * Handles the get request for the response cache.\n *\n * @param key - The key to get the response cache entry for.\n * @param responseGenerator - The response generator to use to generate the response cache entry.\n * @param context - The context for the get request.\n * @param resolve - The resolve function to use to resolve the response cache entry.\n * @returns The response cache entry.\n */\n private async handleGet(\n key: string,\n responseGenerator: ResponseGenerator,\n context: {\n incrementalCache: IncrementalResponseCache\n isOnDemandRevalidate: boolean\n isFallback: boolean\n isRoutePPREnabled: boolean\n isPrefetch: boolean\n routeKind: RouteKind\n invocationID: string | undefined\n },\n resolve: (value: IncrementalResponseCacheEntry | null) => void\n ): Promise {\n let previousIncrementalCacheEntry: IncrementalResponseCacheEntry | null =\n null\n let resolved = false\n\n try {\n // Get the previous cache entry if not in minimal mode\n previousIncrementalCacheEntry = !this.minimal_mode\n ? await context.incrementalCache.get(key, {\n kind: routeKindToIncrementalCacheKind(context.routeKind),\n isRoutePPREnabled: context.isRoutePPREnabled,\n isFallback: context.isFallback,\n })\n : null\n\n if (previousIncrementalCacheEntry && !context.isOnDemandRevalidate) {\n resolve(previousIncrementalCacheEntry)\n resolved = true\n\n if (!previousIncrementalCacheEntry.isStale || context.isPrefetch) {\n // The cached value is still valid, so we don't need to update it yet.\n return previousIncrementalCacheEntry\n }\n }\n\n // Revalidate the cache entry\n const incrementalResponseCacheEntry = await this.revalidate(\n key,\n context.incrementalCache,\n context.isRoutePPREnabled,\n context.isFallback,\n responseGenerator,\n previousIncrementalCacheEntry,\n previousIncrementalCacheEntry !== null && !context.isOnDemandRevalidate,\n undefined,\n context.invocationID\n )\n\n // Handle null response\n if (!incrementalResponseCacheEntry) {\n // Remove the cache item if it was set so we don't use it again.\n if (this.minimal_mode) {\n const cacheKey = createCacheKey(key, context.invocationID)\n this.cache.remove(cacheKey)\n }\n return null\n }\n\n // Resolve for on-demand revalidation or if not already resolved\n if (context.isOnDemandRevalidate && !resolved) {\n return incrementalResponseCacheEntry\n }\n\n return incrementalResponseCacheEntry\n } catch (err) {\n // If we've already resolved the cache entry, we can't reject as we\n // already resolved the cache entry so log the error here.\n if (resolved) {\n console.error(err)\n return null\n }\n\n throw err\n }\n }\n\n /**\n * Revalidates the cache entry for the given key.\n *\n * @param key - The key to revalidate the cache entry for.\n * @param incrementalCache - The incremental cache to use to revalidate the cache entry.\n * @param isRoutePPREnabled - Whether the route is PPR enabled.\n * @param isFallback - Whether the route is a fallback.\n * @param responseGenerator - The response generator to use to generate the response cache entry.\n * @param previousIncrementalCacheEntry - The previous cache entry to use to revalidate the cache entry.\n * @param hasResolved - Whether the response has been resolved.\n * @param waitUntil - Optional function to register background work.\n * @param invocationID - The invocation ID for cache key scoping.\n * @returns The revalidated cache entry.\n */\n public async revalidate(\n key: string,\n incrementalCache: IncrementalResponseCache,\n isRoutePPREnabled: boolean,\n isFallback: boolean,\n responseGenerator: ResponseGenerator,\n previousIncrementalCacheEntry: IncrementalResponseCacheEntry | null,\n hasResolved: boolean,\n waitUntil?: (prom: Promise) => void,\n invocationID?: string\n ) {\n return this.revalidateBatcher.batch(key, () => {\n const promise = this.handleRevalidate(\n key,\n incrementalCache,\n isRoutePPREnabled,\n isFallback,\n responseGenerator,\n previousIncrementalCacheEntry,\n hasResolved,\n invocationID\n )\n\n // We need to ensure background revalidates are passed to waitUntil.\n if (waitUntil) waitUntil(promise)\n\n return promise\n })\n }\n\n private async handleRevalidate(\n key: string,\n incrementalCache: IncrementalResponseCache,\n isRoutePPREnabled: boolean,\n isFallback: boolean,\n responseGenerator: ResponseGenerator,\n previousIncrementalCacheEntry: IncrementalResponseCacheEntry | null,\n hasResolved: boolean,\n invocationID: string | undefined\n ) {\n try {\n // Generate the response cache entry using the response generator.\n const responseCacheEntry = await responseGenerator({\n hasResolved,\n previousCacheEntry: previousIncrementalCacheEntry,\n isRevalidating: true,\n })\n if (!responseCacheEntry) {\n return null\n }\n\n // Convert the response cache entry to an incremental response cache entry.\n const incrementalResponseCacheEntry = await fromResponseCacheEntry({\n ...responseCacheEntry,\n isMiss: !previousIncrementalCacheEntry,\n })\n\n // We want to persist the result only if it has a cache control value\n // defined.\n if (incrementalResponseCacheEntry.cacheControl) {\n if (this.minimal_mode) {\n // Set TTL expiration for cache hit validation. Entries are validated\n // by invocationID when available, with TTL as a fallback for providers\n // that don't send x-invocation-id. Memory is managed by LRU eviction.\n const cacheKey = createCacheKey(key, invocationID)\n this.cache.set(cacheKey, {\n entry: incrementalResponseCacheEntry,\n expiresAt: Date.now() + this.ttl,\n })\n } else {\n await incrementalCache.set(key, incrementalResponseCacheEntry.value, {\n cacheControl: incrementalResponseCacheEntry.cacheControl,\n isRoutePPREnabled,\n isFallback,\n })\n }\n }\n\n return incrementalResponseCacheEntry\n } catch (err) {\n // When a path is erroring we automatically re-set the existing cache\n // with new revalidate and expire times to prevent non-stop retrying.\n if (previousIncrementalCacheEntry?.cacheControl) {\n const revalidate = Math.min(\n Math.max(\n previousIncrementalCacheEntry.cacheControl.revalidate || 3,\n 3\n ),\n 30\n )\n const expire =\n previousIncrementalCacheEntry.cacheControl.expire === undefined\n ? undefined\n : Math.max(\n revalidate + 3,\n previousIncrementalCacheEntry.cacheControl.expire\n )\n\n await incrementalCache.set(key, previousIncrementalCacheEntry.value, {\n cacheControl: { revalidate: revalidate, expire: expire },\n isRoutePPREnabled,\n isFallback,\n })\n }\n\n // We haven't resolved yet, so let's throw to indicate an error.\n throw err\n }\n }\n}\n"],"names":["Batcher","LRUCache","warnOnce","scheduleOnNextTick","fromResponseCacheEntry","routeKindToIncrementalCacheKind","toResponseCacheEntry","parsePositiveInt","envValue","fallback","parsed","parseInt","Number","isFinite","DEFAULT_TTL_MS","process","env","NEXT_PRIVATE_RESPONSE_CACHE_TTL","DEFAULT_MAX_SIZE","NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE","KEY_SEPARATOR","TTL_SENTINEL","createCacheKey","pathname","invocationID","extractInvocationID","compoundKey","separatorIndex","lastIndexOf","undefined","slice","ResponseCache","constructor","minimal_mode","maxSize","ttl","getBatcher","create","cacheKeyFn","key","isOnDemandRevalidate","schedulerFn","revalidateBatcher","evictedInvocationIDs","Set","cache","size","first","values","next","value","delete","add","get","responseGenerator","context","hasResolved","previousCacheEntry","cacheKey","cachedItem","entry","now","Date","expiresAt","remove","has","incrementalCache","isFallback","isRoutePPREnabled","isPrefetch","waitUntil","routeKind","response","batch","resolve","promise","handleGet","previousIncrementalCacheEntry","resolved","kind","isStale","incrementalResponseCacheEntry","revalidate","err","console","error","handleRevalidate","responseCacheEntry","isRevalidating","isMiss","cacheControl","set","Math","min","max","expire"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 7139, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/promise-with-resolvers.ts"],"sourcesContent":["export function createPromiseWithResolvers(): PromiseWithResolvers {\n // Shim of Stage 4 Promise.withResolvers proposal\n let resolve: (value: T | PromiseLike) => void\n let reject: (reason: any) => void\n const promise = new Promise((res, rej) => {\n resolve = res\n reject = rej\n })\n return { resolve: resolve!, reject: reject!, promise }\n}\n"],"names":["createPromiseWithResolvers","resolve","reject","promise","Promise","res","rej"],"mappings":";;;;AAAO,SAASA;IACd,iDAAiD;IACjD,IAAIC;IACJ,IAAIC;IACJ,MAAMC,UAAU,IAAIC,QAAW,CAACC,KAAKC;QACnCL,UAAUI;QACVH,SAASI;IACX;IACA,OAAO;QAAEL,SAASA;QAAUC,QAAQA;QAASC;IAAQ;AACvD","ignoreList":[0]}}, + {"offset": {"line": 7161, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/app-render/staged-rendering.ts"],"sourcesContent":["import { InvariantError } from '../../shared/lib/invariant-error'\nimport { createPromiseWithResolvers } from '../../shared/lib/promise-with-resolvers'\n\nexport enum RenderStage {\n Before = 1,\n Static = 2,\n Runtime = 3,\n Dynamic = 4,\n Abandoned = 5,\n}\n\nexport type NonStaticRenderStage = RenderStage.Runtime | RenderStage.Dynamic\n\nexport class StagedRenderingController {\n currentStage: RenderStage = RenderStage.Before\n\n staticInterruptReason: Error | null = null\n runtimeInterruptReason: Error | null = null\n staticStageEndTime: number = Infinity\n runtimeStageEndTime: number = Infinity\n\n private runtimeStageListeners: Array<() => void> = []\n private dynamicStageListeners: Array<() => void> = []\n\n private runtimeStagePromise = createPromiseWithResolvers()\n private dynamicStagePromise = createPromiseWithResolvers()\n\n private mayAbandon: boolean = false\n\n constructor(\n private abortSignal: AbortSignal | null = null,\n private hasRuntimePrefetch: boolean\n ) {\n if (abortSignal) {\n abortSignal.addEventListener(\n 'abort',\n () => {\n const { reason } = abortSignal\n if (this.currentStage < RenderStage.Runtime) {\n this.runtimeStagePromise.promise.catch(ignoreReject) // avoid unhandled rejections\n this.runtimeStagePromise.reject(reason)\n }\n if (\n this.currentStage < RenderStage.Dynamic ||\n this.currentStage === RenderStage.Abandoned\n ) {\n this.dynamicStagePromise.promise.catch(ignoreReject) // avoid unhandled rejections\n this.dynamicStagePromise.reject(reason)\n }\n },\n { once: true }\n )\n\n this.mayAbandon = true\n }\n }\n\n onStage(stage: NonStaticRenderStage, callback: () => void) {\n if (this.currentStage >= stage) {\n callback()\n } else if (stage === RenderStage.Runtime) {\n this.runtimeStageListeners.push(callback)\n } else if (stage === RenderStage.Dynamic) {\n this.dynamicStageListeners.push(callback)\n } else {\n // This should never happen\n throw new InvariantError(`Invalid render stage: ${stage}`)\n }\n }\n\n canSyncInterrupt() {\n // If we haven't started the render yet, it can't be interrupted.\n if (this.currentStage === RenderStage.Before) {\n return false\n }\n\n const boundaryStage = this.hasRuntimePrefetch\n ? RenderStage.Dynamic\n : RenderStage.Runtime\n return this.currentStage < boundaryStage\n }\n\n syncInterruptCurrentStageWithReason(reason: Error) {\n if (this.currentStage === RenderStage.Before) {\n return\n }\n\n // If Sync IO occurs during the initial (abandonable) render, we'll retry it,\n // so we want a slightly different flow.\n // See the implementation of `abandonRenderImpl` for more explanation.\n if (this.mayAbandon) {\n return this.abandonRenderImpl()\n }\n\n // If we're in the final render, we cannot abandon it. We need to advance to the Dynamic stage\n // and capture the interruption reason.\n switch (this.currentStage) {\n case RenderStage.Static: {\n this.staticInterruptReason = reason\n this.advanceStage(RenderStage.Dynamic)\n return\n }\n case RenderStage.Runtime: {\n // We only error for Sync IO in the runtime stage if the route\n // is configured to use runtime prefetching.\n // We do this to reflect the fact that during a runtime prefetch,\n // Sync IO aborts aborts the render.\n // Note that `canSyncInterrupt` should prevent us from getting here at all\n // if runtime prefetching isn't enabled.\n if (this.hasRuntimePrefetch) {\n this.runtimeInterruptReason = reason\n this.advanceStage(RenderStage.Dynamic)\n }\n return\n }\n case RenderStage.Dynamic:\n case RenderStage.Abandoned:\n default:\n }\n }\n\n getStaticInterruptReason() {\n return this.staticInterruptReason\n }\n\n getRuntimeInterruptReason() {\n return this.runtimeInterruptReason\n }\n\n getStaticStageEndTime() {\n return this.staticStageEndTime\n }\n\n getRuntimeStageEndTime() {\n return this.runtimeStageEndTime\n }\n\n abandonRender() {\n if (!this.mayAbandon) {\n throw new InvariantError(\n '`abandonRender` called on a stage controller that cannot be abandoned.'\n )\n }\n\n this.abandonRenderImpl()\n }\n\n private abandonRenderImpl() {\n // In staged rendering, only the initial render is abandonable.\n // We can abandon the initial render if\n // 1. We notice a cache miss, and need to wait for caches to fill\n // 2. A sync IO error occurs, and the render should be interrupted\n // (this might be a lazy intitialization of a module,\n // so we still want to restart in this case and see if it still occurs)\n // In either case, we'll be doing another render after this one,\n // so we only want to unblock the Runtime stage, not Dynamic, because\n // unblocking the dynamic stage would likely lead to wasted (uncached) IO.\n const { currentStage } = this\n switch (currentStage) {\n case RenderStage.Static: {\n this.currentStage = RenderStage.Abandoned\n this.resolveRuntimeStage()\n return\n }\n case RenderStage.Runtime: {\n this.currentStage = RenderStage.Abandoned\n return\n }\n case RenderStage.Dynamic:\n case RenderStage.Before:\n case RenderStage.Abandoned:\n break\n default: {\n currentStage satisfies never\n }\n }\n }\n\n advanceStage(\n stage: RenderStage.Static | RenderStage.Runtime | RenderStage.Dynamic\n ) {\n // If we're already at the target stage or beyond, do nothing.\n // (this can happen e.g. if sync IO advanced us to the dynamic stage)\n if (stage <= this.currentStage) {\n return\n }\n\n let currentStage = this.currentStage\n this.currentStage = stage\n\n if (currentStage < RenderStage.Runtime && stage >= RenderStage.Runtime) {\n this.staticStageEndTime = performance.now() + performance.timeOrigin\n this.resolveRuntimeStage()\n }\n if (currentStage < RenderStage.Dynamic && stage >= RenderStage.Dynamic) {\n this.runtimeStageEndTime = performance.now() + performance.timeOrigin\n this.resolveDynamicStage()\n return\n }\n }\n\n /** Fire the `onStage` listeners for the runtime stage and unblock any promises waiting for it. */\n private resolveRuntimeStage() {\n const runtimeListeners = this.runtimeStageListeners\n for (let i = 0; i < runtimeListeners.length; i++) {\n runtimeListeners[i]()\n }\n runtimeListeners.length = 0\n this.runtimeStagePromise.resolve()\n }\n\n /** Fire the `onStage` listeners for the dynamic stage and unblock any promises waiting for it. */\n private resolveDynamicStage() {\n const dynamicListeners = this.dynamicStageListeners\n for (let i = 0; i < dynamicListeners.length; i++) {\n dynamicListeners[i]()\n }\n dynamicListeners.length = 0\n this.dynamicStagePromise.resolve()\n }\n\n private getStagePromise(stage: NonStaticRenderStage): Promise {\n switch (stage) {\n case RenderStage.Runtime: {\n return this.runtimeStagePromise.promise\n }\n case RenderStage.Dynamic: {\n return this.dynamicStagePromise.promise\n }\n default: {\n stage satisfies never\n throw new InvariantError(`Invalid render stage: ${stage}`)\n }\n }\n }\n\n waitForStage(stage: NonStaticRenderStage) {\n return this.getStagePromise(stage)\n }\n\n delayUntilStage(\n stage: NonStaticRenderStage,\n displayName: string | undefined,\n resolvedValue: T\n ) {\n const ioTriggerPromise = this.getStagePromise(stage)\n\n const promise = makeDevtoolsIOPromiseFromIOTrigger(\n ioTriggerPromise,\n displayName,\n resolvedValue\n )\n\n // Analogously to `makeHangingPromise`, we might reject this promise if the signal is invoked.\n // (e.g. in the case where we don't want want the render to proceed to the dynamic stage and abort it).\n // We shouldn't consider this an unhandled rejection, so we attach a noop catch handler here to suppress this warning.\n if (this.abortSignal) {\n promise.catch(ignoreReject)\n }\n return promise\n }\n}\n\nfunction ignoreReject() {}\n\n// TODO(restart-on-cache-miss): the layering of `delayUntilStage`,\n// `makeDevtoolsIOPromiseFromIOTrigger` and and `makeDevtoolsIOAwarePromise`\n// is confusing, we should clean it up.\nfunction makeDevtoolsIOPromiseFromIOTrigger(\n ioTrigger: Promise,\n displayName: string | undefined,\n resolvedValue: T\n): Promise {\n // If we create a `new Promise` and give it a displayName\n // (with no userspace code above us in the stack)\n // React Devtools will use it as the IO cause when determining \"suspended by\".\n // In particular, it should shadow any inner IO that resolved/rejected the promise\n // (in case of staged rendering, this will be the `setTimeout` that triggers the relevant stage)\n const promise = new Promise((resolve, reject) => {\n ioTrigger.then(resolve.bind(null, resolvedValue), reject)\n })\n if (displayName !== undefined) {\n // @ts-expect-error\n promise.displayName = displayName\n }\n return promise\n}\n"],"names":["InvariantError","createPromiseWithResolvers","RenderStage","StagedRenderingController","constructor","abortSignal","hasRuntimePrefetch","currentStage","staticInterruptReason","runtimeInterruptReason","staticStageEndTime","Infinity","runtimeStageEndTime","runtimeStageListeners","dynamicStageListeners","runtimeStagePromise","dynamicStagePromise","mayAbandon","addEventListener","reason","promise","catch","ignoreReject","reject","once","onStage","stage","callback","push","canSyncInterrupt","boundaryStage","syncInterruptCurrentStageWithReason","abandonRenderImpl","advanceStage","getStaticInterruptReason","getRuntimeInterruptReason","getStaticStageEndTime","getRuntimeStageEndTime","abandonRender","resolveRuntimeStage","performance","now","timeOrigin","resolveDynamicStage","runtimeListeners","i","length","resolve","dynamicListeners","getStagePromise","waitForStage","delayUntilStage","displayName","resolvedValue","ioTriggerPromise","makeDevtoolsIOPromiseFromIOTrigger","ioTrigger","Promise","then","bind","undefined"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 7422, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/lib/patch-fetch.ts"],"sourcesContent":["import type {\n WorkAsyncStorage,\n WorkStore,\n} from '../app-render/work-async-storage.external'\n\nimport { AppRenderSpan, NextNodeServerSpan } from './trace/constants'\nimport { getTracer, SpanKind } from './trace/tracer'\nimport {\n CACHE_ONE_YEAR,\n INFINITE_CACHE,\n NEXT_CACHE_TAG_MAX_ITEMS,\n NEXT_CACHE_TAG_MAX_LENGTH,\n} from '../../lib/constants'\nimport { markCurrentScopeAsDynamic } from '../app-render/dynamic-rendering'\nimport { makeHangingPromise } from '../dynamic-rendering-utils'\nimport type { FetchMetric } from '../base-http'\nimport { createDedupeFetch } from './dedupe-fetch'\nimport {\n getCacheSignal,\n type RevalidateStore,\n type WorkUnitAsyncStorage,\n} from '../app-render/work-unit-async-storage.external'\nimport {\n CachedRouteKind,\n IncrementalCacheKind,\n type CachedFetchData,\n type ServerComponentsHmrCache,\n type SetIncrementalFetchCacheContext,\n} from '../response-cache'\nimport { cloneResponse } from './clone-response'\nimport type { IncrementalCache } from './incremental-cache'\nimport { RenderStage } from '../app-render/staged-rendering'\n\nconst isEdgeRuntime = process.env.NEXT_RUNTIME === 'edge'\n\ntype Fetcher = typeof fetch\n\ntype PatchedFetcher = Fetcher & {\n readonly __nextPatched: true\n readonly __nextGetStaticStore: () => WorkAsyncStorage\n readonly _nextOriginalFetch: Fetcher\n}\n\nexport const NEXT_PATCH_SYMBOL = Symbol.for('next-patch')\n\nfunction isFetchPatched() {\n return (globalThis as Record)[NEXT_PATCH_SYMBOL] === true\n}\n\nexport function validateRevalidate(\n revalidateVal: unknown,\n route: string\n): undefined | number {\n try {\n let normalizedRevalidate: number | undefined = undefined\n\n if (revalidateVal === false) {\n normalizedRevalidate = INFINITE_CACHE\n } else if (\n typeof revalidateVal === 'number' &&\n !isNaN(revalidateVal) &&\n revalidateVal > -1\n ) {\n normalizedRevalidate = revalidateVal\n } else if (typeof revalidateVal !== 'undefined') {\n throw new Error(\n `Invalid revalidate value \"${revalidateVal}\" on \"${route}\", must be a non-negative number or false`\n )\n }\n return normalizedRevalidate\n } catch (err: any) {\n // handle client component error from attempting to check revalidate value\n if (err instanceof Error && err.message.includes('Invalid revalidate')) {\n throw err\n }\n return undefined\n }\n}\n\nexport function validateTags(tags: any[], description: string) {\n const validTags: string[] = []\n const invalidTags: Array<{\n tag: any\n reason: string\n }> = []\n\n for (let i = 0; i < tags.length; i++) {\n const tag = tags[i]\n\n if (typeof tag !== 'string') {\n invalidTags.push({ tag, reason: 'invalid type, must be a string' })\n } else if (tag.length > NEXT_CACHE_TAG_MAX_LENGTH) {\n invalidTags.push({\n tag,\n reason: `exceeded max length of ${NEXT_CACHE_TAG_MAX_LENGTH}`,\n })\n } else {\n validTags.push(tag)\n }\n\n if (validTags.length > NEXT_CACHE_TAG_MAX_ITEMS) {\n console.warn(\n `Warning: exceeded max tag count for ${description}, dropped tags:`,\n tags.slice(i).join(', ')\n )\n break\n }\n }\n\n if (invalidTags.length > 0) {\n console.warn(`Warning: invalid tags passed to ${description}: `)\n\n for (const { tag, reason } of invalidTags) {\n console.log(`tag: \"${tag}\" ${reason}`)\n }\n }\n return validTags\n}\n\nfunction trackFetchMetric(\n workStore: WorkStore,\n ctx: Omit\n) {\n if (!workStore.shouldTrackFetchMetrics) {\n return\n }\n\n workStore.fetchMetrics ??= []\n\n workStore.fetchMetrics.push({\n ...ctx,\n end: performance.timeOrigin + performance.now(),\n idx: workStore.nextFetchId || 0,\n })\n}\n\nasync function createCachedPrerenderResponse(\n res: Response,\n cacheKey: string,\n incrementalCacheContext: SetIncrementalFetchCacheContext | undefined,\n incrementalCache: IncrementalCache,\n revalidate: number,\n handleUnlock: () => Promise | void\n): Promise {\n // We are prerendering at build time or revalidate time with cacheComponents so we\n // need to buffer the response so we can guarantee it can be read in a\n // microtask.\n const bodyBuffer = await res.arrayBuffer()\n\n const fetchedData = {\n headers: Object.fromEntries(res.headers.entries()),\n body: Buffer.from(bodyBuffer).toString('base64'),\n status: res.status,\n url: res.url,\n }\n\n // We can skip setting the serverComponentsHmrCache because we aren't in dev\n // mode.\n\n if (incrementalCacheContext) {\n await incrementalCache.set(\n cacheKey,\n { kind: CachedRouteKind.FETCH, data: fetchedData, revalidate },\n incrementalCacheContext\n )\n }\n\n await handleUnlock()\n\n // We return a new Response to the caller.\n return new Response(bodyBuffer, {\n headers: res.headers,\n status: res.status,\n statusText: res.statusText,\n })\n}\n\nasync function createCachedDynamicResponse(\n workStore: WorkStore,\n res: Response,\n cacheKey: string,\n incrementalCacheContext: SetIncrementalFetchCacheContext | undefined,\n incrementalCache: IncrementalCache,\n serverComponentsHmrCache: ServerComponentsHmrCache | undefined,\n revalidate: number,\n input: RequestInfo | URL,\n handleUnlock: () => Promise | void\n): Promise {\n // We're cloning the response using this utility because there exists a bug in\n // the undici library around response cloning. See the following pull request\n // for more details: https://github.com/vercel/next.js/pull/73274\n const [cloned1, cloned2] = cloneResponse(res)\n\n // We are dynamically rendering including dev mode. We want to return the\n // response to the caller as soon as possible because it might stream over a\n // very long time.\n const cacheSetPromise = cloned1\n .arrayBuffer()\n .then(async (arrayBuffer) => {\n const bodyBuffer = Buffer.from(arrayBuffer)\n\n const fetchedData = {\n headers: Object.fromEntries(cloned1.headers.entries()),\n body: bodyBuffer.toString('base64'),\n status: cloned1.status,\n url: cloned1.url,\n }\n\n serverComponentsHmrCache?.set(cacheKey, fetchedData)\n\n if (incrementalCacheContext) {\n await incrementalCache.set(\n cacheKey,\n { kind: CachedRouteKind.FETCH, data: fetchedData, revalidate },\n incrementalCacheContext\n )\n }\n })\n .catch((error) => console.warn(`Failed to set fetch cache`, input, error))\n .finally(handleUnlock)\n\n const pendingRevalidateKey = `cache-set-${cacheKey}`\n const pendingRevalidates = (workStore.pendingRevalidates ??= {})\n\n let pendingRevalidatePromise = Promise.resolve()\n if (pendingRevalidateKey in pendingRevalidates) {\n // There is already a pending revalidate entry that we need to await to\n // avoid race conditions.\n pendingRevalidatePromise = pendingRevalidates[pendingRevalidateKey]\n }\n\n pendingRevalidates[pendingRevalidateKey] = pendingRevalidatePromise\n .then(() => cacheSetPromise)\n .finally(() => {\n // If the pending revalidate is not present in the store, then we have\n // nothing to delete.\n if (!pendingRevalidates?.[pendingRevalidateKey]) {\n return\n }\n\n delete pendingRevalidates[pendingRevalidateKey]\n })\n\n return cloned2\n}\n\ninterface PatchableModule {\n workAsyncStorage: WorkAsyncStorage\n workUnitAsyncStorage: WorkUnitAsyncStorage\n}\n\nexport function createPatchedFetcher(\n originFetch: Fetcher,\n { workAsyncStorage, workUnitAsyncStorage }: PatchableModule\n): PatchedFetcher {\n // Create the patched fetch function.\n const patched = async function fetch(\n input: RequestInfo | URL,\n init: RequestInit | undefined\n ): Promise {\n let url: URL | undefined\n try {\n url = new URL(input instanceof Request ? input.url : input)\n url.username = ''\n url.password = ''\n } catch {\n // Error caused by malformed URL should be handled by native fetch\n url = undefined\n }\n const fetchUrl = url?.href ?? ''\n const method = init?.method?.toUpperCase() || 'GET'\n\n // Do create a new span trace for internal fetches in the\n // non-verbose mode.\n const isInternal = (init?.next as any)?.internal === true\n const hideSpan = process.env.NEXT_OTEL_FETCH_DISABLED === '1'\n // We don't track fetch metrics for internal fetches\n // so it's not critical that we have a start time, as it won't be recorded.\n // This is to workaround a flaky issue where performance APIs might\n // not be available and will require follow-up investigation.\n const fetchStart: number | undefined = isInternal\n ? undefined\n : performance.timeOrigin + performance.now()\n\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n let cacheSignal = workUnitStore ? getCacheSignal(workUnitStore) : null\n if (cacheSignal) {\n cacheSignal.beginRead()\n }\n\n const result = getTracer().trace(\n isInternal ? NextNodeServerSpan.internalFetch : AppRenderSpan.fetch,\n {\n hideSpan,\n kind: SpanKind.CLIENT,\n spanName: ['fetch', method, fetchUrl].filter(Boolean).join(' '),\n attributes: {\n 'http.url': fetchUrl,\n 'http.method': method,\n 'net.peer.name': url?.hostname,\n 'net.peer.port': url?.port || undefined,\n },\n },\n async () => {\n // If this is an internal fetch, we should not do any special treatment.\n if (isInternal) {\n return originFetch(input, init)\n }\n\n // If the workStore is not available, we can't do any\n // special treatment of fetch, therefore fallback to the original\n // fetch implementation.\n if (!workStore) {\n return originFetch(input, init)\n }\n\n // We should also fallback to the original fetch implementation if we\n // are in draft mode, it does not constitute a static generation.\n if (workStore.isDraftMode) {\n return originFetch(input, init)\n }\n\n const isRequestInput =\n input &&\n typeof input === 'object' &&\n typeof (input as Request).method === 'string'\n\n const getRequestMeta = (field: string) => {\n // If request input is present but init is not, retrieve from input first.\n const value = (init as any)?.[field]\n return value || (isRequestInput ? (input as any)[field] : null)\n }\n\n let finalRevalidate: number | undefined = undefined\n const getNextField = (field: 'revalidate' | 'tags') => {\n return typeof init?.next?.[field] !== 'undefined'\n ? init?.next?.[field]\n : isRequestInput\n ? (input as any).next?.[field]\n : undefined\n }\n // RequestInit doesn't keep extra fields e.g. next so it's\n // only available if init is used separate\n const originalFetchRevalidate = getNextField('revalidate')\n let currentFetchRevalidate = originalFetchRevalidate\n const tags: string[] = validateTags(\n getNextField('tags') || [],\n `fetch ${input.toString()}`\n )\n\n let revalidateStore: RevalidateStore | undefined\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-runtime':\n // TODO: Stop accumulating tags in client prerender. (fallthrough)\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n revalidateStore = workUnitStore\n break\n case 'request':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n if (revalidateStore) {\n if (Array.isArray(tags)) {\n // Collect tags onto parent caches or parent prerenders.\n const collectedTags =\n revalidateStore.tags ?? (revalidateStore.tags = [])\n for (const tag of tags) {\n if (!collectedTags.includes(tag)) {\n collectedTags.push(tag)\n }\n }\n }\n }\n\n const implicitTags = workUnitStore?.implicitTags\n\n let pageFetchCacheMode = workStore.fetchCache\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'unstable-cache':\n // Inside unstable-cache we treat it the same as force-no-store on\n // the page.\n pageFetchCacheMode = 'force-no-store'\n break\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n const isUsingNoStore = !!workStore.isUnstableNoStore\n\n let currentFetchCacheConfig = getRequestMeta('cache')\n let cacheReason = ''\n let cacheWarning: string | undefined\n\n if (\n typeof currentFetchCacheConfig === 'string' &&\n typeof currentFetchRevalidate !== 'undefined'\n ) {\n // If the revalidate value conflicts with the cache value, we should warn the user and unset the conflicting values.\n const isConflictingRevalidate =\n // revalidate: 0 and cache: force-cache\n (currentFetchCacheConfig === 'force-cache' &&\n currentFetchRevalidate === 0) ||\n // revalidate: >0 or revalidate: false and cache: no-store\n (currentFetchCacheConfig === 'no-store' &&\n (currentFetchRevalidate > 0 || currentFetchRevalidate === false))\n\n if (isConflictingRevalidate) {\n cacheWarning = `Specified \"cache: ${currentFetchCacheConfig}\" and \"revalidate: ${currentFetchRevalidate}\", only one should be specified.`\n currentFetchCacheConfig = undefined\n currentFetchRevalidate = undefined\n }\n }\n\n const hasExplicitFetchCacheOptOut =\n // fetch config itself signals not to cache\n currentFetchCacheConfig === 'no-cache' ||\n currentFetchCacheConfig === 'no-store' ||\n // the fetch isn't explicitly caching and the segment level cache config signals not to cache\n // note: `pageFetchCacheMode` is also set by being in an unstable_cache context.\n pageFetchCacheMode === 'force-no-store' ||\n pageFetchCacheMode === 'only-no-store'\n\n // If no explicit fetch cache mode is set, but dynamic = `force-dynamic` is set,\n // we shouldn't consider caching the fetch. This is because the `dynamic` cache\n // is considered a \"top-level\" cache mode, whereas something like `fetchCache` is more\n // fine-grained. Top-level modes are responsible for setting reasonable defaults for the\n // other configurations.\n const noFetchConfigAndForceDynamic =\n !pageFetchCacheMode &&\n !currentFetchCacheConfig &&\n !currentFetchRevalidate &&\n workStore.forceDynamic\n\n if (\n // force-cache was specified without a revalidate value. We set the revalidate value to false\n // which will signal the cache to not revalidate\n currentFetchCacheConfig === 'force-cache' &&\n typeof currentFetchRevalidate === 'undefined'\n ) {\n currentFetchRevalidate = false\n } else if (\n hasExplicitFetchCacheOptOut ||\n noFetchConfigAndForceDynamic\n ) {\n currentFetchRevalidate = 0\n }\n\n if (\n currentFetchCacheConfig === 'no-cache' ||\n currentFetchCacheConfig === 'no-store'\n ) {\n cacheReason = `cache: ${currentFetchCacheConfig}`\n }\n\n finalRevalidate = validateRevalidate(\n currentFetchRevalidate,\n workStore.route\n )\n\n const _headers = getRequestMeta('headers')\n const initHeaders: Headers =\n typeof _headers?.get === 'function'\n ? _headers\n : new Headers(_headers || {})\n\n const hasUnCacheableHeader =\n initHeaders.get('authorization') || initHeaders.get('cookie')\n\n const isUnCacheableMethod = !['get', 'head'].includes(\n getRequestMeta('method')?.toLowerCase() || 'get'\n )\n\n /**\n * We automatically disable fetch caching under the following conditions:\n * - Fetch cache configs are not set. Specifically:\n * - A page fetch cache mode is not set (export const fetchCache=...)\n * - A fetch cache mode is not set in the fetch call (fetch(url, { cache: ... }))\n * or the fetch cache mode is set to 'default'\n * - A fetch revalidate value is not set in the fetch call (fetch(url, { revalidate: ... }))\n * - OR the fetch comes after a configuration that triggered dynamic rendering (e.g., reading cookies())\n * and the fetch was considered uncacheable (e.g., POST method or has authorization headers)\n */\n const hasNoExplicitCacheConfig =\n // eslint-disable-next-line eqeqeq\n pageFetchCacheMode == undefined &&\n // eslint-disable-next-line eqeqeq\n (currentFetchCacheConfig == undefined ||\n // when considering whether to opt into the default \"no-cache\" fetch semantics,\n // a \"default\" cache config should be treated the same as no cache config\n currentFetchCacheConfig === 'default') &&\n // eslint-disable-next-line eqeqeq\n currentFetchRevalidate == undefined\n\n let autoNoCache = Boolean(\n (hasUnCacheableHeader || isUnCacheableMethod) &&\n revalidateStore?.revalidate === 0\n )\n\n let isImplicitBuildTimeCache = false\n\n if (!autoNoCache && hasNoExplicitCacheConfig) {\n // We don't enable automatic no-cache behavior during build-time\n // prerendering so that we can still leverage the fetch cache between\n // export workers.\n if (workStore.isBuildTimePrerendering) {\n isImplicitBuildTimeCache = true\n } else {\n autoNoCache = true\n }\n }\n\n // If we have no cache config, and we're in Dynamic I/O prerendering,\n // it'll be a dynamic call. We don't have to issue that dynamic call.\n if (hasNoExplicitCacheConfig && workUnitStore !== undefined) {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-runtime':\n // While we don't want to do caching in the client scope we know the\n // fetch will be dynamic for cacheComponents so we may as well avoid the\n // call here. (fallthrough)\n case 'prerender-client':\n if (cacheSignal) {\n cacheSignal.endRead()\n cacheSignal = null\n }\n\n return makeHangingPromise(\n workUnitStore.renderSignal,\n workStore.route,\n 'fetch()'\n )\n case 'request':\n if (\n process.env.NODE_ENV === 'development' &&\n workUnitStore.stagedRendering\n ) {\n if (cacheSignal) {\n cacheSignal.endRead()\n cacheSignal = null\n }\n await workUnitStore.stagedRendering.waitForStage(\n RenderStage.Dynamic\n )\n }\n break\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n switch (pageFetchCacheMode) {\n case 'force-no-store': {\n cacheReason = 'fetchCache = force-no-store'\n break\n }\n case 'only-no-store': {\n if (\n currentFetchCacheConfig === 'force-cache' ||\n (typeof finalRevalidate !== 'undefined' && finalRevalidate > 0)\n ) {\n throw new Error(\n `cache: 'force-cache' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-no-store'`\n )\n }\n cacheReason = 'fetchCache = only-no-store'\n break\n }\n case 'only-cache': {\n if (currentFetchCacheConfig === 'no-store') {\n throw new Error(\n `cache: 'no-store' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-cache'`\n )\n }\n break\n }\n case 'force-cache': {\n if (\n typeof currentFetchRevalidate === 'undefined' ||\n currentFetchRevalidate === 0\n ) {\n cacheReason = 'fetchCache = force-cache'\n finalRevalidate = INFINITE_CACHE\n }\n break\n }\n case 'default-cache':\n case 'default-no-store':\n case 'auto':\n case undefined:\n // sometimes we won't match the above cases. the reason we don't move\n // everything to this switch is the use of autoNoCache which is not a fetchCacheMode\n // I suspect this could be unified with fetchCacheMode however in which case we could\n // simplify the switch case and ensure we have an exhaustive switch handling all modes\n break\n default:\n pageFetchCacheMode satisfies never\n }\n\n if (typeof finalRevalidate === 'undefined') {\n if (pageFetchCacheMode === 'default-cache' && !isUsingNoStore) {\n finalRevalidate = INFINITE_CACHE\n cacheReason = 'fetchCache = default-cache'\n } else if (pageFetchCacheMode === 'default-no-store') {\n finalRevalidate = 0\n cacheReason = 'fetchCache = default-no-store'\n } else if (isUsingNoStore) {\n finalRevalidate = 0\n cacheReason = 'noStore call'\n } else if (autoNoCache) {\n finalRevalidate = 0\n cacheReason = 'auto no cache'\n } else {\n // TODO: should we consider this case an invariant?\n cacheReason = 'auto cache'\n finalRevalidate = revalidateStore\n ? revalidateStore.revalidate\n : INFINITE_CACHE\n }\n } else if (!cacheReason) {\n cacheReason = `revalidate: ${finalRevalidate}`\n }\n\n if (\n // when force static is configured we don't bail from\n // `revalidate: 0` values\n !(workStore.forceStatic && finalRevalidate === 0) &&\n // we don't consider autoNoCache to switch to dynamic for ISR\n !autoNoCache &&\n // If the revalidate value isn't currently set or the value is less\n // than the current revalidate value, we should update the revalidate\n // value.\n revalidateStore &&\n finalRevalidate < revalidateStore.revalidate\n ) {\n // If we were setting the revalidate value to 0, we should try to\n // postpone instead first.\n if (finalRevalidate === 0) {\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n if (cacheSignal) {\n cacheSignal.endRead()\n cacheSignal = null\n }\n return makeHangingPromise(\n workUnitStore.renderSignal,\n workStore.route,\n 'fetch()'\n )\n case 'request':\n if (\n process.env.NODE_ENV === 'development' &&\n workUnitStore.stagedRendering\n ) {\n if (cacheSignal) {\n cacheSignal.endRead()\n cacheSignal = null\n }\n await workUnitStore.stagedRendering.waitForStage(\n RenderStage.Dynamic\n )\n }\n break\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n markCurrentScopeAsDynamic(\n workStore,\n workUnitStore,\n `revalidate: 0 fetch ${input} ${workStore.route}`\n )\n }\n\n // We only want to set the revalidate store's revalidate time if it\n // was explicitly set for the fetch call, i.e.\n // originalFetchRevalidate.\n if (revalidateStore && originalFetchRevalidate === finalRevalidate) {\n revalidateStore.revalidate = finalRevalidate\n }\n }\n\n const isCacheableRevalidate =\n typeof finalRevalidate === 'number' && finalRevalidate > 0\n\n let cacheKey: string | undefined\n const { incrementalCache } = workStore\n let isHmrRefresh = false\n let serverComponentsHmrCache: ServerComponentsHmrCache | undefined\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'request':\n case 'cache':\n case 'private-cache':\n isHmrRefresh = workUnitStore.isHmrRefresh ?? false\n serverComponentsHmrCache = workUnitStore.serverComponentsHmrCache\n break\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n if (\n incrementalCache &&\n (isCacheableRevalidate || serverComponentsHmrCache)\n ) {\n try {\n cacheKey = await incrementalCache.generateCacheKey(\n fetchUrl,\n isRequestInput ? (input as RequestInit) : init\n )\n } catch (err) {\n console.error(`Failed to generate cache key for`, input)\n }\n }\n\n const fetchIdx = workStore.nextFetchId ?? 1\n workStore.nextFetchId = fetchIdx + 1\n\n let handleUnlock: () => Promise | void = () => {}\n\n const doOriginalFetch = async (\n isStale?: boolean,\n cacheReasonOverride?: string\n ) => {\n const requestInputFields = [\n 'cache',\n 'credentials',\n 'headers',\n 'integrity',\n 'keepalive',\n 'method',\n 'mode',\n 'redirect',\n 'referrer',\n 'referrerPolicy',\n 'window',\n 'duplex',\n\n // don't pass through signal when revalidating\n ...(isStale ? [] : ['signal']),\n ]\n\n if (isRequestInput) {\n const reqInput: Request = input as any\n const reqOptions: RequestInit = {\n body: (reqInput as any)._ogBody || reqInput.body,\n }\n\n for (const field of requestInputFields) {\n // @ts-expect-error custom fields\n reqOptions[field] = reqInput[field]\n }\n input = new Request(reqInput.url, reqOptions)\n } else if (init) {\n const { _ogBody, body, signal, ...otherInput } =\n init as RequestInit & { _ogBody?: any }\n init = {\n ...otherInput,\n body: _ogBody || body,\n signal: isStale ? undefined : signal,\n }\n }\n\n // add metadata to init without editing the original\n const clonedInit = {\n ...init,\n next: { ...init?.next, fetchType: 'origin', fetchIdx },\n }\n\n return originFetch(input, clonedInit)\n .then(async (res) => {\n if (!isStale && fetchStart) {\n trackFetchMetric(workStore, {\n start: fetchStart,\n url: fetchUrl,\n cacheReason: cacheReasonOverride || cacheReason,\n cacheStatus:\n finalRevalidate === 0 || cacheReasonOverride\n ? 'skip'\n : 'miss',\n cacheWarning,\n status: res.status,\n method: clonedInit.method || 'GET',\n })\n }\n if (\n res.status === 200 &&\n incrementalCache &&\n cacheKey &&\n (isCacheableRevalidate || serverComponentsHmrCache)\n ) {\n const normalizedRevalidate =\n finalRevalidate >= INFINITE_CACHE\n ? CACHE_ONE_YEAR\n : finalRevalidate\n\n const incrementalCacheConfig:\n | SetIncrementalFetchCacheContext\n | undefined = isCacheableRevalidate\n ? {\n fetchCache: true,\n fetchUrl,\n fetchIdx,\n tags,\n isImplicitBuildTimeCache,\n }\n : undefined\n\n switch (workUnitStore?.type) {\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n return createCachedPrerenderResponse(\n res,\n cacheKey,\n incrementalCacheConfig,\n incrementalCache,\n normalizedRevalidate,\n handleUnlock\n )\n case 'request':\n if (\n process.env.NODE_ENV === 'development' &&\n workUnitStore.stagedRendering &&\n workUnitStore.cacheSignal\n ) {\n // We're filling caches for a staged render,\n // so we need to wait for the response to finish instead of streaming.\n return createCachedPrerenderResponse(\n res,\n cacheKey,\n incrementalCacheConfig,\n incrementalCache,\n normalizedRevalidate,\n handleUnlock\n )\n }\n // fallthrough\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case undefined:\n return createCachedDynamicResponse(\n workStore,\n res,\n cacheKey,\n incrementalCacheConfig,\n incrementalCache,\n serverComponentsHmrCache,\n normalizedRevalidate,\n input,\n handleUnlock\n )\n default:\n workUnitStore satisfies never\n }\n }\n\n // we had response that we determined shouldn't be cached so we return it\n // and don't cache it. This also needs to unlock the cache lock we acquired.\n await handleUnlock()\n\n return res\n })\n .catch((error) => {\n handleUnlock()\n throw error\n })\n }\n\n let cacheReasonOverride\n let isForegroundRevalidate = false\n let isHmrRefreshCache = false\n\n if (cacheKey && incrementalCache) {\n let cachedFetchData: CachedFetchData | undefined\n\n if (isHmrRefresh && serverComponentsHmrCache) {\n cachedFetchData = serverComponentsHmrCache.get(cacheKey)\n isHmrRefreshCache = true\n }\n\n if (isCacheableRevalidate && !cachedFetchData) {\n handleUnlock = await incrementalCache.lock(cacheKey)\n const entry = workStore.isOnDemandRevalidate\n ? null\n : await incrementalCache.get(cacheKey, {\n kind: IncrementalCacheKind.FETCH,\n revalidate: finalRevalidate,\n fetchUrl,\n fetchIdx,\n tags,\n softTags: implicitTags?.tags,\n })\n\n if (hasNoExplicitCacheConfig && workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n // We sometimes use the cache to dedupe fetches that do not\n // specify a cache configuration. In these cases we want to\n // make sure we still exclude them from prerenders if\n // cacheComponents is on so we introduce an artificial task boundary\n // here.\n await getTimeoutBoundary()\n break\n case 'request':\n if (\n process.env.NODE_ENV === 'development' &&\n workUnitStore.stagedRendering\n ) {\n await workUnitStore.stagedRendering.waitForStage(\n RenderStage.Dynamic\n )\n }\n break\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n if (entry) {\n await handleUnlock()\n } else {\n // in dev, incremental cache response will be null in case the browser adds `cache-control: no-cache` in the request headers\n // TODO: it seems like we also hit this after revalidates in dev?\n cacheReasonOverride = 'cache-control: no-cache (hard refresh)'\n }\n\n if (entry?.value && entry.value.kind === CachedRouteKind.FETCH) {\n // when stale and is revalidating we wait for fresh data\n // so the revalidated entry has the updated data\n if (workStore.isStaticGeneration && entry.isStale) {\n isForegroundRevalidate = true\n } else {\n if (entry.isStale) {\n workStore.pendingRevalidates ??= {}\n if (!workStore.pendingRevalidates[cacheKey]) {\n const pendingRevalidate = doOriginalFetch(true)\n .then(async (response) => ({\n body: await response.arrayBuffer(),\n headers: response.headers,\n status: response.status,\n statusText: response.statusText,\n }))\n .finally(() => {\n workStore.pendingRevalidates ??= {}\n delete workStore.pendingRevalidates[cacheKey || '']\n })\n\n // Attach the empty catch here so we don't get a \"unhandled\n // promise rejection\" warning.\n pendingRevalidate.catch(console.error)\n\n workStore.pendingRevalidates[cacheKey] = pendingRevalidate\n }\n }\n\n cachedFetchData = entry.value.data\n }\n }\n }\n\n if (cachedFetchData) {\n if (fetchStart) {\n trackFetchMetric(workStore, {\n start: fetchStart,\n url: fetchUrl,\n cacheReason,\n cacheStatus: isHmrRefreshCache ? 'hmr' : 'hit',\n cacheWarning,\n status: cachedFetchData.status || 200,\n method: init?.method || 'GET',\n })\n }\n\n const response = new Response(\n Buffer.from(cachedFetchData.body, 'base64'),\n {\n headers: cachedFetchData.headers,\n status: cachedFetchData.status,\n }\n )\n\n Object.defineProperty(response, 'url', {\n value: cachedFetchData.url,\n })\n\n return response\n }\n }\n\n if (\n (workStore.isStaticGeneration ||\n (process.env.NODE_ENV === 'development' &&\n process.env.__NEXT_CACHE_COMPONENTS &&\n workUnitStore &&\n // eslint-disable-next-line no-restricted-syntax\n workUnitStore.type === 'request' &&\n workUnitStore.stagedRendering)) &&\n init &&\n typeof init === 'object'\n ) {\n const { cache } = init\n\n // Delete `cache` property as Cloudflare Workers will throw an error\n if (isEdgeRuntime) delete init.cache\n\n if (cache === 'no-store') {\n // If enabled, we should bail out of static generation.\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n if (cacheSignal) {\n cacheSignal.endRead()\n cacheSignal = null\n }\n return makeHangingPromise(\n workUnitStore.renderSignal,\n workStore.route,\n 'fetch()'\n )\n case 'request':\n if (\n process.env.NODE_ENV === 'development' &&\n workUnitStore.stagedRendering\n ) {\n if (cacheSignal) {\n cacheSignal.endRead()\n cacheSignal = null\n }\n await workUnitStore.stagedRendering.waitForStage(\n RenderStage.Dynamic\n )\n }\n break\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n markCurrentScopeAsDynamic(\n workStore,\n workUnitStore,\n `no-store fetch ${input} ${workStore.route}`\n )\n }\n\n const hasNextConfig = 'next' in init\n const { next = {} } = init\n if (\n typeof next.revalidate === 'number' &&\n revalidateStore &&\n next.revalidate < revalidateStore.revalidate\n ) {\n if (next.revalidate === 0) {\n // If enabled, we should bail out of static generation.\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n return makeHangingPromise(\n workUnitStore.renderSignal,\n workStore.route,\n 'fetch()'\n )\n case 'request':\n if (\n process.env.NODE_ENV === 'development' &&\n workUnitStore.stagedRendering\n ) {\n await workUnitStore.stagedRendering.waitForStage(\n RenderStage.Dynamic\n )\n }\n break\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'prerender-legacy':\n case 'prerender-ppr':\n break\n default:\n workUnitStore satisfies never\n }\n }\n markCurrentScopeAsDynamic(\n workStore,\n workUnitStore,\n `revalidate: 0 fetch ${input} ${workStore.route}`\n )\n }\n\n if (!workStore.forceStatic || next.revalidate !== 0) {\n revalidateStore.revalidate = next.revalidate\n }\n }\n if (hasNextConfig) delete init.next\n }\n\n // if we are revalidating the whole page via time or on-demand and\n // the fetch cache entry is stale we should still de-dupe the\n // origin hit if it's a cache-able entry\n if (cacheKey && isForegroundRevalidate) {\n const pendingRevalidateKey = cacheKey\n workStore.pendingRevalidates ??= {}\n let pendingRevalidate =\n workStore.pendingRevalidates[pendingRevalidateKey]\n\n if (pendingRevalidate) {\n const revalidatedResult: {\n body: ArrayBuffer\n headers: Headers\n status: number\n statusText: string\n } = await pendingRevalidate\n return new Response(revalidatedResult.body, {\n headers: revalidatedResult.headers,\n status: revalidatedResult.status,\n statusText: revalidatedResult.statusText,\n })\n }\n\n // We used to just resolve the Response and clone it however for\n // static generation with cacheComponents we need the response to be able to\n // be resolved in a microtask and cloning the response will never have\n // a body that can resolve in a microtask in node (as observed through\n // experimentation) So instead we await the body and then when it is\n // available we construct manually cloned Response objects with the\n // body as an ArrayBuffer. This will be resolvable in a microtask\n // making it compatible with cacheComponents.\n const pendingResponse = doOriginalFetch(true, cacheReasonOverride)\n // We're cloning the response using this utility because there\n // exists a bug in the undici library around response cloning.\n // See the following pull request for more details:\n // https://github.com/vercel/next.js/pull/73274\n .then(cloneResponse)\n\n pendingRevalidate = pendingResponse\n .then(async (responses) => {\n const response = responses[0]\n return {\n body: await response.arrayBuffer(),\n headers: response.headers,\n status: response.status,\n statusText: response.statusText,\n }\n })\n .finally(() => {\n // If the pending revalidate is not present in the store, then\n // we have nothing to delete.\n if (!workStore.pendingRevalidates?.[pendingRevalidateKey]) {\n return\n }\n\n delete workStore.pendingRevalidates[pendingRevalidateKey]\n })\n\n // Attach the empty catch here so we don't get a \"unhandled promise\n // rejection\" warning\n pendingRevalidate.catch(() => {})\n\n workStore.pendingRevalidates[pendingRevalidateKey] = pendingRevalidate\n\n return pendingResponse.then((responses) => responses[1])\n } else {\n return doOriginalFetch(false, cacheReasonOverride)\n }\n }\n )\n\n if (cacheSignal) {\n try {\n return await result\n } finally {\n if (cacheSignal) {\n cacheSignal.endRead()\n }\n }\n }\n return result\n }\n\n // Attach the necessary properties to the patched fetch function.\n // We don't use this to determine if the fetch function has been patched,\n // but for external consumers to determine if the fetch function has been\n // patched.\n patched.__nextPatched = true as const\n patched.__nextGetStaticStore = () => workAsyncStorage\n patched._nextOriginalFetch = originFetch\n ;(globalThis as Record)[NEXT_PATCH_SYMBOL] = true\n\n // Assign the function name also as a name property, so that it's preserved\n // even when mangling is enabled.\n Object.defineProperty(patched, 'name', { value: 'fetch', writable: false })\n\n return patched\n}\n\n// we patch fetch to collect cache information used for\n// determining if a page is static or not\nexport function patchFetch(options: PatchableModule) {\n // If we've already patched fetch, we should not patch it again.\n if (isFetchPatched()) return\n\n // Grab the original fetch function. We'll attach this so we can use it in\n // the patched fetch function.\n const original = createDedupeFetch(globalThis.fetch)\n\n // Set the global fetch to the patched fetch.\n globalThis.fetch = createPatchedFetcher(original, options)\n}\n\nlet currentTimeoutBoundary: null | Promise = null\nfunction getTimeoutBoundary() {\n if (!currentTimeoutBoundary) {\n currentTimeoutBoundary = new Promise((r) => {\n setTimeout(() => {\n currentTimeoutBoundary = null\n r()\n }, 0)\n })\n }\n return currentTimeoutBoundary\n}\n"],"names":["AppRenderSpan","NextNodeServerSpan","getTracer","SpanKind","CACHE_ONE_YEAR","INFINITE_CACHE","NEXT_CACHE_TAG_MAX_ITEMS","NEXT_CACHE_TAG_MAX_LENGTH","markCurrentScopeAsDynamic","makeHangingPromise","createDedupeFetch","getCacheSignal","CachedRouteKind","IncrementalCacheKind","cloneResponse","RenderStage","isEdgeRuntime","process","env","NEXT_RUNTIME","NEXT_PATCH_SYMBOL","Symbol","for","isFetchPatched","globalThis","validateRevalidate","revalidateVal","route","normalizedRevalidate","undefined","isNaN","Error","err","message","includes","validateTags","tags","description","validTags","invalidTags","i","length","tag","push","reason","console","warn","slice","join","log","trackFetchMetric","workStore","ctx","shouldTrackFetchMetrics","fetchMetrics","end","performance","timeOrigin","now","idx","nextFetchId","createCachedPrerenderResponse","res","cacheKey","incrementalCacheContext","incrementalCache","revalidate","handleUnlock","bodyBuffer","arrayBuffer","fetchedData","headers","Object","fromEntries","entries","body","Buffer","from","toString","status","url","set","kind","FETCH","data","Response","statusText","createCachedDynamicResponse","serverComponentsHmrCache","input","cloned1","cloned2","cacheSetPromise","then","catch","error","finally","pendingRevalidateKey","pendingRevalidates","pendingRevalidatePromise","Promise","resolve","createPatchedFetcher","originFetch","workAsyncStorage","workUnitAsyncStorage","patched","fetch","init","URL","Request","username","password","fetchUrl","href","method","toUpperCase","isInternal","next","internal","hideSpan","NEXT_OTEL_FETCH_DISABLED","fetchStart","getStore","workUnitStore","cacheSignal","beginRead","result","trace","internalFetch","CLIENT","spanName","filter","Boolean","attributes","hostname","port","getRequestMeta","isDraftMode","isRequestInput","field","value","finalRevalidate","getNextField","originalFetchRevalidate","currentFetchRevalidate","revalidateStore","type","Array","isArray","collectedTags","implicitTags","pageFetchCacheMode","fetchCache","isUsingNoStore","isUnstableNoStore","currentFetchCacheConfig","cacheReason","cacheWarning","isConflictingRevalidate","hasExplicitFetchCacheOptOut","noFetchConfigAndForceDynamic","forceDynamic","_headers","initHeaders","get","Headers","hasUnCacheableHeader","isUnCacheableMethod","toLowerCase","hasNoExplicitCacheConfig","autoNoCache","isImplicitBuildTimeCache","isBuildTimePrerendering","endRead","renderSignal","NODE_ENV","stagedRendering","waitForStage","Dynamic","forceStatic","isCacheableRevalidate","isHmrRefresh","generateCacheKey","fetchIdx","doOriginalFetch","isStale","cacheReasonOverride","requestInputFields","reqInput","reqOptions","_ogBody","signal","otherInput","clonedInit","fetchType","start","cacheStatus","incrementalCacheConfig","isForegroundRevalidate","isHmrRefreshCache","cachedFetchData","lock","entry","isOnDemandRevalidate","softTags","getTimeoutBoundary","isStaticGeneration","pendingRevalidate","response","defineProperty","__NEXT_CACHE_COMPONENTS","cache","hasNextConfig","revalidatedResult","pendingResponse","responses","__nextPatched","__nextGetStaticStore","_nextOriginalFetch","writable","patchFetch","options","original","currentTimeoutBoundary","r","setTimeout"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 8354, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/page-path/ensure-leading-slash.ts"],"sourcesContent":["/**\n * For a given page path, this function ensures that there is a leading slash.\n * If there is not a leading slash, one is added, otherwise it is noop.\n */\nexport function ensureLeadingSlash(path: string) {\n return path.startsWith('/') ? path : `/${path}`\n}\n"],"names":["ensureLeadingSlash","path","startsWith"],"mappings":"AAAA;;;CAGC,GACD;;;;AAAO,SAASA,mBAAmBC,IAAY;IAC7C,OAAOA,KAAKC,UAAU,CAAC,OAAOD,OAAO,CAAC,CAAC,EAAEA,MAAM;AACjD","ignoreList":[0]}}, + {"offset": {"line": 8368, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/segment.ts"],"sourcesContent":["import type { FlightRouterState, Segment } from './app-router-types'\n\nexport function getSegmentValue(segment: Segment) {\n return Array.isArray(segment) ? segment[1] : segment\n}\n\nexport function isGroupSegment(segment: string) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')')\n}\n\nexport function isParallelRouteSegment(segment: string) {\n return segment.startsWith('@') && segment !== '@children'\n}\n\nexport function addSearchParamsIfPageSegment(\n segment: Segment,\n searchParams: Record\n) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY)\n\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams)\n return stringifiedQuery !== '{}'\n ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery\n : PAGE_SEGMENT_KEY\n }\n\n return segment\n}\n\nexport function computeSelectedLayoutSegment(\n segments: string[] | null,\n parallelRouteKey: string\n): string | null {\n if (!segments || segments.length === 0) {\n return null\n }\n\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment =\n parallelRouteKey === 'children'\n ? segments[0]\n : segments[segments.length - 1]\n\n // If the default slot is showing, return null since it's not technically \"selected\" (it's a fallback)\n // Returning an internal value like `__DEFAULT__` would be confusing\n return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment\n}\n\n/** Get the canonical parameters from the current level to the leaf node. */\nexport function getSelectedLayoutSegmentPath(\n tree: FlightRouterState,\n parallelRouteKey: string,\n first = true,\n segmentPath: string[] = []\n): string[] {\n let node: FlightRouterState\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey]\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1]\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0]\n }\n\n if (!node) return segmentPath\n const segment = node[0]\n\n let segmentValue = getSegmentValue(segment)\n\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) {\n return segmentPath\n }\n\n segmentPath.push(segmentValue)\n\n return getSelectedLayoutSegmentPath(\n node,\n parallelRouteKey,\n false,\n segmentPath\n )\n}\n\nexport const PAGE_SEGMENT_KEY = '__PAGE__'\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__'\nexport const NOT_FOUND_SEGMENT_KEY = '/_not-found'\n"],"names":["getSegmentValue","segment","Array","isArray","isGroupSegment","endsWith","isParallelRouteSegment","startsWith","addSearchParamsIfPageSegment","searchParams","isPageSegment","includes","PAGE_SEGMENT_KEY","stringifiedQuery","JSON","stringify","computeSelectedLayoutSegment","segments","parallelRouteKey","length","rawSegment","DEFAULT_SEGMENT_KEY","getSelectedLayoutSegmentPath","tree","first","segmentPath","node","parallelRoutes","children","Object","values","segmentValue","push","NOT_FOUND_SEGMENT_KEY"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEO,SAASA,gBAAgBC,OAAgB;IAC9C,OAAOC,MAAMC,OAAO,CAACF,WAAWA,OAAO,CAAC,EAAE,GAAGA;AAC/C;AAEO,SAASG,eAAeH,OAAe;IAC5C,sCAAsC;IACtC,OAAOA,OAAO,CAAC,EAAE,KAAK,OAAOA,QAAQI,QAAQ,CAAC;AAChD;AAEO,SAASC,uBAAuBL,OAAe;IACpD,OAAOA,QAAQM,UAAU,CAAC,QAAQN,YAAY;AAChD;AAEO,SAASO,6BACdP,OAAgB,EAChBQ,YAA2D;IAE3D,MAAMC,gBAAgBT,QAAQU,QAAQ,CAACC;IAEvC,IAAIF,eAAe;QACjB,MAAMG,mBAAmBC,KAAKC,SAAS,CAACN;QACxC,OAAOI,qBAAqB,OACxBD,mBAAmB,MAAMC,mBACzBD;IACN;IAEA,OAAOX;AACT;AAEO,SAASe,6BACdC,QAAyB,EACzBC,gBAAwB;IAExB,IAAI,CAACD,YAAYA,SAASE,MAAM,KAAK,GAAG;QACtC,OAAO;IACT;IAEA,iFAAiF;IACjF,MAAMC,aACJF,qBAAqB,aACjBD,QAAQ,CAAC,EAAE,GACXA,QAAQ,CAACA,SAASE,MAAM,GAAG,EAAE;IAEnC,sGAAsG;IACtG,oEAAoE;IACpE,OAAOC,eAAeC,sBAAsB,OAAOD;AACrD;AAGO,SAASE,6BACdC,IAAuB,EACvBL,gBAAwB,EACxBM,QAAQ,IAAI,EACZC,cAAwB,EAAE;IAE1B,IAAIC;IACJ,IAAIF,OAAO;QACT,kEAAkE;QAClEE,OAAOH,IAAI,CAAC,EAAE,CAACL,iBAAiB;IAClC,OAAO;QACL,oGAAoG;QACpG,MAAMS,iBAAiBJ,IAAI,CAAC,EAAE;QAC9BG,OAAOC,eAAeC,QAAQ,IAAIC,OAAOC,MAAM,CAACH,eAAe,CAAC,EAAE;IACpE;IAEA,IAAI,CAACD,MAAM,OAAOD;IAClB,MAAMxB,UAAUyB,IAAI,CAAC,EAAE;IAEvB,IAAIK,eAAe/B,gBAAgBC;IAEnC,IAAI,CAAC8B,gBAAgBA,aAAaxB,UAAU,CAACK,mBAAmB;QAC9D,OAAOa;IACT;IAEAA,YAAYO,IAAI,CAACD;IAEjB,OAAOT,6BACLI,MACAR,kBACA,OACAO;AAEJ;AAEO,MAAMb,mBAAmB,WAAU;AACnC,MAAMS,sBAAsB,cAAa;AACzC,MAAMY,wBAAwB,cAAa","ignoreList":[0]}}, + {"offset": {"line": 8442, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/app-paths.ts"],"sourcesContent":["import { ensureLeadingSlash } from '../../page-path/ensure-leading-slash'\nimport { isGroupSegment } from '../../segment'\n\n/**\n * Normalizes an app route so it represents the actual request path. Essentially\n * performing the following transformations:\n *\n * - `/(dashboard)/user/[id]/page` to `/user/[id]`\n * - `/(dashboard)/account/page` to `/account`\n * - `/user/[id]/page` to `/user/[id]`\n * - `/account/page` to `/account`\n * - `/page` to `/`\n * - `/(dashboard)/user/[id]/route` to `/user/[id]`\n * - `/(dashboard)/account/route` to `/account`\n * - `/user/[id]/route` to `/user/[id]`\n * - `/account/route` to `/account`\n * - `/route` to `/`\n * - `/` to `/`\n *\n * @param route the app route to normalize\n * @returns the normalized pathname\n */\nexport function normalizeAppPath(route: string) {\n return ensureLeadingSlash(\n route.split('/').reduce((pathname, segment, index, segments) => {\n // Empty segments are ignored.\n if (!segment) {\n return pathname\n }\n\n // Groups are ignored.\n if (isGroupSegment(segment)) {\n return pathname\n }\n\n // Parallel segments are ignored.\n if (segment[0] === '@') {\n return pathname\n }\n\n // The last segment (if it's a leaf) should be ignored.\n if (\n (segment === 'page' || segment === 'route') &&\n index === segments.length - 1\n ) {\n return pathname\n }\n\n return `${pathname}/${segment}`\n }, '')\n )\n}\n\n/**\n * Strips the `.rsc` extension if it's in the pathname.\n * Since this function is used on full urls it checks `?` for searchParams handling.\n */\nexport function normalizeRscURL(url: string) {\n return url.replace(\n /\\.rsc($|\\?)/,\n // $1 ensures `?` is preserved\n '$1'\n )\n}\n"],"names":["ensureLeadingSlash","isGroupSegment","normalizeAppPath","route","split","reduce","pathname","segment","index","segments","length","normalizeRscURL","url","replace"],"mappings":";;;;;;AAAA,SAASA,kBAAkB,QAAQ,uCAAsC;AACzE,SAASC,cAAc,QAAQ,gBAAe;;;AAqBvC,SAASC,iBAAiBC,KAAa;IAC5C,WAAOH,sQAAAA,EACLG,MAAMC,KAAK,CAAC,KAAKC,MAAM,CAAC,CAACC,UAAUC,SAASC,OAAOC;QACjD,8BAA8B;QAC9B,IAAI,CAACF,SAAS;YACZ,OAAOD;QACT;QAEA,sBAAsB;QACtB,QAAIL,+NAAAA,EAAeM,UAAU;YAC3B,OAAOD;QACT;QAEA,iCAAiC;QACjC,IAAIC,OAAO,CAAC,EAAE,KAAK,KAAK;YACtB,OAAOD;QACT;QAEA,uDAAuD;QACvD,IACGC,CAAAA,YAAY,UAAUA,YAAY,OAAM,KACzCC,UAAUC,SAASC,MAAM,GAAG,GAC5B;YACA,OAAOJ;QACT;QAEA,OAAO,GAAGA,SAAS,CAAC,EAAEC,SAAS;IACjC,GAAG;AAEP;AAMO,SAASI,gBAAgBC,GAAW;IACzC,OAAOA,IAAIC,OAAO,CAChB,eACA,AACA,8BAD8B;AAGlC","ignoreList":[0]}}, + {"offset": {"line": 8480, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/app-render/manifests-singleton.ts"],"sourcesContent":["import type { ActionManifest } from '../../build/webpack/plugins/flight-client-entry-plugin'\nimport type { ClientReferenceManifest } from '../../build/webpack/plugins/flight-manifest-plugin'\nimport type { DeepReadonly } from '../../shared/lib/deep-readonly'\nimport { InvariantError } from '../../shared/lib/invariant-error'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { pathHasPrefix } from '../../shared/lib/router/utils/path-has-prefix'\nimport { removePathPrefix } from '../../shared/lib/router/utils/remove-path-prefix'\nimport { workAsyncStorage } from './work-async-storage.external'\n\nexport interface ServerModuleMap {\n readonly [name: string]: {\n readonly id: string | number\n readonly name: string\n readonly chunks: Readonly> // currently not used\n readonly async?: boolean\n }\n}\n\n// This is a global singleton that is, among other things, also used to\n// encode/decode bound args of server function closures. This can't be using a\n// AsyncLocalStorage as it might happen at the module level.\nconst MANIFESTS_SINGLETON = Symbol.for('next.server.manifests')\n\ninterface ManifestsSingleton {\n readonly clientReferenceManifestsPerRoute: Map<\n string,\n DeepReadonly\n >\n readonly proxiedClientReferenceManifest: DeepReadonly\n serverActionsManifest: DeepReadonly\n serverModuleMap: ServerModuleMap\n}\n\ntype GlobalThisWithManifests = typeof globalThis & {\n [MANIFESTS_SINGLETON]?: ManifestsSingleton\n}\n\ntype ClientReferenceManifestMappingProp =\n | 'clientModules'\n | 'rscModuleMapping'\n | 'edgeRscModuleMapping'\n | 'ssrModuleMapping'\n | 'edgeSSRModuleMapping'\n\nconst globalThisWithManifests = globalThis as GlobalThisWithManifests\n\nfunction createProxiedClientReferenceManifest(\n clientReferenceManifestsPerRoute: Map<\n string,\n DeepReadonly\n >\n): DeepReadonly {\n const createMappingProxy = (prop: ClientReferenceManifestMappingProp) => {\n return new Proxy(\n {},\n {\n get(_, id: string) {\n const workStore = workAsyncStorage.getStore()\n\n if (workStore) {\n const currentManifest = clientReferenceManifestsPerRoute.get(\n workStore.route\n )\n\n if (currentManifest?.[prop][id]) {\n return currentManifest[prop][id]\n }\n\n // In development, we also check all other manifests to see if the\n // module exists there. This is to support a scenario where React's\n // I/O tracking (dev-only) creates a connection from one page to\n // another through an emitted async I/O node that references client\n // components from the other page, e.g. in owner props.\n // TODO: Maybe we need to add a `debugBundlerConfig` option to React\n // to avoid this workaround. The current workaround has the\n // disadvantage that one might accidentally or intentionally share\n // client references across pages (e.g. by storing them in a global\n // variable), which would then only be caught in production.\n if (process.env.NODE_ENV !== 'production') {\n for (const [\n route,\n manifest,\n ] of clientReferenceManifestsPerRoute) {\n if (route === workStore.route) {\n continue\n }\n\n const entry = manifest[prop][id]\n\n if (entry !== undefined) {\n return entry\n }\n }\n }\n } else {\n // If there's no work store defined, we can assume that a client\n // reference manifest is needed during module evaluation, e.g. to\n // create a server function using a higher-order function. This\n // might also use client components which need to be serialized by\n // Flight, and therefore client references need to be resolvable. In\n // that case we search all page manifests to find the module.\n for (const manifest of clientReferenceManifestsPerRoute.values()) {\n const entry = manifest[prop][id]\n\n if (entry !== undefined) {\n return entry\n }\n }\n }\n\n return undefined\n },\n }\n )\n }\n\n const mappingProxies = new Map<\n ClientReferenceManifestMappingProp,\n ReturnType\n >()\n\n return new Proxy(\n {},\n {\n get(_, prop) {\n const workStore = workAsyncStorage.getStore()\n\n switch (prop) {\n case 'moduleLoading':\n case 'entryCSSFiles':\n case 'entryJSFiles': {\n if (!workStore) {\n throw new InvariantError(\n `Cannot access \"${prop}\" without a work store.`\n )\n }\n\n const currentManifest = clientReferenceManifestsPerRoute.get(\n workStore.route\n )\n\n if (!currentManifest) {\n throw new InvariantError(\n `The client reference manifest for route \"${workStore.route}\" does not exist.`\n )\n }\n\n return currentManifest[prop]\n }\n case 'clientModules':\n case 'rscModuleMapping':\n case 'edgeRscModuleMapping':\n case 'ssrModuleMapping':\n case 'edgeSSRModuleMapping': {\n let proxy = mappingProxies.get(prop)\n\n if (!proxy) {\n proxy = createMappingProxy(prop)\n mappingProxies.set(prop, proxy)\n }\n\n return proxy\n }\n default: {\n throw new InvariantError(\n `This is a proxied client reference manifest. The property \"${String(prop)}\" is not handled.`\n )\n }\n }\n },\n }\n ) as DeepReadonly\n}\n\n/**\n * This function creates a Flight-acceptable server module map proxy from our\n * Server Reference Manifest similar to our client module map. This is because\n * our manifest contains a lot of internal Next.js data that are relevant to the\n * runtime, workers, etc. that React doesn't need to know.\n */\nfunction createServerModuleMap(): ServerModuleMap {\n return new Proxy(\n {},\n {\n get: (_, id: string) => {\n const workers =\n getServerActionsManifest()[\n process.env.NEXT_RUNTIME === 'edge' ? 'edge' : 'node'\n ]?.[id]?.workers\n\n if (!workers) {\n return undefined\n }\n\n const workStore = workAsyncStorage.getStore()\n\n let workerEntry:\n | { moduleId: string | number; async: boolean }\n | undefined\n\n if (workStore) {\n workerEntry = workers[normalizeWorkerPageName(workStore.page)]\n } else {\n // If there's no work store defined, we can assume that a server\n // module map is needed during module evaluation, e.g. to create a\n // server action using a higher-order function. Therefore it should be\n // safe to return any entry from the manifest that matches the action\n // ID. They all refer to the same module ID, which must also exist in\n // the current page bundle. TODO: This is currently not guaranteed in\n // Turbopack, and needs to be fixed.\n workerEntry = Object.values(workers).at(0)\n }\n\n if (!workerEntry) {\n return undefined\n }\n\n const { moduleId, async } = workerEntry\n\n return { id: moduleId, name: id, chunks: [], async }\n },\n }\n )\n}\n\n/**\n * The flight entry loader keys actions by bundlePath. bundlePath corresponds\n * with the relative path (including 'app') to the page entrypoint.\n */\nfunction normalizeWorkerPageName(pageName: string) {\n if (pathHasPrefix(pageName, 'app')) {\n return pageName\n }\n\n return 'app' + pageName\n}\n\n/**\n * Converts a bundlePath (relative path to the entrypoint) to a routable page\n * name.\n */\nfunction denormalizeWorkerPageName(bundlePath: string) {\n return normalizeAppPath(removePathPrefix(bundlePath, 'app'))\n}\n\n/**\n * Checks if the requested action has a worker for the current page.\n * If not, it returns the first worker that has a handler for the action.\n */\nexport function selectWorkerForForwarding(\n actionId: string,\n pageName: string\n): string | undefined {\n const serverActionsManifest = getServerActionsManifest()\n const workers =\n serverActionsManifest[\n process.env.NEXT_RUNTIME === 'edge' ? 'edge' : 'node'\n ][actionId]?.workers\n\n // There are no workers to handle this action, nothing to forward to.\n if (!workers) {\n return\n }\n\n // If there is an entry for the current page, we don't need to forward.\n if (workers[normalizeWorkerPageName(pageName)]) {\n return\n }\n\n // Otherwise, grab the first worker that has a handler for this action id.\n return denormalizeWorkerPageName(Object.keys(workers)[0])\n}\n\nexport function setManifestsSingleton({\n page,\n clientReferenceManifest,\n serverActionsManifest,\n}: {\n page: string\n clientReferenceManifest: DeepReadonly\n serverActionsManifest: DeepReadonly\n}) {\n const existingSingleton = globalThisWithManifests[MANIFESTS_SINGLETON]\n\n if (existingSingleton) {\n existingSingleton.clientReferenceManifestsPerRoute.set(\n normalizeAppPath(page),\n clientReferenceManifest\n )\n\n existingSingleton.serverActionsManifest = serverActionsManifest\n } else {\n const clientReferenceManifestsPerRoute = new Map<\n string,\n DeepReadonly\n >([[normalizeAppPath(page), clientReferenceManifest]])\n\n const proxiedClientReferenceManifest = createProxiedClientReferenceManifest(\n clientReferenceManifestsPerRoute\n )\n\n globalThisWithManifests[MANIFESTS_SINGLETON] = {\n clientReferenceManifestsPerRoute,\n proxiedClientReferenceManifest,\n serverActionsManifest,\n serverModuleMap: createServerModuleMap(),\n }\n }\n}\n\nfunction getManifestsSingleton(): ManifestsSingleton {\n const manifestSingleton = globalThisWithManifests[MANIFESTS_SINGLETON]\n\n if (!manifestSingleton) {\n throw new InvariantError('The manifests singleton was not initialized.')\n }\n\n return manifestSingleton\n}\n\nexport function getClientReferenceManifest(): DeepReadonly {\n return getManifestsSingleton().proxiedClientReferenceManifest\n}\n\nexport function getServerActionsManifest(): DeepReadonly {\n return getManifestsSingleton().serverActionsManifest\n}\n\nexport function getServerModuleMap() {\n return getManifestsSingleton().serverModuleMap\n}\n"],"names":["InvariantError","normalizeAppPath","pathHasPrefix","removePathPrefix","workAsyncStorage","MANIFESTS_SINGLETON","Symbol","for","globalThisWithManifests","globalThis","createProxiedClientReferenceManifest","clientReferenceManifestsPerRoute","createMappingProxy","prop","Proxy","get","_","id","workStore","getStore","currentManifest","route","process","env","NODE_ENV","manifest","entry","undefined","values","mappingProxies","Map","proxy","set","String","createServerModuleMap","getServerActionsManifest","workers","NEXT_RUNTIME","workerEntry","normalizeWorkerPageName","page","Object","at","moduleId","async","name","chunks","pageName","denormalizeWorkerPageName","bundlePath","selectWorkerForForwarding","actionId","serverActionsManifest","keys","setManifestsSingleton","clientReferenceManifest","existingSingleton","proxiedClientReferenceManifest","serverModuleMap","getManifestsSingleton","manifestSingleton","getClientReferenceManifest","getServerModuleMap"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 8722, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/spec-extension/adapters/reflect.ts"],"sourcesContent":["export class ReflectAdapter {\n static get(\n target: T,\n prop: string | symbol,\n receiver: unknown\n ): any {\n const value = Reflect.get(target, prop, receiver)\n if (typeof value === 'function') {\n return value.bind(target)\n }\n\n return value\n }\n\n static set(\n target: T,\n prop: string | symbol,\n value: any,\n receiver: any\n ): boolean {\n return Reflect.set(target, prop, value, receiver)\n }\n\n static has(target: T, prop: string | symbol): boolean {\n return Reflect.has(target, prop)\n }\n\n static deleteProperty(\n target: T,\n prop: string | symbol\n ): boolean {\n return Reflect.deleteProperty(target, prop)\n }\n}\n"],"names":["ReflectAdapter","get","target","prop","receiver","value","Reflect","bind","set","has","deleteProperty"],"mappings":";;;;AAAO,MAAMA;IACX,OAAOC,IACLC,MAAS,EACTC,IAAqB,EACrBC,QAAiB,EACZ;QACL,MAAMC,QAAQC,QAAQL,GAAG,CAACC,QAAQC,MAAMC;QACxC,IAAI,OAAOC,UAAU,YAAY;YAC/B,OAAOA,MAAME,IAAI,CAACL;QACpB;QAEA,OAAOG;IACT;IAEA,OAAOG,IACLN,MAAS,EACTC,IAAqB,EACrBE,KAAU,EACVD,QAAa,EACJ;QACT,OAAOE,QAAQE,GAAG,CAACN,QAAQC,MAAME,OAAOD;IAC1C;IAEA,OAAOK,IAAsBP,MAAS,EAAEC,IAAqB,EAAW;QACtE,OAAOG,QAAQG,GAAG,CAACP,QAAQC;IAC7B;IAEA,OAAOO,eACLR,MAAS,EACTC,IAAqB,EACZ;QACT,OAAOG,QAAQI,cAAc,CAACR,QAAQC;IACxC;AACF","ignoreList":[0]}}, + {"offset": {"line": 8748, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/spec-extension/adapters/headers.ts"],"sourcesContent":["import type { IncomingHttpHeaders } from 'http'\n\nimport { ReflectAdapter } from './reflect'\n\n/**\n * @internal\n */\nexport class ReadonlyHeadersError extends Error {\n constructor() {\n super(\n 'Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers'\n )\n }\n\n public static callable() {\n throw new ReadonlyHeadersError()\n }\n}\n\nexport type ReadonlyHeaders = Headers & {\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n append(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n set(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n delete(...args: any[]): void\n}\nexport class HeadersAdapter extends Headers {\n private readonly headers: IncomingHttpHeaders\n\n constructor(headers: IncomingHttpHeaders) {\n // We've already overridden the methods that would be called, so we're just\n // calling the super constructor to ensure that the instanceof check works.\n super()\n\n this.headers = new Proxy(headers, {\n get(target, prop, receiver) {\n // Because this is just an object, we expect that all \"get\" operations\n // are for properties. If it's a \"get\" for a symbol, we'll just return\n // the symbol.\n if (typeof prop === 'symbol') {\n return ReflectAdapter.get(target, prop, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return undefined.\n if (typeof original === 'undefined') return\n\n // If the original casing exists, return the value.\n return ReflectAdapter.get(target, original, receiver)\n },\n set(target, prop, value, receiver) {\n if (typeof prop === 'symbol') {\n return ReflectAdapter.set(target, prop, value, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, use the prop as the key.\n return ReflectAdapter.set(target, original ?? prop, value, receiver)\n },\n has(target, prop) {\n if (typeof prop === 'symbol') return ReflectAdapter.has(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return false.\n if (typeof original === 'undefined') return false\n\n // If the original casing exists, return true.\n return ReflectAdapter.has(target, original)\n },\n deleteProperty(target, prop) {\n if (typeof prop === 'symbol')\n return ReflectAdapter.deleteProperty(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return true.\n if (typeof original === 'undefined') return true\n\n // If the original casing exists, delete the property.\n return ReflectAdapter.deleteProperty(target, original)\n },\n })\n }\n\n /**\n * Seals a Headers instance to prevent modification by throwing an error when\n * any mutating method is called.\n */\n public static seal(headers: Headers): ReadonlyHeaders {\n return new Proxy(headers, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'append':\n case 'delete':\n case 'set':\n return ReadonlyHeadersError.callable\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n }\n\n /**\n * Merges a header value into a string. This stores multiple values as an\n * array, so we need to merge them into a string.\n *\n * @param value a header value\n * @returns a merged header value (a string)\n */\n private merge(value: string | string[]): string {\n if (Array.isArray(value)) return value.join(', ')\n\n return value\n }\n\n /**\n * Creates a Headers instance from a plain object or a Headers instance.\n *\n * @param headers a plain object or a Headers instance\n * @returns a headers instance\n */\n public static from(headers: IncomingHttpHeaders | Headers): Headers {\n if (headers instanceof Headers) return headers\n\n return new HeadersAdapter(headers)\n }\n\n public append(name: string, value: string): void {\n const existing = this.headers[name]\n if (typeof existing === 'string') {\n this.headers[name] = [existing, value]\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n this.headers[name] = value\n }\n }\n\n public delete(name: string): void {\n delete this.headers[name]\n }\n\n public get(name: string): string | null {\n const value = this.headers[name]\n if (typeof value !== 'undefined') return this.merge(value)\n\n return null\n }\n\n public has(name: string): boolean {\n return typeof this.headers[name] !== 'undefined'\n }\n\n public set(name: string, value: string): void {\n this.headers[name] = value\n }\n\n public forEach(\n callbackfn: (value: string, name: string, parent: Headers) => void,\n thisArg?: any\n ): void {\n for (const [name, value] of this.entries()) {\n callbackfn.call(thisArg, value, name, this)\n }\n }\n\n public *entries(): HeadersIterator<[string, string]> {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(name) as string\n\n yield [name, value] as [string, string]\n }\n }\n\n public *keys(): HeadersIterator {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n yield name\n }\n }\n\n public *values(): HeadersIterator {\n for (const key of Object.keys(this.headers)) {\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(key) as string\n\n yield value\n }\n }\n\n public [Symbol.iterator](): HeadersIterator<[string, string]> {\n return this.entries()\n }\n}\n"],"names":["ReflectAdapter","ReadonlyHeadersError","Error","constructor","callable","HeadersAdapter","Headers","headers","Proxy","get","target","prop","receiver","lowercased","toLowerCase","original","Object","keys","find","o","set","value","has","deleteProperty","seal","merge","Array","isArray","join","from","append","name","existing","push","delete","forEach","callbackfn","thisArg","entries","call","key","values","Symbol","iterator"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 8926, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/dist/compiled/cookie/index.js"],"sourcesContent":["(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;\n/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */r.parse=parse;r.serialize=serialize;var i=decodeURIComponent;var t=encodeURIComponent;var a=/; */;var n=/^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;function parse(e,r){if(typeof e!==\"string\"){throw new TypeError(\"argument str must be a string\")}var t={};var n=r||{};var o=e.split(a);var s=n.decode||i;for(var p=0;p\nexport type NextApiRequestQuery = Partial<{ [key: string]: string | string[] }>\n\nexport type __ApiPreviewProps = {\n previewModeId: string\n previewModeEncryptionKey: string\n previewModeSigningKey: string\n}\n\nexport function wrapApiHandler any>(\n page: string,\n handler: T\n): T {\n return ((...args) => {\n getTracer().setRootSpanAttribute('next.route', page)\n // Call API route method\n return getTracer().trace(\n NodeSpan.runHandler,\n {\n spanName: `executing api route (pages) ${page}`,\n },\n () => handler(...args)\n )\n }) as T\n}\n\n/**\n *\n * @param res response object\n * @param statusCode `HTTP` status code of response\n */\nexport function sendStatusCode(\n res: NextApiResponse,\n statusCode: number\n): NextApiResponse {\n res.statusCode = statusCode\n return res\n}\n\n/**\n *\n * @param res response object\n * @param [statusOrUrl] `HTTP` status code of redirect\n * @param url URL of redirect\n */\nexport function redirect(\n res: NextApiResponse,\n statusOrUrl: string | number,\n url?: string\n): NextApiResponse {\n if (typeof statusOrUrl === 'string') {\n url = statusOrUrl\n statusOrUrl = 307\n }\n if (typeof statusOrUrl !== 'number' || typeof url !== 'string') {\n throw new Error(\n `Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination').`\n )\n }\n res.writeHead(statusOrUrl, { Location: url })\n res.write(url)\n res.end()\n return res\n}\n\nexport function checkIsOnDemandRevalidate(\n req: Request | IncomingMessage | BaseNextRequest,\n previewProps: __ApiPreviewProps\n): {\n isOnDemandRevalidate: boolean\n revalidateOnlyGenerated: boolean\n} {\n const headers = HeadersAdapter.from(req.headers)\n\n const previewModeId = headers.get(PRERENDER_REVALIDATE_HEADER)\n const isOnDemandRevalidate = previewModeId === previewProps.previewModeId\n\n const revalidateOnlyGenerated = headers.has(\n PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER\n )\n\n return { isOnDemandRevalidate, revalidateOnlyGenerated }\n}\n\nexport const COOKIE_NAME_PRERENDER_BYPASS = `__prerender_bypass`\nexport const COOKIE_NAME_PRERENDER_DATA = `__next_preview_data`\n\nexport const RESPONSE_LIMIT_DEFAULT = 4 * 1024 * 1024\n\nexport const SYMBOL_PREVIEW_DATA = Symbol(COOKIE_NAME_PRERENDER_DATA)\nexport const SYMBOL_CLEARED_COOKIES = Symbol(COOKIE_NAME_PRERENDER_BYPASS)\n\nexport function clearPreviewData(\n res: NextApiResponse,\n options: {\n path?: string\n } = {}\n): NextApiResponse {\n if (SYMBOL_CLEARED_COOKIES in res) {\n return res\n }\n\n const { serialize } =\n require('next/dist/compiled/cookie') as typeof import('next/dist/compiled/cookie')\n const previous = res.getHeader('Set-Cookie')\n res.setHeader(`Set-Cookie`, [\n ...(typeof previous === 'string'\n ? [previous]\n : Array.isArray(previous)\n ? previous\n : []),\n serialize(COOKIE_NAME_PRERENDER_BYPASS, '', {\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n expires: new Date(0),\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n ...(options.path !== undefined\n ? ({ path: options.path } as CookieSerializeOptions)\n : undefined),\n }),\n serialize(COOKIE_NAME_PRERENDER_DATA, '', {\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n expires: new Date(0),\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n ...(options.path !== undefined\n ? ({ path: options.path } as CookieSerializeOptions)\n : undefined),\n }),\n ])\n\n Object.defineProperty(res, SYMBOL_CLEARED_COOKIES, {\n value: true,\n enumerable: false,\n })\n return res\n}\n\n/**\n * Custom error class\n */\nexport class ApiError extends Error {\n readonly statusCode: number\n\n constructor(statusCode: number, message: string) {\n super(message)\n this.statusCode = statusCode\n }\n}\n\n/**\n * Sends error in `response`\n * @param res response object\n * @param statusCode of response\n * @param message of response\n */\nexport function sendError(\n res: NextApiResponse,\n statusCode: number,\n message: string\n): void {\n res.statusCode = statusCode\n res.statusMessage = message\n res.end(message)\n}\n\ninterface LazyProps {\n req: IncomingMessage\n}\n\n/**\n * Execute getter function only if its needed\n * @param LazyProps `req` and `params` for lazyProp\n * @param prop name of property\n * @param getter function to get data\n */\nexport function setLazyProp(\n { req }: LazyProps,\n prop: string,\n getter: () => T\n): void {\n const opts = { configurable: true, enumerable: true }\n const optsReset = { ...opts, writable: true }\n\n Object.defineProperty(req, prop, {\n ...opts,\n get: () => {\n const value = getter()\n // we set the property on the object to avoid recalculating it\n Object.defineProperty(req, prop, { ...optsReset, value })\n return value\n },\n set: (value) => {\n Object.defineProperty(req, prop, { ...optsReset, value })\n },\n })\n}\n"],"names":["HeadersAdapter","PRERENDER_REVALIDATE_HEADER","PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER","getTracer","NodeSpan","wrapApiHandler","page","handler","args","setRootSpanAttribute","trace","runHandler","spanName","sendStatusCode","res","statusCode","redirect","statusOrUrl","url","Error","writeHead","Location","write","end","checkIsOnDemandRevalidate","req","previewProps","headers","from","previewModeId","get","isOnDemandRevalidate","revalidateOnlyGenerated","has","COOKIE_NAME_PRERENDER_BYPASS","COOKIE_NAME_PRERENDER_DATA","RESPONSE_LIMIT_DEFAULT","SYMBOL_PREVIEW_DATA","Symbol","SYMBOL_CLEARED_COOKIES","clearPreviewData","options","serialize","require","previous","getHeader","setHeader","Array","isArray","expires","Date","httpOnly","sameSite","process","env","NODE_ENV","secure","path","undefined","Object","defineProperty","value","enumerable","ApiError","constructor","message","sendError","statusMessage","setLazyProp","prop","getter","opts","configurable","optsReset","writable","set"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,SAASA,cAAc,QAAQ,yCAAwC;AACvE,SACEC,2BAA2B,EAC3BC,0CAA0C,QACrC,sBAAqB;AAC5B,SAASC,SAAS,QAAQ,sBAAqB;AAC/C,SAASC,QAAQ,QAAQ,yBAAwB;;;;;AAW1C,SAASC,eACdC,IAAY,EACZC,OAAU;IAEV,OAAQ,CAAC,GAAGC;YACVL,kOAAAA,IAAYM,oBAAoB,CAAC,cAAcH;QAC/C,wBAAwB;QACxB,WAAOH,kOAAAA,IAAYO,KAAK,CACtBN,oOAAAA,CAASO,UAAU,EACnB;YACEC,UAAU,CAAC,4BAA4B,EAAEN,MAAM;QACjD,GACA,IAAMC,WAAWC;IAErB;AACF;AAOO,SAASK,eACdC,GAAoB,EACpBC,UAAkB;IAElBD,IAAIC,UAAU,GAAGA;IACjB,OAAOD;AACT;AAQO,SAASE,SACdF,GAAoB,EACpBG,WAA4B,EAC5BC,GAAY;IAEZ,IAAI,OAAOD,gBAAgB,UAAU;QACnCC,MAAMD;QACNA,cAAc;IAChB;IACA,IAAI,OAAOA,gBAAgB,YAAY,OAAOC,QAAQ,UAAU;QAC9D,MAAM,OAAA,cAEL,CAFK,IAAIC,MACR,CAAC,qKAAqK,CAAC,GADnK,qBAAA;mBAAA;wBAAA;0BAAA;QAEN;IACF;IACAL,IAAIM,SAAS,CAACH,aAAa;QAAEI,UAAUH;IAAI;IAC3CJ,IAAIQ,KAAK,CAACJ;IACVJ,IAAIS,GAAG;IACP,OAAOT;AACT;AAEO,SAASU,0BACdC,GAAgD,EAChDC,YAA+B;IAK/B,MAAMC,UAAU3B,gQAAAA,CAAe4B,IAAI,CAACH,IAAIE,OAAO;IAE/C,MAAME,gBAAgBF,QAAQG,GAAG,CAAC7B,oOAAAA;IAClC,MAAM8B,uBAAuBF,kBAAkBH,aAAaG,aAAa;IAEzE,MAAMG,0BAA0BL,QAAQM,GAAG,CACzC/B,mPAAAA;IAGF,OAAO;QAAE6B;QAAsBC;IAAwB;AACzD;AAEO,MAAME,+BAA+B,CAAC,kBAAkB,CAAC,CAAA;AACzD,MAAMC,6BAA6B,CAAC,mBAAmB,CAAC,CAAA;AAExD,MAAMC,yBAAyB,IAAI,OAAO,KAAI;AAE9C,MAAMC,sBAAsBC,OAAOH,4BAA2B;AAC9D,MAAMI,yBAAyBD,OAAOJ,8BAA6B;AAEnE,SAASM,iBACd1B,GAAuB,EACvB2B,UAEI,CAAC,CAAC;IAEN,IAAIF,0BAA0BzB,KAAK;QACjC,OAAOA;IACT;IAEA,MAAM,EAAE4B,SAAS,EAAE,GACjBC,QAAQ;IACV,MAAMC,WAAW9B,IAAI+B,SAAS,CAAC;IAC/B/B,IAAIgC,SAAS,CAAC,CAAC,UAAU,CAAC,EAAE;WACtB,OAAOF,aAAa,WACpB;YAACA;SAAS,GACVG,MAAMC,OAAO,CAACJ,YACZA,WACA,EAAE;QACRF,UAAUR,8BAA8B,IAAI;YAC1C,2DAA2D;YAC3D,oDAAoD;YACpD,wEAAwE;YACxEe,SAAS,IAAIC,KAAK;YAClBC,UAAU;YACVC,UAAUC,QAAQC,GAAG,CAACC,QAAQ,KAAK,aAAgB,0BAAS;YAC5DC,QAAQH,QAAQC,GAAG,CAACC,QAAQ,gCAAK;YACjCE,MAAM;YACN,GAAIhB,QAAQgB,IAAI,KAAKC,YAChB;gBAAED,MAAMhB,QAAQgB,IAAI;YAAC,IACtBC,SAAS;QACf;QACAhB,UAAUP,4BAA4B,IAAI;YACxC,2DAA2D;YAC3D,oDAAoD;YACpD,wEAAwE;YACxEc,SAAS,IAAIC,KAAK;YAClBC,UAAU;YACVC,UAAUC,QAAQC,GAAG,CAACC,QAAQ,KAAK,aAAgB,0BAAS;YAC5DC,QAAQH,QAAQC,GAAG,CAACC,QAAQ,gCAAK;YACjCE,MAAM;YACN,GAAIhB,QAAQgB,IAAI,KAAKC,YAChB;gBAAED,MAAMhB,QAAQgB,IAAI;YAAC,IACtBC,SAAS;QACf;KACD;IAEDC,OAAOC,cAAc,CAAC9C,KAAKyB,wBAAwB;QACjDsB,OAAO;QACPC,YAAY;IACd;IACA,OAAOhD;AACT;AAKO,MAAMiD,iBAAiB5C;IAG5B6C,YAAYjD,UAAkB,EAAEkD,OAAe,CAAE;QAC/C,KAAK,CAACA;QACN,IAAI,CAAClD,UAAU,GAAGA;IACpB;AACF;AAQO,SAASmD,UACdpD,GAAoB,EACpBC,UAAkB,EAClBkD,OAAe;IAEfnD,IAAIC,UAAU,GAAGA;IACjBD,IAAIqD,aAAa,GAAGF;IACpBnD,IAAIS,GAAG,CAAC0C;AACV;AAYO,SAASG,YACd,EAAE3C,GAAG,EAAa,EAClB4C,IAAY,EACZC,MAAe;IAEf,MAAMC,OAAO;QAAEC,cAAc;QAAMV,YAAY;IAAK;IACpD,MAAMW,YAAY;QAAE,GAAGF,IAAI;QAAEG,UAAU;IAAK;IAE5Cf,OAAOC,cAAc,CAACnC,KAAK4C,MAAM;QAC/B,GAAGE,IAAI;QACPzC,KAAK;YACH,MAAM+B,QAAQS;YACd,8DAA8D;YAC9DX,OAAOC,cAAc,CAACnC,KAAK4C,MAAM;gBAAE,GAAGI,SAAS;gBAAEZ;YAAM;YACvD,OAAOA;QACT;QACAc,KAAK,CAACd;YACJF,OAAOC,cAAc,CAACnC,KAAK4C,MAAM;gBAAE,GAAGI,SAAS;gBAAEZ;YAAM;QACzD;IACF;AACF","ignoreList":[0]}}, + {"offset": {"line": 9217, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/redirect-status-code.ts"],"sourcesContent":["export enum RedirectStatusCode {\n SeeOther = 303,\n TemporaryRedirect = 307,\n PermanentRedirect = 308,\n}\n"],"names":["RedirectStatusCode"],"mappings":";;;;AAAO,IAAKA,qBAAAA,WAAAA,GAAAA,SAAAA,kBAAAA;;;;WAAAA;MAIX","ignoreList":[0]}}, + {"offset": {"line": 9231, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/api-utils/get-cookie-parser.ts"],"sourcesContent":["import type { NextApiRequestCookies } from '.'\n\n/**\n * Parse cookies from the `headers` of request\n * @param req request object\n */\n\nexport function getCookieParser(headers: {\n [key: string]: string | string[] | null | undefined\n}): () => NextApiRequestCookies {\n return function parseCookie(): NextApiRequestCookies {\n const { cookie } = headers\n\n if (!cookie) {\n return {}\n }\n\n const { parse: parseCookieFn } =\n require('next/dist/compiled/cookie') as typeof import('next/dist/compiled/cookie')\n return parseCookieFn(Array.isArray(cookie) ? cookie.join('; ') : cookie)\n }\n}\n"],"names":["getCookieParser","headers","parseCookie","cookie","parse","parseCookieFn","require","Array","isArray","join"],"mappings":"AAEA;;;CAGC,GAED;;;;AAAO,SAASA,gBAAgBC,OAE/B;IACC,OAAO,SAASC;QACd,MAAM,EAAEC,MAAM,EAAE,GAAGF;QAEnB,IAAI,CAACE,QAAQ;YACX,OAAO,CAAC;QACV;QAEA,MAAM,EAAEC,OAAOC,aAAa,EAAE,GAC5BC,QAAQ;QACV,OAAOD,cAAcE,MAAMC,OAAO,CAACL,UAAUA,OAAOM,IAAI,CAAC,QAAQN;IACnE;AACF","ignoreList":[0]}}, + {"offset": {"line": 9252, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/base-http/index.ts"],"sourcesContent":["import type { IncomingHttpHeaders, OutgoingHttpHeaders } from 'http'\nimport type { I18NConfig } from '../config-shared'\n\nimport { RedirectStatusCode } from '../../client/components/redirect-status-code'\nimport type { NextApiRequestCookies } from '../api-utils'\nimport { getCookieParser } from '../api-utils/get-cookie-parser'\n\nexport interface BaseNextRequestConfig {\n basePath: string | undefined\n i18n?: I18NConfig\n trailingSlash?: boolean | undefined\n}\n\nexport type FetchMetric = {\n url: string\n idx: number\n end: number\n start: number\n method: string\n status: number\n cacheReason: string\n cacheStatus: 'hit' | 'miss' | 'skip' | 'hmr'\n cacheWarning?: string\n}\n\nexport type FetchMetrics = Array\n\nexport abstract class BaseNextRequest {\n protected _cookies: NextApiRequestCookies | undefined\n public abstract headers: IncomingHttpHeaders\n public abstract fetchMetrics: FetchMetric[] | undefined\n\n constructor(\n public method: string,\n public url: string,\n public body: Body\n ) {}\n\n // Utils implemented using the abstract methods above\n\n public get cookies() {\n if (this._cookies) return this._cookies\n return (this._cookies = getCookieParser(this.headers)())\n }\n}\n\nexport abstract class BaseNextResponse {\n abstract statusCode: number | undefined\n abstract statusMessage: string | undefined\n abstract get sent(): boolean\n\n constructor(public destination: Destination) {}\n\n /**\n * Sets a value for the header overwriting existing values\n */\n abstract setHeader(name: string, value: string | string[]): this\n\n /**\n * Removes a header\n */\n abstract removeHeader(name: string): this\n\n /**\n * Appends value for the given header name\n */\n abstract appendHeader(name: string, value: string): this\n\n /**\n * Get all values for a header as an array or undefined if no value is present\n */\n abstract getHeaderValues(name: string): string[] | undefined\n\n abstract hasHeader(name: string): boolean\n\n /**\n * Get values for a header concatenated using `,` or undefined if no value is present\n */\n abstract getHeader(name: string): string | undefined\n\n abstract getHeaders(): OutgoingHttpHeaders\n\n abstract body(value: string): this\n\n abstract send(): void\n\n abstract onClose(callback: () => void): void\n\n // Utils implemented using the abstract methods above\n\n public redirect(destination: string, statusCode: number) {\n this.setHeader('Location', destination)\n this.statusCode = statusCode\n\n // Since IE11 doesn't support the 308 header add backwards\n // compatibility using refresh header\n if (statusCode === RedirectStatusCode.PermanentRedirect) {\n this.setHeader('Refresh', `0;url=${destination}`)\n }\n\n return this\n }\n}\n"],"names":["RedirectStatusCode","getCookieParser","BaseNextRequest","constructor","method","url","body","cookies","_cookies","headers","BaseNextResponse","destination","redirect","statusCode","setHeader","PermanentRedirect"],"mappings":";;;;;;AAGA,SAASA,kBAAkB,QAAQ,+CAA8C;AAEjF,SAASC,eAAe,QAAQ,iCAAgC;;;AAsBzD,MAAeC;IAKpBC,YACSC,MAAc,EACdC,GAAW,EACXC,IAAU,CACjB;aAHOF,MAAAA,GAAAA;aACAC,GAAAA,GAAAA;aACAC,IAAAA,GAAAA;IACN;IAEH,qDAAqD;IAErD,IAAWC,UAAU;QACnB,IAAI,IAAI,CAACC,QAAQ,EAAE,OAAO,IAAI,CAACA,QAAQ;QACvC,OAAQ,IAAI,CAACA,QAAQ,OAAGP,yPAAAA,EAAgB,IAAI,CAACQ,OAAO;IACtD;AACF;AAEO,MAAeC;IAKpBP,YAAmBQ,WAAwB,CAAE;aAA1BA,WAAAA,GAAAA;IAA2B;IAqC9C,qDAAqD;IAE9CC,SAASD,WAAmB,EAAEE,UAAkB,EAAE;QACvD,IAAI,CAACC,SAAS,CAAC,YAAYH;QAC3B,IAAI,CAACE,UAAU,GAAGA;QAElB,0DAA0D;QAC1D,qCAAqC;QACrC,IAAIA,eAAeb,6PAAAA,CAAmBe,iBAAiB,EAAE;YACvD,IAAI,CAACD,SAAS,CAAC,WAAW,CAAC,MAAM,EAAEH,aAAa;QAClD;QAEA,OAAO,IAAI;IACb;AACF","ignoreList":[0]}}, + {"offset": {"line": 9294, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/base-http/node.ts"],"sourcesContent":["import type { ServerResponse, IncomingMessage } from 'http'\nimport type { Writable, Readable } from 'stream'\n\nimport { SYMBOL_CLEARED_COOKIES } from '../api-utils'\nimport type { NextApiRequestCookies } from '../api-utils'\n\nimport { NEXT_REQUEST_META } from '../request-meta'\nimport type { RequestMeta } from '../request-meta'\n\nimport { BaseNextRequest, BaseNextResponse, type FetchMetric } from './index'\nimport type { OutgoingHttpHeaders } from 'node:http'\n\ntype Req = IncomingMessage & {\n [NEXT_REQUEST_META]?: RequestMeta\n cookies?: NextApiRequestCookies\n fetchMetrics?: FetchMetric[]\n}\n\nexport class NodeNextRequest extends BaseNextRequest {\n public headers = this._req.headers\n public fetchMetrics: FetchMetric[] | undefined = this._req?.fetchMetrics;\n\n [NEXT_REQUEST_META]: RequestMeta = this._req[NEXT_REQUEST_META] || {}\n\n constructor(private _req: Req) {\n super(_req.method!.toUpperCase(), _req.url!, _req)\n }\n\n get originalRequest() {\n // Need to mimic these changes to the original req object for places where we use it:\n // render.tsx, api/ssg requests\n this._req[NEXT_REQUEST_META] = this[NEXT_REQUEST_META]\n this._req.url = this.url\n this._req.cookies = this.cookies\n return this._req\n }\n\n set originalRequest(value: Req) {\n this._req = value\n }\n\n private streaming = false\n\n /**\n * Returns the request body as a Web Readable Stream. The body here can only\n * be read once as the body will start flowing as soon as the data handler\n * is attached.\n *\n * @internal\n */\n public stream() {\n if (this.streaming) {\n throw new Error(\n 'Invariant: NodeNextRequest.stream() can only be called once'\n )\n }\n this.streaming = true\n\n return new ReadableStream({\n start: (controller) => {\n this._req.on('data', (chunk) => {\n controller.enqueue(new Uint8Array(chunk))\n })\n this._req.on('end', () => {\n controller.close()\n })\n this._req.on('error', (err) => {\n controller.error(err)\n })\n },\n })\n }\n}\n\nexport class NodeNextResponse extends BaseNextResponse {\n private textBody: string | undefined = undefined\n\n public [SYMBOL_CLEARED_COOKIES]?: boolean\n\n get originalResponse() {\n if (SYMBOL_CLEARED_COOKIES in this) {\n this._res[SYMBOL_CLEARED_COOKIES] = this[SYMBOL_CLEARED_COOKIES]\n }\n\n return this._res\n }\n\n constructor(\n private _res: ServerResponse & { [SYMBOL_CLEARED_COOKIES]?: boolean }\n ) {\n super(_res)\n }\n\n get sent() {\n return this._res.finished || this._res.headersSent\n }\n\n get statusCode() {\n return this._res.statusCode\n }\n\n set statusCode(value: number) {\n this._res.statusCode = value\n }\n\n get statusMessage() {\n return this._res.statusMessage\n }\n\n set statusMessage(value: string) {\n this._res.statusMessage = value\n }\n\n setHeader(name: string, value: string | string[]): this {\n this._res.setHeader(name, value)\n return this\n }\n\n removeHeader(name: string): this {\n this._res.removeHeader(name)\n return this\n }\n\n getHeaderValues(name: string): string[] | undefined {\n const values = this._res.getHeader(name)\n\n if (values === undefined) return undefined\n\n return (Array.isArray(values) ? values : [values]).map((value) =>\n value.toString()\n )\n }\n\n hasHeader(name: string): boolean {\n return this._res.hasHeader(name)\n }\n\n getHeader(name: string): string | undefined {\n const values = this.getHeaderValues(name)\n return Array.isArray(values) ? values.join(',') : undefined\n }\n\n getHeaders(): OutgoingHttpHeaders {\n return this._res.getHeaders()\n }\n\n appendHeader(name: string, value: string): this {\n const currentValues = this.getHeaderValues(name) ?? []\n\n if (!currentValues.includes(value)) {\n this._res.setHeader(name, [...currentValues, value])\n }\n\n return this\n }\n\n body(value: string) {\n this.textBody = value\n return this\n }\n\n send() {\n this._res.end(this.textBody)\n }\n\n public onClose(callback: () => void) {\n this.originalResponse.on('close', callback)\n }\n}\n"],"names":["SYMBOL_CLEARED_COOKIES","NEXT_REQUEST_META","BaseNextRequest","BaseNextResponse","NodeNextRequest","constructor","_req","method","toUpperCase","url","headers","fetchMetrics","streaming","originalRequest","cookies","value","stream","Error","ReadableStream","start","controller","on","chunk","enqueue","Uint8Array","close","err","error","NodeNextResponse","originalResponse","_res","textBody","undefined","sent","finished","headersSent","statusCode","statusMessage","setHeader","name","removeHeader","getHeaderValues","values","getHeader","Array","isArray","map","toString","hasHeader","join","getHeaders","appendHeader","currentValues","includes","body","send","end","onClose","callback"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 9430, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/instrumentation/utils.ts"],"sourcesContent":["export function getRevalidateReason(params: {\n isOnDemandRevalidate?: boolean\n isStaticGeneration?: boolean\n}): 'on-demand' | 'stale' | undefined {\n if (params.isOnDemandRevalidate) {\n return 'on-demand'\n }\n if (params.isStaticGeneration) {\n return 'stale'\n }\n return undefined\n}\n"],"names":["getRevalidateReason","params","isOnDemandRevalidate","isStaticGeneration","undefined"],"mappings":";;;;AAAO,SAASA,oBAAoBC,MAGnC;IACC,IAAIA,OAAOC,oBAAoB,EAAE;QAC/B,OAAO;IACT;IACA,IAAID,OAAOE,kBAAkB,EAAE;QAC7B,OAAO;IACT;IACA,OAAOC;AACT","ignoreList":[0]}}, + {"offset": {"line": 9447, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/send-response.ts"],"sourcesContent":["import type { BaseNextRequest, BaseNextResponse } from './base-http'\nimport { isNodeNextResponse } from './base-http/helpers'\n\nimport { pipeToNodeResponse } from './pipe-readable'\nimport { splitCookiesString } from './web/utils'\n\n/**\n * Sends the response on the underlying next response object.\n *\n * @param req the underlying request object\n * @param res the underlying response object\n * @param response the response to send\n */\nexport async function sendResponse(\n req: BaseNextRequest,\n res: BaseNextResponse,\n response: Response,\n waitUntil?: Promise\n): Promise {\n if (\n // The type check here ensures that `req` is correctly typed, and the\n // environment variable check provides dead code elimination.\n process.env.NEXT_RUNTIME !== 'edge' &&\n isNodeNextResponse(res)\n ) {\n // Copy over the response status.\n res.statusCode = response.status\n res.statusMessage = response.statusText\n\n // TODO: this is not spec-compliant behavior and we should not restrict\n // headers that are allowed to appear many times.\n //\n // See:\n // https://github.com/vercel/next.js/pull/70127\n const headersWithMultipleValuesAllowed = [\n // can add more headers to this list if needed\n 'set-cookie',\n 'www-authenticate',\n 'proxy-authenticate',\n 'vary',\n ]\n\n // Copy over the response headers.\n response.headers?.forEach((value, name) => {\n // `x-middleware-set-cookie` is an internal header not needed for the response\n if (name.toLowerCase() === 'x-middleware-set-cookie') {\n return\n }\n\n // The append handling is special cased for `set-cookie`.\n if (name.toLowerCase() === 'set-cookie') {\n // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici\n for (const cookie of splitCookiesString(value)) {\n res.appendHeader(name, cookie)\n }\n } else {\n // only append the header if it is either not present in the outbound response\n // or if the header supports multiple values\n const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'\n if (\n headersWithMultipleValuesAllowed.includes(name.toLowerCase()) ||\n !isHeaderPresent\n ) {\n res.appendHeader(name, value)\n }\n }\n })\n\n /**\n * The response can't be directly piped to the underlying response. The\n * following is duplicated from the edge runtime handler.\n *\n * See packages/next/server/next-server.ts\n */\n\n const { originalResponse } = res\n\n // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD\n if (response.body && req.method !== 'HEAD') {\n await pipeToNodeResponse(response.body, originalResponse, waitUntil)\n } else {\n originalResponse.end()\n }\n }\n}\n"],"names":["isNodeNextResponse","pipeToNodeResponse","splitCookiesString","sendResponse","req","res","response","waitUntil","process","env","NEXT_RUNTIME","statusCode","status","statusMessage","statusText","headersWithMultipleValuesAllowed","headers","forEach","value","name","toLowerCase","cookie","appendHeader","isHeaderPresent","getHeader","includes","originalResponse","body","method","end"],"mappings":";;;;AACA,SAASA,kBAAkB,QAAQ,sBAAqB;AAExD,SAASC,kBAAkB,QAAQ,kBAAiB;AACpD,SAASC,kBAAkB,QAAQ,cAAa;;;;AASzC,eAAeC,aACpBC,GAAoB,EACpBC,GAAqB,EACrBC,QAAkB,EAClBC,SAA4B;IAE5B,IACE,AACA,6DAA6D,QADQ;IAErEC,QAAQC,GAAG,CAACC,YAAY,uBAAK,cAC7BV,4OAAAA,EAAmBK,MACnB;YAkBA,AACAC,kCADkC;QAjBlC,iCAAiC;QACjCD,IAAIM,UAAU,GAAGL,SAASM,MAAM;QAChCP,IAAIQ,aAAa,GAAGP,SAASQ,UAAU;QAEvC,uEAAuE;QACvE,iDAAiD;QACjD,EAAE;QACF,OAAO;QACP,+CAA+C;QAC/C,MAAMC,mCAAmC;YACvC,8CAA8C;YAC9C;YACA;YACA;YACA;SACD;SAGDT,oBAAAA,SAASU,OAAO,KAAA,OAAA,KAAA,IAAhBV,kBAAkBW,OAAO,CAAC,CAACC,OAAOC;YAChC,8EAA8E;YAC9E,IAAIA,KAAKC,WAAW,OAAO,2BAA2B;gBACpD;YACF;YAEA,yDAAyD;YACzD,IAAID,KAAKC,WAAW,OAAO,cAAc;gBACvC,qFAAqF;gBACrF,KAAK,MAAMC,cAAUnB,iOAAAA,EAAmBgB,OAAQ;oBAC9Cb,IAAIiB,YAAY,CAACH,MAAME;gBACzB;YACF,OAAO;gBACL,8EAA8E;gBAC9E,4CAA4C;gBAC5C,MAAME,kBAAkB,OAAOlB,IAAImB,SAAS,CAACL,UAAU;gBACvD,IACEJ,iCAAiCU,QAAQ,CAACN,KAAKC,WAAW,OAC1D,CAACG,iBACD;oBACAlB,IAAIiB,YAAY,CAACH,MAAMD;gBACzB;YACF;QACF;QAEA;;;;;KAKC,GAED,MAAM,EAAEQ,gBAAgB,EAAE,GAAGrB;QAE7B,qGAAqG;QACrG,IAAIC,SAASqB,IAAI,IAAIvB,IAAIwB,MAAM,KAAK,QAAQ;YAC1C,UAAM3B,qOAAAA,EAAmBK,SAASqB,IAAI,EAAED,kBAAkBnB;QAC5D,OAAO;YACLmB,iBAAiBG,GAAG;QACtB;IACF;AACF","ignoreList":[0]}}, + {"offset": {"line": 9514, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/lib/cache-control.ts"],"sourcesContent":["import { CACHE_ONE_YEAR } from '../../lib/constants'\n\n/**\n * The revalidate option used internally for pages. A value of `false` means\n * that the page should not be revalidated. A number means that the page\n * should be revalidated after the given number of seconds (this also includes\n * `1` which means to revalidate after 1 second). A value of `0` is not a valid\n * value for this option.\n */\nexport type Revalidate = number | false\n\nexport interface CacheControl {\n revalidate: Revalidate\n expire: number | undefined\n}\n\nexport function getCacheControlHeader({\n revalidate,\n expire,\n}: CacheControl): string {\n const swrHeader =\n typeof revalidate === 'number' &&\n expire !== undefined &&\n revalidate < expire\n ? `, stale-while-revalidate=${expire - revalidate}`\n : ''\n\n if (revalidate === 0) {\n return 'private, no-cache, no-store, max-age=0, must-revalidate'\n } else if (typeof revalidate === 'number') {\n return `s-maxage=${revalidate}${swrHeader}`\n }\n\n return `s-maxage=${CACHE_ONE_YEAR}${swrHeader}`\n}\n"],"names":["CACHE_ONE_YEAR","getCacheControlHeader","revalidate","expire","swrHeader","undefined"],"mappings":";;;;AAAA,SAASA,cAAc,QAAQ,sBAAqB;;AAgB7C,SAASC,sBAAsB,EACpCC,UAAU,EACVC,MAAM,EACO;IACb,MAAMC,YACJ,OAAOF,eAAe,YACtBC,WAAWE,aACXH,aAAaC,SACT,CAAC,yBAAyB,EAAEA,SAASD,YAAY,GACjD;IAEN,IAAIA,eAAe,GAAG;QACpB,OAAO;IACT,OAAO,IAAI,OAAOA,eAAe,UAAU;QACzC,OAAO,CAAC,SAAS,EAAEA,aAAaE,WAAW;IAC7C;IAEA,OAAO,CAAC,SAAS,EAAEJ,uNAAAA,GAAiBI,WAAW;AACjD","ignoreList":[0]}}, + {"offset": {"line": 9533, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/i18n/detect-domain-locale.ts"],"sourcesContent":["import type { DomainLocale } from '../../../server/config-shared'\n\nexport function detectDomainLocale(\n domainItems?: readonly DomainLocale[],\n hostname?: string,\n detectedLocale?: string\n) {\n if (!domainItems) return\n\n if (detectedLocale) {\n detectedLocale = detectedLocale.toLowerCase()\n }\n\n for (const item of domainItems) {\n // remove port if present\n const domainHostname = item.domain?.split(':', 1)[0].toLowerCase()\n if (\n hostname === domainHostname ||\n detectedLocale === item.defaultLocale.toLowerCase() ||\n item.locales?.some((locale) => locale.toLowerCase() === detectedLocale)\n ) {\n return item\n }\n }\n}\n"],"names":["detectDomainLocale","domainItems","hostname","detectedLocale","toLowerCase","item","domainHostname","domain","split","defaultLocale","locales","some","locale"],"mappings":";;;+BAEgBA,sBAAAA;;;eAAAA;;;AAAT,SAASA,mBACdC,WAAqC,EACrCC,QAAiB,EACjBC,cAAuB;IAEvB,IAAI,CAACF,aAAa;IAElB,IAAIE,gBAAgB;QAClBA,iBAAiBA,eAAeC,WAAW;IAC7C;IAEA,KAAK,MAAMC,QAAQJ,YAAa;QAC9B,yBAAyB;QACzB,MAAMK,iBAAiBD,KAAKE,MAAM,EAAEC,MAAM,KAAK,EAAE,CAAC,EAAE,CAACJ;QACrD,IACEF,aAAaI,kBACbH,mBAAmBE,KAAKI,aAAa,CAACL,WAAW,MACjDC,KAAKK,OAAO,EAAEC,KAAK,CAACC,SAAWA,OAAOR,WAAW,OAAOD,iBACxD;YACA,OAAOE;QACT;IACF;AACF","ignoreList":[0]}}, + {"offset": {"line": 9559, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/remove-trailing-slash.ts"],"sourcesContent":["/**\n * Removes the trailing slash for a given route or page path. Preserves the\n * root page. Examples:\n * - `/foo/bar/` -> `/foo/bar`\n * - `/foo/bar` -> `/foo/bar`\n * - `/` -> `/`\n */\nexport function removeTrailingSlash(route: string) {\n return route.replace(/\\/$/, '') || '/'\n}\n"],"names":["removeTrailingSlash","route","replace"],"mappings":"AAAA;;;;;;CAMC;;;+BACeA,uBAAAA;;;eAAAA;;;AAAT,SAASA,oBAAoBC,KAAa;IAC/C,OAAOA,MAAMC,OAAO,CAAC,OAAO,OAAO;AACrC","ignoreList":[0]}}, + {"offset": {"line": 9581, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/parse-path.ts"],"sourcesContent":["/**\n * Given a path this function will find the pathname, query and hash and return\n * them. This is useful to parse full paths on the client side.\n * @param path A path to parse e.g. /foo/bar?id=1#hash\n */\nexport function parsePath(path: string) {\n const hashIndex = path.indexOf('#')\n const queryIndex = path.indexOf('?')\n const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex)\n\n if (hasQuery || hashIndex > -1) {\n return {\n pathname: path.substring(0, hasQuery ? queryIndex : hashIndex),\n query: hasQuery\n ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined)\n : '',\n hash: hashIndex > -1 ? path.slice(hashIndex) : '',\n }\n }\n\n return { pathname: path, query: '', hash: '' }\n}\n"],"names":["parsePath","path","hashIndex","indexOf","queryIndex","hasQuery","pathname","substring","query","undefined","hash","slice"],"mappings":"AAAA;;;;CAIC;;;+BACeA,aAAAA;;;eAAAA;;;AAAT,SAASA,UAAUC,IAAY;IACpC,MAAMC,YAAYD,KAAKE,OAAO,CAAC;IAC/B,MAAMC,aAAaH,KAAKE,OAAO,CAAC;IAChC,MAAME,WAAWD,aAAa,CAAC,KAAMF,CAAAA,YAAY,KAAKE,aAAaF,SAAQ;IAE3E,IAAIG,YAAYH,YAAY,CAAC,GAAG;QAC9B,OAAO;YACLI,UAAUL,KAAKM,SAAS,CAAC,GAAGF,WAAWD,aAAaF;YACpDM,OAAOH,WACHJ,KAAKM,SAAS,CAACH,YAAYF,YAAY,CAAC,IAAIA,YAAYO,aACxD;YACJC,MAAMR,YAAY,CAAC,IAAID,KAAKU,KAAK,CAACT,aAAa;QACjD;IACF;IAEA,OAAO;QAAEI,UAAUL;QAAMO,OAAO;QAAIE,MAAM;IAAG;AAC/C","ignoreList":[0]}}, + {"offset": {"line": 9615, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/add-path-prefix.ts"],"sourcesContent":["import { parsePath } from './parse-path'\n\n/**\n * Adds the provided prefix to the given path. It first ensures that the path\n * is indeed starting with a slash.\n */\nexport function addPathPrefix(path: string, prefix?: string) {\n if (!path.startsWith('/') || !prefix) {\n return path\n }\n\n const { pathname, query, hash } = parsePath(path)\n return `${prefix}${pathname}${query}${hash}`\n}\n"],"names":["addPathPrefix","path","prefix","startsWith","pathname","query","hash","parsePath"],"mappings":";;;+BAMgBA,iBAAAA;;;eAAAA;;;2BANU;AAMnB,SAASA,cAAcC,IAAY,EAAEC,MAAe;IACzD,IAAI,CAACD,KAAKE,UAAU,CAAC,QAAQ,CAACD,QAAQ;QACpC,OAAOD;IACT;IAEA,MAAM,EAAEG,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAE,GAAGC,CAAAA,GAAAA,WAAAA,SAAS,EAACN;IAC5C,OAAO,GAAGC,SAASE,WAAWC,QAAQC,MAAM;AAC9C","ignoreList":[0]}}, + {"offset": {"line": 9636, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/add-path-suffix.ts"],"sourcesContent":["import { parsePath } from './parse-path'\n\n/**\n * Similarly to `addPathPrefix`, this function adds a suffix at the end on the\n * provided path. It also works only for paths ensuring the argument starts\n * with a slash.\n */\nexport function addPathSuffix(path: string, suffix?: string) {\n if (!path.startsWith('/') || !suffix) {\n return path\n }\n\n const { pathname, query, hash } = parsePath(path)\n return `${pathname}${suffix}${query}${hash}`\n}\n"],"names":["addPathSuffix","path","suffix","startsWith","pathname","query","hash","parsePath"],"mappings":";;;+BAOgBA,iBAAAA;;;eAAAA;;;2BAPU;AAOnB,SAASA,cAAcC,IAAY,EAAEC,MAAe;IACzD,IAAI,CAACD,KAAKE,UAAU,CAAC,QAAQ,CAACD,QAAQ;QACpC,OAAOD;IACT;IAEA,MAAM,EAAEG,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAE,GAAGC,CAAAA,GAAAA,WAAAA,SAAS,EAACN;IAC5C,OAAO,GAAGG,WAAWF,SAASG,QAAQC,MAAM;AAC9C","ignoreList":[0]}}, + {"offset": {"line": 9657, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/path-has-prefix.ts"],"sourcesContent":["import { parsePath } from './parse-path'\n\n/**\n * Checks if a given path starts with a given prefix. It ensures it matches\n * exactly without containing extra chars. e.g. prefix /docs should replace\n * for /docs, /docs/, /docs/a but not /docsss\n * @param path The path to check.\n * @param prefix The prefix to check against.\n */\nexport function pathHasPrefix(path: string, prefix: string) {\n if (typeof path !== 'string') {\n return false\n }\n\n const { pathname } = parsePath(path)\n return pathname === prefix || pathname.startsWith(prefix + '/')\n}\n"],"names":["pathHasPrefix","path","prefix","pathname","parsePath","startsWith"],"mappings":";;;+BASgBA,iBAAAA;;;eAAAA;;;2BATU;AASnB,SAASA,cAAcC,IAAY,EAAEC,MAAc;IACxD,IAAI,OAAOD,SAAS,UAAU;QAC5B,OAAO;IACT;IAEA,MAAM,EAAEE,QAAQ,EAAE,GAAGC,CAAAA,GAAAA,WAAAA,SAAS,EAACH;IAC/B,OAAOE,aAAaD,UAAUC,SAASE,UAAU,CAACH,SAAS;AAC7D","ignoreList":[0]}}, + {"offset": {"line": 9678, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/add-locale.ts"],"sourcesContent":["import { addPathPrefix } from './add-path-prefix'\nimport { pathHasPrefix } from './path-has-prefix'\n\n/**\n * For a given path and a locale, if the locale is given, it will prefix the\n * locale. The path shouldn't be an API path. If a default locale is given the\n * prefix will be omitted if the locale is already the default locale.\n */\nexport function addLocale(\n path: string,\n locale?: string | false,\n defaultLocale?: string,\n ignorePrefix?: boolean\n) {\n // If no locale was given or the locale is the default locale, we don't need\n // to prefix the path.\n if (!locale || locale === defaultLocale) return path\n\n const lower = path.toLowerCase()\n\n // If the path is an API path or the path already has the locale prefix, we\n // don't need to prefix the path.\n if (!ignorePrefix) {\n if (pathHasPrefix(lower, '/api')) return path\n if (pathHasPrefix(lower, `/${locale.toLowerCase()}`)) return path\n }\n\n // Add the locale prefix to the path.\n return addPathPrefix(path, `/${locale}`)\n}\n"],"names":["addLocale","path","locale","defaultLocale","ignorePrefix","lower","toLowerCase","pathHasPrefix","addPathPrefix"],"mappings":";;;+BAQgBA,aAAAA;;;eAAAA;;;+BARc;+BACA;AAOvB,SAASA,UACdC,IAAY,EACZC,MAAuB,EACvBC,aAAsB,EACtBC,YAAsB;IAEtB,4EAA4E;IAC5E,sBAAsB;IACtB,IAAI,CAACF,UAAUA,WAAWC,eAAe,OAAOF;IAEhD,MAAMI,QAAQJ,KAAKK,WAAW;IAE9B,2EAA2E;IAC3E,iCAAiC;IACjC,IAAI,CAACF,cAAc;QACjB,IAAIG,CAAAA,GAAAA,eAAAA,aAAa,EAACF,OAAO,SAAS,OAAOJ;QACzC,IAAIM,CAAAA,GAAAA,eAAAA,aAAa,EAACF,OAAO,CAAC,CAAC,EAAEH,OAAOI,WAAW,IAAI,GAAG,OAAOL;IAC/D;IAEA,qCAAqC;IACrC,OAAOO,CAAAA,GAAAA,eAAAA,aAAa,EAACP,MAAM,CAAC,CAAC,EAAEC,QAAQ;AACzC","ignoreList":[0]}}, + {"offset": {"line": 9707, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/format-next-pathname-info.ts"],"sourcesContent":["import type { NextPathnameInfo } from './get-next-pathname-info'\nimport { removeTrailingSlash } from './remove-trailing-slash'\nimport { addPathPrefix } from './add-path-prefix'\nimport { addPathSuffix } from './add-path-suffix'\nimport { addLocale } from './add-locale'\n\ninterface ExtendedInfo extends NextPathnameInfo {\n defaultLocale?: string\n ignorePrefix?: boolean\n}\n\nexport function formatNextPathnameInfo(info: ExtendedInfo) {\n let pathname = addLocale(\n info.pathname,\n info.locale,\n info.buildId ? undefined : info.defaultLocale,\n info.ignorePrefix\n )\n\n if (info.buildId || !info.trailingSlash) {\n pathname = removeTrailingSlash(pathname)\n }\n\n if (info.buildId) {\n pathname = addPathSuffix(\n addPathPrefix(pathname, `/_next/data/${info.buildId}`),\n info.pathname === '/' ? 'index.json' : '.json'\n )\n }\n\n pathname = addPathPrefix(pathname, info.basePath)\n return !info.buildId && info.trailingSlash\n ? !pathname.endsWith('/')\n ? addPathSuffix(pathname, '/')\n : pathname\n : removeTrailingSlash(pathname)\n}\n"],"names":["formatNextPathnameInfo","info","pathname","addLocale","locale","buildId","undefined","defaultLocale","ignorePrefix","trailingSlash","removeTrailingSlash","addPathSuffix","addPathPrefix","basePath","endsWith"],"mappings":";;;+BAWgBA,0BAAAA;;;eAAAA;;;qCAVoB;+BACN;+BACA;2BACJ;AAOnB,SAASA,uBAAuBC,IAAkB;IACvD,IAAIC,WAAWC,CAAAA,GAAAA,WAAAA,SAAS,EACtBF,KAAKC,QAAQ,EACbD,KAAKG,MAAM,EACXH,KAAKI,OAAO,GAAGC,YAAYL,KAAKM,aAAa,EAC7CN,KAAKO,YAAY;IAGnB,IAAIP,KAAKI,OAAO,IAAI,CAACJ,KAAKQ,aAAa,EAAE;QACvCP,WAAWQ,CAAAA,GAAAA,qBAAAA,mBAAmB,EAACR;IACjC;IAEA,IAAID,KAAKI,OAAO,EAAE;QAChBH,WAAWS,CAAAA,GAAAA,eAAAA,aAAa,EACtBC,CAAAA,GAAAA,eAAAA,aAAa,EAACV,UAAU,CAAC,YAAY,EAAED,KAAKI,OAAO,EAAE,GACrDJ,KAAKC,QAAQ,KAAK,MAAM,eAAe;IAE3C;IAEAA,WAAWU,CAAAA,GAAAA,eAAAA,aAAa,EAACV,UAAUD,KAAKY,QAAQ;IAChD,OAAO,CAACZ,KAAKI,OAAO,IAAIJ,KAAKQ,aAAa,GACtC,CAACP,SAASY,QAAQ,CAAC,OACjBH,CAAAA,GAAAA,eAAAA,aAAa,EAACT,UAAU,OACxBA,WACFQ,CAAAA,GAAAA,qBAAAA,mBAAmB,EAACR;AAC1B","ignoreList":[0]}}, + {"offset": {"line": 9735, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/get-hostname.ts"],"sourcesContent":["import type { OutgoingHttpHeaders } from 'http'\n\n/**\n * Takes an object with a hostname property (like a parsed URL) and some\n * headers that may contain Host and returns the preferred hostname.\n * @param parsed An object containing a hostname property.\n * @param headers A dictionary with headers containing a `host`.\n */\nexport function getHostname(\n parsed: { hostname?: string | null },\n headers?: OutgoingHttpHeaders\n): string | undefined {\n // Get the hostname from the headers if it exists, otherwise use the parsed\n // hostname.\n let hostname: string\n if (headers?.host && !Array.isArray(headers.host)) {\n hostname = headers.host.toString().split(':', 1)[0]\n } else if (parsed.hostname) {\n hostname = parsed.hostname\n } else return\n\n return hostname.toLowerCase()\n}\n"],"names":["getHostname","parsed","headers","hostname","host","Array","isArray","toString","split","toLowerCase"],"mappings":";;;+BAQgBA,eAAAA;;;eAAAA;;;AAAT,SAASA,YACdC,MAAoC,EACpCC,OAA6B;IAE7B,2EAA2E;IAC3E,YAAY;IACZ,IAAIC;IACJ,IAAID,SAASE,QAAQ,CAACC,MAAMC,OAAO,CAACJ,QAAQE,IAAI,GAAG;QACjDD,WAAWD,QAAQE,IAAI,CAACG,QAAQ,GAAGC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE;IACrD,OAAO,IAAIP,OAAOE,QAAQ,EAAE;QAC1BA,WAAWF,OAAOE,QAAQ;IAC5B,OAAO;IAEP,OAAOA,SAASM,WAAW;AAC7B","ignoreList":[0]}}, + {"offset": {"line": 9759, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/i18n/normalize-locale-path.ts"],"sourcesContent":["export interface PathLocale {\n detectedLocale?: string\n pathname: string\n}\n\n/**\n * A cache of lowercased locales for each list of locales. This is stored as a\n * WeakMap so if the locales are garbage collected, the cache entry will be\n * removed as well.\n */\nconst cache = new WeakMap()\n\n/**\n * For a pathname that may include a locale from a list of locales, it\n * removes the locale from the pathname returning it alongside with the\n * detected locale.\n *\n * @param pathname A pathname that may include a locale.\n * @param locales A list of locales.\n * @returns The detected locale and pathname without locale\n */\nexport function normalizeLocalePath(\n pathname: string,\n locales?: readonly string[]\n): PathLocale {\n // If locales is undefined, return the pathname as is.\n if (!locales) return { pathname }\n\n // Get the cached lowercased locales or create a new cache entry.\n let lowercasedLocales = cache.get(locales)\n if (!lowercasedLocales) {\n lowercasedLocales = locales.map((locale) => locale.toLowerCase())\n cache.set(locales, lowercasedLocales)\n }\n\n let detectedLocale: string | undefined\n\n // The first segment will be empty, because it has a leading `/`. If\n // there is no further segment, there is no locale (or it's the default).\n const segments = pathname.split('/', 2)\n\n // If there's no second segment (ie, the pathname is just `/`), there's no\n // locale.\n if (!segments[1]) return { pathname }\n\n // The second segment will contain the locale part if any.\n const segment = segments[1].toLowerCase()\n\n // See if the segment matches one of the locales. If it doesn't, there is\n // no locale (or it's the default).\n const index = lowercasedLocales.indexOf(segment)\n if (index < 0) return { pathname }\n\n // Return the case-sensitive locale.\n detectedLocale = locales[index]\n\n // Remove the `/${locale}` part of the pathname.\n pathname = pathname.slice(detectedLocale.length + 1) || '/'\n\n return { pathname, detectedLocale }\n}\n"],"names":["normalizeLocalePath","cache","WeakMap","pathname","locales","lowercasedLocales","get","map","locale","toLowerCase","set","detectedLocale","segments","split","segment","index","indexOf","slice","length"],"mappings":";;;+BAqBgBA,uBAAAA;;;eAAAA;;;AAhBhB;;;;CAIC,GACD,MAAMC,QAAQ,IAAIC;AAWX,SAASF,oBACdG,QAAgB,EAChBC,OAA2B;IAE3B,sDAAsD;IACtD,IAAI,CAACA,SAAS,OAAO;QAAED;IAAS;IAEhC,iEAAiE;IACjE,IAAIE,oBAAoBJ,MAAMK,GAAG,CAACF;IAClC,IAAI,CAACC,mBAAmB;QACtBA,oBAAoBD,QAAQG,GAAG,CAAC,CAACC,SAAWA,OAAOC,WAAW;QAC9DR,MAAMS,GAAG,CAACN,SAASC;IACrB;IAEA,IAAIM;IAEJ,oEAAoE;IACpE,yEAAyE;IACzE,MAAMC,WAAWT,SAASU,KAAK,CAAC,KAAK;IAErC,0EAA0E;IAC1E,UAAU;IACV,IAAI,CAACD,QAAQ,CAAC,EAAE,EAAE,OAAO;QAAET;IAAS;IAEpC,0DAA0D;IAC1D,MAAMW,UAAUF,QAAQ,CAAC,EAAE,CAACH,WAAW;IAEvC,yEAAyE;IACzE,mCAAmC;IACnC,MAAMM,QAAQV,kBAAkBW,OAAO,CAACF;IACxC,IAAIC,QAAQ,GAAG,OAAO;QAAEZ;IAAS;IAEjC,oCAAoC;IACpCQ,iBAAiBP,OAAO,CAACW,MAAM;IAE/B,gDAAgD;IAChDZ,WAAWA,SAASc,KAAK,CAACN,eAAeO,MAAM,GAAG,MAAM;IAExD,OAAO;QAAEf;QAAUQ;IAAe;AACpC","ignoreList":[0]}}, + {"offset": {"line": 9814, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/remove-path-prefix.ts"],"sourcesContent":["import { pathHasPrefix } from './path-has-prefix'\n\n/**\n * Given a path and a prefix it will remove the prefix when it exists in the\n * given path. It ensures it matches exactly without containing extra chars\n * and if the prefix is not there it will be noop.\n *\n * @param path The path to remove the prefix from.\n * @param prefix The prefix to be removed.\n */\nexport function removePathPrefix(path: string, prefix: string): string {\n // If the path doesn't start with the prefix we can return it as is. This\n // protects us from situations where the prefix is a substring of the path\n // prefix such as:\n //\n // For prefix: /blog\n //\n // /blog -> true\n // /blog/ -> true\n // /blog/1 -> true\n // /blogging -> false\n // /blogging/ -> false\n // /blogging/1 -> false\n if (!pathHasPrefix(path, prefix)) {\n return path\n }\n\n // Remove the prefix from the path via slicing.\n const withoutPrefix = path.slice(prefix.length)\n\n // If the path without the prefix starts with a `/` we can return it as is.\n if (withoutPrefix.startsWith('/')) {\n return withoutPrefix\n }\n\n // If the path without the prefix doesn't start with a `/` we need to add it\n // back to the path to make sure it's a valid path.\n return `/${withoutPrefix}`\n}\n"],"names":["removePathPrefix","path","prefix","pathHasPrefix","withoutPrefix","slice","length","startsWith"],"mappings":";;;+BAUgBA,oBAAAA;;;eAAAA;;;+BAVc;AAUvB,SAASA,iBAAiBC,IAAY,EAAEC,MAAc;IAC3D,yEAAyE;IACzE,0EAA0E;IAC1E,kBAAkB;IAClB,EAAE;IACF,oBAAoB;IACpB,EAAE;IACF,kBAAkB;IAClB,mBAAmB;IACnB,oBAAoB;IACpB,uBAAuB;IACvB,wBAAwB;IACxB,yBAAyB;IACzB,IAAI,CAACC,CAAAA,GAAAA,eAAAA,aAAa,EAACF,MAAMC,SAAS;QAChC,OAAOD;IACT;IAEA,+CAA+C;IAC/C,MAAMG,gBAAgBH,KAAKI,KAAK,CAACH,OAAOI,MAAM;IAE9C,2EAA2E;IAC3E,IAAIF,cAAcG,UAAU,CAAC,MAAM;QACjC,OAAOH;IACT;IAEA,4EAA4E;IAC5E,mDAAmD;IACnD,OAAO,CAAC,CAAC,EAAEA,eAAe;AAC5B","ignoreList":[0]}}, + {"offset": {"line": 9854, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/router/utils/get-next-pathname-info.ts"],"sourcesContent":["import { normalizeLocalePath } from '../../i18n/normalize-locale-path'\nimport { removePathPrefix } from './remove-path-prefix'\nimport { pathHasPrefix } from './path-has-prefix'\nimport type { I18NProvider } from '../../../../server/lib/i18n-provider'\n\nexport interface NextPathnameInfo {\n /**\n * The base path in case the pathname included it.\n */\n basePath?: string\n /**\n * The buildId for when the parsed URL is a data URL. Parsing it can be\n * disabled with the `parseData` option.\n */\n buildId?: string\n /**\n * If there was a locale in the pathname, this will hold its value.\n */\n locale?: string\n /**\n * The processed pathname without a base path, locale, or data URL elements\n * when parsing it is enabled.\n */\n pathname: string\n /**\n * A boolean telling if the pathname had a trailingSlash. This can be only\n * true if trailingSlash is enabled.\n */\n trailingSlash?: boolean\n}\n\ninterface Options {\n /**\n * When passed to true, this function will also parse Nextjs data URLs.\n */\n parseData?: boolean\n /**\n * A partial of the Next.js configuration to parse the URL.\n */\n nextConfig?: {\n basePath?: string\n i18n?: { locales?: readonly string[] } | null\n trailingSlash?: boolean\n }\n\n /**\n * If provided, this normalizer will be used to detect the locale instead of\n * the default locale detection.\n */\n i18nProvider?: I18NProvider\n}\n\nexport function getNextPathnameInfo(\n pathname: string,\n options: Options\n): NextPathnameInfo {\n const { basePath, i18n, trailingSlash } = options.nextConfig ?? {}\n const info: NextPathnameInfo = {\n pathname,\n trailingSlash: pathname !== '/' ? pathname.endsWith('/') : trailingSlash,\n }\n\n if (basePath && pathHasPrefix(info.pathname, basePath)) {\n info.pathname = removePathPrefix(info.pathname, basePath)\n info.basePath = basePath\n }\n let pathnameNoDataPrefix = info.pathname\n\n if (\n info.pathname.startsWith('/_next/data/') &&\n info.pathname.endsWith('.json')\n ) {\n const paths = info.pathname\n .replace(/^\\/_next\\/data\\//, '')\n .replace(/\\.json$/, '')\n .split('/')\n\n const buildId = paths[0]\n info.buildId = buildId\n pathnameNoDataPrefix =\n paths[1] !== 'index' ? `/${paths.slice(1).join('/')}` : '/'\n\n // update pathname with normalized if enabled although\n // we use normalized to populate locale info still\n if (options.parseData === true) {\n info.pathname = pathnameNoDataPrefix\n }\n }\n\n // If provided, use the locale route normalizer to detect the locale instead\n // of the function below.\n if (i18n) {\n let result = options.i18nProvider\n ? options.i18nProvider.analyze(info.pathname)\n : normalizeLocalePath(info.pathname, i18n.locales)\n\n info.locale = result.detectedLocale\n info.pathname = result.pathname ?? info.pathname\n\n if (!result.detectedLocale && info.buildId) {\n result = options.i18nProvider\n ? options.i18nProvider.analyze(pathnameNoDataPrefix)\n : normalizeLocalePath(pathnameNoDataPrefix, i18n.locales)\n\n if (result.detectedLocale) {\n info.locale = result.detectedLocale\n }\n }\n }\n return info\n}\n"],"names":["getNextPathnameInfo","pathname","options","basePath","i18n","trailingSlash","nextConfig","info","endsWith","pathHasPrefix","removePathPrefix","pathnameNoDataPrefix","startsWith","paths","replace","split","buildId","slice","join","parseData","result","i18nProvider","analyze","normalizeLocalePath","locales","locale","detectedLocale"],"mappings":";;;+BAoDgBA,uBAAAA;;;eAAAA;;;qCApDoB;kCACH;+BACH;AAkDvB,SAASA,oBACdC,QAAgB,EAChBC,OAAgB;IAEhB,MAAM,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,aAAa,EAAE,GAAGH,QAAQI,UAAU,IAAI,CAAC;IACjE,MAAMC,OAAyB;QAC7BN;QACAI,eAAeJ,aAAa,MAAMA,SAASO,QAAQ,CAAC,OAAOH;IAC7D;IAEA,IAAIF,YAAYM,CAAAA,GAAAA,eAAAA,aAAa,EAACF,KAAKN,QAAQ,EAAEE,WAAW;QACtDI,KAAKN,QAAQ,GAAGS,CAAAA,GAAAA,kBAAAA,gBAAgB,EAACH,KAAKN,QAAQ,EAAEE;QAChDI,KAAKJ,QAAQ,GAAGA;IAClB;IACA,IAAIQ,uBAAuBJ,KAAKN,QAAQ;IAExC,IACEM,KAAKN,QAAQ,CAACW,UAAU,CAAC,mBACzBL,KAAKN,QAAQ,CAACO,QAAQ,CAAC,UACvB;QACA,MAAMK,QAAQN,KAAKN,QAAQ,CACxBa,OAAO,CAAC,oBAAoB,IAC5BA,OAAO,CAAC,WAAW,IACnBC,KAAK,CAAC;QAET,MAAMC,UAAUH,KAAK,CAAC,EAAE;QACxBN,KAAKS,OAAO,GAAGA;QACfL,uBACEE,KAAK,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,EAAEA,MAAMI,KAAK,CAAC,GAAGC,IAAI,CAAC,MAAM,GAAG;QAE1D,sDAAsD;QACtD,kDAAkD;QAClD,IAAIhB,QAAQiB,SAAS,KAAK,MAAM;YAC9BZ,KAAKN,QAAQ,GAAGU;QAClB;IACF;IAEA,4EAA4E;IAC5E,yBAAyB;IACzB,IAAIP,MAAM;QACR,IAAIgB,SAASlB,QAAQmB,YAAY,GAC7BnB,QAAQmB,YAAY,CAACC,OAAO,CAACf,KAAKN,QAAQ,IAC1CsB,CAAAA,GAAAA,qBAAAA,mBAAmB,EAAChB,KAAKN,QAAQ,EAAEG,KAAKoB,OAAO;QAEnDjB,KAAKkB,MAAM,GAAGL,OAAOM,cAAc;QACnCnB,KAAKN,QAAQ,GAAGmB,OAAOnB,QAAQ,IAAIM,KAAKN,QAAQ;QAEhD,IAAI,CAACmB,OAAOM,cAAc,IAAInB,KAAKS,OAAO,EAAE;YAC1CI,SAASlB,QAAQmB,YAAY,GACzBnB,QAAQmB,YAAY,CAACC,OAAO,CAACX,wBAC7BY,CAAAA,GAAAA,qBAAAA,mBAAmB,EAACZ,sBAAsBP,KAAKoB,OAAO;YAE1D,IAAIJ,OAAOM,cAAc,EAAE;gBACzBnB,KAAKkB,MAAM,GAAGL,OAAOM,cAAc;YACrC;QACF;IACF;IACA,OAAOnB;AACT","ignoreList":[0]}}, + {"offset": {"line": 9907, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/next-url.ts"],"sourcesContent":["import type { OutgoingHttpHeaders } from 'http'\nimport type { DomainLocale, I18NConfig } from '../config-shared'\nimport type { I18NProvider } from '../lib/i18n-provider'\n\nimport { detectDomainLocale } from '../../shared/lib/i18n/detect-domain-locale'\nimport { formatNextPathnameInfo } from '../../shared/lib/router/utils/format-next-pathname-info'\nimport { getHostname } from '../../shared/lib/get-hostname'\nimport { getNextPathnameInfo } from '../../shared/lib/router/utils/get-next-pathname-info'\n\ninterface Options {\n base?: string | URL\n headers?: OutgoingHttpHeaders\n forceLocale?: boolean\n nextConfig?: {\n basePath?: string\n i18n?: I18NConfig | null\n trailingSlash?: boolean\n }\n i18nProvider?: I18NProvider\n}\n\nconst REGEX_LOCALHOST_HOSTNAME =\n /(?!^https?:\\/\\/)(127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\\[::1\\]|localhost)/\n\nfunction parseURL(url: string | URL, base?: string | URL) {\n return new URL(\n String(url).replace(REGEX_LOCALHOST_HOSTNAME, 'localhost'),\n base && String(base).replace(REGEX_LOCALHOST_HOSTNAME, 'localhost')\n )\n}\n\nconst Internal = Symbol('NextURLInternal')\n\nexport class NextURL {\n private [Internal]: {\n basePath: string\n buildId?: string\n flightSearchParameters?: Record\n defaultLocale?: string\n domainLocale?: DomainLocale\n locale?: string\n options: Options\n trailingSlash?: boolean\n url: URL\n }\n\n constructor(input: string | URL, base?: string | URL, opts?: Options)\n constructor(input: string | URL, opts?: Options)\n constructor(\n input: string | URL,\n baseOrOpts?: string | URL | Options,\n opts?: Options\n ) {\n let base: undefined | string | URL\n let options: Options\n\n if (\n (typeof baseOrOpts === 'object' && 'pathname' in baseOrOpts) ||\n typeof baseOrOpts === 'string'\n ) {\n base = baseOrOpts\n options = opts || {}\n } else {\n options = opts || baseOrOpts || {}\n }\n\n this[Internal] = {\n url: parseURL(input, base ?? options.base),\n options: options,\n basePath: '',\n }\n\n this.analyze()\n }\n\n private analyze() {\n const info = getNextPathnameInfo(this[Internal].url.pathname, {\n nextConfig: this[Internal].options.nextConfig,\n parseData: !process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE,\n i18nProvider: this[Internal].options.i18nProvider,\n })\n\n const hostname = getHostname(\n this[Internal].url,\n this[Internal].options.headers\n )\n this[Internal].domainLocale = this[Internal].options.i18nProvider\n ? this[Internal].options.i18nProvider.detectDomainLocale(hostname)\n : detectDomainLocale(\n this[Internal].options.nextConfig?.i18n?.domains,\n hostname\n )\n\n const defaultLocale =\n this[Internal].domainLocale?.defaultLocale ||\n this[Internal].options.nextConfig?.i18n?.defaultLocale\n\n this[Internal].url.pathname = info.pathname\n this[Internal].defaultLocale = defaultLocale\n this[Internal].basePath = info.basePath ?? ''\n this[Internal].buildId = info.buildId\n this[Internal].locale = info.locale ?? defaultLocale\n this[Internal].trailingSlash = info.trailingSlash\n }\n\n private formatPathname() {\n return formatNextPathnameInfo({\n basePath: this[Internal].basePath,\n buildId: this[Internal].buildId,\n defaultLocale: !this[Internal].options.forceLocale\n ? this[Internal].defaultLocale\n : undefined,\n locale: this[Internal].locale,\n pathname: this[Internal].url.pathname,\n trailingSlash: this[Internal].trailingSlash,\n })\n }\n\n private formatSearch() {\n return this[Internal].url.search\n }\n\n public get buildId() {\n return this[Internal].buildId\n }\n\n public set buildId(buildId: string | undefined) {\n this[Internal].buildId = buildId\n }\n\n public get locale() {\n return this[Internal].locale ?? ''\n }\n\n public set locale(locale: string) {\n if (\n !this[Internal].locale ||\n !this[Internal].options.nextConfig?.i18n?.locales.includes(locale)\n ) {\n throw new TypeError(\n `The NextURL configuration includes no locale \"${locale}\"`\n )\n }\n\n this[Internal].locale = locale\n }\n\n get defaultLocale() {\n return this[Internal].defaultLocale\n }\n\n get domainLocale() {\n return this[Internal].domainLocale\n }\n\n get searchParams() {\n return this[Internal].url.searchParams\n }\n\n get host() {\n return this[Internal].url.host\n }\n\n set host(value: string) {\n this[Internal].url.host = value\n }\n\n get hostname() {\n return this[Internal].url.hostname\n }\n\n set hostname(value: string) {\n this[Internal].url.hostname = value\n }\n\n get port() {\n return this[Internal].url.port\n }\n\n set port(value: string) {\n this[Internal].url.port = value\n }\n\n get protocol() {\n return this[Internal].url.protocol\n }\n\n set protocol(value: string) {\n this[Internal].url.protocol = value\n }\n\n get href() {\n const pathname = this.formatPathname()\n const search = this.formatSearch()\n return `${this.protocol}//${this.host}${pathname}${search}${this.hash}`\n }\n\n set href(url: string) {\n this[Internal].url = parseURL(url)\n this.analyze()\n }\n\n get origin() {\n return this[Internal].url.origin\n }\n\n get pathname() {\n return this[Internal].url.pathname\n }\n\n set pathname(value: string) {\n this[Internal].url.pathname = value\n }\n\n get hash() {\n return this[Internal].url.hash\n }\n\n set hash(value: string) {\n this[Internal].url.hash = value\n }\n\n get search() {\n return this[Internal].url.search\n }\n\n set search(value: string) {\n this[Internal].url.search = value\n }\n\n get password() {\n return this[Internal].url.password\n }\n\n set password(value: string) {\n this[Internal].url.password = value\n }\n\n get username() {\n return this[Internal].url.username\n }\n\n set username(value: string) {\n this[Internal].url.username = value\n }\n\n get basePath() {\n return this[Internal].basePath\n }\n\n set basePath(value: string) {\n this[Internal].basePath = value.startsWith('/') ? value : `/${value}`\n }\n\n toString() {\n return this.href\n }\n\n toJSON() {\n return this.href\n }\n\n [Symbol.for('edge-runtime.inspect.custom')]() {\n return {\n href: this.href,\n origin: this.origin,\n protocol: this.protocol,\n username: this.username,\n password: this.password,\n host: this.host,\n hostname: this.hostname,\n port: this.port,\n pathname: this.pathname,\n search: this.search,\n searchParams: this.searchParams,\n hash: this.hash,\n }\n }\n\n clone() {\n return new NextURL(String(this), this[Internal].options)\n }\n}\n"],"names":["NextURL","REGEX_LOCALHOST_HOSTNAME","parseURL","url","base","URL","String","replace","Internal","Symbol","constructor","input","baseOrOpts","opts","options","basePath","analyze","info","getNextPathnameInfo","pathname","nextConfig","parseData","process","env","__NEXT_NO_MIDDLEWARE_URL_NORMALIZE","i18nProvider","hostname","getHostname","headers","domainLocale","detectDomainLocale","i18n","domains","defaultLocale","buildId","locale","trailingSlash","formatPathname","formatNextPathnameInfo","forceLocale","undefined","formatSearch","search","locales","includes","TypeError","searchParams","host","value","port","protocol","href","hash","origin","password","username","startsWith","toString","toJSON","for","clone"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 10103, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/lib/constants.ts"],"sourcesContent":["import type { ServerRuntime } from '../types'\n\nexport const TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain'\nexport const HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8'\nexport const JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8'\nexport const NEXT_QUERY_PARAM_PREFIX = 'nxtP'\nexport const NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI'\n\nexport const MATCHED_PATH_HEADER = 'x-matched-path'\nexport const PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate'\nexport const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER =\n 'x-prerender-revalidate-if-generated'\n\nexport const RSC_SEGMENTS_DIR_SUFFIX = '.segments'\nexport const RSC_SEGMENT_SUFFIX = '.segment.rsc'\nexport const RSC_SUFFIX = '.rsc'\nexport const ACTION_SUFFIX = '.action'\nexport const NEXT_DATA_SUFFIX = '.json'\nexport const NEXT_META_SUFFIX = '.meta'\nexport const NEXT_BODY_SUFFIX = '.body'\n\nexport const NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags'\nexport const NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags'\nexport const NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER =\n 'x-next-revalidate-tag-token'\n\nexport const NEXT_RESUME_HEADER = 'next-resume'\n\n// if these change make sure we update the related\n// documentation as well\nexport const NEXT_CACHE_TAG_MAX_ITEMS = 128\nexport const NEXT_CACHE_TAG_MAX_LENGTH = 256\nexport const NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024\nexport const NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_'\n\n// in seconds\nexport const CACHE_ONE_YEAR = 31536000\n\n// in seconds, represents revalidate=false. I.e. never revaliate.\n// We use this value since it can be represented as a V8 SMI for optimal performance.\n// It can also be serialized as JSON if it ever leaks accidentally as an actual value.\nexport const INFINITE_CACHE = 0xfffffffe\n\n// Patterns to detect middleware files\nexport const MIDDLEWARE_FILENAME = 'middleware'\nexport const MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`\n\n// Patterns to detect proxy files (replacement for middleware)\nexport const PROXY_FILENAME = 'proxy'\nexport const PROXY_LOCATION_REGEXP = `(?:src/)?${PROXY_FILENAME}`\n\n// Pattern to detect instrumentation hooks file\nexport const INSTRUMENTATION_HOOK_FILENAME = 'instrumentation'\n\n// Because on Windows absolute paths in the generated code can break because of numbers, eg 1 in the path,\n// we have to use a private alias\nexport const PAGES_DIR_ALIAS = 'private-next-pages'\nexport const DOT_NEXT_ALIAS = 'private-dot-next'\nexport const ROOT_DIR_ALIAS = 'private-next-root-dir'\nexport const APP_DIR_ALIAS = 'private-next-app-dir'\nexport const RSC_MOD_REF_PROXY_ALIAS = 'private-next-rsc-mod-ref-proxy'\nexport const RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate'\nexport const RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference'\nexport const RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper'\nexport const RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS =\n 'private-next-rsc-track-dynamic-import'\nexport const RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption'\nexport const RSC_ACTION_CLIENT_WRAPPER_ALIAS =\n 'private-next-rsc-action-client-wrapper'\n\nexport const PUBLIC_DIR_MIDDLEWARE_CONFLICT = `You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`\n\nexport const SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`\n\nexport const SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`\n\nexport const SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`\n\nexport const STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`\n\nexport const SERVER_PROPS_EXPORT_ERROR = `pages with \\`getServerSideProps\\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`\n\nexport const GSP_NO_RETURNED_VALUE =\n 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?'\nexport const GSSP_NO_RETURNED_VALUE =\n 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?'\n\nexport const UNSTABLE_REVALIDATE_RENAME_ERROR =\n 'The `unstable_revalidate` property is available for general use.\\n' +\n 'Please use `revalidate` instead.'\n\nexport const GSSP_COMPONENT_MEMBER_ERROR = `can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`\n\nexport const NON_STANDARD_NODE_ENV = `You are using a non-standard \"NODE_ENV\" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`\n\nexport const SSG_FALLBACK_EXPORT_ERROR = `Pages with \\`fallback\\` enabled in \\`getStaticPaths\\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`\n\nexport const ESLINT_DEFAULT_DIRS = ['app', 'pages', 'components', 'lib', 'src']\n\nexport const SERVER_RUNTIME: Record = {\n edge: 'edge',\n experimentalEdge: 'experimental-edge',\n nodejs: 'nodejs',\n}\n\nexport const WEB_SOCKET_MAX_RECONNECTIONS = 12\n\n/**\n * The names of the webpack layers. These layers are the primitives for the\n * webpack chunks.\n */\nconst WEBPACK_LAYERS_NAMES = {\n /**\n * The layer for the shared code between the client and server bundles.\n */\n shared: 'shared',\n /**\n * The layer for server-only runtime and picking up `react-server` export conditions.\n * Including app router RSC pages and app router custom routes and metadata routes.\n */\n reactServerComponents: 'rsc',\n /**\n * Server Side Rendering layer for app (ssr).\n */\n serverSideRendering: 'ssr',\n /**\n * The browser client bundle layer for actions.\n */\n actionBrowser: 'action-browser',\n /**\n * The Node.js bundle layer for the API routes.\n */\n apiNode: 'api-node',\n /**\n * The Edge Lite bundle layer for the API routes.\n */\n apiEdge: 'api-edge',\n /**\n * The layer for the middleware code.\n */\n middleware: 'middleware',\n /**\n * The layer for the instrumentation hooks.\n */\n instrument: 'instrument',\n /**\n * The layer for assets on the edge.\n */\n edgeAsset: 'edge-asset',\n /**\n * The browser client bundle layer for App directory.\n */\n appPagesBrowser: 'app-pages-browser',\n /**\n * The browser client bundle layer for Pages directory.\n */\n pagesDirBrowser: 'pages-dir-browser',\n /**\n * The Edge Lite bundle layer for Pages directory.\n */\n pagesDirEdge: 'pages-dir-edge',\n /**\n * The Node.js bundle layer for Pages directory.\n */\n pagesDirNode: 'pages-dir-node',\n} as const\n\nexport type WebpackLayerName =\n (typeof WEBPACK_LAYERS_NAMES)[keyof typeof WEBPACK_LAYERS_NAMES]\n\nconst WEBPACK_LAYERS = {\n ...WEBPACK_LAYERS_NAMES,\n GROUP: {\n builtinReact: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n ],\n serverOnly: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware,\n ],\n neutralTarget: [\n // pages api\n WEBPACK_LAYERS_NAMES.apiNode,\n WEBPACK_LAYERS_NAMES.apiEdge,\n ],\n clientOnly: [\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n ],\n bundled: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.shared,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware,\n ],\n appPages: [\n // app router pages and layouts\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n ],\n },\n}\n\nconst WEBPACK_RESOURCE_QUERIES = {\n edgeSSREntry: '__next_edge_ssr_entry__',\n metadata: '__next_metadata__',\n metadataRoute: '__next_metadata_route__',\n metadataImageMeta: '__next_metadata_image_meta__',\n}\n\nexport { WEBPACK_LAYERS, WEBPACK_RESOURCE_QUERIES }\n"],"names":["ACTION_SUFFIX","APP_DIR_ALIAS","CACHE_ONE_YEAR","DOT_NEXT_ALIAS","ESLINT_DEFAULT_DIRS","GSP_NO_RETURNED_VALUE","GSSP_COMPONENT_MEMBER_ERROR","GSSP_NO_RETURNED_VALUE","HTML_CONTENT_TYPE_HEADER","INFINITE_CACHE","INSTRUMENTATION_HOOK_FILENAME","JSON_CONTENT_TYPE_HEADER","MATCHED_PATH_HEADER","MIDDLEWARE_FILENAME","MIDDLEWARE_LOCATION_REGEXP","NEXT_BODY_SUFFIX","NEXT_CACHE_IMPLICIT_TAG_ID","NEXT_CACHE_REVALIDATED_TAGS_HEADER","NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER","NEXT_CACHE_SOFT_TAG_MAX_LENGTH","NEXT_CACHE_TAGS_HEADER","NEXT_CACHE_TAG_MAX_ITEMS","NEXT_CACHE_TAG_MAX_LENGTH","NEXT_DATA_SUFFIX","NEXT_INTERCEPTION_MARKER_PREFIX","NEXT_META_SUFFIX","NEXT_QUERY_PARAM_PREFIX","NEXT_RESUME_HEADER","NON_STANDARD_NODE_ENV","PAGES_DIR_ALIAS","PRERENDER_REVALIDATE_HEADER","PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER","PROXY_FILENAME","PROXY_LOCATION_REGEXP","PUBLIC_DIR_MIDDLEWARE_CONFLICT","ROOT_DIR_ALIAS","RSC_ACTION_CLIENT_WRAPPER_ALIAS","RSC_ACTION_ENCRYPTION_ALIAS","RSC_ACTION_PROXY_ALIAS","RSC_ACTION_VALIDATE_ALIAS","RSC_CACHE_WRAPPER_ALIAS","RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS","RSC_MOD_REF_PROXY_ALIAS","RSC_SEGMENTS_DIR_SUFFIX","RSC_SEGMENT_SUFFIX","RSC_SUFFIX","SERVER_PROPS_EXPORT_ERROR","SERVER_PROPS_GET_INIT_PROPS_CONFLICT","SERVER_PROPS_SSG_CONFLICT","SERVER_RUNTIME","SSG_FALLBACK_EXPORT_ERROR","SSG_GET_INITIAL_PROPS_CONFLICT","STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR","TEXT_PLAIN_CONTENT_TYPE_HEADER","UNSTABLE_REVALIDATE_RENAME_ERROR","WEBPACK_LAYERS","WEBPACK_RESOURCE_QUERIES","WEB_SOCKET_MAX_RECONNECTIONS","edge","experimentalEdge","nodejs","WEBPACK_LAYERS_NAMES","shared","reactServerComponents","serverSideRendering","actionBrowser","apiNode","apiEdge","middleware","instrument","edgeAsset","appPagesBrowser","pagesDirBrowser","pagesDirEdge","pagesDirNode","GROUP","builtinReact","serverOnly","neutralTarget","clientOnly","bundled","appPages","edgeSSREntry","metadata","metadataRoute","metadataImageMeta"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 10509, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/utils.ts"],"sourcesContent":["import type { OutgoingHttpHeaders } from 'http'\nimport {\n NEXT_INTERCEPTION_MARKER_PREFIX,\n NEXT_QUERY_PARAM_PREFIX,\n} from '../../lib/constants'\n\n/**\n * Converts a Node.js IncomingHttpHeaders object to a Headers object. Any\n * headers with multiple values will be joined with a comma and space. Any\n * headers that have an undefined value will be ignored and others will be\n * coerced to strings.\n *\n * @param nodeHeaders the headers object to convert\n * @returns the converted headers object\n */\nexport function fromNodeOutgoingHttpHeaders(\n nodeHeaders: OutgoingHttpHeaders\n): Headers {\n const headers = new Headers()\n for (let [key, value] of Object.entries(nodeHeaders)) {\n const values = Array.isArray(value) ? value : [value]\n for (let v of values) {\n if (typeof v === 'undefined') continue\n if (typeof v === 'number') {\n v = v.toString()\n }\n\n headers.append(key, v)\n }\n }\n return headers\n}\n\n/*\n Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n that are within a single set-cookie field-value, such as in the Expires portion.\n This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n React Native's fetch does this for *every* header, including set-cookie.\n \n Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nexport function splitCookiesString(cookiesString: string) {\n var cookiesStrings = []\n var pos = 0\n var start\n var ch\n var lastComma\n var nextStart\n var cookiesSeparatorFound\n\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1\n }\n return pos < cookiesString.length\n }\n\n function notSpecialChar() {\n ch = cookiesString.charAt(pos)\n\n return ch !== '=' && ch !== ';' && ch !== ','\n }\n\n while (pos < cookiesString.length) {\n start = pos\n cookiesSeparatorFound = false\n\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos)\n if (ch === ',') {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos\n pos += 1\n\n skipWhitespace()\n nextStart = pos\n\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1\n }\n\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === '=') {\n // we found cookies separator\n cookiesSeparatorFound = true\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart\n cookiesStrings.push(cookiesString.substring(start, lastComma))\n start = pos\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1\n }\n } else {\n pos += 1\n }\n }\n\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length))\n }\n }\n\n return cookiesStrings\n}\n\n/**\n * Converts a Headers object to a Node.js OutgoingHttpHeaders object. This is\n * required to support the set-cookie header, which may have multiple values.\n *\n * @param headers the headers object to convert\n * @returns the converted headers object\n */\nexport function toNodeOutgoingHttpHeaders(\n headers: Headers\n): OutgoingHttpHeaders {\n const nodeHeaders: OutgoingHttpHeaders = {}\n const cookies: string[] = []\n if (headers) {\n for (const [key, value] of headers.entries()) {\n if (key.toLowerCase() === 'set-cookie') {\n // We may have gotten a comma joined string of cookies, or multiple\n // set-cookie headers. We need to merge them into one header array\n // to represent all the cookies.\n cookies.push(...splitCookiesString(value))\n nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies\n } else {\n nodeHeaders[key] = value\n }\n }\n }\n return nodeHeaders\n}\n\n/**\n * Validate the correctness of a user-provided URL.\n */\nexport function validateURL(url: string | URL): string {\n try {\n return String(new URL(String(url)))\n } catch (error: any) {\n throw new Error(\n `URL is malformed \"${String(\n url\n )}\". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`,\n { cause: error }\n )\n }\n}\n\n/**\n * Normalizes `nxtP` and `nxtI` query param values to remove the prefix.\n * This function does not mutate the input key.\n */\nexport function normalizeNextQueryParam(key: string): null | string {\n const prefixes = [NEXT_QUERY_PARAM_PREFIX, NEXT_INTERCEPTION_MARKER_PREFIX]\n for (const prefix of prefixes) {\n if (key !== prefix && key.startsWith(prefix)) {\n return key.substring(prefix.length)\n }\n }\n return null\n}\n"],"names":["fromNodeOutgoingHttpHeaders","normalizeNextQueryParam","splitCookiesString","toNodeOutgoingHttpHeaders","validateURL","nodeHeaders","headers","Headers","key","value","Object","entries","values","Array","isArray","v","toString","append","cookiesString","cookiesStrings","pos","start","ch","lastComma","nextStart","cookiesSeparatorFound","skipWhitespace","length","test","charAt","notSpecialChar","push","substring","cookies","toLowerCase","url","String","URL","error","Error","cause","prefixes","NEXT_QUERY_PARAM_PREFIX","NEXT_INTERCEPTION_MARKER_PREFIX","prefix","startsWith"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 10661, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/error.ts"],"sourcesContent":["export class PageSignatureError extends Error {\n constructor({ page }: { page: string }) {\n super(`The middleware \"${page}\" accepts an async API directly with the form:\n \n export function middleware(request, event) {\n return NextResponse.redirect('/new-location')\n }\n \n Read more: https://nextjs.org/docs/messages/middleware-new-signature\n `)\n }\n}\n\nexport class RemovedPageError extends Error {\n constructor() {\n super(`The request.page has been deprecated in favour of \\`URLPattern\\`.\n Read more: https://nextjs.org/docs/messages/middleware-request-page\n `)\n }\n}\n\nexport class RemovedUAError extends Error {\n constructor() {\n super(`The request.ua has been removed in favour of \\`userAgent\\` function.\n Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n `)\n }\n}\n"],"names":["PageSignatureError","RemovedPageError","RemovedUAError","Error","constructor","page"],"mappings":";;;;;;;;;;;;;;;IAAaA,kBAAkB,EAAA;eAAlBA;;IAaAC,gBAAgB,EAAA;eAAhBA;;IAQAC,cAAc,EAAA;eAAdA;;;AArBN,MAAMF,2BAA2BG;IACtCC,YAAY,EAAEC,IAAI,EAAoB,CAAE;QACtC,KAAK,CAAC,CAAC,gBAAgB,EAAEA,KAAK;;;;;;;EAOhC,CAAC;IACD;AACF;AAEO,MAAMJ,yBAAyBE;IACpCC,aAAc;QACZ,KAAK,CAAC,CAAC;;EAET,CAAC;IACD;AACF;AAEO,MAAMF,uBAAuBC;IAClCC,aAAc;QACZ,KAAK,CAAC,CAAC;;EAET,CAAC;IACD;AACF","ignoreList":[0]}}, + {"offset": {"line": 10716, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/spec-extension/cookies.ts"],"sourcesContent":["export {\n RequestCookies,\n ResponseCookies,\n stringifyCookie,\n} from 'next/dist/compiled/@edge-runtime/cookies'\n"],"names":["RequestCookies","ResponseCookies","stringifyCookie"],"mappings":";;;;;;;;;;;;;;;IACEA,cAAc,EAAA;eAAdA,SAAAA,cAAc;;IACdC,eAAe,EAAA;eAAfA,SAAAA,eAAe;;IACfC,eAAe,EAAA;eAAfA,SAAAA,eAAe;;;yBACV","ignoreList":[0]}}, + {"offset": {"line": 10746, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/spec-extension/request.ts"],"sourcesContent":["import type { I18NConfig } from '../../config-shared'\nimport { NextURL } from '../next-url'\nimport { toNodeOutgoingHttpHeaders, validateURL } from '../utils'\nimport { RemovedUAError, RemovedPageError } from '../error'\nimport { RequestCookies } from './cookies'\n\nexport const INTERNALS = Symbol('internal request')\n\n/**\n * This class extends the [Web `Request` API](https://developer.mozilla.org/docs/Web/API/Request) with additional convenience methods.\n *\n * Read more: [Next.js Docs: `NextRequest`](https://nextjs.org/docs/app/api-reference/functions/next-request)\n */\nexport class NextRequest extends Request {\n /** @internal */\n [INTERNALS]: {\n cookies: RequestCookies\n url: string\n nextUrl: NextURL\n }\n\n constructor(input: URL | RequestInfo, init: RequestInit = {}) {\n const url =\n typeof input !== 'string' && 'url' in input ? input.url : String(input)\n\n validateURL(url)\n\n // node Request instance requires duplex option when a body\n // is present or it errors, we don't handle this for\n // Request being passed in since it would have already\n // errored if this wasn't configured\n if (process.env.NEXT_RUNTIME !== 'edge') {\n if (init.body && init.duplex !== 'half') {\n init.duplex = 'half'\n }\n }\n\n if (input instanceof Request) super(input, init)\n else super(url, init)\n\n const nextUrl = new NextURL(url, {\n headers: toNodeOutgoingHttpHeaders(this.headers),\n nextConfig: init.nextConfig,\n })\n this[INTERNALS] = {\n cookies: new RequestCookies(this.headers),\n nextUrl,\n url: process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE\n ? url\n : nextUrl.toString(),\n }\n }\n\n [Symbol.for('edge-runtime.inspect.custom')]() {\n return {\n cookies: this.cookies,\n nextUrl: this.nextUrl,\n url: this.url,\n // rest of props come from Request\n bodyUsed: this.bodyUsed,\n cache: this.cache,\n credentials: this.credentials,\n destination: this.destination,\n headers: Object.fromEntries(this.headers),\n integrity: this.integrity,\n keepalive: this.keepalive,\n method: this.method,\n mode: this.mode,\n redirect: this.redirect,\n referrer: this.referrer,\n referrerPolicy: this.referrerPolicy,\n signal: this.signal,\n }\n }\n\n public get cookies() {\n return this[INTERNALS].cookies\n }\n\n public get nextUrl() {\n return this[INTERNALS].nextUrl\n }\n\n /**\n * @deprecated\n * `page` has been deprecated in favour of `URLPattern`.\n * Read more: https://nextjs.org/docs/messages/middleware-request-page\n */\n public get page() {\n throw new RemovedPageError()\n }\n\n /**\n * @deprecated\n * `ua` has been removed in favour of \\`userAgent\\` function.\n * Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n */\n public get ua() {\n throw new RemovedUAError()\n }\n\n public get url() {\n return this[INTERNALS].url\n }\n}\n\nexport interface RequestInit extends globalThis.RequestInit {\n nextConfig?: {\n basePath?: string\n i18n?: I18NConfig | null\n trailingSlash?: boolean\n }\n signal?: AbortSignal\n // see https://github.com/whatwg/fetch/pull/1457\n duplex?: 'half'\n}\n"],"names":["INTERNALS","NextRequest","Symbol","Request","constructor","input","init","url","String","validateURL","process","env","NEXT_RUNTIME","body","duplex","nextUrl","NextURL","headers","toNodeOutgoingHttpHeaders","nextConfig","cookies","RequestCookies","__NEXT_NO_MIDDLEWARE_URL_NORMALIZE","toString","for","bodyUsed","cache","credentials","destination","Object","fromEntries","integrity","keepalive","method","mode","redirect","referrer","referrerPolicy","signal","page","RemovedPageError","ua","RemovedUAError"],"mappings":";;;;;;;;;;;;;;IAMaA,SAAS,EAAA;eAATA;;IAOAC,WAAW,EAAA;eAAXA;;;yBAZW;uBAC+B;uBACN;yBAClB;AAExB,MAAMD,YAAYE,OAAO;AAOzB,MAAMD,oBAAoBE;IAQ/BC,YAAYC,KAAwB,EAAEC,OAAoB,CAAC,CAAC,CAAE;QAC5D,MAAMC,MACJ,OAAOF,UAAU,YAAY,SAASA,QAAQA,MAAME,GAAG,GAAGC,OAAOH;QAEnEI,CAAAA,GAAAA,OAAAA,WAAW,EAACF;QAEZ,2DAA2D;QAC3D,oDAAoD;QACpD,sDAAsD;QACtD,oCAAoC;QACpC,IAAIG,QAAQC,GAAG,CAACC,YAAY,KAAK,OAAQ;YACvC,IAAIN,KAAKO,IAAI,IAAIP,KAAKQ,MAAM,KAAK,QAAQ;gBACvCR,KAAKQ,MAAM,GAAG;YAChB;QACF;QAEA,IAAIT,iBAAiBF,SAAS,KAAK,CAACE,OAAOC;aACtC,KAAK,CAACC,KAAKD;QAEhB,MAAMS,UAAU,IAAIC,SAAAA,OAAO,CAACT,KAAK;YAC/BU,SAASC,CAAAA,GAAAA,OAAAA,yBAAyB,EAAC,IAAI,CAACD,OAAO;YAC/CE,YAAYb,KAAKa,UAAU;QAC7B;QACA,IAAI,CAACnB,UAAU,GAAG;YAChBoB,SAAS,IAAIC,SAAAA,cAAc,CAAC,IAAI,CAACJ,OAAO;YACxCF;YACAR,KAAKG,QAAQC,GAAG,CAACW,0BACbf,QAD+C,kBAE/CQ,QAAQQ,QAAQ;QACtB;IACF;IAEA,CAACrB,OAAOsB,GAAG,CAAC,+BAA+B,GAAG;QAC5C,OAAO;YACLJ,SAAS,IAAI,CAACA,OAAO;YACrBL,SAAS,IAAI,CAACA,OAAO;YACrBR,KAAK,IAAI,CAACA,GAAG;YACb,kCAAkC;YAClCkB,UAAU,IAAI,CAACA,QAAQ;YACvBC,OAAO,IAAI,CAACA,KAAK;YACjBC,aAAa,IAAI,CAACA,WAAW;YAC7BC,aAAa,IAAI,CAACA,WAAW;YAC7BX,SAASY,OAAOC,WAAW,CAAC,IAAI,CAACb,OAAO;YACxCc,WAAW,IAAI,CAACA,SAAS;YACzBC,WAAW,IAAI,CAACA,SAAS;YACzBC,QAAQ,IAAI,CAACA,MAAM;YACnBC,MAAM,IAAI,CAACA,IAAI;YACfC,UAAU,IAAI,CAACA,QAAQ;YACvBC,UAAU,IAAI,CAACA,QAAQ;YACvBC,gBAAgB,IAAI,CAACA,cAAc;YACnCC,QAAQ,IAAI,CAACA,MAAM;QACrB;IACF;IAEA,IAAWlB,UAAU;QACnB,OAAO,IAAI,CAACpB,UAAU,CAACoB,OAAO;IAChC;IAEA,IAAWL,UAAU;QACnB,OAAO,IAAI,CAACf,UAAU,CAACe,OAAO;IAChC;IAEA;;;;GAIC,GACD,IAAWwB,OAAO;QAChB,MAAM,IAAIC,OAAAA,gBAAgB;IAC5B;IAEA;;;;GAIC,GACD,IAAWC,KAAK;QACd,MAAM,IAAIC,OAAAA,cAAc;IAC1B;IAEA,IAAWnC,MAAM;QACf,OAAO,IAAI,CAACP,UAAU,CAACO,GAAG;IAC5B;AACF","ignoreList":[0]}}, + {"offset": {"line": 10846, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/spec-extension/adapters/reflect.ts"],"sourcesContent":["export class ReflectAdapter {\n static get(\n target: T,\n prop: string | symbol,\n receiver: unknown\n ): any {\n const value = Reflect.get(target, prop, receiver)\n if (typeof value === 'function') {\n return value.bind(target)\n }\n\n return value\n }\n\n static set(\n target: T,\n prop: string | symbol,\n value: any,\n receiver: any\n ): boolean {\n return Reflect.set(target, prop, value, receiver)\n }\n\n static has(target: T, prop: string | symbol): boolean {\n return Reflect.has(target, prop)\n }\n\n static deleteProperty(\n target: T,\n prop: string | symbol\n ): boolean {\n return Reflect.deleteProperty(target, prop)\n }\n}\n"],"names":["ReflectAdapter","get","target","prop","receiver","value","Reflect","bind","set","has","deleteProperty"],"mappings":";;;+BAAaA,kBAAAA;;;eAAAA;;;AAAN,MAAMA;IACX,OAAOC,IACLC,MAAS,EACTC,IAAqB,EACrBC,QAAiB,EACZ;QACL,MAAMC,QAAQC,QAAQL,GAAG,CAACC,QAAQC,MAAMC;QACxC,IAAI,OAAOC,UAAU,YAAY;YAC/B,OAAOA,MAAME,IAAI,CAACL;QACpB;QAEA,OAAOG;IACT;IAEA,OAAOG,IACLN,MAAS,EACTC,IAAqB,EACrBE,KAAU,EACVD,QAAa,EACJ;QACT,OAAOE,QAAQE,GAAG,CAACN,QAAQC,MAAME,OAAOD;IAC1C;IAEA,OAAOK,IAAsBP,MAAS,EAAEC,IAAqB,EAAW;QACtE,OAAOG,QAAQG,GAAG,CAACP,QAAQC;IAC7B;IAEA,OAAOO,eACLR,MAAS,EACTC,IAAqB,EACZ;QACT,OAAOG,QAAQI,cAAc,CAACR,QAAQC;IACxC;AACF","ignoreList":[0]}}, + {"offset": {"line": 10877, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/spec-extension/response.ts"],"sourcesContent":["import { stringifyCookie } from '../../web/spec-extension/cookies'\nimport type { I18NConfig } from '../../config-shared'\nimport { NextURL } from '../next-url'\nimport { toNodeOutgoingHttpHeaders, validateURL } from '../utils'\nimport { ReflectAdapter } from './adapters/reflect'\n\nimport { ResponseCookies } from './cookies'\n\nconst INTERNALS = Symbol('internal response')\nconst REDIRECTS = new Set([301, 302, 303, 307, 308])\n\nfunction handleMiddlewareField(\n init: MiddlewareResponseInit | undefined,\n headers: Headers\n) {\n if (init?.request?.headers) {\n if (!(init.request.headers instanceof Headers)) {\n throw new Error('request.headers must be an instance of Headers')\n }\n\n const keys = []\n for (const [key, value] of init.request.headers) {\n headers.set('x-middleware-request-' + key, value)\n keys.push(key)\n }\n\n headers.set('x-middleware-override-headers', keys.join(','))\n }\n}\n\n/**\n * This class extends the [Web `Response` API](https://developer.mozilla.org/docs/Web/API/Response) with additional convenience methods.\n *\n * Read more: [Next.js Docs: `NextResponse`](https://nextjs.org/docs/app/api-reference/functions/next-response)\n */\nexport class NextResponse extends Response {\n [INTERNALS]: {\n cookies: ResponseCookies\n url?: NextURL\n body?: Body\n }\n\n constructor(body?: BodyInit | null, init: ResponseInit = {}) {\n super(body, init)\n\n const headers = this.headers\n const cookies = new ResponseCookies(headers)\n\n const cookiesProxy = new Proxy(cookies, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'delete':\n case 'set': {\n return (...args: [string, string]) => {\n const result = Reflect.apply(target[prop], target, args)\n const newHeaders = new Headers(headers)\n\n if (result instanceof ResponseCookies) {\n headers.set(\n 'x-middleware-set-cookie',\n result\n .getAll()\n .map((cookie) => stringifyCookie(cookie))\n .join(',')\n )\n }\n\n handleMiddlewareField(init, newHeaders)\n return result\n }\n }\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n\n this[INTERNALS] = {\n cookies: cookiesProxy,\n url: init.url\n ? new NextURL(init.url, {\n headers: toNodeOutgoingHttpHeaders(headers),\n nextConfig: init.nextConfig,\n })\n : undefined,\n }\n }\n\n [Symbol.for('edge-runtime.inspect.custom')]() {\n return {\n cookies: this.cookies,\n url: this.url,\n // rest of props come from Response\n body: this.body,\n bodyUsed: this.bodyUsed,\n headers: Object.fromEntries(this.headers),\n ok: this.ok,\n redirected: this.redirected,\n status: this.status,\n statusText: this.statusText,\n type: this.type,\n }\n }\n\n public get cookies() {\n return this[INTERNALS].cookies\n }\n\n static json(\n body: JsonBody,\n init?: ResponseInit\n ): NextResponse {\n const response: Response = Response.json(body, init)\n return new NextResponse(response.body, response)\n }\n\n static redirect(url: string | NextURL | URL, init?: number | ResponseInit) {\n const status = typeof init === 'number' ? init : (init?.status ?? 307)\n if (!REDIRECTS.has(status)) {\n throw new RangeError(\n 'Failed to execute \"redirect\" on \"response\": Invalid status code'\n )\n }\n const initObj = typeof init === 'object' ? init : {}\n const headers = new Headers(initObj?.headers)\n headers.set('Location', validateURL(url))\n\n return new NextResponse(null, {\n ...initObj,\n headers,\n status,\n })\n }\n\n static rewrite(\n destination: string | NextURL | URL,\n init?: MiddlewareResponseInit\n ) {\n const headers = new Headers(init?.headers)\n headers.set('x-middleware-rewrite', validateURL(destination))\n\n handleMiddlewareField(init, headers)\n return new NextResponse(null, { ...init, headers })\n }\n\n static next(init?: MiddlewareResponseInit) {\n const headers = new Headers(init?.headers)\n headers.set('x-middleware-next', '1')\n\n handleMiddlewareField(init, headers)\n return new NextResponse(null, { ...init, headers })\n }\n}\n\ninterface ResponseInit extends globalThis.ResponseInit {\n nextConfig?: {\n basePath?: string\n i18n?: I18NConfig\n trailingSlash?: boolean\n }\n url?: string\n}\n\ninterface ModifiedRequest {\n /**\n * If this is set, the request headers will be overridden with this value.\n */\n headers?: Headers\n}\n\ninterface MiddlewareResponseInit extends globalThis.ResponseInit {\n /**\n * These fields will override the request from clients.\n */\n request?: ModifiedRequest\n}\n"],"names":["NextResponse","INTERNALS","Symbol","REDIRECTS","Set","handleMiddlewareField","init","headers","request","Headers","Error","keys","key","value","set","push","join","Response","constructor","body","cookies","ResponseCookies","cookiesProxy","Proxy","get","target","prop","receiver","args","result","Reflect","apply","newHeaders","getAll","map","cookie","stringifyCookie","ReflectAdapter","url","NextURL","toNodeOutgoingHttpHeaders","nextConfig","undefined","for","bodyUsed","Object","fromEntries","ok","redirected","status","statusText","type","json","response","redirect","has","RangeError","initObj","validateURL","rewrite","destination","next"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 11014, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/spec-extension/image-response.ts"],"sourcesContent":["/**\n * @deprecated ImageResponse moved from \"next/server\" to \"next/og\" since Next.js 14, please import from \"next/og\" instead.\n * Migration with codemods: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#next-og-import\n */\nexport function ImageResponse(): never {\n throw new Error(\n 'ImageResponse moved from \"next/server\" to \"next/og\" since Next.js 14, please import from \"next/og\" instead'\n )\n}\n"],"names":["ImageResponse","Error"],"mappings":"AAAA;;;CAGC;;;+BACeA,iBAAAA;;;eAAAA;;;AAAT,SAASA;IACd,MAAM,OAAA,cAEL,CAFK,IAAIC,MACR,+GADI,qBAAA;eAAA;oBAAA;sBAAA;IAEN;AACF","ignoreList":[0]}}, + {"offset": {"line": 11036, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/dist/compiled/ua-parser-js/ua-parser.js"],"sourcesContent":["(()=>{var i={226:function(i,e){(function(o,a){\"use strict\";var r=\"1.0.35\",t=\"\",n=\"?\",s=\"function\",b=\"undefined\",w=\"object\",l=\"string\",d=\"major\",c=\"model\",u=\"name\",p=\"type\",m=\"vendor\",f=\"version\",h=\"architecture\",v=\"console\",g=\"mobile\",k=\"tablet\",x=\"smarttv\",_=\"wearable\",y=\"embedded\",q=350;var T=\"Amazon\",S=\"Apple\",z=\"ASUS\",N=\"BlackBerry\",A=\"Browser\",C=\"Chrome\",E=\"Edge\",O=\"Firefox\",U=\"Google\",j=\"Huawei\",P=\"LG\",R=\"Microsoft\",M=\"Motorola\",B=\"Opera\",V=\"Samsung\",D=\"Sharp\",I=\"Sony\",W=\"Viera\",F=\"Xiaomi\",G=\"Zebra\",H=\"Facebook\",L=\"Chromium OS\",Z=\"Mac OS\";var extend=function(i,e){var o={};for(var a in i){if(e[a]&&e[a].length%2===0){o[a]=e[a].concat(i[a])}else{o[a]=i[a]}}return o},enumerize=function(i){var e={};for(var o=0;o0){if(b.length===2){if(typeof b[1]==s){this[b[0]]=b[1].call(this,d)}else{this[b[0]]=b[1]}}else if(b.length===3){if(typeof b[1]===s&&!(b[1].exec&&b[1].test)){this[b[0]]=d?b[1].call(this,d,b[2]):a}else{this[b[0]]=d?d.replace(b[1],b[2]):a}}else if(b.length===4){this[b[0]]=d?b[3].call(this,d.replace(b[1],b[2])):a}}else{this[b]=d?d:a}}}}o+=2}},strMapper=function(i,e){for(var o in e){if(typeof e[o]===w&&e[o].length>0){for(var r=0;r2){i[c]=\"iPad\";i[p]=k}return i};this.getEngine=function(){var i={};i[u]=a;i[f]=a;rgxMapper.call(i,n,x.engine);return i};this.getOS=function(){var i={};i[u]=a;i[f]=a;rgxMapper.call(i,n,x.os);if(_&&!i[u]&&v&&v.platform!=\"Unknown\"){i[u]=v.platform.replace(/chrome os/i,L).replace(/macos/i,Z)}return i};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return n};this.setUA=function(i){n=typeof i===l&&i.length>q?trim(i,q):i;return this};this.setUA(n);return this};UAParser.VERSION=r;UAParser.BROWSER=enumerize([u,f,d]);UAParser.CPU=enumerize([h]);UAParser.DEVICE=enumerize([c,m,p,v,g,x,k,_,y]);UAParser.ENGINE=UAParser.OS=enumerize([u,f]);if(typeof e!==b){if(\"object\"!==b&&i.exports){e=i.exports=UAParser}e.UAParser=UAParser}else{if(typeof define===s&&define.amd){define((function(){return UAParser}))}else if(typeof o!==b){o.UAParser=UAParser}}var Q=typeof o!==b&&(o.jQuery||o.Zepto);if(Q&&!Q.ua){var Y=new UAParser;Q.ua=Y.getResult();Q.ua.get=function(){return Y.getUA()};Q.ua.set=function(i){Y.setUA(i);var e=Y.getResult();for(var o in e){Q.ua[o]=e[o]}}}})(typeof window===\"object\"?window:this)}};var e={};function __nccwpck_require__(o){var a=e[o];if(a!==undefined){return a.exports}var r=e[o]={exports:{}};var t=true;try{i[o].call(r.exports,r,r.exports,__nccwpck_require__);t=false}finally{if(t)delete e[o]}return r.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var o=__nccwpck_require__(226);module.exports=o})();"],"names":[],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 13358, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/spec-extension/user-agent.ts"],"sourcesContent":["import parseua from 'next/dist/compiled/ua-parser-js'\n\ninterface UserAgent {\n isBot: boolean\n ua: string\n browser: {\n name?: string\n version?: string\n major?: string\n }\n device: {\n model?: string\n type?: string\n vendor?: string\n }\n engine: {\n name?: string\n version?: string\n }\n os: {\n name?: string\n version?: string\n }\n cpu: {\n architecture?: string\n }\n}\n\nexport function isBot(input: string): boolean {\n return /Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Google-InspectionTool|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(\n input\n )\n}\n\nexport function userAgentFromString(input: string | undefined): UserAgent {\n return {\n ...parseua(input),\n isBot: input === undefined ? false : isBot(input),\n }\n}\n\nexport function userAgent({ headers }: { headers: Headers }): UserAgent {\n return userAgentFromString(headers.get('user-agent') || undefined)\n}\n"],"names":["isBot","userAgent","userAgentFromString","input","test","parseua","undefined","headers","get"],"mappings":";;;;;;;;;;;;;;;IA4BgBA,KAAK,EAAA;eAALA;;IAaAC,SAAS,EAAA;eAATA;;IAPAC,mBAAmB,EAAA;eAAnBA;;;mEAlCI;;;;;;AA4Bb,SAASF,MAAMG,KAAa;IACjC,OAAO,0WAA0WC,IAAI,CACnXD;AAEJ;AAEO,SAASD,oBAAoBC,KAAyB;IAC3D,OAAO;QACL,GAAGE,CAAAA,GAAAA,YAAAA,OAAO,EAACF,MAAM;QACjBH,OAAOG,UAAUG,YAAY,QAAQN,MAAMG;IAC7C;AACF;AAEO,SAASF,UAAU,EAAEM,OAAO,EAAwB;IACzD,OAAOL,oBAAoBK,QAAQC,GAAG,CAAC,iBAAiBF;AAC1D","ignoreList":[0]}}, + {"offset": {"line": 13405, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/spec-extension/url-pattern.ts"],"sourcesContent":["const GlobalURLPattern =\n // @ts-expect-error: URLPattern is not available in Node.js\n typeof URLPattern === 'undefined' ? undefined : URLPattern\n\nexport { GlobalURLPattern as URLPattern }\n"],"names":["URLPattern","GlobalURLPattern","undefined"],"mappings":";;;+BAI6BA,cAAAA;;;eAApBC;;;AAJT,MAAMA,mBACJ,AACA,OAAOD,eAAe,cAAcE,YAAYF,WADW","ignoreList":[0]}}, + {"offset": {"line": 13419, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/after/after.ts"],"sourcesContent":["import { workAsyncStorage } from '../app-render/work-async-storage.external'\n\nexport type AfterTask = Promise | AfterCallback\nexport type AfterCallback = () => T | Promise\n\n/**\n * This function allows you to schedule callbacks to be executed after the current request finishes.\n */\nexport function after(task: AfterTask): void {\n const workStore = workAsyncStorage.getStore()\n\n if (!workStore) {\n // TODO(after): the linked docs page talks about *dynamic* APIs, which after soon won't be anymore\n throw new Error(\n '`after` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context'\n )\n }\n\n const { afterContext } = workStore\n return afterContext.after(task)\n}\n"],"names":["after","task","workStore","workAsyncStorage","getStore","Error","afterContext"],"mappings":";;;+BAQgBA,SAAAA;;;eAAAA;;;0CARiB;AAQ1B,SAASA,MAASC,IAAkB;IACzC,MAAMC,YAAYC,0BAAAA,gBAAgB,CAACC,QAAQ;IAE3C,IAAI,CAACF,WAAW;QACd,kGAAkG;QAClG,MAAM,OAAA,cAEL,CAFK,IAAIG,MACR,2HADI,qBAAA;mBAAA;wBAAA;0BAAA;QAEN;IACF;IAEA,MAAM,EAAEC,YAAY,EAAE,GAAGJ;IACzB,OAAOI,aAAaN,KAAK,CAACC;AAC5B","ignoreList":[0]}}, + {"offset": {"line": 13446, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/after/index.ts"],"sourcesContent":["export * from './after'\n"],"names":[],"mappings":";;;;qBAAc,kIAAA","ignoreList":[0]}}, + {"offset": {"line": 13468, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/hooks-server-context.ts"],"sourcesContent":["const DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE'\n\nexport class DynamicServerError extends Error {\n digest: typeof DYNAMIC_ERROR_CODE = DYNAMIC_ERROR_CODE\n\n constructor(public readonly description: string) {\n super(`Dynamic server usage: ${description}`)\n }\n}\n\nexport function isDynamicServerError(err: unknown): err is DynamicServerError {\n if (\n typeof err !== 'object' ||\n err === null ||\n !('digest' in err) ||\n typeof err.digest !== 'string'\n ) {\n return false\n }\n\n return err.digest === DYNAMIC_ERROR_CODE\n}\n"],"names":["DynamicServerError","isDynamicServerError","DYNAMIC_ERROR_CODE","Error","constructor","description","digest","err"],"mappings":";;;;;;;;;;;;;;IAEaA,kBAAkB,EAAA;eAAlBA;;IAQGC,oBAAoB,EAAA;eAApBA;;;AAVhB,MAAMC,qBAAqB;AAEpB,MAAMF,2BAA2BG;IAGtCC,YAA4BC,WAAmB,CAAE;QAC/C,KAAK,CAAC,CAAC,sBAAsB,EAAEA,aAAa,GAAA,IAAA,CADlBA,WAAAA,GAAAA,aAAAA,IAAAA,CAF5BC,MAAAA,GAAoCJ;IAIpC;AACF;AAEO,SAASD,qBAAqBM,GAAY;IAC/C,IACE,OAAOA,QAAQ,YACfA,QAAQ,QACR,CAAE,CAAA,YAAYA,GAAE,KAChB,OAAOA,IAAID,MAAM,KAAK,UACtB;QACA,OAAO;IACT;IAEA,OAAOC,IAAID,MAAM,KAAKJ;AACxB","ignoreList":[0]}}, + {"offset": {"line": 13512, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/static-generation-bailout.ts"],"sourcesContent":["const NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT'\n\nexport class StaticGenBailoutError extends Error {\n public readonly code = NEXT_STATIC_GEN_BAILOUT\n}\n\nexport function isStaticGenBailoutError(\n error: unknown\n): error is StaticGenBailoutError {\n if (typeof error !== 'object' || error === null || !('code' in error)) {\n return false\n }\n\n return error.code === NEXT_STATIC_GEN_BAILOUT\n}\n"],"names":["StaticGenBailoutError","isStaticGenBailoutError","NEXT_STATIC_GEN_BAILOUT","Error","code","error"],"mappings":";;;;;;;;;;;;;;IAEaA,qBAAqB,EAAA;eAArBA;;IAIGC,uBAAuB,EAAA;eAAvBA;;;AANhB,MAAMC,0BAA0B;AAEzB,MAAMF,8BAA8BG;;QAApC,KAAA,IAAA,OAAA,IAAA,CACWC,IAAAA,GAAOF;;AACzB;AAEO,SAASD,wBACdI,KAAc;IAEd,IAAI,OAAOA,UAAU,YAAYA,UAAU,QAAQ,CAAE,CAAA,UAAUA,KAAI,GAAI;QACrE,OAAO;IACT;IAEA,OAAOA,MAAMD,IAAI,KAAKF;AACxB","ignoreList":[0]}}, + {"offset": {"line": 13556, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/dynamic-rendering-utils.ts"],"sourcesContent":["import type { NonStaticRenderStage } from './app-render/staged-rendering'\nimport type { RequestStore } from './app-render/work-unit-async-storage.external'\n\nexport function isHangingPromiseRejectionError(\n err: unknown\n): err is HangingPromiseRejectionError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === HANGING_PROMISE_REJECTION\n}\n\nconst HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION'\n\nclass HangingPromiseRejectionError extends Error {\n public readonly digest = HANGING_PROMISE_REJECTION\n\n constructor(\n public readonly route: string,\n public readonly expression: string\n ) {\n super(\n `During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \\`setTimeout\\`, \\`after\\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route \"${route}\".`\n )\n }\n}\n\ntype AbortListeners = Array<(err: unknown) => void>\nconst abortListenersBySignal = new WeakMap()\n\n/**\n * This function constructs a promise that will never resolve. This is primarily\n * useful for cacheComponents where we use promise resolution timing to determine which\n * parts of a render can be included in a prerender.\n *\n * @internal\n */\nexport function makeHangingPromise(\n signal: AbortSignal,\n route: string,\n expression: string\n): Promise {\n if (signal.aborted) {\n return Promise.reject(new HangingPromiseRejectionError(route, expression))\n } else {\n const hangingPromise = new Promise((_, reject) => {\n const boundRejection = reject.bind(\n null,\n new HangingPromiseRejectionError(route, expression)\n )\n let currentListeners = abortListenersBySignal.get(signal)\n if (currentListeners) {\n currentListeners.push(boundRejection)\n } else {\n const listeners = [boundRejection]\n abortListenersBySignal.set(signal, listeners)\n signal.addEventListener(\n 'abort',\n () => {\n for (let i = 0; i < listeners.length; i++) {\n listeners[i]()\n }\n },\n { once: true }\n )\n }\n })\n // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so\n // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct\n // your own promise out of it you'll need to ensure you handle the error when it rejects.\n hangingPromise.catch(ignoreReject)\n return hangingPromise\n }\n}\n\nfunction ignoreReject() {}\n\nexport function makeDevtoolsIOAwarePromise(\n underlying: T,\n requestStore: RequestStore,\n stage: NonStaticRenderStage\n): Promise {\n if (requestStore.stagedRendering) {\n // We resolve each stage in a timeout, so React DevTools will pick this up as IO.\n return requestStore.stagedRendering.delayUntilStage(\n stage,\n undefined,\n underlying\n )\n }\n // in React DevTools if we resolve in a setTimeout we will observe\n // the promise resolution as something that can suspend a boundary or root.\n return new Promise((resolve) => {\n // Must use setTimeout to be considered IO React DevTools. setImmediate will not work.\n setTimeout(() => {\n resolve(underlying)\n }, 0)\n })\n}\n"],"names":["isHangingPromiseRejectionError","makeDevtoolsIOAwarePromise","makeHangingPromise","err","digest","HANGING_PROMISE_REJECTION","HangingPromiseRejectionError","Error","constructor","route","expression","abortListenersBySignal","WeakMap","signal","aborted","Promise","reject","hangingPromise","_","boundRejection","bind","currentListeners","get","push","listeners","set","addEventListener","i","length","once","catch","ignoreReject","underlying","requestStore","stage","stagedRendering","delayUntilStage","undefined","resolve","setTimeout"],"mappings":";;;;;;;;;;;;;;;IAGgBA,8BAA8B,EAAA;eAA9BA;;IA2EAC,0BAA0B,EAAA;eAA1BA;;IAxCAC,kBAAkB,EAAA;eAAlBA;;;AAnCT,SAASF,+BACdG,GAAY;IAEZ,IAAI,OAAOA,QAAQ,YAAYA,QAAQ,QAAQ,CAAE,CAAA,YAAYA,GAAE,GAAI;QACjE,OAAO;IACT;IAEA,OAAOA,IAAIC,MAAM,KAAKC;AACxB;AAEA,MAAMA,4BAA4B;AAElC,MAAMC,qCAAqCC;IAGzCC,YACkBC,KAAa,EACbC,UAAkB,CAClC;QACA,KAAK,CACH,CAAC,qBAAqB,EAAEA,WAAW,qGAAqG,EAAEA,WAAW,8KAA8K,EAAED,MAAM,EAAE,CAAC,GAAA,IAAA,CAJhUA,KAAAA,GAAAA,OAAAA,IAAAA,CACAC,UAAAA,GAAAA,YAAAA,IAAAA,CAJFN,MAAAA,GAASC;IASzB;AACF;AAGA,MAAMM,yBAAyB,IAAIC;AAS5B,SAASV,mBACdW,MAAmB,EACnBJ,KAAa,EACbC,UAAkB;IAElB,IAAIG,OAAOC,OAAO,EAAE;QAClB,OAAOC,QAAQC,MAAM,CAAC,IAAIV,6BAA6BG,OAAOC;IAChE,OAAO;QACL,MAAMO,iBAAiB,IAAIF,QAAW,CAACG,GAAGF;YACxC,MAAMG,iBAAiBH,OAAOI,IAAI,CAChC,MACA,IAAId,6BAA6BG,OAAOC;YAE1C,IAAIW,mBAAmBV,uBAAuBW,GAAG,CAACT;YAClD,IAAIQ,kBAAkB;gBACpBA,iBAAiBE,IAAI,CAACJ;YACxB,OAAO;gBACL,MAAMK,YAAY;oBAACL;iBAAe;gBAClCR,uBAAuBc,GAAG,CAACZ,QAAQW;gBACnCX,OAAOa,gBAAgB,CACrB,SACA;oBACE,IAAK,IAAIC,IAAI,GAAGA,IAAIH,UAAUI,MAAM,EAAED,IAAK;wBACzCH,SAAS,CAACG,EAAE;oBACd;gBACF,GACA;oBAAEE,MAAM;gBAAK;YAEjB;QACF;QACA,2GAA2G;QAC3G,6GAA6G;QAC7G,yFAAyF;QACzFZ,eAAea,KAAK,CAACC;QACrB,OAAOd;IACT;AACF;AAEA,SAASc,gBAAgB;AAElB,SAAS9B,2BACd+B,UAAa,EACbC,YAA0B,EAC1BC,KAA2B;IAE3B,IAAID,aAAaE,eAAe,EAAE;QAChC,iFAAiF;QACjF,OAAOF,aAAaE,eAAe,CAACC,eAAe,CACjDF,OACAG,WACAL;IAEJ;IACA,kEAAkE;IAClE,2EAA2E;IAC3E,OAAO,IAAIjB,QAAW,CAACuB;QACrB,sFAAsF;QACtFC,WAAW;YACTD,QAAQN;QACV,GAAG;IACL;AACF","ignoreList":[0]}}, + {"offset": {"line": 13643, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/lib/framework/boundary-constants.tsx"],"sourcesContent":["export const METADATA_BOUNDARY_NAME = '__next_metadata_boundary__'\nexport const VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__'\nexport const OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__'\nexport const ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__'\n"],"names":["METADATA_BOUNDARY_NAME","OUTLET_BOUNDARY_NAME","ROOT_LAYOUT_BOUNDARY_NAME","VIEWPORT_BOUNDARY_NAME"],"mappings":";;;;;;;;;;;;;;;;IAAaA,sBAAsB,EAAA;eAAtBA;;IAEAC,oBAAoB,EAAA;eAApBA;;IACAC,yBAAyB,EAAA;eAAzBA;;IAFAC,sBAAsB,EAAA;eAAtBA;;;AADN,MAAMH,yBAAyB;AAC/B,MAAMG,yBAAyB;AAC/B,MAAMF,uBAAuB;AAC7B,MAAMC,4BAA4B","ignoreList":[0]}}, + {"offset": {"line": 13680, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/lib/scheduler.ts"],"sourcesContent":["export type ScheduledFn = () => T | PromiseLike\nexport type SchedulerFn = (cb: ScheduledFn) => void\n\n/**\n * Schedules a function to be called on the next tick after the other promises\n * have been resolved.\n *\n * @param cb the function to schedule\n */\nexport const scheduleOnNextTick = (cb: ScheduledFn) => {\n // We use Promise.resolve().then() here so that the operation is scheduled at\n // the end of the promise job queue, we then add it to the next process tick\n // to ensure it's evaluated afterwards.\n //\n // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255\n //\n Promise.resolve().then(() => {\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0)\n } else {\n process.nextTick(cb)\n }\n })\n}\n\n/**\n * Schedules a function to be called using `setImmediate` or `setTimeout` if\n * `setImmediate` is not available (like in the Edge runtime).\n *\n * @param cb the function to schedule\n */\nexport const scheduleImmediate = (cb: ScheduledFn): void => {\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0)\n } else {\n setImmediate(cb)\n }\n}\n\n/**\n * returns a promise than resolves in a future task. There is no guarantee that the task it resolves in\n * will be the next task but if you await it you can at least be sure that the current task is over and\n * most usefully that the entire microtask queue of the current task has been emptied.\n */\nexport function atLeastOneTask() {\n return new Promise((resolve) => scheduleImmediate(resolve))\n}\n\n/**\n * This utility function is extracted to make it easier to find places where we are doing\n * specific timing tricks to try to schedule work after React has rendered. This is especially\n * important at the moment because Next.js uses the edge builds of React which use setTimeout to\n * schedule work when you might expect that something like setImmediate would do the trick.\n *\n * Long term we should switch to the node versions of React rendering when possible and then\n * update this to use setImmediate rather than setTimeout\n */\nexport function waitAtLeastOneReactRenderTask(): Promise {\n if (process.env.NEXT_RUNTIME === 'edge') {\n return new Promise((r) => setTimeout(r, 0))\n } else {\n return new Promise((r) => setImmediate(r))\n }\n}\n"],"names":["atLeastOneTask","scheduleImmediate","scheduleOnNextTick","waitAtLeastOneReactRenderTask","cb","Promise","resolve","then","process","env","NEXT_RUNTIME","setTimeout","nextTick","setImmediate","r"],"mappings":";;;;;;;;;;;;;;;;IA4CgBA,cAAc,EAAA;eAAdA;;IAbHC,iBAAiB,EAAA;eAAjBA;;IAtBAC,kBAAkB,EAAA;eAAlBA;;IAgDGC,6BAA6B,EAAA;eAA7BA;;;AAhDT,MAAMD,qBAAqB,CAACE;IACjC,6EAA6E;IAC7E,4EAA4E;IAC5E,uCAAuC;IACvC,EAAE;IACF,kLAAkL;IAClL,EAAE;IACFC,QAAQC,OAAO,GAAGC,IAAI,CAAC;QACrB,IAAIC,QAAQC,GAAG,CAACC,YAAY,KAAK,QAAQ;;aAElC;YACLF,QAAQI,QAAQ,CAACR;QACnB;IACF;AACF;AAQO,MAAMH,oBAAoB,CAACG;IAChC,IAAII,QAAQC,GAAG,CAACC,YAAY,KAAK,QAAQ;;SAElC;QACLG,aAAaT;IACf;AACF;AAOO,SAASJ;IACd,OAAO,IAAIK,QAAc,CAACC,UAAYL,kBAAkBK;AAC1D;AAWO,SAASH;IACd,IAAIK,QAAQC,GAAG,CAACC,YAAY,KAAK,QAAQ;;SAElC;QACL,OAAO,IAAIL,QAAQ,CAACS,IAAMD,aAAaC;IACzC;AACF","ignoreList":[0]}}, + {"offset": {"line": 13745, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/lazy-dynamic/bailout-to-csr.ts"],"sourcesContent":["// This has to be a shared module which is shared between client component error boundary and dynamic component\nconst BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING'\n\n/** An error that should be thrown when we want to bail out to client-side rendering. */\nexport class BailoutToCSRError extends Error {\n public readonly digest = BAILOUT_TO_CSR\n\n constructor(public readonly reason: string) {\n super(`Bail out to client-side rendering: ${reason}`)\n }\n}\n\n/** Checks if a passed argument is an error that is thrown if we want to bail out to client-side rendering. */\nexport function isBailoutToCSRError(err: unknown): err is BailoutToCSRError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === BAILOUT_TO_CSR\n}\n"],"names":["BailoutToCSRError","isBailoutToCSRError","BAILOUT_TO_CSR","Error","constructor","reason","digest","err"],"mappings":"AAAA,+GAA+G;;;;;;;;;;;;;;;IAIlGA,iBAAiB,EAAA;eAAjBA;;IASGC,mBAAmB,EAAA;eAAnBA;;;AAZhB,MAAMC,iBAAiB;AAGhB,MAAMF,0BAA0BG;IAGrCC,YAA4BC,MAAc,CAAE;QAC1C,KAAK,CAAC,CAAC,mCAAmC,EAAEA,QAAQ,GAAA,IAAA,CAD1BA,MAAAA,GAAAA,QAAAA,IAAAA,CAFZC,MAAAA,GAASJ;IAIzB;AACF;AAGO,SAASD,oBAAoBM,GAAY;IAC9C,IAAI,OAAOA,QAAQ,YAAYA,QAAQ,QAAQ,CAAE,CAAA,YAAYA,GAAE,GAAI;QACjE,OAAO;IACT;IAEA,OAAOA,IAAID,MAAM,KAAKJ;AACxB","ignoreList":[0]}}, + {"offset": {"line": 13783, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/invariant-error.ts"],"sourcesContent":["export class InvariantError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(\n `Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`,\n options\n )\n this.name = 'InvariantError'\n }\n}\n"],"names":["InvariantError","Error","constructor","message","options","endsWith","name"],"mappings":";;;+BAAaA,kBAAAA;;;eAAAA;;;AAAN,MAAMA,uBAAuBC;IAClCC,YAAYC,OAAe,EAAEC,OAAsB,CAAE;QACnD,KAAK,CACH,CAAC,WAAW,EAAED,QAAQE,QAAQ,CAAC,OAAOF,UAAUA,UAAU,IAAI,0BAA0B,CAAC,EACzFC;QAEF,IAAI,CAACE,IAAI,GAAG;IACd;AACF","ignoreList":[0]}}, + {"offset": {"line": 13802, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/app-render/dynamic-rendering.ts"],"sourcesContent":["/**\n * The functions provided by this module are used to communicate certain properties\n * about the currently running code so that Next.js can make decisions on how to handle\n * the current execution in different rendering modes such as pre-rendering, resuming, and SSR.\n *\n * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering.\n * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts\n * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of\n * Dynamic indications.\n *\n * The first is simply an intention to be dynamic. unstable_noStore is an example of this where\n * the currently executing code simply declares that the current scope is dynamic but if you use it\n * inside unstable_cache it can still be cached. This type of indication can be removed if we ever\n * make the default dynamic to begin with because the only way you would ever be static is inside\n * a cache scope which this indication does not affect.\n *\n * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic\n * because it means that it is inappropriate to cache this at all. using a dynamic data source inside\n * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should\n * read that data outside the cache and pass it in as an argument to the cached function.\n */\n\nimport type { WorkStore } from '../app-render/work-async-storage.external'\nimport type {\n WorkUnitStore,\n PrerenderStoreLegacy,\n PrerenderStoreModern,\n PrerenderStoreModernRuntime,\n} from '../app-render/work-unit-async-storage.external'\n\n// Once postpone is in stable we should switch to importing the postpone export directly\nimport React from 'react'\n\nimport { DynamicServerError } from '../../client/components/hooks-server-context'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport {\n getRuntimeStagePromise,\n throwForMissingRequestStore,\n workUnitAsyncStorage,\n} from './work-unit-async-storage.external'\nimport { workAsyncStorage } from '../app-render/work-async-storage.external'\nimport { makeHangingPromise } from '../dynamic-rendering-utils'\nimport {\n METADATA_BOUNDARY_NAME,\n VIEWPORT_BOUNDARY_NAME,\n OUTLET_BOUNDARY_NAME,\n ROOT_LAYOUT_BOUNDARY_NAME,\n} from '../../lib/framework/boundary-constants'\nimport { scheduleOnNextTick } from '../../lib/scheduler'\nimport { BailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr'\nimport { InvariantError } from '../../shared/lib/invariant-error'\n\nconst hasPostpone = typeof React.unstable_postpone === 'function'\n\nexport type DynamicAccess = {\n /**\n * If debugging, this will contain the stack trace of where the dynamic access\n * occurred. This is used to provide more information to the user about why\n * their page is being rendered dynamically.\n */\n stack?: string\n\n /**\n * The expression that was accessed dynamically.\n */\n expression: string\n}\n\n// Stores dynamic reasons used during an RSC render.\nexport type DynamicTrackingState = {\n /**\n * When true, stack information will also be tracked during dynamic access.\n */\n readonly isDebugDynamicAccesses: boolean | undefined\n\n /**\n * The dynamic accesses that occurred during the render.\n */\n readonly dynamicAccesses: Array\n\n syncDynamicErrorWithStack: null | Error\n}\n\n// Stores dynamic reasons used during an SSR render.\nexport type DynamicValidationState = {\n hasSuspenseAboveBody: boolean\n hasDynamicMetadata: boolean\n dynamicMetadata: null | Error\n hasDynamicViewport: boolean\n hasAllowedDynamic: boolean\n dynamicErrors: Array\n}\n\nexport function createDynamicTrackingState(\n isDebugDynamicAccesses: boolean | undefined\n): DynamicTrackingState {\n return {\n isDebugDynamicAccesses,\n dynamicAccesses: [],\n syncDynamicErrorWithStack: null,\n }\n}\n\nexport function createDynamicValidationState(): DynamicValidationState {\n return {\n hasSuspenseAboveBody: false,\n hasDynamicMetadata: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: [],\n }\n}\n\nexport function getFirstDynamicReason(\n trackingState: DynamicTrackingState\n): undefined | string {\n return trackingState.dynamicAccesses[0]?.expression\n}\n\n/**\n * This function communicates that the current scope should be treated as dynamic.\n *\n * In most cases this function is a no-op but if called during\n * a PPR prerender it will postpone the current sub-tree and calling\n * it during a normal prerender will cause the entire prerender to abort\n */\nexport function markCurrentScopeAsDynamic(\n store: WorkStore,\n workUnitStore: undefined | Exclude,\n expression: string\n): void {\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'request':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n // If we're forcing dynamic rendering or we're forcing static rendering, we\n // don't need to do anything here because the entire page is already dynamic\n // or it's static and it should not throw or postpone here.\n if (store.forceDynamic || store.forceStatic) return\n\n if (store.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender-ppr':\n return postponeWithTracking(\n store.route,\n expression,\n workUnitStore.dynamicTracking\n )\n case 'prerender-legacy':\n workUnitStore.revalidate = 0\n\n // We aren't prerendering, but we are generating a static page. We need\n // to bail out of static generation.\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n case 'request':\n if (process.env.NODE_ENV !== 'production') {\n workUnitStore.usedDynamic = true\n }\n break\n default:\n workUnitStore satisfies never\n }\n }\n}\n\n/**\n * This function is meant to be used when prerendering without cacheComponents or PPR.\n * When called during a build it will cause Next.js to consider the route as dynamic.\n *\n * @internal\n */\nexport function throwToInterruptStaticGeneration(\n expression: string,\n store: WorkStore,\n prerenderStore: PrerenderStoreLegacy\n): never {\n // We aren't prerendering but we are generating a static page. We need to bail out of static generation\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n\n prerenderStore.revalidate = 0\n\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n}\n\n/**\n * This function should be used to track whether something dynamic happened even when\n * we are in a dynamic render. This is useful for Dev where all renders are dynamic but\n * we still track whether dynamic APIs were accessed for helpful messaging\n *\n * @internal\n */\nexport function trackDynamicDataInDynamicRender(workUnitStore: WorkUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'prerender-client':\n break\n case 'request':\n if (process.env.NODE_ENV !== 'production') {\n workUnitStore.usedDynamic = true\n }\n break\n default:\n workUnitStore satisfies never\n }\n}\n\nfunction abortOnSynchronousDynamicDataAccess(\n route: string,\n expression: string,\n prerenderStore: PrerenderStoreModern\n): void {\n const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`\n\n const error = createPrerenderInterruptedError(reason)\n\n prerenderStore.controller.abort(error)\n\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n}\n\nexport function abortOnSynchronousPlatformIOAccess(\n route: string,\n expression: string,\n errorWithStack: Error,\n prerenderStore: PrerenderStoreModern\n): void {\n const dynamicTracking = prerenderStore.dynamicTracking\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore)\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack\n }\n }\n}\n\n/**\n * use this function when prerendering with cacheComponents. If we are doing a\n * prospective prerender we don't actually abort because we want to discover\n * all caches for the shell. If this is the actual prerender we do abort.\n *\n * This function accepts a prerenderStore but the caller should ensure we're\n * actually running in cacheComponents mode.\n *\n * @internal\n */\nexport function abortAndThrowOnSynchronousRequestDataAccess(\n route: string,\n expression: string,\n errorWithStack: Error,\n prerenderStore: PrerenderStoreModern\n): never {\n const prerenderSignal = prerenderStore.controller.signal\n if (prerenderSignal.aborted === false) {\n // TODO it would be better to move this aborted check into the callsite so we can avoid making\n // the error object when it isn't relevant to the aborting of the prerender however\n // since we need the throw semantics regardless of whether we abort it is easier to land\n // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer\n // to ideal implementation\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore)\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack\n }\n }\n }\n throw createPrerenderInterruptedError(\n `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`\n )\n}\n\n/**\n * This component will call `React.postpone` that throws the postponed error.\n */\ntype PostponeProps = {\n reason: string\n route: string\n}\nexport function Postpone({ reason, route }: PostponeProps): never {\n const prerenderStore = workUnitAsyncStorage.getStore()\n const dynamicTracking =\n prerenderStore && prerenderStore.type === 'prerender-ppr'\n ? prerenderStore.dynamicTracking\n : null\n postponeWithTracking(route, reason, dynamicTracking)\n}\n\nexport function postponeWithTracking(\n route: string,\n expression: string,\n dynamicTracking: null | DynamicTrackingState\n): never {\n assertPostpone()\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n\n React.unstable_postpone(createPostponeReason(route, expression))\n}\n\nfunction createPostponeReason(route: string, expression: string) {\n return (\n `Route ${route} needs to bail out of prerendering at this point because it used ${expression}. ` +\n `React throws this special object to indicate where. It should not be caught by ` +\n `your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`\n )\n}\n\nexport function isDynamicPostpone(err: unknown) {\n if (\n typeof err === 'object' &&\n err !== null &&\n typeof (err as any).message === 'string'\n ) {\n return isDynamicPostponeReason((err as any).message)\n }\n return false\n}\n\nfunction isDynamicPostponeReason(reason: string) {\n return (\n reason.includes(\n 'needs to bail out of prerendering at this point because it used'\n ) &&\n reason.includes(\n 'Learn more: https://nextjs.org/docs/messages/ppr-caught-error'\n )\n )\n}\n\nif (isDynamicPostponeReason(createPostponeReason('%%%', '^^^')) === false) {\n throw new Error(\n 'Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js'\n )\n}\n\nconst NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED'\n\nfunction createPrerenderInterruptedError(message: string): Error {\n const error = new Error(message)\n ;(error as any).digest = NEXT_PRERENDER_INTERRUPTED\n return error\n}\n\ntype DigestError = Error & {\n digest: string\n}\n\nexport function isPrerenderInterruptedError(\n error: unknown\n): error is DigestError {\n return (\n typeof error === 'object' &&\n error !== null &&\n (error as any).digest === NEXT_PRERENDER_INTERRUPTED &&\n 'name' in error &&\n 'message' in error &&\n error instanceof Error\n )\n}\n\nexport function accessedDynamicData(\n dynamicAccesses: Array\n): boolean {\n return dynamicAccesses.length > 0\n}\n\nexport function consumeDynamicAccess(\n serverDynamic: DynamicTrackingState,\n clientDynamic: DynamicTrackingState\n): DynamicTrackingState['dynamicAccesses'] {\n // We mutate because we only call this once we are no longer writing\n // to the dynamicTrackingState and it's more efficient than creating a new\n // array.\n serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses)\n return serverDynamic.dynamicAccesses\n}\n\nexport function formatDynamicAPIAccesses(\n dynamicAccesses: Array\n): string[] {\n return dynamicAccesses\n .filter(\n (access): access is Required =>\n typeof access.stack === 'string' && access.stack.length > 0\n )\n .map(({ expression, stack }) => {\n stack = stack\n .split('\\n')\n // Remove the \"Error: \" prefix from the first line of the stack trace as\n // well as the first 4 lines of the stack trace which is the distance\n // from the user code and the `new Error().stack` call.\n .slice(4)\n .filter((line) => {\n // Exclude Next.js internals from the stack trace.\n if (line.includes('node_modules/next/')) {\n return false\n }\n\n // Exclude anonymous functions from the stack trace.\n if (line.includes(' ()')) {\n return false\n }\n\n // Exclude Node.js internals from the stack trace.\n if (line.includes(' (node:')) {\n return false\n }\n\n return true\n })\n .join('\\n')\n return `Dynamic API Usage Debug - ${expression}:\\n${stack}`\n })\n}\n\nfunction assertPostpone() {\n if (!hasPostpone) {\n throw new Error(\n `Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js`\n )\n }\n}\n\n/**\n * This is a bit of a hack to allow us to abort a render using a Postpone instance instead of an Error which changes React's\n * abort semantics slightly.\n */\nexport function createRenderInBrowserAbortSignal(): AbortSignal {\n const controller = new AbortController()\n controller.abort(new BailoutToCSRError('Render in Browser'))\n return controller.signal\n}\n\n/**\n * In a prerender, we may end up with hanging Promises as inputs due them\n * stalling on connection() or because they're loading dynamic data. In that\n * case we need to abort the encoding of arguments since they'll never complete.\n */\nexport function createHangingInputAbortSignal(\n workUnitStore: WorkUnitStore\n): AbortSignal | undefined {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-runtime':\n const controller = new AbortController()\n\n if (workUnitStore.cacheSignal) {\n // If we have a cacheSignal it means we're in a prospective render. If\n // the input we're waiting on is coming from another cache, we do want\n // to wait for it so that we can resolve this cache entry too.\n workUnitStore.cacheSignal.inputReady().then(() => {\n controller.abort()\n })\n } else {\n // Otherwise we're in the final render and we should already have all\n // our caches filled.\n // If the prerender uses stages, we have wait until the runtime stage,\n // at which point all runtime inputs will be resolved.\n // (otherwise, a runtime prerender might consider `cookies()` hanging\n // even though they'd resolve in the next task.)\n //\n // We might still be waiting on some microtasks so we\n // wait one tick before giving up. When we give up, we still want to\n // render the content of this cache as deeply as we can so that we can\n // suspend as deeply as possible in the tree or not at all if we don't\n // end up waiting for the input.\n const runtimeStagePromise = getRuntimeStagePromise(workUnitStore)\n if (runtimeStagePromise) {\n runtimeStagePromise.then(() =>\n scheduleOnNextTick(() => controller.abort())\n )\n } else {\n scheduleOnNextTick(() => controller.abort())\n }\n }\n\n return controller.signal\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n return undefined\n default:\n workUnitStore satisfies never\n }\n}\n\nexport function annotateDynamicAccess(\n expression: string,\n prerenderStore: PrerenderStoreModern\n) {\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n}\n\nexport function useDynamicRouteParams(expression: string) {\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n if (workStore && workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender-client':\n case 'prerender': {\n const fallbackParams = workUnitStore.fallbackRouteParams\n\n if (fallbackParams && fallbackParams.size > 0) {\n // We are in a prerender with cacheComponents semantics. We are going to\n // hang here and never resolve. This will cause the currently\n // rendering component to effectively be a dynamic hole.\n React.use(\n makeHangingPromise(\n workUnitStore.renderSignal,\n workStore.route,\n expression\n )\n )\n }\n break\n }\n case 'prerender-ppr': {\n const fallbackParams = workUnitStore.fallbackRouteParams\n if (fallbackParams && fallbackParams.size > 0) {\n return postponeWithTracking(\n workStore.route,\n expression,\n workUnitStore.dynamicTracking\n )\n }\n break\n }\n case 'prerender-runtime':\n throw new InvariantError(\n `\\`${expression}\\` was called during a runtime prerender. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'cache':\n case 'private-cache':\n throw new InvariantError(\n `\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'prerender-legacy':\n case 'request':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n}\n\nexport function useDynamicSearchParams(expression: string) {\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (!workStore) {\n // We assume pages router context and just return\n return\n }\n\n if (!workUnitStore) {\n throwForMissingRequestStore(expression)\n }\n\n switch (workUnitStore.type) {\n case 'prerender-client': {\n React.use(\n makeHangingPromise(\n workUnitStore.renderSignal,\n workStore.route,\n expression\n )\n )\n break\n }\n case 'prerender-legacy':\n case 'prerender-ppr': {\n if (workStore.forceStatic) {\n return\n }\n throw new BailoutToCSRError(expression)\n }\n case 'prerender':\n case 'prerender-runtime':\n throw new InvariantError(\n `\\`${expression}\\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'cache':\n case 'unstable-cache':\n case 'private-cache':\n throw new InvariantError(\n `\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'request':\n return\n default:\n workUnitStore satisfies never\n }\n}\n\nconst hasSuspenseRegex = /\\n\\s+at Suspense \\(\\)/\n\n// Common implicit body tags that React will treat as body when placed directly in html\nconst bodyAndImplicitTags =\n 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6'\n\n// Detects when RootLayoutBoundary (our framework marker component) appears\n// after Suspense in the component stack, indicating the root layout is wrapped\n// within a Suspense boundary. Ensures no body/html/implicit-body components are in between.\n//\n// Example matches:\n// at Suspense ()\n// at __next_root_layout_boundary__ ()\n//\n// Or with other components in between (but not body/html/implicit-body):\n// at Suspense ()\n// at SomeComponent ()\n// at __next_root_layout_boundary__ ()\nconst hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(\n `\\\\n\\\\s+at Suspense \\\\(\\\\)(?:(?!\\\\n\\\\s+at (?:${bodyAndImplicitTags}) \\\\(\\\\))[\\\\s\\\\S])*?\\\\n\\\\s+at ${ROOT_LAYOUT_BOUNDARY_NAME} \\\\([^\\\\n]*\\\\)`\n)\n\nconst hasMetadataRegex = new RegExp(\n `\\\\n\\\\s+at ${METADATA_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst hasViewportRegex = new RegExp(\n `\\\\n\\\\s+at ${VIEWPORT_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst hasOutletRegex = new RegExp(`\\\\n\\\\s+at ${OUTLET_BOUNDARY_NAME}[\\\\n\\\\s]`)\n\nexport function trackAllowedDynamicAccess(\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n dynamicValidation.hasDynamicMetadata = true\n return\n } else if (hasViewportRegex.test(componentStack)) {\n dynamicValidation.hasDynamicViewport = true\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(\n clientDynamic.syncDynamicErrorWithStack\n )\n return\n } else {\n const message =\n `Route \"${workStore.route}\": Uncached data was accessed outside of ` +\n '. This delays the entire page from rendering, resulting in a ' +\n 'slow user experience. Learn more: ' +\n 'https://nextjs.org/docs/messages/blocking-route'\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicErrors.push(error)\n return\n }\n}\n\nexport function trackDynamicHoleInRuntimeShell(\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed inside \\`generateMetadata\\`. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicMetadata = error\n return\n } else if (hasViewportRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed inside \\`generateViewport\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicErrors.push(error)\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(\n clientDynamic.syncDynamicErrorWithStack\n )\n return\n } else {\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed outside of \\`\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicErrors.push(error)\n return\n }\n}\n\nexport function trackDynamicHoleInStaticShell(\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateMetadata\\` or you have file-based metadata such as icons that depend on dynamic params segments. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicMetadata = error\n return\n } else if (hasViewportRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateViewport\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicErrors.push(error)\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(\n clientDynamic.syncDynamicErrorWithStack\n )\n return\n } else {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed outside of \\`\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicErrors.push(error)\n return\n }\n}\n\n/**\n * In dev mode, we prefer using the owner stack, otherwise the provided\n * component stack is used.\n */\nfunction createErrorWithComponentOrOwnerStack(\n message: string,\n componentStack: string\n) {\n const ownerStack =\n process.env.NODE_ENV !== 'production' && React.captureOwnerStack\n ? React.captureOwnerStack()\n : null\n\n const error = new Error(message)\n // TODO go back to owner stack here if available. This is temporarily using componentStack to get the right\n //\n error.stack = error.name + ': ' + message + (ownerStack || componentStack)\n return error\n}\n\nexport enum PreludeState {\n Full = 0,\n Empty = 1,\n Errored = 2,\n}\n\nexport function logDisallowedDynamicError(\n workStore: WorkStore,\n error: Error\n): void {\n console.error(error)\n\n if (!workStore.dev) {\n if (workStore.hasReadableErrorStacks) {\n console.error(\n `To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running \\`next dev\\`, then open \"${workStore.route}\" in your browser to investigate the error.`\n )\n } else {\n console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following:\n - Start the app in development mode by running \\`next dev\\`, then open \"${workStore.route}\" in your browser to investigate the error.\n - Rerun the production build with \\`next build --debug-prerender\\` to generate better stack traces.`)\n }\n }\n}\n\nexport function throwIfDisallowedDynamic(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState,\n serverDynamic: DynamicTrackingState\n): void {\n if (serverDynamic.syncDynamicErrorWithStack) {\n logDisallowedDynamicError(\n workStore,\n serverDynamic.syncDynamicErrorWithStack\n )\n throw new StaticGenBailoutError()\n }\n\n if (prelude !== PreludeState.Full) {\n if (dynamicValidation.hasSuspenseAboveBody) {\n // This route has opted into allowing fully dynamic rendering\n // by including a Suspense boundary above the body. In this case\n // a lack of a shell is not considered disallowed so we simply return\n return\n }\n\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n for (let i = 0; i < dynamicErrors.length; i++) {\n logDisallowedDynamicError(workStore, dynamicErrors[i])\n }\n\n throw new StaticGenBailoutError()\n }\n\n // If we got this far then the only other thing that could be blocking\n // the root is dynamic Viewport. If this is dynamic then\n // you need to opt into that by adding a Suspense boundary above the body\n // to indicate your are ok with fully dynamic rendering.\n if (dynamicValidation.hasDynamicViewport) {\n console.error(\n `Route \"${workStore.route}\" has a \\`generateViewport\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`\n )\n throw new StaticGenBailoutError()\n }\n\n if (prelude === PreludeState.Empty) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n console.error(\n `Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`\n )\n throw new StaticGenBailoutError()\n }\n } else {\n if (\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.hasDynamicMetadata\n ) {\n console.error(\n `Route \"${workStore.route}\" has a \\`generateMetadata\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`\n )\n throw new StaticGenBailoutError()\n }\n }\n}\n\nexport function getStaticShellDisallowedDynamicReasons(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState\n): Array {\n if (dynamicValidation.hasSuspenseAboveBody) {\n // This route has opted into allowing fully dynamic rendering\n // by including a Suspense boundary above the body. In this case\n // a lack of a shell is not considered disallowed so we simply return\n return []\n }\n\n if (prelude !== PreludeState.Full) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n if (prelude === PreludeState.Empty) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n return [\n new InvariantError(\n `Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason.`\n ),\n ]\n }\n } else {\n // We have a prelude but we might still have dynamic metadata without any other dynamic access\n if (\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.dynamicErrors.length === 0 &&\n dynamicValidation.dynamicMetadata\n ) {\n return [dynamicValidation.dynamicMetadata]\n }\n }\n // We had a non-empty prelude and there are no dynamic holes\n return []\n}\n\nexport function delayUntilRuntimeStage(\n prerenderStore: PrerenderStoreModernRuntime,\n result: Promise\n): Promise {\n if (prerenderStore.runtimeStagePromise) {\n return prerenderStore.runtimeStagePromise.then(() => result)\n }\n return result\n}\n"],"names":["Postpone","PreludeState","abortAndThrowOnSynchronousRequestDataAccess","abortOnSynchronousPlatformIOAccess","accessedDynamicData","annotateDynamicAccess","consumeDynamicAccess","createDynamicTrackingState","createDynamicValidationState","createHangingInputAbortSignal","createRenderInBrowserAbortSignal","delayUntilRuntimeStage","formatDynamicAPIAccesses","getFirstDynamicReason","getStaticShellDisallowedDynamicReasons","isDynamicPostpone","isPrerenderInterruptedError","logDisallowedDynamicError","markCurrentScopeAsDynamic","postponeWithTracking","throwIfDisallowedDynamic","throwToInterruptStaticGeneration","trackAllowedDynamicAccess","trackDynamicDataInDynamicRender","trackDynamicHoleInRuntimeShell","trackDynamicHoleInStaticShell","useDynamicRouteParams","useDynamicSearchParams","hasPostpone","React","unstable_postpone","isDebugDynamicAccesses","dynamicAccesses","syncDynamicErrorWithStack","hasSuspenseAboveBody","hasDynamicMetadata","dynamicMetadata","hasDynamicViewport","hasAllowedDynamic","dynamicErrors","trackingState","expression","store","workUnitStore","type","forceDynamic","forceStatic","dynamicShouldError","StaticGenBailoutError","route","dynamicTracking","revalidate","err","DynamicServerError","dynamicUsageDescription","dynamicUsageStack","stack","process","env","NODE_ENV","usedDynamic","prerenderStore","abortOnSynchronousDynamicDataAccess","reason","error","createPrerenderInterruptedError","controller","abort","push","Error","undefined","errorWithStack","prerenderSignal","signal","aborted","workUnitAsyncStorage","getStore","assertPostpone","createPostponeReason","message","isDynamicPostponeReason","includes","NEXT_PRERENDER_INTERRUPTED","digest","length","serverDynamic","clientDynamic","filter","access","map","split","slice","line","join","AbortController","BailoutToCSRError","cacheSignal","inputReady","then","runtimeStagePromise","getRuntimeStagePromise","scheduleOnNextTick","workStore","workAsyncStorage","fallbackParams","fallbackRouteParams","size","use","makeHangingPromise","renderSignal","InvariantError","throwForMissingRequestStore","hasSuspenseRegex","bodyAndImplicitTags","hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex","RegExp","ROOT_LAYOUT_BOUNDARY_NAME","hasMetadataRegex","METADATA_BOUNDARY_NAME","hasViewportRegex","VIEWPORT_BOUNDARY_NAME","hasOutletRegex","OUTLET_BOUNDARY_NAME","componentStack","dynamicValidation","test","createErrorWithComponentOrOwnerStack","ownerStack","captureOwnerStack","name","console","dev","hasReadableErrorStacks","prelude","i","result"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 14631, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/request/utils.ts"],"sourcesContent":["import { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport { afterTaskAsyncStorage } from '../app-render/after-task-async-storage.external'\nimport type { WorkStore } from '../app-render/work-async-storage.external'\n\nexport function throwWithStaticGenerationBailoutErrorWithDynamicError(\n route: string,\n expression: string\n): never {\n throw new StaticGenBailoutError(\n `Route ${route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n}\n\nexport function throwForSearchParamsAccessInUseCache(\n workStore: WorkStore,\n constructorOpt: Function\n): never {\n const error = new Error(\n `Route ${workStore.route} used \\`searchParams\\` inside \"use cache\". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \\`searchParams\\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`\n )\n\n Error.captureStackTrace(error, constructorOpt)\n workStore.invalidDynamicUsageError ??= error\n\n throw error\n}\n\nexport function isRequestAPICallableInsideAfter() {\n const afterTaskStore = afterTaskAsyncStorage.getStore()\n return afterTaskStore?.rootTaskSpawnPhase === 'action'\n}\n"],"names":["isRequestAPICallableInsideAfter","throwForSearchParamsAccessInUseCache","throwWithStaticGenerationBailoutErrorWithDynamicError","route","expression","StaticGenBailoutError","workStore","constructorOpt","error","Error","captureStackTrace","invalidDynamicUsageError","afterTaskStore","afterTaskAsyncStorage","getStore","rootTaskSpawnPhase"],"mappings":";;;;;;;;;;;;;;;IA2BgBA,+BAA+B,EAAA;eAA/BA;;IAdAC,oCAAoC,EAAA;eAApCA;;IATAC,qDAAqD,EAAA;eAArDA;;;yCAJsB;+CACA;AAG/B,SAASA,sDACdC,KAAa,EACbC,UAAkB;IAElB,MAAM,OAAA,cAEL,CAFK,IAAIC,yBAAAA,qBAAqB,CAC7B,CAAC,MAAM,EAAEF,MAAM,4EAA4E,EAAEC,WAAW,0HAA0H,CAAC,GAD/N,qBAAA;eAAA;oBAAA;sBAAA;IAEN;AACF;AAEO,SAASH,qCACdK,SAAoB,EACpBC,cAAwB;IAExB,MAAMC,QAAQ,OAAA,cAEb,CAFa,IAAIC,MAChB,CAAC,MAAM,EAAEH,UAAUH,KAAK,CAAC,2XAA2X,CAAC,GADzY,qBAAA;eAAA;oBAAA;sBAAA;IAEd;IAEAM,MAAMC,iBAAiB,CAACF,OAAOD;IAC/BD,UAAUK,wBAAwB,KAAKH;IAEvC,MAAMA;AACR;AAEO,SAASR;IACd,MAAMY,iBAAiBC,+BAAAA,qBAAqB,CAACC,QAAQ;IACrD,OAAOF,CAAAA,kBAAAA,OAAAA,KAAAA,IAAAA,eAAgBG,kBAAkB,MAAK;AAChD","ignoreList":[0]}}, + {"offset": {"line": 14683, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/promise-with-resolvers.ts"],"sourcesContent":["export function createPromiseWithResolvers(): PromiseWithResolvers {\n // Shim of Stage 4 Promise.withResolvers proposal\n let resolve: (value: T | PromiseLike) => void\n let reject: (reason: any) => void\n const promise = new Promise((res, rej) => {\n resolve = res\n reject = rej\n })\n return { resolve: resolve!, reject: reject!, promise }\n}\n"],"names":["createPromiseWithResolvers","resolve","reject","promise","Promise","res","rej"],"mappings":";;;+BAAgBA,8BAAAA;;;eAAAA;;;AAAT,SAASA;IACd,iDAAiD;IACjD,IAAIC;IACJ,IAAIC;IACJ,MAAMC,UAAU,IAAIC,QAAW,CAACC,KAAKC;QACnCL,UAAUI;QACVH,SAASI;IACX;IACA,OAAO;QAAEL,SAASA;QAAUC,QAAQA;QAASC;IAAQ;AACvD","ignoreList":[0]}}, + {"offset": {"line": 14710, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/app-render/staged-rendering.ts"],"sourcesContent":["import { InvariantError } from '../../shared/lib/invariant-error'\nimport { createPromiseWithResolvers } from '../../shared/lib/promise-with-resolvers'\n\nexport enum RenderStage {\n Before = 1,\n Static = 2,\n Runtime = 3,\n Dynamic = 4,\n Abandoned = 5,\n}\n\nexport type NonStaticRenderStage = RenderStage.Runtime | RenderStage.Dynamic\n\nexport class StagedRenderingController {\n currentStage: RenderStage = RenderStage.Before\n\n staticInterruptReason: Error | null = null\n runtimeInterruptReason: Error | null = null\n staticStageEndTime: number = Infinity\n runtimeStageEndTime: number = Infinity\n\n private runtimeStageListeners: Array<() => void> = []\n private dynamicStageListeners: Array<() => void> = []\n\n private runtimeStagePromise = createPromiseWithResolvers()\n private dynamicStagePromise = createPromiseWithResolvers()\n\n private mayAbandon: boolean = false\n\n constructor(\n private abortSignal: AbortSignal | null = null,\n private hasRuntimePrefetch: boolean\n ) {\n if (abortSignal) {\n abortSignal.addEventListener(\n 'abort',\n () => {\n const { reason } = abortSignal\n if (this.currentStage < RenderStage.Runtime) {\n this.runtimeStagePromise.promise.catch(ignoreReject) // avoid unhandled rejections\n this.runtimeStagePromise.reject(reason)\n }\n if (\n this.currentStage < RenderStage.Dynamic ||\n this.currentStage === RenderStage.Abandoned\n ) {\n this.dynamicStagePromise.promise.catch(ignoreReject) // avoid unhandled rejections\n this.dynamicStagePromise.reject(reason)\n }\n },\n { once: true }\n )\n\n this.mayAbandon = true\n }\n }\n\n onStage(stage: NonStaticRenderStage, callback: () => void) {\n if (this.currentStage >= stage) {\n callback()\n } else if (stage === RenderStage.Runtime) {\n this.runtimeStageListeners.push(callback)\n } else if (stage === RenderStage.Dynamic) {\n this.dynamicStageListeners.push(callback)\n } else {\n // This should never happen\n throw new InvariantError(`Invalid render stage: ${stage}`)\n }\n }\n\n canSyncInterrupt() {\n // If we haven't started the render yet, it can't be interrupted.\n if (this.currentStage === RenderStage.Before) {\n return false\n }\n\n const boundaryStage = this.hasRuntimePrefetch\n ? RenderStage.Dynamic\n : RenderStage.Runtime\n return this.currentStage < boundaryStage\n }\n\n syncInterruptCurrentStageWithReason(reason: Error) {\n if (this.currentStage === RenderStage.Before) {\n return\n }\n\n // If Sync IO occurs during the initial (abandonable) render, we'll retry it,\n // so we want a slightly different flow.\n // See the implementation of `abandonRenderImpl` for more explanation.\n if (this.mayAbandon) {\n return this.abandonRenderImpl()\n }\n\n // If we're in the final render, we cannot abandon it. We need to advance to the Dynamic stage\n // and capture the interruption reason.\n switch (this.currentStage) {\n case RenderStage.Static: {\n this.staticInterruptReason = reason\n this.advanceStage(RenderStage.Dynamic)\n return\n }\n case RenderStage.Runtime: {\n // We only error for Sync IO in the runtime stage if the route\n // is configured to use runtime prefetching.\n // We do this to reflect the fact that during a runtime prefetch,\n // Sync IO aborts aborts the render.\n // Note that `canSyncInterrupt` should prevent us from getting here at all\n // if runtime prefetching isn't enabled.\n if (this.hasRuntimePrefetch) {\n this.runtimeInterruptReason = reason\n this.advanceStage(RenderStage.Dynamic)\n }\n return\n }\n case RenderStage.Dynamic:\n case RenderStage.Abandoned:\n default:\n }\n }\n\n getStaticInterruptReason() {\n return this.staticInterruptReason\n }\n\n getRuntimeInterruptReason() {\n return this.runtimeInterruptReason\n }\n\n getStaticStageEndTime() {\n return this.staticStageEndTime\n }\n\n getRuntimeStageEndTime() {\n return this.runtimeStageEndTime\n }\n\n abandonRender() {\n if (!this.mayAbandon) {\n throw new InvariantError(\n '`abandonRender` called on a stage controller that cannot be abandoned.'\n )\n }\n\n this.abandonRenderImpl()\n }\n\n private abandonRenderImpl() {\n // In staged rendering, only the initial render is abandonable.\n // We can abandon the initial render if\n // 1. We notice a cache miss, and need to wait for caches to fill\n // 2. A sync IO error occurs, and the render should be interrupted\n // (this might be a lazy intitialization of a module,\n // so we still want to restart in this case and see if it still occurs)\n // In either case, we'll be doing another render after this one,\n // so we only want to unblock the Runtime stage, not Dynamic, because\n // unblocking the dynamic stage would likely lead to wasted (uncached) IO.\n const { currentStage } = this\n switch (currentStage) {\n case RenderStage.Static: {\n this.currentStage = RenderStage.Abandoned\n this.resolveRuntimeStage()\n return\n }\n case RenderStage.Runtime: {\n this.currentStage = RenderStage.Abandoned\n return\n }\n case RenderStage.Dynamic:\n case RenderStage.Before:\n case RenderStage.Abandoned:\n break\n default: {\n currentStage satisfies never\n }\n }\n }\n\n advanceStage(\n stage: RenderStage.Static | RenderStage.Runtime | RenderStage.Dynamic\n ) {\n // If we're already at the target stage or beyond, do nothing.\n // (this can happen e.g. if sync IO advanced us to the dynamic stage)\n if (stage <= this.currentStage) {\n return\n }\n\n let currentStage = this.currentStage\n this.currentStage = stage\n\n if (currentStage < RenderStage.Runtime && stage >= RenderStage.Runtime) {\n this.staticStageEndTime = performance.now() + performance.timeOrigin\n this.resolveRuntimeStage()\n }\n if (currentStage < RenderStage.Dynamic && stage >= RenderStage.Dynamic) {\n this.runtimeStageEndTime = performance.now() + performance.timeOrigin\n this.resolveDynamicStage()\n return\n }\n }\n\n /** Fire the `onStage` listeners for the runtime stage and unblock any promises waiting for it. */\n private resolveRuntimeStage() {\n const runtimeListeners = this.runtimeStageListeners\n for (let i = 0; i < runtimeListeners.length; i++) {\n runtimeListeners[i]()\n }\n runtimeListeners.length = 0\n this.runtimeStagePromise.resolve()\n }\n\n /** Fire the `onStage` listeners for the dynamic stage and unblock any promises waiting for it. */\n private resolveDynamicStage() {\n const dynamicListeners = this.dynamicStageListeners\n for (let i = 0; i < dynamicListeners.length; i++) {\n dynamicListeners[i]()\n }\n dynamicListeners.length = 0\n this.dynamicStagePromise.resolve()\n }\n\n private getStagePromise(stage: NonStaticRenderStage): Promise {\n switch (stage) {\n case RenderStage.Runtime: {\n return this.runtimeStagePromise.promise\n }\n case RenderStage.Dynamic: {\n return this.dynamicStagePromise.promise\n }\n default: {\n stage satisfies never\n throw new InvariantError(`Invalid render stage: ${stage}`)\n }\n }\n }\n\n waitForStage(stage: NonStaticRenderStage) {\n return this.getStagePromise(stage)\n }\n\n delayUntilStage(\n stage: NonStaticRenderStage,\n displayName: string | undefined,\n resolvedValue: T\n ) {\n const ioTriggerPromise = this.getStagePromise(stage)\n\n const promise = makeDevtoolsIOPromiseFromIOTrigger(\n ioTriggerPromise,\n displayName,\n resolvedValue\n )\n\n // Analogously to `makeHangingPromise`, we might reject this promise if the signal is invoked.\n // (e.g. in the case where we don't want want the render to proceed to the dynamic stage and abort it).\n // We shouldn't consider this an unhandled rejection, so we attach a noop catch handler here to suppress this warning.\n if (this.abortSignal) {\n promise.catch(ignoreReject)\n }\n return promise\n }\n}\n\nfunction ignoreReject() {}\n\n// TODO(restart-on-cache-miss): the layering of `delayUntilStage`,\n// `makeDevtoolsIOPromiseFromIOTrigger` and and `makeDevtoolsIOAwarePromise`\n// is confusing, we should clean it up.\nfunction makeDevtoolsIOPromiseFromIOTrigger(\n ioTrigger: Promise,\n displayName: string | undefined,\n resolvedValue: T\n): Promise {\n // If we create a `new Promise` and give it a displayName\n // (with no userspace code above us in the stack)\n // React Devtools will use it as the IO cause when determining \"suspended by\".\n // In particular, it should shadow any inner IO that resolved/rejected the promise\n // (in case of staged rendering, this will be the `setTimeout` that triggers the relevant stage)\n const promise = new Promise((resolve, reject) => {\n ioTrigger.then(resolve.bind(null, resolvedValue), reject)\n })\n if (displayName !== undefined) {\n // @ts-expect-error\n promise.displayName = displayName\n }\n return promise\n}\n"],"names":["RenderStage","StagedRenderingController","constructor","abortSignal","hasRuntimePrefetch","currentStage","staticInterruptReason","runtimeInterruptReason","staticStageEndTime","Infinity","runtimeStageEndTime","runtimeStageListeners","dynamicStageListeners","runtimeStagePromise","createPromiseWithResolvers","dynamicStagePromise","mayAbandon","addEventListener","reason","promise","catch","ignoreReject","reject","once","onStage","stage","callback","push","InvariantError","canSyncInterrupt","boundaryStage","syncInterruptCurrentStageWithReason","abandonRenderImpl","advanceStage","getStaticInterruptReason","getRuntimeInterruptReason","getStaticStageEndTime","getRuntimeStageEndTime","abandonRender","resolveRuntimeStage","performance","now","timeOrigin","resolveDynamicStage","runtimeListeners","i","length","resolve","dynamicListeners","getStagePromise","waitForStage","delayUntilStage","displayName","resolvedValue","ioTriggerPromise","makeDevtoolsIOPromiseFromIOTrigger","ioTrigger","Promise","then","bind","undefined"],"mappings":";;;;;;;;;;;;;;IAGYA,WAAW,EAAA;eAAXA;;IAUCC,yBAAyB,EAAA;eAAzBA;;;gCAbkB;sCACY;AAEpC,IAAKD,cAAAA,WAAAA,GAAAA,SAAAA,WAAAA;;;;;;WAAAA;;AAUL,MAAMC;IAgBXC,YACUC,cAAkC,IAAI,EACtCC,kBAA2B,CACnC;aAFQD,WAAAA,GAAAA;aACAC,kBAAAA,GAAAA;aAjBVC,YAAAA,GAAAA;aAEAC,qBAAAA,GAAsC;aACtCC,sBAAAA,GAAuC;aACvCC,kBAAAA,GAA6BC;aAC7BC,mBAAAA,GAA8BD;aAEtBE,qBAAAA,GAA2C,EAAE;aAC7CC,qBAAAA,GAA2C,EAAE;aAE7CC,mBAAAA,GAAsBC,CAAAA,GAAAA,sBAAAA,0BAA0B;aAChDC,mBAAAA,GAAsBD,CAAAA,GAAAA,sBAAAA,0BAA0B;aAEhDE,UAAAA,GAAsB;QAM5B,IAAIb,aAAa;YACfA,YAAYc,gBAAgB,CAC1B,SACA;gBACE,MAAM,EAAEC,MAAM,EAAE,GAAGf;gBACnB,IAAI,IAAI,CAACE,YAAY,GAAA,GAAwB;oBAC3C,IAAI,CAACQ,mBAAmB,CAACM,OAAO,CAACC,KAAK,CAACC,cAAc,6BAA6B;;oBAClF,IAAI,CAACR,mBAAmB,CAACS,MAAM,CAACJ;gBAClC;gBACA,IACE,IAAI,CAACb,YAAY,GAAA,KACjB,IAAI,CAACA,YAAY,KAAA,GACjB;oBACA,IAAI,CAACU,mBAAmB,CAACI,OAAO,CAACC,KAAK,CAACC,cAAc,6BAA6B;;oBAClF,IAAI,CAACN,mBAAmB,CAACO,MAAM,CAACJ;gBAClC;YACF,GACA;gBAAEK,MAAM;YAAK;YAGf,IAAI,CAACP,UAAU,GAAG;QACpB;IACF;IAEAQ,QAAQC,KAA2B,EAAEC,QAAoB,EAAE;QACzD,IAAI,IAAI,CAACrB,YAAY,IAAIoB,OAAO;YAC9BC;QACF,OAAO,IAAID,UAAAA,GAA+B;YACxC,IAAI,CAACd,qBAAqB,CAACgB,IAAI,CAACD;QAClC,OAAO,IAAID,UAAAA,GAA+B;YACxC,IAAI,CAACb,qBAAqB,CAACe,IAAI,CAACD;QAClC,OAAO;YACL,2BAA2B;YAC3B,MAAM,OAAA,cAAoD,CAApD,IAAIE,gBAAAA,cAAc,CAAC,CAAC,sBAAsB,EAAEH,OAAO,GAAnD,qBAAA;uBAAA;4BAAA;8BAAA;YAAmD;QAC3D;IACF;IAEAI,mBAAmB;QACjB,iEAAiE;QACjE,IAAI,IAAI,CAACxB,YAAY,KAAA,GAAyB;YAC5C,OAAO;QACT;QAEA,MAAMyB,gBAAgB,IAAI,CAAC1B,kBAAkB,GAAA,IAAA;QAG7C,OAAO,IAAI,CAACC,YAAY,GAAGyB;IAC7B;IAEAC,oCAAoCb,MAAa,EAAE;QACjD,IAAI,IAAI,CAACb,YAAY,KAAA,GAAyB;YAC5C;QACF;QAEA,6EAA6E;QAC7E,wCAAwC;QACxC,sEAAsE;QACtE,IAAI,IAAI,CAACW,UAAU,EAAE;YACnB,OAAO,IAAI,CAACgB,iBAAiB;QAC/B;QAEA,8FAA8F;QAC9F,uCAAuC;QACvC,OAAQ,IAAI,CAAC3B,YAAY;YACvB,KAAA;gBAAyB;oBACvB,IAAI,CAACC,qBAAqB,GAAGY;oBAC7B,IAAI,CAACe,YAAY,CAAA;oBACjB;gBACF;YACA,KAAA;gBAA0B;oBACxB,8DAA8D;oBAC9D,4CAA4C;oBAC5C,iEAAiE;oBACjE,oCAAoC;oBACpC,0EAA0E;oBAC1E,wCAAwC;oBACxC,IAAI,IAAI,CAAC7B,kBAAkB,EAAE;wBAC3B,IAAI,CAACG,sBAAsB,GAAGW;wBAC9B,IAAI,CAACe,YAAY,CAAA;oBACnB;oBACA;gBACF;YACA,KAAA;YACA,KAAA;YACA;QACF;IACF;IAEAC,2BAA2B;QACzB,OAAO,IAAI,CAAC5B,qBAAqB;IACnC;IAEA6B,4BAA4B;QAC1B,OAAO,IAAI,CAAC5B,sBAAsB;IACpC;IAEA6B,wBAAwB;QACtB,OAAO,IAAI,CAAC5B,kBAAkB;IAChC;IAEA6B,yBAAyB;QACvB,OAAO,IAAI,CAAC3B,mBAAmB;IACjC;IAEA4B,gBAAgB;QACd,IAAI,CAAC,IAAI,CAACtB,UAAU,EAAE;YACpB,MAAM,OAAA,cAEL,CAFK,IAAIY,gBAAAA,cAAc,CACtB,2EADI,qBAAA;uBAAA;4BAAA;8BAAA;YAEN;QACF;QAEA,IAAI,CAACI,iBAAiB;IACxB;IAEQA,oBAAoB;QAC1B,+DAA+D;QAC/D,uCAAuC;QACvC,mEAAmE;QACnE,oEAAoE;QACpE,0DAA0D;QAC1D,6EAA6E;QAC7E,gEAAgE;QAChE,qEAAqE;QACrE,0EAA0E;QAC1E,MAAM,EAAE3B,YAAY,EAAE,GAAG,IAAI;QAC7B,OAAQA;YACN,KAAA;gBAAyB;oBACvB,IAAI,CAACA,YAAY,GAAA;oBACjB,IAAI,CAACkC,mBAAmB;oBACxB;gBACF;YACA,KAAA;gBAA0B;oBACxB,IAAI,CAAClC,YAAY,GAAA;oBACjB;gBACF;YACA,KAAA;YACA,KAAA;YACA,KAAA;gBACE;YACF;gBAAS;oBACPA;gBACF;QACF;IACF;IAEA4B,aACER,KAAqE,EACrE;QACA,8DAA8D;QAC9D,qEAAqE;QACrE,IAAIA,SAAS,IAAI,CAACpB,YAAY,EAAE;YAC9B;QACF;QAEA,IAAIA,eAAe,IAAI,CAACA,YAAY;QACpC,IAAI,CAACA,YAAY,GAAGoB;QAEpB,IAAIpB,eAAAA,KAAsCoB,SAAAA,GAA8B;YACtE,IAAI,CAACjB,kBAAkB,GAAGgC,YAAYC,GAAG,KAAKD,YAAYE,UAAU;YACpE,IAAI,CAACH,mBAAmB;QAC1B;QACA,IAAIlC,eAAAA,KAAsCoB,SAAAA,GAA8B;YACtE,IAAI,CAACf,mBAAmB,GAAG8B,YAAYC,GAAG,KAAKD,YAAYE,UAAU;YACrE,IAAI,CAACC,mBAAmB;YACxB;QACF;IACF;IAEA,gGAAgG,GACxFJ,sBAAsB;QAC5B,MAAMK,mBAAmB,IAAI,CAACjC,qBAAqB;QACnD,IAAK,IAAIkC,IAAI,GAAGA,IAAID,iBAAiBE,MAAM,EAAED,IAAK;YAChDD,gBAAgB,CAACC,EAAE;QACrB;QACAD,iBAAiBE,MAAM,GAAG;QAC1B,IAAI,CAACjC,mBAAmB,CAACkC,OAAO;IAClC;IAEA,gGAAgG,GACxFJ,sBAAsB;QAC5B,MAAMK,mBAAmB,IAAI,CAACpC,qBAAqB;QACnD,IAAK,IAAIiC,IAAI,GAAGA,IAAIG,iBAAiBF,MAAM,EAAED,IAAK;YAChDG,gBAAgB,CAACH,EAAE;QACrB;QACAG,iBAAiBF,MAAM,GAAG;QAC1B,IAAI,CAAC/B,mBAAmB,CAACgC,OAAO;IAClC;IAEQE,gBAAgBxB,KAA2B,EAAiB;QAClE,OAAQA;YACN,KAAA;gBAA0B;oBACxB,OAAO,IAAI,CAACZ,mBAAmB,CAACM,OAAO;gBACzC;YACA,KAAA;gBAA0B;oBACxB,OAAO,IAAI,CAACJ,mBAAmB,CAACI,OAAO;gBACzC;YACA;gBAAS;oBACPM;oBACA,MAAM,OAAA,cAAoD,CAApD,IAAIG,gBAAAA,cAAc,CAAC,CAAC,sBAAsB,EAAEH,OAAO,GAAnD,qBAAA;+BAAA;oCAAA;sCAAA;oBAAmD;gBAC3D;QACF;IACF;IAEAyB,aAAazB,KAA2B,EAAE;QACxC,OAAO,IAAI,CAACwB,eAAe,CAACxB;IAC9B;IAEA0B,gBACE1B,KAA2B,EAC3B2B,WAA+B,EAC/BC,aAAgB,EAChB;QACA,MAAMC,mBAAmB,IAAI,CAACL,eAAe,CAACxB;QAE9C,MAAMN,UAAUoC,mCACdD,kBACAF,aACAC;QAGF,8FAA8F;QAC9F,uGAAuG;QACvG,sHAAsH;QACtH,IAAI,IAAI,CAAClD,WAAW,EAAE;YACpBgB,QAAQC,KAAK,CAACC;QAChB;QACA,OAAOF;IACT;AACF;AAEA,SAASE,gBAAgB;AAEzB,kEAAkE;AAClE,4EAA4E;AAC5E,uCAAuC;AACvC,SAASkC,mCACPC,SAAuB,EACvBJ,WAA+B,EAC/BC,aAAgB;IAEhB,yDAAyD;IACzD,iDAAiD;IACjD,8EAA8E;IAC9E,kFAAkF;IAClF,gGAAgG;IAChG,MAAMlC,UAAU,IAAIsC,QAAW,CAACV,SAASzB;QACvCkC,UAAUE,IAAI,CAACX,QAAQY,IAAI,CAAC,MAAMN,gBAAgB/B;IACpD;IACA,IAAI8B,gBAAgBQ,WAAW;QAC7B,mBAAmB;QACnBzC,QAAQiC,WAAW,GAAGA;IACxB;IACA,OAAOjC;AACT","ignoreList":[0]}}, + {"offset": {"line": 14984, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/request/connection.ts"],"sourcesContent":["import { workAsyncStorage } from '../app-render/work-async-storage.external'\nimport {\n throwForMissingRequestStore,\n workUnitAsyncStorage,\n} from '../app-render/work-unit-async-storage.external'\nimport {\n postponeWithTracking,\n throwToInterruptStaticGeneration,\n trackDynamicDataInDynamicRender,\n} from '../app-render/dynamic-rendering'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport {\n makeHangingPromise,\n makeDevtoolsIOAwarePromise,\n} from '../dynamic-rendering-utils'\nimport { isRequestAPICallableInsideAfter } from './utils'\nimport { RenderStage } from '../app-render/staged-rendering'\n\n/**\n * This function allows you to indicate that you require an actual user Request before continuing.\n *\n * During prerendering it will never resolve and during rendering it resolves immediately.\n */\nexport function connection(): Promise {\n const callingExpression = 'connection'\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (workStore) {\n if (\n workUnitStore &&\n workUnitStore.phase === 'after' &&\n !isRequestAPICallableInsideAfter()\n ) {\n throw new Error(\n `Route ${workStore.route} used \\`connection()\\` inside \\`after()\\`. The \\`connection()\\` function is used to indicate the subsequent code must only run when there is an actual Request, but \\`after()\\` executes after the request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`\n )\n }\n\n if (workStore.forceStatic) {\n // When using forceStatic, we override all other logic and always just\n // return a resolving promise without tracking.\n return Promise.resolve(undefined)\n }\n\n if (workStore.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${workStore.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`connection()\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'cache': {\n const error = new Error(\n `Route ${workStore.route} used \\`connection()\\` inside \"use cache\". The \\`connection()\\` function is used to indicate the subsequent code must only run when there is an actual request, but caches must be able to be produced before a request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`\n )\n Error.captureStackTrace(error, connection)\n workStore.invalidDynamicUsageError ??= error\n throw error\n }\n case 'private-cache': {\n // It might not be intuitive to throw for private caches as well, but\n // we don't consider runtime prefetches as \"actual requests\" (in the\n // navigation sense), despite allowing them to read cookies.\n const error = new Error(\n `Route ${workStore.route} used \\`connection()\\` inside \"use cache: private\". The \\`connection()\\` function is used to indicate the subsequent code must only run when there is an actual navigation request, but caches must be able to be produced before a navigation request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`\n )\n Error.captureStackTrace(error, connection)\n workStore.invalidDynamicUsageError ??= error\n throw error\n }\n case 'unstable-cache':\n throw new Error(\n `Route ${workStore.route} used \\`connection()\\` inside a function cached with \\`unstable_cache()\\`. The \\`connection()\\` function is used to indicate the subsequent code must only run when there is an actual Request, but caches must be able to be produced before a Request so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`\n )\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n // We return a promise that never resolves to allow the prerender to\n // stall at this point.\n return makeHangingPromise(\n workUnitStore.renderSignal,\n workStore.route,\n '`connection()`'\n )\n case 'prerender-ppr':\n // We use React's postpone API to interrupt rendering here to create a\n // dynamic hole\n return postponeWithTracking(\n workStore.route,\n 'connection',\n workUnitStore.dynamicTracking\n )\n case 'prerender-legacy':\n // We throw an error here to interrupt prerendering to mark the route\n // as dynamic\n return throwToInterruptStaticGeneration(\n 'connection',\n workStore,\n workUnitStore\n )\n case 'request':\n trackDynamicDataInDynamicRender(workUnitStore)\n if (process.env.NODE_ENV === 'development') {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n if (workUnitStore.asyncApiPromises) {\n return workUnitStore.asyncApiPromises.connection\n }\n return makeDevtoolsIOAwarePromise(\n undefined,\n workUnitStore,\n RenderStage.Dynamic\n )\n } else {\n return Promise.resolve(undefined)\n }\n default:\n workUnitStore satisfies never\n }\n }\n }\n\n // If we end up here, there was no work store or work unit store present.\n throwForMissingRequestStore(callingExpression)\n}\n"],"names":["connection","callingExpression","workStore","workAsyncStorage","getStore","workUnitStore","workUnitAsyncStorage","phase","isRequestAPICallableInsideAfter","Error","route","forceStatic","Promise","resolve","undefined","dynamicShouldError","StaticGenBailoutError","type","error","captureStackTrace","invalidDynamicUsageError","makeHangingPromise","renderSignal","postponeWithTracking","dynamicTracking","throwToInterruptStaticGeneration","trackDynamicDataInDynamicRender","process","env","NODE_ENV","asyncApiPromises","makeDevtoolsIOAwarePromise","RenderStage","Dynamic","throwForMissingRequestStore"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 15094, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/server.js"],"sourcesContent":["const serverExports = {\n NextRequest: require('next/dist/server/web/spec-extension/request')\n .NextRequest,\n NextResponse: require('next/dist/server/web/spec-extension/response')\n .NextResponse,\n ImageResponse: require('next/dist/server/web/spec-extension/image-response')\n .ImageResponse,\n userAgentFromString: require('next/dist/server/web/spec-extension/user-agent')\n .userAgentFromString,\n userAgent: require('next/dist/server/web/spec-extension/user-agent')\n .userAgent,\n URLPattern: require('next/dist/server/web/spec-extension/url-pattern')\n .URLPattern,\n after: require('next/dist/server/after').after,\n connection: require('next/dist/server/request/connection').connection,\n}\n\n// https://nodejs.org/api/esm.html#commonjs-namespaces\n// When importing CommonJS modules, the module.exports object is provided as the default export\nmodule.exports = serverExports\n\n// make import { xxx } from 'next/server' work\nexports.NextRequest = serverExports.NextRequest\nexports.NextResponse = serverExports.NextResponse\nexports.ImageResponse = serverExports.ImageResponse\nexports.userAgentFromString = serverExports.userAgentFromString\nexports.userAgent = serverExports.userAgent\nexports.URLPattern = serverExports.URLPattern\nexports.after = serverExports.after\nexports.connection = serverExports.connection\n"],"names":[],"mappings":"AAAA,MAAM,gBAAgB;IACpB,aAAa,wJACV,WAAW;IACd,cAAc,yJACX,YAAY;IACf,eAAe,+JACZ,aAAa;IAChB,qBAAqB,2JAClB,mBAAmB;IACtB,WAAW,2JACR,SAAS;IACZ,YAAY,4JACT,UAAU;IACb,OAAO,yIAAkC,KAAK;IAC9C,YAAY,gJAA+C,UAAU;AACvE;AAEA,sDAAsD;AACtD,+FAA+F;AAC/F,OAAO,OAAO,GAAG;AAEjB,8CAA8C;AAC9C,QAAQ,WAAW,GAAG,cAAc,WAAW;AAC/C,QAAQ,YAAY,GAAG,cAAc,YAAY;AACjD,QAAQ,aAAa,GAAG,cAAc,aAAa;AACnD,QAAQ,mBAAmB,GAAG,cAAc,mBAAmB;AAC/D,QAAQ,SAAS,GAAG,cAAc,SAAS;AAC3C,QAAQ,UAAU,GAAG,cAAc,UAAU;AAC7C,QAAQ,KAAK,GAAG,cAAc,KAAK;AACnC,QAAQ,UAAU,GAAG,cAAc,UAAU","ignoreList":[0]}}, + {"offset": {"line": 15120, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/shared/lib/action-revalidation-kind.ts"],"sourcesContent":["export type ActionRevalidationKind = 0 | 1 | 2\n\nexport const ActionDidNotRevalidate = 0\nexport const ActionDidRevalidateStaticAndDynamic = 1\nexport const ActionDidRevalidateDynamicOnly = 2\n"],"names":["ActionDidNotRevalidate","ActionDidRevalidateDynamicOnly","ActionDidRevalidateStaticAndDynamic"],"mappings":";;;;;;;;;;;;;;;IAEaA,sBAAsB,EAAA;eAAtBA;;IAEAC,8BAA8B,EAAA;eAA9BA;;IADAC,mCAAmC,EAAA;eAAnCA;;;AADN,MAAMF,yBAAyB;AAC/B,MAAME,sCAAsC;AAC5C,MAAMD,iCAAiC","ignoreList":[0]}}, + {"offset": {"line": 15152, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/spec-extension/adapters/request-cookies.ts"],"sourcesContent":["import { RequestCookies } from '../cookies'\n\nimport { ResponseCookies } from '../cookies'\nimport { ReflectAdapter } from './reflect'\nimport { workAsyncStorage } from '../../../app-render/work-async-storage.external'\nimport type { RequestStore } from '../../../app-render/work-unit-async-storage.external'\nimport { ActionDidRevalidateStaticAndDynamic } from '../../../../shared/lib/action-revalidation-kind'\n\n/**\n * @internal\n */\nexport class ReadonlyRequestCookiesError extends Error {\n constructor() {\n super(\n 'Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options'\n )\n }\n\n public static callable() {\n throw new ReadonlyRequestCookiesError()\n }\n}\n\n// We use this to type some APIs but we don't construct instances directly\nexport type { ResponseCookies }\n\n// The `cookies()` API is a mix of request and response cookies. For `.get()` methods,\n// we want to return the request cookie if it exists. For mutative methods like `.set()`,\n// we want to return the response cookie.\nexport type ReadonlyRequestCookies = Omit<\n RequestCookies,\n 'set' | 'clear' | 'delete'\n> &\n Pick\n\nexport class RequestCookiesAdapter {\n public static seal(cookies: RequestCookies): ReadonlyRequestCookies {\n return new Proxy(cookies as any, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'clear':\n case 'delete':\n case 'set':\n return ReadonlyRequestCookiesError.callable\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n }\n}\n\nconst SYMBOL_MODIFY_COOKIE_VALUES = Symbol.for('next.mutated.cookies')\n\nexport function getModifiedCookieValues(\n cookies: ResponseCookies\n): ResponseCookie[] {\n const modified: ResponseCookie[] | undefined = (cookies as unknown as any)[\n SYMBOL_MODIFY_COOKIE_VALUES\n ]\n if (!modified || !Array.isArray(modified) || modified.length === 0) {\n return []\n }\n\n return modified\n}\n\ntype SetCookieArgs =\n | [key: string, value: string, cookie?: Partial]\n | [options: ResponseCookie]\n\nexport function appendMutableCookies(\n headers: Headers,\n mutableCookies: ResponseCookies\n): boolean {\n const modifiedCookieValues = getModifiedCookieValues(mutableCookies)\n if (modifiedCookieValues.length === 0) {\n return false\n }\n\n // Return a new response that extends the response with\n // the modified cookies as fallbacks. `res` cookies\n // will still take precedence.\n const resCookies = new ResponseCookies(headers)\n const returnedCookies = resCookies.getAll()\n\n // Set the modified cookies as fallbacks.\n for (const cookie of modifiedCookieValues) {\n resCookies.set(cookie)\n }\n\n // Set the original cookies as the final values.\n for (const cookie of returnedCookies) {\n resCookies.set(cookie)\n }\n\n return true\n}\n\ntype ResponseCookie = NonNullable<\n ReturnType['get']>\n>\n\nexport class MutableRequestCookiesAdapter {\n public static wrap(\n cookies: RequestCookies,\n onUpdateCookies?: (cookies: string[]) => void\n ): ResponseCookies {\n const responseCookies = new ResponseCookies(new Headers())\n for (const cookie of cookies.getAll()) {\n responseCookies.set(cookie)\n }\n\n let modifiedValues: ResponseCookie[] = []\n const modifiedCookies = new Set()\n const updateResponseCookies = () => {\n // TODO-APP: change method of getting workStore\n const workStore = workAsyncStorage.getStore()\n if (workStore) {\n workStore.pathWasRevalidated = ActionDidRevalidateStaticAndDynamic\n }\n\n const allCookies = responseCookies.getAll()\n modifiedValues = allCookies.filter((c) => modifiedCookies.has(c.name))\n if (onUpdateCookies) {\n const serializedCookies: string[] = []\n for (const cookie of modifiedValues) {\n const tempCookies = new ResponseCookies(new Headers())\n tempCookies.set(cookie)\n serializedCookies.push(tempCookies.toString())\n }\n\n onUpdateCookies(serializedCookies)\n }\n }\n\n const wrappedCookies = new Proxy(responseCookies, {\n get(target, prop, receiver) {\n switch (prop) {\n // A special symbol to get the modified cookie values\n case SYMBOL_MODIFY_COOKIE_VALUES:\n return modifiedValues\n\n // TODO: Throw error if trying to set a cookie after the response\n // headers have been set.\n case 'delete':\n return function (...args: [string] | [ResponseCookie]) {\n modifiedCookies.add(\n typeof args[0] === 'string' ? args[0] : args[0].name\n )\n try {\n target.delete(...args)\n return wrappedCookies\n } finally {\n updateResponseCookies()\n }\n }\n case 'set':\n return function (...args: SetCookieArgs) {\n modifiedCookies.add(\n typeof args[0] === 'string' ? args[0] : args[0].name\n )\n try {\n target.set(...args)\n return wrappedCookies\n } finally {\n updateResponseCookies()\n }\n }\n\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n\n return wrappedCookies\n }\n}\n\nexport function createCookiesWithMutableAccessCheck(\n requestStore: RequestStore\n): ResponseCookies {\n const wrappedCookies = new Proxy(requestStore.mutableCookies, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'delete':\n return function (...args: [string] | [ResponseCookie]) {\n ensureCookiesAreStillMutable(requestStore, 'cookies().delete')\n target.delete(...args)\n return wrappedCookies\n }\n case 'set':\n return function (...args: SetCookieArgs) {\n ensureCookiesAreStillMutable(requestStore, 'cookies().set')\n target.set(...args)\n return wrappedCookies\n }\n\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n return wrappedCookies\n}\n\nexport function areCookiesMutableInCurrentPhase(requestStore: RequestStore) {\n return requestStore.phase === 'action'\n}\n\n/** Ensure that cookies() starts throwing on mutation\n * if we changed phases and can no longer mutate.\n *\n * This can happen when going:\n * 'render' -> 'after'\n * 'action' -> 'render'\n * */\nfunction ensureCookiesAreStillMutable(\n requestStore: RequestStore,\n _callingExpression: string\n) {\n if (!areCookiesMutableInCurrentPhase(requestStore)) {\n // TODO: maybe we can give a more precise error message based on callingExpression?\n throw new ReadonlyRequestCookiesError()\n }\n}\n\nexport function responseCookiesToRequestCookies(\n responseCookies: ResponseCookies\n): RequestCookies {\n const requestCookies = new RequestCookies(new Headers())\n for (const cookie of responseCookies.getAll()) {\n requestCookies.set(cookie)\n }\n return requestCookies\n}\n"],"names":["MutableRequestCookiesAdapter","ReadonlyRequestCookiesError","RequestCookiesAdapter","appendMutableCookies","areCookiesMutableInCurrentPhase","createCookiesWithMutableAccessCheck","getModifiedCookieValues","responseCookiesToRequestCookies","Error","constructor","callable","seal","cookies","Proxy","get","target","prop","receiver","ReflectAdapter","SYMBOL_MODIFY_COOKIE_VALUES","Symbol","for","modified","Array","isArray","length","headers","mutableCookies","modifiedCookieValues","resCookies","ResponseCookies","returnedCookies","getAll","cookie","set","wrap","onUpdateCookies","responseCookies","Headers","modifiedValues","modifiedCookies","Set","updateResponseCookies","workStore","workAsyncStorage","getStore","pathWasRevalidated","ActionDidRevalidateStaticAndDynamic","allCookies","filter","c","has","name","serializedCookies","tempCookies","push","toString","wrappedCookies","args","add","delete","requestStore","ensureCookiesAreStillMutable","phase","_callingExpression","requestCookies","RequestCookies"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 15364, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/create-deduped-by-callsite-server-error-logger.ts"],"sourcesContent":["import * as React from 'react'\n\nconst errorRef: { current: null | Error } = { current: null }\n\n// React.cache is currently only available in canary/experimental React channels.\nconst cache =\n typeof React.cache === 'function'\n ? React.cache\n : (fn: (key: unknown) => void) => fn\n\n// When Cache Components is enabled, we record these as errors so that they\n// are captured by the dev overlay as it's more critical to fix these\n// when enabled.\nconst logErrorOrWarn = process.env.__NEXT_CACHE_COMPONENTS\n ? console.error\n : console.warn\n\n// We don't want to dedupe across requests.\n// The developer might've just attempted to fix the warning so we should warn again if it still happens.\nconst flushCurrentErrorIfNew = cache(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- cache key\n (key: unknown) => {\n try {\n logErrorOrWarn(errorRef.current)\n } finally {\n errorRef.current = null\n }\n }\n)\n\n/**\n * Creates a function that logs an error message that is deduped by the userland\n * callsite.\n * This requires no indirection between the call of this function and the userland\n * callsite i.e. there's only a single library frame above this.\n * Do not use on the Client where sourcemaps and ignore listing might be enabled.\n * Only use that for warnings need a fix independent of the callstack.\n *\n * @param getMessage\n * @returns\n */\nexport function createDedupedByCallsiteServerErrorLoggerDev(\n getMessage: (...args: Args) => Error\n) {\n return function logDedupedError(...args: Args) {\n const message = getMessage(...args)\n\n if (process.env.NODE_ENV !== 'production') {\n const callStackFrames = new Error().stack?.split('\\n')\n if (callStackFrames === undefined || callStackFrames.length < 4) {\n logErrorOrWarn(message)\n } else {\n // Error:\n // logDedupedError\n // asyncApiBeingAccessedSynchronously\n // \n // TODO: This breaks if sourcemaps with ignore lists are enabled.\n const key = callStackFrames[4]\n errorRef.current = message\n flushCurrentErrorIfNew(key)\n }\n } else {\n logErrorOrWarn(message)\n }\n }\n}\n"],"names":["createDedupedByCallsiteServerErrorLoggerDev","errorRef","current","cache","React","fn","logErrorOrWarn","process","env","__NEXT_CACHE_COMPONENTS","console","error","warn","flushCurrentErrorIfNew","key","getMessage","logDedupedError","args","message","NODE_ENV","callStackFrames","Error","stack","split","undefined","length"],"mappings":";;;+BAyCgBA,+CAAAA;;;eAAAA;;;+DAzCO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEvB,MAAMC,WAAsC;IAAEC,SAAS;AAAK;AAE5D,iFAAiF;AACjF,MAAMC,QACJ,OAAOC,OAAMD,KAAK,KAAK,aACnBC,OAAMD,KAAK,GACX,CAACE,KAA+BA;AAEtC,2EAA2E;AAC3E,qEAAqE;AACrE,gBAAgB;AAChB,MAAMC,iBAAiBC,QAAQC,GAAG,CAACC,uBAAuB,GACtDC,QAAQC,KAAK,aACbD,QAAQE,IAAI;AAEhB,2CAA2C;AAC3C,wGAAwG;AACxG,MAAMC,yBAAyBV,MAC7B,AACA,CAACW,yEADyE;IAExE,IAAI;QACFR,eAAeL,SAASC,OAAO;IACjC,SAAU;QACRD,SAASC,OAAO,GAAG;IACrB;AACF;AAcK,SAASF,4CACde,UAAoC;IAEpC,OAAO,SAASC,gBAAgB,GAAGC,IAAU;QAC3C,MAAMC,UAAUH,cAAcE;QAE9B,IAAIV,QAAQC,GAAG,CAACW,QAAQ,KAAK,WAAc;gBACjB;YAAxB,MAAMC,kBAAAA,CAAkB,SAAA,IAAIC,QAAQC,KAAK,KAAA,OAAA,KAAA,IAAjB,OAAmBC,KAAK,CAAC;YACjD,IAAIH,oBAAoBI,aAAaJ,gBAAgBK,MAAM,GAAG,GAAG;gBAC/DnB,eAAeY;YACjB,OAAO;gBACL,SAAS;gBACT,oBAAoB;gBACpB,uCAAuC;gBACvC,wBAAwB;gBACxB,iEAAiE;gBACjE,MAAMJ,MAAMM,eAAe,CAAC,EAAE;gBAC9BnB,SAASC,OAAO,GAAGgB;gBACnBL,uBAAuBC;YACzB;QACF,OAAO;;IAGT;AACF","ignoreList":[0]}}, + {"offset": {"line": 15459, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/request/cookies.ts"],"sourcesContent":["import {\n type ReadonlyRequestCookies,\n areCookiesMutableInCurrentPhase,\n RequestCookiesAdapter,\n} from '../web/spec-extension/adapters/request-cookies'\nimport { RequestCookies } from '../web/spec-extension/cookies'\nimport {\n workAsyncStorage,\n type WorkStore,\n} from '../app-render/work-async-storage.external'\nimport {\n throwForMissingRequestStore,\n workUnitAsyncStorage,\n type PrerenderStoreModern,\n type RequestStore,\n} from '../app-render/work-unit-async-storage.external'\nimport {\n delayUntilRuntimeStage,\n postponeWithTracking,\n throwToInterruptStaticGeneration,\n trackDynamicDataInDynamicRender,\n} from '../app-render/dynamic-rendering'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport {\n makeDevtoolsIOAwarePromise,\n makeHangingPromise,\n} from '../dynamic-rendering-utils'\nimport { createDedupedByCallsiteServerErrorLoggerDev } from '../create-deduped-by-callsite-server-error-logger'\nimport { isRequestAPICallableInsideAfter } from './utils'\nimport { InvariantError } from '../../shared/lib/invariant-error'\nimport { RenderStage } from '../app-render/staged-rendering'\n\nexport function cookies(): Promise {\n const callingExpression = 'cookies'\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (workStore) {\n if (\n workUnitStore &&\n workUnitStore.phase === 'after' &&\n !isRequestAPICallableInsideAfter()\n ) {\n throw new Error(\n // TODO(after): clarify that this only applies to pages?\n `Route ${workStore.route} used \\`cookies()\\` inside \\`after()\\`. This is not supported. If you need this data inside an \\`after()\\` callback, use \\`cookies()\\` outside of the callback. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`\n )\n }\n\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // cookies object without tracking\n const underlyingCookies = createEmptyCookies()\n return makeUntrackedCookies(underlyingCookies)\n }\n\n if (workStore.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${workStore.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`cookies()\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n const error = new Error(\n `Route ${workStore.route} used \\`cookies()\\` inside \"use cache\". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \\`cookies()\\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`\n )\n Error.captureStackTrace(error, cookies)\n workStore.invalidDynamicUsageError ??= error\n throw error\n case 'unstable-cache':\n throw new Error(\n `Route ${workStore.route} used \\`cookies()\\` inside a function cached with \\`unstable_cache()\\`. Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \\`cookies()\\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`\n )\n case 'prerender':\n return makeHangingCookies(workStore, workUnitStore)\n case 'prerender-client':\n const exportName = '`cookies`'\n throw new InvariantError(\n `${exportName} must not be used within a Client Component. Next.js should be preventing ${exportName} from being included in Client Components statically, but did not in this case.`\n )\n case 'prerender-ppr':\n // We need track dynamic access here eagerly to keep continuity with\n // how cookies has worked in PPR without cacheComponents.\n return postponeWithTracking(\n workStore.route,\n callingExpression,\n workUnitStore.dynamicTracking\n )\n case 'prerender-legacy':\n // We track dynamic access here so we don't need to wrap the cookies\n // in individual property access tracking.\n return throwToInterruptStaticGeneration(\n callingExpression,\n workStore,\n workUnitStore\n )\n case 'prerender-runtime':\n return delayUntilRuntimeStage(\n workUnitStore,\n makeUntrackedCookies(workUnitStore.cookies)\n )\n case 'private-cache':\n // Private caches are delayed until the runtime stage in use-cache-wrapper,\n // so we don't need an additional delay here.\n return makeUntrackedCookies(workUnitStore.cookies)\n case 'request':\n trackDynamicDataInDynamicRender(workUnitStore)\n\n let underlyingCookies: ReadonlyRequestCookies\n\n if (areCookiesMutableInCurrentPhase(workUnitStore)) {\n // We can't conditionally return different types here based on the context.\n // To avoid confusion, we always return the readonly type here.\n underlyingCookies =\n workUnitStore.userspaceMutableCookies as unknown as ReadonlyRequestCookies\n } else {\n underlyingCookies = workUnitStore.cookies\n }\n\n if (process.env.NODE_ENV === 'development') {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n return makeUntrackedCookiesWithDevWarnings(\n workUnitStore,\n underlyingCookies,\n workStore?.route\n )\n } else {\n return makeUntrackedCookies(underlyingCookies)\n }\n default:\n workUnitStore satisfies never\n }\n }\n }\n\n // If we end up here, there was no work store or work unit store present.\n throwForMissingRequestStore(callingExpression)\n}\n\nfunction createEmptyCookies(): ReadonlyRequestCookies {\n return RequestCookiesAdapter.seal(new RequestCookies(new Headers({})))\n}\n\ninterface CacheLifetime {}\nconst CachedCookies = new WeakMap<\n CacheLifetime,\n Promise\n>()\n\nfunction makeHangingCookies(\n workStore: WorkStore,\n prerenderStore: PrerenderStoreModern\n): Promise {\n const cachedPromise = CachedCookies.get(prerenderStore)\n if (cachedPromise) {\n return cachedPromise\n }\n\n const promise = makeHangingPromise(\n prerenderStore.renderSignal,\n workStore.route,\n '`cookies()`'\n )\n CachedCookies.set(prerenderStore, promise)\n\n return promise\n}\n\nfunction makeUntrackedCookies(\n underlyingCookies: ReadonlyRequestCookies\n): Promise {\n const cachedCookies = CachedCookies.get(underlyingCookies)\n if (cachedCookies) {\n return cachedCookies\n }\n\n const promise = Promise.resolve(underlyingCookies)\n CachedCookies.set(underlyingCookies, promise)\n\n return promise\n}\n\nfunction makeUntrackedCookiesWithDevWarnings(\n requestStore: RequestStore,\n underlyingCookies: ReadonlyRequestCookies,\n route?: string\n): Promise {\n if (requestStore.asyncApiPromises) {\n let promise: Promise\n if (underlyingCookies === requestStore.mutableCookies) {\n promise = requestStore.asyncApiPromises.mutableCookies\n } else if (underlyingCookies === requestStore.cookies) {\n promise = requestStore.asyncApiPromises.cookies\n } else {\n throw new InvariantError(\n 'Received an underlying cookies object that does not match either `cookies` or `mutableCookies`'\n )\n }\n return instrumentCookiesPromiseWithDevWarnings(promise, route)\n }\n\n const cachedCookies = CachedCookies.get(underlyingCookies)\n if (cachedCookies) {\n return cachedCookies\n }\n\n const promise = makeDevtoolsIOAwarePromise(\n underlyingCookies,\n requestStore,\n RenderStage.Runtime\n )\n\n const proxiedPromise = instrumentCookiesPromiseWithDevWarnings(promise, route)\n\n CachedCookies.set(underlyingCookies, proxiedPromise)\n\n return proxiedPromise\n}\n\nconst warnForSyncAccess = createDedupedByCallsiteServerErrorLoggerDev(\n createCookiesAccessError\n)\n\nfunction instrumentCookiesPromiseWithDevWarnings(\n promise: Promise,\n route: string | undefined\n) {\n Object.defineProperties(promise, {\n [Symbol.iterator]: replaceableWarningDescriptorForSymbolIterator(\n promise,\n route\n ),\n size: replaceableWarningDescriptor(promise, 'size', route),\n get: replaceableWarningDescriptor(promise, 'get', route),\n getAll: replaceableWarningDescriptor(promise, 'getAll', route),\n has: replaceableWarningDescriptor(promise, 'has', route),\n set: replaceableWarningDescriptor(promise, 'set', route),\n delete: replaceableWarningDescriptor(promise, 'delete', route),\n clear: replaceableWarningDescriptor(promise, 'clear', route),\n toString: replaceableWarningDescriptor(promise, 'toString', route),\n })\n return promise\n}\n\nfunction replaceableWarningDescriptor(\n target: unknown,\n prop: string,\n route: string | undefined\n) {\n return {\n enumerable: false,\n get() {\n warnForSyncAccess(route, `\\`cookies().${prop}\\``)\n return undefined\n },\n set(value: unknown) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n configurable: true,\n })\n },\n configurable: true,\n }\n}\n\nfunction replaceableWarningDescriptorForSymbolIterator(\n target: unknown,\n route: string | undefined\n) {\n return {\n enumerable: false,\n get() {\n warnForSyncAccess(route, '`...cookies()` or similar iteration')\n return undefined\n },\n set(value: unknown) {\n Object.defineProperty(target, Symbol.iterator, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n })\n },\n configurable: true,\n }\n}\n\nfunction createCookiesAccessError(\n route: string | undefined,\n expression: string\n) {\n const prefix = route ? `Route \"${route}\" ` : 'This route '\n return new Error(\n `${prefix}used ${expression}. ` +\n `\\`cookies()\\` returns a Promise and must be unwrapped with \\`await\\` or \\`React.use()\\` before accessing its properties. ` +\n `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`\n )\n}\n"],"names":["cookies","callingExpression","workStore","workAsyncStorage","getStore","workUnitStore","workUnitAsyncStorage","phase","isRequestAPICallableInsideAfter","Error","route","forceStatic","underlyingCookies","createEmptyCookies","makeUntrackedCookies","dynamicShouldError","StaticGenBailoutError","type","error","captureStackTrace","invalidDynamicUsageError","makeHangingCookies","exportName","InvariantError","postponeWithTracking","dynamicTracking","throwToInterruptStaticGeneration","delayUntilRuntimeStage","trackDynamicDataInDynamicRender","areCookiesMutableInCurrentPhase","userspaceMutableCookies","process","env","NODE_ENV","makeUntrackedCookiesWithDevWarnings","throwForMissingRequestStore","RequestCookiesAdapter","seal","RequestCookies","Headers","CachedCookies","WeakMap","prerenderStore","cachedPromise","get","promise","makeHangingPromise","renderSignal","set","cachedCookies","Promise","resolve","requestStore","asyncApiPromises","mutableCookies","instrumentCookiesPromiseWithDevWarnings","makeDevtoolsIOAwarePromise","RenderStage","Runtime","proxiedPromise","warnForSyncAccess","createDedupedByCallsiteServerErrorLoggerDev","createCookiesAccessError","Object","defineProperties","Symbol","iterator","replaceableWarningDescriptorForSymbolIterator","size","replaceableWarningDescriptor","getAll","has","delete","clear","toString","target","prop","enumerable","undefined","value","defineProperty","writable","configurable","expression","prefix"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 15678, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/web/spec-extension/adapters/headers.ts"],"sourcesContent":["import type { IncomingHttpHeaders } from 'http'\n\nimport { ReflectAdapter } from './reflect'\n\n/**\n * @internal\n */\nexport class ReadonlyHeadersError extends Error {\n constructor() {\n super(\n 'Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers'\n )\n }\n\n public static callable() {\n throw new ReadonlyHeadersError()\n }\n}\n\nexport type ReadonlyHeaders = Headers & {\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n append(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n set(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n delete(...args: any[]): void\n}\nexport class HeadersAdapter extends Headers {\n private readonly headers: IncomingHttpHeaders\n\n constructor(headers: IncomingHttpHeaders) {\n // We've already overridden the methods that would be called, so we're just\n // calling the super constructor to ensure that the instanceof check works.\n super()\n\n this.headers = new Proxy(headers, {\n get(target, prop, receiver) {\n // Because this is just an object, we expect that all \"get\" operations\n // are for properties. If it's a \"get\" for a symbol, we'll just return\n // the symbol.\n if (typeof prop === 'symbol') {\n return ReflectAdapter.get(target, prop, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return undefined.\n if (typeof original === 'undefined') return\n\n // If the original casing exists, return the value.\n return ReflectAdapter.get(target, original, receiver)\n },\n set(target, prop, value, receiver) {\n if (typeof prop === 'symbol') {\n return ReflectAdapter.set(target, prop, value, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, use the prop as the key.\n return ReflectAdapter.set(target, original ?? prop, value, receiver)\n },\n has(target, prop) {\n if (typeof prop === 'symbol') return ReflectAdapter.has(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return false.\n if (typeof original === 'undefined') return false\n\n // If the original casing exists, return true.\n return ReflectAdapter.has(target, original)\n },\n deleteProperty(target, prop) {\n if (typeof prop === 'symbol')\n return ReflectAdapter.deleteProperty(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return true.\n if (typeof original === 'undefined') return true\n\n // If the original casing exists, delete the property.\n return ReflectAdapter.deleteProperty(target, original)\n },\n })\n }\n\n /**\n * Seals a Headers instance to prevent modification by throwing an error when\n * any mutating method is called.\n */\n public static seal(headers: Headers): ReadonlyHeaders {\n return new Proxy(headers, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'append':\n case 'delete':\n case 'set':\n return ReadonlyHeadersError.callable\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n }\n\n /**\n * Merges a header value into a string. This stores multiple values as an\n * array, so we need to merge them into a string.\n *\n * @param value a header value\n * @returns a merged header value (a string)\n */\n private merge(value: string | string[]): string {\n if (Array.isArray(value)) return value.join(', ')\n\n return value\n }\n\n /**\n * Creates a Headers instance from a plain object or a Headers instance.\n *\n * @param headers a plain object or a Headers instance\n * @returns a headers instance\n */\n public static from(headers: IncomingHttpHeaders | Headers): Headers {\n if (headers instanceof Headers) return headers\n\n return new HeadersAdapter(headers)\n }\n\n public append(name: string, value: string): void {\n const existing = this.headers[name]\n if (typeof existing === 'string') {\n this.headers[name] = [existing, value]\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n this.headers[name] = value\n }\n }\n\n public delete(name: string): void {\n delete this.headers[name]\n }\n\n public get(name: string): string | null {\n const value = this.headers[name]\n if (typeof value !== 'undefined') return this.merge(value)\n\n return null\n }\n\n public has(name: string): boolean {\n return typeof this.headers[name] !== 'undefined'\n }\n\n public set(name: string, value: string): void {\n this.headers[name] = value\n }\n\n public forEach(\n callbackfn: (value: string, name: string, parent: Headers) => void,\n thisArg?: any\n ): void {\n for (const [name, value] of this.entries()) {\n callbackfn.call(thisArg, value, name, this)\n }\n }\n\n public *entries(): HeadersIterator<[string, string]> {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(name) as string\n\n yield [name, value] as [string, string]\n }\n }\n\n public *keys(): HeadersIterator {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n yield name\n }\n }\n\n public *values(): HeadersIterator {\n for (const key of Object.keys(this.headers)) {\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(key) as string\n\n yield value\n }\n }\n\n public [Symbol.iterator](): HeadersIterator<[string, string]> {\n return this.entries()\n }\n}\n"],"names":["HeadersAdapter","ReadonlyHeadersError","Error","constructor","callable","Headers","headers","Proxy","get","target","prop","receiver","ReflectAdapter","lowercased","toLowerCase","original","Object","keys","find","o","set","value","has","deleteProperty","seal","merge","Array","isArray","join","from","append","name","existing","push","delete","forEach","callbackfn","thisArg","entries","call","key","values","Symbol","iterator"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 15871, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/request/headers.ts"],"sourcesContent":["import {\n HeadersAdapter,\n type ReadonlyHeaders,\n} from '../web/spec-extension/adapters/headers'\nimport {\n workAsyncStorage,\n type WorkStore,\n} from '../app-render/work-async-storage.external'\nimport {\n throwForMissingRequestStore,\n workUnitAsyncStorage,\n type PrerenderStoreModern,\n type RequestStore,\n} from '../app-render/work-unit-async-storage.external'\nimport {\n delayUntilRuntimeStage,\n postponeWithTracking,\n throwToInterruptStaticGeneration,\n trackDynamicDataInDynamicRender,\n} from '../app-render/dynamic-rendering'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport {\n makeDevtoolsIOAwarePromise,\n makeHangingPromise,\n} from '../dynamic-rendering-utils'\nimport { createDedupedByCallsiteServerErrorLoggerDev } from '../create-deduped-by-callsite-server-error-logger'\nimport { isRequestAPICallableInsideAfter } from './utils'\nimport { InvariantError } from '../../shared/lib/invariant-error'\nimport { RenderStage } from '../app-render/staged-rendering'\n\n/**\n * This function allows you to read the HTTP incoming request headers in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers) and\n * [Middleware](https://nextjs.org/docs/app/building-your-application/routing/middleware).\n *\n * Read more: [Next.js Docs: `headers`](https://nextjs.org/docs/app/api-reference/functions/headers)\n */\nexport function headers(): Promise {\n const callingExpression = 'headers'\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (workStore) {\n if (\n workUnitStore &&\n workUnitStore.phase === 'after' &&\n !isRequestAPICallableInsideAfter()\n ) {\n throw new Error(\n `Route ${workStore.route} used \\`headers()\\` inside \\`after()\\`. This is not supported. If you need this data inside an \\`after()\\` callback, use \\`headers()\\` outside of the callback. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`\n )\n }\n\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // headers object without tracking\n const underlyingHeaders = HeadersAdapter.seal(new Headers({}))\n return makeUntrackedHeaders(underlyingHeaders)\n }\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'cache': {\n const error = new Error(\n `Route ${workStore.route} used \\`headers()\\` inside \"use cache\". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \\`headers()\\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`\n )\n Error.captureStackTrace(error, headers)\n workStore.invalidDynamicUsageError ??= error\n throw error\n }\n case 'unstable-cache':\n throw new Error(\n `Route ${workStore.route} used \\`headers()\\` inside a function cached with \\`unstable_cache()\\`. Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \\`headers()\\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`\n )\n case 'prerender':\n case 'prerender-client':\n case 'private-cache':\n case 'prerender-runtime':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n if (workStore.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${workStore.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`headers()\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender':\n return makeHangingHeaders(workStore, workUnitStore)\n case 'prerender-client':\n const exportName = '`headers`'\n throw new InvariantError(\n `${exportName} must not be used within a client component. Next.js should be preventing ${exportName} from being included in client components statically, but did not in this case.`\n )\n case 'prerender-ppr':\n // PPR Prerender (no cacheComponents)\n // We are prerendering with PPR. We need track dynamic access here eagerly\n // to keep continuity with how headers has worked in PPR without cacheComponents.\n // TODO consider switching the semantic to throw on property access instead\n return postponeWithTracking(\n workStore.route,\n callingExpression,\n workUnitStore.dynamicTracking\n )\n case 'prerender-legacy':\n // Legacy Prerender\n // We are in a legacy static generation mode while prerendering\n // We track dynamic access here so we don't need to wrap the headers in\n // individual property access tracking.\n return throwToInterruptStaticGeneration(\n callingExpression,\n workStore,\n workUnitStore\n )\n case 'prerender-runtime':\n return delayUntilRuntimeStage(\n workUnitStore,\n makeUntrackedHeaders(workUnitStore.headers)\n )\n case 'private-cache':\n // Private caches are delayed until the runtime stage in use-cache-wrapper,\n // so we don't need an additional delay here.\n return makeUntrackedHeaders(workUnitStore.headers)\n case 'request':\n trackDynamicDataInDynamicRender(workUnitStore)\n\n if (process.env.NODE_ENV === 'development') {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n return makeUntrackedHeadersWithDevWarnings(\n workUnitStore.headers,\n workStore?.route,\n workUnitStore\n )\n } else {\n return makeUntrackedHeaders(workUnitStore.headers)\n }\n break\n default:\n workUnitStore satisfies never\n }\n }\n }\n\n // If we end up here, there was no work store or work unit store present.\n throwForMissingRequestStore(callingExpression)\n}\n\ninterface CacheLifetime {}\nconst CachedHeaders = new WeakMap>()\n\nfunction makeHangingHeaders(\n workStore: WorkStore,\n prerenderStore: PrerenderStoreModern\n): Promise {\n const cachedHeaders = CachedHeaders.get(prerenderStore)\n if (cachedHeaders) {\n return cachedHeaders\n }\n\n const promise = makeHangingPromise(\n prerenderStore.renderSignal,\n workStore.route,\n '`headers()`'\n )\n CachedHeaders.set(prerenderStore, promise)\n\n return promise\n}\n\nfunction makeUntrackedHeaders(\n underlyingHeaders: ReadonlyHeaders\n): Promise {\n const cachedHeaders = CachedHeaders.get(underlyingHeaders)\n if (cachedHeaders) {\n return cachedHeaders\n }\n\n const promise = Promise.resolve(underlyingHeaders)\n CachedHeaders.set(underlyingHeaders, promise)\n\n return promise\n}\n\nfunction makeUntrackedHeadersWithDevWarnings(\n underlyingHeaders: ReadonlyHeaders,\n route: string | undefined,\n requestStore: RequestStore\n): Promise {\n if (requestStore.asyncApiPromises) {\n const promise = requestStore.asyncApiPromises.headers\n return instrumentHeadersPromiseWithDevWarnings(promise, route)\n }\n\n const cachedHeaders = CachedHeaders.get(underlyingHeaders)\n if (cachedHeaders) {\n return cachedHeaders\n }\n\n const promise = makeDevtoolsIOAwarePromise(\n underlyingHeaders,\n requestStore,\n RenderStage.Runtime\n )\n\n const proxiedPromise = instrumentHeadersPromiseWithDevWarnings(promise, route)\n\n CachedHeaders.set(underlyingHeaders, proxiedPromise)\n\n return proxiedPromise\n}\n\nconst warnForSyncAccess = createDedupedByCallsiteServerErrorLoggerDev(\n createHeadersAccessError\n)\n\nfunction instrumentHeadersPromiseWithDevWarnings(\n promise: Promise,\n route: string | undefined\n) {\n Object.defineProperties(promise, {\n [Symbol.iterator]: replaceableWarningDescriptorForSymbolIterator(\n promise,\n route\n ),\n append: replaceableWarningDescriptor(promise, 'append', route),\n delete: replaceableWarningDescriptor(promise, 'delete', route),\n get: replaceableWarningDescriptor(promise, 'get', route),\n has: replaceableWarningDescriptor(promise, 'has', route),\n set: replaceableWarningDescriptor(promise, 'set', route),\n getSetCookie: replaceableWarningDescriptor(promise, 'getSetCookie', route),\n forEach: replaceableWarningDescriptor(promise, 'forEach', route),\n keys: replaceableWarningDescriptor(promise, 'keys', route),\n values: replaceableWarningDescriptor(promise, 'values', route),\n entries: replaceableWarningDescriptor(promise, 'entries', route),\n })\n return promise\n}\n\nfunction replaceableWarningDescriptor(\n target: unknown,\n prop: string,\n route: string | undefined\n) {\n return {\n enumerable: false,\n get() {\n warnForSyncAccess(route, `\\`headers().${prop}\\``)\n return undefined\n },\n set(value: unknown) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n configurable: true,\n })\n },\n configurable: true,\n }\n}\n\nfunction replaceableWarningDescriptorForSymbolIterator(\n target: unknown,\n route: string | undefined\n) {\n return {\n enumerable: false,\n get() {\n warnForSyncAccess(route, '`...headers()` or similar iteration')\n return undefined\n },\n set(value: unknown) {\n Object.defineProperty(target, Symbol.iterator, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n })\n },\n configurable: true,\n }\n}\n\nfunction createHeadersAccessError(\n route: string | undefined,\n expression: string\n) {\n const prefix = route ? `Route \"${route}\" ` : 'This route '\n return new Error(\n `${prefix}used ${expression}. ` +\n `\\`headers()\\` returns a Promise and must be unwrapped with \\`await\\` or \\`React.use()\\` before accessing its properties. ` +\n `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`\n )\n}\n"],"names":["headers","callingExpression","workStore","workAsyncStorage","getStore","workUnitStore","workUnitAsyncStorage","phase","isRequestAPICallableInsideAfter","Error","route","forceStatic","underlyingHeaders","HeadersAdapter","seal","Headers","makeUntrackedHeaders","type","error","captureStackTrace","invalidDynamicUsageError","dynamicShouldError","StaticGenBailoutError","makeHangingHeaders","exportName","InvariantError","postponeWithTracking","dynamicTracking","throwToInterruptStaticGeneration","delayUntilRuntimeStage","trackDynamicDataInDynamicRender","process","env","NODE_ENV","makeUntrackedHeadersWithDevWarnings","throwForMissingRequestStore","CachedHeaders","WeakMap","prerenderStore","cachedHeaders","get","promise","makeHangingPromise","renderSignal","set","Promise","resolve","requestStore","asyncApiPromises","instrumentHeadersPromiseWithDevWarnings","makeDevtoolsIOAwarePromise","RenderStage","Runtime","proxiedPromise","warnForSyncAccess","createDedupedByCallsiteServerErrorLoggerDev","createHeadersAccessError","Object","defineProperties","Symbol","iterator","replaceableWarningDescriptorForSymbolIterator","append","replaceableWarningDescriptor","delete","has","getSetCookie","forEach","keys","values","entries","target","prop","enumerable","undefined","value","defineProperty","writable","configurable","expression","prefix"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 16091, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/request/draft-mode.ts"],"sourcesContent":["import {\n getDraftModeProviderForCacheScope,\n throwForMissingRequestStore,\n} from '../app-render/work-unit-async-storage.external'\n\nimport type { DraftModeProvider } from '../async-storage/draft-mode-provider'\n\nimport {\n workAsyncStorage,\n type WorkStore,\n} from '../app-render/work-async-storage.external'\nimport { workUnitAsyncStorage } from '../app-render/work-unit-async-storage.external'\nimport {\n abortAndThrowOnSynchronousRequestDataAccess,\n delayUntilRuntimeStage,\n postponeWithTracking,\n trackDynamicDataInDynamicRender,\n} from '../app-render/dynamic-rendering'\nimport { createDedupedByCallsiteServerErrorLoggerDev } from '../create-deduped-by-callsite-server-error-logger'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport { DynamicServerError } from '../../client/components/hooks-server-context'\nimport { InvariantError } from '../../shared/lib/invariant-error'\nimport { ReflectAdapter } from '../web/spec-extension/adapters/reflect'\n\nexport function draftMode(): Promise {\n const callingExpression = 'draftMode'\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (!workStore || !workUnitStore) {\n throwForMissingRequestStore(callingExpression)\n }\n\n switch (workUnitStore.type) {\n case 'prerender-runtime':\n // TODO(runtime-ppr): does it make sense to delay this? normally it's always microtasky\n return delayUntilRuntimeStage(\n workUnitStore,\n createOrGetCachedDraftMode(workUnitStore.draftMode, workStore)\n )\n case 'request':\n return createOrGetCachedDraftMode(workUnitStore.draftMode, workStore)\n\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n // Inside of `\"use cache\"` or `unstable_cache`, draft mode is available if\n // the outmost work unit store is a request store (or a runtime prerender),\n // and if draft mode is enabled.\n const draftModeProvider = getDraftModeProviderForCacheScope(\n workStore,\n workUnitStore\n )\n\n if (draftModeProvider) {\n return createOrGetCachedDraftMode(draftModeProvider, workStore)\n }\n\n // Otherwise, we fall through to providing an empty draft mode.\n // eslint-disable-next-line no-fallthrough\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n // Return empty draft mode\n return createOrGetCachedDraftMode(null, workStore)\n\n default:\n return workUnitStore satisfies never\n }\n}\n\nfunction createOrGetCachedDraftMode(\n draftModeProvider: DraftModeProvider | null,\n workStore: WorkStore | undefined\n): Promise {\n const cacheKey = draftModeProvider ?? NullDraftMode\n const cachedDraftMode = CachedDraftModes.get(cacheKey)\n\n if (cachedDraftMode) {\n return cachedDraftMode\n }\n\n if (process.env.NODE_ENV === 'development' && !workStore?.isPrefetchRequest) {\n const route = workStore?.route\n return createDraftModeWithDevWarnings(draftModeProvider, route)\n } else {\n return Promise.resolve(new DraftMode(draftModeProvider))\n }\n}\n\ninterface CacheLifetime {}\nconst NullDraftMode = {}\nconst CachedDraftModes = new WeakMap>()\n\nfunction createDraftModeWithDevWarnings(\n underlyingProvider: null | DraftModeProvider,\n route: undefined | string\n): Promise {\n const instance = new DraftMode(underlyingProvider)\n const promise = Promise.resolve(instance)\n\n const proxiedPromise = new Proxy(promise, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'isEnabled':\n warnForSyncAccess(route, `\\`draftMode().${prop}\\``)\n break\n case 'enable':\n case 'disable': {\n warnForSyncAccess(route, `\\`draftMode().${prop}()\\``)\n break\n }\n default: {\n // We only warn for well-defined properties of the draftMode object.\n }\n }\n\n return ReflectAdapter.get(target, prop, receiver)\n },\n })\n\n return proxiedPromise\n}\n\nclass DraftMode {\n /**\n * @internal - this declaration is stripped via `tsc --stripInternal`\n */\n private readonly _provider: null | DraftModeProvider\n\n constructor(provider: null | DraftModeProvider) {\n this._provider = provider\n }\n get isEnabled() {\n if (this._provider !== null) {\n return this._provider.isEnabled\n }\n return false\n }\n public enable() {\n // We have a store we want to track dynamic data access to ensure we\n // don't statically generate routes that manipulate draft mode.\n trackDynamicDraftMode('draftMode().enable()', this.enable)\n if (this._provider !== null) {\n this._provider.enable()\n }\n }\n public disable() {\n trackDynamicDraftMode('draftMode().disable()', this.disable)\n if (this._provider !== null) {\n this._provider.disable()\n }\n }\n}\nconst warnForSyncAccess = createDedupedByCallsiteServerErrorLoggerDev(\n createDraftModeAccessError\n)\n\nfunction createDraftModeAccessError(\n route: string | undefined,\n expression: string\n) {\n const prefix = route ? `Route \"${route}\" ` : 'This route '\n return new Error(\n `${prefix}used ${expression}. ` +\n `\\`draftMode()\\` returns a Promise and must be unwrapped with \\`await\\` or \\`React.use()\\` before accessing its properties. ` +\n `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`\n )\n}\n\nfunction trackDynamicDraftMode(expression: string, constructorOpt: Function) {\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (workStore) {\n // We have a store we want to track dynamic data access to ensure we\n // don't statically generate routes that manipulate draft mode.\n if (workUnitStore?.phase === 'after') {\n throw new Error(\n `Route ${workStore.route} used \"${expression}\" inside \\`after()\\`. The enabled status of \\`draftMode()\\` can be read inside \\`after()\\` but you cannot enable or disable \\`draftMode()\\`. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`\n )\n }\n\n if (workStore.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${workStore.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'private-cache': {\n const error = new Error(\n `Route ${workStore.route} used \"${expression}\" inside \"use cache\". The enabled status of \\`draftMode()\\` can be read in caches but you must not enable or disable \\`draftMode()\\` inside a cache. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`\n )\n Error.captureStackTrace(error, constructorOpt)\n workStore.invalidDynamicUsageError ??= error\n throw error\n }\n case 'unstable-cache':\n throw new Error(\n `Route ${workStore.route} used \"${expression}\" inside a function cached with \\`unstable_cache()\\`. The enabled status of \\`draftMode()\\` can be read in caches but you must not enable or disable \\`draftMode()\\` inside a cache. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`\n )\n\n case 'prerender':\n case 'prerender-runtime': {\n const error = new Error(\n `Route ${workStore.route} used ${expression} without first calling \\`await connection()\\`. See more info here: https://nextjs.org/docs/messages/next-prerender-sync-headers`\n )\n return abortAndThrowOnSynchronousRequestDataAccess(\n workStore.route,\n expression,\n error,\n workUnitStore\n )\n }\n case 'prerender-client':\n const exportName = '`draftMode`'\n throw new InvariantError(\n `${exportName} must not be used within a Client Component. Next.js should be preventing ${exportName} from being included in Client Components statically, but did not in this case.`\n )\n case 'prerender-ppr':\n return postponeWithTracking(\n workStore.route,\n expression,\n workUnitStore.dynamicTracking\n )\n case 'prerender-legacy':\n workUnitStore.revalidate = 0\n\n const err = new DynamicServerError(\n `Route ${workStore.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n workStore.dynamicUsageDescription = expression\n workStore.dynamicUsageStack = err.stack\n\n throw err\n case 'request':\n trackDynamicDataInDynamicRender(workUnitStore)\n break\n default:\n workUnitStore satisfies never\n }\n }\n }\n}\n"],"names":["draftMode","callingExpression","workStore","workAsyncStorage","getStore","workUnitStore","workUnitAsyncStorage","throwForMissingRequestStore","type","delayUntilRuntimeStage","createOrGetCachedDraftMode","draftModeProvider","getDraftModeProviderForCacheScope","cacheKey","NullDraftMode","cachedDraftMode","CachedDraftModes","get","process","env","NODE_ENV","isPrefetchRequest","route","createDraftModeWithDevWarnings","Promise","resolve","DraftMode","WeakMap","underlyingProvider","instance","promise","proxiedPromise","Proxy","target","prop","receiver","warnForSyncAccess","ReflectAdapter","constructor","provider","_provider","isEnabled","enable","trackDynamicDraftMode","disable","createDedupedByCallsiteServerErrorLoggerDev","createDraftModeAccessError","expression","prefix","Error","constructorOpt","phase","dynamicShouldError","StaticGenBailoutError","error","captureStackTrace","invalidDynamicUsageError","abortAndThrowOnSynchronousRequestDataAccess","exportName","InvariantError","postponeWithTracking","dynamicTracking","revalidate","err","DynamicServerError","dynamicUsageDescription","dynamicUsageStack","stack","trackDynamicDataInDynamicRender"],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 16298, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/headers.js"],"sourcesContent":["module.exports.cookies = require('./dist/server/request/cookies').cookies\nmodule.exports.headers = require('./dist/server/request/headers').headers\nmodule.exports.draftMode = require('./dist/server/request/draft-mode').draftMode\n"],"names":[],"mappings":"AAAA,OAAO,OAAO,CAAC,OAAO,GAAG,6IAAyC,OAAO;AACzE,OAAO,OAAO,CAAC,OAAO,GAAG,6IAAyC,OAAO;AACzE,OAAO,OAAO,CAAC,SAAS,GAAG,gJAA4C,SAAS","ignoreList":[0]}}, + {"offset": {"line": 16305, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/readonly-url-search-params.ts"],"sourcesContent":["/**\n * ReadonlyURLSearchParams implementation shared between client and server.\n * This file is intentionally not marked as 'use client' or 'use server'\n * so it can be imported by both environments.\n */\n\n/** @internal */\nclass ReadonlyURLSearchParamsError extends Error {\n constructor() {\n super(\n 'Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams'\n )\n }\n}\n\n/**\n * A read-only version of URLSearchParams that throws errors when mutation methods are called.\n * This ensures that the URLSearchParams returned by useSearchParams() cannot be mutated.\n */\nexport class ReadonlyURLSearchParams extends URLSearchParams {\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n append() {\n throw new ReadonlyURLSearchParamsError()\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n delete() {\n throw new ReadonlyURLSearchParamsError()\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n set() {\n throw new ReadonlyURLSearchParamsError()\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n sort() {\n throw new ReadonlyURLSearchParamsError()\n }\n}\n"],"names":["ReadonlyURLSearchParams","ReadonlyURLSearchParamsError","Error","constructor","URLSearchParams","append","delete","set","sort"],"mappings":"AAAA;;;;CAIC,GAED,cAAc;;;+BAaDA,2BAAAA;;;eAAAA;;;AAZb,MAAMC,qCAAqCC;IACzCC,aAAc;QACZ,KAAK,CACH;IAEJ;AACF;AAMO,MAAMH,gCAAgCI;IAC3C,wKAAwK,GACxKC,SAAS;QACP,MAAM,IAAIJ;IACZ;IACA,wKAAwK,GACxKK,SAAS;QACP,MAAM,IAAIL;IACZ;IACA,wKAAwK,GACxKM,MAAM;QACJ,MAAM,IAAIN;IACZ;IACA,wKAAwK,GACxKO,OAAO;QACL,MAAM,IAAIP;IACZ;AACF","ignoreList":[0]}}, + {"offset": {"line": 16348, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/redirect-status-code.ts"],"sourcesContent":["export enum RedirectStatusCode {\n SeeOther = 303,\n TemporaryRedirect = 307,\n PermanentRedirect = 308,\n}\n"],"names":["RedirectStatusCode"],"mappings":";;;+BAAYA,sBAAAA;;;eAAAA;;;AAAL,IAAKA,qBAAAA,WAAAA,GAAAA,SAAAA,kBAAAA;;;;WAAAA","ignoreList":[0]}}, + {"offset": {"line": 16374, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/redirect-error.ts"],"sourcesContent":["import { RedirectStatusCode } from './redirect-status-code'\n\nexport const REDIRECT_ERROR_CODE = 'NEXT_REDIRECT'\n\nexport enum RedirectType {\n push = 'push',\n replace = 'replace',\n}\n\nexport type RedirectError = Error & {\n digest: `${typeof REDIRECT_ERROR_CODE};${RedirectType};${string};${RedirectStatusCode};`\n}\n\n/**\n * Checks an error to determine if it's an error generated by the\n * `redirect(url)` helper.\n *\n * @param error the error that may reference a redirect error\n * @returns true if the error is a redirect error\n */\nexport function isRedirectError(error: unknown): error is RedirectError {\n if (\n typeof error !== 'object' ||\n error === null ||\n !('digest' in error) ||\n typeof error.digest !== 'string'\n ) {\n return false\n }\n\n const digest = error.digest.split(';')\n const [errorCode, type] = digest\n const destination = digest.slice(2, -2).join(';')\n const status = digest.at(-2)\n\n const statusCode = Number(status)\n\n return (\n errorCode === REDIRECT_ERROR_CODE &&\n (type === 'replace' || type === 'push') &&\n typeof destination === 'string' &&\n !isNaN(statusCode) &&\n statusCode in RedirectStatusCode\n )\n}\n"],"names":["REDIRECT_ERROR_CODE","RedirectType","isRedirectError","error","digest","split","errorCode","type","destination","slice","join","status","at","statusCode","Number","isNaN","RedirectStatusCode"],"mappings":";;;;;;;;;;;;;;;IAEaA,mBAAmB,EAAA;eAAnBA;;IAEDC,YAAY,EAAA;eAAZA;;IAgBIC,eAAe,EAAA;eAAfA;;;oCApBmB;AAE5B,MAAMF,sBAAsB;AAE5B,IAAKC,eAAAA,WAAAA,GAAAA,SAAAA,YAAAA;;;WAAAA;;AAgBL,SAASC,gBAAgBC,KAAc;IAC5C,IACE,OAAOA,UAAU,YACjBA,UAAU,QACV,CAAE,CAAA,YAAYA,KAAI,KAClB,OAAOA,MAAMC,MAAM,KAAK,UACxB;QACA,OAAO;IACT;IAEA,MAAMA,SAASD,MAAMC,MAAM,CAACC,KAAK,CAAC;IAClC,MAAM,CAACC,WAAWC,KAAK,GAAGH;IAC1B,MAAMI,cAAcJ,OAAOK,KAAK,CAAC,GAAG,CAAC,GAAGC,IAAI,CAAC;IAC7C,MAAMC,SAASP,OAAOQ,EAAE,CAAC,CAAC;IAE1B,MAAMC,aAAaC,OAAOH;IAE1B,OACEL,cAAcN,uBACbO,CAAAA,SAAS,aAAaA,SAAS,MAAK,KACrC,OAAOC,gBAAgB,YACvB,CAACO,MAAMF,eACPA,cAAcG,oBAAAA,kBAAkB;AAEpC","ignoreList":[0]}}, + {"offset": {"line": 16428, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/redirect.ts"],"sourcesContent":["import { RedirectStatusCode } from './redirect-status-code'\nimport {\n RedirectType,\n type RedirectError,\n isRedirectError,\n REDIRECT_ERROR_CODE,\n} from './redirect-error'\n\nconst actionAsyncStorage =\n typeof window === 'undefined'\n ? (\n require('../../server/app-render/action-async-storage.external') as typeof import('../../server/app-render/action-async-storage.external')\n ).actionAsyncStorage\n : undefined\n\nexport function getRedirectError(\n url: string,\n type: RedirectType,\n statusCode: RedirectStatusCode = RedirectStatusCode.TemporaryRedirect\n): RedirectError {\n const error = new Error(REDIRECT_ERROR_CODE) as RedirectError\n error.digest = `${REDIRECT_ERROR_CODE};${type};${url};${statusCode};`\n return error\n}\n\n/**\n * This function allows you to redirect the user to another URL. It can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a meta tag to redirect the user to the target page.\n * - In a Route Handler or Server Action, it will serve a 307/303 to the caller.\n * - In a Server Action, type defaults to 'push' and 'replace' elsewhere.\n *\n * Read more: [Next.js Docs: `redirect`](https://nextjs.org/docs/app/api-reference/functions/redirect)\n */\nexport function redirect(\n /** The URL to redirect to */\n url: string,\n type?: RedirectType\n): never {\n type ??= actionAsyncStorage?.getStore()?.isAction\n ? RedirectType.push\n : RedirectType.replace\n\n throw getRedirectError(url, type, RedirectStatusCode.TemporaryRedirect)\n}\n\n/**\n * This function allows you to redirect the user to another URL. It can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a meta tag to redirect the user to the target page.\n * - In a Route Handler or Server Action, it will serve a 308/303 to the caller.\n *\n * Read more: [Next.js Docs: `redirect`](https://nextjs.org/docs/app/api-reference/functions/redirect)\n */\nexport function permanentRedirect(\n /** The URL to redirect to */\n url: string,\n type: RedirectType = RedirectType.replace\n): never {\n throw getRedirectError(url, type, RedirectStatusCode.PermanentRedirect)\n}\n\n/**\n * Returns the encoded URL from the error if it's a RedirectError, null\n * otherwise. Note that this does not validate the URL returned.\n *\n * @param error the error that may be a redirect error\n * @return the url if the error was a redirect error\n */\nexport function getURLFromRedirectError(error: RedirectError): string\nexport function getURLFromRedirectError(error: unknown): string | null {\n if (!isRedirectError(error)) return null\n\n // Slices off the beginning of the digest that contains the code and the\n // separating ';'.\n return error.digest.split(';').slice(2, -2).join(';')\n}\n\nexport function getRedirectTypeFromError(error: RedirectError): RedirectType {\n if (!isRedirectError(error)) {\n throw new Error('Not a redirect error')\n }\n\n return error.digest.split(';', 2)[1] as RedirectType\n}\n\nexport function getRedirectStatusCodeFromError(error: RedirectError): number {\n if (!isRedirectError(error)) {\n throw new Error('Not a redirect error')\n }\n\n return Number(error.digest.split(';').at(-2))\n}\n"],"names":["getRedirectError","getRedirectStatusCodeFromError","getRedirectTypeFromError","getURLFromRedirectError","permanentRedirect","redirect","actionAsyncStorage","window","require","undefined","url","type","statusCode","RedirectStatusCode","TemporaryRedirect","error","Error","REDIRECT_ERROR_CODE","digest","getStore","isAction","RedirectType","push","replace","PermanentRedirect","isRedirectError","split","slice","join","Number","at"],"mappings":";;;;;;;;;;;;;;;;;;IAegBA,gBAAgB,EAAA;eAAhBA;;IA6EAC,8BAA8B,EAAA;eAA9BA;;IARAC,wBAAwB,EAAA;eAAxBA;;IARAC,uBAAuB,EAAA;eAAvBA;;IAhBAC,iBAAiB,EAAA;eAAjBA;;IAvBAC,QAAQ,EAAA;eAARA;;;oCArCmB;+BAM5B;AAEP,MAAMC,qBACJ,OAAOC,WAAW,qBAEZC,QAAQ,2KACRF,kBAAkB,GACpBG;AAEC,SAAST,iBACdU,GAAW,EACXC,IAAkB,EAClBC,aAAiCC,oBAAAA,kBAAkB,CAACC,iBAAiB;IAErE,MAAMC,QAAQ,OAAA,cAA8B,CAA9B,IAAIC,MAAMC,eAAAA,mBAAmB,GAA7B,qBAAA;eAAA;oBAAA;sBAAA;IAA6B;IAC3CF,MAAMG,MAAM,GAAG,GAAGD,eAAAA,mBAAmB,CAAC,CAAC,EAAEN,KAAK,CAAC,EAAED,IAAI,CAAC,EAAEE,WAAW,CAAC,CAAC;IACrE,OAAOG;AACT;AAcO,SAASV,SACd,2BAA2B,GAC3BK,GAAW,EACXC,IAAmB;IAEnBA,SAASL,oBAAoBa,YAAYC,WACrCC,eAAAA,YAAY,CAACC,IAAI,GACjBD,eAAAA,YAAY,CAACE,OAAO;IAExB,MAAMvB,iBAAiBU,KAAKC,MAAME,oBAAAA,kBAAkB,CAACC,iBAAiB;AACxE;AAaO,SAASV,kBACd,2BAA2B,GAC3BM,GAAW,EACXC,OAAqBU,eAAAA,YAAY,CAACE,OAAO;IAEzC,MAAMvB,iBAAiBU,KAAKC,MAAME,oBAAAA,kBAAkB,CAACW,iBAAiB;AACxE;AAUO,SAASrB,wBAAwBY,KAAc;IACpD,IAAI,CAACU,CAAAA,GAAAA,eAAAA,eAAe,EAACV,QAAQ,OAAO;IAEpC,wEAAwE;IACxE,kBAAkB;IAClB,OAAOA,MAAMG,MAAM,CAACQ,KAAK,CAAC,KAAKC,KAAK,CAAC,GAAG,CAAC,GAAGC,IAAI,CAAC;AACnD;AAEO,SAAS1B,yBAAyBa,KAAoB;IAC3D,IAAI,CAACU,CAAAA,GAAAA,eAAAA,eAAe,EAACV,QAAQ;QAC3B,MAAM,OAAA,cAAiC,CAAjC,IAAIC,MAAM,yBAAV,qBAAA;mBAAA;wBAAA;0BAAA;QAAgC;IACxC;IAEA,OAAOD,MAAMG,MAAM,CAACQ,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE;AACtC;AAEO,SAASzB,+BAA+Bc,KAAoB;IACjE,IAAI,CAACU,CAAAA,GAAAA,eAAAA,eAAe,EAACV,QAAQ;QAC3B,MAAM,OAAA,cAAiC,CAAjC,IAAIC,MAAM,yBAAV,qBAAA;mBAAA;wBAAA;0BAAA;QAAgC;IACxC;IAEA,OAAOa,OAAOd,MAAMG,MAAM,CAACQ,KAAK,CAAC,KAAKI,EAAE,CAAC,CAAC;AAC5C","ignoreList":[0]}}, + {"offset": {"line": 16521, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/http-access-fallback/http-access-fallback.ts"],"sourcesContent":["export const HTTPAccessErrorStatus = {\n NOT_FOUND: 404,\n FORBIDDEN: 403,\n UNAUTHORIZED: 401,\n}\n\nconst ALLOWED_CODES = new Set(Object.values(HTTPAccessErrorStatus))\n\nexport const HTTP_ERROR_FALLBACK_ERROR_CODE = 'NEXT_HTTP_ERROR_FALLBACK'\n\nexport type HTTPAccessFallbackError = Error & {\n digest: `${typeof HTTP_ERROR_FALLBACK_ERROR_CODE};${string}`\n}\n\n/**\n * Checks an error to determine if it's an error generated by\n * the HTTP navigation APIs `notFound()`, `forbidden()` or `unauthorized()`.\n *\n * @param error the error that may reference a HTTP access error\n * @returns true if the error is a HTTP access error\n */\nexport function isHTTPAccessFallbackError(\n error: unknown\n): error is HTTPAccessFallbackError {\n if (\n typeof error !== 'object' ||\n error === null ||\n !('digest' in error) ||\n typeof error.digest !== 'string'\n ) {\n return false\n }\n const [prefix, httpStatus] = error.digest.split(';')\n\n return (\n prefix === HTTP_ERROR_FALLBACK_ERROR_CODE &&\n ALLOWED_CODES.has(Number(httpStatus))\n )\n}\n\nexport function getAccessFallbackHTTPStatus(\n error: HTTPAccessFallbackError\n): number {\n const httpStatus = error.digest.split(';')[1]\n return Number(httpStatus)\n}\n\nexport function getAccessFallbackErrorTypeByStatus(\n status: number\n): 'not-found' | 'forbidden' | 'unauthorized' | undefined {\n switch (status) {\n case 401:\n return 'unauthorized'\n case 403:\n return 'forbidden'\n case 404:\n return 'not-found'\n default:\n return\n }\n}\n"],"names":["HTTPAccessErrorStatus","HTTP_ERROR_FALLBACK_ERROR_CODE","getAccessFallbackErrorTypeByStatus","getAccessFallbackHTTPStatus","isHTTPAccessFallbackError","NOT_FOUND","FORBIDDEN","UNAUTHORIZED","ALLOWED_CODES","Set","Object","values","error","digest","prefix","httpStatus","split","has","Number","status"],"mappings":";;;;;;;;;;;;;;;;;IAAaA,qBAAqB,EAAA;eAArBA;;IAQAC,8BAA8B,EAAA;eAA9BA;;IAuCGC,kCAAkC,EAAA;eAAlCA;;IAPAC,2BAA2B,EAAA;eAA3BA;;IAnBAC,yBAAyB,EAAA;eAAzBA;;;AArBT,MAAMJ,wBAAwB;IACnCK,WAAW;IACXC,WAAW;IACXC,cAAc;AAChB;AAEA,MAAMC,gBAAgB,IAAIC,IAAIC,OAAOC,MAAM,CAACX;AAErC,MAAMC,iCAAiC;AAavC,SAASG,0BACdQ,KAAc;IAEd,IACE,OAAOA,UAAU,YACjBA,UAAU,QACV,CAAE,CAAA,YAAYA,KAAI,KAClB,OAAOA,MAAMC,MAAM,KAAK,UACxB;QACA,OAAO;IACT;IACA,MAAM,CAACC,QAAQC,WAAW,GAAGH,MAAMC,MAAM,CAACG,KAAK,CAAC;IAEhD,OACEF,WAAWb,kCACXO,cAAcS,GAAG,CAACC,OAAOH;AAE7B;AAEO,SAASZ,4BACdS,KAA8B;IAE9B,MAAMG,aAAaH,MAAMC,MAAM,CAACG,KAAK,CAAC,IAAI,CAAC,EAAE;IAC7C,OAAOE,OAAOH;AAChB;AAEO,SAASb,mCACdiB,MAAc;IAEd,OAAQA;QACN,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT,KAAK;YACH,OAAO;QACT;YACE;IACJ;AACF","ignoreList":[0]}}, + {"offset": {"line": 16595, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/not-found.ts"],"sourcesContent":["import {\n HTTP_ERROR_FALLBACK_ERROR_CODE,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\n\n/**\n * This function allows you to render the [not-found.js file](https://nextjs.org/docs/app/api-reference/file-conventions/not-found)\n * within a route segment as well as inject a tag.\n *\n * `notFound()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a `` meta tag and set the status code to 404.\n * - In a Route Handler or Server Action, it will serve a 404 to the caller.\n *\n * Read more: [Next.js Docs: `notFound`](https://nextjs.org/docs/app/api-reference/functions/not-found)\n */\n\nconst DIGEST = `${HTTP_ERROR_FALLBACK_ERROR_CODE};404`\n\nexport function notFound(): never {\n const error = new Error(DIGEST) as HTTPAccessFallbackError\n ;(error as HTTPAccessFallbackError).digest = DIGEST\n\n throw error\n}\n"],"names":["notFound","DIGEST","HTTP_ERROR_FALLBACK_ERROR_CODE","error","Error","digest"],"mappings":";;;+BAsBgBA,YAAAA;;;eAAAA;;;oCAnBT;AAEP;;;;;;;;;;;;;CAaC,GAED,MAAMC,SAAS,GAAGC,oBAAAA,8BAA8B,CAAC,IAAI,CAAC;AAE/C,SAASF;IACd,MAAMG,QAAQ,OAAA,cAAiB,CAAjB,IAAIC,MAAMH,SAAV,qBAAA;eAAA;oBAAA;sBAAA;IAAgB;IAC5BE,MAAkCE,MAAM,GAAGJ;IAE7C,MAAME;AACR","ignoreList":[0]}}, + {"offset": {"line": 16639, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/forbidden.ts"],"sourcesContent":["import {\n HTTP_ERROR_FALLBACK_ERROR_CODE,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\n\n// TODO: Add `forbidden` docs\n/**\n * @experimental\n * This function allows you to render the [forbidden.js file](https://nextjs.org/docs/app/api-reference/file-conventions/forbidden)\n * within a route segment as well as inject a tag.\n *\n * `forbidden()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * Read more: [Next.js Docs: `forbidden`](https://nextjs.org/docs/app/api-reference/functions/forbidden)\n */\n\nconst DIGEST = `${HTTP_ERROR_FALLBACK_ERROR_CODE};403`\n\nexport function forbidden(): never {\n if (!process.env.__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS) {\n throw new Error(\n `\\`forbidden()\\` is experimental and only allowed to be enabled when \\`experimental.authInterrupts\\` is enabled.`\n )\n }\n\n const error = new Error(DIGEST) as HTTPAccessFallbackError\n ;(error as HTTPAccessFallbackError).digest = DIGEST\n throw error\n}\n"],"names":["forbidden","DIGEST","HTTP_ERROR_FALLBACK_ERROR_CODE","process","env","__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS","Error","error","digest"],"mappings":";;;+BAqBgBA,aAAAA;;;eAAAA;;;oCAlBT;AAEP,6BAA6B;AAC7B;;;;;;;;;;;CAWC,GAED,MAAMC,SAAS,GAAGC,oBAAAA,8BAA8B,CAAC,IAAI,CAAC;AAE/C,SAASF;IACd,IAAI,CAACG,QAAQC,GAAG,CAACC,uBAAqC,YAAF;QAClD,MAAM,OAAA,cAEL,CAFK,IAAIC,MACR,CAAC,+GAA+G,CAAC,GAD7G,qBAAA;mBAAA;wBAAA;0BAAA;QAEN;IACF;IAEA,MAAMC,QAAQ,OAAA,cAAiB,CAAjB,IAAID,MAAML,SAAV,qBAAA;eAAA;oBAAA;sBAAA;IAAgB;IAC5BM,MAAkCC,MAAM,GAAGP;IAC7C,MAAMM;AACR","ignoreList":[0]}}, + {"offset": {"line": 16689, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/unauthorized.ts"],"sourcesContent":["import {\n HTTP_ERROR_FALLBACK_ERROR_CODE,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\n\n// TODO: Add `unauthorized` docs\n/**\n * @experimental\n * This function allows you to render the [unauthorized.js file](https://nextjs.org/docs/app/api-reference/file-conventions/unauthorized)\n * within a route segment as well as inject a tag.\n *\n * `unauthorized()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n *\n * Read more: [Next.js Docs: `unauthorized`](https://nextjs.org/docs/app/api-reference/functions/unauthorized)\n */\n\nconst DIGEST = `${HTTP_ERROR_FALLBACK_ERROR_CODE};401`\n\nexport function unauthorized(): never {\n if (!process.env.__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS) {\n throw new Error(\n `\\`unauthorized()\\` is experimental and only allowed to be used when \\`experimental.authInterrupts\\` is enabled.`\n )\n }\n\n const error = new Error(DIGEST) as HTTPAccessFallbackError\n ;(error as HTTPAccessFallbackError).digest = DIGEST\n throw error\n}\n"],"names":["unauthorized","DIGEST","HTTP_ERROR_FALLBACK_ERROR_CODE","process","env","__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS","Error","error","digest"],"mappings":";;;+BAsBgBA,gBAAAA;;;eAAAA;;;oCAnBT;AAEP,gCAAgC;AAChC;;;;;;;;;;;;CAYC,GAED,MAAMC,SAAS,GAAGC,oBAAAA,8BAA8B,CAAC,IAAI,CAAC;AAE/C,SAASF;IACd,IAAI,CAACG,QAAQC,GAAG,CAACC,uBAAqC,YAAF;QAClD,MAAM,OAAA,cAEL,CAFK,IAAIC,MACR,CAAC,+GAA+G,CAAC,GAD7G,qBAAA;mBAAA;wBAAA;0BAAA;QAEN;IACF;IAEA,MAAMC,QAAQ,OAAA,cAAiB,CAAjB,IAAID,MAAML,SAAV,qBAAA;eAAA;oBAAA;sBAAA;IAAgB;IAC5BM,MAAkCC,MAAM,GAAGP;IAC7C,MAAMM;AACR","ignoreList":[0]}}, + {"offset": {"line": 16740, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/lib/router-utils/is-postpone.ts"],"sourcesContent":["const REACT_POSTPONE_TYPE: symbol = Symbol.for('react.postpone')\n\nexport function isPostpone(error: any): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n error.$$typeof === REACT_POSTPONE_TYPE\n )\n}\n"],"names":["isPostpone","REACT_POSTPONE_TYPE","Symbol","for","error","$$typeof"],"mappings":";;;+BAEgBA,cAAAA;;;eAAAA;;;AAFhB,MAAMC,sBAA8BC,OAAOC,GAAG,CAAC;AAExC,SAASH,WAAWI,KAAU;IACnC,OACE,OAAOA,UAAU,YACjBA,UAAU,QACVA,MAAMC,QAAQ,KAAKJ;AAEvB","ignoreList":[0]}}, + {"offset": {"line": 16757, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/is-next-router-error.ts"],"sourcesContent":["import {\n isHTTPAccessFallbackError,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\nimport { isRedirectError, type RedirectError } from './redirect-error'\n\n/**\n * Returns true if the error is a navigation signal error. These errors are\n * thrown by user code to perform navigation operations and interrupt the React\n * render.\n */\nexport function isNextRouterError(\n error: unknown\n): error is RedirectError | HTTPAccessFallbackError {\n return isRedirectError(error) || isHTTPAccessFallbackError(error)\n}\n"],"names":["isNextRouterError","error","isRedirectError","isHTTPAccessFallbackError"],"mappings":";;;+BAWgBA,qBAAAA;;;eAAAA;;;oCART;+BAC6C;AAO7C,SAASA,kBACdC,KAAc;IAEd,OAAOC,CAAAA,GAAAA,eAAAA,eAAe,EAACD,UAAUE,CAAAA,GAAAA,oBAAAA,yBAAyB,EAACF;AAC7D","ignoreList":[0]}}, + {"offset": {"line": 16782, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/unstable-rethrow.server.ts"],"sourcesContent":["import { isHangingPromiseRejectionError } from '../../server/dynamic-rendering-utils'\nimport { isPostpone } from '../../server/lib/router-utils/is-postpone'\nimport { isBailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr'\nimport { isNextRouterError } from './is-next-router-error'\nimport {\n isDynamicPostpone,\n isPrerenderInterruptedError,\n} from '../../server/app-render/dynamic-rendering'\nimport { isDynamicServerError } from './hooks-server-context'\n\nexport function unstable_rethrow(error: unknown): void {\n if (\n isNextRouterError(error) ||\n isBailoutToCSRError(error) ||\n isDynamicServerError(error) ||\n isDynamicPostpone(error) ||\n isPostpone(error) ||\n isHangingPromiseRejectionError(error) ||\n isPrerenderInterruptedError(error)\n ) {\n throw error\n }\n\n if (error instanceof Error && 'cause' in error) {\n unstable_rethrow(error.cause)\n }\n}\n"],"names":["unstable_rethrow","error","isNextRouterError","isBailoutToCSRError","isDynamicServerError","isDynamicPostpone","isPostpone","isHangingPromiseRejectionError","isPrerenderInterruptedError","Error","cause"],"mappings":";;;+BAUgBA,oBAAAA;;;eAAAA;;;uCAV+B;4BACpB;8BACS;mCACF;kCAI3B;oCAC8B;AAE9B,SAASA,iBAAiBC,KAAc;IAC7C,IACEC,CAAAA,GAAAA,mBAAAA,iBAAiB,EAACD,UAClBE,CAAAA,GAAAA,cAAAA,mBAAmB,EAACF,UACpBG,CAAAA,GAAAA,oBAAAA,oBAAoB,EAACH,UACrBI,CAAAA,GAAAA,kBAAAA,iBAAiB,EAACJ,UAClBK,CAAAA,GAAAA,YAAAA,UAAU,EAACL,UACXM,CAAAA,GAAAA,uBAAAA,8BAA8B,EAACN,UAC/BO,CAAAA,GAAAA,kBAAAA,2BAA2B,EAACP,QAC5B;QACA,MAAMA;IACR;IAEA,IAAIA,iBAAiBQ,SAAS,WAAWR,OAAO;QAC9CD,iBAAiBC,MAAMS,KAAK;IAC9B;AACF","ignoreList":[0]}}, + {"offset": {"line": 16816, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/unstable-rethrow.ts"],"sourcesContent":["/**\n * This function should be used to rethrow internal Next.js errors so that they can be handled by the framework.\n * When wrapping an API that uses errors to interrupt control flow, you should use this function before you do any error handling.\n * This function will rethrow the error if it is a Next.js error so it can be handled, otherwise it will do nothing.\n *\n * Read more: [Next.js Docs: `unstable_rethrow`](https://nextjs.org/docs/app/api-reference/functions/unstable_rethrow)\n */\nexport const unstable_rethrow =\n typeof window === 'undefined'\n ? (\n require('./unstable-rethrow.server') as typeof import('./unstable-rethrow.server')\n ).unstable_rethrow\n : (\n require('./unstable-rethrow.browser') as typeof import('./unstable-rethrow.browser')\n ).unstable_rethrow\n"],"names":["unstable_rethrow","window","require"],"mappings":"AAAA;;;;;;CAMC;;;+BACYA,oBAAAA;;;eAAAA;;;AAAN,MAAMA,mBACX,OAAOC,WAAW,qBAEZC,QAAQ,wJACRF,gBAAgB,GAEhBE,QAAQ,8BACRF,gBAAgB","ignoreList":[0]}}, + {"offset": {"line": 16843, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/client/components/navigation.react-server.ts"],"sourcesContent":["import { ReadonlyURLSearchParams } from './readonly-url-search-params'\n\nexport function unstable_isUnrecognizedActionError(): boolean {\n throw new Error(\n '`unstable_isUnrecognizedActionError` can only be used on the client.'\n )\n}\n\nexport { redirect, permanentRedirect } from './redirect'\nexport { RedirectType } from './redirect-error'\nexport { notFound } from './not-found'\nexport { forbidden } from './forbidden'\nexport { unauthorized } from './unauthorized'\nexport { unstable_rethrow } from './unstable-rethrow'\nexport { ReadonlyURLSearchParams }\n"],"names":["ReadonlyURLSearchParams","RedirectType","forbidden","notFound","permanentRedirect","redirect","unauthorized","unstable_isUnrecognizedActionError","unstable_rethrow","Error"],"mappings":";;;;;;;;;;;;;;;;;;;;;IAcSA,uBAAuB,EAAA;eAAvBA,yBAAAA,uBAAuB;;IALvBC,YAAY,EAAA;eAAZA,eAAAA,YAAY;;IAEZC,SAAS,EAAA;eAATA,WAAAA,SAAS;;IADTC,QAAQ,EAAA;eAARA,UAAAA,QAAQ;;IAFEC,iBAAiB,EAAA;eAAjBA,UAAAA,iBAAiB;;IAA3BC,QAAQ,EAAA;eAARA,UAAAA,QAAQ;;IAIRC,YAAY,EAAA;eAAZA,cAAAA,YAAY;;IAVLC,kCAAkC,EAAA;eAAlCA;;IAWPC,gBAAgB,EAAA;eAAhBA,iBAAAA,gBAAgB;;;yCAbe;0BAQI;+BACf;0BACJ;2BACC;8BACG;iCACI;AAX1B,SAASD;IACd,MAAM,OAAA,cAEL,CAFK,IAAIE,MACR,yEADI,qBAAA;eAAA;oBAAA;sBAAA;IAEN;AACF","ignoreList":[0]}}, + {"offset": {"line": 16917, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/src/api/navigation.react-server.ts"],"sourcesContent":["export * from '../client/components/navigation.react-server'\n"],"names":[],"mappings":";AAAA,cAAc,+CAA8C","ignoreList":[0]}}, + {"offset": {"line": 16926, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/build/templates/app-route.ts"],"sourcesContent":["import {\n AppRouteRouteModule,\n type AppRouteRouteHandlerContext,\n type AppRouteRouteModuleOptions,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\nimport type { IncomingMessage, ServerResponse } from 'node:http'\nimport { addRequestMeta, getRequestMeta } from '../../server/request-meta'\nimport { getTracer, type Span, SpanKind } from '../../server/lib/trace/tracer'\nimport { setManifestsSingleton } from '../../server/app-render/manifests-singleton'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { NodeNextRequest, NodeNextResponse } from '../../server/base-http/node'\nimport {\n NextRequestAdapter,\n signalFromNodeResponse,\n} from '../../server/web/spec-extension/adapters/next-request'\nimport { BaseServerSpan } from '../../server/lib/trace/constants'\nimport { getRevalidateReason } from '../../server/instrumentation/utils'\nimport { sendResponse } from '../../server/send-response'\nimport {\n fromNodeOutgoingHttpHeaders,\n toNodeOutgoingHttpHeaders,\n} from '../../server/web/utils'\nimport { getCacheControlHeader } from '../../server/lib/cache-control'\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from '../../lib/constants'\nimport { NoFallbackError } from '../../shared/lib/no-fallback-error.external'\nimport {\n CachedRouteKind,\n type ResponseCacheEntry,\n type ResponseGenerator,\n} from '../../server/response-cache'\n\nimport * as userland from 'VAR_USERLAND'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: 'VAR_DEFINITION_PAGE',\n pathname: 'VAR_DEFINITION_PATHNAME',\n filename: 'VAR_DEFINITION_FILENAME',\n bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n nextConfigOutput,\n userland,\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage,\n })\n}\n\nexport {\n routeModule,\n workAsyncStorage,\n workUnitAsyncStorage,\n serverHooks,\n patchFetch,\n}\n\nexport async function handler(\n req: IncomingMessage,\n res: ServerResponse,\n ctx: {\n waitUntil: (prom: Promise) => void\n }\n) {\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint())\n }\n let srcPage = 'VAR_DEFINITION_PAGE'\n\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/'\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/'\n }\n const multiZoneDraftMode = process.env\n .__NEXT_MULTI_ZONE_DRAFT_MODE as any as boolean\n\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode,\n })\n\n if (!prepareResult) {\n res.statusCode = 400\n res.end('Bad Request')\n ctx.waitUntil?.(Promise.resolve())\n return null\n }\n\n const {\n buildId,\n params,\n nextConfig,\n parsedUrl,\n isDraftMode,\n prerenderManifest,\n routerServerContext,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n resolvedPathname,\n clientReferenceManifest,\n serverActionsManifest,\n } = prepareResult\n\n const normalizedSrcPage = normalizeAppPath(srcPage)\n\n let isIsr = Boolean(\n prerenderManifest.dynamicRoutes[normalizedSrcPage] ||\n prerenderManifest.routes[resolvedPathname]\n )\n\n const render404 = async () => {\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext?.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false)\n } else {\n res.end('This page could not be found')\n }\n return null\n }\n\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname])\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]\n\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.experimental.adapterPath) {\n return await render404()\n }\n throw new NoFallbackError()\n }\n }\n }\n\n let cacheKey: string | null = null\n\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey\n }\n\n const supportsDynamicResponse: boolean =\n // If we're in development, we always support dynamic HTML\n routeModule.isDev === true ||\n // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr\n\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse\n\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest,\n })\n }\n\n const method = req.method || 'GET'\n const tracer = getTracer()\n const activeSpan = tracer.getActiveScopeSpan()\n\n const context: AppRouteRouteHandlerContext = {\n params,\n prerenderManifest,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts),\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n supportsDynamicResponse,\n incrementalCache: getRequestMeta(req, 'incrementalCache'),\n cacheLifeProfiles: nextConfig.cacheLife,\n waitUntil: ctx.waitUntil,\n onClose: (cb) => {\n res.on('close', cb)\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (\n error,\n _request,\n errorContext,\n silenceLog\n ) =>\n routeModule.onRequestError(\n req,\n error,\n errorContext,\n silenceLog,\n routerServerContext\n ),\n },\n sharedContext: {\n buildId,\n },\n }\n const nodeNextReq = new NodeNextRequest(req)\n const nodeNextRes = new NodeNextResponse(res)\n\n const nextReq = NextRequestAdapter.fromNodeNextRequest(\n nodeNextReq,\n signalFromNodeResponse(res)\n )\n\n try {\n const invokeRouteModule = async (span?: Span) => {\n return routeModule.handle(nextReq, context).finally(() => {\n if (!span) return\n\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false,\n })\n\n const rootSpanAttributes = tracer.getRootSpanAttributes()\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return\n }\n\n if (\n rootSpanAttributes.get('next.span_type') !==\n BaseServerSpan.handleRequest\n ) {\n console.warn(\n `Unexpected root span type '${rootSpanAttributes.get(\n 'next.span_type'\n )}'. Please report this Next.js issue https://github.com/vercel/next.js`\n )\n return\n }\n\n const route = rootSpanAttributes.get('next.route')\n if (route) {\n const name = `${method} ${route}`\n\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name,\n })\n span.updateName(name)\n } else {\n span.updateName(`${method} ${srcPage}`)\n }\n })\n }\n const isMinimalMode = Boolean(\n process.env.MINIMAL_MODE || getRequestMeta(req, 'minimalMode')\n )\n\n const handleResponse = async (currentSpan?: Span) => {\n const responseGenerator: ResponseGenerator = async ({\n previousCacheEntry,\n }) => {\n try {\n if (\n !isMinimalMode &&\n isOnDemandRevalidate &&\n revalidateOnlyGenerated &&\n !previousCacheEntry\n ) {\n res.statusCode = 404\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED')\n res.end('This page could not be found')\n return null\n }\n\n const response = await invokeRouteModule(currentSpan)\n\n ;(req as any).fetchMetrics = (context.renderOpts as any).fetchMetrics\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil\n\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil)\n pendingWaitUntil = undefined\n }\n }\n const cacheTags = context.renderOpts.collectedTags\n\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob()\n\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers)\n\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags\n }\n\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type\n }\n\n const revalidate =\n typeof context.renderOpts.collectedRevalidate === 'undefined' ||\n context.renderOpts.collectedRevalidate >= INFINITE_CACHE\n ? false\n : context.renderOpts.collectedRevalidate\n\n const expire =\n typeof context.renderOpts.collectedExpire === 'undefined' ||\n context.renderOpts.collectedExpire >= INFINITE_CACHE\n ? undefined\n : context.renderOpts.collectedExpire\n\n // Create the cache entry for the response.\n const cacheEntry: ResponseCacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers,\n },\n cacheControl: { revalidate, expire },\n }\n\n return cacheEntry\n } else {\n // send response without caching if not ISR\n await sendResponse(\n nodeNextReq,\n nodeNextRes,\n response,\n context.renderOpts.pendingWaitUntil\n )\n return null\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry?.isStale) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n throw err\n }\n }\n\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode,\n })\n\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return null\n }\n\n if (cacheEntry?.value?.kind !== CachedRouteKind.APP_ROUTE) {\n throw new Error(\n `Invariant: app-route received invalid cache entry ${cacheEntry?.value?.kind}`\n )\n }\n\n if (!isMinimalMode) {\n res.setHeader(\n 'x-nextjs-cache',\n isOnDemandRevalidate\n ? 'REVALIDATED'\n : cacheEntry.isMiss\n ? 'MISS'\n : cacheEntry.isStale\n ? 'STALE'\n : 'HIT'\n )\n }\n\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader(\n 'Cache-Control',\n 'private, no-cache, no-store, max-age=0, must-revalidate'\n )\n }\n\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers)\n\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER)\n }\n\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (\n cacheEntry.cacheControl &&\n !res.getHeader('Cache-Control') &&\n !headers.get('Cache-Control')\n ) {\n headers.set(\n 'Cache-Control',\n getCacheControlHeader(cacheEntry.cacheControl)\n )\n }\n\n await sendResponse(\n nodeNextReq,\n nodeNextRes,\n // @ts-expect-error - Argument of type 'Buffer' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200,\n })\n )\n return null\n }\n\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (activeSpan) {\n await handleResponse(activeSpan)\n } else {\n await tracer.withPropagatedContext(req.headers, () =>\n tracer.trace(\n BaseServerSpan.handleRequest,\n {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url,\n },\n },\n handleResponse\n )\n )\n }\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n\n // rethrow so that we can handle serving error page\n\n // If this is during static generation, throw the error again.\n if (isIsr) throw err\n\n // Otherwise, send a 500 response.\n await sendResponse(\n nodeNextReq,\n nodeNextRes,\n new Response(null, { status: 500 })\n )\n return null\n }\n}\n"],"names":["AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","addRequestMeta","getRequestMeta","getTracer","SpanKind","setManifestsSingleton","normalizeAppPath","NodeNextRequest","NodeNextResponse","NextRequestAdapter","signalFromNodeResponse","BaseServerSpan","getRevalidateReason","sendResponse","fromNodeOutgoingHttpHeaders","toNodeOutgoingHttpHeaders","getCacheControlHeader","INFINITE_CACHE","NEXT_CACHE_TAGS_HEADER","NoFallbackError","CachedRouteKind","userland","routeModule","definition","kind","APP_ROUTE","page","pathname","filename","bundlePath","distDir","process","env","__NEXT_RELATIVE_DIST_DIR","relativeProjectDir","__NEXT_RELATIVE_PROJECT_DIR","resolvedPagePath","nextConfigOutput","workAsyncStorage","workUnitAsyncStorage","serverHooks","handler","req","res","ctx","isDev","hrtime","bigint","srcPage","TURBOPACK","replace","multiZoneDraftMode","__NEXT_MULTI_ZONE_DRAFT_MODE","prepareResult","prepare","statusCode","end","waitUntil","Promise","resolve","buildId","params","nextConfig","parsedUrl","isDraftMode","prerenderManifest","routerServerContext","isOnDemandRevalidate","revalidateOnlyGenerated","resolvedPathname","clientReferenceManifest","serverActionsManifest","normalizedSrcPage","isIsr","Boolean","dynamicRoutes","routes","render404","isPrerendered","prerenderInfo","fallback","experimental","adapterPath","cacheKey","supportsDynamicResponse","isStaticGeneration","method","tracer","activeSpan","getActiveScopeSpan","context","renderOpts","authInterrupts","cacheComponents","incrementalCache","cacheLifeProfiles","cacheLife","onClose","cb","on","onAfterTaskError","undefined","onInstrumentationRequestError","error","_request","errorContext","silenceLog","onRequestError","sharedContext","nodeNextReq","nodeNextRes","nextReq","fromNodeNextRequest","invokeRouteModule","span","handle","finally","setAttributes","rootSpanAttributes","getRootSpanAttributes","get","handleRequest","console","warn","route","name","updateName","isMinimalMode","MINIMAL_MODE","handleResponse","currentSpan","cacheEntry","responseGenerator","previousCacheEntry","setHeader","response","fetchMetrics","pendingWaitUntil","cacheTags","collectedTags","blob","headers","type","revalidate","collectedRevalidate","expire","collectedExpire","value","status","body","Buffer","from","arrayBuffer","cacheControl","err","isStale","routerKind","routePath","routeType","revalidateReason","routeKind","isFallback","isRoutePPREnabled","Error","isMiss","delete","getHeader","set","Response","withPropagatedContext","trace","spanName","SERVER","attributes","url"],"mappings":"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","ignoreList":[0]}}] +} \ No newline at end of file diff --git a/.next/dev/server/chunks/Documents_00 - projet_plumeia_src_lib_prisma_ts_36e982ef._.js b/.next/dev/server/chunks/Documents_00 - projet_plumeia_src_lib_prisma_ts_36e982ef._.js new file mode 100644 index 0000000..34d17a7 --- /dev/null +++ b/.next/dev/server/chunks/Documents_00 - projet_plumeia_src_lib_prisma_ts_36e982ef._.js @@ -0,0 +1,10 @@ +module.exports = [ +"[project]/Documents/00 - projet/plumeia/src/lib/prisma.ts [app-route] (ecmascript, async loader)", ((__turbopack_context__) => { + +__turbopack_context__.v((parentImport) => { + return Promise.resolve().then(() => { + return parentImport("[project]/Documents/00 - projet/plumeia/src/lib/prisma.ts [app-route] (ecmascript)"); + }); +}); +}), +]; \ No newline at end of file diff --git a/.next/dev/server/chunks/Documents_00 - projet_plumeia_src_lib_prisma_ts_36e982ef._.js.map b/.next/dev/server/chunks/Documents_00 - projet_plumeia_src_lib_prisma_ts_36e982ef._.js.map new file mode 100644 index 0000000..c15d7ec --- /dev/null +++ b/.next/dev/server/chunks/Documents_00 - projet_plumeia_src_lib_prisma_ts_36e982ef._.js.map @@ -0,0 +1,5 @@ +{ + "version": 3, + "sources": [], + "sections": [] +} \ No newline at end of file diff --git a/.next/dev/server/chunks/[root-of-the-server]__3e7d68f1._.js b/.next/dev/server/chunks/[root-of-the-server]__3e7d68f1._.js new file mode 100644 index 0000000..dbbf171 --- /dev/null +++ b/.next/dev/server/chunks/[root-of-the-server]__3e7d68f1._.js @@ -0,0 +1,268 @@ +module.exports = [ +"[externals]/next/dist/compiled/next-server/app-route-turbo.runtime.dev.js [external] (next/dist/compiled/next-server/app-route-turbo.runtime.dev.js, cjs)", ((__turbopack_context__, module, exports) => { + +const mod = __turbopack_context__.x("next/dist/compiled/next-server/app-route-turbo.runtime.dev.js", () => require("next/dist/compiled/next-server/app-route-turbo.runtime.dev.js")); + +module.exports = mod; +}), +"[externals]/next/dist/compiled/@opentelemetry/api [external] (next/dist/compiled/@opentelemetry/api, cjs)", ((__turbopack_context__, module, exports) => { + +const mod = __turbopack_context__.x("next/dist/compiled/@opentelemetry/api", () => require("next/dist/compiled/@opentelemetry/api")); + +module.exports = mod; +}), +"[externals]/next/dist/compiled/next-server/app-page-turbo.runtime.dev.js [external] (next/dist/compiled/next-server/app-page-turbo.runtime.dev.js, cjs)", ((__turbopack_context__, module, exports) => { + +const mod = __turbopack_context__.x("next/dist/compiled/next-server/app-page-turbo.runtime.dev.js", () => require("next/dist/compiled/next-server/app-page-turbo.runtime.dev.js")); + +module.exports = mod; +}), +"[externals]/next/dist/server/app-render/work-unit-async-storage.external.js [external] (next/dist/server/app-render/work-unit-async-storage.external.js, cjs)", ((__turbopack_context__, module, exports) => { + +const mod = __turbopack_context__.x("next/dist/server/app-render/work-unit-async-storage.external.js", () => require("next/dist/server/app-render/work-unit-async-storage.external.js")); + +module.exports = mod; +}), +"[externals]/next/dist/server/app-render/work-async-storage.external.js [external] (next/dist/server/app-render/work-async-storage.external.js, cjs)", ((__turbopack_context__, module, exports) => { + +const mod = __turbopack_context__.x("next/dist/server/app-render/work-async-storage.external.js", () => require("next/dist/server/app-render/work-async-storage.external.js")); + +module.exports = mod; +}), +"[externals]/next/dist/shared/lib/no-fallback-error.external.js [external] (next/dist/shared/lib/no-fallback-error.external.js, cjs)", ((__turbopack_context__, module, exports) => { + +const mod = __turbopack_context__.x("next/dist/shared/lib/no-fallback-error.external.js", () => require("next/dist/shared/lib/no-fallback-error.external.js")); + +module.exports = mod; +}), +"[externals]/next/dist/server/app-render/after-task-async-storage.external.js [external] (next/dist/server/app-render/after-task-async-storage.external.js, cjs)", ((__turbopack_context__, module, exports) => { + +const mod = __turbopack_context__.x("next/dist/server/app-render/after-task-async-storage.external.js", () => require("next/dist/server/app-render/after-task-async-storage.external.js")); + +module.exports = mod; +}), +"[externals]/crypto [external] (crypto, cjs)", ((__turbopack_context__, module, exports) => { + +const mod = __turbopack_context__.x("crypto", () => require("crypto")); + +module.exports = mod; +}), +"[externals]/next/dist/server/app-render/action-async-storage.external.js [external] (next/dist/server/app-render/action-async-storage.external.js, cjs)", ((__turbopack_context__, module, exports) => { + +const mod = __turbopack_context__.x("next/dist/server/app-render/action-async-storage.external.js", () => require("next/dist/server/app-render/action-async-storage.external.js")); + +module.exports = mod; +}), +"[project]/Documents/00 - projet/plumeia/src/lib/auth.ts [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +__turbopack_context__.s([ + "auth", + ()=>auth, + "handlers", + ()=>handlers, + "signIn", + ()=>signIn, + "signOut", + ()=>signOut +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next-auth/index.js [app-route] (ecmascript) "); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$providers$2f$credentials$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next-auth/providers/credentials.js [app-route] (ecmascript) "); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f40$auth$2f$core$2f$providers$2f$credentials$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/@auth/core/providers/credentials.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$bcryptjs$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/bcryptjs/index.js [app-route] (ecmascript)"); +; +; +; +const { handlers, signIn, signOut, auth } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__$3c$locals$3e$__["default"])({ + providers: [ + (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f40$auth$2f$core$2f$providers$2f$credentials$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"])({ + name: 'credentials', + credentials: { + email: { + label: 'Email', + type: 'email' + }, + password: { + label: 'Password', + type: 'password' + } + }, + async authorize (credentials) { + if (!credentials?.email || !credentials?.password) return null; + // Lazy import to avoid PrismaClient initialization during build + const { default: getDB } = await __turbopack_context__.A("[project]/Documents/00 - projet/plumeia/src/lib/prisma.ts [app-route] (ecmascript, async loader)"); + const prisma = getDB(); + const user = await prisma.user.findUnique({ + where: { + email: credentials.email + } + }); + if (!user) return null; + const isValid = await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$bcryptjs$2f$index$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"].compare(credentials.password, user.hashedPassword); + if (!isValid) return null; + return { + id: user.id, + email: user.email, + name: user.name + }; + } + }) + ], + session: { + strategy: 'jwt' + }, + callbacks: { + async jwt ({ token, user }) { + if (user) { + token.id = user.id; + } + return token; + }, + async session ({ session, token }) { + if (session.user && token.id) { + session.user.id = token.id; + } + return session; + } + }, + pages: { + signIn: '/' + } +}); +}), +"[project]/Documents/00 - projet/plumeia/src/lib/prisma.ts [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +return __turbopack_context__.a(async (__turbopack_handle_async_dependencies__, __turbopack_async_result__) => { try { + +__turbopack_context__.s([ + "default", + ()=>__TURBOPACK__default__export__, + "getDB", + ()=>getDB +]); +var __TURBOPACK__imported__module__$5b$externals$5d2f40$prisma$2f$client__$5b$external$5d$__$2840$prisma$2f$client$2c$__cjs$2c$__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f40$prisma$2f$client$29$__ = __turbopack_context__.i("[externals]/@prisma/client [external] (@prisma/client, cjs, [project]/Documents/00 - projet/plumeia/node_modules/@prisma/client)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f40$prisma$2f$adapter$2d$pg$2f$dist$2f$index$2e$mjs__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/@prisma/adapter-pg/dist/index.mjs [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$externals$5d2f$pg__$5b$external$5d$__$28$pg$2c$__esm_import$2c$__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$pg$29$__ = __turbopack_context__.i("[externals]/pg [external] (pg, esm_import, [project]/Documents/00 - projet/plumeia/node_modules/pg)"); +var __turbopack_async_dependencies__ = __turbopack_handle_async_dependencies__([ + __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f40$prisma$2f$adapter$2d$pg$2f$dist$2f$index$2e$mjs__$5b$app$2d$route$5d$__$28$ecmascript$29$__, + __TURBOPACK__imported__module__$5b$externals$5d2f$pg__$5b$external$5d$__$28$pg$2c$__esm_import$2c$__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$pg$29$__ +]); +[__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f40$prisma$2f$adapter$2d$pg$2f$dist$2f$index$2e$mjs__$5b$app$2d$route$5d$__$28$ecmascript$29$__, __TURBOPACK__imported__module__$5b$externals$5d2f$pg__$5b$external$5d$__$28$pg$2c$__esm_import$2c$__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$pg$29$__] = __turbopack_async_dependencies__.then ? (await __turbopack_async_dependencies__)() : __turbopack_async_dependencies__; +; +; +; +const globalForPrisma = globalThis; +function getDB() { + if (!globalForPrisma.prisma) { + const connectionString = process.env.DATABASE_URL; + const pool = new __TURBOPACK__imported__module__$5b$externals$5d2f$pg__$5b$external$5d$__$28$pg$2c$__esm_import$2c$__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$pg$29$__["Pool"]({ + connectionString + }); + const adapter = new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f40$prisma$2f$adapter$2d$pg$2f$dist$2f$index$2e$mjs__$5b$app$2d$route$5d$__$28$ecmascript$29$__["PrismaPg"](pool); + globalForPrisma.prisma = new __TURBOPACK__imported__module__$5b$externals$5d2f40$prisma$2f$client__$5b$external$5d$__$2840$prisma$2f$client$2c$__cjs$2c$__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f40$prisma$2f$client$29$__["PrismaClient"]({ + adapter + }); + } + return globalForPrisma.prisma; +} +const __TURBOPACK__default__export__ = getDB; +__turbopack_async_result__(); +} catch(e) { __turbopack_async_result__(e); } }, false);}), +"[project]/Documents/00 - projet/plumeia/src/app/api/projects/[id]/workflow/route.ts [app-route] (ecmascript)", ((__turbopack_context__) => { +"use strict"; + +return __turbopack_context__.a(async (__turbopack_handle_async_dependencies__, __turbopack_async_result__) => { try { + +__turbopack_context__.s([ + "PUT", + ()=>PUT, + "dynamic", + ()=>dynamic +]); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$server$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/server.js [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$auth$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/lib/auth.ts [app-route] (ecmascript)"); +var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$prisma$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/lib/prisma.ts [app-route] (ecmascript)"); +var __turbopack_async_dependencies__ = __turbopack_handle_async_dependencies__([ + __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$prisma$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__ +]); +[__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$prisma$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__] = __turbopack_async_dependencies__.then ? (await __turbopack_async_dependencies__)() : __turbopack_async_dependencies__; +const dynamic = 'force-dynamic'; +; +; +; +async function PUT(request, { params }) { + const session = await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$auth$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__["auth"])(); + if (!session?.user?.id) { + return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$server$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextResponse"].json({ + error: 'Non autorisé' + }, { + status: 401 + }); + } + const { id } = await params; + const prisma = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$prisma$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"])(); + // Verify ownership + const project = await prisma.project.findFirst({ + where: { + id, + userId: session.user.id + } + }); + if (!project) { + return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$server$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextResponse"].json({ + error: 'Projet non trouvé' + }, { + status: 404 + }); + } + const { nodes, connections } = await request.json(); + // Replace all nodes and connections in a transaction + await prisma.$transaction(async (tx)=>{ + // Delete existing + await tx.plotConnection.deleteMany({ + where: { + projectId: id + } + }); + await tx.plotNode.deleteMany({ + where: { + projectId: id + } + }); + // Create new nodes + if (nodes && nodes.length > 0) { + await tx.plotNode.createMany({ + data: nodes.map((n)=>({ + id: n.id, + projectId: id, + x: n.x, + y: n.y, + title: n.title || '', + description: n.description || '', + color: n.color || '#ffffff', + type: n.type || 'story' + })) + }); + } + // Create new connections + if (connections && connections.length > 0) { + await tx.plotConnection.createMany({ + data: connections.map((c)=>({ + id: c.id, + projectId: id, + source: c.source, + target: c.target + })) + }); + } + }); + return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$server$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextResponse"].json({ + success: true + }); +} +__turbopack_async_result__(); +} catch(e) { __turbopack_async_result__(e); } }, false);}), +]; + +//# sourceMappingURL=%5Broot-of-the-server%5D__3e7d68f1._.js.map \ No newline at end of file diff --git a/.next/dev/server/chunks/[root-of-the-server]__3e7d68f1._.js.map b/.next/dev/server/chunks/[root-of-the-server]__3e7d68f1._.js.map new file mode 100644 index 0000000..27fb43c --- /dev/null +++ b/.next/dev/server/chunks/[root-of-the-server]__3e7d68f1._.js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": [], + "sections": [ + {"offset": {"line": 58, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/auth.ts"],"sourcesContent":["import NextAuth from 'next-auth';\r\nimport Credentials from 'next-auth/providers/credentials';\r\nimport bcrypt from 'bcryptjs';\r\n\r\nexport const { handlers, signIn, signOut, auth } = NextAuth({\r\n providers: [\r\n Credentials({\r\n name: 'credentials',\r\n credentials: {\r\n email: { label: 'Email', type: 'email' },\r\n password: { label: 'Password', type: 'password' },\r\n },\r\n async authorize(credentials) {\r\n if (!credentials?.email || !credentials?.password) return null;\r\n\r\n // Lazy import to avoid PrismaClient initialization during build\r\n const { default: getDB } = await import('./prisma');\r\n const prisma = getDB();\r\n\r\n const user = await prisma.user.findUnique({\r\n where: { email: credentials.email as string },\r\n });\r\n\r\n if (!user) return null;\r\n\r\n const isValid = await bcrypt.compare(\r\n credentials.password as string,\r\n user.hashedPassword\r\n );\r\n\r\n if (!isValid) return null;\r\n\r\n return {\r\n id: user.id,\r\n email: user.email,\r\n name: user.name,\r\n };\r\n },\r\n }),\r\n ],\r\n session: {\r\n strategy: 'jwt',\r\n },\r\n callbacks: {\r\n async jwt({ token, user }) {\r\n if (user) {\r\n token.id = user.id;\r\n }\r\n return token;\r\n },\r\n async session({ session, token }) {\r\n if (session.user && token.id) {\r\n session.user.id = token.id as string;\r\n }\r\n return session;\r\n },\r\n },\r\n pages: {\r\n signIn: '/',\r\n },\r\n});\r\n"],"names":[],"mappings":";;;;;;;;;;AAAA;AACA;AAAA;AACA;;;;AAEO,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAA,8MAAQ,EAAC;IACxD,WAAW;QACP,IAAA,mNAAW,EAAC;YACR,MAAM;YACN,aAAa;gBACT,OAAO;oBAAE,OAAO;oBAAS,MAAM;gBAAQ;gBACvC,UAAU;oBAAE,OAAO;oBAAY,MAAM;gBAAW;YACpD;YACA,MAAM,WAAU,WAAW;gBACvB,IAAI,CAAC,aAAa,SAAS,CAAC,aAAa,UAAU,OAAO;gBAE1D,gEAAgE;gBAChE,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG;gBAC3B,MAAM,SAAS;gBAEf,MAAM,OAAO,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC;oBACtC,OAAO;wBAAE,OAAO,YAAY,KAAK;oBAAW;gBAChD;gBAEA,IAAI,CAAC,MAAM,OAAO;gBAElB,MAAM,UAAU,MAAM,0LAAM,CAAC,OAAO,CAChC,YAAY,QAAQ,EACpB,KAAK,cAAc;gBAGvB,IAAI,CAAC,SAAS,OAAO;gBAErB,OAAO;oBACH,IAAI,KAAK,EAAE;oBACX,OAAO,KAAK,KAAK;oBACjB,MAAM,KAAK,IAAI;gBACnB;YACJ;QACJ;KACH;IACD,SAAS;QACL,UAAU;IACd;IACA,WAAW;QACP,MAAM,KAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YACrB,IAAI,MAAM;gBACN,MAAM,EAAE,GAAG,KAAK,EAAE;YACtB;YACA,OAAO;QACX;QACA,MAAM,SAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;YAC5B,IAAI,QAAQ,IAAI,IAAI,MAAM,EAAE,EAAE;gBAC1B,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE;YAC9B;YACA,OAAO;QACX;IACJ;IACA,OAAO;QACH,QAAQ;IACZ;AACJ"}}, + {"offset": {"line": 137, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/prisma.ts"],"sourcesContent":["import { PrismaClient } from '@prisma/client';\r\nimport { PrismaPg } from '@prisma/adapter-pg';\r\nimport { Pool } from 'pg';\r\n\r\nconst globalForPrisma = globalThis as unknown as {\r\n prisma: PrismaClient | undefined;\r\n};\r\n\r\n/**\r\n * Returns a singleton PrismaClient instance using the Prisma v7 adapter pattern.\r\n * Uses @prisma/adapter-pg with a pg Pool for direct PostgreSQL connections.\r\n */\r\nexport function getDB(): PrismaClient {\r\n if (!globalForPrisma.prisma) {\r\n const connectionString = process.env.DATABASE_URL;\r\n const pool = new Pool({ connectionString });\r\n const adapter = new PrismaPg(pool);\r\n\r\n globalForPrisma.prisma = new PrismaClient({ adapter });\r\n }\r\n return globalForPrisma.prisma;\r\n}\r\n\r\nexport default getDB;\r\n"],"names":[],"mappings":";;;;;;AAAA;AACA;AACA;;;;;;;;;AAEA,MAAM,kBAAkB;AAQjB,SAAS;IACZ,IAAI,CAAC,gBAAgB,MAAM,EAAE;QACzB,MAAM,mBAAmB,QAAQ,GAAG,CAAC,YAAY;QACjD,MAAM,OAAO,IAAI,iMAAI,CAAC;YAAE;QAAiB;QACzC,MAAM,UAAU,IAAI,qNAAQ,CAAC;QAE7B,gBAAgB,MAAM,GAAG,IAAI,kPAAY,CAAC;YAAE;QAAQ;IACxD;IACA,OAAO,gBAAgB,MAAM;AACjC;uCAEe"}}, + {"offset": {"line": 176, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/api/projects/%5Bid%5D/workflow/route.ts"],"sourcesContent":["export const dynamic = 'force-dynamic';\r\n\r\nimport { NextRequest, NextResponse } from 'next/server';\r\nimport { auth } from '@/lib/auth';\r\nimport getDB from '@/lib/prisma';\r\n\r\n// PUT /api/projects/[id]/workflow — Sync workflow (nodes + connections)\r\nexport async function PUT(\r\n request: NextRequest,\r\n { params }: { params: Promise<{ id: string }> }\r\n) {\r\n const session = await auth();\r\n if (!session?.user?.id) {\r\n return NextResponse.json({ error: 'Non autorisé' }, { status: 401 });\r\n }\r\n\r\n const { id } = await params;\r\n const prisma = getDB();\r\n\r\n // Verify ownership\r\n const project = await prisma.project.findFirst({\r\n where: { id, userId: session.user.id },\r\n });\r\n if (!project) {\r\n return NextResponse.json({ error: 'Projet non trouvé' }, { status: 404 });\r\n }\r\n\r\n const { nodes, connections } = await request.json();\r\n\r\n // Replace all nodes and connections in a transaction\r\n await prisma.$transaction(async (tx) => {\r\n // Delete existing\r\n await tx.plotConnection.deleteMany({ where: { projectId: id } });\r\n await tx.plotNode.deleteMany({ where: { projectId: id } });\r\n\r\n // Create new nodes\r\n if (nodes && nodes.length > 0) {\r\n await tx.plotNode.createMany({\r\n data: nodes.map((n: any) => ({\r\n id: n.id,\r\n projectId: id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title || '',\r\n description: n.description || '',\r\n color: n.color || '#ffffff',\r\n type: n.type || 'story',\r\n })),\r\n });\r\n }\r\n\r\n // Create new connections\r\n if (connections && connections.length > 0) {\r\n await tx.plotConnection.createMany({\r\n data: connections.map((c: any) => ({\r\n id: c.id,\r\n projectId: id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n });\r\n }\r\n });\r\n\r\n return NextResponse.json({ success: true });\r\n}\r\n"],"names":[],"mappings":";;;;;;AAEA;AACA;AACA;;;;;AAJO,MAAM,UAAU;;;;AAOhB,eAAe,IAClB,OAAoB,EACpB,EAAE,MAAM,EAAuC;IAE/C,MAAM,UAAU,MAAM,IAAA,wKAAI;IAC1B,IAAI,CAAC,SAAS,MAAM,IAAI;QACpB,OAAO,4LAAY,CAAC,IAAI,CAAC;YAAE,OAAO;QAAe,GAAG;YAAE,QAAQ;QAAI;IACtE;IAEA,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM;IACrB,MAAM,SAAS,IAAA,6KAAK;IAEpB,mBAAmB;IACnB,MAAM,UAAU,MAAM,OAAO,OAAO,CAAC,SAAS,CAAC;QAC3C,OAAO;YAAE;YAAI,QAAQ,QAAQ,IAAI,CAAC,EAAE;QAAC;IACzC;IACA,IAAI,CAAC,SAAS;QACV,OAAO,4LAAY,CAAC,IAAI,CAAC;YAAE,OAAO;QAAoB,GAAG;YAAE,QAAQ;QAAI;IAC3E;IAEA,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ,IAAI;IAEjD,qDAAqD;IACrD,MAAM,OAAO,YAAY,CAAC,OAAO;QAC7B,kBAAkB;QAClB,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC;YAAE,OAAO;gBAAE,WAAW;YAAG;QAAE;QAC9D,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO;gBAAE,WAAW;YAAG;QAAE;QAExD,mBAAmB;QACnB,IAAI,SAAS,MAAM,MAAM,GAAG,GAAG;YAC3B,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC;gBACzB,MAAM,MAAM,GAAG,CAAC,CAAC,IAAW,CAAC;wBACzB,IAAI,EAAE,EAAE;wBACR,WAAW;wBACX,GAAG,EAAE,CAAC;wBACN,GAAG,EAAE,CAAC;wBACN,OAAO,EAAE,KAAK,IAAI;wBAClB,aAAa,EAAE,WAAW,IAAI;wBAC9B,OAAO,EAAE,KAAK,IAAI;wBAClB,MAAM,EAAE,IAAI,IAAI;oBACpB,CAAC;YACL;QACJ;QAEA,yBAAyB;QACzB,IAAI,eAAe,YAAY,MAAM,GAAG,GAAG;YACvC,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC;gBAC/B,MAAM,YAAY,GAAG,CAAC,CAAC,IAAW,CAAC;wBAC/B,IAAI,EAAE,EAAE;wBACR,WAAW;wBACX,QAAQ,EAAE,MAAM;wBAChB,QAAQ,EAAE,MAAM;oBACpB,CAAC;YACL;QACJ;IACJ;IAEA,OAAO,4LAAY,CAAC,IAAI,CAAC;QAAE,SAAS;IAAK;AAC7C"}}] +} \ No newline at end of file diff --git a/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_ba56306a._.js b/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_ba56306a._.js index 59fe73b..73f0984 100644 --- a/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_ba56306a._.js +++ b/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_ba56306a._.js @@ -79,7 +79,7 @@ const renderTextWithLinks = (text, entities, onNavigate)=>{ children: parts }, void 0, false); }; -const StoryNode = /*#__PURE__*/ __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$__["default"].memo(({ node, isSelected, isEditing, activeColorPickerId, entities, savedColors, onMouseDown, onMouseUp, onStartConnection, onUpdate, onSetEditing, onToggleColorPicker, onSaveColor, onNavigateToEntity, onInputFocus, onInputCheckAutocomplete, onKeyDownInInput })=>{ +const StoryNode = /*#__PURE__*/ __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$__["default"].memo(({ node, isSelected, isEditing, isDragging, activeColorPickerId, entities, savedColors, onMouseDown, onMouseUp, onStartConnection, onUpdate, onSetEditing, onToggleColorPicker, onSaveColor, onNavigateToEntity, onInputFocus, onInputCheckAutocomplete, onKeyDownInInput })=>{ const [showTypePicker, setShowTypePicker] = (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 richDescription = (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$__["useMemo"])(()=>{ return renderTextWithLinks(node.description, entities, onNavigateToEntity); @@ -89,7 +89,8 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ onNavigateToEntity ]); 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"])("div", { - className: `absolute flex flex-col rounded-xl shadow-sm border transition-all z-10 group + className: `absolute flex flex-col rounded-xl shadow-sm border z-10 group + ${isDragging ? '' : 'transition-all'} ${isSelected ? 'ring-2 ring-indigo-500 shadow-lg scale-[1.01]' : 'border-slate-200 hover:shadow-md'} `, style: { @@ -101,13 +102,14 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ }, onMouseDown: (e)=>onMouseDown(e, node.id), onMouseUp: (e)=>onMouseUp(e, node.id), + onDoubleClick: (e)=>e.stopPropagation(), onMouseLeave: ()=>setShowTypePicker(false), 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"])("div", { className: "h-1.5 rounded-t-xl bg-black/5 w-full cursor-grab active:cursor-grabbing" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 117, + lineNumber: 120, columnNumber: 13 }, ("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", { @@ -126,7 +128,7 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ autoFocus: true }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 122, + lineNumber: 125, columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$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: "font-bold text-slate-800 cursor-text truncate mr-6 text-sm", @@ -134,7 +136,7 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ children: node.title }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 130, + lineNumber: 133, columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$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", { @@ -147,12 +149,12 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ size: 14 }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 142, + lineNumber: 145, columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 138, + lineNumber: 141, columnNumber: 21 }, ("TURBOPACK compile-time value", void 0)), activeColorPickerId === node.id && /*#__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", { @@ -171,12 +173,12 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ } }, color, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 149, + lineNumber: 152, columnNumber: 37 }, ("TURBOPACK compile-time value", void 0))) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 147, + lineNumber: 150, columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$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", { @@ -193,12 +195,12 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ }) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 159, + lineNumber: 162, columnNumber: 37 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 158, + lineNumber: 161, columnNumber: 33 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$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", { @@ -207,25 +209,25 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ children: "+ SAUVER" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 166, + lineNumber: 169, columnNumber: 33 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 157, + lineNumber: 160, columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 146, + lineNumber: 149, columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 120, + lineNumber: 123, columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$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", { @@ -240,7 +242,7 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ onBlur: ()=>onSetEditing(null) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 179, + lineNumber: 182, columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$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-full h-full text-xs text-slate-600 leading-relaxed p-1 cursor-text whitespace-pre-wrap ${node.type === 'dialogue' ? 'font-mono bg-indigo-50/30 rounded pl-2 border-l-2 border-indigo-200' : ''}`, @@ -248,12 +250,12 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ children: richDescription }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 189, + lineNumber: 192, columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 177, + lineNumber: 180, columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$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", { @@ -278,12 +280,12 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ className: "text-slate-500" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 206, + lineNumber: 209, columnNumber: 33 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 201, + lineNumber: 204, columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$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", { @@ -301,12 +303,12 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ className: "text-amber-500" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 213, + lineNumber: 216, columnNumber: 33 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 208, + lineNumber: 211, columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$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", { @@ -324,18 +326,18 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ className: "text-blue-500" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 220, + lineNumber: 223, columnNumber: 33 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 215, + lineNumber: 218, columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 200, + lineNumber: 203, columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$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", { @@ -350,7 +352,7 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ className: "text-slate-500" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 229, + lineNumber: 232, columnNumber: 51 }, ("TURBOPACK compile-time value", void 0)), node.type === 'action' && /*#__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$zap$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Zap$3e$__["Zap"], { @@ -358,7 +360,7 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ className: "text-amber-500" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 230, + lineNumber: 233, columnNumber: 52 }, ("TURBOPACK compile-time value", void 0)), node.type === 'dialogue' && /*#__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$message$2d$circle$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__MessageCircle$3e$__["MessageCircle"], { @@ -366,25 +368,25 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ className: "text-blue-500" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 231, + lineNumber: 234, columnNumber: 54 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 225, + lineNumber: 228, columnNumber: 21 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 198, + lineNumber: 201, columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 119, + lineNumber: 122, columnNumber: 13 }, ("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", { @@ -394,22 +396,22 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ size: 12 }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 240, + lineNumber: 243, columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 236, + lineNumber: 239, columnNumber: 13 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 102, + lineNumber: 103, columnNumber: 9 }, ("TURBOPACK compile-time value", void 0)); }, (prev, next)=>{ - return prev.node === next.node && prev.isSelected === next.isSelected && prev.isEditing === next.isEditing && prev.activeColorPickerId === next.activeColorPickerId && prev.entities === next.entities; + return prev.node === next.node && prev.isSelected === next.isSelected && prev.isEditing === next.isEditing && prev.isDragging === next.isDragging && prev.activeColorPickerId === next.activeColorPickerId && prev.entities === next.entities; }); const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ const containerRef = (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); @@ -659,12 +661,15 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ containerRef.current.scrollTop = scrollStart.y - dy; return; } - const scrollLeft = containerRef.current?.scrollLeft || 0; - const scrollTop = containerRef.current?.scrollTop || 0; - setMousePos({ - x: clientX - rect.left + scrollLeft, - y: clientY - rect.top + scrollTop - }); + // Only update mousePos when connecting (drawing a line), not during node drag + if (connectingNodeId) { + const scrollLeft = containerRef.current?.scrollLeft || 0; + const scrollTop = containerRef.current?.scrollTop || 0; + setMousePos({ + x: clientX - rect.left + scrollLeft, + y: clientY - rect.top + scrollTop + }); + } if (isDragging) { if (rafRef.current) return; rafRef.current = requestAnimationFrame(()=>{ @@ -683,7 +688,7 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ }); } }; - const handleMouseUp = ()=>{ + const handleMouseUp = (e)=>{ if (rafRef.current) { cancelAnimationFrame(rafRef.current); rafRef.current = null; @@ -692,6 +697,33 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ ...data, nodes: internalNodesRef.current }); + // Hit-test: if connecting, check if mouse is over any node + if (connectingNodeId && containerRef.current) { + const rect = containerRef.current.getBoundingClientRect(); + const scrollLeft = containerRef.current.scrollLeft; + const scrollTop = containerRef.current.scrollTop; + const mx = e.clientX - rect.left + scrollLeft; + const my = e.clientY - rect.top + scrollTop; + const targetNode = internalNodesRef.current.find((n)=>n.id !== connectingNodeId && mx >= n.x && mx <= n.x + CARD_WIDTH && my >= n.y && my <= n.y + CARD_HEIGHT); + if (targetNode) { + const exists = data.connections.some((c)=>c.source === connectingNodeId && c.target === targetNode.id); + if (!exists) { + const newConn = { + id: `conn-${Date.now()}`, + source: connectingNodeId, + target: targetNode.id + }; + onUpdate({ + ...data, + nodes: internalNodesRef.current, + connections: [ + ...data.connections, + newConn + ] + }); + } + } + } setIsDragging(false); setIsPanning(false); setConnectingNodeId(null); @@ -796,36 +828,36 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ size: 14 }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 575, - columnNumber: 17 + lineNumber: 616, + columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)), " AJOUTER NŒUD" ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 574, - columnNumber: 13 + lineNumber: 615, + columnNumber: 21 }, ("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", { className: "w-px h-6 bg-slate-100 mx-2" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 577, - columnNumber: 13 + lineNumber: 618, + columnNumber: 21 }, ("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", { className: "text-[10px] uppercase font-bold text-slate-400 tracking-wider", children: selectedNodeIds.size > 0 ? `${selectedNodeIds.size} SÉLECTIONNÉ(S)` : 'Double-cliquez sur le canvas pour créer' }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 578, - columnNumber: 13 + lineNumber: 619, + columnNumber: 21 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 573, - columnNumber: 9 + lineNumber: 614, + columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$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 items-center gap-2", @@ -838,24 +870,24 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ size: 16 }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 584, - columnNumber: 17 + lineNumber: 625, + columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 583, - columnNumber: 13 + lineNumber: 624, + columnNumber: 21 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 582, - columnNumber: 9 + lineNumber: 623, + columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 572, - columnNumber: 7 + lineNumber: 613, + columnNumber: 13 }, ("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", { ref: containerRef, @@ -890,8 +922,8 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ markerEnd: "url(#arrowhead)" }, conn.id, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 611, - columnNumber: 21 + lineNumber: 652, + columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)); }), connectingNodeId && /*#__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"])("line", { @@ -905,8 +937,8 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ markerEnd: "url(#arrowhead-blue)" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 615, - columnNumber: 17 + lineNumber: 656, + columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$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"])("defs", { children: [ @@ -922,13 +954,13 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ fill: "#cbd5e1" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 624, - columnNumber: 21 + lineNumber: 665, + columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 623, - columnNumber: 17 + lineNumber: 664, + columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$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"])("marker", { id: "arrowhead-blue", @@ -942,30 +974,31 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ fill: "#6366f1" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 627, - columnNumber: 21 + lineNumber: 668, + columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 626, - columnNumber: 17 + lineNumber: 667, + columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 622, - columnNumber: 13 + lineNumber: 663, + columnNumber: 21 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 601, - columnNumber: 9 + lineNumber: 642, + columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)), internalNodes.map((node)=>/*#__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"])(StoryNode, { node: node, isSelected: selectedNodeIds.has(node.id), isEditing: editingNodeId === node.id, + isDragging: isDragging, activeColorPickerId: activeColorPickerId, entities: entities, savedColors: savedColors, @@ -982,14 +1015,14 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ onKeyDownInInput: handleKeyDownInInput }, node.id, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 633, - columnNumber: 13 + lineNumber: 674, + columnNumber: 21 }, ("TURBOPACK compile-time value", void 0))) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 589, - columnNumber: 7 + lineNumber: 630, + columnNumber: 13 }, ("TURBOPACK compile-time value", void 0)), activeSuggestion && /*#__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: "fixed z-50 bg-white rounded-xl shadow-2xl border border-indigo-100 w-64 max-h-48 overflow-y-auto", @@ -1007,8 +1040,8 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 658, - columnNumber: 15 + lineNumber: 700, + columnNumber: 21 }, ("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", { className: "divide-y divide-slate-50", @@ -1018,32 +1051,32 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ children: ent.name }, ent.id, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 664, - columnNumber: 27 + lineNumber: 706, + columnNumber: 33 }, ("TURBOPACK compile-time value", void 0))) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$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: "p-4 text-xs text-slate-400 italic text-center", children: "Aucun résultat" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 673, - columnNumber: 23 + lineNumber: 715, + columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 661, - columnNumber: 15 + lineNumber: 703, + columnNumber: 21 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 657, - columnNumber: 11 + lineNumber: 699, + columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 571, - columnNumber: 5 + lineNumber: 612, + columnNumber: 9 }, ("TURBOPACK compile-time value", void 0)); }; const __TURBOPACK__default__export__ = StoryWorkflow; diff --git a/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_ba56306a._.js.map b/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_ba56306a._.js.map index 676f062..21c3254 100644 --- a/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_ba56306a._.js.map +++ b/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_ba56306a._.js.map @@ -2,8 +2,8 @@ "version": 3, "sources": [], "sections": [ - {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/StoryWorkflow.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState, useRef, useEffect, useCallback, useMemo } from 'react';\nimport { WorkflowData, PlotNode, PlotConnection, PlotNodeType, Entity, EntityType } from '@/lib/types';\nimport { Plus, Trash2, ArrowRight, BookOpen, MessageCircle, Zap, Palette, Save, Link2 } from 'lucide-react';\n\ninterface StoryWorkflowProps {\n data: WorkflowData;\n onUpdate: (data: WorkflowData) => void;\n entities: Entity[];\n onNavigateToEntity: (entityId: string) => void;\n}\n\nconst CARD_WIDTH = 260;\nconst CARD_HEIGHT = 220;\n\nconst INITIAL_COLORS = [\n '#ffffff', // White\n '#dbeafe', // Blue\n '#dcfce7', // Green\n '#fef9c3', // Yellow\n '#fee2e2', // Red\n '#f3e8ff', // Purple\n];\n\nconst renderTextWithLinks = (text: string, entities: Entity[], onNavigate: (id: string) => void) => {\n if (!text) return Description...;\n \n const parts: (string | React.ReactNode)[] = [text];\n \n entities.forEach(entity => {\n if (!entity.name) return;\n const regex = new RegExp(`(${entity.name})`, 'gi');\n \n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (typeof part === 'string') {\n const split = part.split(regex);\n if (split.length > 1) {\n const newParts = split.map((s, idx) => {\n if (s.toLowerCase() === entity.name.toLowerCase()) {\n return (\n { e.stopPropagation(); onNavigate(entity.id); }}\n className=\"text-indigo-600 hover:text-indigo-800 underline decoration-indigo-300 hover:decoration-indigo-600 cursor-pointer font-medium bg-indigo-50 px-0.5 rounded transition-all\"\n title={`Voir la fiche de ${entity.name}`}\n >\n {s}\n \n );\n }\n return s;\n });\n parts.splice(i, 1, ...newParts);\n i += newParts.length - 1;\n }\n }\n }\n });\n\n return <>{parts};\n};\n\ninterface StoryNodeProps {\n node: PlotNode;\n isSelected: boolean;\n isEditing: boolean;\n activeColorPickerId: string | null;\n entities: Entity[];\n savedColors: string[];\n \n onMouseDown: (e: React.MouseEvent, id: string) => void;\n onMouseUp: (e: React.MouseEvent, id: string) => void;\n onStartConnection: (e: React.MouseEvent, id: string) => void;\n onUpdate: (id: string, updates: Partial) => void;\n onSetEditing: (id: string | null) => void;\n onToggleColorPicker: (id: string) => void;\n onSaveColor: (color: string) => void;\n onNavigateToEntity: (id: string) => void;\n \n onInputFocus: (e: React.FocusEvent) => void;\n onInputCheckAutocomplete: (e: React.ChangeEvent, id: string, field: 'title'|'description') => void;\n onKeyDownInInput: (e: React.KeyboardEvent, id: string) => void;\n}\n\nconst StoryNode = React.memo(({ \n node, isSelected, isEditing, activeColorPickerId, entities, savedColors,\n onMouseDown, onMouseUp, onStartConnection, onUpdate, onSetEditing, \n onToggleColorPicker, onSaveColor, onNavigateToEntity, \n onInputFocus, onInputCheckAutocomplete, onKeyDownInInput\n}: StoryNodeProps) => {\n\n const [showTypePicker, setShowTypePicker] = useState(false);\n\n const richDescription = useMemo(() => {\n return renderTextWithLinks(node.description, entities, onNavigateToEntity);\n }, [node.description, entities, onNavigateToEntity]);\n\n return (\n onMouseDown(e, node.id)}\n onMouseUp={(e) => onMouseUp(e, node.id)}\n onMouseLeave={() => setShowTypePicker(false)}\n >\n
\n\n
\n
\n {isEditing ? (\n onUpdate(node.id, { title: e.target.value })}\n onFocus={onInputFocus}\n autoFocus\n />\n ) : (\n
onSetEditing(node.id)}\n >\n {node.title}\n
\n )}\n\n \n\n {activeColorPickerId === node.id && (\n
e.stopPropagation()}>\n
\n {savedColors.map(color => (\n
\n
\n
\n onUpdate(node.id, { color: e.target.value })}\n />\n
\n \n
\n
\n )}\n
\n\n
\n {isEditing ? (\n onInputCheckAutocomplete(e, node.id, 'description')}\n onKeyDown={(e) => onKeyDownInInput(e, node.id)}\n onFocus={onInputFocus}\n onBlur={() => onSetEditing(null)}\n />\n ) : (\n
onSetEditing(node.id)}\n >\n {richDescription}\n
\n )}\n
\n\n
\n {showTypePicker && (\n
e.stopPropagation()}>\n { e.stopPropagation(); onUpdate(node.id, { type: 'story' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-slate-100 ${node.type === 'story' ? 'bg-indigo-50 ring-1 ring-indigo-200' : ''}`}\n title=\"Narration\"\n >\n \n \n { e.stopPropagation(); onUpdate(node.id, { type: 'action' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-amber-50 ${node.type === 'action' ? 'bg-amber-50 ring-1 ring-amber-200' : ''}`}\n title=\"Action\"\n >\n \n \n { e.stopPropagation(); onUpdate(node.id, { type: 'dialogue' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-blue-50 ${node.type === 'dialogue' ? 'bg-blue-50 ring-1 ring-blue-200' : ''}`}\n title=\"Dialogue\"\n >\n \n \n
\n )}\n\n { e.stopPropagation(); setShowTypePicker(!showTypePicker); }}\n >\n {node.type === 'story' && }\n {node.type === 'action' && }\n {node.type === 'dialogue' && }\n \n
\n
\n\n onStartConnection(e, node.id)}\n >\n \n \n
\n );\n}, (prev, next) => {\n return (\n prev.node === next.node && \n prev.isSelected === next.isSelected &&\n prev.isEditing === next.isEditing &&\n prev.activeColorPickerId === next.activeColorPickerId &&\n prev.entities === next.entities\n );\n});\n\ninterface SuggestionState {\n active: boolean;\n trigger: string;\n query: string;\n nodeId: string;\n field: 'title' | 'description';\n cursorIndex: number;\n selectedIndex: number;\n filteredEntities: Entity[];\n}\n\nconst StoryWorkflow: React.FC = ({ data, onUpdate, entities, onNavigateToEntity }) => {\n const containerRef = useRef(null);\n const rafRef = useRef(null);\n \n const [internalNodes, setInternalNodes] = useState(data.nodes);\n const internalNodesRef = useRef(internalNodes);\n useEffect(() => { internalNodesRef.current = internalNodes; }, [internalNodes]);\n\n useEffect(() => {\n setInternalNodes(data.nodes);\n }, [data.nodes]);\n\n useEffect(() => {\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n };\n }, []);\n\n const [activeSuggestion, setActiveSuggestion] = useState(null);\n const [selectedNodeIds, setSelectedNodeIds] = useState>(new Set());\n const [savedColors, setSavedColors] = useState(INITIAL_COLORS);\n const [activeColorPickerId, setActiveColorPickerId] = useState(null);\n const [editingNodeId, setEditingNodeId] = useState(null);\n const [history, setHistory] = useState([]);\n \n const [isDragging, setIsDragging] = useState(false);\n const [dragStartPositions, setDragStartPositions] = useState>(new Map());\n const [dragStartMouse, setDragStartMouse] = useState({ x: 0, y: 0 });\n\n const [connectingNodeId, setConnectingNodeId] = useState(null);\n const [mousePos, setMousePos] = useState({ x: 0, y: 0 });\n\n const [isPanning, setIsPanning] = useState(false);\n const [panStart, setPanStart] = useState({ x: 0, y: 0 });\n const [scrollStart, setScrollStart] = useState({ x: 0, y: 0 });\n\n const pushHistory = useCallback(() => {\n setHistory(prev => {\n const newHistory = [...prev, data];\n if (newHistory.length > 20) return newHistory.slice(newHistory.length - 20);\n return newHistory;\n });\n }, [data]);\n\n const updateNode = useCallback((id: string, updates: Partial) => {\n const currentNodes = internalNodesRef.current;\n onUpdate({\n ...data,\n nodes: currentNodes.map(n => n.id === id ? { ...n, ...updates } : n)\n });\n }, [data, onUpdate]);\n\n const handleInputFocus = useCallback((e: React.FocusEvent) => {\n e.stopPropagation();\n }, []);\n\n const handleInputWithAutocomplete = useCallback((\n e: React.ChangeEvent, \n nodeId: string, \n field: 'title' | 'description'\n ) => {\n const val = e.target.value;\n updateNode(nodeId, { [field]: val });\n \n const cursor = e.target.selectionStart || 0;\n const textBeforeCursor = val.slice(0, cursor);\n const match = textBeforeCursor.match(/([@#^])([^@#^\\s]*)$/);\n\n if (match) {\n const trigger = match[1];\n const query = match[2].toLowerCase();\n const targetType = trigger === '@' ? EntityType.CHARACTER : trigger === '#' ? EntityType.LOCATION : EntityType.OBJECT;\n const filtered = entities.filter(ent => \n ent.type === targetType && \n ent.name.toLowerCase().includes(query)\n );\n\n setActiveSuggestion({\n active: true,\n trigger,\n query,\n nodeId,\n field,\n cursorIndex: cursor,\n selectedIndex: 0,\n filteredEntities: filtered\n });\n } else {\n setActiveSuggestion(null);\n }\n }, [updateNode, entities]);\n\n const insertEntity = (entity: Entity) => {\n if (!activeSuggestion) return;\n const { nodeId, field, trigger, query } = activeSuggestion;\n const node = internalNodesRef.current.find(n => n.id === nodeId);\n if (!node) return;\n const currentText = node[field] as string;\n const cursor = activeSuggestion.cursorIndex;\n const insertionLength = trigger.length + query.length;\n const startIdx = cursor - insertionLength;\n if (startIdx < 0) return;\n const before = currentText.slice(0, startIdx);\n const after = currentText.slice(cursor);\n const isDialogue = node.type === 'dialogue' && activeSuggestion.trigger === '@';\n const suffix = isDialogue ? \": \" : \" \";\n updateNode(nodeId, { [field]: before + entity.name + suffix + after });\n setActiveSuggestion(null);\n };\n\n const handleKeyDownInInput = useCallback((e: React.KeyboardEvent, nodeId: string) => {\n if (activeSuggestion && activeSuggestion.nodeId === nodeId) {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex + 1) % prev.filteredEntities.length } : null);\n return;\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex - 1 + prev.filteredEntities.length) % prev.filteredEntities.length } : null);\n return;\n } else if (e.key === 'Tab' || e.key === 'Enter') {\n e.preventDefault();\n if (activeSuggestion.filteredEntities.length > 0) {\n insertEntity(activeSuggestion.filteredEntities[activeSuggestion.selectedIndex]);\n } else {\n setActiveSuggestion(null); \n }\n return;\n } else if (e.key === 'Escape') {\n setActiveSuggestion(null);\n return;\n }\n }\n }, [activeSuggestion, entities, updateNode]);\n\n const handleNodeMouseDown = useCallback((e: React.MouseEvent, nodeId: string) => {\n e.stopPropagation(); \n setActiveColorPickerId(null);\n\n setSelectedNodeIds(prevSelected => {\n const newSelection = new Set(prevSelected);\n if (e.ctrlKey) {\n if (newSelection.has(nodeId)) newSelection.delete(nodeId);\n else newSelection.add(nodeId);\n } else {\n if (!newSelection.has(nodeId)) {\n newSelection.clear();\n newSelection.add(nodeId);\n }\n }\n const finalDragIds = e.ctrlKey ? newSelection : (newSelection.has(nodeId) ? newSelection : new Set([nodeId]));\n const startPositions = new Map();\n internalNodesRef.current.forEach(n => {\n if (finalDragIds.has(n.id)) {\n startPositions.set(n.id, { x: n.x, y: n.y });\n }\n });\n setDragStartPositions(startPositions);\n return newSelection;\n });\n\n setIsDragging(true);\n setDragStartMouse({ x: e.clientX, y: e.clientY });\n pushHistory();\n }, [pushHistory]);\n\n const startConnection = useCallback((e: React.MouseEvent, nodeId: string) => {\n e.stopPropagation();\n pushHistory();\n setConnectingNodeId(nodeId);\n }, [pushHistory]);\n\n const finishConnection = useCallback((e: React.MouseEvent, targetId: string) => {\n if (connectingNodeId && connectingNodeId !== targetId) {\n const exists = data.connections.some(c => c.source === connectingNodeId && c.target === targetId);\n if (!exists) {\n const newConn: PlotConnection = {\n id: `conn-${Date.now()}`,\n source: connectingNodeId,\n target: targetId\n };\n onUpdate({\n ...data,\n nodes: internalNodesRef.current,\n connections: [...data.connections, newConn]\n });\n }\n }\n setConnectingNodeId(null);\n }, [data, onUpdate, connectingNodeId]);\n\n const handleToggleColorPicker = useCallback((id: string) => {\n setActiveColorPickerId(prev => prev === id ? null : id);\n }, []);\n\n const handleSaveColor = useCallback((color: string) => {\n setSavedColors(prev => !prev.includes(color) ? [...prev, color] : prev);\n }, []);\n\n const handleMouseMove = (e: React.MouseEvent) => {\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect) return;\n const clientX = e.clientX;\n const clientY = e.clientY;\n\n if (isPanning && containerRef.current) {\n const dx = clientX - panStart.x;\n const dy = clientY - panStart.y;\n containerRef.current.scrollLeft = scrollStart.x - dx;\n containerRef.current.scrollTop = scrollStart.y - dy;\n return;\n }\n\n const scrollLeft = containerRef.current?.scrollLeft || 0;\n const scrollTop = containerRef.current?.scrollTop || 0;\n setMousePos({ x: clientX - rect.left + scrollLeft, y: clientY - rect.top + scrollTop });\n\n if (isDragging) {\n if (rafRef.current) return;\n rafRef.current = requestAnimationFrame(() => {\n const dx = clientX - dragStartMouse.x;\n const dy = clientY - dragStartMouse.y;\n setInternalNodes(prevNodes => prevNodes.map(node => {\n const startPos = dragStartPositions.get(node.id);\n if (startPos) return { ...node, x: startPos.x + dx, y: startPos.y + dy };\n return node;\n }));\n rafRef.current = null;\n });\n }\n };\n\n const handleMouseUp = () => {\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n if (isDragging) onUpdate({ ...data, nodes: internalNodesRef.current });\n setIsDragging(false);\n setIsPanning(false);\n setConnectingNodeId(null);\n };\n\n const handleCanvasMouseDown = (e: React.MouseEvent) => {\n if (!e.ctrlKey) setSelectedNodeIds(new Set());\n setActiveSuggestion(null); \n setActiveColorPickerId(null); \n setEditingNodeId(null); \n setIsPanning(true);\n setPanStart({ x: e.clientX, y: e.clientY });\n if (containerRef.current) {\n setScrollStart({ x: containerRef.current.scrollLeft, y: containerRef.current.scrollTop });\n }\n };\n\n const handleCanvasDoubleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect) return;\n const x = e.clientX - rect.left + (containerRef.current?.scrollLeft || 0) - CARD_WIDTH / 2;\n const y = e.clientY - rect.top + (containerRef.current?.scrollTop || 0) - CARD_HEIGHT / 2;\n pushHistory();\n const newNode: PlotNode = {\n id: `node-${Date.now()}`,\n x,\n y,\n title: 'Nouvel événement',\n description: '',\n color: INITIAL_COLORS[0],\n type: 'story'\n };\n onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] });\n setSelectedNodeIds(new Set([newNode.id]));\n setEditingNodeId(newNode.id);\n };\n\n const handleDeleteSelected = () => {\n if (selectedNodeIds.size === 0) return;\n pushHistory();\n const newNodes = internalNodes.filter(n => !selectedNodeIds.has(n.id));\n const newConnections = data.connections.filter(c => !selectedNodeIds.has(c.source) && !selectedNodeIds.has(c.target));\n onUpdate({ nodes: newNodes, connections: newConnections });\n setSelectedNodeIds(new Set());\n };\n\n const handleAddNodeCenter = () => {\n pushHistory();\n const scrollLeft = containerRef.current?.scrollLeft || 0;\n const scrollTop = containerRef.current?.scrollTop || 0;\n const clientWidth = containerRef.current?.clientWidth || 800;\n const clientHeight = containerRef.current?.clientHeight || 600;\n const newNode: PlotNode = {\n id: `node-${Date.now()}`,\n x: scrollLeft + clientWidth / 2 - CARD_WIDTH / 2,\n y: scrollTop + clientHeight / 2 - CARD_HEIGHT / 2,\n title: 'Nouveau point d\\'intrigue',\n description: '',\n color: INITIAL_COLORS[0],\n type: 'story'\n };\n onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] });\n setSelectedNodeIds(new Set([newNode.id]));\n setEditingNodeId(newNode.id);\n };\n\n return (\n
\n
\n
\n \n
\n
\n {selectedNodeIds.size > 0 ? `${selectedNodeIds.size} SÉLECTIONNÉ(S)` : 'Double-cliquez sur le canvas pour créer'}\n
\n
\n
\n \n
\n
\n\n
\n \n {data.connections.map(conn => {\n const source = internalNodes.find(n => n.id === conn.source); \n const target = internalNodes.find(n => n.id === conn.target); \n if (!source || !target) return null;\n const startX = source.x + CARD_WIDTH / 2;\n const startY = source.y + CARD_HEIGHT / 2;\n const endX = target.x + CARD_WIDTH / 2;\n const endY = target.y + CARD_HEIGHT / 2;\n return (\n \n );\n })}\n {connectingNodeId && (\n n.id === connectingNodeId)?.x || 0) + CARD_WIDTH/2}\n y1={(internalNodes.find(n => n.id === connectingNodeId)?.y || 0) + CARD_HEIGHT/2}\n x2={mousePos.x} y2={mousePos.y}\n stroke=\"#6366f1\" strokeWidth=\"2\" strokeDasharray=\"5,5\" markerEnd=\"url(#arrowhead-blue)\"\n />\n )}\n \n \n \n \n \n \n \n \n \n\n {internalNodes.map(node => (\n \n ))}\n
\n\n {activeSuggestion && (\n
\n
\n Insérer {activeSuggestion.trigger === '@' ? 'Personnage' : activeSuggestion.trigger === '#' ? 'Lieu' : 'Objet'}\n
\n
\n {activeSuggestion.filteredEntities.length > 0 ? (\n activeSuggestion.filteredEntities.map((ent, idx) => (\n insertEntity(ent)}\n >\n {ent.name}\n \n ))\n ) : (\n
Aucun résultat
\n )}\n
\n
\n )}\n
\n );\n};\n\nexport default StoryWorkflow;\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 1053, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/workflow/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport StoryWorkflow from '@/components/StoryWorkflow';\r\nimport { useProjectContext } from '@/providers/ProjectProvider';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function WorkflowPage() {\r\n const { project, projectId, updateProject } = useProjectContext();\r\n const router = useRouter();\r\n\r\n return (\r\n updateProject({ workflow })}\r\n entities={project.entities || []}\r\n onNavigateToEntity={() => router.push(`/project/${projectId}/world`)}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AAJA;;;;;AAMe,SAAS;IACpB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAA,qMAAiB;IAC/D,MAAM,SAAS,IAAA,2LAAS;IAExB,qBACI,0RAAC,0LAAa;QACV,MAAM,QAAQ,QAAQ,IAAI;YAAE,OAAO,EAAE;YAAE,aAAa,EAAE;QAAC;QACvD,UAAU,CAAC,WAAa,cAAc;gBAAE;YAAS;QACjD,UAAU,QAAQ,QAAQ,IAAI,EAAE;QAChC,oBAAoB,IAAM,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,MAAM,CAAC;;;;;;AAG/E"}}, - {"offset": {"line": 1089, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/arrow-right.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-right.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n];\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJtMTIgNSA3IDctNyA3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('arrow-right', __iconNode);\n\nexport default ArrowRight;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAiB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAChD;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,KAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,0MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 1134, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/palette.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/palette.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z',\n key: 'e79jfc',\n },\n ],\n ['circle', { cx: '13.5', cy: '6.5', r: '.5', fill: 'currentColor', key: '1okk4w' }],\n ['circle', { cx: '17.5', cy: '10.5', r: '.5', fill: 'currentColor', key: 'f64h9f' }],\n ['circle', { cx: '6.5', cy: '12.5', r: '.5', fill: 'currentColor', key: 'qy21gx' }],\n ['circle', { cx: '8.5', cy: '7.5', r: '.5', fill: 'currentColor', key: 'fotxhn' }],\n];\n\n/**\n * @component @name Palette\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMjJhMSAxIDAgMCAxIDAtMjAgMTAgOSAwIDAgMSAxMCA5IDUgNSAwIDAgMS01IDVoLTIuMjVhMS43NSAxLjc1IDAgMCAwLTEuNCAyLjhsLjMuNGExLjc1IDEuNzUgMCAwIDEtMS40IDIuOHoiIC8+CiAgPGNpcmNsZSBjeD0iMTMuNSIgY3k9IjYuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KICA8Y2lyY2xlIGN4PSIxNy41IiBjeT0iMTAuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KICA8Y2lyY2xlIGN4PSI2LjUiIGN5PSIxMi41IiByPSIuNSIgZmlsbD0iY3VycmVudENvbG9yIiAvPgogIDxjaXJjbGUgY3g9IjguNSIgY3k9IjcuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/palette\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Palette = createLucideIcon('palette', __iconNode);\n\nexport default Palette;\n"],"names":[],"mappings":"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"}}] + {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/StoryWorkflow.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState, useRef, useEffect, useCallback, useMemo } from 'react';\nimport { WorkflowData, PlotNode, PlotConnection, PlotNodeType, Entity, EntityType } from '@/lib/types';\nimport { Plus, Trash2, ArrowRight, BookOpen, MessageCircle, Zap, Palette, Save, Link2 } from 'lucide-react';\n\ninterface StoryWorkflowProps {\n data: WorkflowData;\n onUpdate: (data: WorkflowData) => void;\n entities: Entity[];\n onNavigateToEntity: (entityId: string) => void;\n}\n\nconst CARD_WIDTH = 260;\nconst CARD_HEIGHT = 220;\n\nconst INITIAL_COLORS = [\n '#ffffff', // White\n '#dbeafe', // Blue\n '#dcfce7', // Green\n '#fef9c3', // Yellow\n '#fee2e2', // Red\n '#f3e8ff', // Purple\n];\n\nconst renderTextWithLinks = (text: string, entities: Entity[], onNavigate: (id: string) => void) => {\n if (!text) return Description...;\n\n const parts: (string | React.ReactNode)[] = [text];\n\n entities.forEach(entity => {\n if (!entity.name) return;\n const regex = new RegExp(`(${entity.name})`, 'gi');\n\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (typeof part === 'string') {\n const split = part.split(regex);\n if (split.length > 1) {\n const newParts = split.map((s, idx) => {\n if (s.toLowerCase() === entity.name.toLowerCase()) {\n return (\n { e.stopPropagation(); onNavigate(entity.id); }}\n className=\"text-indigo-600 hover:text-indigo-800 underline decoration-indigo-300 hover:decoration-indigo-600 cursor-pointer font-medium bg-indigo-50 px-0.5 rounded transition-all\"\n title={`Voir la fiche de ${entity.name}`}\n >\n {s}\n \n );\n }\n return s;\n });\n parts.splice(i, 1, ...newParts);\n i += newParts.length - 1;\n }\n }\n }\n });\n\n return <>{parts};\n};\n\ninterface StoryNodeProps {\n node: PlotNode;\n isSelected: boolean;\n isEditing: boolean;\n isDragging: boolean;\n activeColorPickerId: string | null;\n entities: Entity[];\n savedColors: string[];\n\n onMouseDown: (e: React.MouseEvent, id: string) => void;\n onMouseUp: (e: React.MouseEvent, id: string) => void;\n onStartConnection: (e: React.MouseEvent, id: string) => void;\n onUpdate: (id: string, updates: Partial) => void;\n onSetEditing: (id: string | null) => void;\n onToggleColorPicker: (id: string) => void;\n onSaveColor: (color: string) => void;\n onNavigateToEntity: (id: string) => void;\n\n onInputFocus: (e: React.FocusEvent) => void;\n onInputCheckAutocomplete: (e: React.ChangeEvent, id: string, field: 'title' | 'description') => void;\n onKeyDownInInput: (e: React.KeyboardEvent, id: string) => void;\n}\n\nconst StoryNode = React.memo(({\n node, isSelected, isEditing, isDragging, activeColorPickerId, entities, savedColors,\n onMouseDown, onMouseUp, onStartConnection, onUpdate, onSetEditing,\n onToggleColorPicker, onSaveColor, onNavigateToEntity,\n onInputFocus, onInputCheckAutocomplete, onKeyDownInInput\n}: StoryNodeProps) => {\n\n const [showTypePicker, setShowTypePicker] = useState(false);\n\n const richDescription = useMemo(() => {\n return renderTextWithLinks(node.description, entities, onNavigateToEntity);\n }, [node.description, entities, onNavigateToEntity]);\n\n return (\n onMouseDown(e, node.id)}\n onMouseUp={(e) => onMouseUp(e, node.id)}\n onDoubleClick={(e) => e.stopPropagation()}\n onMouseLeave={() => setShowTypePicker(false)}\n >\n
\n\n
\n
\n {isEditing ? (\n onUpdate(node.id, { title: e.target.value })}\n onFocus={onInputFocus}\n autoFocus\n />\n ) : (\n onSetEditing(node.id)}\n >\n {node.title}\n
\n )}\n\n { e.stopPropagation(); onToggleColorPicker(node.id); }}\n className=\"p-1 rounded-full hover:bg-black/10 text-slate-400 hover:text-indigo-600 transition-colors absolute right-0 top-0\"\n >\n \n \n\n {activeColorPickerId === node.id && (\n
e.stopPropagation()}>\n
\n {savedColors.map(color => (\n onUpdate(node.id, { color })}\n className={`w-8 h-8 rounded-full border border-slate-200 shadow-sm transition-transform hover:scale-110 ${node.color === color ? 'ring-2 ring-offset-1 ring-indigo-400' : ''}`}\n style={{ backgroundColor: color }}\n />\n ))}\n
\n
\n
\n onUpdate(node.id, { color: e.target.value })}\n />\n
\n onSaveColor(node.color || '#ffffff')}\n className=\"text-[10px] font-bold text-indigo-600 hover:text-indigo-800 hover:underline flex-1 text-right\"\n >\n + SAUVER\n \n
\n
\n )}\n
\n\n
\n {isEditing ? (\n onInputCheckAutocomplete(e, node.id, 'description')}\n onKeyDown={(e) => onKeyDownInInput(e, node.id)}\n onFocus={onInputFocus}\n onBlur={() => onSetEditing(null)}\n />\n ) : (\n onSetEditing(node.id)}\n >\n {richDescription}\n
\n )}\n
\n\n
\n {showTypePicker && (\n
e.stopPropagation()}>\n { e.stopPropagation(); onUpdate(node.id, { type: 'story' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-slate-100 ${node.type === 'story' ? 'bg-indigo-50 ring-1 ring-indigo-200' : ''}`}\n title=\"Narration\"\n >\n \n \n { e.stopPropagation(); onUpdate(node.id, { type: 'action' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-amber-50 ${node.type === 'action' ? 'bg-amber-50 ring-1 ring-amber-200' : ''}`}\n title=\"Action\"\n >\n \n \n { e.stopPropagation(); onUpdate(node.id, { type: 'dialogue' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-blue-50 ${node.type === 'dialogue' ? 'bg-blue-50 ring-1 ring-blue-200' : ''}`}\n title=\"Dialogue\"\n >\n \n \n
\n )}\n\n { e.stopPropagation(); setShowTypePicker(!showTypePicker); }}\n >\n {node.type === 'story' && }\n {node.type === 'action' && }\n {node.type === 'dialogue' && }\n \n
\n
\n\n onStartConnection(e, node.id)}\n >\n \n \n \n );\n}, (prev, next) => {\n return (\n prev.node === next.node &&\n prev.isSelected === next.isSelected &&\n prev.isEditing === next.isEditing &&\n prev.isDragging === next.isDragging &&\n prev.activeColorPickerId === next.activeColorPickerId &&\n prev.entities === next.entities\n );\n});\n\ninterface SuggestionState {\n active: boolean;\n trigger: string;\n query: string;\n nodeId: string;\n field: 'title' | 'description';\n cursorIndex: number;\n selectedIndex: number;\n filteredEntities: Entity[];\n}\n\nconst StoryWorkflow: React.FC = ({ data, onUpdate, entities, onNavigateToEntity }) => {\n const containerRef = useRef(null);\n const rafRef = useRef(null);\n\n const [internalNodes, setInternalNodes] = useState(data.nodes);\n const internalNodesRef = useRef(internalNodes);\n useEffect(() => { internalNodesRef.current = internalNodes; }, [internalNodes]);\n\n useEffect(() => {\n setInternalNodes(data.nodes);\n }, [data.nodes]);\n\n useEffect(() => {\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n };\n }, []);\n\n const [activeSuggestion, setActiveSuggestion] = useState(null);\n const [selectedNodeIds, setSelectedNodeIds] = useState>(new Set());\n const [savedColors, setSavedColors] = useState(INITIAL_COLORS);\n const [activeColorPickerId, setActiveColorPickerId] = useState(null);\n const [editingNodeId, setEditingNodeId] = useState(null);\n const [history, setHistory] = useState([]);\n\n const [isDragging, setIsDragging] = useState(false);\n const [dragStartPositions, setDragStartPositions] = useState>(new Map());\n const [dragStartMouse, setDragStartMouse] = useState({ x: 0, y: 0 });\n\n const [connectingNodeId, setConnectingNodeId] = useState(null);\n const [mousePos, setMousePos] = useState({ x: 0, y: 0 });\n\n const [isPanning, setIsPanning] = useState(false);\n const [panStart, setPanStart] = useState({ x: 0, y: 0 });\n const [scrollStart, setScrollStart] = useState({ x: 0, y: 0 });\n\n const pushHistory = useCallback(() => {\n setHistory(prev => {\n const newHistory = [...prev, data];\n if (newHistory.length > 20) return newHistory.slice(newHistory.length - 20);\n return newHistory;\n });\n }, [data]);\n\n const updateNode = useCallback((id: string, updates: Partial) => {\n const currentNodes = internalNodesRef.current;\n onUpdate({\n ...data,\n nodes: currentNodes.map(n => n.id === id ? { ...n, ...updates } : n)\n });\n }, [data, onUpdate]);\n\n const handleInputFocus = useCallback((e: React.FocusEvent) => {\n e.stopPropagation();\n }, []);\n\n const handleInputWithAutocomplete = useCallback((\n e: React.ChangeEvent,\n nodeId: string,\n field: 'title' | 'description'\n ) => {\n const val = e.target.value;\n updateNode(nodeId, { [field]: val });\n\n const cursor = e.target.selectionStart || 0;\n const textBeforeCursor = val.slice(0, cursor);\n const match = textBeforeCursor.match(/([@#^])([^@#^\\s]*)$/);\n\n if (match) {\n const trigger = match[1];\n const query = match[2].toLowerCase();\n const targetType = trigger === '@' ? EntityType.CHARACTER : trigger === '#' ? EntityType.LOCATION : EntityType.OBJECT;\n const filtered = entities.filter(ent =>\n ent.type === targetType &&\n ent.name.toLowerCase().includes(query)\n );\n\n setActiveSuggestion({\n active: true,\n trigger,\n query,\n nodeId,\n field,\n cursorIndex: cursor,\n selectedIndex: 0,\n filteredEntities: filtered\n });\n } else {\n setActiveSuggestion(null);\n }\n }, [updateNode, entities]);\n\n const insertEntity = (entity: Entity) => {\n if (!activeSuggestion) return;\n const { nodeId, field, trigger, query } = activeSuggestion;\n const node = internalNodesRef.current.find(n => n.id === nodeId);\n if (!node) return;\n const currentText = node[field] as string;\n const cursor = activeSuggestion.cursorIndex;\n const insertionLength = trigger.length + query.length;\n const startIdx = cursor - insertionLength;\n if (startIdx < 0) return;\n const before = currentText.slice(0, startIdx);\n const after = currentText.slice(cursor);\n const isDialogue = node.type === 'dialogue' && activeSuggestion.trigger === '@';\n const suffix = isDialogue ? \": \" : \" \";\n updateNode(nodeId, { [field]: before + entity.name + suffix + after });\n setActiveSuggestion(null);\n };\n\n const handleKeyDownInInput = useCallback((e: React.KeyboardEvent, nodeId: string) => {\n if (activeSuggestion && activeSuggestion.nodeId === nodeId) {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex + 1) % prev.filteredEntities.length } : null);\n return;\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex - 1 + prev.filteredEntities.length) % prev.filteredEntities.length } : null);\n return;\n } else if (e.key === 'Tab' || e.key === 'Enter') {\n e.preventDefault();\n if (activeSuggestion.filteredEntities.length > 0) {\n insertEntity(activeSuggestion.filteredEntities[activeSuggestion.selectedIndex]);\n } else {\n setActiveSuggestion(null);\n }\n return;\n } else if (e.key === 'Escape') {\n setActiveSuggestion(null);\n return;\n }\n }\n }, [activeSuggestion, entities, updateNode]);\n\n const handleNodeMouseDown = useCallback((e: React.MouseEvent, nodeId: string) => {\n e.stopPropagation();\n setActiveColorPickerId(null);\n\n setSelectedNodeIds(prevSelected => {\n const newSelection = new Set(prevSelected);\n if (e.ctrlKey) {\n if (newSelection.has(nodeId)) newSelection.delete(nodeId);\n else newSelection.add(nodeId);\n } else {\n if (!newSelection.has(nodeId)) {\n newSelection.clear();\n newSelection.add(nodeId);\n }\n }\n const finalDragIds = e.ctrlKey ? newSelection : (newSelection.has(nodeId) ? newSelection : new Set([nodeId]));\n const startPositions = new Map();\n internalNodesRef.current.forEach(n => {\n if (finalDragIds.has(n.id)) {\n startPositions.set(n.id, { x: n.x, y: n.y });\n }\n });\n setDragStartPositions(startPositions);\n return newSelection;\n });\n\n setIsDragging(true);\n setDragStartMouse({ x: e.clientX, y: e.clientY });\n pushHistory();\n }, [pushHistory]);\n\n const startConnection = useCallback((e: React.MouseEvent, nodeId: string) => {\n e.stopPropagation();\n pushHistory();\n setConnectingNodeId(nodeId);\n }, [pushHistory]);\n\n const finishConnection = useCallback((e: React.MouseEvent, targetId: string) => {\n if (connectingNodeId && connectingNodeId !== targetId) {\n const exists = data.connections.some(c => c.source === connectingNodeId && c.target === targetId);\n if (!exists) {\n const newConn: PlotConnection = {\n id: `conn-${Date.now()}`,\n source: connectingNodeId,\n target: targetId\n };\n onUpdate({\n ...data,\n nodes: internalNodesRef.current,\n connections: [...data.connections, newConn]\n });\n }\n }\n setConnectingNodeId(null);\n }, [data, onUpdate, connectingNodeId]);\n\n const handleToggleColorPicker = useCallback((id: string) => {\n setActiveColorPickerId(prev => prev === id ? null : id);\n }, []);\n\n const handleSaveColor = useCallback((color: string) => {\n setSavedColors(prev => !prev.includes(color) ? [...prev, color] : prev);\n }, []);\n\n const handleMouseMove = (e: React.MouseEvent) => {\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect) return;\n const clientX = e.clientX;\n const clientY = e.clientY;\n\n if (isPanning && containerRef.current) {\n const dx = clientX - panStart.x;\n const dy = clientY - panStart.y;\n containerRef.current.scrollLeft = scrollStart.x - dx;\n containerRef.current.scrollTop = scrollStart.y - dy;\n return;\n }\n\n // Only update mousePos when connecting (drawing a line), not during node drag\n if (connectingNodeId) {\n const scrollLeft = containerRef.current?.scrollLeft || 0;\n const scrollTop = containerRef.current?.scrollTop || 0;\n setMousePos({ x: clientX - rect.left + scrollLeft, y: clientY - rect.top + scrollTop });\n }\n\n if (isDragging) {\n if (rafRef.current) return;\n rafRef.current = requestAnimationFrame(() => {\n const dx = clientX - dragStartMouse.x;\n const dy = clientY - dragStartMouse.y;\n setInternalNodes(prevNodes => prevNodes.map(node => {\n const startPos = dragStartPositions.get(node.id);\n if (startPos) return { ...node, x: startPos.x + dx, y: startPos.y + dy };\n return node;\n }));\n rafRef.current = null;\n });\n }\n };\n\n const handleMouseUp = (e: React.MouseEvent) => {\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n if (isDragging) onUpdate({ ...data, nodes: internalNodesRef.current });\n\n // Hit-test: if connecting, check if mouse is over any node\n if (connectingNodeId && containerRef.current) {\n const rect = containerRef.current.getBoundingClientRect();\n const scrollLeft = containerRef.current.scrollLeft;\n const scrollTop = containerRef.current.scrollTop;\n const mx = e.clientX - rect.left + scrollLeft;\n const my = e.clientY - rect.top + scrollTop;\n\n const targetNode = internalNodesRef.current.find(n =>\n n.id !== connectingNodeId &&\n mx >= n.x && mx <= n.x + CARD_WIDTH &&\n my >= n.y && my <= n.y + CARD_HEIGHT\n );\n\n if (targetNode) {\n const exists = data.connections.some(\n c => c.source === connectingNodeId && c.target === targetNode.id\n );\n if (!exists) {\n const newConn: PlotConnection = {\n id: `conn-${Date.now()}`,\n source: connectingNodeId,\n target: targetNode.id,\n };\n onUpdate({\n ...data,\n nodes: internalNodesRef.current,\n connections: [...data.connections, newConn],\n });\n }\n }\n }\n\n setIsDragging(false);\n setIsPanning(false);\n setConnectingNodeId(null);\n };\n\n const handleCanvasMouseDown = (e: React.MouseEvent) => {\n if (!e.ctrlKey) setSelectedNodeIds(new Set());\n setActiveSuggestion(null);\n setActiveColorPickerId(null);\n setEditingNodeId(null);\n setIsPanning(true);\n setPanStart({ x: e.clientX, y: e.clientY });\n if (containerRef.current) {\n setScrollStart({ x: containerRef.current.scrollLeft, y: containerRef.current.scrollTop });\n }\n };\n\n const handleCanvasDoubleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect) return;\n const x = e.clientX - rect.left + (containerRef.current?.scrollLeft || 0) - CARD_WIDTH / 2;\n const y = e.clientY - rect.top + (containerRef.current?.scrollTop || 0) - CARD_HEIGHT / 2;\n pushHistory();\n const newNode: PlotNode = {\n id: `node-${Date.now()}`,\n x,\n y,\n title: 'Nouvel événement',\n description: '',\n color: INITIAL_COLORS[0],\n type: 'story'\n };\n onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] });\n setSelectedNodeIds(new Set([newNode.id]));\n setEditingNodeId(newNode.id);\n };\n\n const handleDeleteSelected = () => {\n if (selectedNodeIds.size === 0) return;\n pushHistory();\n const newNodes = internalNodes.filter(n => !selectedNodeIds.has(n.id));\n const newConnections = data.connections.filter(c => !selectedNodeIds.has(c.source) && !selectedNodeIds.has(c.target));\n onUpdate({ nodes: newNodes, connections: newConnections });\n setSelectedNodeIds(new Set());\n };\n\n const handleAddNodeCenter = () => {\n pushHistory();\n const scrollLeft = containerRef.current?.scrollLeft || 0;\n const scrollTop = containerRef.current?.scrollTop || 0;\n const clientWidth = containerRef.current?.clientWidth || 800;\n const clientHeight = containerRef.current?.clientHeight || 600;\n const newNode: PlotNode = {\n id: `node-${Date.now()}`,\n x: scrollLeft + clientWidth / 2 - CARD_WIDTH / 2,\n y: scrollTop + clientHeight / 2 - CARD_HEIGHT / 2,\n title: 'Nouveau point d\\'intrigue',\n description: '',\n color: INITIAL_COLORS[0],\n type: 'story'\n };\n onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] });\n setSelectedNodeIds(new Set([newNode.id]));\n setEditingNodeId(newNode.id);\n };\n\n return (\n
\n
\n
\n \n
\n
\n {selectedNodeIds.size > 0 ? `${selectedNodeIds.size} SÉLECTIONNÉ(S)` : 'Double-cliquez sur le canvas pour créer'}\n
\n
\n
\n \n
\n
\n\n \n \n {data.connections.map(conn => {\n const source = internalNodes.find(n => n.id === conn.source);\n const target = internalNodes.find(n => n.id === conn.target);\n if (!source || !target) return null;\n const startX = source.x + CARD_WIDTH / 2;\n const startY = source.y + CARD_HEIGHT / 2;\n const endX = target.x + CARD_WIDTH / 2;\n const endY = target.y + CARD_HEIGHT / 2;\n return (\n \n );\n })}\n {connectingNodeId && (\n n.id === connectingNodeId)?.x || 0) + CARD_WIDTH / 2}\n y1={(internalNodes.find(n => n.id === connectingNodeId)?.y || 0) + CARD_HEIGHT / 2}\n x2={mousePos.x} y2={mousePos.y}\n stroke=\"#6366f1\" strokeWidth=\"2\" strokeDasharray=\"5,5\" markerEnd=\"url(#arrowhead-blue)\"\n />\n )}\n \n \n \n \n \n \n \n \n \n\n {internalNodes.map(node => (\n \n ))}\n
\n\n {activeSuggestion && (\n
\n
\n Insérer {activeSuggestion.trigger === '@' ? 'Personnage' : activeSuggestion.trigger === '#' ? 'Lieu' : 'Objet'}\n
\n
\n {activeSuggestion.filteredEntities.length > 0 ? (\n activeSuggestion.filteredEntities.map((ent, idx) => (\n insertEntity(ent)}\n >\n {ent.name}\n \n ))\n ) : (\n
Aucun résultat
\n )}\n
\n
\n )}\n
\n );\n};\n\nexport default StoryWorkflow;\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 1086, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/workflow/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport StoryWorkflow from '@/components/StoryWorkflow';\r\nimport { useProjectContext } from '@/providers/ProjectProvider';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function WorkflowPage() {\r\n const { project, projectId, updateProject } = useProjectContext();\r\n const router = useRouter();\r\n\r\n return (\r\n updateProject({ workflow })}\r\n entities={project.entities || []}\r\n onNavigateToEntity={() => router.push(`/project/${projectId}/world`)}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AAJA;;;;;AAMe,SAAS;IACpB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAA,qMAAiB;IAC/D,MAAM,SAAS,IAAA,2LAAS;IAExB,qBACI,0RAAC,0LAAa;QACV,MAAM,QAAQ,QAAQ,IAAI;YAAE,OAAO,EAAE;YAAE,aAAa,EAAE;QAAC;QACvD,UAAU,CAAC,WAAa,cAAc;gBAAE;YAAS;QACjD,UAAU,QAAQ,QAAQ,IAAI,EAAE;QAChC,oBAAoB,IAAM,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,MAAM,CAAC;;;;;;AAG/E"}}, + {"offset": {"line": 1122, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/arrow-right.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-right.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n];\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJtMTIgNSA3IDctNyA3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('arrow-right', __iconNode);\n\nexport default ArrowRight;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAiB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAChD;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,KAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,0MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 1167, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/palette.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/palette.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z',\n key: 'e79jfc',\n },\n ],\n ['circle', { cx: '13.5', cy: '6.5', r: '.5', fill: 'currentColor', key: '1okk4w' }],\n ['circle', { cx: '17.5', cy: '10.5', r: '.5', fill: 'currentColor', key: 'f64h9f' }],\n ['circle', { cx: '6.5', cy: '12.5', r: '.5', fill: 'currentColor', key: 'qy21gx' }],\n ['circle', { cx: '8.5', cy: '7.5', r: '.5', fill: 'currentColor', key: 'fotxhn' }],\n];\n\n/**\n * @component @name Palette\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMjJhMSAxIDAgMCAxIDAtMjAgMTAgOSAwIDAgMSAxMCA5IDUgNSAwIDAgMS01IDVoLTIuMjVhMS43NSAxLjc1IDAgMCAwLTEuNCAyLjhsLjMuNGExLjc1IDEuNzUgMCAwIDEtMS40IDIuOHoiIC8+CiAgPGNpcmNsZSBjeD0iMTMuNSIgY3k9IjYuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KICA8Y2lyY2xlIGN4PSIxNy41IiBjeT0iMTAuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KICA8Y2lyY2xlIGN4PSI2LjUiIGN5PSIxMi41IiByPSIuNSIgZmlsbD0iY3VycmVudENvbG9yIiAvPgogIDxjaXJjbGUgY3g9IjguNSIgY3k9IjcuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/palette\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Palette = createLucideIcon('palette', __iconNode);\n\nexport default Palette;\n"],"names":[],"mappings":"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"}}] } \ No newline at end of file diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js b/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js index 4be26b3..0f480b0 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js @@ -303,12 +303,22 @@ const useProjects = (user)=>{ ...data } : p)); try { + // Persist project fields const payload = {}; if (data.title !== undefined) payload.title = data.title; if (data.author !== undefined) payload.author = data.author; if (data.settings !== undefined) payload.settings = data.settings; if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide; - await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"].projects.update(id, payload); + if (Object.keys(payload).length > 0) { + await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"].projects.update(id, payload); + } + // Persist workflow (nodes + connections) separately + if (data.workflow) { + await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"].projects.syncWorkflow(id, { + nodes: data.workflow.nodes || [], + connections: data.workflow.connections || [] + }); + } } catch (err) { console.error("Failed to update project", err); } diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js.map b/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js.map index a0a82c9..f04e717 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js.map +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js.map @@ -4,7 +4,7 @@ "sections": [ {"offset": {"line": 22, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/types.ts"],"sourcesContent":["\nexport enum EntityType {\n CHARACTER = 'Personnage',\n LOCATION = 'Lieu',\n OBJECT = 'Objet',\n NOTE = 'Note'\n}\n\nexport interface CharacterAttributes {\n age: number;\n height: number;\n hair: string;\n eyes: string;\n archetype: string;\n role: 'protagonist' | 'antagonist' | 'support' | 'extra';\n personality: {\n spectrumIntrovertExtravert: number;\n spectrumEmotionalRational: number;\n spectrumChaoticLawful: number;\n };\n physicalQuirk: string;\n behavioralQuirk: string;\n}\n\nexport type CustomFieldType = 'text' | 'textarea' | 'number' | 'boolean' | 'select';\n\nexport interface CustomFieldDefinition {\n id: string;\n label: string;\n type: CustomFieldType;\n options?: string[];\n placeholder?: string;\n}\n\nexport interface EntityTemplate {\n entityType: EntityType;\n fields: CustomFieldDefinition[];\n}\n\nexport interface Entity {\n id: string;\n type: EntityType;\n name: string;\n description: string;\n details: string;\n storyContext?: string;\n attributes?: CharacterAttributes;\n customValues?: Record;\n}\n\nexport interface Chapter {\n id: string;\n title: string;\n content: string;\n summary?: string;\n}\n\nexport type PlotNodeType = 'story' | 'dialogue' | 'action';\n\nexport interface PlotNode {\n id: string;\n x: number;\n y: number;\n title: string;\n description: string;\n color: string;\n type?: PlotNodeType;\n}\n\nexport interface PlotConnection {\n id: string;\n source: string;\n target: string;\n}\n\nexport interface WorkflowData {\n nodes: PlotNode[];\n connections: PlotConnection[];\n}\n\nexport type IdeaStatus = 'todo' | 'progress' | 'done';\nexport type IdeaCategory = 'plot' | 'character' | 'research' | 'todo';\n\nexport interface Idea {\n id: string;\n title: string;\n description: string;\n status: IdeaStatus;\n category: IdeaCategory;\n createdAt: number;\n}\n\nexport interface BookSettings {\n genre: string;\n subGenre?: string;\n targetAudience: string;\n tone: string;\n pov: string;\n tense: string;\n synopsis: string;\n themes: string;\n}\n\nexport interface BookProject {\n id: string;\n title: string;\n author: string;\n lastModified: number;\n settings?: BookSettings;\n // Direct fields sometimes used in creation/updates before settings normalization\n genre?: string;\n pov?: string;\n tense?: string;\n chapters: Chapter[];\n entities: Entity[];\n workflow?: WorkflowData;\n templates?: EntityTemplate[];\n styleGuide?: string;\n ideas?: Idea[];\n}\n\nexport interface ChatMessage {\n id: string;\n role: 'user' | 'model';\n text: string;\n responseType?: 'draft' | 'reflection';\n isLoading?: boolean;\n}\n\n// --- SAAS TYPES ---\n\nexport type PlanType = 'free' | 'pro' | 'master';\n\nexport interface Subscription {\n plan: PlanType;\n startDate: number;\n status: 'active' | 'canceled' | 'past_due';\n}\n\nexport interface UserUsage {\n aiActionsCurrent: number;\n aiActionsLimit: number;\n projectsLimit: number;\n}\n\nexport interface UserPreferences {\n theme: 'light' | 'dark' | 'sepia';\n dailyWordGoal: number;\n language: 'fr' | 'en';\n}\n\nexport interface UserStats {\n totalWordsWritten: number;\n writingStreak: number;\n lastWriteDate: number;\n}\n\nexport interface UserProfile {\n id: string;\n email: string;\n name: string;\n avatar?: string;\n bio?: string;\n subscription: Subscription;\n usage: UserUsage;\n preferences: UserPreferences;\n stats: UserStats;\n}\n\nexport type ViewMode = 'write' | 'world_building' | 'workflow' | 'settings' | 'preview' | 'ideas' | 'landing' | 'features' | 'pricing' | 'checkout' | 'dashboard' | 'auth' | 'signup' | 'profile';\n"],"names":[],"mappings":";;;;AACO,IAAA,AAAK,oCAAA;;;;;WAAA"}}, {"offset": {"line": 37, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/constants.ts"],"sourcesContent":["\nimport { EntityType } from \"./types\";\n\nexport const DEFAULT_BOOK_TITLE = \"Nouveau Roman\";\nexport const DEFAULT_AUTHOR = \"Auteur Inconnu\";\n\nexport const INITIAL_CHAPTER = {\n id: 'chap-1',\n title: 'Chapitre 1',\n content: '

Il était une fois...

',\n summary: 'Début de l\\'histoire.'\n};\n\nexport const ENTITY_ICONS: Record = {\n [EntityType.CHARACTER]: '👤',\n [EntityType.LOCATION]: '🏰',\n [EntityType.OBJECT]: '🗝️',\n [EntityType.NOTE]: '📝',\n};\n\n// Colors for tags\nexport const ENTITY_COLORS: Record = {\n [EntityType.CHARACTER]: 'bg-blue-100 text-blue-800 border-blue-200',\n [EntityType.LOCATION]: 'bg-green-100 text-green-800 border-green-200',\n [EntityType.OBJECT]: 'bg-amber-100 text-amber-800 border-amber-200',\n [EntityType.NOTE]: 'bg-gray-100 text-gray-800 border-gray-200',\n};\n\n// --- Character Creation Lists ---\n\nexport const HAIR_COLORS = [\n \"Brun\", \"Noir\", \"Blond\", \"Roux\", \"Auburn\", \"Gris\", \"Blanc\", \"Châtain\", \"Chauve\", \"Teinture (Bleu/Rose/Etc)\"\n];\n\nexport const EYE_COLORS = [\n \"Marron\", \"Bleu\", \"Vert\", \"Noisette\", \"Gris\", \"Noir\", \"Vairons\", \"Ambre\"\n];\n\nexport const ARCHETYPES = [\n \"Le Héros\", \"L'Ombre / Le Méchant\", \"Le Mentor\", \"Le Gardien du Seuil\",\n \"Le Shapeshifter (Changeforme)\", \"Le Trickster (Farceur)\", \"L'Allié\", \"L'Élu\",\n \"Le Rebelle\", \"Le Séducteur\", \"Le Sage\", \"Le Guerrier\", \"L'Innocent\"\n];\n\n// --- Book Settings Lists ---\n\nexport const GENRES = [\n \"Fantasy\", \"Science-Fiction\", \"Thriller / Polar\", \"Romance\", \"Historique\",\n \"Horreur\", \"Aventure\", \"Contemporain\", \"Jeunesse / Young Adult\", \"Dystopie\"\n];\n\nexport const TONES = [\n \"Sombre & Sérieux\", \"Léger & Humoristique\", \"Épique & Grandiose\",\n \"Mélancolique\", \"Mystérieux\", \"Optimiste\", \"Cynique\", \"Romantique\"\n];\n\nexport const POV_OPTIONS = [\n \"1ère personne (Je)\",\n \"3ème personne (Limitée au protagoniste)\",\n \"3ème personne (Omnisciente)\",\n \"Multi-points de vue (Alterné)\"\n];\n\nexport const TENSE_OPTIONS = [\n \"Passé (Passé simple / Imparfait)\",\n \"Présent de narration\"\n];"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEO,MAAM,qBAAqB;AAC3B,MAAM,iBAAiB;AAEvB,MAAM,kBAAkB;IAC7B,IAAI;IACJ,OAAO;IACP,SAAS;IACT,SAAS;AACX;AAEO,MAAM,eAA2C;IACtD,CAAC,6KAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,6KAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,6KAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,6KAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAGO,MAAM,gBAA4C;IACvD,CAAC,6KAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,6KAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,6KAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,6KAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAIO,MAAM,cAAc;IACzB;IAAQ;IAAQ;IAAS;IAAQ;IAAU;IAAQ;IAAS;IAAW;IAAU;CAClF;AAEM,MAAM,aAAa;IACxB;IAAU;IAAQ;IAAQ;IAAY;IAAQ;IAAQ;IAAW;CAClE;AAEM,MAAM,aAAa;IACxB;IAAY;IAAwB;IAAa;IACjD;IAAiC;IAA0B;IAAW;IACtE;IAAc;IAAgB;IAAW;IAAe;CACzD;AAIM,MAAM,SAAS;IACpB;IAAW;IAAmB;IAAoB;IAAW;IAC7D;IAAW;IAAY;IAAgB;IAA0B;CAClE;AAEM,MAAM,QAAQ;IACnB;IAAoB;IAAwB;IAC5C;IAAgB;IAAc;IAAa;IAAW;CACvD;AAEM,MAAM,cAAc;IACzB;IACA;IACA;IACA;CACD;AAEM,MAAM,gBAAgB;IAC3B;IACA;CACD"}}, - {"offset": {"line": 158, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n await api.projects.update(id, payload);\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 456, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/Dashboard.tsx"],"sourcesContent":["'use client';\n\n\nimport React from 'react';\nimport { BookProject, UserProfile } from '@/lib/types';\nimport { Plus, Book, Clock, Star, ChevronRight, LogOut, LayoutDashboard, User, Target, Flame, Edit3 } from 'lucide-react';\n\ninterface DashboardProps {\n user: UserProfile;\n projects: BookProject[];\n onSelect: (id: string) => void;\n onCreate: () => void;\n onLogout: () => void;\n onPricing: () => void;\n onProfile: () => void;\n}\n\nconst Dashboard: React.FC = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile }) => {\n return (\n
\n
\n \n {/* User Card */}\n
\n
\n
\n \"Avatar\"\n
\n
\n
\n

Bonjour, {user.name} 👋

\n
\n {user.subscription.plan}\n Membre depuis le 24 janv.\n
\n
\n
\n
\n \n \n
\n
\n\n {/* Stats Section */}\n
\n
\n
\n
\n

Série actuelle

\n

{user.stats.writingStreak} Jours

\n
\n
\n
\n
\n
\n

Mots écrits

\n

{user.stats.totalWordsWritten.toLocaleString()}

\n
\n
\n
\n
\n
\n

Objectif du jour

\n

{user.preferences.dailyWordGoal} Mots

\n
\n
\n
\n\n
\n {/* Project List */}\n
\n
\n

Mes Romans

\n \n
\n\n
\n {projects.map(p => (\n
onSelect(p.id)}\n className=\"bg-white p-8 rounded-[2.5rem] border border-indigo-50 shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64\"\n >\n
\n
\n \n
\n

{p.title}

\n

Dernière modification : {new Date(p.lastModified).toLocaleDateString()}

\n
\n
\n {p.chapters.length} Chapitres\n \n
\n
\n ))}\n {projects.length === 0 && (\n
\n \n

Prêt à commencer votre premier roman ?

\n \n
\n )}\n
\n
\n\n {/* Sidebar Stats & Plan */}\n
\n
\n
\n

Utilisation

\n
\n
\n
\n Actions IA\n {user.usage.aiActionsCurrent} / {user.usage.aiActionsLimit === 999999 ? '∞' : user.usage.aiActionsLimit}\n
\n
\n
\n
\n
\n
\n
\n Emplacements Roman\n {projects.length} / {user.usage.projectsLimit}\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Dashboard;\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 1119, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/dashboard/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { useRouter } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport Dashboard from '@/components/Dashboard';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\nimport { useEffect } from 'react';\r\n\r\nexport default function DashboardPage() {\r\n const router = useRouter();\r\n const { user, logout, loading } = useAuthContext();\r\n const { projects, setCurrentProjectId, createProject } = useProjects(user);\r\n\r\n useEffect(() => {\r\n if (!loading && !user) {\r\n router.replace('/login');\r\n }\r\n }, [user, loading, router]);\r\n\r\n if (loading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }}\r\n onCreate={async () => {\r\n const id = await createProject();\r\n if (id) {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }\r\n }}\r\n onLogout={() => {\r\n logout();\r\n router.push('/');\r\n }}\r\n onPricing={() => router.push('/pricing')}\r\n onProfile={() => router.push('/profile')}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAPA;;;;;;;;AASe,SAAS;IACpB,MAAM,SAAS,IAAA,2LAAS;IACxB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,+LAAc;IAChD,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,aAAa,EAAE,GAAG,IAAA,sLAAW,EAAC;IAErE,IAAA,8PAAS,EAAC;QACN,IAAI,CAAC,WAAW,CAAC,MAAM;YACnB,OAAO,OAAO,CAAC;QACnB;IACJ,GAAG;QAAC;QAAM;QAAS;KAAO;IAE1B,IAAI,WAAW,CAAC,MAAM;QAClB,qBACI,0RAAC;YAAI,WAAU;;8BACX,0RAAC,wQAAO;oBAAC,WAAU;oBAAkC,MAAM;;;;;;8BAC3D,0RAAC;oBAAI,WAAU;;sCACX,0RAAC,sQAAQ;4BAAC,WAAU;4BAAgB,MAAM;;;;;;sCAC1C,0RAAC;4BAAK,WAAU;sCAAoB;;;;;;;;;;;;;;;;;;IAIpD;IAEA,qBACI,0RAAC,sLAAS;QACN,MAAM;QACN,UAAU;QACV,UAAU,CAAC;YACP,oBAAoB;YACpB,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI;QAChC;QACA,UAAU;YACN,MAAM,KAAK,MAAM;YACjB,IAAI,IAAI;gBACJ,oBAAoB;gBACpB,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI;YAChC;QACJ;QACA,UAAU;YACN;YACA,OAAO,IAAI,CAAC;QAChB;QACA,WAAW,IAAM,OAAO,IAAI,CAAC;QAC7B,WAAW,IAAM,OAAO,IAAI,CAAC;;;;;;AAGzC"}}] + {"offset": {"line": 158, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n // Persist project fields\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n if (Object.keys(payload).length > 0) {\r\n await api.projects.update(id, payload);\r\n }\r\n\r\n // Persist workflow (nodes + connections) separately\r\n if (data.workflow) {\r\n await api.projects.syncWorkflow(id, {\r\n nodes: data.workflow.nodes || [],\r\n connections: data.workflow.connections || [],\r\n });\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 466, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/Dashboard.tsx"],"sourcesContent":["'use client';\n\n\nimport React from 'react';\nimport { BookProject, UserProfile } from '@/lib/types';\nimport { Plus, Book, Clock, Star, ChevronRight, LogOut, LayoutDashboard, User, Target, Flame, Edit3 } from 'lucide-react';\n\ninterface DashboardProps {\n user: UserProfile;\n projects: BookProject[];\n onSelect: (id: string) => void;\n onCreate: () => void;\n onLogout: () => void;\n onPricing: () => void;\n onProfile: () => void;\n}\n\nconst Dashboard: React.FC = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile }) => {\n return (\n
\n
\n \n {/* User Card */}\n
\n
\n
\n \"Avatar\"\n
\n
\n
\n

Bonjour, {user.name} 👋

\n
\n {user.subscription.plan}\n Membre depuis le 24 janv.\n
\n
\n
\n
\n \n \n
\n
\n\n {/* Stats Section */}\n
\n
\n
\n
\n

Série actuelle

\n

{user.stats.writingStreak} Jours

\n
\n
\n
\n
\n
\n

Mots écrits

\n

{user.stats.totalWordsWritten.toLocaleString()}

\n
\n
\n
\n
\n
\n

Objectif du jour

\n

{user.preferences.dailyWordGoal} Mots

\n
\n
\n
\n\n
\n {/* Project List */}\n
\n
\n

Mes Romans

\n \n
\n\n
\n {projects.map(p => (\n
onSelect(p.id)}\n className=\"bg-white p-8 rounded-[2.5rem] border border-indigo-50 shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64\"\n >\n
\n
\n \n
\n

{p.title}

\n

Dernière modification : {new Date(p.lastModified).toLocaleDateString()}

\n
\n
\n {p.chapters.length} Chapitres\n \n
\n
\n ))}\n {projects.length === 0 && (\n
\n \n

Prêt à commencer votre premier roman ?

\n \n
\n )}\n
\n
\n\n {/* Sidebar Stats & Plan */}\n
\n
\n
\n

Utilisation

\n
\n
\n
\n Actions IA\n {user.usage.aiActionsCurrent} / {user.usage.aiActionsLimit === 999999 ? '∞' : user.usage.aiActionsLimit}\n
\n
\n
\n
\n
\n
\n
\n Emplacements Roman\n {projects.length} / {user.usage.projectsLimit}\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Dashboard;\n"],"names":[],"mappings":";;;;;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AALA;;;AAiBA,MAAM,YAAsC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE;IACjH,qBACE,0RAAC;QAAI,WAAU;kBACb,cAAA,0RAAC;YAAI,WAAU;;8BAGb,0RAAC;oBAAI,WAAU;;sCACX,0RAAC;4BAAI,WAAU;;8CACX,0RAAC;oCAAI,WAAU;;sDACX,0RAAC;4CAAI,KAAK,KAAK,MAAM;4CAAE,WAAU;4CAAyE,KAAI;;;;;;sDAC9G,0RAAC;4CAAI,WAAU;;;;;;;;;;;;8CAEnB,0RAAC;;sDACG,0RAAC;4CAAG,WAAU;;gDAAqC;gDAAU,KAAK,IAAI;gDAAC;;;;;;;sDACvE,0RAAC;4CAAI,WAAU;;8DACX,0RAAC;oDAAK,WAAU;8DAAyG,KAAK,YAAY,CAAC,IAAI;;;;;;8DAC/I,0RAAC;oDAAK,WAAU;8DAAqC;;;;;;;;;;;;;;;;;;;;;;;;sCAIjE,0RAAC;4BAAI,WAAU;;8CACX,0RAAC;oCAAO,SAAS;oCAAW,WAAU;;sDAClC,0RAAC,sPAAI;4CAAC,MAAM;;;;;;wCAAM;;;;;;;8CAEtB,0RAAC;oCAAO,SAAS;oCAAU,WAAU;8CAAuF,cAAA,0RAAC,gQAAM;wCAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;8BAKlJ,0RAAC;oBAAI,WAAU;;sCACX,0RAAC;4BAAI,WAAU;;8CACX,0RAAC;oCAAI,WAAU;8CAAgD,cAAA,0RAAC,yPAAK;wCAAC,MAAM;;;;;;;;;;;8CAC5E,0RAAC;;sDACG,0RAAC;4CAAE,WAAU;sDAA4D;;;;;;sDACzE,0RAAC;4CAAE,WAAU;;gDAAsC,KAAK,KAAK,CAAC,aAAa;gDAAC;;;;;;;;;;;;;;;;;;;sCAGpF,0RAAC;4BAAI,WAAU;;8CACX,0RAAC;oCAAI,WAAU;8CAA4C,cAAA,0RAAC,+PAAK;wCAAC,MAAM;;;;;;;;;;;8CACxE,0RAAC;;sDACG,0RAAC;4CAAE,WAAU;sDAA4D;;;;;;sDACzE,0RAAC;4CAAE,WAAU;sDAAsC,KAAK,KAAK,CAAC,iBAAiB,CAAC,cAAc;;;;;;;;;;;;;;;;;;sCAGtG,0RAAC;4BAAI,WAAU;;8CACX,0RAAC;oCAAI,WAAU;8CAAgD,cAAA,0RAAC,4PAAM;wCAAC,MAAM;;;;;;;;;;;8CAC7E,0RAAC;;sDACG,0RAAC;4CAAE,WAAU;sDAA4D;;;;;;sDACzE,0RAAC;4CAAE,WAAU;;gDAAsC,KAAK,WAAW,CAAC,aAAa;gDAAC;;;;;;;;;;;;;;;;;;;;;;;;;8BAK9F,0RAAC;oBAAI,WAAU;;sCAEX,0RAAC;4BAAI,WAAU;;8CACX,0RAAC;oCAAI,WAAU;;sDACX,0RAAC;4CAAG,WAAU;sDAAqC;;;;;;sDACnD,0RAAC;4CACG,SAAS;4CACT,WAAU;;8DAEV,0RAAC,sPAAI;oDAAC,MAAM;;;;;;gDAAM;;;;;;;;;;;;;8CAI1B,0RAAC;oCAAI,WAAU;;wCACV,SAAS,GAAG,CAAC,CAAA,kBACV,0RAAC;gDAEG,SAAS,IAAM,SAAS,EAAE,EAAE;gDAC5B,WAAU;;kEAEV,0RAAC;;0EACG,0RAAC;gEAAI,WAAU;0EACX,cAAA,0RAAC,sPAAI;oEAAC,MAAM;;;;;;;;;;;0EAEhB,0RAAC;gEAAG,WAAU;0EAAmD,EAAE,KAAK;;;;;;0EACxE,0RAAC;gEAAE,WAAU;;oEAAyB;oEAAyB,IAAI,KAAK,EAAE,YAAY,EAAE,kBAAkB;;;;;;;;;;;;;kEAE9G,0RAAC;wDAAI,WAAU;;0EACX,0RAAC;;oEAAM,EAAE,QAAQ,CAAC,MAAM;oEAAC;;;;;;;0EACzB,0RAAC,kRAAY;gEAAC,MAAM;gEAAI,WAAU;;;;;;;;;;;;;+CAbjC,EAAE,EAAE;;;;;wCAiBhB,SAAS,MAAM,KAAK,mBACjB,0RAAC;4CAAI,WAAU;;8DACX,0RAAC,sPAAI;oDAAC,MAAM;oDAAI,WAAU;;;;;;8DAC1B,0RAAC;oDAAE,WAAU;8DAAoB;;;;;;8DACjC,0RAAC;oDAAO,SAAS;oDAAU,WAAU;8DAA+C;;;;;;;;;;;;;;;;;;;;;;;;sCAOpG,0RAAC;4BAAI,WAAU;sCACX,cAAA,0RAAC;gCAAI,WAAU;;kDACX,0RAAC;wCAAI,WAAU;;;;;;kDACf,0RAAC;wCAAG,WAAU;;0DAAkD,0RAAC,sPAAI;gDAAC,MAAM;gDAAI,WAAU;;;;;;4CAAoB;;;;;;;kDAC9G,0RAAC;wCAAI,WAAU;;0DACX,0RAAC;;kEACG,0RAAC;wDAAI,WAAU;;0EACX,0RAAC;0EAAK;;;;;;0EACN,0RAAC;;oEAAM,KAAK,KAAK,CAAC,gBAAgB;oEAAC;oEAAI,KAAK,KAAK,CAAC,cAAc,KAAK,SAAS,MAAM,KAAK,KAAK,CAAC,cAAc;;;;;;;;;;;;;kEAEjH,0RAAC;wDAAI,WAAU;kEACX,cAAA,0RAAC;4DACG,WAAU;4DACV,OAAO;gEAAE,OAAO,GAAG,KAAK,GAAG,CAAC,KAAK,AAAC,KAAK,KAAK,CAAC,gBAAgB,GAAG,KAAK,KAAK,CAAC,cAAc,GAAI,KAAK,CAAC,CAAC;4DAAC;;;;;;;;;;;;;;;;;0DAIjH,0RAAC;;kEACG,0RAAC;wDAAI,WAAU;;0EACX,0RAAC;0EAAK;;;;;;0EACN,0RAAC;;oEAAM,SAAS,MAAM;oEAAC;oEAAI,KAAK,KAAK,CAAC,aAAa;;;;;;;;;;;;;kEAEvD,0RAAC;wDAAI,WAAU;kEACX,cAAA,0RAAC;4DACG,WAAU;4DACV,OAAO;gEAAE,OAAO,GAAG,KAAK,GAAG,CAAC,KAAK,AAAC,SAAS,MAAM,GAAG,KAAK,KAAK,CAAC,aAAa,GAAI,KAAK,CAAC,CAAC;4DAAC;;;;;;;;;;;;;;;;;;;;;;;kDAKxG,0RAAC;wCAAO,SAAS;wCAAW,WAAU;kDAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASzJ;uCAEe"}}, + {"offset": {"line": 1129, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/dashboard/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { useRouter } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport Dashboard from '@/components/Dashboard';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\nimport { useEffect } from 'react';\r\n\r\nexport default function DashboardPage() {\r\n const router = useRouter();\r\n const { user, logout, loading } = useAuthContext();\r\n const { projects, setCurrentProjectId, createProject } = useProjects(user);\r\n\r\n useEffect(() => {\r\n if (!loading && !user) {\r\n router.replace('/login');\r\n }\r\n }, [user, loading, router]);\r\n\r\n if (loading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }}\r\n onCreate={async () => {\r\n const id = await createProject();\r\n if (id) {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }\r\n }}\r\n onLogout={() => {\r\n logout();\r\n router.push('/');\r\n }}\r\n onPricing={() => router.push('/pricing')}\r\n onProfile={() => router.push('/profile')}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAPA;;;;;;;;AASe,SAAS;IACpB,MAAM,SAAS,IAAA,2LAAS;IACxB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,+LAAc;IAChD,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,aAAa,EAAE,GAAG,IAAA,sLAAW,EAAC;IAErE,IAAA,8PAAS,EAAC;QACN,IAAI,CAAC,WAAW,CAAC,MAAM;YACnB,OAAO,OAAO,CAAC;QACnB;IACJ,GAAG;QAAC;QAAM;QAAS;KAAO;IAE1B,IAAI,WAAW,CAAC,MAAM;QAClB,qBACI,0RAAC;YAAI,WAAU;;8BACX,0RAAC,wQAAO;oBAAC,WAAU;oBAAkC,MAAM;;;;;;8BAC3D,0RAAC;oBAAI,WAAU;;sCACX,0RAAC,sQAAQ;4BAAC,WAAU;4BAAgB,MAAM;;;;;;sCAC1C,0RAAC;4BAAK,WAAU;sCAAoB;;;;;;;;;;;;;;;;;;IAIpD;IAEA,qBACI,0RAAC,sLAAS;QACN,MAAM;QACN,UAAU;QACV,UAAU,CAAC;YACP,oBAAoB;YACpB,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI;QAChC;QACA,UAAU;YACN,MAAM,KAAK,MAAM;YACjB,IAAI,IAAI;gBACJ,oBAAoB;gBACpB,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI;YAChC;QACJ;QACA,UAAU;YACN;YACA,OAAO,IAAI,CAAC;QAChB;QACA,WAAW,IAAM,OAAO,IAAI,CAAC;QAC7B,WAAW,IAAM,OAAO,IAAI,CAAC;;;;;;AAGzC"}}] } \ No newline at end of file diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js b/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js index 729fe9d..28beab1 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js @@ -334,12 +334,22 @@ const useProjects = (user)=>{ ...data } : p)); try { + // Persist project fields const payload = {}; if (data.title !== undefined) payload.title = data.title; if (data.author !== undefined) payload.author = data.author; if (data.settings !== undefined) payload.settings = data.settings; if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide; - await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"].projects.update(id, payload); + if (Object.keys(payload).length > 0) { + await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"].projects.update(id, payload); + } + // Persist workflow (nodes + connections) separately + if (data.workflow) { + await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"].projects.syncWorkflow(id, { + nodes: data.workflow.nodes || [], + connections: data.workflow.connections || [] + }); + } } catch (err) { console.error("Failed to update project", err); } diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js.map b/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js.map index 47b7ecb..5448438 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js.map +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js.map @@ -5,11 +5,11 @@ {"offset": {"line": 22, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/providers/ProjectProvider.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { createContext, useContext } from 'react';\r\nimport { BookProject, UserProfile } from '@/lib/types';\r\n\r\ninterface ProjectContextType {\r\n project: BookProject;\r\n user: UserProfile;\r\n projectId: string;\r\n currentChapterId: string;\r\n setCurrentChapterId: (id: string) => void;\r\n updateProject: (updates: Partial) => void;\r\n updateChapter: (chapterId: string, data: any) => void;\r\n incrementUsage: () => void;\r\n}\r\n\r\nconst ProjectContext = createContext(null);\r\n\r\nexport function ProjectProvider({\r\n value,\r\n children,\r\n}: {\r\n value: ProjectContextType;\r\n children: React.ReactNode;\r\n}) {\r\n return {children};\r\n}\r\n\r\nexport function useProjectContext(): ProjectContextType {\r\n const ctx = useContext(ProjectContext);\r\n if (!ctx) throw new Error('useProjectContext must be used within ProjectProvider');\r\n return ctx;\r\n}\r\n"],"names":[],"mappings":";;;;;;;AAEA;AAFA;;;AAgBA,MAAM,+BAAiB,IAAA,kQAAa,EAA4B;AAEzD,SAAS,gBAAgB,EAC5B,KAAK,EACL,QAAQ,EAIX;IACG,qBAAO,0RAAC,eAAe,QAAQ;QAAC,OAAO;kBAAQ;;;;;;AACnD;AAEO,SAAS;IACZ,MAAM,MAAM,IAAA,+PAAU,EAAC;IACvB,IAAI,CAAC,KAAK,MAAM,IAAI,MAAM;IAC1B,OAAO;AACX"}}, {"offset": {"line": 53, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/types.ts"],"sourcesContent":["\nexport enum EntityType {\n CHARACTER = 'Personnage',\n LOCATION = 'Lieu',\n OBJECT = 'Objet',\n NOTE = 'Note'\n}\n\nexport interface CharacterAttributes {\n age: number;\n height: number;\n hair: string;\n eyes: string;\n archetype: string;\n role: 'protagonist' | 'antagonist' | 'support' | 'extra';\n personality: {\n spectrumIntrovertExtravert: number;\n spectrumEmotionalRational: number;\n spectrumChaoticLawful: number;\n };\n physicalQuirk: string;\n behavioralQuirk: string;\n}\n\nexport type CustomFieldType = 'text' | 'textarea' | 'number' | 'boolean' | 'select';\n\nexport interface CustomFieldDefinition {\n id: string;\n label: string;\n type: CustomFieldType;\n options?: string[];\n placeholder?: string;\n}\n\nexport interface EntityTemplate {\n entityType: EntityType;\n fields: CustomFieldDefinition[];\n}\n\nexport interface Entity {\n id: string;\n type: EntityType;\n name: string;\n description: string;\n details: string;\n storyContext?: string;\n attributes?: CharacterAttributes;\n customValues?: Record;\n}\n\nexport interface Chapter {\n id: string;\n title: string;\n content: string;\n summary?: string;\n}\n\nexport type PlotNodeType = 'story' | 'dialogue' | 'action';\n\nexport interface PlotNode {\n id: string;\n x: number;\n y: number;\n title: string;\n description: string;\n color: string;\n type?: PlotNodeType;\n}\n\nexport interface PlotConnection {\n id: string;\n source: string;\n target: string;\n}\n\nexport interface WorkflowData {\n nodes: PlotNode[];\n connections: PlotConnection[];\n}\n\nexport type IdeaStatus = 'todo' | 'progress' | 'done';\nexport type IdeaCategory = 'plot' | 'character' | 'research' | 'todo';\n\nexport interface Idea {\n id: string;\n title: string;\n description: string;\n status: IdeaStatus;\n category: IdeaCategory;\n createdAt: number;\n}\n\nexport interface BookSettings {\n genre: string;\n subGenre?: string;\n targetAudience: string;\n tone: string;\n pov: string;\n tense: string;\n synopsis: string;\n themes: string;\n}\n\nexport interface BookProject {\n id: string;\n title: string;\n author: string;\n lastModified: number;\n settings?: BookSettings;\n // Direct fields sometimes used in creation/updates before settings normalization\n genre?: string;\n pov?: string;\n tense?: string;\n chapters: Chapter[];\n entities: Entity[];\n workflow?: WorkflowData;\n templates?: EntityTemplate[];\n styleGuide?: string;\n ideas?: Idea[];\n}\n\nexport interface ChatMessage {\n id: string;\n role: 'user' | 'model';\n text: string;\n responseType?: 'draft' | 'reflection';\n isLoading?: boolean;\n}\n\n// --- SAAS TYPES ---\n\nexport type PlanType = 'free' | 'pro' | 'master';\n\nexport interface Subscription {\n plan: PlanType;\n startDate: number;\n status: 'active' | 'canceled' | 'past_due';\n}\n\nexport interface UserUsage {\n aiActionsCurrent: number;\n aiActionsLimit: number;\n projectsLimit: number;\n}\n\nexport interface UserPreferences {\n theme: 'light' | 'dark' | 'sepia';\n dailyWordGoal: number;\n language: 'fr' | 'en';\n}\n\nexport interface UserStats {\n totalWordsWritten: number;\n writingStreak: number;\n lastWriteDate: number;\n}\n\nexport interface UserProfile {\n id: string;\n email: string;\n name: string;\n avatar?: string;\n bio?: string;\n subscription: Subscription;\n usage: UserUsage;\n preferences: UserPreferences;\n stats: UserStats;\n}\n\nexport type ViewMode = 'write' | 'world_building' | 'workflow' | 'settings' | 'preview' | 'ideas' | 'landing' | 'features' | 'pricing' | 'checkout' | 'dashboard' | 'auth' | 'signup' | 'profile';\n"],"names":[],"mappings":";;;;AACO,IAAA,AAAK,oCAAA;;;;;WAAA"}}, {"offset": {"line": 68, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/constants.ts"],"sourcesContent":["\nimport { EntityType } from \"./types\";\n\nexport const DEFAULT_BOOK_TITLE = \"Nouveau Roman\";\nexport const DEFAULT_AUTHOR = \"Auteur Inconnu\";\n\nexport const INITIAL_CHAPTER = {\n id: 'chap-1',\n title: 'Chapitre 1',\n content: '

Il était une fois...

',\n summary: 'Début de l\\'histoire.'\n};\n\nexport const ENTITY_ICONS: Record = {\n [EntityType.CHARACTER]: '👤',\n [EntityType.LOCATION]: '🏰',\n [EntityType.OBJECT]: '🗝️',\n [EntityType.NOTE]: '📝',\n};\n\n// Colors for tags\nexport const ENTITY_COLORS: Record = {\n [EntityType.CHARACTER]: 'bg-blue-100 text-blue-800 border-blue-200',\n [EntityType.LOCATION]: 'bg-green-100 text-green-800 border-green-200',\n [EntityType.OBJECT]: 'bg-amber-100 text-amber-800 border-amber-200',\n [EntityType.NOTE]: 'bg-gray-100 text-gray-800 border-gray-200',\n};\n\n// --- Character Creation Lists ---\n\nexport const HAIR_COLORS = [\n \"Brun\", \"Noir\", \"Blond\", \"Roux\", \"Auburn\", \"Gris\", \"Blanc\", \"Châtain\", \"Chauve\", \"Teinture (Bleu/Rose/Etc)\"\n];\n\nexport const EYE_COLORS = [\n \"Marron\", \"Bleu\", \"Vert\", \"Noisette\", \"Gris\", \"Noir\", \"Vairons\", \"Ambre\"\n];\n\nexport const ARCHETYPES = [\n \"Le Héros\", \"L'Ombre / Le Méchant\", \"Le Mentor\", \"Le Gardien du Seuil\",\n \"Le Shapeshifter (Changeforme)\", \"Le Trickster (Farceur)\", \"L'Allié\", \"L'Élu\",\n \"Le Rebelle\", \"Le Séducteur\", \"Le Sage\", \"Le Guerrier\", \"L'Innocent\"\n];\n\n// --- Book Settings Lists ---\n\nexport const GENRES = [\n \"Fantasy\", \"Science-Fiction\", \"Thriller / Polar\", \"Romance\", \"Historique\",\n \"Horreur\", \"Aventure\", \"Contemporain\", \"Jeunesse / Young Adult\", \"Dystopie\"\n];\n\nexport const TONES = [\n \"Sombre & Sérieux\", \"Léger & Humoristique\", \"Épique & Grandiose\",\n \"Mélancolique\", \"Mystérieux\", \"Optimiste\", \"Cynique\", \"Romantique\"\n];\n\nexport const POV_OPTIONS = [\n \"1ère personne (Je)\",\n \"3ème personne (Limitée au protagoniste)\",\n \"3ème personne (Omnisciente)\",\n \"Multi-points de vue (Alterné)\"\n];\n\nexport const TENSE_OPTIONS = [\n \"Passé (Passé simple / Imparfait)\",\n \"Présent de narration\"\n];"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEO,MAAM,qBAAqB;AAC3B,MAAM,iBAAiB;AAEvB,MAAM,kBAAkB;IAC7B,IAAI;IACJ,OAAO;IACP,SAAS;IACT,SAAS;AACX;AAEO,MAAM,eAA2C;IACtD,CAAC,6KAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,6KAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,6KAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,6KAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAGO,MAAM,gBAA4C;IACvD,CAAC,6KAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,6KAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,6KAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,6KAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAIO,MAAM,cAAc;IACzB;IAAQ;IAAQ;IAAS;IAAQ;IAAU;IAAQ;IAAS;IAAW;IAAU;CAClF;AAEM,MAAM,aAAa;IACxB;IAAU;IAAQ;IAAQ;IAAY;IAAQ;IAAQ;IAAW;CAClE;AAEM,MAAM,aAAa;IACxB;IAAY;IAAwB;IAAa;IACjD;IAAiC;IAA0B;IAAW;IACtE;IAAc;IAAgB;IAAW;IAAe;CACzD;AAIM,MAAM,SAAS;IACpB;IAAW;IAAmB;IAAoB;IAAW;IAC7D;IAAW;IAAY;IAAgB;IAA0B;CAClE;AAEM,MAAM,QAAQ;IACnB;IAAoB;IAAwB;IAC5C;IAAgB;IAAc;IAAa;IAAW;CACvD;AAEM,MAAM,cAAc;IACzB;IACA;IACA;IACA;CACD;AAEM,MAAM,gBAAgB;IAC3B;IACA;CACD"}}, - {"offset": {"line": 189, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n await api.projects.update(id, payload);\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 487, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useChat.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState } from 'react';\r\nimport {\r\n BookProject,\r\n ChatMessage,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\n\r\nexport const useChat = () => {\r\n const [chatHistory, setChatHistory] = useState([]);\r\n const [isGenerating, setIsGenerating] = useState(false);\r\n\r\n const sendMessage = async (\r\n project: BookProject,\r\n context: string,\r\n text: string,\r\n user: UserProfile,\r\n incrementUsage: () => void\r\n ) => {\r\n const userMsg: ChatMessage = {\r\n id: Date.now().toString(),\r\n role: 'user',\r\n text: text\r\n };\r\n setChatHistory(prev => [...prev, userMsg]);\r\n setIsGenerating(true);\r\n\r\n try {\r\n const response = await api.ai.generate(\r\n project,\r\n context === 'global' ? '' : context,\r\n text,\r\n user\r\n );\r\n\r\n incrementUsage();\r\n\r\n const aiMsg: ChatMessage = {\r\n id: (Date.now() + 1).toString(),\r\n role: 'model',\r\n text: response.text,\r\n responseType: response.type\r\n };\r\n setChatHistory(prev => [...prev, aiMsg]);\r\n } catch {\r\n setChatHistory(prev => [...prev, {\r\n id: Date.now().toString(),\r\n role: 'model',\r\n text: \"Désolé, une erreur est survenue lors de la génération.\"\r\n }]);\r\n } finally {\r\n setIsGenerating(false);\r\n }\r\n };\r\n\r\n return { chatHistory, isGenerating, sendMessage };\r\n};\r\n"],"names":[],"mappings":";;;;AAEA;AAMA;AARA;;;AAUO,MAAM,UAAU;IACnB,MAAM,CAAC,aAAa,eAAe,GAAG,IAAA,6PAAQ,EAAgB,EAAE;IAChE,MAAM,CAAC,cAAc,gBAAgB,GAAG,IAAA,6PAAQ,EAAC;IAEjD,MAAM,cAAc,OAChB,SACA,SACA,MACA,MACA;QAEA,MAAM,UAAuB;YACzB,IAAI,KAAK,GAAG,GAAG,QAAQ;YACvB,MAAM;YACN,MAAM;QACV;QACA,eAAe,CAAA,OAAQ;mBAAI;gBAAM;aAAQ;QACzC,gBAAgB;QAEhB,IAAI;YACA,MAAM,WAAW,MAAM,wKAAG,CAAC,EAAE,CAAC,QAAQ,CAClC,SACA,YAAY,WAAW,KAAK,SAC5B,MACA;YAGJ;YAEA,MAAM,QAAqB;gBACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,QAAQ;gBAC7B,MAAM;gBACN,MAAM,SAAS,IAAI;gBACnB,cAAc,SAAS,IAAI;YAC/B;YACA,eAAe,CAAA,OAAQ;uBAAI;oBAAM;iBAAM;QAC3C,EAAE,OAAM;YACJ,eAAe,CAAA,OAAQ;uBAAI;oBAAM;wBAC7B,IAAI,KAAK,GAAG,GAAG,QAAQ;wBACvB,MAAM;wBACN,MAAM;oBACV;iBAAE;QACN,SAAU;YACN,gBAAgB;QACpB;IACJ;IAEA,OAAO;QAAE;QAAa;QAAc;IAAY;AACpD"}}, - {"offset": {"line": 546, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/AIPanel.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { Sparkles, Send, RefreshCw, BookOpen, Bot, ArrowLeft, BrainCircuit, Zap } from 'lucide-react';\nimport { ChatMessage, UserUsage } from '@/lib/types';\n\ninterface AIPanelProps {\n chatHistory: ChatMessage[];\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n selectedText: string;\n isGenerating: boolean;\n usage?: UserUsage;\n}\n\nconst AIPanel: React.FC = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGenerating, usage }) => {\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [chatHistory, isGenerating]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (!input.trim() || isGenerating) return;\n onSendMessage(input);\n setInput(\"\");\n };\n\n const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false;\n\n return (\n
\n {/* Header with Usage Counter */}\n
\n
\n \n

Assistant IA

\n
\n {usage && (\n
\n {usage.aiActionsCurrent} / {usage.aiActionsLimit === 999999 ? '∞' : usage.aiActionsLimit}\n
\n )}\n
\n\n {selectedText && (\n
\n
Contexte :
\n
\"{selectedText.substring(0, 60)}...\"
\n
\n )}\n\n
\n {chatHistory.length === 0 && (\n
\n \n

Bonjour ! Comment puis-je vous aider aujourd'hui ?

\n {isLimitReached && (\n
\n Limite atteinte ! Améliorez votre plan.\n
\n )}\n
\n )}\n\n {chatHistory.map((msg) => (\n
\n
\n {msg.role === 'model' && msg.responseType === 'reflection' && (\n
Réflexion
\n )}\n
{msg.text}
\n
\n
\n ))}\n \n {isGenerating && (\n
\n
\n L'IA travaille...\n
\n
\n )}\n
\n
\n\n
\n
\n setInput(e.target.value)}\n placeholder={isLimitReached ? \"Limite atteinte...\" : \"Votre message...\"}\n className=\"w-full pl-4 pr-12 py-3 bg-slate-100 rounded-2xl text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-shadow disabled:opacity-50\"\n disabled={isGenerating || isLimitReached}\n />\n \n \n
\n
\n );\n};\n\nexport default AIPanel;\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 849, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/layout/EditorShell.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState } from 'react';\nimport { BookProject, UserProfile, ViewMode, ChatMessage } from '@/lib/types';\nimport AIPanel from '@/components/AIPanel';\nimport { Book, FileText, Globe, GitGraph, Lightbulb, Settings, Menu, ChevronRight, ChevronLeft, Share2, HelpCircle, LogOut, LayoutDashboard, User, Plus, Trash2 } from 'lucide-react';\n\ninterface EditorShellProps {\n project: BookProject;\n user: UserProfile;\n viewMode: ViewMode;\n currentChapterId: string;\n chatHistory: ChatMessage[];\n isGenerating: boolean;\n onViewModeChange: (mode: ViewMode) => void;\n onChapterSelect: (id: string) => void;\n onUpdateProject: (updates: Partial) => void;\n onAddChapter: () => Promise;\n onDeleteChapter: (id: string) => void;\n onLogout: () => void;\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n onOpenExport: () => void;\n onOpenHelp: () => void;\n children: React.ReactNode;\n}\n\nconst EditorShell: React.FC = (props) => {\n const { project, user, viewMode, currentChapterId, children } = props;\n const [isSidebarOpen, setIsSidebarOpen] = useState(true);\n const [isAiPanelOpen, setIsAiPanelOpen] = useState(true);\n\n const currentChapter = project.chapters.find(c => c.id === currentChapterId);\n\n return (\n
\n\n {/* SIDEBAR */}\n \n\n {/* MAIN CONTENT */}\n
\n
\n
\n \n {viewMode === 'write' ? (\n props.onUpdateProject({ chapters: project.chapters.map(c => c.id === currentChapterId ? { ...c, title: e.target.value } : c) })}\n className=\"font-serif font-bold text-lg bg-transparent border-b border-transparent focus:border-blue-500 focus:outline-none\"\n />\n ) : (\n {viewMode}\n )}\n
\n
\n \n \n \n
\n
\n\n
\n {children}\n
\n
\n\n {/* AI PANEL */}\n
\n {isAiPanelOpen && }\n
\n
\n );\n};\n\nexport default EditorShell;\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 1385, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/ExportModal.tsx"],"sourcesContent":["'use client';\n\nimport React, { useState } from 'react';\nimport { BookProject } from '@/lib/types';\nimport { FileText, FileType, Printer, X, Download, Book, FileJson } from 'lucide-react';\n\ninterface ExportModalProps {\n isOpen: boolean;\n onClose: () => void;\n project: BookProject;\n onPrint: (options: { includeCover: boolean, includeTOC: boolean }) => void;\n}\n\ntype ExportFormat = 'pdf' | 'word' | 'epub' | 'markdown';\ntype PageSize = 'A4' | 'A5' | 'Letter';\n\nconst ExportModal: React.FC = ({ isOpen, onClose, project, onPrint }) => {\n const [format, setFormat] = useState('pdf');\n const [pageSize, setPageSize] = useState('A4');\n const [includeCover, setIncludeCover] = useState(true);\n const [includeTOC, setIncludeTOC] = useState(true);\n\n if (!isOpen) return null;\n\n const generateContentHTML = () => {\n let html = `\n \n \n \n \n ${project.title}\n \n \n \n `;\n\n if (includeCover) {\n html += `\n
\n

${project.title}

\n

${project.author}

\n
\n `;\n }\n\n if (includeTOC) {\n html += `

Table des Matières

    `;\n project.chapters.forEach((chap, idx) => {\n html += `
  • ${chap.title}
  • `;\n });\n html += `
`;\n }\n\n project.chapters.forEach((chap, idx) => {\n html += `\n
\n

${chap.title}

\n ${chap.content}\n
\n `;\n });\n\n html += ``;\n return html;\n };\n\n const handleExport = () => {\n const filename = project.title.replace(/[^a-z0-9]/gi, '_').toLowerCase();\n\n if (format === 'pdf') {\n // Use the classic window print tool via parent callback\n onPrint({ includeCover, includeTOC });\n } \n else if (format === 'word') {\n // Export as HTML with specific Word namespaces -> interpreted as doc by Word\n const content = generateContentHTML();\n const blob = new Blob(['\\ufeff', content], {\n type: 'application/msword'\n });\n downloadBlob(blob, `${filename}.doc`);\n } \n else if (format === 'epub') {\n // Export as a single XHTML file (Ebook ready)\n const content = generateContentHTML();\n const blob = new Blob([content], {\n type: 'application/xhtml+xml'\n });\n downloadBlob(blob, `${filename}.xhtml`);\n }\n else if (format === 'markdown') {\n let md = `# ${project.title}\\nBy ${project.author}\\n\\n`;\n project.chapters.forEach(c => {\n // Very basic HTML to Text conversion\n const text = c.content.replace(/<[^>]+>/g, '\\n');\n md += `## ${c.title}\\n\\n${text}\\n\\n---\\n\\n`;\n });\n const blob = new Blob([md], { type: 'text/markdown' });\n downloadBlob(blob, `${filename}.md`);\n }\n };\n\n const downloadBlob = (blob: Blob, name: string) => {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = name;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n onClose();\n };\n\n return (\n
\n
\n \n {/* Header */}\n
\n
\n

\n Exporter le livre\n

\n

{project.title}

\n
\n \n
\n\n {/* Body */}\n
\n \n {/* Format Selection */}\n
\n \n \n \n\n \n\n \n
\n\n {/* Options Section */}\n
\n

\n Paramètres d'exportation ({format.toUpperCase()})\n

\n\n
\n {format === 'pdf' && (\n
\n
\n \n Géré par l'imprimante (A4, A5...)\n
\n
Auto
\n
\n )}\n\n
\n \n setIncludeCover(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n
\n \n setIncludeTOC(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n {format === 'epub' && (\n

\n Note: L'export EPUB génère un fichier XHTML optimisé prêt à être converti par Calibre ou Kindle Previewer.\n

\n )}\n
\n
\n
\n\n {/* Footer */}\n
\n \n \n
\n
\n
\n );\n};\n\nexport default ExportModal;"],"names":[],"mappings":";;;;;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAJA;;;;AAgBA,MAAM,cAA0C,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;IACpF,MAAM,CAAC,QAAQ,UAAU,GAAG,IAAA,6PAAQ,EAAe;IACnD,MAAM,CAAC,UAAU,YAAY,GAAG,IAAA,6PAAQ,EAAW;IACnD,MAAM,CAAC,cAAc,gBAAgB,GAAG,IAAA,6PAAQ,EAAC;IACjD,MAAM,CAAC,YAAY,cAAc,GAAG,IAAA,6PAAQ,EAAC;IAE7C,IAAI,CAAC,QAAQ,OAAO;IAEpB,MAAM,sBAAsB;QAC1B,IAAI,OAAO,CAAC;;;;;eAKD,EAAE,QAAQ,KAAK,CAAC;;;;;;;;;;;;;;IAc3B,CAAC;QAED,IAAI,cAAc;YAChB,QAAQ,CAAC;;4DAE6C,EAAE,QAAQ,KAAK,CAAC;6DACf,EAAE,QAAQ,MAAM,CAAC;;MAExE,CAAC;QACH;QAEA,IAAI,YAAY;YACd,QAAQ,CAAC,gDAAgD,CAAC;YAC1D,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM;gBAC9B,QAAQ,CAAC,mBAAmB,EAAE,IAAI,EAAE,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC;YAC7D;YACA,QAAQ,CAAC,WAAW,CAAC;QACvB;QAEA,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM;YAC9B,QAAQ,CAAC;sCACuB,EAAE,IAAI;cAC9B,EAAE,KAAK,KAAK,CAAC;UACjB,EAAE,KAAK,OAAO,CAAC;;MAEnB,CAAC;QACH;QAEA,QAAQ,CAAC,cAAc,CAAC;QACxB,OAAO;IACT;IAEA,MAAM,eAAe;QACnB,MAAM,WAAW,QAAQ,KAAK,CAAC,OAAO,CAAC,eAAe,KAAK,WAAW;QAEtE,IAAI,WAAW,OAAO;YACpB,wDAAwD;YACxD,QAAQ;gBAAE;gBAAc;YAAW;QACrC,OACK,IAAI,WAAW,QAAQ;YAC1B,6EAA6E;YAC7E,MAAM,UAAU;YAChB,MAAM,OAAO,IAAI,KAAK;gBAAC;gBAAU;aAAQ,EAAE;gBACzC,MAAM;YACR;YACA,aAAa,MAAM,GAAG,SAAS,IAAI,CAAC;QACtC,OACK,IAAI,WAAW,QAAQ;YAC1B,8CAA8C;YAC9C,MAAM,UAAU;YAChB,MAAM,OAAO,IAAI,KAAK;gBAAC;aAAQ,EAAE;gBAC/B,MAAM;YACR;YACA,aAAa,MAAM,GAAG,SAAS,MAAM,CAAC;QACxC,OACK,IAAI,WAAW,YAAY;YAC5B,IAAI,KAAK,CAAC,EAAE,EAAE,QAAQ,KAAK,CAAC,KAAK,EAAE,QAAQ,MAAM,CAAC,IAAI,CAAC;YACvD,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACrB,qCAAqC;gBACrC,MAAM,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY;gBAC3C,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,WAAW,CAAC;YAC/C;YACA,MAAM,OAAO,IAAI,KAAK;gBAAC;aAAG,EAAE;gBAAE,MAAM;YAAgB;YACpD,aAAa,MAAM,GAAG,SAAS,GAAG,CAAC;QACvC;IACF;IAEA,MAAM,eAAe,CAAC,MAAY;QAChC,MAAM,MAAM,IAAI,eAAe,CAAC;QAChC,MAAM,IAAI,SAAS,aAAa,CAAC;QACjC,EAAE,IAAI,GAAG;QACT,EAAE,QAAQ,GAAG;QACb,SAAS,IAAI,CAAC,WAAW,CAAC;QAC1B,EAAE,KAAK;QACP,SAAS,IAAI,CAAC,WAAW,CAAC;QAC1B,IAAI,eAAe,CAAC;QACpB;IACF;IAEA,qBACE,0RAAC;QAAI,WAAU;kBACb,cAAA,0RAAC;YAAI,WAAU;;8BAGb,0RAAC;oBAAI,WAAU;;sCACb,0RAAC;;8CACC,0RAAC;oCAAG,WAAU;;sDACZ,0RAAC,kQAAQ;4CAAC,MAAM;;;;;;wCAAM;;;;;;;8CAExB,0RAAC;oCAAE,WAAU;8CAA+B,QAAQ,KAAK;;;;;;;;;;;;sCAE3D,0RAAC;4BAAO,SAAS;4BAAS,WAAU;sCAClC,cAAA,0RAAC,6OAAC;gCAAC,MAAM;;;;;;;;;;;;;;;;;8BAKb,0RAAC;oBAAI,WAAU;;sCAGb,0RAAC;4BAAI,WAAU;;8CACb,0RAAC;oCACC,SAAS,IAAM,UAAU;oCACzB,WAAW,CAAC,wEAAwE,EAAE,WAAW,QAAQ,6CAA6C,0DAA0D;;sDAEhN,0RAAC,+PAAO;4CAAC,MAAM;;;;;;sDACf,0RAAC;4CAAI,WAAU;sDAAgB;;;;;;;;;;;;8CAGjC,0RAAC;oCACC,SAAS,IAAM,UAAU;oCACzB,WAAW,CAAC,wEAAwE,EAAE,WAAW,SAAS,6CAA6C,0DAA0D;;sDAEjN,0RAAC,sQAAQ;4CAAC,MAAM;;;;;;sDAChB,0RAAC;4CAAI,WAAU;sDAAgB;;;;;;;;;;;;8CAGjC,0RAAC;oCACC,SAAS,IAAM,UAAU;oCACzB,WAAW,CAAC,wEAAwE,EAAE,WAAW,SAAS,6CAA6C,0DAA0D;;sDAEjN,0RAAC,sPAAI;4CAAC,MAAM;;;;;;sDACZ,0RAAC;4CAAI,WAAU;sDAAgB;;;;;;;;;;;;8CAGjC,0RAAC;oCACC,SAAS,IAAM,UAAU;oCACzB,WAAW,CAAC,wEAAwE,EAAE,WAAW,aAAa,6CAA6C,0DAA0D;;sDAErN,0RAAC,wQAAQ;4CAAC,MAAM;;;;;;sDAChB,0RAAC;4CAAI,WAAU;sDAAgB;;;;;;;;;;;;;;;;;;sCAKnC,0RAAC;4BAAI,WAAU;;8CACb,0RAAC;oCAAG,WAAU;;wCAAiE;wCAClD,OAAO,WAAW;wCAAG;;;;;;;8CAGlD,0RAAC;oCAAI,WAAU;;wCACZ,WAAW,uBACV,0RAAC;4CAAI,WAAU;;8DACb,0RAAC;oDAAI,WAAU;;sEACX,0RAAC;4DAAM,WAAU;sEAA6B;;;;;;sEAC9C,0RAAC;4DAAK,WAAU;sEAAyB;;;;;;;;;;;;8DAE7C,0RAAC;oDAAI,WAAU;8DAAkE;;;;;;;;;;;;sDAIrF,0RAAC;4CAAI,WAAU;;8DACb,0RAAC;oDAAM,WAAU;oDAA4C,SAAQ;8DAAQ;;;;;;8DAC7E,0RAAC;oDACC,IAAG;oDACH,MAAK;oDACL,SAAS;oDACT,UAAU,CAAC,IAAM,gBAAgB,EAAE,MAAM,CAAC,OAAO;oDACjD,WAAU;;;;;;;;;;;;sDAId,0RAAC;4CAAI,WAAU;;8DACb,0RAAC;oDAAM,WAAU;oDAA4C,SAAQ;8DAAM;;;;;;8DAC3E,0RAAC;oDACC,IAAG;oDACH,MAAK;oDACL,SAAS;oDACT,UAAU,CAAC,IAAM,cAAc,EAAE,MAAM,CAAC,OAAO;oDAC/C,WAAU;;;;;;;;;;;;wCAIb,WAAW,wBACR,0RAAC;4CAAE,WAAU;sDAAsD;;;;;;;;;;;;;;;;;;;;;;;;8BAS7E,0RAAC;oBAAI,WAAU;;sCACb,0RAAC;4BACC,SAAS;4BACT,WAAU;sCACX;;;;;;sCAGD,0RAAC;4BACC,SAAS;4BACT,WAAU;;gCAET,WAAW,sBAAQ,0RAAC,+PAAO;oCAAC,MAAM;;;;;6FAAS,0RAAC,kQAAQ;oCAAC,MAAM;;;;;;gCAC3D,WAAW,QAAQ,+BAA+B,CAAC,aAAa,EAAE,WAAW,SAAS,QAAQ,WAAW,SAAS,UAAU,MAAM;;;;;;;;;;;;;;;;;;;;;;;;AAM/I;uCAEe"}}, - {"offset": {"line": 1884, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/HelpModal.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { X, Keyboard, MousePointerClick, MessageCircle, Sparkles, GitGraph, BookOpen, Command, Globe, Layout, Settings, Lightbulb } from 'lucide-react';\nimport { ViewMode } from '@/lib/types';\n\ninterface HelpModalProps {\n isOpen: boolean;\n onClose: () => void;\n viewMode: ViewMode;\n}\n\nconst Kbd: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n \n {children}\n \n);\n\nconst HelpModal: React.FC = ({ isOpen, onClose, viewMode }) => {\n if (!isOpen) return null;\n\n const renderContent = () => {\n switch (viewMode) {\n case 'ideas':\n return (\n
\n

\n Boîte à Idées & Tâches\n

\n
\n

\n Un espace de type Kanban pour ne rien oublier. Utilisez-le pour noter des idées fugaces, planifier des recherches ou lister les scènes à écrire.\n

\n
    \n
  • \n \n \n Glisser-Déposer : Déplacez les cartes d'une colonne à l'autre (À faire → En cours → Validé) pour suivre votre progression.\n \n
  • \n
  • \n \n \n Catégories : Utilisez les catégories (Intrigue, Personnage, Recherche) pour filtrer visuellement vos tâches grâce aux codes couleurs.\n \n
  • \n
\n
\n
\n );\n\n case 'workflow':\n return (\n <>\n {/* Workflow Section */}\n
\n

\n Organisation Narrative\n

\n
\n
    \n
  • \n \n \n Sélection : Ctrl + Clic pour sélectionner plusieurs cartes. Glissez pour déplacer tout un groupe.\n \n
  • \n
  • \n \n \n Copier / Coller : Ctrl + C pour copier les nœuds sélectionnés, Ctrl + V pour coller.\n \n
  • \n
  • \n \n \n Connexions : Tirez depuis le cercle à droite d'une carte pour lier les événements.\n \n
  • \n
\n
\n
\n\n {/* Dialogue Intelligent */}\n
\n

\n Mode Dialogue (Workflow)\n

\n
\n
\n
Écriture Rapide
\n

\n Tapez un nom et Entrée : le formatage Nom: s'ajoute seul.\n

\n

\n Dans un dialogue, Entrée change de ligne et devine le prochain interlocuteur automatiquement.\n

\n
\n
\n
Rotation & Insertion
\n

\n Tab permute instantanément entre les personnages présents dans la scène.\n

\n

\n Utilisez @ pour insérer un personnage, # pour un lieu.\n

\n
\n
\n
\n \n );\n\n case 'world_building':\n return (\n
\n

\n Bible du Monde\n

\n
\n

\n La bible du monde permet de centraliser toutes les informations sur vos personnages et lieux.\n Ces informations sont lues par l'IA pour assurer la cohérence de l'histoire.\n

\n
\n
\n

Modèles Personnalisés

\n

\n Cliquez sur le bouton \"Modèles\" pour ajouter des champs spécifiques (ex: \"Type de Magie\", \"Allégeance\") à tous vos personnages ou lieux.\n

\n
\n
\n

Contexte Automatique

\n

\n Le champ \"Contexte Narratif\" se remplit automatiquement au fur et à mesure que vous écrivez votre histoire et que l'IA détecte l'évolution des personnages.\n

\n
\n
\n
\n
\n );\n\n case 'settings':\n return (\n
\n

\n Paramètres du Livre\n

\n

\n Ces réglages sont cruciaux pour l'Assistant IA. Ils définissent le \"ton\" de toutes les générations de texte.\n

\n
    \n
  • Style Guide : Soyez précis sur le style (ex: \"phrases courtes\", \"beaucoup de métaphores\", \"humour noir\").
  • \n
  • POV (Point de Vue) : Définit si l'IA doit écrire en \"Je\" ou \"Il/Elle\".
  • \n
\n
\n );\n\n case 'write':\n default:\n return (\n
\n

\n Éditeur & Assistant IA\n

\n
\n
\n

Menu Contextuel Intelligent

\n

Sélectionnez du texte et faites un clic droit pour :

\n
    \n
  • Corriger l'orthographe
  • \n
  • Reformuler / Améliorer
  • \n
  • Développer (Show, don't tell)
  • \n
  • Continuer l'écriture
  • \n
\n
\n

\n Historique des versions : Activez la marge de droite (icône horloge) pour voir toutes les interventions de l'IA et revenir en arrière si nécessaire.\n

\n

\n Chat Latéral : Posez des questions sur votre histoire, demandez des résumés ou des idées de rebondissements. L'IA connaît le contexte de vos chapitres précédents et de vos fiches personnages.\n

\n \n
\n

\n Raccourcis Clavier (Éditeur)\n

\n
\n
\n
\n Mettre en Gras\n Ctrl + B\n
\n
\n Mettre en Italique\n Ctrl + I\n
\n
\n Souligner\n Ctrl + U\n
\n
\n
\n
\n Tout sélectionner\n Ctrl + A\n
\n
\n Annuler\n Ctrl + Z\n
\n
\n Rétablir\n Ctrl + Shift + Z\n
\n
\n
\n
\n
\n
\n );\n }\n };\n\n return (\n
\n
\n \n {/* Header */}\n
\n
\n

\n Aide : {\n viewMode === 'workflow' ? 'Workflow & Dialogues' :\n viewMode === 'world_building' ? 'Bible du Monde' :\n viewMode === 'settings' ? 'Paramètres' :\n viewMode === 'ideas' ? 'Boîte à Idées' :\n 'Éditeur & IA'\n }\n

\n

Astuces pour l'écran actuel.

\n
\n \n
\n\n {/* Content */}\n
\n \n {/* Context Specific Content */}\n {renderContent()}\n\n {/* General Footer Section (Always visible) */}\n
\n

Raccourcis Généraux

\n
\n
\n Sauvegarde Automatique\n Permanente\n
\n
\n Menu Latéral\n Clic sur le burger\n
\n
\n
\n\n
\n\n {/* Footer */}\n
\n \n
\n\n
\n
\n );\n};\n\nexport default HelpModal;"],"names":[],"mappings":"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"}}, - {"offset": {"line": 3238, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/layout.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport { useParams, useRouter, usePathname } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { ProjectProvider } from '@/providers/ProjectProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport { useChat } from '@/hooks/useChat';\r\nimport { ViewMode } from '@/lib/types';\r\nimport EditorShell from '@/components/layout/EditorShell';\r\nimport ExportModal from '@/components/ExportModal';\r\nimport HelpModal from '@/components/HelpModal';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\n\r\nfunction getViewModeFromPath(pathname: string): ViewMode {\r\n if (pathname.endsWith('/world')) return 'world_building';\r\n if (pathname.endsWith('/ideas')) return 'ideas';\r\n if (pathname.endsWith('/workflow')) return 'workflow';\r\n if (pathname.endsWith('/settings')) return 'settings';\r\n return 'write';\r\n}\r\n\r\nexport default function ProjectLayout({ children }: { children: React.ReactNode }) {\r\n const params = useParams();\r\n const router = useRouter();\r\n const pathname = usePathname();\r\n const projectId = params.id as string;\r\n\r\n const { user, logout, incrementUsage, loading: authLoading } = useAuthContext();\r\n const {\r\n projects, setCurrentProjectId,\r\n updateProject, updateChapter, addChapter,\r\n } = useProjects(user);\r\n const { chatHistory, isGenerating, sendMessage } = useChat();\r\n\r\n const [currentChapterId, setCurrentChapterId] = useState('');\r\n const [isExportModalOpen, setIsExportModalOpen] = useState(false);\r\n const [isHelpModalOpen, setIsHelpModalOpen] = useState(false);\r\n\r\n const viewMode = getViewModeFromPath(pathname);\r\n\r\n useEffect(() => {\r\n if (projectId) setCurrentProjectId(projectId);\r\n }, [projectId, setCurrentProjectId]);\r\n\r\n useEffect(() => {\r\n if (!authLoading && !user) router.replace('/login');\r\n }, [user, authLoading, router]);\r\n\r\n const project = projects.find(p => p.id === projectId);\r\n\r\n useEffect(() => {\r\n if (project && (!currentChapterId || !project.chapters.some(c => c.id === currentChapterId))) {\r\n setCurrentChapterId(project.chapters[0]?.id || '');\r\n }\r\n }, [project, currentChapterId]);\r\n\r\n if (authLoading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (!project) {\r\n return (\r\n
\r\n \r\n

Chargement du projet...

\r\n
\r\n );\r\n }\r\n\r\n const handleViewModeChange = (mode: ViewMode) => {\r\n const base = `/project/${projectId}`;\r\n switch (mode) {\r\n case 'write': router.push(base); break;\r\n case 'world_building': router.push(`${base}/world`); break;\r\n case 'ideas': router.push(`${base}/ideas`); break;\r\n case 'workflow': router.push(`${base}/workflow`); break;\r\n case 'settings': router.push(`${base}/settings`); break;\r\n case 'dashboard': router.push('/dashboard'); break;\r\n default: router.push(base);\r\n }\r\n };\r\n\r\n return (\r\n updateProject(projectId, updates),\r\n updateChapter: (chapterId, data) => updateChapter(projectId, chapterId, data),\r\n incrementUsage,\r\n }}>\r\n { setCurrentChapterId(id); router.push(`/project/${projectId}`); }}\r\n onUpdateProject={(updates) => updateProject(projectId, updates)}\r\n onAddChapter={async () => {\r\n const id = await addChapter(projectId, {});\r\n if (id) {\r\n setCurrentChapterId(id);\r\n router.push(`/project/${projectId}`);\r\n }\r\n }}\r\n onDeleteChapter={(id) => {\r\n if (project.chapters.length > 1) {\r\n const newChapters = project.chapters.filter(c => c.id !== id);\r\n updateProject(projectId, { chapters: newChapters });\r\n if (currentChapterId === id) setCurrentChapterId(newChapters[0].id);\r\n }\r\n }}\r\n onLogout={() => { logout(); router.push('/'); }}\r\n onSendMessage={(msg) => {\r\n if (project && user) sendMessage(project, 'global', msg, user, incrementUsage);\r\n }}\r\n onInsertText={() => { }}\r\n onOpenExport={() => setIsExportModalOpen(true)}\r\n onOpenHelp={() => setIsHelpModalOpen(true)}\r\n >\r\n setIsExportModalOpen(false)} project={project} onPrint={() => { }} />\r\n setIsHelpModalOpen(false)} viewMode={viewMode} />\r\n {children}\r\n \r\n \r\n );\r\n}\r\n"],"names":[],"mappings":"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"}}] + {"offset": {"line": 189, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n // Persist project fields\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n if (Object.keys(payload).length > 0) {\r\n await api.projects.update(id, payload);\r\n }\r\n\r\n // Persist workflow (nodes + connections) separately\r\n if (data.workflow) {\r\n await api.projects.syncWorkflow(id, {\r\n nodes: data.workflow.nodes || [],\r\n connections: data.workflow.connections || [],\r\n });\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 497, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useChat.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState } from 'react';\r\nimport {\r\n BookProject,\r\n ChatMessage,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\n\r\nexport const useChat = () => {\r\n const [chatHistory, setChatHistory] = useState([]);\r\n const [isGenerating, setIsGenerating] = useState(false);\r\n\r\n const sendMessage = async (\r\n project: BookProject,\r\n context: string,\r\n text: string,\r\n user: UserProfile,\r\n incrementUsage: () => void\r\n ) => {\r\n const userMsg: ChatMessage = {\r\n id: Date.now().toString(),\r\n role: 'user',\r\n text: text\r\n };\r\n setChatHistory(prev => [...prev, userMsg]);\r\n setIsGenerating(true);\r\n\r\n try {\r\n const response = await api.ai.generate(\r\n project,\r\n context === 'global' ? '' : context,\r\n text,\r\n user\r\n );\r\n\r\n incrementUsage();\r\n\r\n const aiMsg: ChatMessage = {\r\n id: (Date.now() + 1).toString(),\r\n role: 'model',\r\n text: response.text,\r\n responseType: response.type\r\n };\r\n setChatHistory(prev => [...prev, aiMsg]);\r\n } catch {\r\n setChatHistory(prev => [...prev, {\r\n id: Date.now().toString(),\r\n role: 'model',\r\n text: \"Désolé, une erreur est survenue lors de la génération.\"\r\n }]);\r\n } finally {\r\n setIsGenerating(false);\r\n }\r\n };\r\n\r\n return { chatHistory, isGenerating, sendMessage };\r\n};\r\n"],"names":[],"mappings":";;;;AAEA;AAMA;AARA;;;AAUO,MAAM,UAAU;IACnB,MAAM,CAAC,aAAa,eAAe,GAAG,IAAA,6PAAQ,EAAgB,EAAE;IAChE,MAAM,CAAC,cAAc,gBAAgB,GAAG,IAAA,6PAAQ,EAAC;IAEjD,MAAM,cAAc,OAChB,SACA,SACA,MACA,MACA;QAEA,MAAM,UAAuB;YACzB,IAAI,KAAK,GAAG,GAAG,QAAQ;YACvB,MAAM;YACN,MAAM;QACV;QACA,eAAe,CAAA,OAAQ;mBAAI;gBAAM;aAAQ;QACzC,gBAAgB;QAEhB,IAAI;YACA,MAAM,WAAW,MAAM,wKAAG,CAAC,EAAE,CAAC,QAAQ,CAClC,SACA,YAAY,WAAW,KAAK,SAC5B,MACA;YAGJ;YAEA,MAAM,QAAqB;gBACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,QAAQ;gBAC7B,MAAM;gBACN,MAAM,SAAS,IAAI;gBACnB,cAAc,SAAS,IAAI;YAC/B;YACA,eAAe,CAAA,OAAQ;uBAAI;oBAAM;iBAAM;QAC3C,EAAE,OAAM;YACJ,eAAe,CAAA,OAAQ;uBAAI;oBAAM;wBAC7B,IAAI,KAAK,GAAG,GAAG,QAAQ;wBACvB,MAAM;wBACN,MAAM;oBACV;iBAAE;QACN,SAAU;YACN,gBAAgB;QACpB;IACJ;IAEA,OAAO;QAAE;QAAa;QAAc;IAAY;AACpD"}}, + {"offset": {"line": 556, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/AIPanel.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { Sparkles, Send, RefreshCw, BookOpen, Bot, ArrowLeft, BrainCircuit, Zap } from 'lucide-react';\nimport { ChatMessage, UserUsage } from '@/lib/types';\n\ninterface AIPanelProps {\n chatHistory: ChatMessage[];\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n selectedText: string;\n isGenerating: boolean;\n usage?: UserUsage;\n}\n\nconst AIPanel: React.FC = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGenerating, usage }) => {\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [chatHistory, isGenerating]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (!input.trim() || isGenerating) return;\n onSendMessage(input);\n setInput(\"\");\n };\n\n const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false;\n\n return (\n
\n {/* Header with Usage Counter */}\n
\n
\n \n

Assistant IA

\n
\n {usage && (\n
\n {usage.aiActionsCurrent} / {usage.aiActionsLimit === 999999 ? '∞' : usage.aiActionsLimit}\n
\n )}\n
\n\n {selectedText && (\n
\n
Contexte :
\n
\"{selectedText.substring(0, 60)}...\"
\n
\n )}\n\n
\n {chatHistory.length === 0 && (\n
\n \n

Bonjour ! Comment puis-je vous aider aujourd'hui ?

\n {isLimitReached && (\n
\n Limite atteinte ! Améliorez votre plan.\n
\n )}\n
\n )}\n\n {chatHistory.map((msg) => (\n
\n
\n {msg.role === 'model' && msg.responseType === 'reflection' && (\n
Réflexion
\n )}\n
{msg.text}
\n
\n
\n ))}\n \n {isGenerating && (\n
\n
\n L'IA travaille...\n
\n
\n )}\n
\n
\n\n
\n
\n setInput(e.target.value)}\n placeholder={isLimitReached ? \"Limite atteinte...\" : \"Votre message...\"}\n className=\"w-full pl-4 pr-12 py-3 bg-slate-100 rounded-2xl text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-shadow disabled:opacity-50\"\n disabled={isGenerating || isLimitReached}\n />\n \n \n
\n
\n );\n};\n\nexport default AIPanel;\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 859, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/layout/EditorShell.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState } from 'react';\nimport { BookProject, UserProfile, ViewMode, ChatMessage } from '@/lib/types';\nimport AIPanel from '@/components/AIPanel';\nimport { Book, FileText, Globe, GitGraph, Lightbulb, Settings, Menu, ChevronRight, ChevronLeft, Share2, HelpCircle, LogOut, LayoutDashboard, User, Plus, Trash2 } from 'lucide-react';\n\ninterface EditorShellProps {\n project: BookProject;\n user: UserProfile;\n viewMode: ViewMode;\n currentChapterId: string;\n chatHistory: ChatMessage[];\n isGenerating: boolean;\n onViewModeChange: (mode: ViewMode) => void;\n onChapterSelect: (id: string) => void;\n onUpdateProject: (updates: Partial) => void;\n onAddChapter: () => Promise;\n onDeleteChapter: (id: string) => void;\n onLogout: () => void;\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n onOpenExport: () => void;\n onOpenHelp: () => void;\n children: React.ReactNode;\n}\n\nconst EditorShell: React.FC = (props) => {\n const { project, user, viewMode, currentChapterId, children } = props;\n const [isSidebarOpen, setIsSidebarOpen] = useState(true);\n const [isAiPanelOpen, setIsAiPanelOpen] = useState(true);\n\n const currentChapter = project.chapters.find(c => c.id === currentChapterId);\n\n return (\n
\n\n {/* SIDEBAR */}\n \n\n {/* MAIN CONTENT */}\n
\n
\n
\n \n {viewMode === 'write' ? (\n props.onUpdateProject({ chapters: project.chapters.map(c => c.id === currentChapterId ? { ...c, title: e.target.value } : c) })}\n className=\"font-serif font-bold text-lg bg-transparent border-b border-transparent focus:border-blue-500 focus:outline-none\"\n />\n ) : (\n {viewMode}\n )}\n
\n
\n \n \n \n
\n
\n\n
\n {children}\n
\n
\n\n {/* AI PANEL */}\n
\n {isAiPanelOpen && }\n
\n
\n );\n};\n\nexport default EditorShell;\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 1395, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/ExportModal.tsx"],"sourcesContent":["'use client';\n\nimport React, { useState } from 'react';\nimport { BookProject } from '@/lib/types';\nimport { FileText, FileType, Printer, X, Download, Book, FileJson } from 'lucide-react';\n\ninterface ExportModalProps {\n isOpen: boolean;\n onClose: () => void;\n project: BookProject;\n onPrint: (options: { includeCover: boolean, includeTOC: boolean }) => void;\n}\n\ntype ExportFormat = 'pdf' | 'word' | 'epub' | 'markdown';\ntype PageSize = 'A4' | 'A5' | 'Letter';\n\nconst ExportModal: React.FC = ({ isOpen, onClose, project, onPrint }) => {\n const [format, setFormat] = useState('pdf');\n const [pageSize, setPageSize] = useState('A4');\n const [includeCover, setIncludeCover] = useState(true);\n const [includeTOC, setIncludeTOC] = useState(true);\n\n if (!isOpen) return null;\n\n const generateContentHTML = () => {\n let html = `\n \n \n \n \n ${project.title}\n \n \n \n `;\n\n if (includeCover) {\n html += `\n
\n

${project.title}

\n

${project.author}

\n
\n `;\n }\n\n if (includeTOC) {\n html += `

Table des Matières

    `;\n project.chapters.forEach((chap, idx) => {\n html += `
  • ${chap.title}
  • `;\n });\n html += `
`;\n }\n\n project.chapters.forEach((chap, idx) => {\n html += `\n
\n

${chap.title}

\n ${chap.content}\n
\n `;\n });\n\n html += ``;\n return html;\n };\n\n const handleExport = () => {\n const filename = project.title.replace(/[^a-z0-9]/gi, '_').toLowerCase();\n\n if (format === 'pdf') {\n // Use the classic window print tool via parent callback\n onPrint({ includeCover, includeTOC });\n } \n else if (format === 'word') {\n // Export as HTML with specific Word namespaces -> interpreted as doc by Word\n const content = generateContentHTML();\n const blob = new Blob(['\\ufeff', content], {\n type: 'application/msword'\n });\n downloadBlob(blob, `${filename}.doc`);\n } \n else if (format === 'epub') {\n // Export as a single XHTML file (Ebook ready)\n const content = generateContentHTML();\n const blob = new Blob([content], {\n type: 'application/xhtml+xml'\n });\n downloadBlob(blob, `${filename}.xhtml`);\n }\n else if (format === 'markdown') {\n let md = `# ${project.title}\\nBy ${project.author}\\n\\n`;\n project.chapters.forEach(c => {\n // Very basic HTML to Text conversion\n const text = c.content.replace(/<[^>]+>/g, '\\n');\n md += `## ${c.title}\\n\\n${text}\\n\\n---\\n\\n`;\n });\n const blob = new Blob([md], { type: 'text/markdown' });\n downloadBlob(blob, `${filename}.md`);\n }\n };\n\n const downloadBlob = (blob: Blob, name: string) => {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = name;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n onClose();\n };\n\n return (\n
\n
\n \n {/* Header */}\n
\n
\n

\n Exporter le livre\n

\n

{project.title}

\n
\n \n
\n\n {/* Body */}\n
\n \n {/* Format Selection */}\n
\n \n \n \n\n \n\n \n
\n\n {/* Options Section */}\n
\n

\n Paramètres d'exportation ({format.toUpperCase()})\n

\n\n
\n {format === 'pdf' && (\n
\n
\n \n Géré par l'imprimante (A4, A5...)\n
\n
Auto
\n
\n )}\n\n
\n \n setIncludeCover(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n
\n \n setIncludeTOC(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n {format === 'epub' && (\n

\n Note: L'export EPUB génère un fichier XHTML optimisé prêt à être converti par Calibre ou Kindle Previewer.\n

\n )}\n
\n
\n
\n\n {/* Footer */}\n
\n \n \n
\n
\n
\n );\n};\n\nexport default ExportModal;"],"names":[],"mappings":"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"}}, + {"offset": {"line": 1894, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/HelpModal.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { X, Keyboard, MousePointerClick, MessageCircle, Sparkles, GitGraph, BookOpen, Command, Globe, Layout, Settings, Lightbulb } from 'lucide-react';\nimport { ViewMode } from '@/lib/types';\n\ninterface HelpModalProps {\n isOpen: boolean;\n onClose: () => void;\n viewMode: ViewMode;\n}\n\nconst Kbd: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n \n {children}\n \n);\n\nconst HelpModal: React.FC = ({ isOpen, onClose, viewMode }) => {\n if (!isOpen) return null;\n\n const renderContent = () => {\n switch (viewMode) {\n case 'ideas':\n return (\n
\n

\n Boîte à Idées & Tâches\n

\n
\n

\n Un espace de type Kanban pour ne rien oublier. Utilisez-le pour noter des idées fugaces, planifier des recherches ou lister les scènes à écrire.\n

\n
    \n
  • \n \n \n Glisser-Déposer : Déplacez les cartes d'une colonne à l'autre (À faire → En cours → Validé) pour suivre votre progression.\n \n
  • \n
  • \n \n \n Catégories : Utilisez les catégories (Intrigue, Personnage, Recherche) pour filtrer visuellement vos tâches grâce aux codes couleurs.\n \n
  • \n
\n
\n
\n );\n\n case 'workflow':\n return (\n <>\n {/* Workflow Section */}\n
\n

\n Organisation Narrative\n

\n
\n
    \n
  • \n \n \n Sélection : Ctrl + Clic pour sélectionner plusieurs cartes. Glissez pour déplacer tout un groupe.\n \n
  • \n
  • \n \n \n Copier / Coller : Ctrl + C pour copier les nœuds sélectionnés, Ctrl + V pour coller.\n \n
  • \n
  • \n \n \n Connexions : Tirez depuis le cercle à droite d'une carte pour lier les événements.\n \n
  • \n
\n
\n
\n\n {/* Dialogue Intelligent */}\n
\n

\n Mode Dialogue (Workflow)\n

\n
\n
\n
Écriture Rapide
\n

\n Tapez un nom et Entrée : le formatage Nom: s'ajoute seul.\n

\n

\n Dans un dialogue, Entrée change de ligne et devine le prochain interlocuteur automatiquement.\n

\n
\n
\n
Rotation & Insertion
\n

\n Tab permute instantanément entre les personnages présents dans la scène.\n

\n

\n Utilisez @ pour insérer un personnage, # pour un lieu.\n

\n
\n
\n
\n \n );\n\n case 'world_building':\n return (\n
\n

\n Bible du Monde\n

\n
\n

\n La bible du monde permet de centraliser toutes les informations sur vos personnages et lieux.\n Ces informations sont lues par l'IA pour assurer la cohérence de l'histoire.\n

\n
\n
\n

Modèles Personnalisés

\n

\n Cliquez sur le bouton \"Modèles\" pour ajouter des champs spécifiques (ex: \"Type de Magie\", \"Allégeance\") à tous vos personnages ou lieux.\n

\n
\n
\n

Contexte Automatique

\n

\n Le champ \"Contexte Narratif\" se remplit automatiquement au fur et à mesure que vous écrivez votre histoire et que l'IA détecte l'évolution des personnages.\n

\n
\n
\n
\n
\n );\n\n case 'settings':\n return (\n
\n

\n Paramètres du Livre\n

\n

\n Ces réglages sont cruciaux pour l'Assistant IA. Ils définissent le \"ton\" de toutes les générations de texte.\n

\n
    \n
  • Style Guide : Soyez précis sur le style (ex: \"phrases courtes\", \"beaucoup de métaphores\", \"humour noir\").
  • \n
  • POV (Point de Vue) : Définit si l'IA doit écrire en \"Je\" ou \"Il/Elle\".
  • \n
\n
\n );\n\n case 'write':\n default:\n return (\n
\n

\n Éditeur & Assistant IA\n

\n
\n
\n

Menu Contextuel Intelligent

\n

Sélectionnez du texte et faites un clic droit pour :

\n
    \n
  • Corriger l'orthographe
  • \n
  • Reformuler / Améliorer
  • \n
  • Développer (Show, don't tell)
  • \n
  • Continuer l'écriture
  • \n
\n
\n

\n Historique des versions : Activez la marge de droite (icône horloge) pour voir toutes les interventions de l'IA et revenir en arrière si nécessaire.\n

\n

\n Chat Latéral : Posez des questions sur votre histoire, demandez des résumés ou des idées de rebondissements. L'IA connaît le contexte de vos chapitres précédents et de vos fiches personnages.\n

\n \n
\n

\n Raccourcis Clavier (Éditeur)\n

\n
\n
\n
\n Mettre en Gras\n Ctrl + B\n
\n
\n Mettre en Italique\n Ctrl + I\n
\n
\n Souligner\n Ctrl + U\n
\n
\n
\n
\n Tout sélectionner\n Ctrl + A\n
\n
\n Annuler\n Ctrl + Z\n
\n
\n Rétablir\n Ctrl + Shift + Z\n
\n
\n
\n
\n
\n
\n );\n }\n };\n\n return (\n
\n
\n \n {/* Header */}\n
\n
\n

\n Aide : {\n viewMode === 'workflow' ? 'Workflow & Dialogues' :\n viewMode === 'world_building' ? 'Bible du Monde' :\n viewMode === 'settings' ? 'Paramètres' :\n viewMode === 'ideas' ? 'Boîte à Idées' :\n 'Éditeur & IA'\n }\n

\n

Astuces pour l'écran actuel.

\n
\n \n
\n\n {/* Content */}\n
\n \n {/* Context Specific Content */}\n {renderContent()}\n\n {/* General Footer Section (Always visible) */}\n
\n

Raccourcis Généraux

\n
\n
\n Sauvegarde Automatique\n Permanente\n
\n
\n Menu Latéral\n Clic sur le burger\n
\n
\n
\n\n
\n\n {/* Footer */}\n
\n \n
\n\n
\n
\n );\n};\n\nexport default HelpModal;"],"names":[],"mappings":"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"}}, + {"offset": {"line": 3248, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/layout.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport { useParams, useRouter, usePathname } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { ProjectProvider } from '@/providers/ProjectProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport { useChat } from '@/hooks/useChat';\r\nimport { ViewMode } from '@/lib/types';\r\nimport EditorShell from '@/components/layout/EditorShell';\r\nimport ExportModal from '@/components/ExportModal';\r\nimport HelpModal from '@/components/HelpModal';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\n\r\nfunction getViewModeFromPath(pathname: string): ViewMode {\r\n if (pathname.endsWith('/world')) return 'world_building';\r\n if (pathname.endsWith('/ideas')) return 'ideas';\r\n if (pathname.endsWith('/workflow')) return 'workflow';\r\n if (pathname.endsWith('/settings')) return 'settings';\r\n return 'write';\r\n}\r\n\r\nexport default function ProjectLayout({ children }: { children: React.ReactNode }) {\r\n const params = useParams();\r\n const router = useRouter();\r\n const pathname = usePathname();\r\n const projectId = params.id as string;\r\n\r\n const { user, logout, incrementUsage, loading: authLoading } = useAuthContext();\r\n const {\r\n projects, setCurrentProjectId,\r\n updateProject, updateChapter, addChapter,\r\n } = useProjects(user);\r\n const { chatHistory, isGenerating, sendMessage } = useChat();\r\n\r\n const [currentChapterId, setCurrentChapterId] = useState('');\r\n const [isExportModalOpen, setIsExportModalOpen] = useState(false);\r\n const [isHelpModalOpen, setIsHelpModalOpen] = useState(false);\r\n\r\n const viewMode = getViewModeFromPath(pathname);\r\n\r\n useEffect(() => {\r\n if (projectId) setCurrentProjectId(projectId);\r\n }, [projectId, setCurrentProjectId]);\r\n\r\n useEffect(() => {\r\n if (!authLoading && !user) router.replace('/login');\r\n }, [user, authLoading, router]);\r\n\r\n const project = projects.find(p => p.id === projectId);\r\n\r\n useEffect(() => {\r\n if (project && (!currentChapterId || !project.chapters.some(c => c.id === currentChapterId))) {\r\n setCurrentChapterId(project.chapters[0]?.id || '');\r\n }\r\n }, [project, currentChapterId]);\r\n\r\n if (authLoading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (!project) {\r\n return (\r\n
\r\n \r\n

Chargement du projet...

\r\n
\r\n );\r\n }\r\n\r\n const handleViewModeChange = (mode: ViewMode) => {\r\n const base = `/project/${projectId}`;\r\n switch (mode) {\r\n case 'write': router.push(base); break;\r\n case 'world_building': router.push(`${base}/world`); break;\r\n case 'ideas': router.push(`${base}/ideas`); break;\r\n case 'workflow': router.push(`${base}/workflow`); break;\r\n case 'settings': router.push(`${base}/settings`); break;\r\n case 'dashboard': router.push('/dashboard'); break;\r\n default: router.push(base);\r\n }\r\n };\r\n\r\n return (\r\n updateProject(projectId, updates),\r\n updateChapter: (chapterId, data) => updateChapter(projectId, chapterId, data),\r\n incrementUsage,\r\n }}>\r\n { setCurrentChapterId(id); router.push(`/project/${projectId}`); }}\r\n onUpdateProject={(updates) => updateProject(projectId, updates)}\r\n onAddChapter={async () => {\r\n const id = await addChapter(projectId, {});\r\n if (id) {\r\n setCurrentChapterId(id);\r\n router.push(`/project/${projectId}`);\r\n }\r\n }}\r\n onDeleteChapter={(id) => {\r\n if (project.chapters.length > 1) {\r\n const newChapters = project.chapters.filter(c => c.id !== id);\r\n updateProject(projectId, { chapters: newChapters });\r\n if (currentChapterId === id) setCurrentChapterId(newChapters[0].id);\r\n }\r\n }}\r\n onLogout={() => { logout(); router.push('/'); }}\r\n onSendMessage={(msg) => {\r\n if (project && user) sendMessage(project, 'global', msg, user, incrementUsage);\r\n }}\r\n onInsertText={() => { }}\r\n onOpenExport={() => setIsExportModalOpen(true)}\r\n onOpenHelp={() => setIsHelpModalOpen(true)}\r\n >\r\n setIsExportModalOpen(false)} project={project} onPrint={() => { }} />\r\n setIsHelpModalOpen(false)} viewMode={viewMode} />\r\n {children}\r\n \r\n \r\n );\r\n}\r\n"],"names":[],"mappings":"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"}}] } \ No newline at end of file diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__de10d535._.js b/.next/dev/server/chunks/ssr/[root-of-the-server]__de10d535._.js index 29071ce..3a18dc2 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__de10d535._.js +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__de10d535._.js @@ -76,6 +76,12 @@ const api = { return api.request(`/projects/${id}`, { method: 'DELETE' }); + }, + async syncWorkflow (id, data) { + return api.request(`/projects/${id}/workflow`, { + method: 'PUT', + body: JSON.stringify(data) + }); } }, // --- CHAPTERS --- diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__de10d535._.js.map b/.next/dev/server/chunks/ssr/[root-of-the-server]__de10d535._.js.map index 4a044d5..97d58bf 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__de10d535._.js.map +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__de10d535._.js.map @@ -2,14 +2,14 @@ "version": 3, "sources": [], "sections": [ - {"offset": {"line": 10, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/api.ts"],"sourcesContent":["import { BookProject, UserProfile } from './types';\r\n\r\nconst API_BASE_URL = '/api';\r\n\r\n// --- API CLIENT ---\r\n\r\nconst api = {\r\n async request(endpoint: string, options: RequestInit = {}) {\r\n const url = `${API_BASE_URL}${endpoint}`;\r\n\r\n const headers: Record = {\r\n 'Content-Type': 'application/json',\r\n ...options.headers as Record,\r\n };\r\n\r\n const response = await fetch(url, {\r\n ...options,\r\n headers,\r\n });\r\n\r\n if (!response.ok) {\r\n let errorMsg = `Error ${response.status}: ${response.statusText}`;\r\n try {\r\n const errorJson = await response.json();\r\n if (errorJson.error) errorMsg = errorJson.error;\r\n if (errorJson.message) errorMsg = errorJson.message;\r\n } catch {\r\n // Ignore json parse error\r\n }\r\n throw new Error(errorMsg);\r\n }\r\n\r\n if (response.status === 204) return null;\r\n return response.json();\r\n },\r\n\r\n // --- AUTH ---\r\n auth: {\r\n async register(email: string, password: string, name: string) {\r\n return api.request('/auth/register', {\r\n method: 'POST',\r\n body: JSON.stringify({ email, password, name }),\r\n });\r\n },\r\n },\r\n\r\n // --- PROJECTS ---\r\n projects: {\r\n async list() {\r\n return api.request('/projects');\r\n },\r\n\r\n async get(id: string) {\r\n return api.request(`/projects/${id}`);\r\n },\r\n\r\n async create(data: { title: string; author: string; settings?: any }) {\r\n return api.request('/projects', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/projects/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/projects/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n },\r\n\r\n // --- CHAPTERS ---\r\n chapters: {\r\n async create(data: { projectId: string; title?: string; content?: string; summary?: string; orderIndex?: number }) {\r\n return api.request('/chapters', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/chapters/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/chapters/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n },\r\n\r\n // --- ENTITIES ---\r\n entities: {\r\n async create(data: { projectId: string; type: string; name?: string; description?: string; details?: string; attributes?: any; customValues?: any }) {\r\n return api.request('/entities', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/entities/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/entities/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n },\r\n\r\n // --- IDEAS ---\r\n ideas: {\r\n async create(data: { projectId: string; title?: string; description?: string; status?: string; category?: string }) {\r\n return api.request('/ideas', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/ideas/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/ideas/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n },\r\n\r\n // --- AI (server-side via API routes) ---\r\n ai: {\r\n async generate(project: BookProject, chapterId: string, prompt: string, user: UserProfile) {\r\n return api.request<{ text: string; type: 'draft' | 'reflection' }>('/ai/generate', {\r\n method: 'POST',\r\n body: JSON.stringify({ project, chapterId, prompt, user }),\r\n });\r\n },\r\n\r\n async transform(text: string, mode: string, context: string, user: UserProfile) {\r\n const res = await api.request<{ text: string }>('/ai/transform', {\r\n method: 'POST',\r\n body: JSON.stringify({ text, mode, context, user }),\r\n });\r\n return res.text;\r\n },\r\n },\r\n};\r\n\r\nexport default api;\r\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 172, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useAuth.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect, useCallback } from 'react';\r\nimport { signIn, signOut, useSession } from 'next-auth/react';\r\nimport { UserProfile } from '@/lib/types';\r\nimport api from '@/lib/api';\r\n\r\nexport const useAuth = () => {\r\n const { data: session, status } = useSession();\r\n const [user, setUser] = useState(null);\r\n const loading = status === 'loading';\r\n\r\n // Sync session to UserProfile\r\n useEffect(() => {\r\n if (session?.user) {\r\n setUser({\r\n id: session.user.id || '',\r\n email: session.user.email || '',\r\n name: session.user.name || 'User',\r\n subscription: { plan: 'free', startDate: Date.now(), status: 'active' },\r\n usage: { aiActionsCurrent: 0, aiActionsLimit: 100, projectsLimit: 3 },\r\n preferences: { theme: 'light', dailyWordGoal: 500, language: 'fr' },\r\n stats: { totalWordsWritten: 0, writingStreak: 0, lastWriteDate: 0 },\r\n });\r\n } else if (status === 'unauthenticated') {\r\n setUser(null);\r\n }\r\n }, [session, status]);\r\n\r\n const login = useCallback(async (email: string, password: string) => {\r\n const result = await signIn('credentials', {\r\n email,\r\n password,\r\n redirect: false,\r\n });\r\n\r\n if (result?.error) {\r\n throw new Error(result.error === 'CredentialsSignin'\r\n ? 'Email ou mot de passe incorrect'\r\n : result.error\r\n );\r\n }\r\n }, []);\r\n\r\n const signup = useCallback(async (email: string, password: string, name: string) => {\r\n // 1. Register via API\r\n await api.auth.register(email, password, name);\r\n\r\n // 2. Auto-login\r\n const result = await signIn('credentials', {\r\n email,\r\n password,\r\n redirect: false,\r\n });\r\n\r\n if (result?.error) {\r\n throw new Error('Compte créé mais erreur de connexion automatique');\r\n }\r\n }, []);\r\n\r\n const logout = useCallback(async () => {\r\n await signOut({ redirect: false });\r\n setUser(null);\r\n }, []);\r\n\r\n const incrementUsage = useCallback(() => {\r\n if (user) {\r\n setUser({\r\n ...user,\r\n usage: { ...user.usage, aiActionsCurrent: user.usage.aiActionsCurrent + 1 },\r\n });\r\n }\r\n }, [user]);\r\n\r\n return { user, login, signup, logout, incrementUsage, loading };\r\n};\r\n"],"names":[],"mappings":";;;;AAEA;AACA;AAEA;AALA;;;;AAOO,MAAM,UAAU;IACnB,MAAM,EAAE,MAAM,OAAO,EAAE,MAAM,EAAE,GAAG,IAAA,+LAAU;IAC5C,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAA,6PAAQ,EAAqB;IACrD,MAAM,UAAU,WAAW;IAE3B,8BAA8B;IAC9B,IAAA,8PAAS,EAAC;QACN,IAAI,SAAS,MAAM;YACf,QAAQ;gBACJ,IAAI,QAAQ,IAAI,CAAC,EAAE,IAAI;gBACvB,OAAO,QAAQ,IAAI,CAAC,KAAK,IAAI;gBAC7B,MAAM,QAAQ,IAAI,CAAC,IAAI,IAAI;gBAC3B,cAAc;oBAAE,MAAM;oBAAQ,WAAW,KAAK,GAAG;oBAAI,QAAQ;gBAAS;gBACtE,OAAO;oBAAE,kBAAkB;oBAAG,gBAAgB;oBAAK,eAAe;gBAAE;gBACpE,aAAa;oBAAE,OAAO;oBAAS,eAAe;oBAAK,UAAU;gBAAK;gBAClE,OAAO;oBAAE,mBAAmB;oBAAG,eAAe;oBAAG,eAAe;gBAAE;YACtE;QACJ,OAAO,IAAI,WAAW,mBAAmB;YACrC,QAAQ;QACZ;IACJ,GAAG;QAAC;QAAS;KAAO;IAEpB,MAAM,QAAQ,IAAA,gQAAW,EAAC,OAAO,OAAe;QAC5C,MAAM,SAAS,MAAM,IAAA,2LAAM,EAAC,eAAe;YACvC;YACA;YACA,UAAU;QACd;QAEA,IAAI,QAAQ,OAAO;YACf,MAAM,IAAI,MAAM,OAAO,KAAK,KAAK,sBAC3B,oCACA,OAAO,KAAK;QAEtB;IACJ,GAAG,EAAE;IAEL,MAAM,SAAS,IAAA,gQAAW,EAAC,OAAO,OAAe,UAAkB;QAC/D,sBAAsB;QACtB,MAAM,wKAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,UAAU;QAEzC,gBAAgB;QAChB,MAAM,SAAS,MAAM,IAAA,2LAAM,EAAC,eAAe;YACvC;YACA;YACA,UAAU;QACd;QAEA,IAAI,QAAQ,OAAO;YACf,MAAM,IAAI,MAAM;QACpB;IACJ,GAAG,EAAE;IAEL,MAAM,SAAS,IAAA,gQAAW,EAAC;QACvB,MAAM,IAAA,4LAAO,EAAC;YAAE,UAAU;QAAM;QAChC,QAAQ;IACZ,GAAG,EAAE;IAEL,MAAM,iBAAiB,IAAA,gQAAW,EAAC;QAC/B,IAAI,MAAM;YACN,QAAQ;gBACJ,GAAG,IAAI;gBACP,OAAO;oBAAE,GAAG,KAAK,KAAK;oBAAE,kBAAkB,KAAK,KAAK,CAAC,gBAAgB,GAAG;gBAAE;YAC9E;QACJ;IACJ,GAAG;QAAC;KAAK;IAET,OAAO;QAAE;QAAM;QAAO;QAAQ;QAAQ;QAAgB;IAAQ;AAClE"}}, - {"offset": {"line": 277, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/providers/AuthProvider.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { createContext, useContext } from 'react';\r\nimport { SessionProvider } from 'next-auth/react';\r\nimport { useAuth } from '@/hooks/useAuth';\r\n\r\nconst AuthContext = createContext(null);\r\n\r\nfunction AuthInner({ children }: { children: React.ReactNode }) {\r\n const auth = useAuth();\r\n return {children};\r\n}\r\n\r\nexport const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport function useAuthContext() {\r\n return useContext(AuthContext);\r\n}\r\n"],"names":[],"mappings":";;;;;;;AAEA;AACA;AACA;AAJA;;;;;AAMA,MAAM,4BAAc,IAAA,kQAAa,EAAM;AAEvC,SAAS,UAAU,EAAE,QAAQ,EAAiC;IAC1D,MAAM,OAAO,IAAA,8KAAO;IACpB,qBAAO,0RAAC,YAAY,QAAQ;QAAC,OAAO;kBAAO;;;;;;AAC/C;AAEO,MAAM,eAAwD,CAAC,EAAE,QAAQ,EAAE;IAC9E,qBACI,0RAAC,oMAAe;kBACZ,cAAA,0RAAC;sBAAW;;;;;;;;;;;AAGxB;AAEO,SAAS;IACZ,OAAO,IAAA,+PAAU,EAAC;AACtB"}}, - {"offset": {"line": 326, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/module.compiled.js"],"sourcesContent":["if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/app-page/module.js')\n} else {\n if (process.env.__NEXT_EXPERIMENTAL_REACT) {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.prod.js')\n }\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.prod.js')\n }\n }\n }\n}\n"],"names":["process","env","NEXT_RUNTIME","module","exports","require","__NEXT_EXPERIMENTAL_REACT","NODE_ENV","TURBOPACK"],"mappings":"AAAA,IAAIA,QAAQC,GAAG,CAACC,YAAY,KAAK,QAAQ;;KAElC;IACL,IAAIF,QAAQC,GAAG,CAACK,yBAAyB,EAAE;;SAcpC;QACL,IAAIN,QAAQC,GAAG,CAACM,QAAQ,KAAK,WAAe;YAC1C,IAAIP,QAAQC,GAAG,CAACO,SAAS,eAAE;gBACzBL,OAAOC,OAAO,GAAGC,QAAQ;YAC3B,OAAO;;QAGT,OAAO;;IAOT;AACF","ignoreList":[0]}}, - {"offset": {"line": 345, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactJsxDevRuntime\n"],"names":["module","exports","require","vendored","ReactJsxDevRuntime"],"mappings":"AAAAA,OAAOC,OAAO,GACZC,QAAQ,0JACRC,QAAQ,CAAC,YAAY,CAAEC,kBAAkB","ignoreList":[0]}}, - {"offset": {"line": 350, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.React\n"],"names":["module","exports","require","vendored","React"],"mappings":"AAAAA,OAAOC,OAAO,GACZC,QAAQ,0JACRC,QAAQ,CAAC,YAAY,CAAEC,KAAK","ignoreList":[0]}}, - {"offset": {"line": 355, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactJsxRuntime\n"],"names":["module","exports","require","vendored","ReactJsxRuntime"],"mappings":"AAAAA,OAAOC,OAAO,GACZC,QAAQ,0JACRC,QAAQ,CAAC,YAAY,CAAEC,eAAe","ignoreList":[0]}}, - {"offset": {"line": 360, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/%40auth/core/errors.js"],"sourcesContent":["/**\n * Base error class for all Auth.js errors.\n * It's optimized to be printed in the server logs in a nicely formatted way\n * via the [`logger.error`](https://authjs.dev/reference/core#logger) option.\n * @noInheritDoc\n */\nexport class AuthError extends Error {\n /** @internal */\n constructor(message, errorOptions) {\n if (message instanceof Error) {\n super(undefined, {\n cause: { err: message, ...message.cause, ...errorOptions },\n });\n }\n else if (typeof message === \"string\") {\n if (errorOptions instanceof Error) {\n errorOptions = { err: errorOptions, ...errorOptions.cause };\n }\n super(message, errorOptions);\n }\n else {\n super(undefined, message);\n }\n this.name = this.constructor.name;\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/3841\n this.type = this.constructor.type ?? \"AuthError\";\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/3841\n this.kind = this.constructor.kind ?? \"error\";\n Error.captureStackTrace?.(this, this.constructor);\n const url = `https://errors.authjs.dev#${this.type.toLowerCase()}`;\n this.message += `${this.message ? \". \" : \"\"}Read more at ${url}`;\n }\n}\n/**\n * Thrown when the user's sign-in attempt failed.\n * @noInheritDoc\n */\nexport class SignInError extends AuthError {\n}\n/** @internal */\nSignInError.kind = \"signIn\";\n/**\n * One of the database [`Adapter` methods](https://authjs.dev/reference/core/adapters#methods)\n * failed during execution.\n *\n * :::tip\n * If `debug: true` is set, you can check out `[auth][debug]` in the logs to learn more about the failed adapter method execution.\n * @example\n * ```sh\n * [auth][debug]: adapter_getUserByEmail\n * { \"args\": [undefined] }\n * ```\n * :::\n * @noInheritDoc\n */\nexport class AdapterError extends AuthError {\n}\nAdapterError.type = \"AdapterError\";\n/**\n * Thrown when the execution of the [`signIn` callback](https://authjs.dev/reference/core/types#signin) fails\n * or if it returns `false`.\n * @noInheritDoc\n */\nexport class AccessDenied extends AuthError {\n}\nAccessDenied.type = \"AccessDenied\";\n/**\n * This error occurs when the user cannot finish login.\n * Depending on the provider type, this could have happened for multiple reasons.\n *\n * :::tip\n * Check out `[auth][details]` in the logs to know which provider failed.\n * @example\n * ```sh\n * [auth][details]: { \"provider\": \"github\" }\n * ```\n * :::\n *\n * For an [OAuth provider](https://authjs.dev/getting-started/authentication/oauth), possible causes are:\n * - The user denied access to the application\n * - There was an error parsing the OAuth Profile:\n * Check out the provider's `profile` or `userinfo.request` method to make sure\n * it correctly fetches the user's profile.\n * - The `signIn` or `jwt` callback methods threw an uncaught error:\n * Check the callback method implementations.\n *\n * For an [Email provider](https://authjs.dev/getting-started/authentication/email), possible causes are:\n * - The provided email/token combination was invalid/missing:\n * Check if the provider's `sendVerificationRequest` method correctly sends the email.\n * - The provided email/token combination has expired:\n * Ask the user to log in again.\n * - There was an error with the database:\n * Check the database logs.\n *\n * For a [Credentials provider](https://authjs.dev/getting-started/authentication/credentials), possible causes are:\n * - The `authorize` method threw an uncaught error:\n * Check the provider's `authorize` method.\n * - The `signIn` or `jwt` callback methods threw an uncaught error:\n * Check the callback method implementations.\n *\n * :::tip\n * Check out `[auth][cause]` in the error message for more details.\n * It will show the original stack trace.\n * :::\n * @noInheritDoc\n */\nexport class CallbackRouteError extends AuthError {\n}\nCallbackRouteError.type = \"CallbackRouteError\";\n/**\n * Thrown when Auth.js is misconfigured and accidentally tried to require authentication on a custom error page.\n * To prevent an infinite loop, Auth.js will instead render its default error page.\n *\n * To fix this, make sure that the `error` page does not require authentication.\n *\n * Learn more at [Guide: Error pages](https://authjs.dev/guides/pages/error)\n * @noInheritDoc\n */\nexport class ErrorPageLoop extends AuthError {\n}\nErrorPageLoop.type = \"ErrorPageLoop\";\n/**\n * One of the [`events` methods](https://authjs.dev/reference/core/types#eventcallbacks)\n * failed during execution.\n *\n * Make sure that the `events` methods are implemented correctly and uncaught errors are handled.\n *\n * Learn more at [`events`](https://authjs.dev/reference/core/types#eventcallbacks)\n * @noInheritDoc\n */\nexport class EventError extends AuthError {\n}\nEventError.type = \"EventError\";\n/**\n * Thrown when Auth.js is unable to verify a `callbackUrl` value.\n * The browser either disabled cookies or the `callbackUrl` is not a valid URL.\n *\n * Somebody might have tried to manipulate the callback URL that Auth.js uses to redirect the user back to the configured `callbackUrl`/page.\n * This could be a malicious hacker trying to redirect the user to a phishing site.\n * To prevent this, Auth.js checks if the callback URL is valid and throws this error if it is not.\n *\n * There is no action required, but it might be an indicator that somebody is trying to attack your application.\n * @noInheritDoc\n */\nexport class InvalidCallbackUrl extends AuthError {\n}\nInvalidCallbackUrl.type = \"InvalidCallbackUrl\";\n/**\n * Can be thrown from the `authorize` callback of the Credentials provider.\n * When an error occurs during the `authorize` callback, two things can happen:\n * 1. The user is redirected to the signin page, with `error=CredentialsSignin&code=credentials` in the URL. `code` is configurable.\n * 2. If you throw this error in a framework that handles form actions server-side, this error is thrown, instead of redirecting the user, so you'll need to handle.\n * @noInheritDoc\n */\nexport class CredentialsSignin extends SignInError {\n constructor() {\n super(...arguments);\n /**\n * The error code that is set in the `code` query parameter of the redirect URL.\n *\n *\n * ⚠ NOTE: This property is going to be included in the URL, so make sure it does not hint at sensitive errors.\n *\n * The full error is always logged on the server, if you need to debug.\n *\n * Generally, we don't recommend hinting specifically if the user had either a wrong username or password specifically,\n * try rather something like \"Invalid credentials\".\n */\n this.code = \"credentials\";\n }\n}\nCredentialsSignin.type = \"CredentialsSignin\";\n/**\n * One of the configured OAuth or OIDC providers is missing the `authorization`, `token` or `userinfo`, or `issuer` configuration.\n * To perform OAuth or OIDC sign in, at least one of these endpoints is required.\n *\n * Learn more at [`OAuth2Config`](https://authjs.dev/reference/core/providers#oauth2configprofile) or [Guide: OAuth Provider](https://authjs.dev/guides/configuring-oauth-providers)\n * @noInheritDoc\n */\nexport class InvalidEndpoints extends AuthError {\n}\nInvalidEndpoints.type = \"InvalidEndpoints\";\n/**\n * Thrown when a PKCE, state or nonce OAuth check could not be performed.\n * This could happen if the OAuth provider is configured incorrectly or if the browser is blocking cookies.\n *\n * Learn more at [`checks`](https://authjs.dev/reference/core/providers#checks)\n * @noInheritDoc\n */\nexport class InvalidCheck extends AuthError {\n}\nInvalidCheck.type = \"InvalidCheck\";\n/**\n * Logged on the server when Auth.js could not decode or encode a JWT-based (`strategy: \"jwt\"`) session.\n *\n * Possible causes are either a misconfigured `secret` or a malformed JWT or `encode/decode` methods.\n *\n * :::note\n * When this error is logged, the session cookie is destroyed.\n * :::\n *\n * Learn more at [`secret`](https://authjs.dev/reference/core#secret), [`jwt.encode`](https://authjs.dev/reference/core/jwt#encode-1) or [`jwt.decode`](https://authjs.dev/reference/core/jwt#decode-2) for more information.\n * @noInheritDoc\n */\nexport class JWTSessionError extends AuthError {\n}\nJWTSessionError.type = \"JWTSessionError\";\n/**\n * Thrown if Auth.js is misconfigured. This could happen if you configured an Email provider but did not set up a database adapter,\n * or tried using a `strategy: \"database\"` session without a database adapter.\n * In both cases, make sure you either remove the configuration or add the missing adapter.\n *\n * Learn more at [Database Adapters](https://authjs.dev/getting-started/database), [Email provider](https://authjs.dev/getting-started/authentication/email) or [Concept: Database session strategy](https://authjs.dev/concepts/session-strategies#database-session)\n * @noInheritDoc\n */\nexport class MissingAdapter extends AuthError {\n}\nMissingAdapter.type = \"MissingAdapter\";\n/**\n * Thrown similarily to [`MissingAdapter`](https://authjs.dev/reference/core/errors#missingadapter), but only some required methods were missing.\n *\n * Make sure you either remove the configuration or add the missing methods to the adapter.\n *\n * Learn more at [Database Adapters](https://authjs.dev/getting-started/database)\n * @noInheritDoc\n */\nexport class MissingAdapterMethods extends AuthError {\n}\nMissingAdapterMethods.type = \"MissingAdapterMethods\";\n/**\n * Thrown when a Credentials provider is missing the `authorize` configuration.\n * To perform credentials sign in, the `authorize` method is required.\n *\n * Learn more at [Credentials provider](https://authjs.dev/getting-started/authentication/credentials)\n * @noInheritDoc\n */\nexport class MissingAuthorize extends AuthError {\n}\nMissingAuthorize.type = \"MissingAuthorize\";\n/**\n * Auth.js requires a secret or multiple secrets to be set, but none was not found. This is used to encrypt cookies, JWTs and other sensitive data.\n *\n * :::note\n * If you are using a framework like Next.js, we try to automatically infer the secret from the `AUTH_SECRET`, `AUTH_SECRET_1`, etc. environment variables.\n * Alternatively, you can also explicitly set the [`AuthConfig.secret`](https://authjs.dev/reference/core#secret) option.\n * :::\n *\n *\n * :::tip\n * To generate a random string, you can use the Auth.js CLI: `npx auth secret`\n * :::\n * @noInheritDoc\n */\nexport class MissingSecret extends AuthError {\n}\nMissingSecret.type = \"MissingSecret\";\n/**\n * Thrown when an Email address is already associated with an account\n * but the user is trying an OAuth account that is not linked to it.\n *\n * For security reasons, Auth.js does not automatically link OAuth accounts to existing accounts if the user is not signed in.\n *\n * :::tip\n * If you trust the OAuth provider to have verified the user's email address,\n * you can enable automatic account linking by setting [`allowDangerousEmailAccountLinking: true`](https://authjs.dev/reference/core/providers#allowdangerousemailaccountlinking)\n * in the provider configuration.\n * :::\n * @noInheritDoc\n */\nexport class OAuthAccountNotLinked extends SignInError {\n}\nOAuthAccountNotLinked.type = \"OAuthAccountNotLinked\";\n/**\n * Thrown when an OAuth provider returns an error during the sign in process.\n * This could happen for example if the user denied access to the application or there was a configuration error.\n *\n * For a full list of possible reasons, check out the specification [Authorization Code Grant: Error Response](https://www.rfc-editor.org/rfc/rfc6749#section-4.1.2.1)\n * @noInheritDoc\n */\nexport class OAuthCallbackError extends SignInError {\n}\nOAuthCallbackError.type = \"OAuthCallbackError\";\n/**\n * This error occurs during an OAuth sign in attempt when the provider's\n * response could not be parsed. This could for example happen if the provider's API\n * changed, or the [`OAuth2Config.profile`](https://authjs.dev/reference/core/providers#oauth2configprofile) method is not implemented correctly.\n * @noInheritDoc\n */\nexport class OAuthProfileParseError extends AuthError {\n}\nOAuthProfileParseError.type = \"OAuthProfileParseError\";\n/**\n * Logged on the server when Auth.js could not retrieve a session from the database (`strategy: \"database\"`).\n *\n * The database adapter might be misconfigured or the database is not reachable.\n *\n * Learn more at [Concept: Database session strategy](https://authjs.dev/concepts/session-strategies#database)\n * @noInheritDoc\n */\nexport class SessionTokenError extends AuthError {\n}\nSessionTokenError.type = \"SessionTokenError\";\n/**\n * Happens when login by [OAuth](https://authjs.dev/getting-started/authentication/oauth) could not be started.\n *\n * Possible causes are:\n * - The Authorization Server is not compliant with the [OAuth 2.0](https://www.ietf.org/rfc/rfc6749.html) or the [OIDC](https://openid.net/specs/openid-connect-core-1_0.html) specification.\n * Check the details in the error message.\n *\n * :::tip\n * Check out `[auth][details]` in the logs to know which provider failed.\n * @example\n * ```sh\n * [auth][details]: { \"provider\": \"github\" }\n * ```\n * :::\n * @noInheritDoc\n */\nexport class OAuthSignInError extends SignInError {\n}\nOAuthSignInError.type = \"OAuthSignInError\";\n/**\n * Happens when the login by an [Email provider](https://authjs.dev/getting-started/authentication/email) could not be started.\n *\n * Possible causes are:\n * - The email sent from the client is invalid, could not be normalized by [`EmailConfig.normalizeIdentifier`](https://authjs.dev/reference/core/providers/email#normalizeidentifier)\n * - The provided email/token combination has expired:\n * Ask the user to log in again.\n * - There was an error with the database:\n * Check the database logs.\n * @noInheritDoc\n */\nexport class EmailSignInError extends SignInError {\n}\nEmailSignInError.type = \"EmailSignInError\";\n/**\n * Represents an error that occurs during the sign-out process. This error\n * is logged when there are issues in terminating a user's session, either\n * by failing to delete the session from the database (in database session\n * strategies) or encountering issues during other parts of the sign-out\n * process, such as emitting sign-out events or clearing session cookies.\n *\n * The session cookie(s) are emptied even if this error is logged.\n * @noInheritDoc\n */\nexport class SignOutError extends AuthError {\n}\nSignOutError.type = \"SignOutError\";\n/**\n * Auth.js was requested to handle an operation that it does not support.\n *\n * See [`AuthAction`](https://authjs.dev/reference/core/types#authaction) for the supported actions.\n * @noInheritDoc\n */\nexport class UnknownAction extends AuthError {\n}\nUnknownAction.type = \"UnknownAction\";\n/**\n * Thrown when a Credentials provider is present but the JWT strategy (`strategy: \"jwt\"`) is not enabled.\n *\n * Learn more at [`strategy`](https://authjs.dev/reference/core#strategy) or [Credentials provider](https://authjs.dev/getting-started/authentication/credentials)\n * @noInheritDoc\n */\nexport class UnsupportedStrategy extends AuthError {\n}\nUnsupportedStrategy.type = \"UnsupportedStrategy\";\n/**\n * Thrown when an endpoint was incorrectly called without a provider, or with an unsupported provider.\n * @noInheritDoc\n */\nexport class InvalidProvider extends AuthError {\n}\nInvalidProvider.type = \"InvalidProvider\";\n/**\n * Thrown when the `trustHost` option was not set to `true`.\n *\n * Auth.js requires the `trustHost` option to be set to `true` since it's relying on the request headers' `host` value.\n *\n * :::note\n * Official Auth.js libraries might attempt to automatically set the `trustHost` option to `true` if the request is coming from a trusted host on a trusted platform.\n * :::\n *\n * Learn more at [`trustHost`](https://authjs.dev/reference/core#trusthost) or [Guide: Deployment](https://authjs.dev/getting-started/deployment)\n * @noInheritDoc\n */\nexport class UntrustedHost extends AuthError {\n}\nUntrustedHost.type = \"UntrustedHost\";\n/**\n * The user's email/token combination was invalid.\n * This could be because the email/token combination was not found in the database,\n * or because the token has expired. Ask the user to log in again.\n * @noInheritDoc\n */\nexport class Verification extends AuthError {\n}\nVerification.type = \"Verification\";\n/**\n * Error for missing CSRF tokens in client-side actions (`signIn`, `signOut`, `useSession#update`).\n * Thrown when actions lack the double submit cookie, essential for CSRF protection.\n *\n * CSRF ([Cross-Site Request Forgery](https://owasp.org/www-community/attacks/csrf))\n * is an attack leveraging authenticated user credentials for unauthorized actions.\n *\n * Double submit cookie pattern, a CSRF defense, requires matching values in a cookie\n * and request parameter. More on this at [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Glossary/CSRF).\n * @noInheritDoc\n */\nexport class MissingCSRF extends SignInError {\n}\nMissingCSRF.type = \"MissingCSRF\";\nconst clientErrors = new Set([\n \"CredentialsSignin\",\n \"OAuthAccountNotLinked\",\n \"OAuthCallbackError\",\n \"AccessDenied\",\n \"Verification\",\n \"MissingCSRF\",\n \"AccountNotLinked\",\n \"WebAuthnVerificationError\",\n]);\n/**\n * Used to only allow sending a certain subset of errors to the client.\n * Errors are always logged on the server, but to prevent leaking sensitive information,\n * only a subset of errors are sent to the client as-is.\n * @internal\n */\nexport function isClientError(error) {\n if (error instanceof AuthError)\n return clientErrors.has(error.type);\n return false;\n}\n/**\n * Thrown when multiple providers have `enableConditionalUI` set to `true`.\n * Only one provider can have this option enabled at a time.\n * @noInheritDoc\n */\nexport class DuplicateConditionalUI extends AuthError {\n}\nDuplicateConditionalUI.type = \"DuplicateConditionalUI\";\n/**\n * Thrown when a WebAuthn provider has `enableConditionalUI` set to `true` but no formField has `webauthn` in its autocomplete param.\n *\n * The `webauthn` autocomplete param is required for conditional UI to work.\n * @noInheritDoc\n */\nexport class MissingWebAuthnAutocomplete extends AuthError {\n}\nMissingWebAuthnAutocomplete.type = \"MissingWebAuthnAutocomplete\";\n/**\n * Thrown when a WebAuthn provider fails to verify a client response.\n * @noInheritDoc\n */\nexport class WebAuthnVerificationError extends AuthError {\n}\nWebAuthnVerificationError.type = \"WebAuthnVerificationError\";\n/**\n * Thrown when an Email address is already associated with an account\n * but the user is trying an account that is not linked to it.\n *\n * For security reasons, Auth.js does not automatically link accounts to existing accounts if the user is not signed in.\n * @noInheritDoc\n */\nexport class AccountNotLinked extends SignInError {\n}\nAccountNotLinked.type = \"AccountNotLinked\";\n/**\n * Thrown when an experimental feature is used but not enabled.\n * @noInheritDoc\n */\nexport class ExperimentalFeatureNotEnabled extends AuthError {\n}\nExperimentalFeatureNotEnabled.type = \"ExperimentalFeatureNotEnabled\";\n"],"names":[],"mappings":"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","ignoreList":[0]}}, - {"offset": {"line": 599, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next-auth/lib/client.js"],"sourcesContent":["\"use client\";\nimport * as React from \"react\";\nimport { AuthError } from \"@auth/core/errors\";\n/** @todo */\nclass ClientFetchError extends AuthError {\n}\n/** @todo */\nexport class ClientSessionError extends AuthError {\n}\n// ------------------------ Internal ------------------------\n/**\n * If passed 'appContext' via getInitialProps() in _app.js\n * then get the req object from ctx and use that for the\n * req value to allow `fetchData` to\n * work seemlessly in getInitialProps() on server side\n * pages *and* in _app.js.\n * @internal\n */\nexport async function fetchData(path, __NEXTAUTH, logger, req = {}) {\n const url = `${apiBaseUrl(__NEXTAUTH)}/${path}`;\n try {\n const options = {\n headers: {\n \"Content-Type\": \"application/json\",\n ...(req?.headers?.cookie ? { cookie: req.headers.cookie } : {}),\n },\n };\n if (req?.body) {\n options.body = JSON.stringify(req.body);\n options.method = \"POST\";\n }\n const res = await fetch(url, options);\n const data = await res.json();\n if (!res.ok)\n throw data;\n return data;\n }\n catch (error) {\n logger.error(new ClientFetchError(error.message, error));\n return null;\n }\n}\n/** @internal */\nexport function apiBaseUrl(__NEXTAUTH) {\n if (typeof window === \"undefined\") {\n // Return absolute path when called server side\n return `${__NEXTAUTH.baseUrlServer}${__NEXTAUTH.basePathServer}`;\n }\n // Return relative path when called client side\n return __NEXTAUTH.basePath;\n}\n/** @internal */\nexport function useOnline() {\n const [isOnline, setIsOnline] = React.useState(typeof navigator !== \"undefined\" ? navigator.onLine : false);\n const setOnline = () => setIsOnline(true);\n const setOffline = () => setIsOnline(false);\n React.useEffect(() => {\n window.addEventListener(\"online\", setOnline);\n window.addEventListener(\"offline\", setOffline);\n return () => {\n window.removeEventListener(\"online\", setOnline);\n window.removeEventListener(\"offline\", setOffline);\n };\n }, []);\n return isOnline;\n}\n/**\n * Returns the number of seconds elapsed since January 1, 1970 00:00:00 UTC.\n * @internal\n */\nexport function now() {\n return Math.floor(Date.now() / 1000);\n}\n/**\n * Returns an `URL` like object to make requests/redirects from server-side\n * @internal\n */\nexport function parseUrl(url) {\n const defaultUrl = new URL(\"http://localhost:3000/api/auth\");\n if (url && !url.startsWith(\"http\")) {\n url = `https://${url}`;\n }\n const _url = new URL(url || defaultUrl);\n const path = (_url.pathname === \"/\" ? defaultUrl.pathname : _url.pathname)\n // Remove trailing slash\n .replace(/\\/$/, \"\");\n const base = `${_url.origin}${path}`;\n return {\n origin: _url.origin,\n host: _url.host,\n path,\n base,\n toString: () => base,\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AACA;AACA;AAFA;;;AAGA,UAAU,GACV,MAAM,yBAAyB,iMAAS;AACxC;AAEO,MAAM,2BAA2B,iMAAS;AACjD;AAUO,eAAe,UAAU,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,WAAW,YAAY,CAAC,EAAE,MAAM;IAC/C,IAAI;QACA,MAAM,UAAU;YACZ,SAAS;gBACL,gBAAgB;gBAChB,GAAI,KAAK,SAAS,SAAS;oBAAE,QAAQ,IAAI,OAAO,CAAC,MAAM;gBAAC,IAAI,CAAC,CAAC;YAClE;QACJ;QACA,IAAI,KAAK,MAAM;YACX,QAAQ,IAAI,GAAG,KAAK,SAAS,CAAC,IAAI,IAAI;YACtC,QAAQ,MAAM,GAAG;QACrB;QACA,MAAM,MAAM,MAAM,MAAM,KAAK;QAC7B,MAAM,OAAO,MAAM,IAAI,IAAI;QAC3B,IAAI,CAAC,IAAI,EAAE,EACP,MAAM;QACV,OAAO;IACX,EACA,OAAO,OAAO;QACV,OAAO,KAAK,CAAC,IAAI,iBAAiB,MAAM,OAAO,EAAE;QACjD,OAAO;IACX;AACJ;AAEO,SAAS,WAAW,UAAU;IACjC,wCAAmC;QAC/B,+CAA+C;QAC/C,OAAO,GAAG,WAAW,aAAa,GAAG,WAAW,cAAc,EAAE;IACpE;;;AAGJ;AAEO,SAAS;IACZ,MAAM,CAAC,UAAU,YAAY,GAAG,6PAAc,CAAC,OAAO,cAAc,cAAc,UAAU,MAAM,GAAG;IACrG,MAAM,YAAY,IAAM,YAAY;IACpC,MAAM,aAAa,IAAM,YAAY;IACrC,8PAAe,CAAC;QACZ,OAAO,gBAAgB,CAAC,UAAU;QAClC,OAAO,gBAAgB,CAAC,WAAW;QACnC,OAAO;YACH,OAAO,mBAAmB,CAAC,UAAU;YACrC,OAAO,mBAAmB,CAAC,WAAW;QAC1C;IACJ,GAAG,EAAE;IACL,OAAO;AACX;AAKO,SAAS;IACZ,OAAO,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK;AACnC;AAKO,SAAS,SAAS,GAAG;IACxB,MAAM,aAAa,IAAI,IAAI;IAC3B,IAAI,OAAO,CAAC,IAAI,UAAU,CAAC,SAAS;QAChC,MAAM,CAAC,QAAQ,EAAE,KAAK;IAC1B;IACA,MAAM,OAAO,IAAI,IAAI,OAAO;IAC5B,MAAM,OAAO,CAAC,KAAK,QAAQ,KAAK,MAAM,WAAW,QAAQ,GAAG,KAAK,QAAQ,CACrE,wBAAwB;KACvB,OAAO,CAAC,OAAO;IACpB,MAAM,OAAO,GAAG,KAAK,MAAM,GAAG,MAAM;IACpC,OAAO;QACH,QAAQ,KAAK,MAAM;QACnB,MAAM,KAAK,IAAI;QACf;QACA;QACA,UAAU,IAAM;IACpB;AACJ","ignoreList":[0]}}, - {"offset": {"line": 692, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next-auth/react.js"],"sourcesContent":["/**\n *\n * NextAuth.js is the official integration of Auth.js for Next.js applications. It supports both\n * [Client Components](https://nextjs.org/docs/app/building-your-application/rendering/client-components) and the\n * [Pages Router](https://nextjs.org/docs/pages). It includes methods for signing in, signing out, hooks, and a React\n * Context provider to wrap your application and make session data available anywhere.\n *\n * For use in [Server Actions](https://nextjs.org/docs/app/api-reference/functions/server-actions), check out [these methods](https://authjs.dev/guides/upgrade-to-v5#methods)\n *\n * @module react\n */\n\"use client\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { apiBaseUrl, ClientSessionError, fetchData, now, parseUrl, useOnline, } from \"./lib/client.js\";\n// This behaviour mirrors the default behaviour for getting the site name that\n// happens server side in server/index.js\n// 1. An empty value is legitimate when the code is being invoked client side as\n// relative URLs are valid in that context and so defaults to empty.\n// 2. When invoked server side the value is picked up from an environment\n// variable and defaults to 'http://localhost:3000'.\nexport const __NEXTAUTH = {\n baseUrl: parseUrl(process.env.NEXTAUTH_URL ?? process.env.VERCEL_URL).origin,\n basePath: parseUrl(process.env.NEXTAUTH_URL).path,\n baseUrlServer: parseUrl(process.env.NEXTAUTH_URL_INTERNAL ??\n process.env.NEXTAUTH_URL ??\n process.env.VERCEL_URL).origin,\n basePathServer: parseUrl(process.env.NEXTAUTH_URL_INTERNAL ?? process.env.NEXTAUTH_URL).path,\n _lastSync: 0,\n _session: undefined,\n _getSession: () => { },\n};\n// https://github.com/nextauthjs/next-auth/pull/10762\nlet broadcastChannel = null;\nfunction getNewBroadcastChannel() {\n if (typeof BroadcastChannel === \"undefined\") {\n return {\n postMessage: () => { },\n addEventListener: () => { },\n removeEventListener: () => { },\n name: \"next-auth\",\n onmessage: null,\n onmessageerror: null,\n close: () => { },\n dispatchEvent: () => false,\n };\n }\n return new BroadcastChannel(\"next-auth\");\n}\nfunction broadcast() {\n if (broadcastChannel === null) {\n broadcastChannel = getNewBroadcastChannel();\n }\n return broadcastChannel;\n}\n// TODO:\nconst logger = {\n debug: console.debug,\n error: console.error,\n warn: console.warn,\n};\nexport const SessionContext = React.createContext?.(undefined);\n/**\n * React Hook that gives you access to the logged in user's session data and lets you modify it.\n *\n * :::info\n * `useSession` is for client-side use only and when using [Next.js App Router (`app/`)](https://nextjs.org/blog/next-13-4#nextjs-app-router) you should prefer the `auth()` export.\n * :::\n */\nexport function useSession(options) {\n if (!SessionContext) {\n throw new Error(\"React Context is unavailable in Server Components\");\n }\n // @ts-expect-error Satisfy TS if branch on line below\n const value = React.useContext(SessionContext);\n if (!value && process.env.NODE_ENV !== \"production\") {\n throw new Error(\"[next-auth]: `useSession` must be wrapped in a \");\n }\n const { required, onUnauthenticated } = options ?? {};\n const requiredAndNotLoading = required && value.status === \"unauthenticated\";\n React.useEffect(() => {\n if (requiredAndNotLoading) {\n const url = `${__NEXTAUTH.basePath}/signin?${new URLSearchParams({\n error: \"SessionRequired\",\n callbackUrl: window.location.href,\n })}`;\n if (onUnauthenticated)\n onUnauthenticated();\n else\n window.location.href = url;\n }\n }, [requiredAndNotLoading, onUnauthenticated]);\n if (requiredAndNotLoading) {\n return {\n data: value.data,\n update: value.update,\n status: \"loading\",\n };\n }\n return value;\n}\nexport async function getSession(params) {\n const session = await fetchData(\"session\", __NEXTAUTH, logger, params);\n if (params?.broadcast ?? true) {\n // https://github.com/nextauthjs/next-auth/pull/11470\n getNewBroadcastChannel().postMessage({\n event: \"session\",\n data: { trigger: \"getSession\" },\n });\n }\n return session;\n}\n/**\n * Returns the current Cross-Site Request Forgery Token (CSRF Token)\n * required to make requests that changes state. (e.g. signing in or out, or updating the session).\n *\n * [CSRF Prevention: Double Submit Cookie](https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#double-submit-cookie)\n */\nexport async function getCsrfToken() {\n const response = await fetchData(\"csrf\", __NEXTAUTH, logger);\n return response?.csrfToken ?? \"\";\n}\nexport async function getProviders() {\n return fetchData(\"providers\", __NEXTAUTH, logger);\n}\nexport async function signIn(provider, options, authorizationParams) {\n const { callbackUrl, ...rest } = options ?? {};\n const { redirect = true, redirectTo = callbackUrl ?? window.location.href, ...signInParams } = rest;\n const baseUrl = apiBaseUrl(__NEXTAUTH);\n const providers = await getProviders();\n if (!providers) {\n const url = `${baseUrl}/error`;\n window.location.href = url;\n return; // TODO: Return error if `redirect: false`\n }\n if (!provider || !providers[provider]) {\n const url = `${baseUrl}/signin?${new URLSearchParams({\n callbackUrl: redirectTo,\n })}`;\n window.location.href = url;\n return; // TODO: Return error if `redirect: false`\n }\n const providerType = providers[provider].type;\n if (providerType === \"webauthn\") {\n // TODO: Add docs link with explanation\n throw new TypeError([\n `Provider id \"${provider}\" refers to a WebAuthn provider.`,\n 'Please use `import { signIn } from \"next-auth/webauthn\"` instead.',\n ].join(\"\\n\"));\n }\n const signInUrl = `${baseUrl}/${providerType === \"credentials\" ? \"callback\" : \"signin\"}/${provider}`;\n const csrfToken = await getCsrfToken();\n const res = await fetch(`${signInUrl}?${new URLSearchParams(authorizationParams)}`, {\n method: \"post\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"X-Auth-Return-Redirect\": \"1\",\n },\n body: new URLSearchParams({\n ...signInParams,\n csrfToken,\n callbackUrl: redirectTo,\n }),\n });\n const data = await res.json();\n if (redirect) {\n const url = data.url ?? redirectTo;\n window.location.href = url;\n // If url contains a hash, the browser does not reload the page. We reload manually\n if (url.includes(\"#\"))\n window.location.reload();\n return;\n }\n const error = new URL(data.url).searchParams.get(\"error\") ?? undefined;\n const code = new URL(data.url).searchParams.get(\"code\") ?? undefined;\n if (res.ok) {\n await __NEXTAUTH._getSession({ event: \"storage\" });\n }\n return {\n error,\n code,\n status: res.status,\n ok: res.ok,\n url: error ? null : data.url,\n };\n}\nexport async function signOut(options) {\n const { redirect = true, redirectTo = options?.callbackUrl ?? window.location.href, } = options ?? {};\n const baseUrl = apiBaseUrl(__NEXTAUTH);\n const csrfToken = await getCsrfToken();\n const res = await fetch(`${baseUrl}/signout`, {\n method: \"post\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"X-Auth-Return-Redirect\": \"1\",\n },\n body: new URLSearchParams({ csrfToken, callbackUrl: redirectTo }),\n });\n const data = await res.json();\n broadcast().postMessage({ event: \"session\", data: { trigger: \"signout\" } });\n if (redirect) {\n const url = data.url ?? redirectTo;\n window.location.href = url;\n // If url contains a hash, the browser does not reload the page. We reload manually\n if (url.includes(\"#\"))\n window.location.reload();\n return;\n }\n await __NEXTAUTH._getSession({ event: \"storage\" });\n return data;\n}\n/**\n * [React Context](https://react.dev/learn/passing-data-deeply-with-context) provider to wrap the app (`pages/`) to make session data available anywhere.\n *\n * When used, the session state is automatically synchronized across all open tabs/windows and they are all updated whenever they gain or lose focus\n * or the state changes (e.g. a user signs in or out) when {@link SessionProviderProps.refetchOnWindowFocus} is `true`.\n *\n * :::info\n * `SessionProvider` is for client-side use only and when using [Next.js App Router (`app/`)](https://nextjs.org/blog/next-13-4#nextjs-app-router) you should prefer the `auth()` export.\n * :::\n */\nexport function SessionProvider(props) {\n if (!SessionContext) {\n throw new Error(\"React Context is unavailable in Server Components\");\n }\n const { children, basePath, refetchInterval, refetchWhenOffline } = props;\n if (basePath)\n __NEXTAUTH.basePath = basePath;\n /**\n * If session was `null`, there was an attempt to fetch it,\n * but it failed, but we still treat it as a valid initial value.\n */\n const hasInitialSession = props.session !== undefined;\n /** If session was passed, initialize as already synced */\n __NEXTAUTH._lastSync = hasInitialSession ? now() : 0;\n const [session, setSession] = React.useState(() => {\n if (hasInitialSession)\n __NEXTAUTH._session = props.session;\n return props.session;\n });\n /** If session was passed, initialize as not loading */\n const [loading, setLoading] = React.useState(!hasInitialSession);\n React.useEffect(() => {\n __NEXTAUTH._getSession = async ({ event } = {}) => {\n try {\n const storageEvent = event === \"storage\";\n // We should always update if we don't have a client session yet\n // or if there are events from other tabs/windows\n if (storageEvent || __NEXTAUTH._session === undefined) {\n __NEXTAUTH._lastSync = now();\n __NEXTAUTH._session = await getSession({\n broadcast: !storageEvent,\n });\n setSession(__NEXTAUTH._session);\n return;\n }\n if (\n // If there is no time defined for when a session should be considered\n // stale, then it's okay to use the value we have until an event is\n // triggered which updates it\n !event ||\n // If the client doesn't have a session then we don't need to call\n // the server to check if it does (if they have signed in via another\n // tab or window that will come through as a \"stroage\" event\n // event anyway)\n __NEXTAUTH._session === null ||\n // Bail out early if the client session is not stale yet\n now() < __NEXTAUTH._lastSync) {\n return;\n }\n // An event or session staleness occurred, update the client session.\n __NEXTAUTH._lastSync = now();\n __NEXTAUTH._session = await getSession();\n setSession(__NEXTAUTH._session);\n }\n catch (error) {\n logger.error(new ClientSessionError(error.message, error));\n }\n finally {\n setLoading(false);\n }\n };\n __NEXTAUTH._getSession();\n return () => {\n __NEXTAUTH._lastSync = 0;\n __NEXTAUTH._session = undefined;\n __NEXTAUTH._getSession = () => { };\n };\n }, []);\n React.useEffect(() => {\n const handle = () => __NEXTAUTH._getSession({ event: \"storage\" });\n // Listen for storage events and update session if event fired from\n // another window (but suppress firing another event to avoid a loop)\n // Fetch new session data but tell it to not to fire another event to\n // avoid an infinite loop.\n // Note: We could pass session data through and do something like\n // `setData(message.data)` but that can cause problems depending\n // on how the session object is being used in the client; it is\n // more robust to have each window/tab fetch it's own copy of the\n // session object rather than share it across instances.\n broadcast().addEventListener(\"message\", handle);\n return () => broadcast().removeEventListener(\"message\", handle);\n }, []);\n React.useEffect(() => {\n const { refetchOnWindowFocus = true } = props;\n // Listen for when the page is visible, if the user switches tabs\n // and makes our tab visible again, re-fetch the session, but only if\n // this feature is not disabled.\n const visibilityHandler = () => {\n if (refetchOnWindowFocus && document.visibilityState === \"visible\")\n __NEXTAUTH._getSession({ event: \"visibilitychange\" });\n };\n document.addEventListener(\"visibilitychange\", visibilityHandler, false);\n return () => document.removeEventListener(\"visibilitychange\", visibilityHandler, false);\n }, [props.refetchOnWindowFocus]);\n const isOnline = useOnline();\n // TODO: Flip this behavior in next major version\n const shouldRefetch = refetchWhenOffline !== false || isOnline;\n React.useEffect(() => {\n if (refetchInterval && shouldRefetch) {\n const refetchIntervalTimer = setInterval(() => {\n if (__NEXTAUTH._session) {\n __NEXTAUTH._getSession({ event: \"poll\" });\n }\n }, refetchInterval * 1000);\n return () => clearInterval(refetchIntervalTimer);\n }\n }, [refetchInterval, shouldRefetch]);\n const value = React.useMemo(() => ({\n data: session,\n status: loading\n ? \"loading\"\n : session\n ? \"authenticated\"\n : \"unauthenticated\",\n async update(data) {\n if (loading)\n return;\n setLoading(true);\n const newSession = await fetchData(\"session\", __NEXTAUTH, logger, typeof data === \"undefined\"\n ? undefined\n : { body: { csrfToken: await getCsrfToken(), data } });\n setLoading(false);\n if (newSession) {\n setSession(newSession);\n broadcast().postMessage({\n event: \"session\",\n data: { trigger: \"getSession\" },\n });\n }\n return newSession;\n },\n }), [session, loading]);\n return (\n // @ts-expect-error\n _jsx(SessionContext.Provider, { value: value, children: children }));\n}\n"],"names":[],"mappings":"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","ignoreList":[0]}}] + {"offset": {"line": 10, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/api.ts"],"sourcesContent":["import { BookProject, UserProfile } from './types';\r\n\r\nconst API_BASE_URL = '/api';\r\n\r\n// --- API CLIENT ---\r\n\r\nconst api = {\r\n async request(endpoint: string, options: RequestInit = {}) {\r\n const url = `${API_BASE_URL}${endpoint}`;\r\n\r\n const headers: Record = {\r\n 'Content-Type': 'application/json',\r\n ...options.headers as Record,\r\n };\r\n\r\n const response = await fetch(url, {\r\n ...options,\r\n headers,\r\n });\r\n\r\n if (!response.ok) {\r\n let errorMsg = `Error ${response.status}: ${response.statusText}`;\r\n try {\r\n const errorJson = await response.json();\r\n if (errorJson.error) errorMsg = errorJson.error;\r\n if (errorJson.message) errorMsg = errorJson.message;\r\n } catch {\r\n // Ignore json parse error\r\n }\r\n throw new Error(errorMsg);\r\n }\r\n\r\n if (response.status === 204) return null;\r\n return response.json();\r\n },\r\n\r\n // --- AUTH ---\r\n auth: {\r\n async register(email: string, password: string, name: string) {\r\n return api.request('/auth/register', {\r\n method: 'POST',\r\n body: JSON.stringify({ email, password, name }),\r\n });\r\n },\r\n },\r\n\r\n // --- PROJECTS ---\r\n projects: {\r\n async list() {\r\n return api.request('/projects');\r\n },\r\n\r\n async get(id: string) {\r\n return api.request(`/projects/${id}`);\r\n },\r\n\r\n async create(data: { title: string; author: string; settings?: any }) {\r\n return api.request('/projects', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/projects/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/projects/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n\r\n async syncWorkflow(id: string, data: { nodes: any[]; connections: any[] }) {\r\n return api.request(`/projects/${id}/workflow`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n },\r\n\r\n // --- CHAPTERS ---\r\n chapters: {\r\n async create(data: { projectId: string; title?: string; content?: string; summary?: string; orderIndex?: number }) {\r\n return api.request('/chapters', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/chapters/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/chapters/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n },\r\n\r\n // --- ENTITIES ---\r\n entities: {\r\n async create(data: { projectId: string; type: string; name?: string; description?: string; details?: string; attributes?: any; customValues?: any }) {\r\n return api.request('/entities', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/entities/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/entities/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n },\r\n\r\n // --- IDEAS ---\r\n ideas: {\r\n async create(data: { projectId: string; title?: string; description?: string; status?: string; category?: string }) {\r\n return api.request('/ideas', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/ideas/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/ideas/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n },\r\n\r\n // --- AI (server-side via API routes) ---\r\n ai: {\r\n async generate(project: BookProject, chapterId: string, prompt: string, user: UserProfile) {\r\n return api.request<{ text: string; type: 'draft' | 'reflection' }>('/ai/generate', {\r\n method: 'POST',\r\n body: JSON.stringify({ project, chapterId, prompt, user }),\r\n });\r\n },\r\n\r\n async transform(text: string, mode: string, context: string, user: UserProfile) {\r\n const res = await api.request<{ text: string }>('/ai/transform', {\r\n method: 'POST',\r\n body: JSON.stringify({ text, mode, context, user }),\r\n });\r\n return res.text;\r\n },\r\n },\r\n};\r\n\r\nexport default api;\r\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 178, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useAuth.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect, useCallback } from 'react';\r\nimport { signIn, signOut, useSession } from 'next-auth/react';\r\nimport { UserProfile } from '@/lib/types';\r\nimport api from '@/lib/api';\r\n\r\nexport const useAuth = () => {\r\n const { data: session, status } = useSession();\r\n const [user, setUser] = useState(null);\r\n const loading = status === 'loading';\r\n\r\n // Sync session to UserProfile\r\n useEffect(() => {\r\n if (session?.user) {\r\n setUser({\r\n id: session.user.id || '',\r\n email: session.user.email || '',\r\n name: session.user.name || 'User',\r\n subscription: { plan: 'free', startDate: Date.now(), status: 'active' },\r\n usage: { aiActionsCurrent: 0, aiActionsLimit: 100, projectsLimit: 3 },\r\n preferences: { theme: 'light', dailyWordGoal: 500, language: 'fr' },\r\n stats: { totalWordsWritten: 0, writingStreak: 0, lastWriteDate: 0 },\r\n });\r\n } else if (status === 'unauthenticated') {\r\n setUser(null);\r\n }\r\n }, [session, status]);\r\n\r\n const login = useCallback(async (email: string, password: string) => {\r\n const result = await signIn('credentials', {\r\n email,\r\n password,\r\n redirect: false,\r\n });\r\n\r\n if (result?.error) {\r\n throw new Error(result.error === 'CredentialsSignin'\r\n ? 'Email ou mot de passe incorrect'\r\n : result.error\r\n );\r\n }\r\n }, []);\r\n\r\n const signup = useCallback(async (email: string, password: string, name: string) => {\r\n // 1. Register via API\r\n await api.auth.register(email, password, name);\r\n\r\n // 2. Auto-login\r\n const result = await signIn('credentials', {\r\n email,\r\n password,\r\n redirect: false,\r\n });\r\n\r\n if (result?.error) {\r\n throw new Error('Compte créé mais erreur de connexion automatique');\r\n }\r\n }, []);\r\n\r\n const logout = useCallback(async () => {\r\n await signOut({ redirect: false });\r\n setUser(null);\r\n }, []);\r\n\r\n const incrementUsage = useCallback(() => {\r\n if (user) {\r\n setUser({\r\n ...user,\r\n usage: { ...user.usage, aiActionsCurrent: user.usage.aiActionsCurrent + 1 },\r\n });\r\n }\r\n }, [user]);\r\n\r\n return { user, login, signup, logout, incrementUsage, loading };\r\n};\r\n"],"names":[],"mappings":";;;;AAEA;AACA;AAEA;AALA;;;;AAOO,MAAM,UAAU;IACnB,MAAM,EAAE,MAAM,OAAO,EAAE,MAAM,EAAE,GAAG,IAAA,+LAAU;IAC5C,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAA,6PAAQ,EAAqB;IACrD,MAAM,UAAU,WAAW;IAE3B,8BAA8B;IAC9B,IAAA,8PAAS,EAAC;QACN,IAAI,SAAS,MAAM;YACf,QAAQ;gBACJ,IAAI,QAAQ,IAAI,CAAC,EAAE,IAAI;gBACvB,OAAO,QAAQ,IAAI,CAAC,KAAK,IAAI;gBAC7B,MAAM,QAAQ,IAAI,CAAC,IAAI,IAAI;gBAC3B,cAAc;oBAAE,MAAM;oBAAQ,WAAW,KAAK,GAAG;oBAAI,QAAQ;gBAAS;gBACtE,OAAO;oBAAE,kBAAkB;oBAAG,gBAAgB;oBAAK,eAAe;gBAAE;gBACpE,aAAa;oBAAE,OAAO;oBAAS,eAAe;oBAAK,UAAU;gBAAK;gBAClE,OAAO;oBAAE,mBAAmB;oBAAG,eAAe;oBAAG,eAAe;gBAAE;YACtE;QACJ,OAAO,IAAI,WAAW,mBAAmB;YACrC,QAAQ;QACZ;IACJ,GAAG;QAAC;QAAS;KAAO;IAEpB,MAAM,QAAQ,IAAA,gQAAW,EAAC,OAAO,OAAe;QAC5C,MAAM,SAAS,MAAM,IAAA,2LAAM,EAAC,eAAe;YACvC;YACA;YACA,UAAU;QACd;QAEA,IAAI,QAAQ,OAAO;YACf,MAAM,IAAI,MAAM,OAAO,KAAK,KAAK,sBAC3B,oCACA,OAAO,KAAK;QAEtB;IACJ,GAAG,EAAE;IAEL,MAAM,SAAS,IAAA,gQAAW,EAAC,OAAO,OAAe,UAAkB;QAC/D,sBAAsB;QACtB,MAAM,wKAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,UAAU;QAEzC,gBAAgB;QAChB,MAAM,SAAS,MAAM,IAAA,2LAAM,EAAC,eAAe;YACvC;YACA;YACA,UAAU;QACd;QAEA,IAAI,QAAQ,OAAO;YACf,MAAM,IAAI,MAAM;QACpB;IACJ,GAAG,EAAE;IAEL,MAAM,SAAS,IAAA,gQAAW,EAAC;QACvB,MAAM,IAAA,4LAAO,EAAC;YAAE,UAAU;QAAM;QAChC,QAAQ;IACZ,GAAG,EAAE;IAEL,MAAM,iBAAiB,IAAA,gQAAW,EAAC;QAC/B,IAAI,MAAM;YACN,QAAQ;gBACJ,GAAG,IAAI;gBACP,OAAO;oBAAE,GAAG,KAAK,KAAK;oBAAE,kBAAkB,KAAK,KAAK,CAAC,gBAAgB,GAAG;gBAAE;YAC9E;QACJ;IACJ,GAAG;QAAC;KAAK;IAET,OAAO;QAAE;QAAM;QAAO;QAAQ;QAAQ;QAAgB;IAAQ;AAClE"}}, + {"offset": {"line": 283, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/providers/AuthProvider.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { createContext, useContext } from 'react';\r\nimport { SessionProvider } from 'next-auth/react';\r\nimport { useAuth } from '@/hooks/useAuth';\r\n\r\nconst AuthContext = createContext(null);\r\n\r\nfunction AuthInner({ children }: { children: React.ReactNode }) {\r\n const auth = useAuth();\r\n return {children};\r\n}\r\n\r\nexport const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport function useAuthContext() {\r\n return useContext(AuthContext);\r\n}\r\n"],"names":[],"mappings":";;;;;;;AAEA;AACA;AACA;AAJA;;;;;AAMA,MAAM,4BAAc,IAAA,kQAAa,EAAM;AAEvC,SAAS,UAAU,EAAE,QAAQ,EAAiC;IAC1D,MAAM,OAAO,IAAA,8KAAO;IACpB,qBAAO,0RAAC,YAAY,QAAQ;QAAC,OAAO;kBAAO;;;;;;AAC/C;AAEO,MAAM,eAAwD,CAAC,EAAE,QAAQ,EAAE;IAC9E,qBACI,0RAAC,oMAAe;kBACZ,cAAA,0RAAC;sBAAW;;;;;;;;;;;AAGxB;AAEO,SAAS;IACZ,OAAO,IAAA,+PAAU,EAAC;AACtB"}}, + {"offset": {"line": 332, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/module.compiled.js"],"sourcesContent":["if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/app-page/module.js')\n} else {\n if (process.env.__NEXT_EXPERIMENTAL_REACT) {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.prod.js')\n }\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.prod.js')\n }\n }\n }\n}\n"],"names":["process","env","NEXT_RUNTIME","module","exports","require","__NEXT_EXPERIMENTAL_REACT","NODE_ENV","TURBOPACK"],"mappings":"AAAA,IAAIA,QAAQC,GAAG,CAACC,YAAY,KAAK,QAAQ;;KAElC;IACL,IAAIF,QAAQC,GAAG,CAACK,yBAAyB,EAAE;;SAcpC;QACL,IAAIN,QAAQC,GAAG,CAACM,QAAQ,KAAK,WAAe;YAC1C,IAAIP,QAAQC,GAAG,CAACO,SAAS,eAAE;gBACzBL,OAAOC,OAAO,GAAGC,QAAQ;YAC3B,OAAO;;QAGT,OAAO;;IAOT;AACF","ignoreList":[0]}}, + {"offset": {"line": 351, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactJsxDevRuntime\n"],"names":["module","exports","require","vendored","ReactJsxDevRuntime"],"mappings":"AAAAA,OAAOC,OAAO,GACZC,QAAQ,0JACRC,QAAQ,CAAC,YAAY,CAAEC,kBAAkB","ignoreList":[0]}}, + {"offset": {"line": 356, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.React\n"],"names":["module","exports","require","vendored","React"],"mappings":"AAAAA,OAAOC,OAAO,GACZC,QAAQ,0JACRC,QAAQ,CAAC,YAAY,CAAEC,KAAK","ignoreList":[0]}}, + {"offset": {"line": 361, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactJsxRuntime\n"],"names":["module","exports","require","vendored","ReactJsxRuntime"],"mappings":"AAAAA,OAAOC,OAAO,GACZC,QAAQ,0JACRC,QAAQ,CAAC,YAAY,CAAEC,eAAe","ignoreList":[0]}}, + {"offset": {"line": 366, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/%40auth/core/errors.js"],"sourcesContent":["/**\n * Base error class for all Auth.js errors.\n * It's optimized to be printed in the server logs in a nicely formatted way\n * via the [`logger.error`](https://authjs.dev/reference/core#logger) option.\n * @noInheritDoc\n */\nexport class AuthError extends Error {\n /** @internal */\n constructor(message, errorOptions) {\n if (message instanceof Error) {\n super(undefined, {\n cause: { err: message, ...message.cause, ...errorOptions },\n });\n }\n else if (typeof message === \"string\") {\n if (errorOptions instanceof Error) {\n errorOptions = { err: errorOptions, ...errorOptions.cause };\n }\n super(message, errorOptions);\n }\n else {\n super(undefined, message);\n }\n this.name = this.constructor.name;\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/3841\n this.type = this.constructor.type ?? \"AuthError\";\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/3841\n this.kind = this.constructor.kind ?? \"error\";\n Error.captureStackTrace?.(this, this.constructor);\n const url = `https://errors.authjs.dev#${this.type.toLowerCase()}`;\n this.message += `${this.message ? \". \" : \"\"}Read more at ${url}`;\n }\n}\n/**\n * Thrown when the user's sign-in attempt failed.\n * @noInheritDoc\n */\nexport class SignInError extends AuthError {\n}\n/** @internal */\nSignInError.kind = \"signIn\";\n/**\n * One of the database [`Adapter` methods](https://authjs.dev/reference/core/adapters#methods)\n * failed during execution.\n *\n * :::tip\n * If `debug: true` is set, you can check out `[auth][debug]` in the logs to learn more about the failed adapter method execution.\n * @example\n * ```sh\n * [auth][debug]: adapter_getUserByEmail\n * { \"args\": [undefined] }\n * ```\n * :::\n * @noInheritDoc\n */\nexport class AdapterError extends AuthError {\n}\nAdapterError.type = \"AdapterError\";\n/**\n * Thrown when the execution of the [`signIn` callback](https://authjs.dev/reference/core/types#signin) fails\n * or if it returns `false`.\n * @noInheritDoc\n */\nexport class AccessDenied extends AuthError {\n}\nAccessDenied.type = \"AccessDenied\";\n/**\n * This error occurs when the user cannot finish login.\n * Depending on the provider type, this could have happened for multiple reasons.\n *\n * :::tip\n * Check out `[auth][details]` in the logs to know which provider failed.\n * @example\n * ```sh\n * [auth][details]: { \"provider\": \"github\" }\n * ```\n * :::\n *\n * For an [OAuth provider](https://authjs.dev/getting-started/authentication/oauth), possible causes are:\n * - The user denied access to the application\n * - There was an error parsing the OAuth Profile:\n * Check out the provider's `profile` or `userinfo.request` method to make sure\n * it correctly fetches the user's profile.\n * - The `signIn` or `jwt` callback methods threw an uncaught error:\n * Check the callback method implementations.\n *\n * For an [Email provider](https://authjs.dev/getting-started/authentication/email), possible causes are:\n * - The provided email/token combination was invalid/missing:\n * Check if the provider's `sendVerificationRequest` method correctly sends the email.\n * - The provided email/token combination has expired:\n * Ask the user to log in again.\n * - There was an error with the database:\n * Check the database logs.\n *\n * For a [Credentials provider](https://authjs.dev/getting-started/authentication/credentials), possible causes are:\n * - The `authorize` method threw an uncaught error:\n * Check the provider's `authorize` method.\n * - The `signIn` or `jwt` callback methods threw an uncaught error:\n * Check the callback method implementations.\n *\n * :::tip\n * Check out `[auth][cause]` in the error message for more details.\n * It will show the original stack trace.\n * :::\n * @noInheritDoc\n */\nexport class CallbackRouteError extends AuthError {\n}\nCallbackRouteError.type = \"CallbackRouteError\";\n/**\n * Thrown when Auth.js is misconfigured and accidentally tried to require authentication on a custom error page.\n * To prevent an infinite loop, Auth.js will instead render its default error page.\n *\n * To fix this, make sure that the `error` page does not require authentication.\n *\n * Learn more at [Guide: Error pages](https://authjs.dev/guides/pages/error)\n * @noInheritDoc\n */\nexport class ErrorPageLoop extends AuthError {\n}\nErrorPageLoop.type = \"ErrorPageLoop\";\n/**\n * One of the [`events` methods](https://authjs.dev/reference/core/types#eventcallbacks)\n * failed during execution.\n *\n * Make sure that the `events` methods are implemented correctly and uncaught errors are handled.\n *\n * Learn more at [`events`](https://authjs.dev/reference/core/types#eventcallbacks)\n * @noInheritDoc\n */\nexport class EventError extends AuthError {\n}\nEventError.type = \"EventError\";\n/**\n * Thrown when Auth.js is unable to verify a `callbackUrl` value.\n * The browser either disabled cookies or the `callbackUrl` is not a valid URL.\n *\n * Somebody might have tried to manipulate the callback URL that Auth.js uses to redirect the user back to the configured `callbackUrl`/page.\n * This could be a malicious hacker trying to redirect the user to a phishing site.\n * To prevent this, Auth.js checks if the callback URL is valid and throws this error if it is not.\n *\n * There is no action required, but it might be an indicator that somebody is trying to attack your application.\n * @noInheritDoc\n */\nexport class InvalidCallbackUrl extends AuthError {\n}\nInvalidCallbackUrl.type = \"InvalidCallbackUrl\";\n/**\n * Can be thrown from the `authorize` callback of the Credentials provider.\n * When an error occurs during the `authorize` callback, two things can happen:\n * 1. The user is redirected to the signin page, with `error=CredentialsSignin&code=credentials` in the URL. `code` is configurable.\n * 2. If you throw this error in a framework that handles form actions server-side, this error is thrown, instead of redirecting the user, so you'll need to handle.\n * @noInheritDoc\n */\nexport class CredentialsSignin extends SignInError {\n constructor() {\n super(...arguments);\n /**\n * The error code that is set in the `code` query parameter of the redirect URL.\n *\n *\n * ⚠ NOTE: This property is going to be included in the URL, so make sure it does not hint at sensitive errors.\n *\n * The full error is always logged on the server, if you need to debug.\n *\n * Generally, we don't recommend hinting specifically if the user had either a wrong username or password specifically,\n * try rather something like \"Invalid credentials\".\n */\n this.code = \"credentials\";\n }\n}\nCredentialsSignin.type = \"CredentialsSignin\";\n/**\n * One of the configured OAuth or OIDC providers is missing the `authorization`, `token` or `userinfo`, or `issuer` configuration.\n * To perform OAuth or OIDC sign in, at least one of these endpoints is required.\n *\n * Learn more at [`OAuth2Config`](https://authjs.dev/reference/core/providers#oauth2configprofile) or [Guide: OAuth Provider](https://authjs.dev/guides/configuring-oauth-providers)\n * @noInheritDoc\n */\nexport class InvalidEndpoints extends AuthError {\n}\nInvalidEndpoints.type = \"InvalidEndpoints\";\n/**\n * Thrown when a PKCE, state or nonce OAuth check could not be performed.\n * This could happen if the OAuth provider is configured incorrectly or if the browser is blocking cookies.\n *\n * Learn more at [`checks`](https://authjs.dev/reference/core/providers#checks)\n * @noInheritDoc\n */\nexport class InvalidCheck extends AuthError {\n}\nInvalidCheck.type = \"InvalidCheck\";\n/**\n * Logged on the server when Auth.js could not decode or encode a JWT-based (`strategy: \"jwt\"`) session.\n *\n * Possible causes are either a misconfigured `secret` or a malformed JWT or `encode/decode` methods.\n *\n * :::note\n * When this error is logged, the session cookie is destroyed.\n * :::\n *\n * Learn more at [`secret`](https://authjs.dev/reference/core#secret), [`jwt.encode`](https://authjs.dev/reference/core/jwt#encode-1) or [`jwt.decode`](https://authjs.dev/reference/core/jwt#decode-2) for more information.\n * @noInheritDoc\n */\nexport class JWTSessionError extends AuthError {\n}\nJWTSessionError.type = \"JWTSessionError\";\n/**\n * Thrown if Auth.js is misconfigured. This could happen if you configured an Email provider but did not set up a database adapter,\n * or tried using a `strategy: \"database\"` session without a database adapter.\n * In both cases, make sure you either remove the configuration or add the missing adapter.\n *\n * Learn more at [Database Adapters](https://authjs.dev/getting-started/database), [Email provider](https://authjs.dev/getting-started/authentication/email) or [Concept: Database session strategy](https://authjs.dev/concepts/session-strategies#database-session)\n * @noInheritDoc\n */\nexport class MissingAdapter extends AuthError {\n}\nMissingAdapter.type = \"MissingAdapter\";\n/**\n * Thrown similarily to [`MissingAdapter`](https://authjs.dev/reference/core/errors#missingadapter), but only some required methods were missing.\n *\n * Make sure you either remove the configuration or add the missing methods to the adapter.\n *\n * Learn more at [Database Adapters](https://authjs.dev/getting-started/database)\n * @noInheritDoc\n */\nexport class MissingAdapterMethods extends AuthError {\n}\nMissingAdapterMethods.type = \"MissingAdapterMethods\";\n/**\n * Thrown when a Credentials provider is missing the `authorize` configuration.\n * To perform credentials sign in, the `authorize` method is required.\n *\n * Learn more at [Credentials provider](https://authjs.dev/getting-started/authentication/credentials)\n * @noInheritDoc\n */\nexport class MissingAuthorize extends AuthError {\n}\nMissingAuthorize.type = \"MissingAuthorize\";\n/**\n * Auth.js requires a secret or multiple secrets to be set, but none was not found. This is used to encrypt cookies, JWTs and other sensitive data.\n *\n * :::note\n * If you are using a framework like Next.js, we try to automatically infer the secret from the `AUTH_SECRET`, `AUTH_SECRET_1`, etc. environment variables.\n * Alternatively, you can also explicitly set the [`AuthConfig.secret`](https://authjs.dev/reference/core#secret) option.\n * :::\n *\n *\n * :::tip\n * To generate a random string, you can use the Auth.js CLI: `npx auth secret`\n * :::\n * @noInheritDoc\n */\nexport class MissingSecret extends AuthError {\n}\nMissingSecret.type = \"MissingSecret\";\n/**\n * Thrown when an Email address is already associated with an account\n * but the user is trying an OAuth account that is not linked to it.\n *\n * For security reasons, Auth.js does not automatically link OAuth accounts to existing accounts if the user is not signed in.\n *\n * :::tip\n * If you trust the OAuth provider to have verified the user's email address,\n * you can enable automatic account linking by setting [`allowDangerousEmailAccountLinking: true`](https://authjs.dev/reference/core/providers#allowdangerousemailaccountlinking)\n * in the provider configuration.\n * :::\n * @noInheritDoc\n */\nexport class OAuthAccountNotLinked extends SignInError {\n}\nOAuthAccountNotLinked.type = \"OAuthAccountNotLinked\";\n/**\n * Thrown when an OAuth provider returns an error during the sign in process.\n * This could happen for example if the user denied access to the application or there was a configuration error.\n *\n * For a full list of possible reasons, check out the specification [Authorization Code Grant: Error Response](https://www.rfc-editor.org/rfc/rfc6749#section-4.1.2.1)\n * @noInheritDoc\n */\nexport class OAuthCallbackError extends SignInError {\n}\nOAuthCallbackError.type = \"OAuthCallbackError\";\n/**\n * This error occurs during an OAuth sign in attempt when the provider's\n * response could not be parsed. This could for example happen if the provider's API\n * changed, or the [`OAuth2Config.profile`](https://authjs.dev/reference/core/providers#oauth2configprofile) method is not implemented correctly.\n * @noInheritDoc\n */\nexport class OAuthProfileParseError extends AuthError {\n}\nOAuthProfileParseError.type = \"OAuthProfileParseError\";\n/**\n * Logged on the server when Auth.js could not retrieve a session from the database (`strategy: \"database\"`).\n *\n * The database adapter might be misconfigured or the database is not reachable.\n *\n * Learn more at [Concept: Database session strategy](https://authjs.dev/concepts/session-strategies#database)\n * @noInheritDoc\n */\nexport class SessionTokenError extends AuthError {\n}\nSessionTokenError.type = \"SessionTokenError\";\n/**\n * Happens when login by [OAuth](https://authjs.dev/getting-started/authentication/oauth) could not be started.\n *\n * Possible causes are:\n * - The Authorization Server is not compliant with the [OAuth 2.0](https://www.ietf.org/rfc/rfc6749.html) or the [OIDC](https://openid.net/specs/openid-connect-core-1_0.html) specification.\n * Check the details in the error message.\n *\n * :::tip\n * Check out `[auth][details]` in the logs to know which provider failed.\n * @example\n * ```sh\n * [auth][details]: { \"provider\": \"github\" }\n * ```\n * :::\n * @noInheritDoc\n */\nexport class OAuthSignInError extends SignInError {\n}\nOAuthSignInError.type = \"OAuthSignInError\";\n/**\n * Happens when the login by an [Email provider](https://authjs.dev/getting-started/authentication/email) could not be started.\n *\n * Possible causes are:\n * - The email sent from the client is invalid, could not be normalized by [`EmailConfig.normalizeIdentifier`](https://authjs.dev/reference/core/providers/email#normalizeidentifier)\n * - The provided email/token combination has expired:\n * Ask the user to log in again.\n * - There was an error with the database:\n * Check the database logs.\n * @noInheritDoc\n */\nexport class EmailSignInError extends SignInError {\n}\nEmailSignInError.type = \"EmailSignInError\";\n/**\n * Represents an error that occurs during the sign-out process. This error\n * is logged when there are issues in terminating a user's session, either\n * by failing to delete the session from the database (in database session\n * strategies) or encountering issues during other parts of the sign-out\n * process, such as emitting sign-out events or clearing session cookies.\n *\n * The session cookie(s) are emptied even if this error is logged.\n * @noInheritDoc\n */\nexport class SignOutError extends AuthError {\n}\nSignOutError.type = \"SignOutError\";\n/**\n * Auth.js was requested to handle an operation that it does not support.\n *\n * See [`AuthAction`](https://authjs.dev/reference/core/types#authaction) for the supported actions.\n * @noInheritDoc\n */\nexport class UnknownAction extends AuthError {\n}\nUnknownAction.type = \"UnknownAction\";\n/**\n * Thrown when a Credentials provider is present but the JWT strategy (`strategy: \"jwt\"`) is not enabled.\n *\n * Learn more at [`strategy`](https://authjs.dev/reference/core#strategy) or [Credentials provider](https://authjs.dev/getting-started/authentication/credentials)\n * @noInheritDoc\n */\nexport class UnsupportedStrategy extends AuthError {\n}\nUnsupportedStrategy.type = \"UnsupportedStrategy\";\n/**\n * Thrown when an endpoint was incorrectly called without a provider, or with an unsupported provider.\n * @noInheritDoc\n */\nexport class InvalidProvider extends AuthError {\n}\nInvalidProvider.type = \"InvalidProvider\";\n/**\n * Thrown when the `trustHost` option was not set to `true`.\n *\n * Auth.js requires the `trustHost` option to be set to `true` since it's relying on the request headers' `host` value.\n *\n * :::note\n * Official Auth.js libraries might attempt to automatically set the `trustHost` option to `true` if the request is coming from a trusted host on a trusted platform.\n * :::\n *\n * Learn more at [`trustHost`](https://authjs.dev/reference/core#trusthost) or [Guide: Deployment](https://authjs.dev/getting-started/deployment)\n * @noInheritDoc\n */\nexport class UntrustedHost extends AuthError {\n}\nUntrustedHost.type = \"UntrustedHost\";\n/**\n * The user's email/token combination was invalid.\n * This could be because the email/token combination was not found in the database,\n * or because the token has expired. Ask the user to log in again.\n * @noInheritDoc\n */\nexport class Verification extends AuthError {\n}\nVerification.type = \"Verification\";\n/**\n * Error for missing CSRF tokens in client-side actions (`signIn`, `signOut`, `useSession#update`).\n * Thrown when actions lack the double submit cookie, essential for CSRF protection.\n *\n * CSRF ([Cross-Site Request Forgery](https://owasp.org/www-community/attacks/csrf))\n * is an attack leveraging authenticated user credentials for unauthorized actions.\n *\n * Double submit cookie pattern, a CSRF defense, requires matching values in a cookie\n * and request parameter. More on this at [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Glossary/CSRF).\n * @noInheritDoc\n */\nexport class MissingCSRF extends SignInError {\n}\nMissingCSRF.type = \"MissingCSRF\";\nconst clientErrors = new Set([\n \"CredentialsSignin\",\n \"OAuthAccountNotLinked\",\n \"OAuthCallbackError\",\n \"AccessDenied\",\n \"Verification\",\n \"MissingCSRF\",\n \"AccountNotLinked\",\n \"WebAuthnVerificationError\",\n]);\n/**\n * Used to only allow sending a certain subset of errors to the client.\n * Errors are always logged on the server, but to prevent leaking sensitive information,\n * only a subset of errors are sent to the client as-is.\n * @internal\n */\nexport function isClientError(error) {\n if (error instanceof AuthError)\n return clientErrors.has(error.type);\n return false;\n}\n/**\n * Thrown when multiple providers have `enableConditionalUI` set to `true`.\n * Only one provider can have this option enabled at a time.\n * @noInheritDoc\n */\nexport class DuplicateConditionalUI extends AuthError {\n}\nDuplicateConditionalUI.type = \"DuplicateConditionalUI\";\n/**\n * Thrown when a WebAuthn provider has `enableConditionalUI` set to `true` but no formField has `webauthn` in its autocomplete param.\n *\n * The `webauthn` autocomplete param is required for conditional UI to work.\n * @noInheritDoc\n */\nexport class MissingWebAuthnAutocomplete extends AuthError {\n}\nMissingWebAuthnAutocomplete.type = \"MissingWebAuthnAutocomplete\";\n/**\n * Thrown when a WebAuthn provider fails to verify a client response.\n * @noInheritDoc\n */\nexport class WebAuthnVerificationError extends AuthError {\n}\nWebAuthnVerificationError.type = \"WebAuthnVerificationError\";\n/**\n * Thrown when an Email address is already associated with an account\n * but the user is trying an account that is not linked to it.\n *\n * For security reasons, Auth.js does not automatically link accounts to existing accounts if the user is not signed in.\n * @noInheritDoc\n */\nexport class AccountNotLinked extends SignInError {\n}\nAccountNotLinked.type = \"AccountNotLinked\";\n/**\n * Thrown when an experimental feature is used but not enabled.\n * @noInheritDoc\n */\nexport class ExperimentalFeatureNotEnabled extends AuthError {\n}\nExperimentalFeatureNotEnabled.type = \"ExperimentalFeatureNotEnabled\";\n"],"names":[],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 605, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next-auth/lib/client.js"],"sourcesContent":["\"use client\";\nimport * as React from \"react\";\nimport { AuthError } from \"@auth/core/errors\";\n/** @todo */\nclass ClientFetchError extends AuthError {\n}\n/** @todo */\nexport class ClientSessionError extends AuthError {\n}\n// ------------------------ Internal ------------------------\n/**\n * If passed 'appContext' via getInitialProps() in _app.js\n * then get the req object from ctx and use that for the\n * req value to allow `fetchData` to\n * work seemlessly in getInitialProps() on server side\n * pages *and* in _app.js.\n * @internal\n */\nexport async function fetchData(path, __NEXTAUTH, logger, req = {}) {\n const url = `${apiBaseUrl(__NEXTAUTH)}/${path}`;\n try {\n const options = {\n headers: {\n \"Content-Type\": \"application/json\",\n ...(req?.headers?.cookie ? { cookie: req.headers.cookie } : {}),\n },\n };\n if (req?.body) {\n options.body = JSON.stringify(req.body);\n options.method = \"POST\";\n }\n const res = await fetch(url, options);\n const data = await res.json();\n if (!res.ok)\n throw data;\n return data;\n }\n catch (error) {\n logger.error(new ClientFetchError(error.message, error));\n return null;\n }\n}\n/** @internal */\nexport function apiBaseUrl(__NEXTAUTH) {\n if (typeof window === \"undefined\") {\n // Return absolute path when called server side\n return `${__NEXTAUTH.baseUrlServer}${__NEXTAUTH.basePathServer}`;\n }\n // Return relative path when called client side\n return __NEXTAUTH.basePath;\n}\n/** @internal */\nexport function useOnline() {\n const [isOnline, setIsOnline] = React.useState(typeof navigator !== \"undefined\" ? navigator.onLine : false);\n const setOnline = () => setIsOnline(true);\n const setOffline = () => setIsOnline(false);\n React.useEffect(() => {\n window.addEventListener(\"online\", setOnline);\n window.addEventListener(\"offline\", setOffline);\n return () => {\n window.removeEventListener(\"online\", setOnline);\n window.removeEventListener(\"offline\", setOffline);\n };\n }, []);\n return isOnline;\n}\n/**\n * Returns the number of seconds elapsed since January 1, 1970 00:00:00 UTC.\n * @internal\n */\nexport function now() {\n return Math.floor(Date.now() / 1000);\n}\n/**\n * Returns an `URL` like object to make requests/redirects from server-side\n * @internal\n */\nexport function parseUrl(url) {\n const defaultUrl = new URL(\"http://localhost:3000/api/auth\");\n if (url && !url.startsWith(\"http\")) {\n url = `https://${url}`;\n }\n const _url = new URL(url || defaultUrl);\n const path = (_url.pathname === \"/\" ? defaultUrl.pathname : _url.pathname)\n // Remove trailing slash\n .replace(/\\/$/, \"\");\n const base = `${_url.origin}${path}`;\n return {\n origin: _url.origin,\n host: _url.host,\n path,\n base,\n toString: () => base,\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AACA;AACA;AAFA;;;AAGA,UAAU,GACV,MAAM,yBAAyB,iMAAS;AACxC;AAEO,MAAM,2BAA2B,iMAAS;AACjD;AAUO,eAAe,UAAU,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,WAAW,YAAY,CAAC,EAAE,MAAM;IAC/C,IAAI;QACA,MAAM,UAAU;YACZ,SAAS;gBACL,gBAAgB;gBAChB,GAAI,KAAK,SAAS,SAAS;oBAAE,QAAQ,IAAI,OAAO,CAAC,MAAM;gBAAC,IAAI,CAAC,CAAC;YAClE;QACJ;QACA,IAAI,KAAK,MAAM;YACX,QAAQ,IAAI,GAAG,KAAK,SAAS,CAAC,IAAI,IAAI;YACtC,QAAQ,MAAM,GAAG;QACrB;QACA,MAAM,MAAM,MAAM,MAAM,KAAK;QAC7B,MAAM,OAAO,MAAM,IAAI,IAAI;QAC3B,IAAI,CAAC,IAAI,EAAE,EACP,MAAM;QACV,OAAO;IACX,EACA,OAAO,OAAO;QACV,OAAO,KAAK,CAAC,IAAI,iBAAiB,MAAM,OAAO,EAAE;QACjD,OAAO;IACX;AACJ;AAEO,SAAS,WAAW,UAAU;IACjC,wCAAmC;QAC/B,+CAA+C;QAC/C,OAAO,GAAG,WAAW,aAAa,GAAG,WAAW,cAAc,EAAE;IACpE;;;AAGJ;AAEO,SAAS;IACZ,MAAM,CAAC,UAAU,YAAY,GAAG,6PAAc,CAAC,OAAO,cAAc,cAAc,UAAU,MAAM,GAAG;IACrG,MAAM,YAAY,IAAM,YAAY;IACpC,MAAM,aAAa,IAAM,YAAY;IACrC,8PAAe,CAAC;QACZ,OAAO,gBAAgB,CAAC,UAAU;QAClC,OAAO,gBAAgB,CAAC,WAAW;QACnC,OAAO;YACH,OAAO,mBAAmB,CAAC,UAAU;YACrC,OAAO,mBAAmB,CAAC,WAAW;QAC1C;IACJ,GAAG,EAAE;IACL,OAAO;AACX;AAKO,SAAS;IACZ,OAAO,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK;AACnC;AAKO,SAAS,SAAS,GAAG;IACxB,MAAM,aAAa,IAAI,IAAI;IAC3B,IAAI,OAAO,CAAC,IAAI,UAAU,CAAC,SAAS;QAChC,MAAM,CAAC,QAAQ,EAAE,KAAK;IAC1B;IACA,MAAM,OAAO,IAAI,IAAI,OAAO;IAC5B,MAAM,OAAO,CAAC,KAAK,QAAQ,KAAK,MAAM,WAAW,QAAQ,GAAG,KAAK,QAAQ,CACrE,wBAAwB;KACvB,OAAO,CAAC,OAAO;IACpB,MAAM,OAAO,GAAG,KAAK,MAAM,GAAG,MAAM;IACpC,OAAO;QACH,QAAQ,KAAK,MAAM;QACnB,MAAM,KAAK,IAAI;QACf;QACA;QACA,UAAU,IAAM;IACpB;AACJ","ignoreList":[0]}}, + {"offset": {"line": 698, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next-auth/react.js"],"sourcesContent":["/**\n *\n * NextAuth.js is the official integration of Auth.js for Next.js applications. It supports both\n * [Client Components](https://nextjs.org/docs/app/building-your-application/rendering/client-components) and the\n * [Pages Router](https://nextjs.org/docs/pages). It includes methods for signing in, signing out, hooks, and a React\n * Context provider to wrap your application and make session data available anywhere.\n *\n * For use in [Server Actions](https://nextjs.org/docs/app/api-reference/functions/server-actions), check out [these methods](https://authjs.dev/guides/upgrade-to-v5#methods)\n *\n * @module react\n */\n\"use client\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { apiBaseUrl, ClientSessionError, fetchData, now, parseUrl, useOnline, } from \"./lib/client.js\";\n// This behaviour mirrors the default behaviour for getting the site name that\n// happens server side in server/index.js\n// 1. An empty value is legitimate when the code is being invoked client side as\n// relative URLs are valid in that context and so defaults to empty.\n// 2. When invoked server side the value is picked up from an environment\n// variable and defaults to 'http://localhost:3000'.\nexport const __NEXTAUTH = {\n baseUrl: parseUrl(process.env.NEXTAUTH_URL ?? process.env.VERCEL_URL).origin,\n basePath: parseUrl(process.env.NEXTAUTH_URL).path,\n baseUrlServer: parseUrl(process.env.NEXTAUTH_URL_INTERNAL ??\n process.env.NEXTAUTH_URL ??\n process.env.VERCEL_URL).origin,\n basePathServer: parseUrl(process.env.NEXTAUTH_URL_INTERNAL ?? process.env.NEXTAUTH_URL).path,\n _lastSync: 0,\n _session: undefined,\n _getSession: () => { },\n};\n// https://github.com/nextauthjs/next-auth/pull/10762\nlet broadcastChannel = null;\nfunction getNewBroadcastChannel() {\n if (typeof BroadcastChannel === \"undefined\") {\n return {\n postMessage: () => { },\n addEventListener: () => { },\n removeEventListener: () => { },\n name: \"next-auth\",\n onmessage: null,\n onmessageerror: null,\n close: () => { },\n dispatchEvent: () => false,\n };\n }\n return new BroadcastChannel(\"next-auth\");\n}\nfunction broadcast() {\n if (broadcastChannel === null) {\n broadcastChannel = getNewBroadcastChannel();\n }\n return broadcastChannel;\n}\n// TODO:\nconst logger = {\n debug: console.debug,\n error: console.error,\n warn: console.warn,\n};\nexport const SessionContext = React.createContext?.(undefined);\n/**\n * React Hook that gives you access to the logged in user's session data and lets you modify it.\n *\n * :::info\n * `useSession` is for client-side use only and when using [Next.js App Router (`app/`)](https://nextjs.org/blog/next-13-4#nextjs-app-router) you should prefer the `auth()` export.\n * :::\n */\nexport function useSession(options) {\n if (!SessionContext) {\n throw new Error(\"React Context is unavailable in Server Components\");\n }\n // @ts-expect-error Satisfy TS if branch on line below\n const value = React.useContext(SessionContext);\n if (!value && process.env.NODE_ENV !== \"production\") {\n throw new Error(\"[next-auth]: `useSession` must be wrapped in a \");\n }\n const { required, onUnauthenticated } = options ?? {};\n const requiredAndNotLoading = required && value.status === \"unauthenticated\";\n React.useEffect(() => {\n if (requiredAndNotLoading) {\n const url = `${__NEXTAUTH.basePath}/signin?${new URLSearchParams({\n error: \"SessionRequired\",\n callbackUrl: window.location.href,\n })}`;\n if (onUnauthenticated)\n onUnauthenticated();\n else\n window.location.href = url;\n }\n }, [requiredAndNotLoading, onUnauthenticated]);\n if (requiredAndNotLoading) {\n return {\n data: value.data,\n update: value.update,\n status: \"loading\",\n };\n }\n return value;\n}\nexport async function getSession(params) {\n const session = await fetchData(\"session\", __NEXTAUTH, logger, params);\n if (params?.broadcast ?? true) {\n // https://github.com/nextauthjs/next-auth/pull/11470\n getNewBroadcastChannel().postMessage({\n event: \"session\",\n data: { trigger: \"getSession\" },\n });\n }\n return session;\n}\n/**\n * Returns the current Cross-Site Request Forgery Token (CSRF Token)\n * required to make requests that changes state. (e.g. signing in or out, or updating the session).\n *\n * [CSRF Prevention: Double Submit Cookie](https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#double-submit-cookie)\n */\nexport async function getCsrfToken() {\n const response = await fetchData(\"csrf\", __NEXTAUTH, logger);\n return response?.csrfToken ?? \"\";\n}\nexport async function getProviders() {\n return fetchData(\"providers\", __NEXTAUTH, logger);\n}\nexport async function signIn(provider, options, authorizationParams) {\n const { callbackUrl, ...rest } = options ?? {};\n const { redirect = true, redirectTo = callbackUrl ?? window.location.href, ...signInParams } = rest;\n const baseUrl = apiBaseUrl(__NEXTAUTH);\n const providers = await getProviders();\n if (!providers) {\n const url = `${baseUrl}/error`;\n window.location.href = url;\n return; // TODO: Return error if `redirect: false`\n }\n if (!provider || !providers[provider]) {\n const url = `${baseUrl}/signin?${new URLSearchParams({\n callbackUrl: redirectTo,\n })}`;\n window.location.href = url;\n return; // TODO: Return error if `redirect: false`\n }\n const providerType = providers[provider].type;\n if (providerType === \"webauthn\") {\n // TODO: Add docs link with explanation\n throw new TypeError([\n `Provider id \"${provider}\" refers to a WebAuthn provider.`,\n 'Please use `import { signIn } from \"next-auth/webauthn\"` instead.',\n ].join(\"\\n\"));\n }\n const signInUrl = `${baseUrl}/${providerType === \"credentials\" ? \"callback\" : \"signin\"}/${provider}`;\n const csrfToken = await getCsrfToken();\n const res = await fetch(`${signInUrl}?${new URLSearchParams(authorizationParams)}`, {\n method: \"post\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"X-Auth-Return-Redirect\": \"1\",\n },\n body: new URLSearchParams({\n ...signInParams,\n csrfToken,\n callbackUrl: redirectTo,\n }),\n });\n const data = await res.json();\n if (redirect) {\n const url = data.url ?? redirectTo;\n window.location.href = url;\n // If url contains a hash, the browser does not reload the page. We reload manually\n if (url.includes(\"#\"))\n window.location.reload();\n return;\n }\n const error = new URL(data.url).searchParams.get(\"error\") ?? undefined;\n const code = new URL(data.url).searchParams.get(\"code\") ?? undefined;\n if (res.ok) {\n await __NEXTAUTH._getSession({ event: \"storage\" });\n }\n return {\n error,\n code,\n status: res.status,\n ok: res.ok,\n url: error ? null : data.url,\n };\n}\nexport async function signOut(options) {\n const { redirect = true, redirectTo = options?.callbackUrl ?? window.location.href, } = options ?? {};\n const baseUrl = apiBaseUrl(__NEXTAUTH);\n const csrfToken = await getCsrfToken();\n const res = await fetch(`${baseUrl}/signout`, {\n method: \"post\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"X-Auth-Return-Redirect\": \"1\",\n },\n body: new URLSearchParams({ csrfToken, callbackUrl: redirectTo }),\n });\n const data = await res.json();\n broadcast().postMessage({ event: \"session\", data: { trigger: \"signout\" } });\n if (redirect) {\n const url = data.url ?? redirectTo;\n window.location.href = url;\n // If url contains a hash, the browser does not reload the page. We reload manually\n if (url.includes(\"#\"))\n window.location.reload();\n return;\n }\n await __NEXTAUTH._getSession({ event: \"storage\" });\n return data;\n}\n/**\n * [React Context](https://react.dev/learn/passing-data-deeply-with-context) provider to wrap the app (`pages/`) to make session data available anywhere.\n *\n * When used, the session state is automatically synchronized across all open tabs/windows and they are all updated whenever they gain or lose focus\n * or the state changes (e.g. a user signs in or out) when {@link SessionProviderProps.refetchOnWindowFocus} is `true`.\n *\n * :::info\n * `SessionProvider` is for client-side use only and when using [Next.js App Router (`app/`)](https://nextjs.org/blog/next-13-4#nextjs-app-router) you should prefer the `auth()` export.\n * :::\n */\nexport function SessionProvider(props) {\n if (!SessionContext) {\n throw new Error(\"React Context is unavailable in Server Components\");\n }\n const { children, basePath, refetchInterval, refetchWhenOffline } = props;\n if (basePath)\n __NEXTAUTH.basePath = basePath;\n /**\n * If session was `null`, there was an attempt to fetch it,\n * but it failed, but we still treat it as a valid initial value.\n */\n const hasInitialSession = props.session !== undefined;\n /** If session was passed, initialize as already synced */\n __NEXTAUTH._lastSync = hasInitialSession ? now() : 0;\n const [session, setSession] = React.useState(() => {\n if (hasInitialSession)\n __NEXTAUTH._session = props.session;\n return props.session;\n });\n /** If session was passed, initialize as not loading */\n const [loading, setLoading] = React.useState(!hasInitialSession);\n React.useEffect(() => {\n __NEXTAUTH._getSession = async ({ event } = {}) => {\n try {\n const storageEvent = event === \"storage\";\n // We should always update if we don't have a client session yet\n // or if there are events from other tabs/windows\n if (storageEvent || __NEXTAUTH._session === undefined) {\n __NEXTAUTH._lastSync = now();\n __NEXTAUTH._session = await getSession({\n broadcast: !storageEvent,\n });\n setSession(__NEXTAUTH._session);\n return;\n }\n if (\n // If there is no time defined for when a session should be considered\n // stale, then it's okay to use the value we have until an event is\n // triggered which updates it\n !event ||\n // If the client doesn't have a session then we don't need to call\n // the server to check if it does (if they have signed in via another\n // tab or window that will come through as a \"stroage\" event\n // event anyway)\n __NEXTAUTH._session === null ||\n // Bail out early if the client session is not stale yet\n now() < __NEXTAUTH._lastSync) {\n return;\n }\n // An event or session staleness occurred, update the client session.\n __NEXTAUTH._lastSync = now();\n __NEXTAUTH._session = await getSession();\n setSession(__NEXTAUTH._session);\n }\n catch (error) {\n logger.error(new ClientSessionError(error.message, error));\n }\n finally {\n setLoading(false);\n }\n };\n __NEXTAUTH._getSession();\n return () => {\n __NEXTAUTH._lastSync = 0;\n __NEXTAUTH._session = undefined;\n __NEXTAUTH._getSession = () => { };\n };\n }, []);\n React.useEffect(() => {\n const handle = () => __NEXTAUTH._getSession({ event: \"storage\" });\n // Listen for storage events and update session if event fired from\n // another window (but suppress firing another event to avoid a loop)\n // Fetch new session data but tell it to not to fire another event to\n // avoid an infinite loop.\n // Note: We could pass session data through and do something like\n // `setData(message.data)` but that can cause problems depending\n // on how the session object is being used in the client; it is\n // more robust to have each window/tab fetch it's own copy of the\n // session object rather than share it across instances.\n broadcast().addEventListener(\"message\", handle);\n return () => broadcast().removeEventListener(\"message\", handle);\n }, []);\n React.useEffect(() => {\n const { refetchOnWindowFocus = true } = props;\n // Listen for when the page is visible, if the user switches tabs\n // and makes our tab visible again, re-fetch the session, but only if\n // this feature is not disabled.\n const visibilityHandler = () => {\n if (refetchOnWindowFocus && document.visibilityState === \"visible\")\n __NEXTAUTH._getSession({ event: \"visibilitychange\" });\n };\n document.addEventListener(\"visibilitychange\", visibilityHandler, false);\n return () => document.removeEventListener(\"visibilitychange\", visibilityHandler, false);\n }, [props.refetchOnWindowFocus]);\n const isOnline = useOnline();\n // TODO: Flip this behavior in next major version\n const shouldRefetch = refetchWhenOffline !== false || isOnline;\n React.useEffect(() => {\n if (refetchInterval && shouldRefetch) {\n const refetchIntervalTimer = setInterval(() => {\n if (__NEXTAUTH._session) {\n __NEXTAUTH._getSession({ event: \"poll\" });\n }\n }, refetchInterval * 1000);\n return () => clearInterval(refetchIntervalTimer);\n }\n }, [refetchInterval, shouldRefetch]);\n const value = React.useMemo(() => ({\n data: session,\n status: loading\n ? \"loading\"\n : session\n ? \"authenticated\"\n : \"unauthenticated\",\n async update(data) {\n if (loading)\n return;\n setLoading(true);\n const newSession = await fetchData(\"session\", __NEXTAUTH, logger, typeof data === \"undefined\"\n ? undefined\n : { body: { csrfToken: await getCsrfToken(), data } });\n setLoading(false);\n if (newSession) {\n setSession(newSession);\n broadcast().postMessage({\n event: \"session\",\n data: { trigger: \"getSession\" },\n });\n }\n return newSession;\n },\n }), [session, loading]);\n return (\n // @ts-expect-error\n _jsx(SessionContext.Provider, { value: value, children: children }));\n}\n"],"names":[],"mappings":"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","ignoreList":[0]}}] } \ No newline at end of file diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_06c48656._.js b/.next/dev/static/chunks/Documents_00 - projet_plumeia_06c48656._.js index e8418c6..0b3ad6c 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_06c48656._.js +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_06c48656._.js @@ -80,7 +80,7 @@ const renderTextWithLinks = (text, entities, onNavigate)=>{ children: parts }, void 0, false); }; -const StoryNode = /*#__PURE__*/ __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$__["default"].memo(_s(({ node, isSelected, isEditing, activeColorPickerId, entities, savedColors, onMouseDown, onMouseUp, onStartConnection, onUpdate, onSetEditing, onToggleColorPicker, onSaveColor, onNavigateToEntity, onInputFocus, onInputCheckAutocomplete, onKeyDownInInput })=>{ +const StoryNode = /*#__PURE__*/ __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$__["default"].memo(_s(({ node, isSelected, isEditing, isDragging, activeColorPickerId, entities, savedColors, onMouseDown, onMouseUp, onStartConnection, onUpdate, onSetEditing, onToggleColorPicker, onSaveColor, onNavigateToEntity, onInputFocus, onInputCheckAutocomplete, onKeyDownInInput })=>{ _s(); const [showTypePicker, setShowTypePicker] = (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 richDescription = (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$__["useMemo"])({ @@ -93,7 +93,8 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ onNavigateToEntity ]); 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"])("div", { - className: `absolute flex flex-col rounded-xl shadow-sm border transition-all z-10 group + className: `absolute flex flex-col rounded-xl shadow-sm border z-10 group + ${isDragging ? '' : 'transition-all'} ${isSelected ? 'ring-2 ring-indigo-500 shadow-lg scale-[1.01]' : 'border-slate-200 hover:shadow-md'} `, style: { @@ -105,13 +106,14 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ }, onMouseDown: (e)=>onMouseDown(e, node.id), onMouseUp: (e)=>onMouseUp(e, node.id), + onDoubleClick: (e)=>e.stopPropagation(), onMouseLeave: ()=>setShowTypePicker(false), 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"])("div", { className: "h-1.5 rounded-t-xl bg-black/5 w-full cursor-grab active:cursor-grabbing" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 117, + lineNumber: 120, columnNumber: 13 }, ("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", { @@ -130,7 +132,7 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ autoFocus: true }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 122, + lineNumber: 125, columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "font-bold text-slate-800 cursor-text truncate mr-6 text-sm", @@ -138,7 +140,7 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ children: node.title }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 130, + lineNumber: 133, columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { @@ -151,12 +153,12 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ size: 14 }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 142, + lineNumber: 145, columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 138, + lineNumber: 141, columnNumber: 21 }, ("TURBOPACK compile-time value", void 0)), activeColorPickerId === node.id && /*#__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", { @@ -175,12 +177,12 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ } }, color, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 149, + lineNumber: 152, columnNumber: 37 }, ("TURBOPACK compile-time value", void 0))) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 147, + lineNumber: 150, columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -197,12 +199,12 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ }) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 159, + lineNumber: 162, columnNumber: 37 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 158, + lineNumber: 161, columnNumber: 33 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { @@ -211,25 +213,25 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ children: "+ SAUVER" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 166, + lineNumber: 169, columnNumber: 33 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 157, + lineNumber: 160, columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 146, + lineNumber: 149, columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 120, + lineNumber: 123, columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -244,7 +246,7 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ onBlur: ()=>onSetEditing(null) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 179, + lineNumber: 182, columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: `w-full h-full text-xs text-slate-600 leading-relaxed p-1 cursor-text whitespace-pre-wrap ${node.type === 'dialogue' ? 'font-mono bg-indigo-50/30 rounded pl-2 border-l-2 border-indigo-200' : ''}`, @@ -252,12 +254,12 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ children: richDescription }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 189, + lineNumber: 192, columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 177, + lineNumber: 180, columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -282,12 +284,12 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ className: "text-slate-500" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 206, + lineNumber: 209, columnNumber: 33 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 201, + lineNumber: 204, columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { @@ -305,12 +307,12 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ className: "text-amber-500" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 213, + lineNumber: 216, columnNumber: 33 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 208, + lineNumber: 211, columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { @@ -328,18 +330,18 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ className: "text-blue-500" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 220, + lineNumber: 223, columnNumber: 33 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 215, + lineNumber: 218, columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 200, + lineNumber: 203, columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { @@ -354,7 +356,7 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ className: "text-slate-500" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 229, + lineNumber: 232, columnNumber: 51 }, ("TURBOPACK compile-time value", void 0)), node.type === 'action' && /*#__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$zap$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Zap$3e$__["Zap"], { @@ -362,7 +364,7 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ className: "text-amber-500" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 230, + lineNumber: 233, columnNumber: 52 }, ("TURBOPACK compile-time value", void 0)), node.type === 'dialogue' && /*#__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$message$2d$circle$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__MessageCircle$3e$__["MessageCircle"], { @@ -370,25 +372,25 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ className: "text-blue-500" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 231, + lineNumber: 234, columnNumber: 54 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 225, + lineNumber: 228, columnNumber: 21 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 198, + lineNumber: 201, columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 119, + lineNumber: 122, columnNumber: 13 }, ("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", { @@ -398,22 +400,22 @@ const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$ size: 12 }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 240, + lineNumber: 243, columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 236, + lineNumber: 239, columnNumber: 13 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 102, + lineNumber: 103, columnNumber: 9 }, ("TURBOPACK compile-time value", void 0)); }, "8yNvnjGOL794S5OUWPkg1xgktL0="), (prev, next)=>{ - return prev.node === next.node && prev.isSelected === next.isSelected && prev.isEditing === next.isEditing && prev.activeColorPickerId === next.activeColorPickerId && prev.entities === next.entities; + return prev.node === next.node && prev.isSelected === next.isSelected && prev.isEditing === next.isEditing && prev.isDragging === next.isDragging && prev.activeColorPickerId === next.activeColorPickerId && prev.entities === next.entities; }); _c = StoryNode; const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ @@ -713,12 +715,15 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ containerRef.current.scrollTop = scrollStart.y - dy; return; } - const scrollLeft = containerRef.current?.scrollLeft || 0; - const scrollTop = containerRef.current?.scrollTop || 0; - setMousePos({ - x: clientX - rect.left + scrollLeft, - y: clientY - rect.top + scrollTop - }); + // Only update mousePos when connecting (drawing a line), not during node drag + if (connectingNodeId) { + const scrollLeft = containerRef.current?.scrollLeft || 0; + const scrollTop = containerRef.current?.scrollTop || 0; + setMousePos({ + x: clientX - rect.left + scrollLeft, + y: clientY - rect.top + scrollTop + }); + } if (isDragging) { if (rafRef.current) return; rafRef.current = requestAnimationFrame(()=>{ @@ -737,7 +742,7 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ }); } }; - const handleMouseUp = ()=>{ + const handleMouseUp = (e)=>{ if (rafRef.current) { cancelAnimationFrame(rafRef.current); rafRef.current = null; @@ -746,6 +751,33 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ ...data, nodes: internalNodesRef.current }); + // Hit-test: if connecting, check if mouse is over any node + if (connectingNodeId && containerRef.current) { + const rect = containerRef.current.getBoundingClientRect(); + const scrollLeft = containerRef.current.scrollLeft; + const scrollTop = containerRef.current.scrollTop; + const mx = e.clientX - rect.left + scrollLeft; + const my = e.clientY - rect.top + scrollTop; + const targetNode = internalNodesRef.current.find((n)=>n.id !== connectingNodeId && mx >= n.x && mx <= n.x + CARD_WIDTH && my >= n.y && my <= n.y + CARD_HEIGHT); + if (targetNode) { + const exists = data.connections.some((c)=>c.source === connectingNodeId && c.target === targetNode.id); + if (!exists) { + const newConn = { + id: `conn-${Date.now()}`, + source: connectingNodeId, + target: targetNode.id + }; + onUpdate({ + ...data, + nodes: internalNodesRef.current, + connections: [ + ...data.connections, + newConn + ] + }); + } + } + } setIsDragging(false); setIsPanning(false); setConnectingNodeId(null); @@ -850,36 +882,36 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ size: 14 }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 575, - columnNumber: 17 + lineNumber: 616, + columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)), " AJOUTER NŒUD" ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 574, - columnNumber: 13 + lineNumber: 615, + columnNumber: 21 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "w-px h-6 bg-slate-100 mx-2" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 577, - columnNumber: 13 + lineNumber: 618, + columnNumber: 21 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-[10px] uppercase font-bold text-slate-400 tracking-wider", children: selectedNodeIds.size > 0 ? `${selectedNodeIds.size} SÉLECTIONNÉ(S)` : 'Double-cliquez sur le canvas pour créer' }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 578, - columnNumber: 13 + lineNumber: 619, + columnNumber: 21 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 573, - columnNumber: 9 + lineNumber: 614, + columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-2", @@ -892,24 +924,24 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ size: 16 }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 584, - columnNumber: 17 + lineNumber: 625, + columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 583, - columnNumber: 13 + lineNumber: 624, + columnNumber: 21 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 582, - columnNumber: 9 + lineNumber: 623, + columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 572, - columnNumber: 7 + lineNumber: 613, + columnNumber: 13 }, ("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", { ref: containerRef, @@ -944,8 +976,8 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ markerEnd: "url(#arrowhead)" }, conn.id, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 611, - columnNumber: 21 + lineNumber: 652, + columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)); }), connectingNodeId && /*#__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"])("line", { @@ -959,8 +991,8 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ markerEnd: "url(#arrowhead-blue)" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 615, - columnNumber: 17 + lineNumber: 656, + columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("defs", { children: [ @@ -976,13 +1008,13 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ fill: "#cbd5e1" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 624, - columnNumber: 21 + lineNumber: 665, + columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 623, - columnNumber: 17 + lineNumber: 664, + columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("marker", { id: "arrowhead-blue", @@ -996,30 +1028,31 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ fill: "#6366f1" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 627, - columnNumber: 21 + lineNumber: 668, + columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 626, - columnNumber: 17 + lineNumber: 667, + columnNumber: 25 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 622, - columnNumber: 13 + lineNumber: 663, + columnNumber: 21 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 601, - columnNumber: 9 + lineNumber: 642, + columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)), internalNodes.map((node)=>/*#__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"])(StoryNode, { node: node, isSelected: selectedNodeIds.has(node.id), isEditing: editingNodeId === node.id, + isDragging: isDragging, activeColorPickerId: activeColorPickerId, entities: entities, savedColors: savedColors, @@ -1036,14 +1069,14 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ onKeyDownInInput: handleKeyDownInInput }, node.id, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 633, - columnNumber: 13 + lineNumber: 674, + columnNumber: 21 }, ("TURBOPACK compile-time value", void 0))) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 589, - columnNumber: 7 + lineNumber: 630, + columnNumber: 13 }, ("TURBOPACK compile-time value", void 0)), activeSuggestion && /*#__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: "fixed z-50 bg-white rounded-xl shadow-2xl border border-indigo-100 w-64 max-h-48 overflow-y-auto", @@ -1061,8 +1094,8 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 658, - columnNumber: 15 + lineNumber: 700, + columnNumber: 21 }, ("TURBOPACK compile-time value", void 0)), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "divide-y divide-slate-50", @@ -1072,32 +1105,32 @@ const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{ children: ent.name }, ent.id, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 664, - columnNumber: 27 + lineNumber: 706, + columnNumber: 33 }, ("TURBOPACK compile-time value", void 0))) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "p-4 text-xs text-slate-400 italic text-center", children: "Aucun résultat" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 673, - columnNumber: 23 + lineNumber: 715, + columnNumber: 29 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 661, - columnNumber: 15 + lineNumber: 703, + columnNumber: 21 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 657, - columnNumber: 11 + lineNumber: 699, + columnNumber: 17 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx", - lineNumber: 571, - columnNumber: 5 + lineNumber: 612, + columnNumber: 9 }, ("TURBOPACK compile-time value", void 0)); }; _s1(StoryWorkflow, "GlJ/7gZkBYC3Q3ryQRUN9XEyk6A="); diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_06c48656._.js.map b/.next/dev/static/chunks/Documents_00 - projet_plumeia_06c48656._.js.map index ff2f972..31e3de0 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_06c48656._.js.map +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_06c48656._.js.map @@ -2,8 +2,8 @@ "version": 3, "sources": [], "sections": [ - {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/StoryWorkflow.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState, useRef, useEffect, useCallback, useMemo } from 'react';\nimport { WorkflowData, PlotNode, PlotConnection, PlotNodeType, Entity, EntityType } from '@/lib/types';\nimport { Plus, Trash2, ArrowRight, BookOpen, MessageCircle, Zap, Palette, Save, Link2 } from 'lucide-react';\n\ninterface StoryWorkflowProps {\n data: WorkflowData;\n onUpdate: (data: WorkflowData) => void;\n entities: Entity[];\n onNavigateToEntity: (entityId: string) => void;\n}\n\nconst CARD_WIDTH = 260;\nconst CARD_HEIGHT = 220;\n\nconst INITIAL_COLORS = [\n '#ffffff', // White\n '#dbeafe', // Blue\n '#dcfce7', // Green\n '#fef9c3', // Yellow\n '#fee2e2', // Red\n '#f3e8ff', // Purple\n];\n\nconst renderTextWithLinks = (text: string, entities: Entity[], onNavigate: (id: string) => void) => {\n if (!text) return Description...;\n \n const parts: (string | React.ReactNode)[] = [text];\n \n entities.forEach(entity => {\n if (!entity.name) return;\n const regex = new RegExp(`(${entity.name})`, 'gi');\n \n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (typeof part === 'string') {\n const split = part.split(regex);\n if (split.length > 1) {\n const newParts = split.map((s, idx) => {\n if (s.toLowerCase() === entity.name.toLowerCase()) {\n return (\n { e.stopPropagation(); onNavigate(entity.id); }}\n className=\"text-indigo-600 hover:text-indigo-800 underline decoration-indigo-300 hover:decoration-indigo-600 cursor-pointer font-medium bg-indigo-50 px-0.5 rounded transition-all\"\n title={`Voir la fiche de ${entity.name}`}\n >\n {s}\n \n );\n }\n return s;\n });\n parts.splice(i, 1, ...newParts);\n i += newParts.length - 1;\n }\n }\n }\n });\n\n return <>{parts};\n};\n\ninterface StoryNodeProps {\n node: PlotNode;\n isSelected: boolean;\n isEditing: boolean;\n activeColorPickerId: string | null;\n entities: Entity[];\n savedColors: string[];\n \n onMouseDown: (e: React.MouseEvent, id: string) => void;\n onMouseUp: (e: React.MouseEvent, id: string) => void;\n onStartConnection: (e: React.MouseEvent, id: string) => void;\n onUpdate: (id: string, updates: Partial) => void;\n onSetEditing: (id: string | null) => void;\n onToggleColorPicker: (id: string) => void;\n onSaveColor: (color: string) => void;\n onNavigateToEntity: (id: string) => void;\n \n onInputFocus: (e: React.FocusEvent) => void;\n onInputCheckAutocomplete: (e: React.ChangeEvent, id: string, field: 'title'|'description') => void;\n onKeyDownInInput: (e: React.KeyboardEvent, id: string) => void;\n}\n\nconst StoryNode = React.memo(({ \n node, isSelected, isEditing, activeColorPickerId, entities, savedColors,\n onMouseDown, onMouseUp, onStartConnection, onUpdate, onSetEditing, \n onToggleColorPicker, onSaveColor, onNavigateToEntity, \n onInputFocus, onInputCheckAutocomplete, onKeyDownInInput\n}: StoryNodeProps) => {\n\n const [showTypePicker, setShowTypePicker] = useState(false);\n\n const richDescription = useMemo(() => {\n return renderTextWithLinks(node.description, entities, onNavigateToEntity);\n }, [node.description, entities, onNavigateToEntity]);\n\n return (\n onMouseDown(e, node.id)}\n onMouseUp={(e) => onMouseUp(e, node.id)}\n onMouseLeave={() => setShowTypePicker(false)}\n >\n
\n\n
\n
\n {isEditing ? (\n onUpdate(node.id, { title: e.target.value })}\n onFocus={onInputFocus}\n autoFocus\n />\n ) : (\n
onSetEditing(node.id)}\n >\n {node.title}\n
\n )}\n\n \n\n {activeColorPickerId === node.id && (\n
e.stopPropagation()}>\n
\n {savedColors.map(color => (\n
\n
\n
\n onUpdate(node.id, { color: e.target.value })}\n />\n
\n \n
\n
\n )}\n
\n\n
\n {isEditing ? (\n onInputCheckAutocomplete(e, node.id, 'description')}\n onKeyDown={(e) => onKeyDownInInput(e, node.id)}\n onFocus={onInputFocus}\n onBlur={() => onSetEditing(null)}\n />\n ) : (\n
onSetEditing(node.id)}\n >\n {richDescription}\n
\n )}\n
\n\n
\n {showTypePicker && (\n
e.stopPropagation()}>\n { e.stopPropagation(); onUpdate(node.id, { type: 'story' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-slate-100 ${node.type === 'story' ? 'bg-indigo-50 ring-1 ring-indigo-200' : ''}`}\n title=\"Narration\"\n >\n \n \n { e.stopPropagation(); onUpdate(node.id, { type: 'action' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-amber-50 ${node.type === 'action' ? 'bg-amber-50 ring-1 ring-amber-200' : ''}`}\n title=\"Action\"\n >\n \n \n { e.stopPropagation(); onUpdate(node.id, { type: 'dialogue' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-blue-50 ${node.type === 'dialogue' ? 'bg-blue-50 ring-1 ring-blue-200' : ''}`}\n title=\"Dialogue\"\n >\n \n \n
\n )}\n\n { e.stopPropagation(); setShowTypePicker(!showTypePicker); }}\n >\n {node.type === 'story' && }\n {node.type === 'action' && }\n {node.type === 'dialogue' && }\n \n
\n
\n\n onStartConnection(e, node.id)}\n >\n \n \n
\n );\n}, (prev, next) => {\n return (\n prev.node === next.node && \n prev.isSelected === next.isSelected &&\n prev.isEditing === next.isEditing &&\n prev.activeColorPickerId === next.activeColorPickerId &&\n prev.entities === next.entities\n );\n});\n\ninterface SuggestionState {\n active: boolean;\n trigger: string;\n query: string;\n nodeId: string;\n field: 'title' | 'description';\n cursorIndex: number;\n selectedIndex: number;\n filteredEntities: Entity[];\n}\n\nconst StoryWorkflow: React.FC = ({ data, onUpdate, entities, onNavigateToEntity }) => {\n const containerRef = useRef(null);\n const rafRef = useRef(null);\n \n const [internalNodes, setInternalNodes] = useState(data.nodes);\n const internalNodesRef = useRef(internalNodes);\n useEffect(() => { internalNodesRef.current = internalNodes; }, [internalNodes]);\n\n useEffect(() => {\n setInternalNodes(data.nodes);\n }, [data.nodes]);\n\n useEffect(() => {\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n };\n }, []);\n\n const [activeSuggestion, setActiveSuggestion] = useState(null);\n const [selectedNodeIds, setSelectedNodeIds] = useState>(new Set());\n const [savedColors, setSavedColors] = useState(INITIAL_COLORS);\n const [activeColorPickerId, setActiveColorPickerId] = useState(null);\n const [editingNodeId, setEditingNodeId] = useState(null);\n const [history, setHistory] = useState([]);\n \n const [isDragging, setIsDragging] = useState(false);\n const [dragStartPositions, setDragStartPositions] = useState>(new Map());\n const [dragStartMouse, setDragStartMouse] = useState({ x: 0, y: 0 });\n\n const [connectingNodeId, setConnectingNodeId] = useState(null);\n const [mousePos, setMousePos] = useState({ x: 0, y: 0 });\n\n const [isPanning, setIsPanning] = useState(false);\n const [panStart, setPanStart] = useState({ x: 0, y: 0 });\n const [scrollStart, setScrollStart] = useState({ x: 0, y: 0 });\n\n const pushHistory = useCallback(() => {\n setHistory(prev => {\n const newHistory = [...prev, data];\n if (newHistory.length > 20) return newHistory.slice(newHistory.length - 20);\n return newHistory;\n });\n }, [data]);\n\n const updateNode = useCallback((id: string, updates: Partial) => {\n const currentNodes = internalNodesRef.current;\n onUpdate({\n ...data,\n nodes: currentNodes.map(n => n.id === id ? { ...n, ...updates } : n)\n });\n }, [data, onUpdate]);\n\n const handleInputFocus = useCallback((e: React.FocusEvent) => {\n e.stopPropagation();\n }, []);\n\n const handleInputWithAutocomplete = useCallback((\n e: React.ChangeEvent, \n nodeId: string, \n field: 'title' | 'description'\n ) => {\n const val = e.target.value;\n updateNode(nodeId, { [field]: val });\n \n const cursor = e.target.selectionStart || 0;\n const textBeforeCursor = val.slice(0, cursor);\n const match = textBeforeCursor.match(/([@#^])([^@#^\\s]*)$/);\n\n if (match) {\n const trigger = match[1];\n const query = match[2].toLowerCase();\n const targetType = trigger === '@' ? EntityType.CHARACTER : trigger === '#' ? EntityType.LOCATION : EntityType.OBJECT;\n const filtered = entities.filter(ent => \n ent.type === targetType && \n ent.name.toLowerCase().includes(query)\n );\n\n setActiveSuggestion({\n active: true,\n trigger,\n query,\n nodeId,\n field,\n cursorIndex: cursor,\n selectedIndex: 0,\n filteredEntities: filtered\n });\n } else {\n setActiveSuggestion(null);\n }\n }, [updateNode, entities]);\n\n const insertEntity = (entity: Entity) => {\n if (!activeSuggestion) return;\n const { nodeId, field, trigger, query } = activeSuggestion;\n const node = internalNodesRef.current.find(n => n.id === nodeId);\n if (!node) return;\n const currentText = node[field] as string;\n const cursor = activeSuggestion.cursorIndex;\n const insertionLength = trigger.length + query.length;\n const startIdx = cursor - insertionLength;\n if (startIdx < 0) return;\n const before = currentText.slice(0, startIdx);\n const after = currentText.slice(cursor);\n const isDialogue = node.type === 'dialogue' && activeSuggestion.trigger === '@';\n const suffix = isDialogue ? \": \" : \" \";\n updateNode(nodeId, { [field]: before + entity.name + suffix + after });\n setActiveSuggestion(null);\n };\n\n const handleKeyDownInInput = useCallback((e: React.KeyboardEvent, nodeId: string) => {\n if (activeSuggestion && activeSuggestion.nodeId === nodeId) {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex + 1) % prev.filteredEntities.length } : null);\n return;\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex - 1 + prev.filteredEntities.length) % prev.filteredEntities.length } : null);\n return;\n } else if (e.key === 'Tab' || e.key === 'Enter') {\n e.preventDefault();\n if (activeSuggestion.filteredEntities.length > 0) {\n insertEntity(activeSuggestion.filteredEntities[activeSuggestion.selectedIndex]);\n } else {\n setActiveSuggestion(null); \n }\n return;\n } else if (e.key === 'Escape') {\n setActiveSuggestion(null);\n return;\n }\n }\n }, [activeSuggestion, entities, updateNode]);\n\n const handleNodeMouseDown = useCallback((e: React.MouseEvent, nodeId: string) => {\n e.stopPropagation(); \n setActiveColorPickerId(null);\n\n setSelectedNodeIds(prevSelected => {\n const newSelection = new Set(prevSelected);\n if (e.ctrlKey) {\n if (newSelection.has(nodeId)) newSelection.delete(nodeId);\n else newSelection.add(nodeId);\n } else {\n if (!newSelection.has(nodeId)) {\n newSelection.clear();\n newSelection.add(nodeId);\n }\n }\n const finalDragIds = e.ctrlKey ? newSelection : (newSelection.has(nodeId) ? newSelection : new Set([nodeId]));\n const startPositions = new Map();\n internalNodesRef.current.forEach(n => {\n if (finalDragIds.has(n.id)) {\n startPositions.set(n.id, { x: n.x, y: n.y });\n }\n });\n setDragStartPositions(startPositions);\n return newSelection;\n });\n\n setIsDragging(true);\n setDragStartMouse({ x: e.clientX, y: e.clientY });\n pushHistory();\n }, [pushHistory]);\n\n const startConnection = useCallback((e: React.MouseEvent, nodeId: string) => {\n e.stopPropagation();\n pushHistory();\n setConnectingNodeId(nodeId);\n }, [pushHistory]);\n\n const finishConnection = useCallback((e: React.MouseEvent, targetId: string) => {\n if (connectingNodeId && connectingNodeId !== targetId) {\n const exists = data.connections.some(c => c.source === connectingNodeId && c.target === targetId);\n if (!exists) {\n const newConn: PlotConnection = {\n id: `conn-${Date.now()}`,\n source: connectingNodeId,\n target: targetId\n };\n onUpdate({\n ...data,\n nodes: internalNodesRef.current,\n connections: [...data.connections, newConn]\n });\n }\n }\n setConnectingNodeId(null);\n }, [data, onUpdate, connectingNodeId]);\n\n const handleToggleColorPicker = useCallback((id: string) => {\n setActiveColorPickerId(prev => prev === id ? null : id);\n }, []);\n\n const handleSaveColor = useCallback((color: string) => {\n setSavedColors(prev => !prev.includes(color) ? [...prev, color] : prev);\n }, []);\n\n const handleMouseMove = (e: React.MouseEvent) => {\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect) return;\n const clientX = e.clientX;\n const clientY = e.clientY;\n\n if (isPanning && containerRef.current) {\n const dx = clientX - panStart.x;\n const dy = clientY - panStart.y;\n containerRef.current.scrollLeft = scrollStart.x - dx;\n containerRef.current.scrollTop = scrollStart.y - dy;\n return;\n }\n\n const scrollLeft = containerRef.current?.scrollLeft || 0;\n const scrollTop = containerRef.current?.scrollTop || 0;\n setMousePos({ x: clientX - rect.left + scrollLeft, y: clientY - rect.top + scrollTop });\n\n if (isDragging) {\n if (rafRef.current) return;\n rafRef.current = requestAnimationFrame(() => {\n const dx = clientX - dragStartMouse.x;\n const dy = clientY - dragStartMouse.y;\n setInternalNodes(prevNodes => prevNodes.map(node => {\n const startPos = dragStartPositions.get(node.id);\n if (startPos) return { ...node, x: startPos.x + dx, y: startPos.y + dy };\n return node;\n }));\n rafRef.current = null;\n });\n }\n };\n\n const handleMouseUp = () => {\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n if (isDragging) onUpdate({ ...data, nodes: internalNodesRef.current });\n setIsDragging(false);\n setIsPanning(false);\n setConnectingNodeId(null);\n };\n\n const handleCanvasMouseDown = (e: React.MouseEvent) => {\n if (!e.ctrlKey) setSelectedNodeIds(new Set());\n setActiveSuggestion(null); \n setActiveColorPickerId(null); \n setEditingNodeId(null); \n setIsPanning(true);\n setPanStart({ x: e.clientX, y: e.clientY });\n if (containerRef.current) {\n setScrollStart({ x: containerRef.current.scrollLeft, y: containerRef.current.scrollTop });\n }\n };\n\n const handleCanvasDoubleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect) return;\n const x = e.clientX - rect.left + (containerRef.current?.scrollLeft || 0) - CARD_WIDTH / 2;\n const y = e.clientY - rect.top + (containerRef.current?.scrollTop || 0) - CARD_HEIGHT / 2;\n pushHistory();\n const newNode: PlotNode = {\n id: `node-${Date.now()}`,\n x,\n y,\n title: 'Nouvel événement',\n description: '',\n color: INITIAL_COLORS[0],\n type: 'story'\n };\n onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] });\n setSelectedNodeIds(new Set([newNode.id]));\n setEditingNodeId(newNode.id);\n };\n\n const handleDeleteSelected = () => {\n if (selectedNodeIds.size === 0) return;\n pushHistory();\n const newNodes = internalNodes.filter(n => !selectedNodeIds.has(n.id));\n const newConnections = data.connections.filter(c => !selectedNodeIds.has(c.source) && !selectedNodeIds.has(c.target));\n onUpdate({ nodes: newNodes, connections: newConnections });\n setSelectedNodeIds(new Set());\n };\n\n const handleAddNodeCenter = () => {\n pushHistory();\n const scrollLeft = containerRef.current?.scrollLeft || 0;\n const scrollTop = containerRef.current?.scrollTop || 0;\n const clientWidth = containerRef.current?.clientWidth || 800;\n const clientHeight = containerRef.current?.clientHeight || 600;\n const newNode: PlotNode = {\n id: `node-${Date.now()}`,\n x: scrollLeft + clientWidth / 2 - CARD_WIDTH / 2,\n y: scrollTop + clientHeight / 2 - CARD_HEIGHT / 2,\n title: 'Nouveau point d\\'intrigue',\n description: '',\n color: INITIAL_COLORS[0],\n type: 'story'\n };\n onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] });\n setSelectedNodeIds(new Set([newNode.id]));\n setEditingNodeId(newNode.id);\n };\n\n return (\n
\n
\n
\n \n
\n
\n {selectedNodeIds.size > 0 ? `${selectedNodeIds.size} SÉLECTIONNÉ(S)` : 'Double-cliquez sur le canvas pour créer'}\n
\n
\n
\n \n
\n
\n\n
\n \n {data.connections.map(conn => {\n const source = internalNodes.find(n => n.id === conn.source); \n const target = internalNodes.find(n => n.id === conn.target); \n if (!source || !target) return null;\n const startX = source.x + CARD_WIDTH / 2;\n const startY = source.y + CARD_HEIGHT / 2;\n const endX = target.x + CARD_WIDTH / 2;\n const endY = target.y + CARD_HEIGHT / 2;\n return (\n \n );\n })}\n {connectingNodeId && (\n n.id === connectingNodeId)?.x || 0) + CARD_WIDTH/2}\n y1={(internalNodes.find(n => n.id === connectingNodeId)?.y || 0) + CARD_HEIGHT/2}\n x2={mousePos.x} y2={mousePos.y}\n stroke=\"#6366f1\" strokeWidth=\"2\" strokeDasharray=\"5,5\" markerEnd=\"url(#arrowhead-blue)\"\n />\n )}\n \n \n \n \n \n \n \n \n \n\n {internalNodes.map(node => (\n \n ))}\n
\n\n {activeSuggestion && (\n
\n
\n Insérer {activeSuggestion.trigger === '@' ? 'Personnage' : activeSuggestion.trigger === '#' ? 'Lieu' : 'Objet'}\n
\n
\n {activeSuggestion.filteredEntities.length > 0 ? (\n activeSuggestion.filteredEntities.map((ent, idx) => (\n insertEntity(ent)}\n >\n {ent.name}\n \n ))\n ) : (\n
Aucun résultat
\n )}\n
\n
\n )}\n
\n );\n};\n\nexport default StoryWorkflow;\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 1115, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/workflow/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport StoryWorkflow from '@/components/StoryWorkflow';\r\nimport { useProjectContext } from '@/providers/ProjectProvider';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function WorkflowPage() {\r\n const { project, projectId, updateProject } = useProjectContext();\r\n const router = useRouter();\r\n\r\n return (\r\n updateProject({ workflow })}\r\n entities={project.entities || []}\r\n onNavigateToEntity={() => router.push(`/project/${projectId}/world`)}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;;;AAJA;;;;AAMe,SAAS;;IACpB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAA,wMAAiB;IAC/D,MAAM,SAAS,IAAA,8LAAS;IAExB,qBACI,yOAAC,6LAAa;QACV,MAAM,QAAQ,QAAQ,IAAI;YAAE,OAAO,EAAE;YAAE,aAAa,EAAE;QAAC;QACvD,UAAU,CAAC,WAAa,cAAc;gBAAE;YAAS;QACjD,UAAU,QAAQ,QAAQ,IAAI,EAAE;QAChC,oBAAoB,IAAM,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,MAAM,CAAC;;;;;;AAG/E;GAZwB;;QAC0B,wMAAiB;QAChD,8LAAS;;;KAFJ"}}, - {"offset": {"line": 1165, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/arrow-right.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-right.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n];\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJtMTIgNSA3IDctNyA3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('arrow-right', __iconNode);\n\nexport default ArrowRight;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAiB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAChD;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,KAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 1210, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/palette.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/palette.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z',\n key: 'e79jfc',\n },\n ],\n ['circle', { cx: '13.5', cy: '6.5', r: '.5', fill: 'currentColor', key: '1okk4w' }],\n ['circle', { cx: '17.5', cy: '10.5', r: '.5', fill: 'currentColor', key: 'f64h9f' }],\n ['circle', { cx: '6.5', cy: '12.5', r: '.5', fill: 'currentColor', key: 'qy21gx' }],\n ['circle', { cx: '8.5', cy: '7.5', r: '.5', fill: 'currentColor', key: 'fotxhn' }],\n];\n\n/**\n * @component @name Palette\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMjJhMSAxIDAgMCAxIDAtMjAgMTAgOSAwIDAgMSAxMCA5IDUgNSAwIDAgMS01IDVoLTIuMjVhMS43NSAxLjc1IDAgMCAwLTEuNCAyLjhsLjMuNGExLjc1IDEuNzUgMCAwIDEtMS40IDIuOHoiIC8+CiAgPGNpcmNsZSBjeD0iMTMuNSIgY3k9IjYuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KICA8Y2lyY2xlIGN4PSIxNy41IiBjeT0iMTAuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KICA8Y2lyY2xlIGN4PSI2LjUiIGN5PSIxMi41IiByPSIuNSIgZmlsbD0iY3VycmVudENvbG9yIiAvPgogIDxjaXJjbGUgY3g9IjguNSIgY3k9IjcuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/palette\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Palette = createLucideIcon('palette', __iconNode);\n\nexport default Palette;\n"],"names":[],"mappings":"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"}}] + {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/StoryWorkflow.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState, useRef, useEffect, useCallback, useMemo } from 'react';\nimport { WorkflowData, PlotNode, PlotConnection, PlotNodeType, Entity, EntityType } from '@/lib/types';\nimport { Plus, Trash2, ArrowRight, BookOpen, MessageCircle, Zap, Palette, Save, Link2 } from 'lucide-react';\n\ninterface StoryWorkflowProps {\n data: WorkflowData;\n onUpdate: (data: WorkflowData) => void;\n entities: Entity[];\n onNavigateToEntity: (entityId: string) => void;\n}\n\nconst CARD_WIDTH = 260;\nconst CARD_HEIGHT = 220;\n\nconst INITIAL_COLORS = [\n '#ffffff', // White\n '#dbeafe', // Blue\n '#dcfce7', // Green\n '#fef9c3', // Yellow\n '#fee2e2', // Red\n '#f3e8ff', // Purple\n];\n\nconst renderTextWithLinks = (text: string, entities: Entity[], onNavigate: (id: string) => void) => {\n if (!text) return Description...;\n\n const parts: (string | React.ReactNode)[] = [text];\n\n entities.forEach(entity => {\n if (!entity.name) return;\n const regex = new RegExp(`(${entity.name})`, 'gi');\n\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (typeof part === 'string') {\n const split = part.split(regex);\n if (split.length > 1) {\n const newParts = split.map((s, idx) => {\n if (s.toLowerCase() === entity.name.toLowerCase()) {\n return (\n { e.stopPropagation(); onNavigate(entity.id); }}\n className=\"text-indigo-600 hover:text-indigo-800 underline decoration-indigo-300 hover:decoration-indigo-600 cursor-pointer font-medium bg-indigo-50 px-0.5 rounded transition-all\"\n title={`Voir la fiche de ${entity.name}`}\n >\n {s}\n \n );\n }\n return s;\n });\n parts.splice(i, 1, ...newParts);\n i += newParts.length - 1;\n }\n }\n }\n });\n\n return <>{parts};\n};\n\ninterface StoryNodeProps {\n node: PlotNode;\n isSelected: boolean;\n isEditing: boolean;\n isDragging: boolean;\n activeColorPickerId: string | null;\n entities: Entity[];\n savedColors: string[];\n\n onMouseDown: (e: React.MouseEvent, id: string) => void;\n onMouseUp: (e: React.MouseEvent, id: string) => void;\n onStartConnection: (e: React.MouseEvent, id: string) => void;\n onUpdate: (id: string, updates: Partial) => void;\n onSetEditing: (id: string | null) => void;\n onToggleColorPicker: (id: string) => void;\n onSaveColor: (color: string) => void;\n onNavigateToEntity: (id: string) => void;\n\n onInputFocus: (e: React.FocusEvent) => void;\n onInputCheckAutocomplete: (e: React.ChangeEvent, id: string, field: 'title' | 'description') => void;\n onKeyDownInInput: (e: React.KeyboardEvent, id: string) => void;\n}\n\nconst StoryNode = React.memo(({\n node, isSelected, isEditing, isDragging, activeColorPickerId, entities, savedColors,\n onMouseDown, onMouseUp, onStartConnection, onUpdate, onSetEditing,\n onToggleColorPicker, onSaveColor, onNavigateToEntity,\n onInputFocus, onInputCheckAutocomplete, onKeyDownInInput\n}: StoryNodeProps) => {\n\n const [showTypePicker, setShowTypePicker] = useState(false);\n\n const richDescription = useMemo(() => {\n return renderTextWithLinks(node.description, entities, onNavigateToEntity);\n }, [node.description, entities, onNavigateToEntity]);\n\n return (\n onMouseDown(e, node.id)}\n onMouseUp={(e) => onMouseUp(e, node.id)}\n onDoubleClick={(e) => e.stopPropagation()}\n onMouseLeave={() => setShowTypePicker(false)}\n >\n
\n\n
\n
\n {isEditing ? (\n onUpdate(node.id, { title: e.target.value })}\n onFocus={onInputFocus}\n autoFocus\n />\n ) : (\n onSetEditing(node.id)}\n >\n {node.title}\n
\n )}\n\n { e.stopPropagation(); onToggleColorPicker(node.id); }}\n className=\"p-1 rounded-full hover:bg-black/10 text-slate-400 hover:text-indigo-600 transition-colors absolute right-0 top-0\"\n >\n \n \n\n {activeColorPickerId === node.id && (\n
e.stopPropagation()}>\n
\n {savedColors.map(color => (\n onUpdate(node.id, { color })}\n className={`w-8 h-8 rounded-full border border-slate-200 shadow-sm transition-transform hover:scale-110 ${node.color === color ? 'ring-2 ring-offset-1 ring-indigo-400' : ''}`}\n style={{ backgroundColor: color }}\n />\n ))}\n
\n
\n
\n onUpdate(node.id, { color: e.target.value })}\n />\n
\n onSaveColor(node.color || '#ffffff')}\n className=\"text-[10px] font-bold text-indigo-600 hover:text-indigo-800 hover:underline flex-1 text-right\"\n >\n + SAUVER\n \n
\n
\n )}\n
\n\n
\n {isEditing ? (\n onInputCheckAutocomplete(e, node.id, 'description')}\n onKeyDown={(e) => onKeyDownInInput(e, node.id)}\n onFocus={onInputFocus}\n onBlur={() => onSetEditing(null)}\n />\n ) : (\n onSetEditing(node.id)}\n >\n {richDescription}\n
\n )}\n
\n\n
\n {showTypePicker && (\n
e.stopPropagation()}>\n { e.stopPropagation(); onUpdate(node.id, { type: 'story' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-slate-100 ${node.type === 'story' ? 'bg-indigo-50 ring-1 ring-indigo-200' : ''}`}\n title=\"Narration\"\n >\n \n \n { e.stopPropagation(); onUpdate(node.id, { type: 'action' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-amber-50 ${node.type === 'action' ? 'bg-amber-50 ring-1 ring-amber-200' : ''}`}\n title=\"Action\"\n >\n \n \n { e.stopPropagation(); onUpdate(node.id, { type: 'dialogue' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-blue-50 ${node.type === 'dialogue' ? 'bg-blue-50 ring-1 ring-blue-200' : ''}`}\n title=\"Dialogue\"\n >\n \n \n
\n )}\n\n { e.stopPropagation(); setShowTypePicker(!showTypePicker); }}\n >\n {node.type === 'story' && }\n {node.type === 'action' && }\n {node.type === 'dialogue' && }\n \n
\n
\n\n onStartConnection(e, node.id)}\n >\n \n \n
\n );\n}, (prev, next) => {\n return (\n prev.node === next.node &&\n prev.isSelected === next.isSelected &&\n prev.isEditing === next.isEditing &&\n prev.isDragging === next.isDragging &&\n prev.activeColorPickerId === next.activeColorPickerId &&\n prev.entities === next.entities\n );\n});\n\ninterface SuggestionState {\n active: boolean;\n trigger: string;\n query: string;\n nodeId: string;\n field: 'title' | 'description';\n cursorIndex: number;\n selectedIndex: number;\n filteredEntities: Entity[];\n}\n\nconst StoryWorkflow: React.FC = ({ data, onUpdate, entities, onNavigateToEntity }) => {\n const containerRef = useRef(null);\n const rafRef = useRef(null);\n\n const [internalNodes, setInternalNodes] = useState(data.nodes);\n const internalNodesRef = useRef(internalNodes);\n useEffect(() => { internalNodesRef.current = internalNodes; }, [internalNodes]);\n\n useEffect(() => {\n setInternalNodes(data.nodes);\n }, [data.nodes]);\n\n useEffect(() => {\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n };\n }, []);\n\n const [activeSuggestion, setActiveSuggestion] = useState(null);\n const [selectedNodeIds, setSelectedNodeIds] = useState>(new Set());\n const [savedColors, setSavedColors] = useState(INITIAL_COLORS);\n const [activeColorPickerId, setActiveColorPickerId] = useState(null);\n const [editingNodeId, setEditingNodeId] = useState(null);\n const [history, setHistory] = useState([]);\n\n const [isDragging, setIsDragging] = useState(false);\n const [dragStartPositions, setDragStartPositions] = useState>(new Map());\n const [dragStartMouse, setDragStartMouse] = useState({ x: 0, y: 0 });\n\n const [connectingNodeId, setConnectingNodeId] = useState(null);\n const [mousePos, setMousePos] = useState({ x: 0, y: 0 });\n\n const [isPanning, setIsPanning] = useState(false);\n const [panStart, setPanStart] = useState({ x: 0, y: 0 });\n const [scrollStart, setScrollStart] = useState({ x: 0, y: 0 });\n\n const pushHistory = useCallback(() => {\n setHistory(prev => {\n const newHistory = [...prev, data];\n if (newHistory.length > 20) return newHistory.slice(newHistory.length - 20);\n return newHistory;\n });\n }, [data]);\n\n const updateNode = useCallback((id: string, updates: Partial) => {\n const currentNodes = internalNodesRef.current;\n onUpdate({\n ...data,\n nodes: currentNodes.map(n => n.id === id ? { ...n, ...updates } : n)\n });\n }, [data, onUpdate]);\n\n const handleInputFocus = useCallback((e: React.FocusEvent) => {\n e.stopPropagation();\n }, []);\n\n const handleInputWithAutocomplete = useCallback((\n e: React.ChangeEvent,\n nodeId: string,\n field: 'title' | 'description'\n ) => {\n const val = e.target.value;\n updateNode(nodeId, { [field]: val });\n\n const cursor = e.target.selectionStart || 0;\n const textBeforeCursor = val.slice(0, cursor);\n const match = textBeforeCursor.match(/([@#^])([^@#^\\s]*)$/);\n\n if (match) {\n const trigger = match[1];\n const query = match[2].toLowerCase();\n const targetType = trigger === '@' ? EntityType.CHARACTER : trigger === '#' ? EntityType.LOCATION : EntityType.OBJECT;\n const filtered = entities.filter(ent =>\n ent.type === targetType &&\n ent.name.toLowerCase().includes(query)\n );\n\n setActiveSuggestion({\n active: true,\n trigger,\n query,\n nodeId,\n field,\n cursorIndex: cursor,\n selectedIndex: 0,\n filteredEntities: filtered\n });\n } else {\n setActiveSuggestion(null);\n }\n }, [updateNode, entities]);\n\n const insertEntity = (entity: Entity) => {\n if (!activeSuggestion) return;\n const { nodeId, field, trigger, query } = activeSuggestion;\n const node = internalNodesRef.current.find(n => n.id === nodeId);\n if (!node) return;\n const currentText = node[field] as string;\n const cursor = activeSuggestion.cursorIndex;\n const insertionLength = trigger.length + query.length;\n const startIdx = cursor - insertionLength;\n if (startIdx < 0) return;\n const before = currentText.slice(0, startIdx);\n const after = currentText.slice(cursor);\n const isDialogue = node.type === 'dialogue' && activeSuggestion.trigger === '@';\n const suffix = isDialogue ? \": \" : \" \";\n updateNode(nodeId, { [field]: before + entity.name + suffix + after });\n setActiveSuggestion(null);\n };\n\n const handleKeyDownInInput = useCallback((e: React.KeyboardEvent, nodeId: string) => {\n if (activeSuggestion && activeSuggestion.nodeId === nodeId) {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex + 1) % prev.filteredEntities.length } : null);\n return;\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex - 1 + prev.filteredEntities.length) % prev.filteredEntities.length } : null);\n return;\n } else if (e.key === 'Tab' || e.key === 'Enter') {\n e.preventDefault();\n if (activeSuggestion.filteredEntities.length > 0) {\n insertEntity(activeSuggestion.filteredEntities[activeSuggestion.selectedIndex]);\n } else {\n setActiveSuggestion(null);\n }\n return;\n } else if (e.key === 'Escape') {\n setActiveSuggestion(null);\n return;\n }\n }\n }, [activeSuggestion, entities, updateNode]);\n\n const handleNodeMouseDown = useCallback((e: React.MouseEvent, nodeId: string) => {\n e.stopPropagation();\n setActiveColorPickerId(null);\n\n setSelectedNodeIds(prevSelected => {\n const newSelection = new Set(prevSelected);\n if (e.ctrlKey) {\n if (newSelection.has(nodeId)) newSelection.delete(nodeId);\n else newSelection.add(nodeId);\n } else {\n if (!newSelection.has(nodeId)) {\n newSelection.clear();\n newSelection.add(nodeId);\n }\n }\n const finalDragIds = e.ctrlKey ? newSelection : (newSelection.has(nodeId) ? newSelection : new Set([nodeId]));\n const startPositions = new Map();\n internalNodesRef.current.forEach(n => {\n if (finalDragIds.has(n.id)) {\n startPositions.set(n.id, { x: n.x, y: n.y });\n }\n });\n setDragStartPositions(startPositions);\n return newSelection;\n });\n\n setIsDragging(true);\n setDragStartMouse({ x: e.clientX, y: e.clientY });\n pushHistory();\n }, [pushHistory]);\n\n const startConnection = useCallback((e: React.MouseEvent, nodeId: string) => {\n e.stopPropagation();\n pushHistory();\n setConnectingNodeId(nodeId);\n }, [pushHistory]);\n\n const finishConnection = useCallback((e: React.MouseEvent, targetId: string) => {\n if (connectingNodeId && connectingNodeId !== targetId) {\n const exists = data.connections.some(c => c.source === connectingNodeId && c.target === targetId);\n if (!exists) {\n const newConn: PlotConnection = {\n id: `conn-${Date.now()}`,\n source: connectingNodeId,\n target: targetId\n };\n onUpdate({\n ...data,\n nodes: internalNodesRef.current,\n connections: [...data.connections, newConn]\n });\n }\n }\n setConnectingNodeId(null);\n }, [data, onUpdate, connectingNodeId]);\n\n const handleToggleColorPicker = useCallback((id: string) => {\n setActiveColorPickerId(prev => prev === id ? null : id);\n }, []);\n\n const handleSaveColor = useCallback((color: string) => {\n setSavedColors(prev => !prev.includes(color) ? [...prev, color] : prev);\n }, []);\n\n const handleMouseMove = (e: React.MouseEvent) => {\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect) return;\n const clientX = e.clientX;\n const clientY = e.clientY;\n\n if (isPanning && containerRef.current) {\n const dx = clientX - panStart.x;\n const dy = clientY - panStart.y;\n containerRef.current.scrollLeft = scrollStart.x - dx;\n containerRef.current.scrollTop = scrollStart.y - dy;\n return;\n }\n\n // Only update mousePos when connecting (drawing a line), not during node drag\n if (connectingNodeId) {\n const scrollLeft = containerRef.current?.scrollLeft || 0;\n const scrollTop = containerRef.current?.scrollTop || 0;\n setMousePos({ x: clientX - rect.left + scrollLeft, y: clientY - rect.top + scrollTop });\n }\n\n if (isDragging) {\n if (rafRef.current) return;\n rafRef.current = requestAnimationFrame(() => {\n const dx = clientX - dragStartMouse.x;\n const dy = clientY - dragStartMouse.y;\n setInternalNodes(prevNodes => prevNodes.map(node => {\n const startPos = dragStartPositions.get(node.id);\n if (startPos) return { ...node, x: startPos.x + dx, y: startPos.y + dy };\n return node;\n }));\n rafRef.current = null;\n });\n }\n };\n\n const handleMouseUp = (e: React.MouseEvent) => {\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n if (isDragging) onUpdate({ ...data, nodes: internalNodesRef.current });\n\n // Hit-test: if connecting, check if mouse is over any node\n if (connectingNodeId && containerRef.current) {\n const rect = containerRef.current.getBoundingClientRect();\n const scrollLeft = containerRef.current.scrollLeft;\n const scrollTop = containerRef.current.scrollTop;\n const mx = e.clientX - rect.left + scrollLeft;\n const my = e.clientY - rect.top + scrollTop;\n\n const targetNode = internalNodesRef.current.find(n =>\n n.id !== connectingNodeId &&\n mx >= n.x && mx <= n.x + CARD_WIDTH &&\n my >= n.y && my <= n.y + CARD_HEIGHT\n );\n\n if (targetNode) {\n const exists = data.connections.some(\n c => c.source === connectingNodeId && c.target === targetNode.id\n );\n if (!exists) {\n const newConn: PlotConnection = {\n id: `conn-${Date.now()}`,\n source: connectingNodeId,\n target: targetNode.id,\n };\n onUpdate({\n ...data,\n nodes: internalNodesRef.current,\n connections: [...data.connections, newConn],\n });\n }\n }\n }\n\n setIsDragging(false);\n setIsPanning(false);\n setConnectingNodeId(null);\n };\n\n const handleCanvasMouseDown = (e: React.MouseEvent) => {\n if (!e.ctrlKey) setSelectedNodeIds(new Set());\n setActiveSuggestion(null);\n setActiveColorPickerId(null);\n setEditingNodeId(null);\n setIsPanning(true);\n setPanStart({ x: e.clientX, y: e.clientY });\n if (containerRef.current) {\n setScrollStart({ x: containerRef.current.scrollLeft, y: containerRef.current.scrollTop });\n }\n };\n\n const handleCanvasDoubleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect) return;\n const x = e.clientX - rect.left + (containerRef.current?.scrollLeft || 0) - CARD_WIDTH / 2;\n const y = e.clientY - rect.top + (containerRef.current?.scrollTop || 0) - CARD_HEIGHT / 2;\n pushHistory();\n const newNode: PlotNode = {\n id: `node-${Date.now()}`,\n x,\n y,\n title: 'Nouvel événement',\n description: '',\n color: INITIAL_COLORS[0],\n type: 'story'\n };\n onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] });\n setSelectedNodeIds(new Set([newNode.id]));\n setEditingNodeId(newNode.id);\n };\n\n const handleDeleteSelected = () => {\n if (selectedNodeIds.size === 0) return;\n pushHistory();\n const newNodes = internalNodes.filter(n => !selectedNodeIds.has(n.id));\n const newConnections = data.connections.filter(c => !selectedNodeIds.has(c.source) && !selectedNodeIds.has(c.target));\n onUpdate({ nodes: newNodes, connections: newConnections });\n setSelectedNodeIds(new Set());\n };\n\n const handleAddNodeCenter = () => {\n pushHistory();\n const scrollLeft = containerRef.current?.scrollLeft || 0;\n const scrollTop = containerRef.current?.scrollTop || 0;\n const clientWidth = containerRef.current?.clientWidth || 800;\n const clientHeight = containerRef.current?.clientHeight || 600;\n const newNode: PlotNode = {\n id: `node-${Date.now()}`,\n x: scrollLeft + clientWidth / 2 - CARD_WIDTH / 2,\n y: scrollTop + clientHeight / 2 - CARD_HEIGHT / 2,\n title: 'Nouveau point d\\'intrigue',\n description: '',\n color: INITIAL_COLORS[0],\n type: 'story'\n };\n onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] });\n setSelectedNodeIds(new Set([newNode.id]));\n setEditingNodeId(newNode.id);\n };\n\n return (\n
\n
\n
\n \n
\n
\n {selectedNodeIds.size > 0 ? `${selectedNodeIds.size} SÉLECTIONNÉ(S)` : 'Double-cliquez sur le canvas pour créer'}\n
\n
\n
\n \n
\n
\n\n \n \n {data.connections.map(conn => {\n const source = internalNodes.find(n => n.id === conn.source);\n const target = internalNodes.find(n => n.id === conn.target);\n if (!source || !target) return null;\n const startX = source.x + CARD_WIDTH / 2;\n const startY = source.y + CARD_HEIGHT / 2;\n const endX = target.x + CARD_WIDTH / 2;\n const endY = target.y + CARD_HEIGHT / 2;\n return (\n \n );\n })}\n {connectingNodeId && (\n n.id === connectingNodeId)?.x || 0) + CARD_WIDTH / 2}\n y1={(internalNodes.find(n => n.id === connectingNodeId)?.y || 0) + CARD_HEIGHT / 2}\n x2={mousePos.x} y2={mousePos.y}\n stroke=\"#6366f1\" strokeWidth=\"2\" strokeDasharray=\"5,5\" markerEnd=\"url(#arrowhead-blue)\"\n />\n )}\n \n \n \n \n \n \n \n \n \n\n {internalNodes.map(node => (\n \n ))}\n
\n\n {activeSuggestion && (\n
\n
\n Insérer {activeSuggestion.trigger === '@' ? 'Personnage' : activeSuggestion.trigger === '#' ? 'Lieu' : 'Objet'}\n
\n
\n {activeSuggestion.filteredEntities.length > 0 ? (\n activeSuggestion.filteredEntities.map((ent, idx) => (\n insertEntity(ent)}\n >\n {ent.name}\n \n ))\n ) : (\n
Aucun résultat
\n )}\n
\n
\n )}\n
\n );\n};\n\nexport default StoryWorkflow;\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 1148, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/workflow/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport StoryWorkflow from '@/components/StoryWorkflow';\r\nimport { useProjectContext } from '@/providers/ProjectProvider';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function WorkflowPage() {\r\n const { project, projectId, updateProject } = useProjectContext();\r\n const router = useRouter();\r\n\r\n return (\r\n updateProject({ workflow })}\r\n entities={project.entities || []}\r\n onNavigateToEntity={() => router.push(`/project/${projectId}/world`)}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;;;AAJA;;;;AAMe,SAAS;;IACpB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAA,wMAAiB;IAC/D,MAAM,SAAS,IAAA,8LAAS;IAExB,qBACI,yOAAC,6LAAa;QACV,MAAM,QAAQ,QAAQ,IAAI;YAAE,OAAO,EAAE;YAAE,aAAa,EAAE;QAAC;QACvD,UAAU,CAAC,WAAa,cAAc;gBAAE;YAAS;QACjD,UAAU,QAAQ,QAAQ,IAAI,EAAE;QAChC,oBAAoB,IAAM,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,MAAM,CAAC;;;;;;AAG/E;GAZwB;;QAC0B,wMAAiB;QAChD,8LAAS;;;KAFJ"}}, + {"offset": {"line": 1198, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/arrow-right.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-right.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n];\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJtMTIgNSA3IDctNyA3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('arrow-right', __iconNode);\n\nexport default ArrowRight;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAiB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAChD;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,KAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 1243, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/palette.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/palette.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z',\n key: 'e79jfc',\n },\n ],\n ['circle', { cx: '13.5', cy: '6.5', r: '.5', fill: 'currentColor', key: '1okk4w' }],\n ['circle', { cx: '17.5', cy: '10.5', r: '.5', fill: 'currentColor', key: 'f64h9f' }],\n ['circle', { cx: '6.5', cy: '12.5', r: '.5', fill: 'currentColor', key: 'qy21gx' }],\n ['circle', { cx: '8.5', cy: '7.5', r: '.5', fill: 'currentColor', key: 'fotxhn' }],\n];\n\n/**\n * @component @name Palette\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMjJhMSAxIDAgMCAxIDAtMjAgMTAgOSAwIDAgMSAxMCA5IDUgNSAwIDAgMS01IDVoLTIuMjVhMS43NSAxLjc1IDAgMCAwLTEuNCAyLjhsLjMuNGExLjc1IDEuNzUgMCAwIDEtMS40IDIuOHoiIC8+CiAgPGNpcmNsZSBjeD0iMTMuNSIgY3k9IjYuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KICA8Y2lyY2xlIGN4PSIxNy41IiBjeT0iMTAuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KICA8Y2lyY2xlIGN4PSI2LjUiIGN5PSIxMi41IiByPSIuNSIgZmlsbD0iY3VycmVudENvbG9yIiAvPgogIDxjaXJjbGUgY3g9IjguNSIgY3k9IjcuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/palette\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Palette = createLucideIcon('palette', __iconNode);\n\nexport default Palette;\n"],"names":[],"mappings":"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"}}] } \ No newline at end of file diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js b/.next/dev/static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js index d5d0833..de72e65 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js @@ -70,6 +70,12 @@ const api = { return api.request(`/projects/${id}`, { method: 'DELETE' }); + }, + async syncWorkflow (id, data) { + return api.request(`/projects/${id}/workflow`, { + method: 'PUT', + body: JSON.stringify(data) + }); } }, // --- CHAPTERS --- diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js.map b/.next/dev/static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js.map index 7a7012e..8d28ffd 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js.map +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js.map @@ -2,12 +2,12 @@ "version": 3, "sources": [], "sections": [ - {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/api.ts"],"sourcesContent":["import { BookProject, UserProfile } from './types';\r\n\r\nconst API_BASE_URL = '/api';\r\n\r\n// --- API CLIENT ---\r\n\r\nconst api = {\r\n async request(endpoint: string, options: RequestInit = {}) {\r\n const url = `${API_BASE_URL}${endpoint}`;\r\n\r\n const headers: Record = {\r\n 'Content-Type': 'application/json',\r\n ...options.headers as Record,\r\n };\r\n\r\n const response = await fetch(url, {\r\n ...options,\r\n headers,\r\n });\r\n\r\n if (!response.ok) {\r\n let errorMsg = `Error ${response.status}: ${response.statusText}`;\r\n try {\r\n const errorJson = await response.json();\r\n if (errorJson.error) errorMsg = errorJson.error;\r\n if (errorJson.message) errorMsg = errorJson.message;\r\n } catch {\r\n // Ignore json parse error\r\n }\r\n throw new Error(errorMsg);\r\n }\r\n\r\n if (response.status === 204) return null;\r\n return response.json();\r\n },\r\n\r\n // --- AUTH ---\r\n auth: {\r\n async register(email: string, password: string, name: string) {\r\n return api.request('/auth/register', {\r\n method: 'POST',\r\n body: JSON.stringify({ email, password, name }),\r\n });\r\n },\r\n },\r\n\r\n // --- PROJECTS ---\r\n projects: {\r\n async list() {\r\n return api.request('/projects');\r\n },\r\n\r\n async get(id: string) {\r\n return api.request(`/projects/${id}`);\r\n },\r\n\r\n async create(data: { title: string; author: string; settings?: any }) {\r\n return api.request('/projects', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/projects/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/projects/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n },\r\n\r\n // --- CHAPTERS ---\r\n chapters: {\r\n async create(data: { projectId: string; title?: string; content?: string; summary?: string; orderIndex?: number }) {\r\n return api.request('/chapters', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/chapters/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/chapters/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n },\r\n\r\n // --- ENTITIES ---\r\n entities: {\r\n async create(data: { projectId: string; type: string; name?: string; description?: string; details?: string; attributes?: any; customValues?: any }) {\r\n return api.request('/entities', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/entities/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/entities/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n },\r\n\r\n // --- IDEAS ---\r\n ideas: {\r\n async create(data: { projectId: string; title?: string; description?: string; status?: string; category?: string }) {\r\n return api.request('/ideas', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/ideas/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/ideas/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n },\r\n\r\n // --- AI (server-side via API routes) ---\r\n ai: {\r\n async generate(project: BookProject, chapterId: string, prompt: string, user: UserProfile) {\r\n return api.request<{ text: string; type: 'draft' | 'reflection' }>('/ai/generate', {\r\n method: 'POST',\r\n body: JSON.stringify({ project, chapterId, prompt, user }),\r\n });\r\n },\r\n\r\n async transform(text: string, mode: string, context: string, user: UserProfile) {\r\n const res = await api.request<{ text: string }>('/ai/transform', {\r\n method: 'POST',\r\n body: JSON.stringify({ text, mode, context, user }),\r\n });\r\n return res.text;\r\n },\r\n },\r\n};\r\n\r\nexport default api;\r\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 169, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useAuth.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect, useCallback } from 'react';\r\nimport { signIn, signOut, useSession } from 'next-auth/react';\r\nimport { UserProfile } from '@/lib/types';\r\nimport api from '@/lib/api';\r\n\r\nexport const useAuth = () => {\r\n const { data: session, status } = useSession();\r\n const [user, setUser] = useState(null);\r\n const loading = status === 'loading';\r\n\r\n // Sync session to UserProfile\r\n useEffect(() => {\r\n if (session?.user) {\r\n setUser({\r\n id: session.user.id || '',\r\n email: session.user.email || '',\r\n name: session.user.name || 'User',\r\n subscription: { plan: 'free', startDate: Date.now(), status: 'active' },\r\n usage: { aiActionsCurrent: 0, aiActionsLimit: 100, projectsLimit: 3 },\r\n preferences: { theme: 'light', dailyWordGoal: 500, language: 'fr' },\r\n stats: { totalWordsWritten: 0, writingStreak: 0, lastWriteDate: 0 },\r\n });\r\n } else if (status === 'unauthenticated') {\r\n setUser(null);\r\n }\r\n }, [session, status]);\r\n\r\n const login = useCallback(async (email: string, password: string) => {\r\n const result = await signIn('credentials', {\r\n email,\r\n password,\r\n redirect: false,\r\n });\r\n\r\n if (result?.error) {\r\n throw new Error(result.error === 'CredentialsSignin'\r\n ? 'Email ou mot de passe incorrect'\r\n : result.error\r\n );\r\n }\r\n }, []);\r\n\r\n const signup = useCallback(async (email: string, password: string, name: string) => {\r\n // 1. Register via API\r\n await api.auth.register(email, password, name);\r\n\r\n // 2. Auto-login\r\n const result = await signIn('credentials', {\r\n email,\r\n password,\r\n redirect: false,\r\n });\r\n\r\n if (result?.error) {\r\n throw new Error('Compte créé mais erreur de connexion automatique');\r\n }\r\n }, []);\r\n\r\n const logout = useCallback(async () => {\r\n await signOut({ redirect: false });\r\n setUser(null);\r\n }, []);\r\n\r\n const incrementUsage = useCallback(() => {\r\n if (user) {\r\n setUser({\r\n ...user,\r\n usage: { ...user.usage, aiActionsCurrent: user.usage.aiActionsCurrent + 1 },\r\n });\r\n }\r\n }, [user]);\r\n\r\n return { user, login, signup, logout, incrementUsage, loading };\r\n};\r\n"],"names":[],"mappings":";;;;AAEA;AACA;AAEA;;AALA;;;;AAOO,MAAM,UAAU;;IACnB,MAAM,EAAE,MAAM,OAAO,EAAE,MAAM,EAAE,GAAG,IAAA,kMAAU;IAC5C,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAA,qNAAQ,EAAqB;IACrD,MAAM,UAAU,WAAW;IAE3B,8BAA8B;IAC9B,IAAA,sNAAS;6BAAC;YACN,IAAI,SAAS,MAAM;gBACf,QAAQ;oBACJ,IAAI,QAAQ,IAAI,CAAC,EAAE,IAAI;oBACvB,OAAO,QAAQ,IAAI,CAAC,KAAK,IAAI;oBAC7B,MAAM,QAAQ,IAAI,CAAC,IAAI,IAAI;oBAC3B,cAAc;wBAAE,MAAM;wBAAQ,WAAW,KAAK,GAAG;wBAAI,QAAQ;oBAAS;oBACtE,OAAO;wBAAE,kBAAkB;wBAAG,gBAAgB;wBAAK,eAAe;oBAAE;oBACpE,aAAa;wBAAE,OAAO;wBAAS,eAAe;wBAAK,UAAU;oBAAK;oBAClE,OAAO;wBAAE,mBAAmB;wBAAG,eAAe;wBAAG,eAAe;oBAAE;gBACtE;YACJ,OAAO,IAAI,WAAW,mBAAmB;gBACrC,QAAQ;YACZ;QACJ;4BAAG;QAAC;QAAS;KAAO;IAEpB,MAAM,QAAQ,IAAA,wNAAW;sCAAC,OAAO,OAAe;YAC5C,MAAM,SAAS,MAAM,IAAA,8LAAM,EAAC,eAAe;gBACvC;gBACA;gBACA,UAAU;YACd;YAEA,IAAI,QAAQ,OAAO;gBACf,MAAM,IAAI,MAAM,OAAO,KAAK,KAAK,sBAC3B,oCACA,OAAO,KAAK;YAEtB;QACJ;qCAAG,EAAE;IAEL,MAAM,SAAS,IAAA,wNAAW;uCAAC,OAAO,OAAe,UAAkB;YAC/D,sBAAsB;YACtB,MAAM,2KAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,UAAU;YAEzC,gBAAgB;YAChB,MAAM,SAAS,MAAM,IAAA,8LAAM,EAAC,eAAe;gBACvC;gBACA;gBACA,UAAU;YACd;YAEA,IAAI,QAAQ,OAAO;gBACf,MAAM,IAAI,MAAM;YACpB;QACJ;sCAAG,EAAE;IAEL,MAAM,SAAS,IAAA,wNAAW;uCAAC;YACvB,MAAM,IAAA,+LAAO,EAAC;gBAAE,UAAU;YAAM;YAChC,QAAQ;QACZ;sCAAG,EAAE;IAEL,MAAM,iBAAiB,IAAA,wNAAW;+CAAC;YAC/B,IAAI,MAAM;gBACN,QAAQ;oBACJ,GAAG,IAAI;oBACP,OAAO;wBAAE,GAAG,KAAK,KAAK;wBAAE,kBAAkB,KAAK,KAAK,CAAC,gBAAgB,GAAG;oBAAE;gBAC9E;YACJ;QACJ;8CAAG;QAAC;KAAK;IAET,OAAO;QAAE;QAAM;QAAO;QAAQ;QAAQ;QAAgB;IAAQ;AAClE;GApEa;;QACyB,kMAAU"}}, - {"offset": {"line": 294, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/providers/AuthProvider.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { createContext, useContext } from 'react';\r\nimport { SessionProvider } from 'next-auth/react';\r\nimport { useAuth } from '@/hooks/useAuth';\r\n\r\nconst AuthContext = createContext(null);\r\n\r\nfunction AuthInner({ children }: { children: React.ReactNode }) {\r\n const auth = useAuth();\r\n return {children};\r\n}\r\n\r\nexport const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport function useAuthContext() {\r\n return useContext(AuthContext);\r\n}\r\n"],"names":[],"mappings":";;;;;;;AAEA;AACA;AACA;;;AAJA;;;;AAMA,MAAM,4BAAc,IAAA,0NAAa,EAAM;AAEvC,SAAS,UAAU,EAAE,QAAQ,EAAiC;;IAC1D,MAAM,OAAO,IAAA,iLAAO;IACpB,qBAAO,yOAAC,YAAY,QAAQ;QAAC,OAAO;kBAAO;;;;;;AAC/C;GAHS;;QACQ,iLAAO;;;KADf;AAKF,MAAM,eAAwD,CAAC,EAAE,QAAQ,EAAE;IAC9E,qBACI,yOAAC,uMAAe;kBACZ,cAAA,yOAAC;sBAAW;;;;;;;;;;;AAGxB;MANa;AAQN,SAAS;;IACZ,OAAO,IAAA,uNAAU,EAAC;AACtB;IAFgB"}}, - {"offset": {"line": 360, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js"],"sourcesContent":["/**\n * @license React\n * react-jsx-dev-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n case REACT_VIEW_TRANSITION_TYPE:\n return \"ViewTransition\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"next/dist/compiled/react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsxDEV = function (type, config, maybeKey, isStaticChildren) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n if (trackActualOwner) {\n var previousStackTraceLimit = Error.stackTraceLimit;\n Error.stackTraceLimit = 10;\n var debugStackDEV = Error(\"react-stack-top-frame\");\n Error.stackTraceLimit = previousStackTraceLimit;\n } else debugStackDEV = unknownOwnerDebugStack;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStackDEV,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n"],"names":[],"mappings":"AAWiB;AAXjB;;;;;;;;CAQC,GAED;AACA,oEACE,AAAC;IACC,SAAS,yBAAyB,IAAI;QACpC,IAAI,QAAQ,MAAM,OAAO;QACzB,IAAI,eAAe,OAAO,MACxB,OAAO,KAAK,QAAQ,KAAK,yBACrB,OACA,KAAK,WAAW,IAAI,KAAK,IAAI,IAAI;QACvC,IAAI,aAAa,OAAO,MAAM,OAAO;QACrC,OAAQ;YACN,KAAK;gBACH,OAAO;YACT,KAAK;gBACH,OAAO;YACT,KAAK;gBACH,OAAO;YACT,KAAK;gBACH,OAAO;YACT,KAAK;gBACH,OAAO;YACT,KAAK;gBACH,OAAO;YACT,KAAK;gBACH,OAAO;QACX;QACA,IAAI,aAAa,OAAO,MACtB,OACG,aAAa,OAAO,KAAK,GAAG,IAC3B,QAAQ,KAAK,CACX,sHAEJ,KAAK,QAAQ;YAEb,KAAK;gBACH,OAAO;YACT,KAAK;gBACH,OAAO,KAAK,WAAW,IAAI;YAC7B,KAAK;gBACH,OAAO,CAAC,KAAK,QAAQ,CAAC,WAAW,IAAI,SAAS,IAAI;YACpD,KAAK;gBACH,IAAI,YAAY,KAAK,MAAM;gBAC3B,OAAO,KAAK,WAAW;gBACvB,QACE,CAAC,AAAC,OAAO,UAAU,WAAW,IAAI,UAAU,IAAI,IAAI,IACnD,OAAO,OAAO,OAAO,gBAAgB,OAAO,MAAM,YAAa;gBAClE,OAAO;YACT,KAAK;gBACH,OACE,AAAC,YAAY,KAAK,WAAW,IAAI,MACjC,SAAS,YACL,YACA,yBAAyB,KAAK,IAAI,KAAK;YAE/C,KAAK;gBACH,YAAY,KAAK,QAAQ;gBACzB,OAAO,KAAK,KAAK;gBACjB,IAAI;oBACF,OAAO,yBAAyB,KAAK;gBACvC,EAAE,OAAO,GAAG,CAAC;QACjB;QACF,OAAO;IACT;IACA,SAAS,mBAAmB,KAAK;QAC/B,OAAO,KAAK;IACd;IACA,SAAS,uBAAuB,KAAK;QACnC,IAAI;YACF,mBAAmB;YACnB,IAAI,2BAA2B,CAAC;QAClC,EAAE,OAAO,GAAG;YACV,2BAA2B,CAAC;QAC9B;QACA,IAAI,0BAA0B;YAC5B,2BAA2B;YAC3B,IAAI,wBAAwB,yBAAyB,KAAK;YAC1D,IAAI,oCACF,AAAC,eAAe,OAAO,UACrB,OAAO,WAAW,IAClB,KAAK,CAAC,OAAO,WAAW,CAAC,IAC3B,MAAM,WAAW,CAAC,IAAI,IACtB;YACF,sBAAsB,IAAI,CACxB,0BACA,4GACA;YAEF,OAAO,mBAAmB;QAC5B;IACF;IACA,SAAS,YAAY,IAAI;QACvB,IAAI,SAAS,qBAAqB,OAAO;QACzC,IACE,aAAa,OAAO,QACpB,SAAS,QACT,KAAK,QAAQ,KAAK,iBAElB,OAAO;QACT,IAAI;YACF,IAAI,OAAO,yBAAyB;YACpC,OAAO,OAAO,MAAM,OAAO,MAAM;QACnC,EAAE,OAAO,GAAG;YACV,OAAO;QACT;IACF;IACA,SAAS;QACP,IAAI,aAAa,qBAAqB,CAAC;QACvC,OAAO,SAAS,aAAa,OAAO,WAAW,QAAQ;IACzD;IACA,SAAS;QACP,OAAO,MAAM;IACf;IACA,SAAS,YAAY,MAAM;QACzB,IAAI,eAAe,IAAI,CAAC,QAAQ,QAAQ;YACtC,IAAI,SAAS,OAAO,wBAAwB,CAAC,QAAQ,OAAO,GAAG;YAC/D,IAAI,UAAU,OAAO,cAAc,EAAE,OAAO,CAAC;QAC/C;QACA,OAAO,KAAK,MAAM,OAAO,GAAG;IAC9B;IACA,SAAS,2BAA2B,KAAK,EAAE,WAAW;QACpD,SAAS;YACP,8BACE,CAAC,AAAC,6BAA6B,CAAC,GAChC,QAAQ,KAAK,CACX,2OACA,YACD;QACL;QACA,sBAAsB,cAAc,GAAG,CAAC;QACxC,OAAO,cAAc,CAAC,OAAO,OAAO;YAClC,KAAK;YACL,cAAc,CAAC;QACjB;IACF;IACA,SAAS;QACP,IAAI,gBAAgB,yBAAyB,IAAI,CAAC,IAAI;QACtD,sBAAsB,CAAC,cAAc,IACnC,CAAC,AAAC,sBAAsB,CAAC,cAAc,GAAG,CAAC,GAC3C,QAAQ,KAAK,CACX,8IACD;QACH,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG;QAC9B,OAAO,KAAK,MAAM,gBAAgB,gBAAgB;IACpD;IACA,SAAS,aAAa,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS;QAClE,IAAI,UAAU,MAAM,GAAG;QACvB,OAAO;YACL,UAAU;YACV,MAAM;YACN,KAAK;YACL,OAAO;YACP,QAAQ;QACV;QACA,SAAS,CAAC,KAAK,MAAM,UAAU,UAAU,IAAI,IACzC,OAAO,cAAc,CAAC,MAAM,OAAO;YACjC,YAAY,CAAC;YACb,KAAK;QACP,KACA,OAAO,cAAc,CAAC,MAAM,OAAO;YAAE,YAAY,CAAC;YAAG,OAAO;QAAK;QACrE,KAAK,MAAM,GAAG,CAAC;QACf,OAAO,cAAc,CAAC,KAAK,MAAM,EAAE,aAAa;YAC9C,cAAc,CAAC;YACf,YAAY,CAAC;YACb,UAAU,CAAC;YACX,OAAO;QACT;QACA,OAAO,cAAc,CAAC,MAAM,cAAc;YACxC,cAAc,CAAC;YACf,YAAY,CAAC;YACb,UAAU,CAAC;YACX,OAAO;QACT;QACA,OAAO,cAAc,CAAC,MAAM,eAAe;YACzC,cAAc,CAAC;YACf,YAAY,CAAC;YACb,UAAU,CAAC;YACX,OAAO;QACT;QACA,OAAO,cAAc,CAAC,MAAM,cAAc;YACxC,cAAc,CAAC;YACf,YAAY,CAAC;YACb,UAAU,CAAC;YACX,OAAO;QACT;QACA,OAAO,MAAM,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK;QAChE,OAAO;IACT;IACA,SAAS,WACP,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,SAAS;QAET,IAAI,WAAW,OAAO,QAAQ;QAC9B,IAAI,KAAK,MAAM,UACb,IAAI,kBACF,IAAI,YAAY,WAAW;YACzB,IACE,mBAAmB,GACnB,mBAAmB,SAAS,MAAM,EAClC,mBAEA,kBAAkB,QAAQ,CAAC,iBAAiB;YAC9C,OAAO,MAAM,IAAI,OAAO,MAAM,CAAC;QACjC,OACE,QAAQ,KAAK,CACX;aAED,kBAAkB;QACzB,IAAI,eAAe,IAAI,CAAC,QAAQ,QAAQ;YACtC,WAAW,yBAAyB;YACpC,IAAI,OAAO,OAAO,IAAI,CAAC,QAAQ,MAAM,CAAC,SAAU,CAAC;gBAC/C,OAAO,UAAU;YACnB;YACA,mBACE,IAAI,KAAK,MAAM,GACX,oBAAoB,KAAK,IAAI,CAAC,aAAa,WAC3C;YACN,qBAAqB,CAAC,WAAW,iBAAiB,IAChD,CAAC,AAAC,OACA,IAAI,KAAK,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC,aAAa,WAAW,MAC5D,QAAQ,KAAK,CACX,mOACA,kBACA,UACA,MACA,WAED,qBAAqB,CAAC,WAAW,iBAAiB,GAAG,CAAC,CAAE;QAC7D;QACA,WAAW;QACX,KAAK,MAAM,YACT,CAAC,uBAAuB,WAAY,WAAW,KAAK,QAAS;QAC/D,YAAY,WACV,CAAC,uBAAuB,OAAO,GAAG,GAAI,WAAW,KAAK,OAAO,GAAG,AAAC;QACnE,IAAI,SAAS,QAAQ;YACnB,WAAW,CAAC;YACZ,IAAK,IAAI,YAAY,OACnB,UAAU,YAAY,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;QAChE,OAAO,WAAW;QAClB,YACE,2BACE,UACA,eAAe,OAAO,OAClB,KAAK,WAAW,IAAI,KAAK,IAAI,IAAI,YACjC;QAER,OAAO,aACL,MACA,UACA,UACA,YACA,YACA;IAEJ;IACA,SAAS,kBAAkB,IAAI;QAC7B,eAAe,QACX,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC,SAAS,GAAG,CAAC,IACzC,aAAa,OAAO,QACpB,SAAS,QACT,KAAK,QAAQ,KAAK,mBAClB,CAAC,gBAAgB,KAAK,QAAQ,CAAC,MAAM,GACjC,eAAe,KAAK,QAAQ,CAAC,KAAK,KAClC,KAAK,QAAQ,CAAC,KAAK,CAAC,MAAM,IAC1B,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,IACzC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;IACpD;IACA,SAAS,eAAe,MAAM;QAC5B,OACE,aAAa,OAAO,UACpB,SAAS,UACT,OAAO,QAAQ,KAAK;IAExB;IACA,IAAI,qJACF,qBAAqB,OAAO,GAAG,CAAC,+BAChC,oBAAoB,OAAO,GAAG,CAAC,iBAC/B,sBAAsB,OAAO,GAAG,CAAC,mBACjC,yBAAyB,OAAO,GAAG,CAAC,sBACpC,sBAAsB,OAAO,GAAG,CAAC,mBACjC,sBAAsB,OAAO,GAAG,CAAC,mBACjC,qBAAqB,OAAO,GAAG,CAAC,kBAChC,yBAAyB,OAAO,GAAG,CAAC,sBACpC,sBAAsB,OAAO,GAAG,CAAC,mBACjC,2BAA2B,OAAO,GAAG,CAAC,wBACtC,kBAAkB,OAAO,GAAG,CAAC,eAC7B,kBAAkB,OAAO,GAAG,CAAC,eAC7B,sBAAsB,OAAO,GAAG,CAAC,mBACjC,6BAA6B,OAAO,GAAG,CAAC,0BACxC,yBAAyB,OAAO,GAAG,CAAC,2BACpC,uBACE,MAAM,+DAA+D,EACvE,iBAAiB,OAAO,SAAS,CAAC,cAAc,EAChD,cAAc,MAAM,OAAO,EAC3B,aAAa,QAAQ,UAAU,GAC3B,QAAQ,UAAU,GAClB;QACE,OAAO;IACT;IACN,QAAQ;QACN,0BAA0B,SAAU,iBAAiB;YACnD,OAAO;QACT;IACF;IACA,IAAI;IACJ,IAAI,yBAAyB,CAAC;IAC9B,IAAI,yBAAyB,MAAM,wBAAwB,CAAC,IAAI,CAC9D,OACA;IAEF,IAAI,wBAAwB,WAAW,YAAY;IACnD,IAAI,wBAAwB,CAAC;IAC7B,QAAQ,QAAQ,GAAG;IACnB,QAAQ,MAAM,GAAG,SAAU,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB;QACjE,IAAI,mBACF,MAAM,qBAAqB,0BAA0B;QACvD,IAAI,kBAAkB;YACpB,IAAI,0BAA0B,MAAM,eAAe;YACnD,MAAM,eAAe,GAAG;YACxB,IAAI,gBAAgB,MAAM;YAC1B,MAAM,eAAe,GAAG;QAC1B,OAAO,gBAAgB;QACvB,OAAO,WACL,MACA,QACA,UACA,kBACA,eACA,mBAAmB,WAAW,YAAY,SAAS;IAEvD;AACF","ignoreList":[0]}}, - {"offset": {"line": 576, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/dist/compiled/react/jsx-dev-runtime.js"],"sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-dev-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-dev-runtime.development.js');\n}\n"],"names":[],"mappings":"AAEI;AAFJ;AAEA;;KAEO;IACL,OAAO,OAAO;AAChB","ignoreList":[0]}}, - {"offset": {"line": 587, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/%40auth/core/errors.js"],"sourcesContent":["/**\n * Base error class for all Auth.js errors.\n * It's optimized to be printed in the server logs in a nicely formatted way\n * via the [`logger.error`](https://authjs.dev/reference/core#logger) option.\n * @noInheritDoc\n */\nexport class AuthError extends Error {\n /** @internal */\n constructor(message, errorOptions) {\n if (message instanceof Error) {\n super(undefined, {\n cause: { err: message, ...message.cause, ...errorOptions },\n });\n }\n else if (typeof message === \"string\") {\n if (errorOptions instanceof Error) {\n errorOptions = { err: errorOptions, ...errorOptions.cause };\n }\n super(message, errorOptions);\n }\n else {\n super(undefined, message);\n }\n this.name = this.constructor.name;\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/3841\n this.type = this.constructor.type ?? \"AuthError\";\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/3841\n this.kind = this.constructor.kind ?? \"error\";\n Error.captureStackTrace?.(this, this.constructor);\n const url = `https://errors.authjs.dev#${this.type.toLowerCase()}`;\n this.message += `${this.message ? \". \" : \"\"}Read more at ${url}`;\n }\n}\n/**\n * Thrown when the user's sign-in attempt failed.\n * @noInheritDoc\n */\nexport class SignInError extends AuthError {\n}\n/** @internal */\nSignInError.kind = \"signIn\";\n/**\n * One of the database [`Adapter` methods](https://authjs.dev/reference/core/adapters#methods)\n * failed during execution.\n *\n * :::tip\n * If `debug: true` is set, you can check out `[auth][debug]` in the logs to learn more about the failed adapter method execution.\n * @example\n * ```sh\n * [auth][debug]: adapter_getUserByEmail\n * { \"args\": [undefined] }\n * ```\n * :::\n * @noInheritDoc\n */\nexport class AdapterError extends AuthError {\n}\nAdapterError.type = \"AdapterError\";\n/**\n * Thrown when the execution of the [`signIn` callback](https://authjs.dev/reference/core/types#signin) fails\n * or if it returns `false`.\n * @noInheritDoc\n */\nexport class AccessDenied extends AuthError {\n}\nAccessDenied.type = \"AccessDenied\";\n/**\n * This error occurs when the user cannot finish login.\n * Depending on the provider type, this could have happened for multiple reasons.\n *\n * :::tip\n * Check out `[auth][details]` in the logs to know which provider failed.\n * @example\n * ```sh\n * [auth][details]: { \"provider\": \"github\" }\n * ```\n * :::\n *\n * For an [OAuth provider](https://authjs.dev/getting-started/authentication/oauth), possible causes are:\n * - The user denied access to the application\n * - There was an error parsing the OAuth Profile:\n * Check out the provider's `profile` or `userinfo.request` method to make sure\n * it correctly fetches the user's profile.\n * - The `signIn` or `jwt` callback methods threw an uncaught error:\n * Check the callback method implementations.\n *\n * For an [Email provider](https://authjs.dev/getting-started/authentication/email), possible causes are:\n * - The provided email/token combination was invalid/missing:\n * Check if the provider's `sendVerificationRequest` method correctly sends the email.\n * - The provided email/token combination has expired:\n * Ask the user to log in again.\n * - There was an error with the database:\n * Check the database logs.\n *\n * For a [Credentials provider](https://authjs.dev/getting-started/authentication/credentials), possible causes are:\n * - The `authorize` method threw an uncaught error:\n * Check the provider's `authorize` method.\n * - The `signIn` or `jwt` callback methods threw an uncaught error:\n * Check the callback method implementations.\n *\n * :::tip\n * Check out `[auth][cause]` in the error message for more details.\n * It will show the original stack trace.\n * :::\n * @noInheritDoc\n */\nexport class CallbackRouteError extends AuthError {\n}\nCallbackRouteError.type = \"CallbackRouteError\";\n/**\n * Thrown when Auth.js is misconfigured and accidentally tried to require authentication on a custom error page.\n * To prevent an infinite loop, Auth.js will instead render its default error page.\n *\n * To fix this, make sure that the `error` page does not require authentication.\n *\n * Learn more at [Guide: Error pages](https://authjs.dev/guides/pages/error)\n * @noInheritDoc\n */\nexport class ErrorPageLoop extends AuthError {\n}\nErrorPageLoop.type = \"ErrorPageLoop\";\n/**\n * One of the [`events` methods](https://authjs.dev/reference/core/types#eventcallbacks)\n * failed during execution.\n *\n * Make sure that the `events` methods are implemented correctly and uncaught errors are handled.\n *\n * Learn more at [`events`](https://authjs.dev/reference/core/types#eventcallbacks)\n * @noInheritDoc\n */\nexport class EventError extends AuthError {\n}\nEventError.type = \"EventError\";\n/**\n * Thrown when Auth.js is unable to verify a `callbackUrl` value.\n * The browser either disabled cookies or the `callbackUrl` is not a valid URL.\n *\n * Somebody might have tried to manipulate the callback URL that Auth.js uses to redirect the user back to the configured `callbackUrl`/page.\n * This could be a malicious hacker trying to redirect the user to a phishing site.\n * To prevent this, Auth.js checks if the callback URL is valid and throws this error if it is not.\n *\n * There is no action required, but it might be an indicator that somebody is trying to attack your application.\n * @noInheritDoc\n */\nexport class InvalidCallbackUrl extends AuthError {\n}\nInvalidCallbackUrl.type = \"InvalidCallbackUrl\";\n/**\n * Can be thrown from the `authorize` callback of the Credentials provider.\n * When an error occurs during the `authorize` callback, two things can happen:\n * 1. The user is redirected to the signin page, with `error=CredentialsSignin&code=credentials` in the URL. `code` is configurable.\n * 2. If you throw this error in a framework that handles form actions server-side, this error is thrown, instead of redirecting the user, so you'll need to handle.\n * @noInheritDoc\n */\nexport class CredentialsSignin extends SignInError {\n constructor() {\n super(...arguments);\n /**\n * The error code that is set in the `code` query parameter of the redirect URL.\n *\n *\n * ⚠ NOTE: This property is going to be included in the URL, so make sure it does not hint at sensitive errors.\n *\n * The full error is always logged on the server, if you need to debug.\n *\n * Generally, we don't recommend hinting specifically if the user had either a wrong username or password specifically,\n * try rather something like \"Invalid credentials\".\n */\n this.code = \"credentials\";\n }\n}\nCredentialsSignin.type = \"CredentialsSignin\";\n/**\n * One of the configured OAuth or OIDC providers is missing the `authorization`, `token` or `userinfo`, or `issuer` configuration.\n * To perform OAuth or OIDC sign in, at least one of these endpoints is required.\n *\n * Learn more at [`OAuth2Config`](https://authjs.dev/reference/core/providers#oauth2configprofile) or [Guide: OAuth Provider](https://authjs.dev/guides/configuring-oauth-providers)\n * @noInheritDoc\n */\nexport class InvalidEndpoints extends AuthError {\n}\nInvalidEndpoints.type = \"InvalidEndpoints\";\n/**\n * Thrown when a PKCE, state or nonce OAuth check could not be performed.\n * This could happen if the OAuth provider is configured incorrectly or if the browser is blocking cookies.\n *\n * Learn more at [`checks`](https://authjs.dev/reference/core/providers#checks)\n * @noInheritDoc\n */\nexport class InvalidCheck extends AuthError {\n}\nInvalidCheck.type = \"InvalidCheck\";\n/**\n * Logged on the server when Auth.js could not decode or encode a JWT-based (`strategy: \"jwt\"`) session.\n *\n * Possible causes are either a misconfigured `secret` or a malformed JWT or `encode/decode` methods.\n *\n * :::note\n * When this error is logged, the session cookie is destroyed.\n * :::\n *\n * Learn more at [`secret`](https://authjs.dev/reference/core#secret), [`jwt.encode`](https://authjs.dev/reference/core/jwt#encode-1) or [`jwt.decode`](https://authjs.dev/reference/core/jwt#decode-2) for more information.\n * @noInheritDoc\n */\nexport class JWTSessionError extends AuthError {\n}\nJWTSessionError.type = \"JWTSessionError\";\n/**\n * Thrown if Auth.js is misconfigured. This could happen if you configured an Email provider but did not set up a database adapter,\n * or tried using a `strategy: \"database\"` session without a database adapter.\n * In both cases, make sure you either remove the configuration or add the missing adapter.\n *\n * Learn more at [Database Adapters](https://authjs.dev/getting-started/database), [Email provider](https://authjs.dev/getting-started/authentication/email) or [Concept: Database session strategy](https://authjs.dev/concepts/session-strategies#database-session)\n * @noInheritDoc\n */\nexport class MissingAdapter extends AuthError {\n}\nMissingAdapter.type = \"MissingAdapter\";\n/**\n * Thrown similarily to [`MissingAdapter`](https://authjs.dev/reference/core/errors#missingadapter), but only some required methods were missing.\n *\n * Make sure you either remove the configuration or add the missing methods to the adapter.\n *\n * Learn more at [Database Adapters](https://authjs.dev/getting-started/database)\n * @noInheritDoc\n */\nexport class MissingAdapterMethods extends AuthError {\n}\nMissingAdapterMethods.type = \"MissingAdapterMethods\";\n/**\n * Thrown when a Credentials provider is missing the `authorize` configuration.\n * To perform credentials sign in, the `authorize` method is required.\n *\n * Learn more at [Credentials provider](https://authjs.dev/getting-started/authentication/credentials)\n * @noInheritDoc\n */\nexport class MissingAuthorize extends AuthError {\n}\nMissingAuthorize.type = \"MissingAuthorize\";\n/**\n * Auth.js requires a secret or multiple secrets to be set, but none was not found. This is used to encrypt cookies, JWTs and other sensitive data.\n *\n * :::note\n * If you are using a framework like Next.js, we try to automatically infer the secret from the `AUTH_SECRET`, `AUTH_SECRET_1`, etc. environment variables.\n * Alternatively, you can also explicitly set the [`AuthConfig.secret`](https://authjs.dev/reference/core#secret) option.\n * :::\n *\n *\n * :::tip\n * To generate a random string, you can use the Auth.js CLI: `npx auth secret`\n * :::\n * @noInheritDoc\n */\nexport class MissingSecret extends AuthError {\n}\nMissingSecret.type = \"MissingSecret\";\n/**\n * Thrown when an Email address is already associated with an account\n * but the user is trying an OAuth account that is not linked to it.\n *\n * For security reasons, Auth.js does not automatically link OAuth accounts to existing accounts if the user is not signed in.\n *\n * :::tip\n * If you trust the OAuth provider to have verified the user's email address,\n * you can enable automatic account linking by setting [`allowDangerousEmailAccountLinking: true`](https://authjs.dev/reference/core/providers#allowdangerousemailaccountlinking)\n * in the provider configuration.\n * :::\n * @noInheritDoc\n */\nexport class OAuthAccountNotLinked extends SignInError {\n}\nOAuthAccountNotLinked.type = \"OAuthAccountNotLinked\";\n/**\n * Thrown when an OAuth provider returns an error during the sign in process.\n * This could happen for example if the user denied access to the application or there was a configuration error.\n *\n * For a full list of possible reasons, check out the specification [Authorization Code Grant: Error Response](https://www.rfc-editor.org/rfc/rfc6749#section-4.1.2.1)\n * @noInheritDoc\n */\nexport class OAuthCallbackError extends SignInError {\n}\nOAuthCallbackError.type = \"OAuthCallbackError\";\n/**\n * This error occurs during an OAuth sign in attempt when the provider's\n * response could not be parsed. This could for example happen if the provider's API\n * changed, or the [`OAuth2Config.profile`](https://authjs.dev/reference/core/providers#oauth2configprofile) method is not implemented correctly.\n * @noInheritDoc\n */\nexport class OAuthProfileParseError extends AuthError {\n}\nOAuthProfileParseError.type = \"OAuthProfileParseError\";\n/**\n * Logged on the server when Auth.js could not retrieve a session from the database (`strategy: \"database\"`).\n *\n * The database adapter might be misconfigured or the database is not reachable.\n *\n * Learn more at [Concept: Database session strategy](https://authjs.dev/concepts/session-strategies#database)\n * @noInheritDoc\n */\nexport class SessionTokenError extends AuthError {\n}\nSessionTokenError.type = \"SessionTokenError\";\n/**\n * Happens when login by [OAuth](https://authjs.dev/getting-started/authentication/oauth) could not be started.\n *\n * Possible causes are:\n * - The Authorization Server is not compliant with the [OAuth 2.0](https://www.ietf.org/rfc/rfc6749.html) or the [OIDC](https://openid.net/specs/openid-connect-core-1_0.html) specification.\n * Check the details in the error message.\n *\n * :::tip\n * Check out `[auth][details]` in the logs to know which provider failed.\n * @example\n * ```sh\n * [auth][details]: { \"provider\": \"github\" }\n * ```\n * :::\n * @noInheritDoc\n */\nexport class OAuthSignInError extends SignInError {\n}\nOAuthSignInError.type = \"OAuthSignInError\";\n/**\n * Happens when the login by an [Email provider](https://authjs.dev/getting-started/authentication/email) could not be started.\n *\n * Possible causes are:\n * - The email sent from the client is invalid, could not be normalized by [`EmailConfig.normalizeIdentifier`](https://authjs.dev/reference/core/providers/email#normalizeidentifier)\n * - The provided email/token combination has expired:\n * Ask the user to log in again.\n * - There was an error with the database:\n * Check the database logs.\n * @noInheritDoc\n */\nexport class EmailSignInError extends SignInError {\n}\nEmailSignInError.type = \"EmailSignInError\";\n/**\n * Represents an error that occurs during the sign-out process. This error\n * is logged when there are issues in terminating a user's session, either\n * by failing to delete the session from the database (in database session\n * strategies) or encountering issues during other parts of the sign-out\n * process, such as emitting sign-out events or clearing session cookies.\n *\n * The session cookie(s) are emptied even if this error is logged.\n * @noInheritDoc\n */\nexport class SignOutError extends AuthError {\n}\nSignOutError.type = \"SignOutError\";\n/**\n * Auth.js was requested to handle an operation that it does not support.\n *\n * See [`AuthAction`](https://authjs.dev/reference/core/types#authaction) for the supported actions.\n * @noInheritDoc\n */\nexport class UnknownAction extends AuthError {\n}\nUnknownAction.type = \"UnknownAction\";\n/**\n * Thrown when a Credentials provider is present but the JWT strategy (`strategy: \"jwt\"`) is not enabled.\n *\n * Learn more at [`strategy`](https://authjs.dev/reference/core#strategy) or [Credentials provider](https://authjs.dev/getting-started/authentication/credentials)\n * @noInheritDoc\n */\nexport class UnsupportedStrategy extends AuthError {\n}\nUnsupportedStrategy.type = \"UnsupportedStrategy\";\n/**\n * Thrown when an endpoint was incorrectly called without a provider, or with an unsupported provider.\n * @noInheritDoc\n */\nexport class InvalidProvider extends AuthError {\n}\nInvalidProvider.type = \"InvalidProvider\";\n/**\n * Thrown when the `trustHost` option was not set to `true`.\n *\n * Auth.js requires the `trustHost` option to be set to `true` since it's relying on the request headers' `host` value.\n *\n * :::note\n * Official Auth.js libraries might attempt to automatically set the `trustHost` option to `true` if the request is coming from a trusted host on a trusted platform.\n * :::\n *\n * Learn more at [`trustHost`](https://authjs.dev/reference/core#trusthost) or [Guide: Deployment](https://authjs.dev/getting-started/deployment)\n * @noInheritDoc\n */\nexport class UntrustedHost extends AuthError {\n}\nUntrustedHost.type = \"UntrustedHost\";\n/**\n * The user's email/token combination was invalid.\n * This could be because the email/token combination was not found in the database,\n * or because the token has expired. Ask the user to log in again.\n * @noInheritDoc\n */\nexport class Verification extends AuthError {\n}\nVerification.type = \"Verification\";\n/**\n * Error for missing CSRF tokens in client-side actions (`signIn`, `signOut`, `useSession#update`).\n * Thrown when actions lack the double submit cookie, essential for CSRF protection.\n *\n * CSRF ([Cross-Site Request Forgery](https://owasp.org/www-community/attacks/csrf))\n * is an attack leveraging authenticated user credentials for unauthorized actions.\n *\n * Double submit cookie pattern, a CSRF defense, requires matching values in a cookie\n * and request parameter. More on this at [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Glossary/CSRF).\n * @noInheritDoc\n */\nexport class MissingCSRF extends SignInError {\n}\nMissingCSRF.type = \"MissingCSRF\";\nconst clientErrors = new Set([\n \"CredentialsSignin\",\n \"OAuthAccountNotLinked\",\n \"OAuthCallbackError\",\n \"AccessDenied\",\n \"Verification\",\n \"MissingCSRF\",\n \"AccountNotLinked\",\n \"WebAuthnVerificationError\",\n]);\n/**\n * Used to only allow sending a certain subset of errors to the client.\n * Errors are always logged on the server, but to prevent leaking sensitive information,\n * only a subset of errors are sent to the client as-is.\n * @internal\n */\nexport function isClientError(error) {\n if (error instanceof AuthError)\n return clientErrors.has(error.type);\n return false;\n}\n/**\n * Thrown when multiple providers have `enableConditionalUI` set to `true`.\n * Only one provider can have this option enabled at a time.\n * @noInheritDoc\n */\nexport class DuplicateConditionalUI extends AuthError {\n}\nDuplicateConditionalUI.type = \"DuplicateConditionalUI\";\n/**\n * Thrown when a WebAuthn provider has `enableConditionalUI` set to `true` but no formField has `webauthn` in its autocomplete param.\n *\n * The `webauthn` autocomplete param is required for conditional UI to work.\n * @noInheritDoc\n */\nexport class MissingWebAuthnAutocomplete extends AuthError {\n}\nMissingWebAuthnAutocomplete.type = \"MissingWebAuthnAutocomplete\";\n/**\n * Thrown when a WebAuthn provider fails to verify a client response.\n * @noInheritDoc\n */\nexport class WebAuthnVerificationError extends AuthError {\n}\nWebAuthnVerificationError.type = \"WebAuthnVerificationError\";\n/**\n * Thrown when an Email address is already associated with an account\n * but the user is trying an account that is not linked to it.\n *\n * For security reasons, Auth.js does not automatically link accounts to existing accounts if the user is not signed in.\n * @noInheritDoc\n */\nexport class AccountNotLinked extends SignInError {\n}\nAccountNotLinked.type = \"AccountNotLinked\";\n/**\n * Thrown when an experimental feature is used but not enabled.\n * @noInheritDoc\n */\nexport class ExperimentalFeatureNotEnabled extends AuthError {\n}\nExperimentalFeatureNotEnabled.type = \"ExperimentalFeatureNotEnabled\";\n"],"names":[],"mappings":"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","ignoreList":[0]}}, - {"offset": {"line": 826, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next-auth/lib/client.js"],"sourcesContent":["\"use client\";\nimport * as React from \"react\";\nimport { AuthError } from \"@auth/core/errors\";\n/** @todo */\nclass ClientFetchError extends AuthError {\n}\n/** @todo */\nexport class ClientSessionError extends AuthError {\n}\n// ------------------------ Internal ------------------------\n/**\n * If passed 'appContext' via getInitialProps() in _app.js\n * then get the req object from ctx and use that for the\n * req value to allow `fetchData` to\n * work seemlessly in getInitialProps() on server side\n * pages *and* in _app.js.\n * @internal\n */\nexport async function fetchData(path, __NEXTAUTH, logger, req = {}) {\n const url = `${apiBaseUrl(__NEXTAUTH)}/${path}`;\n try {\n const options = {\n headers: {\n \"Content-Type\": \"application/json\",\n ...(req?.headers?.cookie ? { cookie: req.headers.cookie } : {}),\n },\n };\n if (req?.body) {\n options.body = JSON.stringify(req.body);\n options.method = \"POST\";\n }\n const res = await fetch(url, options);\n const data = await res.json();\n if (!res.ok)\n throw data;\n return data;\n }\n catch (error) {\n logger.error(new ClientFetchError(error.message, error));\n return null;\n }\n}\n/** @internal */\nexport function apiBaseUrl(__NEXTAUTH) {\n if (typeof window === \"undefined\") {\n // Return absolute path when called server side\n return `${__NEXTAUTH.baseUrlServer}${__NEXTAUTH.basePathServer}`;\n }\n // Return relative path when called client side\n return __NEXTAUTH.basePath;\n}\n/** @internal */\nexport function useOnline() {\n const [isOnline, setIsOnline] = React.useState(typeof navigator !== \"undefined\" ? navigator.onLine : false);\n const setOnline = () => setIsOnline(true);\n const setOffline = () => setIsOnline(false);\n React.useEffect(() => {\n window.addEventListener(\"online\", setOnline);\n window.addEventListener(\"offline\", setOffline);\n return () => {\n window.removeEventListener(\"online\", setOnline);\n window.removeEventListener(\"offline\", setOffline);\n };\n }, []);\n return isOnline;\n}\n/**\n * Returns the number of seconds elapsed since January 1, 1970 00:00:00 UTC.\n * @internal\n */\nexport function now() {\n return Math.floor(Date.now() / 1000);\n}\n/**\n * Returns an `URL` like object to make requests/redirects from server-side\n * @internal\n */\nexport function parseUrl(url) {\n const defaultUrl = new URL(\"http://localhost:3000/api/auth\");\n if (url && !url.startsWith(\"http\")) {\n url = `https://${url}`;\n }\n const _url = new URL(url || defaultUrl);\n const path = (_url.pathname === \"/\" ? defaultUrl.pathname : _url.pathname)\n // Remove trailing slash\n .replace(/\\/$/, \"\");\n const base = `${_url.origin}${path}`;\n return {\n origin: _url.origin,\n host: _url.host,\n path,\n base,\n toString: () => base,\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AACA;AACA;AAFA;;;AAGA,UAAU,GACV,MAAM,yBAAyB,oMAAS;AACxC;AAEO,MAAM,2BAA2B,oMAAS;AACjD;AAUO,eAAe,UAAU,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,WAAW,YAAY,CAAC,EAAE,MAAM;IAC/C,IAAI;QACA,MAAM,UAAU;YACZ,SAAS;gBACL,gBAAgB;gBAChB,GAAI,KAAK,SAAS,SAAS;oBAAE,QAAQ,IAAI,OAAO,CAAC,MAAM;gBAAC,IAAI,CAAC,CAAC;YAClE;QACJ;QACA,IAAI,KAAK,MAAM;YACX,QAAQ,IAAI,GAAG,KAAK,SAAS,CAAC,IAAI,IAAI;YACtC,QAAQ,MAAM,GAAG;QACrB;QACA,MAAM,MAAM,MAAM,MAAM,KAAK;QAC7B,MAAM,OAAO,MAAM,IAAI,IAAI;QAC3B,IAAI,CAAC,IAAI,EAAE,EACP,MAAM;QACV,OAAO;IACX,EACA,OAAO,OAAO;QACV,OAAO,KAAK,CAAC,IAAI,iBAAiB,MAAM,OAAO,EAAE;QACjD,OAAO;IACX;AACJ;AAEO,SAAS,WAAW,UAAU;IACjC,IAAI,OAAO,WAAW,aAAa;QAC/B,+CAA+C;QAC/C,OAAO,GAAG,WAAW,aAAa,GAAG,WAAW,cAAc,EAAE;IACpE;IACA,+CAA+C;IAC/C,OAAO,WAAW,QAAQ;AAC9B;AAEO,SAAS;IACZ,MAAM,CAAC,UAAU,YAAY,GAAG,qNAAc,CAAC,OAAO,cAAc,cAAc,UAAU,MAAM,GAAG;IACrG,MAAM,YAAY,IAAM,YAAY;IACpC,MAAM,aAAa,IAAM,YAAY;IACrC,sNAAe;+BAAC;YACZ,OAAO,gBAAgB,CAAC,UAAU;YAClC,OAAO,gBAAgB,CAAC,WAAW;YACnC;uCAAO;oBACH,OAAO,mBAAmB,CAAC,UAAU;oBACrC,OAAO,mBAAmB,CAAC,WAAW;gBAC1C;;QACJ;8BAAG,EAAE;IACL,OAAO;AACX;AAKO,SAAS;IACZ,OAAO,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK;AACnC;AAKO,SAAS,SAAS,GAAG;IACxB,MAAM,aAAa,IAAI,IAAI;IAC3B,IAAI,OAAO,CAAC,IAAI,UAAU,CAAC,SAAS;QAChC,MAAM,CAAC,QAAQ,EAAE,KAAK;IAC1B;IACA,MAAM,OAAO,IAAI,IAAI,OAAO;IAC5B,MAAM,OAAO,CAAC,KAAK,QAAQ,KAAK,MAAM,WAAW,QAAQ,GAAG,KAAK,QAAQ,CACrE,wBAAwB;KACvB,OAAO,CAAC,OAAO;IACpB,MAAM,OAAO,GAAG,KAAK,MAAM,GAAG,MAAM;IACpC,OAAO;QACH,QAAQ,KAAK,MAAM;QACnB,MAAM,KAAK,IAAI;QACf;QACA;QACA,UAAU,IAAM;IACpB;AACJ","ignoreList":[0]}}, - {"offset": {"line": 923, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next-auth/react.js"],"sourcesContent":["/**\n *\n * NextAuth.js is the official integration of Auth.js for Next.js applications. It supports both\n * [Client Components](https://nextjs.org/docs/app/building-your-application/rendering/client-components) and the\n * [Pages Router](https://nextjs.org/docs/pages). It includes methods for signing in, signing out, hooks, and a React\n * Context provider to wrap your application and make session data available anywhere.\n *\n * For use in [Server Actions](https://nextjs.org/docs/app/api-reference/functions/server-actions), check out [these methods](https://authjs.dev/guides/upgrade-to-v5#methods)\n *\n * @module react\n */\n\"use client\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { apiBaseUrl, ClientSessionError, fetchData, now, parseUrl, useOnline, } from \"./lib/client.js\";\n// This behaviour mirrors the default behaviour for getting the site name that\n// happens server side in server/index.js\n// 1. An empty value is legitimate when the code is being invoked client side as\n// relative URLs are valid in that context and so defaults to empty.\n// 2. When invoked server side the value is picked up from an environment\n// variable and defaults to 'http://localhost:3000'.\nexport const __NEXTAUTH = {\n baseUrl: parseUrl(process.env.NEXTAUTH_URL ?? process.env.VERCEL_URL).origin,\n basePath: parseUrl(process.env.NEXTAUTH_URL).path,\n baseUrlServer: parseUrl(process.env.NEXTAUTH_URL_INTERNAL ??\n process.env.NEXTAUTH_URL ??\n process.env.VERCEL_URL).origin,\n basePathServer: parseUrl(process.env.NEXTAUTH_URL_INTERNAL ?? process.env.NEXTAUTH_URL).path,\n _lastSync: 0,\n _session: undefined,\n _getSession: () => { },\n};\n// https://github.com/nextauthjs/next-auth/pull/10762\nlet broadcastChannel = null;\nfunction getNewBroadcastChannel() {\n if (typeof BroadcastChannel === \"undefined\") {\n return {\n postMessage: () => { },\n addEventListener: () => { },\n removeEventListener: () => { },\n name: \"next-auth\",\n onmessage: null,\n onmessageerror: null,\n close: () => { },\n dispatchEvent: () => false,\n };\n }\n return new BroadcastChannel(\"next-auth\");\n}\nfunction broadcast() {\n if (broadcastChannel === null) {\n broadcastChannel = getNewBroadcastChannel();\n }\n return broadcastChannel;\n}\n// TODO:\nconst logger = {\n debug: console.debug,\n error: console.error,\n warn: console.warn,\n};\nexport const SessionContext = React.createContext?.(undefined);\n/**\n * React Hook that gives you access to the logged in user's session data and lets you modify it.\n *\n * :::info\n * `useSession` is for client-side use only and when using [Next.js App Router (`app/`)](https://nextjs.org/blog/next-13-4#nextjs-app-router) you should prefer the `auth()` export.\n * :::\n */\nexport function useSession(options) {\n if (!SessionContext) {\n throw new Error(\"React Context is unavailable in Server Components\");\n }\n // @ts-expect-error Satisfy TS if branch on line below\n const value = React.useContext(SessionContext);\n if (!value && process.env.NODE_ENV !== \"production\") {\n throw new Error(\"[next-auth]: `useSession` must be wrapped in a \");\n }\n const { required, onUnauthenticated } = options ?? {};\n const requiredAndNotLoading = required && value.status === \"unauthenticated\";\n React.useEffect(() => {\n if (requiredAndNotLoading) {\n const url = `${__NEXTAUTH.basePath}/signin?${new URLSearchParams({\n error: \"SessionRequired\",\n callbackUrl: window.location.href,\n })}`;\n if (onUnauthenticated)\n onUnauthenticated();\n else\n window.location.href = url;\n }\n }, [requiredAndNotLoading, onUnauthenticated]);\n if (requiredAndNotLoading) {\n return {\n data: value.data,\n update: value.update,\n status: \"loading\",\n };\n }\n return value;\n}\nexport async function getSession(params) {\n const session = await fetchData(\"session\", __NEXTAUTH, logger, params);\n if (params?.broadcast ?? true) {\n // https://github.com/nextauthjs/next-auth/pull/11470\n getNewBroadcastChannel().postMessage({\n event: \"session\",\n data: { trigger: \"getSession\" },\n });\n }\n return session;\n}\n/**\n * Returns the current Cross-Site Request Forgery Token (CSRF Token)\n * required to make requests that changes state. (e.g. signing in or out, or updating the session).\n *\n * [CSRF Prevention: Double Submit Cookie](https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#double-submit-cookie)\n */\nexport async function getCsrfToken() {\n const response = await fetchData(\"csrf\", __NEXTAUTH, logger);\n return response?.csrfToken ?? \"\";\n}\nexport async function getProviders() {\n return fetchData(\"providers\", __NEXTAUTH, logger);\n}\nexport async function signIn(provider, options, authorizationParams) {\n const { callbackUrl, ...rest } = options ?? {};\n const { redirect = true, redirectTo = callbackUrl ?? window.location.href, ...signInParams } = rest;\n const baseUrl = apiBaseUrl(__NEXTAUTH);\n const providers = await getProviders();\n if (!providers) {\n const url = `${baseUrl}/error`;\n window.location.href = url;\n return; // TODO: Return error if `redirect: false`\n }\n if (!provider || !providers[provider]) {\n const url = `${baseUrl}/signin?${new URLSearchParams({\n callbackUrl: redirectTo,\n })}`;\n window.location.href = url;\n return; // TODO: Return error if `redirect: false`\n }\n const providerType = providers[provider].type;\n if (providerType === \"webauthn\") {\n // TODO: Add docs link with explanation\n throw new TypeError([\n `Provider id \"${provider}\" refers to a WebAuthn provider.`,\n 'Please use `import { signIn } from \"next-auth/webauthn\"` instead.',\n ].join(\"\\n\"));\n }\n const signInUrl = `${baseUrl}/${providerType === \"credentials\" ? \"callback\" : \"signin\"}/${provider}`;\n const csrfToken = await getCsrfToken();\n const res = await fetch(`${signInUrl}?${new URLSearchParams(authorizationParams)}`, {\n method: \"post\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"X-Auth-Return-Redirect\": \"1\",\n },\n body: new URLSearchParams({\n ...signInParams,\n csrfToken,\n callbackUrl: redirectTo,\n }),\n });\n const data = await res.json();\n if (redirect) {\n const url = data.url ?? redirectTo;\n window.location.href = url;\n // If url contains a hash, the browser does not reload the page. We reload manually\n if (url.includes(\"#\"))\n window.location.reload();\n return;\n }\n const error = new URL(data.url).searchParams.get(\"error\") ?? undefined;\n const code = new URL(data.url).searchParams.get(\"code\") ?? undefined;\n if (res.ok) {\n await __NEXTAUTH._getSession({ event: \"storage\" });\n }\n return {\n error,\n code,\n status: res.status,\n ok: res.ok,\n url: error ? null : data.url,\n };\n}\nexport async function signOut(options) {\n const { redirect = true, redirectTo = options?.callbackUrl ?? window.location.href, } = options ?? {};\n const baseUrl = apiBaseUrl(__NEXTAUTH);\n const csrfToken = await getCsrfToken();\n const res = await fetch(`${baseUrl}/signout`, {\n method: \"post\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"X-Auth-Return-Redirect\": \"1\",\n },\n body: new URLSearchParams({ csrfToken, callbackUrl: redirectTo }),\n });\n const data = await res.json();\n broadcast().postMessage({ event: \"session\", data: { trigger: \"signout\" } });\n if (redirect) {\n const url = data.url ?? redirectTo;\n window.location.href = url;\n // If url contains a hash, the browser does not reload the page. We reload manually\n if (url.includes(\"#\"))\n window.location.reload();\n return;\n }\n await __NEXTAUTH._getSession({ event: \"storage\" });\n return data;\n}\n/**\n * [React Context](https://react.dev/learn/passing-data-deeply-with-context) provider to wrap the app (`pages/`) to make session data available anywhere.\n *\n * When used, the session state is automatically synchronized across all open tabs/windows and they are all updated whenever they gain or lose focus\n * or the state changes (e.g. a user signs in or out) when {@link SessionProviderProps.refetchOnWindowFocus} is `true`.\n *\n * :::info\n * `SessionProvider` is for client-side use only and when using [Next.js App Router (`app/`)](https://nextjs.org/blog/next-13-4#nextjs-app-router) you should prefer the `auth()` export.\n * :::\n */\nexport function SessionProvider(props) {\n if (!SessionContext) {\n throw new Error(\"React Context is unavailable in Server Components\");\n }\n const { children, basePath, refetchInterval, refetchWhenOffline } = props;\n if (basePath)\n __NEXTAUTH.basePath = basePath;\n /**\n * If session was `null`, there was an attempt to fetch it,\n * but it failed, but we still treat it as a valid initial value.\n */\n const hasInitialSession = props.session !== undefined;\n /** If session was passed, initialize as already synced */\n __NEXTAUTH._lastSync = hasInitialSession ? now() : 0;\n const [session, setSession] = React.useState(() => {\n if (hasInitialSession)\n __NEXTAUTH._session = props.session;\n return props.session;\n });\n /** If session was passed, initialize as not loading */\n const [loading, setLoading] = React.useState(!hasInitialSession);\n React.useEffect(() => {\n __NEXTAUTH._getSession = async ({ event } = {}) => {\n try {\n const storageEvent = event === \"storage\";\n // We should always update if we don't have a client session yet\n // or if there are events from other tabs/windows\n if (storageEvent || __NEXTAUTH._session === undefined) {\n __NEXTAUTH._lastSync = now();\n __NEXTAUTH._session = await getSession({\n broadcast: !storageEvent,\n });\n setSession(__NEXTAUTH._session);\n return;\n }\n if (\n // If there is no time defined for when a session should be considered\n // stale, then it's okay to use the value we have until an event is\n // triggered which updates it\n !event ||\n // If the client doesn't have a session then we don't need to call\n // the server to check if it does (if they have signed in via another\n // tab or window that will come through as a \"stroage\" event\n // event anyway)\n __NEXTAUTH._session === null ||\n // Bail out early if the client session is not stale yet\n now() < __NEXTAUTH._lastSync) {\n return;\n }\n // An event or session staleness occurred, update the client session.\n __NEXTAUTH._lastSync = now();\n __NEXTAUTH._session = await getSession();\n setSession(__NEXTAUTH._session);\n }\n catch (error) {\n logger.error(new ClientSessionError(error.message, error));\n }\n finally {\n setLoading(false);\n }\n };\n __NEXTAUTH._getSession();\n return () => {\n __NEXTAUTH._lastSync = 0;\n __NEXTAUTH._session = undefined;\n __NEXTAUTH._getSession = () => { };\n };\n }, []);\n React.useEffect(() => {\n const handle = () => __NEXTAUTH._getSession({ event: \"storage\" });\n // Listen for storage events and update session if event fired from\n // another window (but suppress firing another event to avoid a loop)\n // Fetch new session data but tell it to not to fire another event to\n // avoid an infinite loop.\n // Note: We could pass session data through and do something like\n // `setData(message.data)` but that can cause problems depending\n // on how the session object is being used in the client; it is\n // more robust to have each window/tab fetch it's own copy of the\n // session object rather than share it across instances.\n broadcast().addEventListener(\"message\", handle);\n return () => broadcast().removeEventListener(\"message\", handle);\n }, []);\n React.useEffect(() => {\n const { refetchOnWindowFocus = true } = props;\n // Listen for when the page is visible, if the user switches tabs\n // and makes our tab visible again, re-fetch the session, but only if\n // this feature is not disabled.\n const visibilityHandler = () => {\n if (refetchOnWindowFocus && document.visibilityState === \"visible\")\n __NEXTAUTH._getSession({ event: \"visibilitychange\" });\n };\n document.addEventListener(\"visibilitychange\", visibilityHandler, false);\n return () => document.removeEventListener(\"visibilitychange\", visibilityHandler, false);\n }, [props.refetchOnWindowFocus]);\n const isOnline = useOnline();\n // TODO: Flip this behavior in next major version\n const shouldRefetch = refetchWhenOffline !== false || isOnline;\n React.useEffect(() => {\n if (refetchInterval && shouldRefetch) {\n const refetchIntervalTimer = setInterval(() => {\n if (__NEXTAUTH._session) {\n __NEXTAUTH._getSession({ event: \"poll\" });\n }\n }, refetchInterval * 1000);\n return () => clearInterval(refetchIntervalTimer);\n }\n }, [refetchInterval, shouldRefetch]);\n const value = React.useMemo(() => ({\n data: session,\n status: loading\n ? \"loading\"\n : session\n ? \"authenticated\"\n : \"unauthenticated\",\n async update(data) {\n if (loading)\n return;\n setLoading(true);\n const newSession = await fetchData(\"session\", __NEXTAUTH, logger, typeof data === \"undefined\"\n ? undefined\n : { body: { csrfToken: await getCsrfToken(), data } });\n setLoading(false);\n if (newSession) {\n setSession(newSession);\n broadcast().postMessage({\n event: \"session\",\n data: { trigger: \"getSession\" },\n });\n }\n return newSession;\n },\n }), [session, loading]);\n return (\n // @ts-expect-error\n _jsx(SessionContext.Provider, { value: value, children: children }));\n}\n"],"names":[],"mappings":"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","ignoreList":[0]}}] + {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/api.ts"],"sourcesContent":["import { BookProject, UserProfile } from './types';\r\n\r\nconst API_BASE_URL = '/api';\r\n\r\n// --- API CLIENT ---\r\n\r\nconst api = {\r\n async request(endpoint: string, options: RequestInit = {}) {\r\n const url = `${API_BASE_URL}${endpoint}`;\r\n\r\n const headers: Record = {\r\n 'Content-Type': 'application/json',\r\n ...options.headers as Record,\r\n };\r\n\r\n const response = await fetch(url, {\r\n ...options,\r\n headers,\r\n });\r\n\r\n if (!response.ok) {\r\n let errorMsg = `Error ${response.status}: ${response.statusText}`;\r\n try {\r\n const errorJson = await response.json();\r\n if (errorJson.error) errorMsg = errorJson.error;\r\n if (errorJson.message) errorMsg = errorJson.message;\r\n } catch {\r\n // Ignore json parse error\r\n }\r\n throw new Error(errorMsg);\r\n }\r\n\r\n if (response.status === 204) return null;\r\n return response.json();\r\n },\r\n\r\n // --- AUTH ---\r\n auth: {\r\n async register(email: string, password: string, name: string) {\r\n return api.request('/auth/register', {\r\n method: 'POST',\r\n body: JSON.stringify({ email, password, name }),\r\n });\r\n },\r\n },\r\n\r\n // --- PROJECTS ---\r\n projects: {\r\n async list() {\r\n return api.request('/projects');\r\n },\r\n\r\n async get(id: string) {\r\n return api.request(`/projects/${id}`);\r\n },\r\n\r\n async create(data: { title: string; author: string; settings?: any }) {\r\n return api.request('/projects', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/projects/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/projects/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n\r\n async syncWorkflow(id: string, data: { nodes: any[]; connections: any[] }) {\r\n return api.request(`/projects/${id}/workflow`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n },\r\n\r\n // --- CHAPTERS ---\r\n chapters: {\r\n async create(data: { projectId: string; title?: string; content?: string; summary?: string; orderIndex?: number }) {\r\n return api.request('/chapters', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/chapters/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/chapters/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n },\r\n\r\n // --- ENTITIES ---\r\n entities: {\r\n async create(data: { projectId: string; type: string; name?: string; description?: string; details?: string; attributes?: any; customValues?: any }) {\r\n return api.request('/entities', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/entities/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/entities/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n },\r\n\r\n // --- IDEAS ---\r\n ideas: {\r\n async create(data: { projectId: string; title?: string; description?: string; status?: string; category?: string }) {\r\n return api.request('/ideas', {\r\n method: 'POST',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async update(id: string, data: any) {\r\n return api.request(`/ideas/${id}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n });\r\n },\r\n\r\n async delete(id: string) {\r\n return api.request(`/ideas/${id}`, {\r\n method: 'DELETE',\r\n });\r\n },\r\n },\r\n\r\n // --- AI (server-side via API routes) ---\r\n ai: {\r\n async generate(project: BookProject, chapterId: string, prompt: string, user: UserProfile) {\r\n return api.request<{ text: string; type: 'draft' | 'reflection' }>('/ai/generate', {\r\n method: 'POST',\r\n body: JSON.stringify({ project, chapterId, prompt, user }),\r\n });\r\n },\r\n\r\n async transform(text: string, mode: string, context: string, user: UserProfile) {\r\n const res = await api.request<{ text: string }>('/ai/transform', {\r\n method: 'POST',\r\n body: JSON.stringify({ text, mode, context, user }),\r\n });\r\n return res.text;\r\n },\r\n },\r\n};\r\n\r\nexport default api;\r\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 175, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useAuth.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect, useCallback } from 'react';\r\nimport { signIn, signOut, useSession } from 'next-auth/react';\r\nimport { UserProfile } from '@/lib/types';\r\nimport api from '@/lib/api';\r\n\r\nexport const useAuth = () => {\r\n const { data: session, status } = useSession();\r\n const [user, setUser] = useState(null);\r\n const loading = status === 'loading';\r\n\r\n // Sync session to UserProfile\r\n useEffect(() => {\r\n if (session?.user) {\r\n setUser({\r\n id: session.user.id || '',\r\n email: session.user.email || '',\r\n name: session.user.name || 'User',\r\n subscription: { plan: 'free', startDate: Date.now(), status: 'active' },\r\n usage: { aiActionsCurrent: 0, aiActionsLimit: 100, projectsLimit: 3 },\r\n preferences: { theme: 'light', dailyWordGoal: 500, language: 'fr' },\r\n stats: { totalWordsWritten: 0, writingStreak: 0, lastWriteDate: 0 },\r\n });\r\n } else if (status === 'unauthenticated') {\r\n setUser(null);\r\n }\r\n }, [session, status]);\r\n\r\n const login = useCallback(async (email: string, password: string) => {\r\n const result = await signIn('credentials', {\r\n email,\r\n password,\r\n redirect: false,\r\n });\r\n\r\n if (result?.error) {\r\n throw new Error(result.error === 'CredentialsSignin'\r\n ? 'Email ou mot de passe incorrect'\r\n : result.error\r\n );\r\n }\r\n }, []);\r\n\r\n const signup = useCallback(async (email: string, password: string, name: string) => {\r\n // 1. Register via API\r\n await api.auth.register(email, password, name);\r\n\r\n // 2. Auto-login\r\n const result = await signIn('credentials', {\r\n email,\r\n password,\r\n redirect: false,\r\n });\r\n\r\n if (result?.error) {\r\n throw new Error('Compte créé mais erreur de connexion automatique');\r\n }\r\n }, []);\r\n\r\n const logout = useCallback(async () => {\r\n await signOut({ redirect: false });\r\n setUser(null);\r\n }, []);\r\n\r\n const incrementUsage = useCallback(() => {\r\n if (user) {\r\n setUser({\r\n ...user,\r\n usage: { ...user.usage, aiActionsCurrent: user.usage.aiActionsCurrent + 1 },\r\n });\r\n }\r\n }, [user]);\r\n\r\n return { user, login, signup, logout, incrementUsage, loading };\r\n};\r\n"],"names":[],"mappings":";;;;AAEA;AACA;AAEA;;AALA;;;;AAOO,MAAM,UAAU;;IACnB,MAAM,EAAE,MAAM,OAAO,EAAE,MAAM,EAAE,GAAG,IAAA,kMAAU;IAC5C,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAA,qNAAQ,EAAqB;IACrD,MAAM,UAAU,WAAW;IAE3B,8BAA8B;IAC9B,IAAA,sNAAS;6BAAC;YACN,IAAI,SAAS,MAAM;gBACf,QAAQ;oBACJ,IAAI,QAAQ,IAAI,CAAC,EAAE,IAAI;oBACvB,OAAO,QAAQ,IAAI,CAAC,KAAK,IAAI;oBAC7B,MAAM,QAAQ,IAAI,CAAC,IAAI,IAAI;oBAC3B,cAAc;wBAAE,MAAM;wBAAQ,WAAW,KAAK,GAAG;wBAAI,QAAQ;oBAAS;oBACtE,OAAO;wBAAE,kBAAkB;wBAAG,gBAAgB;wBAAK,eAAe;oBAAE;oBACpE,aAAa;wBAAE,OAAO;wBAAS,eAAe;wBAAK,UAAU;oBAAK;oBAClE,OAAO;wBAAE,mBAAmB;wBAAG,eAAe;wBAAG,eAAe;oBAAE;gBACtE;YACJ,OAAO,IAAI,WAAW,mBAAmB;gBACrC,QAAQ;YACZ;QACJ;4BAAG;QAAC;QAAS;KAAO;IAEpB,MAAM,QAAQ,IAAA,wNAAW;sCAAC,OAAO,OAAe;YAC5C,MAAM,SAAS,MAAM,IAAA,8LAAM,EAAC,eAAe;gBACvC;gBACA;gBACA,UAAU;YACd;YAEA,IAAI,QAAQ,OAAO;gBACf,MAAM,IAAI,MAAM,OAAO,KAAK,KAAK,sBAC3B,oCACA,OAAO,KAAK;YAEtB;QACJ;qCAAG,EAAE;IAEL,MAAM,SAAS,IAAA,wNAAW;uCAAC,OAAO,OAAe,UAAkB;YAC/D,sBAAsB;YACtB,MAAM,2KAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,UAAU;YAEzC,gBAAgB;YAChB,MAAM,SAAS,MAAM,IAAA,8LAAM,EAAC,eAAe;gBACvC;gBACA;gBACA,UAAU;YACd;YAEA,IAAI,QAAQ,OAAO;gBACf,MAAM,IAAI,MAAM;YACpB;QACJ;sCAAG,EAAE;IAEL,MAAM,SAAS,IAAA,wNAAW;uCAAC;YACvB,MAAM,IAAA,+LAAO,EAAC;gBAAE,UAAU;YAAM;YAChC,QAAQ;QACZ;sCAAG,EAAE;IAEL,MAAM,iBAAiB,IAAA,wNAAW;+CAAC;YAC/B,IAAI,MAAM;gBACN,QAAQ;oBACJ,GAAG,IAAI;oBACP,OAAO;wBAAE,GAAG,KAAK,KAAK;wBAAE,kBAAkB,KAAK,KAAK,CAAC,gBAAgB,GAAG;oBAAE;gBAC9E;YACJ;QACJ;8CAAG;QAAC;KAAK;IAET,OAAO;QAAE;QAAM;QAAO;QAAQ;QAAQ;QAAgB;IAAQ;AAClE;GApEa;;QACyB,kMAAU"}}, + {"offset": {"line": 300, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/providers/AuthProvider.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { createContext, useContext } from 'react';\r\nimport { SessionProvider } from 'next-auth/react';\r\nimport { useAuth } from '@/hooks/useAuth';\r\n\r\nconst AuthContext = createContext(null);\r\n\r\nfunction AuthInner({ children }: { children: React.ReactNode }) {\r\n const auth = useAuth();\r\n return {children};\r\n}\r\n\r\nexport const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport function useAuthContext() {\r\n return useContext(AuthContext);\r\n}\r\n"],"names":[],"mappings":";;;;;;;AAEA;AACA;AACA;;;AAJA;;;;AAMA,MAAM,4BAAc,IAAA,0NAAa,EAAM;AAEvC,SAAS,UAAU,EAAE,QAAQ,EAAiC;;IAC1D,MAAM,OAAO,IAAA,iLAAO;IACpB,qBAAO,yOAAC,YAAY,QAAQ;QAAC,OAAO;kBAAO;;;;;;AAC/C;GAHS;;QACQ,iLAAO;;;KADf;AAKF,MAAM,eAAwD,CAAC,EAAE,QAAQ,EAAE;IAC9E,qBACI,yOAAC,uMAAe;kBACZ,cAAA,yOAAC;sBAAW;;;;;;;;;;;AAGxB;MANa;AAQN,SAAS;;IACZ,OAAO,IAAA,uNAAU,EAAC;AACtB;IAFgB"}}, + {"offset": {"line": 366, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js"],"sourcesContent":["/**\n * @license React\n * react-jsx-dev-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n case REACT_VIEW_TRANSITION_TYPE:\n return \"ViewTransition\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"next/dist/compiled/react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsxDEV = function (type, config, maybeKey, isStaticChildren) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n if (trackActualOwner) {\n var previousStackTraceLimit = Error.stackTraceLimit;\n Error.stackTraceLimit = 10;\n var debugStackDEV = Error(\"react-stack-top-frame\");\n Error.stackTraceLimit = previousStackTraceLimit;\n } else debugStackDEV = unknownOwnerDebugStack;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStackDEV,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n"],"names":[],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 582, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/dist/compiled/react/jsx-dev-runtime.js"],"sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-dev-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-dev-runtime.development.js');\n}\n"],"names":[],"mappings":"AAEI;AAFJ;AAEA;;KAEO;IACL,OAAO,OAAO;AAChB","ignoreList":[0]}}, + {"offset": {"line": 593, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/%40auth/core/errors.js"],"sourcesContent":["/**\n * Base error class for all Auth.js errors.\n * It's optimized to be printed in the server logs in a nicely formatted way\n * via the [`logger.error`](https://authjs.dev/reference/core#logger) option.\n * @noInheritDoc\n */\nexport class AuthError extends Error {\n /** @internal */\n constructor(message, errorOptions) {\n if (message instanceof Error) {\n super(undefined, {\n cause: { err: message, ...message.cause, ...errorOptions },\n });\n }\n else if (typeof message === \"string\") {\n if (errorOptions instanceof Error) {\n errorOptions = { err: errorOptions, ...errorOptions.cause };\n }\n super(message, errorOptions);\n }\n else {\n super(undefined, message);\n }\n this.name = this.constructor.name;\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/3841\n this.type = this.constructor.type ?? \"AuthError\";\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/3841\n this.kind = this.constructor.kind ?? \"error\";\n Error.captureStackTrace?.(this, this.constructor);\n const url = `https://errors.authjs.dev#${this.type.toLowerCase()}`;\n this.message += `${this.message ? \". \" : \"\"}Read more at ${url}`;\n }\n}\n/**\n * Thrown when the user's sign-in attempt failed.\n * @noInheritDoc\n */\nexport class SignInError extends AuthError {\n}\n/** @internal */\nSignInError.kind = \"signIn\";\n/**\n * One of the database [`Adapter` methods](https://authjs.dev/reference/core/adapters#methods)\n * failed during execution.\n *\n * :::tip\n * If `debug: true` is set, you can check out `[auth][debug]` in the logs to learn more about the failed adapter method execution.\n * @example\n * ```sh\n * [auth][debug]: adapter_getUserByEmail\n * { \"args\": [undefined] }\n * ```\n * :::\n * @noInheritDoc\n */\nexport class AdapterError extends AuthError {\n}\nAdapterError.type = \"AdapterError\";\n/**\n * Thrown when the execution of the [`signIn` callback](https://authjs.dev/reference/core/types#signin) fails\n * or if it returns `false`.\n * @noInheritDoc\n */\nexport class AccessDenied extends AuthError {\n}\nAccessDenied.type = \"AccessDenied\";\n/**\n * This error occurs when the user cannot finish login.\n * Depending on the provider type, this could have happened for multiple reasons.\n *\n * :::tip\n * Check out `[auth][details]` in the logs to know which provider failed.\n * @example\n * ```sh\n * [auth][details]: { \"provider\": \"github\" }\n * ```\n * :::\n *\n * For an [OAuth provider](https://authjs.dev/getting-started/authentication/oauth), possible causes are:\n * - The user denied access to the application\n * - There was an error parsing the OAuth Profile:\n * Check out the provider's `profile` or `userinfo.request` method to make sure\n * it correctly fetches the user's profile.\n * - The `signIn` or `jwt` callback methods threw an uncaught error:\n * Check the callback method implementations.\n *\n * For an [Email provider](https://authjs.dev/getting-started/authentication/email), possible causes are:\n * - The provided email/token combination was invalid/missing:\n * Check if the provider's `sendVerificationRequest` method correctly sends the email.\n * - The provided email/token combination has expired:\n * Ask the user to log in again.\n * - There was an error with the database:\n * Check the database logs.\n *\n * For a [Credentials provider](https://authjs.dev/getting-started/authentication/credentials), possible causes are:\n * - The `authorize` method threw an uncaught error:\n * Check the provider's `authorize` method.\n * - The `signIn` or `jwt` callback methods threw an uncaught error:\n * Check the callback method implementations.\n *\n * :::tip\n * Check out `[auth][cause]` in the error message for more details.\n * It will show the original stack trace.\n * :::\n * @noInheritDoc\n */\nexport class CallbackRouteError extends AuthError {\n}\nCallbackRouteError.type = \"CallbackRouteError\";\n/**\n * Thrown when Auth.js is misconfigured and accidentally tried to require authentication on a custom error page.\n * To prevent an infinite loop, Auth.js will instead render its default error page.\n *\n * To fix this, make sure that the `error` page does not require authentication.\n *\n * Learn more at [Guide: Error pages](https://authjs.dev/guides/pages/error)\n * @noInheritDoc\n */\nexport class ErrorPageLoop extends AuthError {\n}\nErrorPageLoop.type = \"ErrorPageLoop\";\n/**\n * One of the [`events` methods](https://authjs.dev/reference/core/types#eventcallbacks)\n * failed during execution.\n *\n * Make sure that the `events` methods are implemented correctly and uncaught errors are handled.\n *\n * Learn more at [`events`](https://authjs.dev/reference/core/types#eventcallbacks)\n * @noInheritDoc\n */\nexport class EventError extends AuthError {\n}\nEventError.type = \"EventError\";\n/**\n * Thrown when Auth.js is unable to verify a `callbackUrl` value.\n * The browser either disabled cookies or the `callbackUrl` is not a valid URL.\n *\n * Somebody might have tried to manipulate the callback URL that Auth.js uses to redirect the user back to the configured `callbackUrl`/page.\n * This could be a malicious hacker trying to redirect the user to a phishing site.\n * To prevent this, Auth.js checks if the callback URL is valid and throws this error if it is not.\n *\n * There is no action required, but it might be an indicator that somebody is trying to attack your application.\n * @noInheritDoc\n */\nexport class InvalidCallbackUrl extends AuthError {\n}\nInvalidCallbackUrl.type = \"InvalidCallbackUrl\";\n/**\n * Can be thrown from the `authorize` callback of the Credentials provider.\n * When an error occurs during the `authorize` callback, two things can happen:\n * 1. The user is redirected to the signin page, with `error=CredentialsSignin&code=credentials` in the URL. `code` is configurable.\n * 2. If you throw this error in a framework that handles form actions server-side, this error is thrown, instead of redirecting the user, so you'll need to handle.\n * @noInheritDoc\n */\nexport class CredentialsSignin extends SignInError {\n constructor() {\n super(...arguments);\n /**\n * The error code that is set in the `code` query parameter of the redirect URL.\n *\n *\n * ⚠ NOTE: This property is going to be included in the URL, so make sure it does not hint at sensitive errors.\n *\n * The full error is always logged on the server, if you need to debug.\n *\n * Generally, we don't recommend hinting specifically if the user had either a wrong username or password specifically,\n * try rather something like \"Invalid credentials\".\n */\n this.code = \"credentials\";\n }\n}\nCredentialsSignin.type = \"CredentialsSignin\";\n/**\n * One of the configured OAuth or OIDC providers is missing the `authorization`, `token` or `userinfo`, or `issuer` configuration.\n * To perform OAuth or OIDC sign in, at least one of these endpoints is required.\n *\n * Learn more at [`OAuth2Config`](https://authjs.dev/reference/core/providers#oauth2configprofile) or [Guide: OAuth Provider](https://authjs.dev/guides/configuring-oauth-providers)\n * @noInheritDoc\n */\nexport class InvalidEndpoints extends AuthError {\n}\nInvalidEndpoints.type = \"InvalidEndpoints\";\n/**\n * Thrown when a PKCE, state or nonce OAuth check could not be performed.\n * This could happen if the OAuth provider is configured incorrectly or if the browser is blocking cookies.\n *\n * Learn more at [`checks`](https://authjs.dev/reference/core/providers#checks)\n * @noInheritDoc\n */\nexport class InvalidCheck extends AuthError {\n}\nInvalidCheck.type = \"InvalidCheck\";\n/**\n * Logged on the server when Auth.js could not decode or encode a JWT-based (`strategy: \"jwt\"`) session.\n *\n * Possible causes are either a misconfigured `secret` or a malformed JWT or `encode/decode` methods.\n *\n * :::note\n * When this error is logged, the session cookie is destroyed.\n * :::\n *\n * Learn more at [`secret`](https://authjs.dev/reference/core#secret), [`jwt.encode`](https://authjs.dev/reference/core/jwt#encode-1) or [`jwt.decode`](https://authjs.dev/reference/core/jwt#decode-2) for more information.\n * @noInheritDoc\n */\nexport class JWTSessionError extends AuthError {\n}\nJWTSessionError.type = \"JWTSessionError\";\n/**\n * Thrown if Auth.js is misconfigured. This could happen if you configured an Email provider but did not set up a database adapter,\n * or tried using a `strategy: \"database\"` session without a database adapter.\n * In both cases, make sure you either remove the configuration or add the missing adapter.\n *\n * Learn more at [Database Adapters](https://authjs.dev/getting-started/database), [Email provider](https://authjs.dev/getting-started/authentication/email) or [Concept: Database session strategy](https://authjs.dev/concepts/session-strategies#database-session)\n * @noInheritDoc\n */\nexport class MissingAdapter extends AuthError {\n}\nMissingAdapter.type = \"MissingAdapter\";\n/**\n * Thrown similarily to [`MissingAdapter`](https://authjs.dev/reference/core/errors#missingadapter), but only some required methods were missing.\n *\n * Make sure you either remove the configuration or add the missing methods to the adapter.\n *\n * Learn more at [Database Adapters](https://authjs.dev/getting-started/database)\n * @noInheritDoc\n */\nexport class MissingAdapterMethods extends AuthError {\n}\nMissingAdapterMethods.type = \"MissingAdapterMethods\";\n/**\n * Thrown when a Credentials provider is missing the `authorize` configuration.\n * To perform credentials sign in, the `authorize` method is required.\n *\n * Learn more at [Credentials provider](https://authjs.dev/getting-started/authentication/credentials)\n * @noInheritDoc\n */\nexport class MissingAuthorize extends AuthError {\n}\nMissingAuthorize.type = \"MissingAuthorize\";\n/**\n * Auth.js requires a secret or multiple secrets to be set, but none was not found. This is used to encrypt cookies, JWTs and other sensitive data.\n *\n * :::note\n * If you are using a framework like Next.js, we try to automatically infer the secret from the `AUTH_SECRET`, `AUTH_SECRET_1`, etc. environment variables.\n * Alternatively, you can also explicitly set the [`AuthConfig.secret`](https://authjs.dev/reference/core#secret) option.\n * :::\n *\n *\n * :::tip\n * To generate a random string, you can use the Auth.js CLI: `npx auth secret`\n * :::\n * @noInheritDoc\n */\nexport class MissingSecret extends AuthError {\n}\nMissingSecret.type = \"MissingSecret\";\n/**\n * Thrown when an Email address is already associated with an account\n * but the user is trying an OAuth account that is not linked to it.\n *\n * For security reasons, Auth.js does not automatically link OAuth accounts to existing accounts if the user is not signed in.\n *\n * :::tip\n * If you trust the OAuth provider to have verified the user's email address,\n * you can enable automatic account linking by setting [`allowDangerousEmailAccountLinking: true`](https://authjs.dev/reference/core/providers#allowdangerousemailaccountlinking)\n * in the provider configuration.\n * :::\n * @noInheritDoc\n */\nexport class OAuthAccountNotLinked extends SignInError {\n}\nOAuthAccountNotLinked.type = \"OAuthAccountNotLinked\";\n/**\n * Thrown when an OAuth provider returns an error during the sign in process.\n * This could happen for example if the user denied access to the application or there was a configuration error.\n *\n * For a full list of possible reasons, check out the specification [Authorization Code Grant: Error Response](https://www.rfc-editor.org/rfc/rfc6749#section-4.1.2.1)\n * @noInheritDoc\n */\nexport class OAuthCallbackError extends SignInError {\n}\nOAuthCallbackError.type = \"OAuthCallbackError\";\n/**\n * This error occurs during an OAuth sign in attempt when the provider's\n * response could not be parsed. This could for example happen if the provider's API\n * changed, or the [`OAuth2Config.profile`](https://authjs.dev/reference/core/providers#oauth2configprofile) method is not implemented correctly.\n * @noInheritDoc\n */\nexport class OAuthProfileParseError extends AuthError {\n}\nOAuthProfileParseError.type = \"OAuthProfileParseError\";\n/**\n * Logged on the server when Auth.js could not retrieve a session from the database (`strategy: \"database\"`).\n *\n * The database adapter might be misconfigured or the database is not reachable.\n *\n * Learn more at [Concept: Database session strategy](https://authjs.dev/concepts/session-strategies#database)\n * @noInheritDoc\n */\nexport class SessionTokenError extends AuthError {\n}\nSessionTokenError.type = \"SessionTokenError\";\n/**\n * Happens when login by [OAuth](https://authjs.dev/getting-started/authentication/oauth) could not be started.\n *\n * Possible causes are:\n * - The Authorization Server is not compliant with the [OAuth 2.0](https://www.ietf.org/rfc/rfc6749.html) or the [OIDC](https://openid.net/specs/openid-connect-core-1_0.html) specification.\n * Check the details in the error message.\n *\n * :::tip\n * Check out `[auth][details]` in the logs to know which provider failed.\n * @example\n * ```sh\n * [auth][details]: { \"provider\": \"github\" }\n * ```\n * :::\n * @noInheritDoc\n */\nexport class OAuthSignInError extends SignInError {\n}\nOAuthSignInError.type = \"OAuthSignInError\";\n/**\n * Happens when the login by an [Email provider](https://authjs.dev/getting-started/authentication/email) could not be started.\n *\n * Possible causes are:\n * - The email sent from the client is invalid, could not be normalized by [`EmailConfig.normalizeIdentifier`](https://authjs.dev/reference/core/providers/email#normalizeidentifier)\n * - The provided email/token combination has expired:\n * Ask the user to log in again.\n * - There was an error with the database:\n * Check the database logs.\n * @noInheritDoc\n */\nexport class EmailSignInError extends SignInError {\n}\nEmailSignInError.type = \"EmailSignInError\";\n/**\n * Represents an error that occurs during the sign-out process. This error\n * is logged when there are issues in terminating a user's session, either\n * by failing to delete the session from the database (in database session\n * strategies) or encountering issues during other parts of the sign-out\n * process, such as emitting sign-out events or clearing session cookies.\n *\n * The session cookie(s) are emptied even if this error is logged.\n * @noInheritDoc\n */\nexport class SignOutError extends AuthError {\n}\nSignOutError.type = \"SignOutError\";\n/**\n * Auth.js was requested to handle an operation that it does not support.\n *\n * See [`AuthAction`](https://authjs.dev/reference/core/types#authaction) for the supported actions.\n * @noInheritDoc\n */\nexport class UnknownAction extends AuthError {\n}\nUnknownAction.type = \"UnknownAction\";\n/**\n * Thrown when a Credentials provider is present but the JWT strategy (`strategy: \"jwt\"`) is not enabled.\n *\n * Learn more at [`strategy`](https://authjs.dev/reference/core#strategy) or [Credentials provider](https://authjs.dev/getting-started/authentication/credentials)\n * @noInheritDoc\n */\nexport class UnsupportedStrategy extends AuthError {\n}\nUnsupportedStrategy.type = \"UnsupportedStrategy\";\n/**\n * Thrown when an endpoint was incorrectly called without a provider, or with an unsupported provider.\n * @noInheritDoc\n */\nexport class InvalidProvider extends AuthError {\n}\nInvalidProvider.type = \"InvalidProvider\";\n/**\n * Thrown when the `trustHost` option was not set to `true`.\n *\n * Auth.js requires the `trustHost` option to be set to `true` since it's relying on the request headers' `host` value.\n *\n * :::note\n * Official Auth.js libraries might attempt to automatically set the `trustHost` option to `true` if the request is coming from a trusted host on a trusted platform.\n * :::\n *\n * Learn more at [`trustHost`](https://authjs.dev/reference/core#trusthost) or [Guide: Deployment](https://authjs.dev/getting-started/deployment)\n * @noInheritDoc\n */\nexport class UntrustedHost extends AuthError {\n}\nUntrustedHost.type = \"UntrustedHost\";\n/**\n * The user's email/token combination was invalid.\n * This could be because the email/token combination was not found in the database,\n * or because the token has expired. Ask the user to log in again.\n * @noInheritDoc\n */\nexport class Verification extends AuthError {\n}\nVerification.type = \"Verification\";\n/**\n * Error for missing CSRF tokens in client-side actions (`signIn`, `signOut`, `useSession#update`).\n * Thrown when actions lack the double submit cookie, essential for CSRF protection.\n *\n * CSRF ([Cross-Site Request Forgery](https://owasp.org/www-community/attacks/csrf))\n * is an attack leveraging authenticated user credentials for unauthorized actions.\n *\n * Double submit cookie pattern, a CSRF defense, requires matching values in a cookie\n * and request parameter. More on this at [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Glossary/CSRF).\n * @noInheritDoc\n */\nexport class MissingCSRF extends SignInError {\n}\nMissingCSRF.type = \"MissingCSRF\";\nconst clientErrors = new Set([\n \"CredentialsSignin\",\n \"OAuthAccountNotLinked\",\n \"OAuthCallbackError\",\n \"AccessDenied\",\n \"Verification\",\n \"MissingCSRF\",\n \"AccountNotLinked\",\n \"WebAuthnVerificationError\",\n]);\n/**\n * Used to only allow sending a certain subset of errors to the client.\n * Errors are always logged on the server, but to prevent leaking sensitive information,\n * only a subset of errors are sent to the client as-is.\n * @internal\n */\nexport function isClientError(error) {\n if (error instanceof AuthError)\n return clientErrors.has(error.type);\n return false;\n}\n/**\n * Thrown when multiple providers have `enableConditionalUI` set to `true`.\n * Only one provider can have this option enabled at a time.\n * @noInheritDoc\n */\nexport class DuplicateConditionalUI extends AuthError {\n}\nDuplicateConditionalUI.type = \"DuplicateConditionalUI\";\n/**\n * Thrown when a WebAuthn provider has `enableConditionalUI` set to `true` but no formField has `webauthn` in its autocomplete param.\n *\n * The `webauthn` autocomplete param is required for conditional UI to work.\n * @noInheritDoc\n */\nexport class MissingWebAuthnAutocomplete extends AuthError {\n}\nMissingWebAuthnAutocomplete.type = \"MissingWebAuthnAutocomplete\";\n/**\n * Thrown when a WebAuthn provider fails to verify a client response.\n * @noInheritDoc\n */\nexport class WebAuthnVerificationError extends AuthError {\n}\nWebAuthnVerificationError.type = \"WebAuthnVerificationError\";\n/**\n * Thrown when an Email address is already associated with an account\n * but the user is trying an account that is not linked to it.\n *\n * For security reasons, Auth.js does not automatically link accounts to existing accounts if the user is not signed in.\n * @noInheritDoc\n */\nexport class AccountNotLinked extends SignInError {\n}\nAccountNotLinked.type = \"AccountNotLinked\";\n/**\n * Thrown when an experimental feature is used but not enabled.\n * @noInheritDoc\n */\nexport class ExperimentalFeatureNotEnabled extends AuthError {\n}\nExperimentalFeatureNotEnabled.type = \"ExperimentalFeatureNotEnabled\";\n"],"names":[],"mappings":"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","ignoreList":[0]}}, + {"offset": {"line": 832, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next-auth/lib/client.js"],"sourcesContent":["\"use client\";\nimport * as React from \"react\";\nimport { AuthError } from \"@auth/core/errors\";\n/** @todo */\nclass ClientFetchError extends AuthError {\n}\n/** @todo */\nexport class ClientSessionError extends AuthError {\n}\n// ------------------------ Internal ------------------------\n/**\n * If passed 'appContext' via getInitialProps() in _app.js\n * then get the req object from ctx and use that for the\n * req value to allow `fetchData` to\n * work seemlessly in getInitialProps() on server side\n * pages *and* in _app.js.\n * @internal\n */\nexport async function fetchData(path, __NEXTAUTH, logger, req = {}) {\n const url = `${apiBaseUrl(__NEXTAUTH)}/${path}`;\n try {\n const options = {\n headers: {\n \"Content-Type\": \"application/json\",\n ...(req?.headers?.cookie ? { cookie: req.headers.cookie } : {}),\n },\n };\n if (req?.body) {\n options.body = JSON.stringify(req.body);\n options.method = \"POST\";\n }\n const res = await fetch(url, options);\n const data = await res.json();\n if (!res.ok)\n throw data;\n return data;\n }\n catch (error) {\n logger.error(new ClientFetchError(error.message, error));\n return null;\n }\n}\n/** @internal */\nexport function apiBaseUrl(__NEXTAUTH) {\n if (typeof window === \"undefined\") {\n // Return absolute path when called server side\n return `${__NEXTAUTH.baseUrlServer}${__NEXTAUTH.basePathServer}`;\n }\n // Return relative path when called client side\n return __NEXTAUTH.basePath;\n}\n/** @internal */\nexport function useOnline() {\n const [isOnline, setIsOnline] = React.useState(typeof navigator !== \"undefined\" ? navigator.onLine : false);\n const setOnline = () => setIsOnline(true);\n const setOffline = () => setIsOnline(false);\n React.useEffect(() => {\n window.addEventListener(\"online\", setOnline);\n window.addEventListener(\"offline\", setOffline);\n return () => {\n window.removeEventListener(\"online\", setOnline);\n window.removeEventListener(\"offline\", setOffline);\n };\n }, []);\n return isOnline;\n}\n/**\n * Returns the number of seconds elapsed since January 1, 1970 00:00:00 UTC.\n * @internal\n */\nexport function now() {\n return Math.floor(Date.now() / 1000);\n}\n/**\n * Returns an `URL` like object to make requests/redirects from server-side\n * @internal\n */\nexport function parseUrl(url) {\n const defaultUrl = new URL(\"http://localhost:3000/api/auth\");\n if (url && !url.startsWith(\"http\")) {\n url = `https://${url}`;\n }\n const _url = new URL(url || defaultUrl);\n const path = (_url.pathname === \"/\" ? defaultUrl.pathname : _url.pathname)\n // Remove trailing slash\n .replace(/\\/$/, \"\");\n const base = `${_url.origin}${path}`;\n return {\n origin: _url.origin,\n host: _url.host,\n path,\n base,\n toString: () => base,\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AACA;AACA;AAFA;;;AAGA,UAAU,GACV,MAAM,yBAAyB,oMAAS;AACxC;AAEO,MAAM,2BAA2B,oMAAS;AACjD;AAUO,eAAe,UAAU,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,WAAW,YAAY,CAAC,EAAE,MAAM;IAC/C,IAAI;QACA,MAAM,UAAU;YACZ,SAAS;gBACL,gBAAgB;gBAChB,GAAI,KAAK,SAAS,SAAS;oBAAE,QAAQ,IAAI,OAAO,CAAC,MAAM;gBAAC,IAAI,CAAC,CAAC;YAClE;QACJ;QACA,IAAI,KAAK,MAAM;YACX,QAAQ,IAAI,GAAG,KAAK,SAAS,CAAC,IAAI,IAAI;YACtC,QAAQ,MAAM,GAAG;QACrB;QACA,MAAM,MAAM,MAAM,MAAM,KAAK;QAC7B,MAAM,OAAO,MAAM,IAAI,IAAI;QAC3B,IAAI,CAAC,IAAI,EAAE,EACP,MAAM;QACV,OAAO;IACX,EACA,OAAO,OAAO;QACV,OAAO,KAAK,CAAC,IAAI,iBAAiB,MAAM,OAAO,EAAE;QACjD,OAAO;IACX;AACJ;AAEO,SAAS,WAAW,UAAU;IACjC,IAAI,OAAO,WAAW,aAAa;QAC/B,+CAA+C;QAC/C,OAAO,GAAG,WAAW,aAAa,GAAG,WAAW,cAAc,EAAE;IACpE;IACA,+CAA+C;IAC/C,OAAO,WAAW,QAAQ;AAC9B;AAEO,SAAS;IACZ,MAAM,CAAC,UAAU,YAAY,GAAG,qNAAc,CAAC,OAAO,cAAc,cAAc,UAAU,MAAM,GAAG;IACrG,MAAM,YAAY,IAAM,YAAY;IACpC,MAAM,aAAa,IAAM,YAAY;IACrC,sNAAe;+BAAC;YACZ,OAAO,gBAAgB,CAAC,UAAU;YAClC,OAAO,gBAAgB,CAAC,WAAW;YACnC;uCAAO;oBACH,OAAO,mBAAmB,CAAC,UAAU;oBACrC,OAAO,mBAAmB,CAAC,WAAW;gBAC1C;;QACJ;8BAAG,EAAE;IACL,OAAO;AACX;AAKO,SAAS;IACZ,OAAO,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK;AACnC;AAKO,SAAS,SAAS,GAAG;IACxB,MAAM,aAAa,IAAI,IAAI;IAC3B,IAAI,OAAO,CAAC,IAAI,UAAU,CAAC,SAAS;QAChC,MAAM,CAAC,QAAQ,EAAE,KAAK;IAC1B;IACA,MAAM,OAAO,IAAI,IAAI,OAAO;IAC5B,MAAM,OAAO,CAAC,KAAK,QAAQ,KAAK,MAAM,WAAW,QAAQ,GAAG,KAAK,QAAQ,CACrE,wBAAwB;KACvB,OAAO,CAAC,OAAO;IACpB,MAAM,OAAO,GAAG,KAAK,MAAM,GAAG,MAAM;IACpC,OAAO;QACH,QAAQ,KAAK,MAAM;QACnB,MAAM,KAAK,IAAI;QACf;QACA;QACA,UAAU,IAAM;IACpB;AACJ","ignoreList":[0]}}, + {"offset": {"line": 929, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next-auth/react.js"],"sourcesContent":["/**\n *\n * NextAuth.js is the official integration of Auth.js for Next.js applications. It supports both\n * [Client Components](https://nextjs.org/docs/app/building-your-application/rendering/client-components) and the\n * [Pages Router](https://nextjs.org/docs/pages). It includes methods for signing in, signing out, hooks, and a React\n * Context provider to wrap your application and make session data available anywhere.\n *\n * For use in [Server Actions](https://nextjs.org/docs/app/api-reference/functions/server-actions), check out [these methods](https://authjs.dev/guides/upgrade-to-v5#methods)\n *\n * @module react\n */\n\"use client\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { apiBaseUrl, ClientSessionError, fetchData, now, parseUrl, useOnline, } from \"./lib/client.js\";\n// This behaviour mirrors the default behaviour for getting the site name that\n// happens server side in server/index.js\n// 1. An empty value is legitimate when the code is being invoked client side as\n// relative URLs are valid in that context and so defaults to empty.\n// 2. When invoked server side the value is picked up from an environment\n// variable and defaults to 'http://localhost:3000'.\nexport const __NEXTAUTH = {\n baseUrl: parseUrl(process.env.NEXTAUTH_URL ?? process.env.VERCEL_URL).origin,\n basePath: parseUrl(process.env.NEXTAUTH_URL).path,\n baseUrlServer: parseUrl(process.env.NEXTAUTH_URL_INTERNAL ??\n process.env.NEXTAUTH_URL ??\n process.env.VERCEL_URL).origin,\n basePathServer: parseUrl(process.env.NEXTAUTH_URL_INTERNAL ?? process.env.NEXTAUTH_URL).path,\n _lastSync: 0,\n _session: undefined,\n _getSession: () => { },\n};\n// https://github.com/nextauthjs/next-auth/pull/10762\nlet broadcastChannel = null;\nfunction getNewBroadcastChannel() {\n if (typeof BroadcastChannel === \"undefined\") {\n return {\n postMessage: () => { },\n addEventListener: () => { },\n removeEventListener: () => { },\n name: \"next-auth\",\n onmessage: null,\n onmessageerror: null,\n close: () => { },\n dispatchEvent: () => false,\n };\n }\n return new BroadcastChannel(\"next-auth\");\n}\nfunction broadcast() {\n if (broadcastChannel === null) {\n broadcastChannel = getNewBroadcastChannel();\n }\n return broadcastChannel;\n}\n// TODO:\nconst logger = {\n debug: console.debug,\n error: console.error,\n warn: console.warn,\n};\nexport const SessionContext = React.createContext?.(undefined);\n/**\n * React Hook that gives you access to the logged in user's session data and lets you modify it.\n *\n * :::info\n * `useSession` is for client-side use only and when using [Next.js App Router (`app/`)](https://nextjs.org/blog/next-13-4#nextjs-app-router) you should prefer the `auth()` export.\n * :::\n */\nexport function useSession(options) {\n if (!SessionContext) {\n throw new Error(\"React Context is unavailable in Server Components\");\n }\n // @ts-expect-error Satisfy TS if branch on line below\n const value = React.useContext(SessionContext);\n if (!value && process.env.NODE_ENV !== \"production\") {\n throw new Error(\"[next-auth]: `useSession` must be wrapped in a \");\n }\n const { required, onUnauthenticated } = options ?? {};\n const requiredAndNotLoading = required && value.status === \"unauthenticated\";\n React.useEffect(() => {\n if (requiredAndNotLoading) {\n const url = `${__NEXTAUTH.basePath}/signin?${new URLSearchParams({\n error: \"SessionRequired\",\n callbackUrl: window.location.href,\n })}`;\n if (onUnauthenticated)\n onUnauthenticated();\n else\n window.location.href = url;\n }\n }, [requiredAndNotLoading, onUnauthenticated]);\n if (requiredAndNotLoading) {\n return {\n data: value.data,\n update: value.update,\n status: \"loading\",\n };\n }\n return value;\n}\nexport async function getSession(params) {\n const session = await fetchData(\"session\", __NEXTAUTH, logger, params);\n if (params?.broadcast ?? true) {\n // https://github.com/nextauthjs/next-auth/pull/11470\n getNewBroadcastChannel().postMessage({\n event: \"session\",\n data: { trigger: \"getSession\" },\n });\n }\n return session;\n}\n/**\n * Returns the current Cross-Site Request Forgery Token (CSRF Token)\n * required to make requests that changes state. (e.g. signing in or out, or updating the session).\n *\n * [CSRF Prevention: Double Submit Cookie](https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#double-submit-cookie)\n */\nexport async function getCsrfToken() {\n const response = await fetchData(\"csrf\", __NEXTAUTH, logger);\n return response?.csrfToken ?? \"\";\n}\nexport async function getProviders() {\n return fetchData(\"providers\", __NEXTAUTH, logger);\n}\nexport async function signIn(provider, options, authorizationParams) {\n const { callbackUrl, ...rest } = options ?? {};\n const { redirect = true, redirectTo = callbackUrl ?? window.location.href, ...signInParams } = rest;\n const baseUrl = apiBaseUrl(__NEXTAUTH);\n const providers = await getProviders();\n if (!providers) {\n const url = `${baseUrl}/error`;\n window.location.href = url;\n return; // TODO: Return error if `redirect: false`\n }\n if (!provider || !providers[provider]) {\n const url = `${baseUrl}/signin?${new URLSearchParams({\n callbackUrl: redirectTo,\n })}`;\n window.location.href = url;\n return; // TODO: Return error if `redirect: false`\n }\n const providerType = providers[provider].type;\n if (providerType === \"webauthn\") {\n // TODO: Add docs link with explanation\n throw new TypeError([\n `Provider id \"${provider}\" refers to a WebAuthn provider.`,\n 'Please use `import { signIn } from \"next-auth/webauthn\"` instead.',\n ].join(\"\\n\"));\n }\n const signInUrl = `${baseUrl}/${providerType === \"credentials\" ? \"callback\" : \"signin\"}/${provider}`;\n const csrfToken = await getCsrfToken();\n const res = await fetch(`${signInUrl}?${new URLSearchParams(authorizationParams)}`, {\n method: \"post\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"X-Auth-Return-Redirect\": \"1\",\n },\n body: new URLSearchParams({\n ...signInParams,\n csrfToken,\n callbackUrl: redirectTo,\n }),\n });\n const data = await res.json();\n if (redirect) {\n const url = data.url ?? redirectTo;\n window.location.href = url;\n // If url contains a hash, the browser does not reload the page. We reload manually\n if (url.includes(\"#\"))\n window.location.reload();\n return;\n }\n const error = new URL(data.url).searchParams.get(\"error\") ?? undefined;\n const code = new URL(data.url).searchParams.get(\"code\") ?? undefined;\n if (res.ok) {\n await __NEXTAUTH._getSession({ event: \"storage\" });\n }\n return {\n error,\n code,\n status: res.status,\n ok: res.ok,\n url: error ? null : data.url,\n };\n}\nexport async function signOut(options) {\n const { redirect = true, redirectTo = options?.callbackUrl ?? window.location.href, } = options ?? {};\n const baseUrl = apiBaseUrl(__NEXTAUTH);\n const csrfToken = await getCsrfToken();\n const res = await fetch(`${baseUrl}/signout`, {\n method: \"post\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"X-Auth-Return-Redirect\": \"1\",\n },\n body: new URLSearchParams({ csrfToken, callbackUrl: redirectTo }),\n });\n const data = await res.json();\n broadcast().postMessage({ event: \"session\", data: { trigger: \"signout\" } });\n if (redirect) {\n const url = data.url ?? redirectTo;\n window.location.href = url;\n // If url contains a hash, the browser does not reload the page. We reload manually\n if (url.includes(\"#\"))\n window.location.reload();\n return;\n }\n await __NEXTAUTH._getSession({ event: \"storage\" });\n return data;\n}\n/**\n * [React Context](https://react.dev/learn/passing-data-deeply-with-context) provider to wrap the app (`pages/`) to make session data available anywhere.\n *\n * When used, the session state is automatically synchronized across all open tabs/windows and they are all updated whenever they gain or lose focus\n * or the state changes (e.g. a user signs in or out) when {@link SessionProviderProps.refetchOnWindowFocus} is `true`.\n *\n * :::info\n * `SessionProvider` is for client-side use only and when using [Next.js App Router (`app/`)](https://nextjs.org/blog/next-13-4#nextjs-app-router) you should prefer the `auth()` export.\n * :::\n */\nexport function SessionProvider(props) {\n if (!SessionContext) {\n throw new Error(\"React Context is unavailable in Server Components\");\n }\n const { children, basePath, refetchInterval, refetchWhenOffline } = props;\n if (basePath)\n __NEXTAUTH.basePath = basePath;\n /**\n * If session was `null`, there was an attempt to fetch it,\n * but it failed, but we still treat it as a valid initial value.\n */\n const hasInitialSession = props.session !== undefined;\n /** If session was passed, initialize as already synced */\n __NEXTAUTH._lastSync = hasInitialSession ? now() : 0;\n const [session, setSession] = React.useState(() => {\n if (hasInitialSession)\n __NEXTAUTH._session = props.session;\n return props.session;\n });\n /** If session was passed, initialize as not loading */\n const [loading, setLoading] = React.useState(!hasInitialSession);\n React.useEffect(() => {\n __NEXTAUTH._getSession = async ({ event } = {}) => {\n try {\n const storageEvent = event === \"storage\";\n // We should always update if we don't have a client session yet\n // or if there are events from other tabs/windows\n if (storageEvent || __NEXTAUTH._session === undefined) {\n __NEXTAUTH._lastSync = now();\n __NEXTAUTH._session = await getSession({\n broadcast: !storageEvent,\n });\n setSession(__NEXTAUTH._session);\n return;\n }\n if (\n // If there is no time defined for when a session should be considered\n // stale, then it's okay to use the value we have until an event is\n // triggered which updates it\n !event ||\n // If the client doesn't have a session then we don't need to call\n // the server to check if it does (if they have signed in via another\n // tab or window that will come through as a \"stroage\" event\n // event anyway)\n __NEXTAUTH._session === null ||\n // Bail out early if the client session is not stale yet\n now() < __NEXTAUTH._lastSync) {\n return;\n }\n // An event or session staleness occurred, update the client session.\n __NEXTAUTH._lastSync = now();\n __NEXTAUTH._session = await getSession();\n setSession(__NEXTAUTH._session);\n }\n catch (error) {\n logger.error(new ClientSessionError(error.message, error));\n }\n finally {\n setLoading(false);\n }\n };\n __NEXTAUTH._getSession();\n return () => {\n __NEXTAUTH._lastSync = 0;\n __NEXTAUTH._session = undefined;\n __NEXTAUTH._getSession = () => { };\n };\n }, []);\n React.useEffect(() => {\n const handle = () => __NEXTAUTH._getSession({ event: \"storage\" });\n // Listen for storage events and update session if event fired from\n // another window (but suppress firing another event to avoid a loop)\n // Fetch new session data but tell it to not to fire another event to\n // avoid an infinite loop.\n // Note: We could pass session data through and do something like\n // `setData(message.data)` but that can cause problems depending\n // on how the session object is being used in the client; it is\n // more robust to have each window/tab fetch it's own copy of the\n // session object rather than share it across instances.\n broadcast().addEventListener(\"message\", handle);\n return () => broadcast().removeEventListener(\"message\", handle);\n }, []);\n React.useEffect(() => {\n const { refetchOnWindowFocus = true } = props;\n // Listen for when the page is visible, if the user switches tabs\n // and makes our tab visible again, re-fetch the session, but only if\n // this feature is not disabled.\n const visibilityHandler = () => {\n if (refetchOnWindowFocus && document.visibilityState === \"visible\")\n __NEXTAUTH._getSession({ event: \"visibilitychange\" });\n };\n document.addEventListener(\"visibilitychange\", visibilityHandler, false);\n return () => document.removeEventListener(\"visibilitychange\", visibilityHandler, false);\n }, [props.refetchOnWindowFocus]);\n const isOnline = useOnline();\n // TODO: Flip this behavior in next major version\n const shouldRefetch = refetchWhenOffline !== false || isOnline;\n React.useEffect(() => {\n if (refetchInterval && shouldRefetch) {\n const refetchIntervalTimer = setInterval(() => {\n if (__NEXTAUTH._session) {\n __NEXTAUTH._getSession({ event: \"poll\" });\n }\n }, refetchInterval * 1000);\n return () => clearInterval(refetchIntervalTimer);\n }\n }, [refetchInterval, shouldRefetch]);\n const value = React.useMemo(() => ({\n data: session,\n status: loading\n ? \"loading\"\n : session\n ? \"authenticated\"\n : \"unauthenticated\",\n async update(data) {\n if (loading)\n return;\n setLoading(true);\n const newSession = await fetchData(\"session\", __NEXTAUTH, logger, typeof data === \"undefined\"\n ? undefined\n : { body: { csrfToken: await getCsrfToken(), data } });\n setLoading(false);\n if (newSession) {\n setSession(newSession);\n broadcast().postMessage({\n event: \"session\",\n data: { trigger: \"getSession\" },\n });\n }\n return newSession;\n },\n }), [session, loading]);\n return (\n // @ts-expect-error\n _jsx(SessionContext.Provider, { value: value, children: children }));\n}\n"],"names":[],"mappings":"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","ignoreList":[0]}}] } \ No newline at end of file diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js b/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js index 4fe93e5..7f156a8 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js @@ -317,12 +317,22 @@ const useProjects = (user)=>{ ...data } : p)); try { + // Persist project fields const payload = {}; if (data.title !== undefined) payload.title = data.title; if (data.author !== undefined) payload.author = data.author; if (data.settings !== undefined) payload.settings = data.settings; if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide; - await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].projects.update(id, payload); + if (Object.keys(payload).length > 0) { + await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].projects.update(id, payload); + } + // Persist workflow (nodes + connections) separately + if (data.workflow) { + await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].projects.syncWorkflow(id, { + nodes: data.workflow.nodes || [], + connections: data.workflow.connections || [] + }); + } } catch (err) { console.error("Failed to update project", err); } diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js.map b/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js.map index f20fe7b..6fe310b 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js.map +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js.map @@ -4,27 +4,27 @@ "sections": [ {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/types.ts"],"sourcesContent":["\nexport enum EntityType {\n CHARACTER = 'Personnage',\n LOCATION = 'Lieu',\n OBJECT = 'Objet',\n NOTE = 'Note'\n}\n\nexport interface CharacterAttributes {\n age: number;\n height: number;\n hair: string;\n eyes: string;\n archetype: string;\n role: 'protagonist' | 'antagonist' | 'support' | 'extra';\n personality: {\n spectrumIntrovertExtravert: number;\n spectrumEmotionalRational: number;\n spectrumChaoticLawful: number;\n };\n physicalQuirk: string;\n behavioralQuirk: string;\n}\n\nexport type CustomFieldType = 'text' | 'textarea' | 'number' | 'boolean' | 'select';\n\nexport interface CustomFieldDefinition {\n id: string;\n label: string;\n type: CustomFieldType;\n options?: string[];\n placeholder?: string;\n}\n\nexport interface EntityTemplate {\n entityType: EntityType;\n fields: CustomFieldDefinition[];\n}\n\nexport interface Entity {\n id: string;\n type: EntityType;\n name: string;\n description: string;\n details: string;\n storyContext?: string;\n attributes?: CharacterAttributes;\n customValues?: Record;\n}\n\nexport interface Chapter {\n id: string;\n title: string;\n content: string;\n summary?: string;\n}\n\nexport type PlotNodeType = 'story' | 'dialogue' | 'action';\n\nexport interface PlotNode {\n id: string;\n x: number;\n y: number;\n title: string;\n description: string;\n color: string;\n type?: PlotNodeType;\n}\n\nexport interface PlotConnection {\n id: string;\n source: string;\n target: string;\n}\n\nexport interface WorkflowData {\n nodes: PlotNode[];\n connections: PlotConnection[];\n}\n\nexport type IdeaStatus = 'todo' | 'progress' | 'done';\nexport type IdeaCategory = 'plot' | 'character' | 'research' | 'todo';\n\nexport interface Idea {\n id: string;\n title: string;\n description: string;\n status: IdeaStatus;\n category: IdeaCategory;\n createdAt: number;\n}\n\nexport interface BookSettings {\n genre: string;\n subGenre?: string;\n targetAudience: string;\n tone: string;\n pov: string;\n tense: string;\n synopsis: string;\n themes: string;\n}\n\nexport interface BookProject {\n id: string;\n title: string;\n author: string;\n lastModified: number;\n settings?: BookSettings;\n // Direct fields sometimes used in creation/updates before settings normalization\n genre?: string;\n pov?: string;\n tense?: string;\n chapters: Chapter[];\n entities: Entity[];\n workflow?: WorkflowData;\n templates?: EntityTemplate[];\n styleGuide?: string;\n ideas?: Idea[];\n}\n\nexport interface ChatMessage {\n id: string;\n role: 'user' | 'model';\n text: string;\n responseType?: 'draft' | 'reflection';\n isLoading?: boolean;\n}\n\n// --- SAAS TYPES ---\n\nexport type PlanType = 'free' | 'pro' | 'master';\n\nexport interface Subscription {\n plan: PlanType;\n startDate: number;\n status: 'active' | 'canceled' | 'past_due';\n}\n\nexport interface UserUsage {\n aiActionsCurrent: number;\n aiActionsLimit: number;\n projectsLimit: number;\n}\n\nexport interface UserPreferences {\n theme: 'light' | 'dark' | 'sepia';\n dailyWordGoal: number;\n language: 'fr' | 'en';\n}\n\nexport interface UserStats {\n totalWordsWritten: number;\n writingStreak: number;\n lastWriteDate: number;\n}\n\nexport interface UserProfile {\n id: string;\n email: string;\n name: string;\n avatar?: string;\n bio?: string;\n subscription: Subscription;\n usage: UserUsage;\n preferences: UserPreferences;\n stats: UserStats;\n}\n\nexport type ViewMode = 'write' | 'world_building' | 'workflow' | 'settings' | 'preview' | 'ideas' | 'landing' | 'features' | 'pricing' | 'checkout' | 'dashboard' | 'auth' | 'signup' | 'profile';\n"],"names":[],"mappings":";;;;AACO,IAAA,AAAK,oCAAA;;;;;WAAA"}}, {"offset": {"line": 22, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/constants.ts"],"sourcesContent":["\nimport { EntityType } from \"./types\";\n\nexport const DEFAULT_BOOK_TITLE = \"Nouveau Roman\";\nexport const DEFAULT_AUTHOR = \"Auteur Inconnu\";\n\nexport const INITIAL_CHAPTER = {\n id: 'chap-1',\n title: 'Chapitre 1',\n content: '

Il était une fois...

',\n summary: 'Début de l\\'histoire.'\n};\n\nexport const ENTITY_ICONS: Record = {\n [EntityType.CHARACTER]: '👤',\n [EntityType.LOCATION]: '🏰',\n [EntityType.OBJECT]: '🗝️',\n [EntityType.NOTE]: '📝',\n};\n\n// Colors for tags\nexport const ENTITY_COLORS: Record = {\n [EntityType.CHARACTER]: 'bg-blue-100 text-blue-800 border-blue-200',\n [EntityType.LOCATION]: 'bg-green-100 text-green-800 border-green-200',\n [EntityType.OBJECT]: 'bg-amber-100 text-amber-800 border-amber-200',\n [EntityType.NOTE]: 'bg-gray-100 text-gray-800 border-gray-200',\n};\n\n// --- Character Creation Lists ---\n\nexport const HAIR_COLORS = [\n \"Brun\", \"Noir\", \"Blond\", \"Roux\", \"Auburn\", \"Gris\", \"Blanc\", \"Châtain\", \"Chauve\", \"Teinture (Bleu/Rose/Etc)\"\n];\n\nexport const EYE_COLORS = [\n \"Marron\", \"Bleu\", \"Vert\", \"Noisette\", \"Gris\", \"Noir\", \"Vairons\", \"Ambre\"\n];\n\nexport const ARCHETYPES = [\n \"Le Héros\", \"L'Ombre / Le Méchant\", \"Le Mentor\", \"Le Gardien du Seuil\",\n \"Le Shapeshifter (Changeforme)\", \"Le Trickster (Farceur)\", \"L'Allié\", \"L'Élu\",\n \"Le Rebelle\", \"Le Séducteur\", \"Le Sage\", \"Le Guerrier\", \"L'Innocent\"\n];\n\n// --- Book Settings Lists ---\n\nexport const GENRES = [\n \"Fantasy\", \"Science-Fiction\", \"Thriller / Polar\", \"Romance\", \"Historique\",\n \"Horreur\", \"Aventure\", \"Contemporain\", \"Jeunesse / Young Adult\", \"Dystopie\"\n];\n\nexport const TONES = [\n \"Sombre & Sérieux\", \"Léger & Humoristique\", \"Épique & Grandiose\",\n \"Mélancolique\", \"Mystérieux\", \"Optimiste\", \"Cynique\", \"Romantique\"\n];\n\nexport const POV_OPTIONS = [\n \"1ère personne (Je)\",\n \"3ème personne (Limitée au protagoniste)\",\n \"3ème personne (Omnisciente)\",\n \"Multi-points de vue (Alterné)\"\n];\n\nexport const TENSE_OPTIONS = [\n \"Passé (Passé simple / Imparfait)\",\n \"Présent de narration\"\n];"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEO,MAAM,qBAAqB;AAC3B,MAAM,iBAAiB;AAEvB,MAAM,kBAAkB;IAC7B,IAAI;IACJ,OAAO;IACP,SAAS;IACT,SAAS;AACX;AAEO,MAAM,eAA2C;IACtD,CAAC,gLAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,gLAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,gLAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,gLAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAGO,MAAM,gBAA4C;IACvD,CAAC,gLAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,gLAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,gLAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,gLAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAIO,MAAM,cAAc;IACzB;IAAQ;IAAQ;IAAS;IAAQ;IAAU;IAAQ;IAAS;IAAW;IAAU;CAClF;AAEM,MAAM,aAAa;IACxB;IAAU;IAAQ;IAAQ;IAAY;IAAQ;IAAQ;IAAW;CAClE;AAEM,MAAM,aAAa;IACxB;IAAY;IAAwB;IAAa;IACjD;IAAiC;IAA0B;IAAW;IACtE;IAAc;IAAgB;IAAW;IAAe;CACzD;AAIM,MAAM,SAAS;IACpB;IAAW;IAAmB;IAAoB;IAAW;IAC7D;IAAW;IAAY;IAAgB;IAA0B;CAClE;AAEM,MAAM,QAAQ;IACnB;IAAoB;IAAwB;IAC5C;IAAgB;IAAc;IAAa;IAAW;CACvD;AAEM,MAAM,cAAc;IACzB;IACA;IACA;IACA;CACD;AAEM,MAAM,gBAAgB;IAC3B;IACA;CACD"}}, - {"offset": {"line": 146, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n await api.projects.update(id, payload);\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n"],"names":[],"mappings":";;;;AAEA;AAQA;AACA;;AAXA;;;;AAiBO,MAAM,cAAc,CAAC;;IACxB,MAAM,CAAC,UAAU,YAAY,GAAG,IAAA,qNAAQ,EAAgB,EAAE;IAC1D,MAAM,CAAC,kBAAkB,oBAAoB,GAAG,IAAA,qNAAQ,EAAgB;IACxE,MAAM,CAAC,SAAS,WAAW,GAAG,IAAA,qNAAQ,EAAC;IAEvC,gBAAgB;IAChB,IAAA,sNAAS;iCAAC;YACN,IAAI,CAAC,MAAM;gBACP,YAAY,EAAE;gBACd;YACJ;YACA,MAAM;sDAAe;oBACjB,WAAW;oBACX,IAAI;wBACA,MAAM,OAAO,MAAM,2KAAG,CAAC,QAAQ,CAAC,IAAI;wBACpC,MAAM,SAAwB,CAAC,QAAQ,EAAE,EAAE,GAAG;yEAAC,CAAC,IAAW,CAAC;oCACxD,IAAI,EAAE,EAAE;oCACR,OAAO,EAAE,KAAK;oCACd,QAAQ,EAAE,MAAM;oCAChB,cAAc,IAAI,KAAK,EAAE,SAAS,EAAE,OAAO;oCAC3C,UAAU,EAAE;oCACZ,UAAU,EAAE;oCACZ,OAAO,EAAE;oCACT,UAAU,EAAE,QAAQ,IAAI;gCAC5B,CAAC;;wBACD,YAAY;oBAChB,EAAE,OAAO,KAAK;wBACV,QAAQ,KAAK,CAAC,2BAA2B;oBAC7C,SAAU;wBACN,WAAW;oBACf;gBACJ;;YACA;QACJ;gCAAG;QAAC;KAAK;IAET,wCAAwC;IACxC,IAAA,sNAAS;iCAAC;YACN,IAAI,CAAC,kBAAkB;YAEvB,MAAM;4DAAqB;oBACvB,IAAI;wBACA,MAAM,cAAc,MAAM,2KAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;wBAC3C,MAAM,SAAsB;4BACxB,IAAI,YAAY,EAAE;4BAClB,OAAO,YAAY,KAAK;4BACxB,QAAQ,YAAY,MAAM;4BAC1B,cAAc,IAAI,KAAK,YAAY,SAAS,EAAE,OAAO;4BACrD,UAAU,YAAY,QAAQ,IAAI;4BAClC,YAAY,YAAY,UAAU,IAAI;4BACtC,UAAU,CAAC,YAAY,QAAQ,IAAI,EAAE,EAAE,GAAG;4EAAC,CAAC,IAAW,CAAC;wCACpD,IAAI,EAAE,EAAE;wCACR,OAAO,EAAE,KAAK;wCACd,SAAS,EAAE,OAAO;wCAClB,SAAS,EAAE,OAAO;oCACtB,CAAC;;4BACD,UAAU,CAAC,YAAY,QAAQ,IAAI,EAAE,EAAE,GAAG;4EAAC,CAAC,IAAW,CAAC;wCACpD,IAAI,EAAE,EAAE;wCACR,MAAM,EAAE,IAAI;wCACZ,MAAM,EAAE,IAAI;wCACZ,aAAa,EAAE,WAAW;wCAC1B,SAAS,EAAE,OAAO;wCAClB,cAAc,EAAE,YAAY;wCAC5B,YAAY,EAAE,UAAU;wCACxB,cAAc,EAAE,YAAY;oCAChC,CAAC;;4BACD,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,EAAE,GAAG;4EAAC,CAAC,IAAW,CAAC;wCAC9C,IAAI,EAAE,EAAE;wCACR,OAAO,EAAE,KAAK;wCACd,aAAa,EAAE,WAAW;wCAC1B,QAAQ,EAAE,MAAM;wCAChB,UAAU,EAAE,QAAQ;wCACpB,WAAW,IAAI,KAAK,EAAE,SAAS,EAAE,OAAO;oCAC5C,CAAC;;4BACD,UAAU;gCACN,OAAO,CAAC,YAAY,SAAS,IAAI,EAAE,EAAE,GAAG;gFAAC,CAAC,IAAW,CAAC;4CAClD,IAAI,EAAE,EAAE;4CACR,GAAG,EAAE,CAAC;4CACN,GAAG,EAAE,CAAC;4CACN,OAAO,EAAE,KAAK;4CACd,aAAa,EAAE,WAAW;4CAC1B,OAAO,EAAE,KAAK;4CACd,MAAM,EAAE,IAAI;wCAChB,CAAC;;gCACD,aAAa,CAAC,YAAY,eAAe,IAAI,EAAE,EAAE,GAAG;gFAAC,CAAC,IAAW,CAAC;4CAC9D,IAAI,EAAE,EAAE;4CACR,QAAQ,EAAE,MAAM;4CAChB,QAAQ,EAAE,MAAM;wCACpB,CAAC;;4BACL;wBACJ;wBACA;wEAAY,CAAA,OAAQ,KAAK,GAAG;gFAAC,CAAA,IAAK,EAAE,EAAE,KAAK,mBAAmB,SAAS;;;oBAC3E,EAAE,OAAO,KAAK;wBACV,QAAQ,KAAK,CAAC,kCAAkC;oBACpD;gBACJ;;YACA;QACJ;gCAAG;QAAC;KAAiB;IAErB,MAAM,gBAAgB;QAClB,IAAI,CAAC,MAAM;QAEX,IAAI;YACA,MAAM,UAAU,MAAM,2KAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACtC,OAAO,4LAAkB;gBACzB,QAAQ,KAAK,IAAI,IAAI,wLAAc;gBACnC,UAAU;oBAAE,OAAO;oBAAW,gBAAgB;oBAAS,MAAM;gBAAO;YACxE;YAEA,MAAM,aAA0B;gBAC5B,IAAI,QAAQ,EAAE;gBACd,OAAO,QAAQ,KAAK;gBACpB,QAAQ,QAAQ,MAAM;gBACtB,cAAc,KAAK,GAAG;gBACtB,UAAU,EAAE;gBACZ,UAAU,EAAE;gBACZ,OAAO,EAAE;gBACT,UAAU,QAAQ,QAAQ;YAC9B;YAEA,YAAY,CAAA,OAAQ;uBAAI;oBAAM;iBAAW;YACzC,MAAM,WAAW,QAAQ,EAAE,EAAE,yLAAe;YAC5C,OAAO,QAAQ,EAAE;QACrB,EAAE,OAAO,KAAK;YACV,QAAQ,KAAK,CAAC,4BAA4B;QAC9C;IACJ;IAEA,MAAM,gBAAgB,OAAO,IAAY;QACrC,YAAY,CAAA,OAAQ,KAAK,GAAG,CAAC,CAAA,IAAK,EAAE,EAAE,KAAK,KAAK;oBAAE,GAAG,CAAC;oBAAE,GAAG,IAAI;gBAAC,IAAI;QAEpE,IAAI;YACA,MAAM,UAAe,CAAC;YACtB,IAAI,KAAK,KAAK,KAAK,WAAW,QAAQ,KAAK,GAAG,KAAK,KAAK;YACxD,IAAI,KAAK,MAAM,KAAK,WAAW,QAAQ,MAAM,GAAG,KAAK,MAAM;YAC3D,IAAI,KAAK,QAAQ,KAAK,WAAW,QAAQ,QAAQ,GAAG,KAAK,QAAQ;YACjE,IAAI,KAAK,UAAU,KAAK,WAAW,QAAQ,UAAU,GAAG,KAAK,UAAU;YACvE,MAAM,2KAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI;QAClC,EAAE,OAAO,KAAK;YACV,QAAQ,KAAK,CAAC,4BAA4B;QAC9C;IACJ;IAEA,MAAM,aAAa,OAAO,WAAmB;QACzC,IAAI;YACA,MAAM,UAAU,MAAM,2KAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACtC;gBACA,OAAO,YAAY,KAAK,IAAI;gBAC5B,SAAS,YAAY,OAAO,IAAI;gBAChC,SAAS,YAAY,OAAO,IAAI;YACpC;YAEA,YAAY,CAAA,OAAQ,KAAK,GAAG,CAAC,CAAA;oBACzB,IAAI,EAAE,EAAE,KAAK,WAAW,OAAO;oBAC/B,OAAO;wBACH,GAAG,CAAC;wBACJ,UAAU;+BAAI,EAAE,QAAQ;4BAAE;gCACtB,IAAI,QAAQ,EAAE;gCACd,OAAO,QAAQ,KAAK;gCACpB,SAAS,QAAQ,OAAO;gCACxB,SAAS,QAAQ,OAAO;4BAC5B;yBAAE;oBACN;gBACJ;YACA,OAAO,QAAQ,EAAE;QACrB,EAAE,OAAO,KAAK;YACV,QAAQ,KAAK,CAAC,yBAAyB;YACvC,OAAO;QACX;IACJ;IAEA,MAAM,gBAAgB,OAAO,WAAmB,WAAmB;QAC/D,YAAY,CAAA,OAAQ,KAAK,GAAG,CAAC,CAAA;gBACzB,IAAI,EAAE,EAAE,KAAK,WAAW,OAAO;gBAC/B,OAAO;oBACH,GAAG,CAAC;oBACJ,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAA,IAAK,EAAE,EAAE,KAAK,YAAY;4BAAE,GAAG,CAAC;4BAAE,GAAG,IAAI;wBAAC,IAAI;gBAC3E;YACJ;QAEA,IAAI;YACA,MAAM,2KAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW;QACzC,EAAE,OAAO,KAAK;YACV,QAAQ,KAAK,CAAC,4BAA4B;QAC9C;IACJ;IAEA,MAAM,eAAe,OAAO,WAAmB,MAAkB;QAC7D,IAAI;YACA,MAAM,YAAY,MAAM,2KAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACxC;gBACA;gBACA,MAAM,aAAa,QAAQ,CAAC,QAAQ,EAAE,MAAM;gBAC5C,aAAa,aAAa,eAAe;gBACzC,SAAS,aAAa,WAAW;gBACjC,YAAY,aAAa,cAAc;gBACvC,cAAc,aAAa,gBAAgB;YAC/C;YAEA,YAAY,CAAA,OAAQ,KAAK,GAAG,CAAC,CAAA;oBACzB,IAAI,EAAE,EAAE,KAAK,WAAW,OAAO;oBAC/B,OAAO;wBACH,GAAG,CAAC;wBACJ,UAAU;+BAAI,EAAE,QAAQ;4BAAE;gCACtB,IAAI,UAAU,EAAE;gCAChB,MAAM,UAAU,IAAI;gCACpB,MAAM,UAAU,IAAI;gCACpB,aAAa,UAAU,WAAW;gCAClC,SAAS,UAAU,OAAO;gCAC1B,YAAY,UAAU,UAAU;gCAChC,cAAc,UAAU,YAAY,IAAI,CAAC;4BAC7C;yBAAE;oBACN;gBACJ;YACA,OAAO,UAAU,EAAE;QACvB,EAAE,OAAO,KAAK;YACV,QAAQ,KAAK,CAAC,2BAA2B;YACzC,MAAM;QACV;IACJ;IAEA,MAAM,eAAe,OAAO,WAAmB,UAAkB;QAC7D,YAAY,CAAA,OAAQ,KAAK,GAAG,CAAC,CAAA;gBACzB,IAAI,EAAE,EAAE,KAAK,WAAW,OAAO;gBAC/B,OAAO;oBACH,GAAG,CAAC;oBACJ,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAA,IAAK,EAAE,EAAE,KAAK,WAAW;4BAAE,GAAG,CAAC;4BAAE,GAAG,IAAI;wBAAC,IAAI;gBAC1E;YACJ;QAEA,IAAI;YACA,MAAM,2KAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU;QACxC,EAAE,OAAO,KAAK;YACV,QAAQ,KAAK,CAAC,2BAA2B;QAC7C;IACJ;IAEA,MAAM,eAAe,OAAO,WAAmB;QAC3C,YAAY,CAAA,OAAQ,KAAK,GAAG,CAAC,CAAA;gBACzB,IAAI,EAAE,EAAE,KAAK,WAAW,OAAO;gBAC/B,OAAO;oBACH,GAAG,CAAC;oBACJ,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA,IAAK,EAAE,EAAE,KAAK;gBAC9C;YACJ;QAEA,IAAI;YACA,MAAM,2KAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC9B,EAAE,OAAO,KAAK;YACV,QAAQ,KAAK,CAAC,2BAA2B;QAC7C;IACJ;IAEA,OAAO;QACH;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,eAAe,OAAO;YAClB,IAAI;gBACA,+DAA+D;gBAC/D,MAAM,2KAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAE1B,YAAY,CAAA,OAAQ,KAAK,MAAM,CAAC,CAAA,IAAK,EAAE,EAAE,KAAK;gBAC9C,IAAI,qBAAqB,WAAW;oBAChC,oBAAoB;gBACxB;YACJ,EAAE,OAAO,KAAK;gBACV,QAAQ,KAAK,CAAC,4BAA4B;YAC9C;QACJ;IACJ;AACJ;GArRa"}}, - {"offset": {"line": 474, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/Dashboard.tsx"],"sourcesContent":["'use client';\n\n\nimport React from 'react';\nimport { BookProject, UserProfile } from '@/lib/types';\nimport { Plus, Book, Clock, Star, ChevronRight, LogOut, LayoutDashboard, User, Target, Flame, Edit3 } from 'lucide-react';\n\ninterface DashboardProps {\n user: UserProfile;\n projects: BookProject[];\n onSelect: (id: string) => void;\n onCreate: () => void;\n onLogout: () => void;\n onPricing: () => void;\n onProfile: () => void;\n}\n\nconst Dashboard: React.FC = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile }) => {\n return (\n
\n
\n \n {/* User Card */}\n
\n
\n
\n \"Avatar\"\n
\n
\n
\n

Bonjour, {user.name} 👋

\n
\n {user.subscription.plan}\n Membre depuis le 24 janv.\n
\n
\n
\n
\n \n \n
\n
\n\n {/* Stats Section */}\n
\n
\n
\n
\n

Série actuelle

\n

{user.stats.writingStreak} Jours

\n
\n
\n
\n
\n
\n

Mots écrits

\n

{user.stats.totalWordsWritten.toLocaleString()}

\n
\n
\n
\n
\n
\n

Objectif du jour

\n

{user.preferences.dailyWordGoal} Mots

\n
\n
\n
\n\n
\n {/* Project List */}\n
\n
\n

Mes Romans

\n \n
\n\n
\n {projects.map(p => (\n
onSelect(p.id)}\n className=\"bg-white p-8 rounded-[2.5rem] border border-indigo-50 shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64\"\n >\n
\n
\n \n
\n

{p.title}

\n

Dernière modification : {new Date(p.lastModified).toLocaleDateString()}

\n
\n
\n {p.chapters.length} Chapitres\n \n
\n
\n ))}\n {projects.length === 0 && (\n
\n \n

Prêt à commencer votre premier roman ?

\n \n
\n )}\n
\n
\n\n {/* Sidebar Stats & Plan */}\n
\n
\n
\n

Utilisation

\n
\n
\n
\n Actions IA\n {user.usage.aiActionsCurrent} / {user.usage.aiActionsLimit === 999999 ? '∞' : user.usage.aiActionsLimit}\n
\n
\n
\n
\n
\n
\n
\n Emplacements Roman\n {projects.length} / {user.usage.projectsLimit}\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Dashboard;\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 1143, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/dashboard/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { useRouter } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport Dashboard from '@/components/Dashboard';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\nimport { useEffect } from 'react';\r\n\r\nexport default function DashboardPage() {\r\n const router = useRouter();\r\n const { user, logout, loading } = useAuthContext();\r\n const { projects, setCurrentProjectId, createProject } = useProjects(user);\r\n\r\n useEffect(() => {\r\n if (!loading && !user) {\r\n router.replace('/login');\r\n }\r\n }, [user, loading, router]);\r\n\r\n if (loading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }}\r\n onCreate={async () => {\r\n const id = await createProject();\r\n if (id) {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }\r\n }}\r\n onLogout={() => {\r\n logout();\r\n router.push('/');\r\n }}\r\n onPricing={() => router.push('/pricing')}\r\n onProfile={() => router.push('/profile')}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;;;AAPA;;;;;;;AASe,SAAS;;IACpB,MAAM,SAAS,IAAA,8LAAS;IACxB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,kMAAc;IAChD,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,aAAa,EAAE,GAAG,IAAA,yLAAW,EAAC;IAErE,IAAA,sNAAS;mCAAC;YACN,IAAI,CAAC,WAAW,CAAC,MAAM;gBACnB,OAAO,OAAO,CAAC;YACnB;QACJ;kCAAG;QAAC;QAAM;QAAS;KAAO;IAE1B,IAAI,WAAW,CAAC,MAAM;QAClB,qBACI,yOAAC;YAAI,WAAU;;8BACX,yOAAC,2QAAO;oBAAC,WAAU;oBAAkC,MAAM;;;;;;8BAC3D,yOAAC;oBAAI,WAAU;;sCACX,yOAAC,yQAAQ;4BAAC,WAAU;4BAAgB,MAAM;;;;;;sCAC1C,yOAAC;4BAAK,WAAU;sCAAoB;;;;;;;;;;;;;;;;;;IAIpD;IAEA,qBACI,yOAAC,yLAAS;QACN,MAAM;QACN,UAAU;QACV,UAAU,CAAC;YACP,oBAAoB;YACpB,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI;QAChC;QACA,UAAU;YACN,MAAM,KAAK,MAAM;YACjB,IAAI,IAAI;gBACJ,oBAAoB;gBACpB,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI;YAChC;QACJ;QACA,UAAU;YACN;YACA,OAAO,IAAI,CAAC;QAChB;QACA,WAAW,IAAM,OAAO,IAAI,CAAC;QAC7B,WAAW,IAAM,OAAO,IAAI,CAAC;;;;;;AAGzC;GA9CwB;;QACL,8LAAS;QACU,kMAAc;QACS,yLAAW;;;KAHhD"}}, - {"offset": {"line": 1266, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/navigation.js"],"sourcesContent":["module.exports = require('./dist/client/components/navigation')\n"],"names":[],"mappings":"AAAA,OAAO,OAAO","ignoreList":[0]}}, - {"offset": {"line": 1271, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts"],"sourcesContent":["/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,YAAA,CAAA,CAAA,CAAe,CAAA,GAA2C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GACrE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,GAAO,KAAA,CAAA,CAAA,CAAA,CAAA,CAAU;QACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACE,OAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAChB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB,CAAA,CAAA,CAAA,CAAA,CAAA,MAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CACjC,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,KAAM,CAAA,CAAA,CAAA,CAAA,CAAA;IAEjC,CAAC,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAG,CAAA,CACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}}, - {"offset": {"line": 1289, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts"],"sourcesContent":["/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}}, - {"offset": {"line": 1305, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts"],"sourcesContent":["/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,WAAA,CAAA,CAAA,CAAc,CAAmB,MAAA,CAAA,CAAA,CAAA,AAC5C,CAD4C,AAC5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAyB,CAAC,CAAA,CAAA,CAAA,CAAA,GAAO,CAAA,CAAA,CAAA,CAAI,EAAA,CAAA,CAAA,CAAA,AAClD,CADkD,AAClD,IAAK,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAI,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}}, - {"offset": {"line": 1321, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts"],"sourcesContent":["import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n"],"names":[],"mappings":";;;;;;;;;;;AASO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAmB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgC;IAC7E,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,EAAY,MAAM,CAAA;IAEpC,OAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAY,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA;AAC/D,CAAA"}}, - {"offset": {"line": 1342, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/defaultAttributes.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts"],"sourcesContent":["export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n"],"names":[],"mappings":";;;;;;;;;IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe;IACb,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACP,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA;IACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA;IACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACT,CAAA,CAAA,CAAA,CAAA,EAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA;IACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACf,cAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAClB,CAAA"}}, - {"offset": {"line": 1368, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts"],"sourcesContent":["/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+B;IACzD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,KAAQ,KAAA,CAAA,AAAO;QACxB,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,KAAK,CAAA,CAAA,CAAA,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,MAAS,OAAA,CAAA,CAAS;YACnE,OAAO,CAAA,CAAA,CAAA,CAAA;QACT;IACF;IAEA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA"}}, - {"offset": {"line": 1391, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/Icon.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts"],"sourcesContent":["import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAwBA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EACX,CACE,EACE,CAAA,CAAA,CAAA,CAAA,CAAA,GAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACR,CAAA,CAAA,CAAA,CAAA,GAAO,CAAA,CAAA,EACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAc,CAAA,EACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAY,CAAA,CAAA,EACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACA,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,GAAA,EAEL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EACE,CAAA,CAAA,CAAA,CAAA,CAAA,EACA;QACE,CAAA,CAAA,CAAA;QACA,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA;QACH,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA;QACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA;QACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA;QACR,WAAA,CAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAuB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,IAAI,CAAA,CAAA,GAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAI,CAAA,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAC/E,SAAA,CAAA,KAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,SAAS,CAAA;QAC3C,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,KAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,EAAY,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA;YAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,MAAA;QAAA,CAAO;QAC/D,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA;IAAA,CACL,EACA;WACK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,OAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAc,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,CAAA;WACvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW;YAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ;SAAA;KAAA"}}, - {"offset": {"line": 1432, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/createLucideIcon.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts"],"sourcesContent":["import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAWA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,gBAAA,CAAA,CAAA,CAAmB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,QAAA,CAAA,CAAA,CAAA,CAAA,CAAuB;IACjE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAuC,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,GAAM,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GACjF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAc,gNAAA,CAAA,CAAM;YAClB,CAAA,CAAA,CAAA;YACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EACT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,MAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAC7C,CAAA,OAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,EAClB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAEF,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CACJ;IAGH,SAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,QAAQ,CAAA;IAE7C,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA"}}, - {"offset": {"line": 1467, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/plus.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/plus.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n];\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('plus', __iconNode);\n\nexport default Plus;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAC3C;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAA,CAAA,CAAA,KAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 1512, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/book.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20',\n key: 'k3hazp',\n },\n ],\n];\n\n/**\n * @component @name Book\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxOS41di0xNUEyLjUgMi41IDAgMCAxIDYuNSAySDE5YTEgMSAwIDAgMSAxIDF2MThhMSAxIDAgMCAxLTEgMUg2LjVhMSAxIDAgMCAxIDAtNUgyMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/book\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Book = createLucideIcon('book', __iconNode);\n\nexport default Book;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACA;YACE,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACH,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA;KACP;CAEJ;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAA,CAAA,CAAA,KAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 1550, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/star.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/star.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z',\n key: 'r04s7s',\n },\n ],\n];\n\n/**\n * @component @name Star\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuNTI1IDIuMjk1YS41My41MyAwIDAgMSAuOTUgMGwyLjMxIDQuNjc5YTIuMTIzIDIuMTIzIDAgMCAwIDEuNTk1IDEuMTZsNS4xNjYuNzU2YS41My41MyAwIDAgMSAuMjk0LjkwNGwtMy43MzYgMy42MzhhMi4xMjMgMi4xMjMgMCAwIDAtLjYxMSAxLjg3OGwuODgyIDUuMTRhLjUzLjUzIDAgMCAxLS43NzEuNTZsLTQuNjE4LTIuNDI4YTIuMTIyIDIuMTIyIDAgMCAwLTEuOTczIDBMNi4zOTYgMjEuMDFhLjUzLjUzIDAgMCAxLS43Ny0uNTZsLjg4MS01LjEzOWEyLjEyMiAyLjEyMiAwIDAgMC0uNjExLTEuODc5TDIuMTYgOS43OTVhLjUzLjUzIDAgMCAxIC4yOTQtLjkwNmw1LjE2NS0uNzU1YTIuMTIyIDIuMTIyIDAgMCAwIDEuNTk3LTEuMTZ6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/star\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Star = createLucideIcon('star', __iconNode);\n\nexport default Star;\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 1588, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/chevron-right.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/chevron-right.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]];\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtOSAxOCA2LTYtNi02IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('chevron-right', __iconNode);\n\nexport default ChevronRight;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB;IAAC;QAAC,MAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,eAAA,CAAA;YAAiB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAC;CAAA;AAapF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,YAAA,CAAA,CAAA,KAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 1626, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/log-out.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/log-out.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm16 17 5-5-5-5', key: '1bji2h' }],\n ['path', { d: 'M21 12H9', key: 'dn1m92' }],\n ['path', { d: 'M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4', key: '1uf3rs' }],\n];\n\n/**\n * @component @name LogOut\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTYgMTcgNS01LTUtNSIgLz4KICA8cGF0aCBkPSJNMjEgMTJIOSIgLz4KICA8cGF0aCBkPSJNOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/log-out\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LogOut = createLucideIcon('log-out', __iconNode);\n\nexport default LogOut;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAkB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC/C;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA2C,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAC1E;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,MAAA,CAAA,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 1678, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/user.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/user.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n];\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMjF2LTJhNCA0IDAgMCAwLTQtNEg5YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/user\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst User = createLucideIcon('user', __iconNode);\n\nexport default User;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA6C,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC1E;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,QAAA;QAAA,CAAU;KAAA;CACzD;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAA,CAAA,CAAA,KAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 1725, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/target.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/target.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['circle', { cx: '12', cy: '12', r: '6', key: '1vlfrh' }],\n ['circle', { cx: '12', cy: '12', r: '2', key: '1c9p78' }],\n];\n\n/**\n * @component @name Target\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI2IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/target\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Target = createLucideIcon('target', __iconNode);\n\nexport default Target;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,QAAA,CAAA;QAAU,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzD;QAAC,QAAA,CAAA;QAAU,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA;YAAK,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACxD;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,QAAA;QAAA,CAAU;KAAA;CAC1D;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,MAAA,CAAA,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 1783, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/flame.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/flame.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4',\n key: '1slcih',\n },\n ],\n];\n\n/**\n * @component @name Flame\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgM3ExIDQgNCA2LjV0MyA1LjVhMSAxIDAgMCAxLTE0IDAgNSA1IDAgMCAxIDEtMyAxIDEgMCAwIDAgNSAwYzAtMi0xLjUtMy0xLjUtNXEwLTIgMi41LTQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/flame\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Flame = createLucideIcon('flame', __iconNode);\n\nexport default Flame;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACA;YACE,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACH,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA;KACP;CAEJ;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAA,CAAA,CAAA,KAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 1821, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/pen-line.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/pen-line.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M13 21h8', key: '1jsn5i' }],\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n];\n\n/**\n * @component @name PenLine\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTMgMjFoOCIgLz4KICA8cGF0aCBkPSJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/pen-line\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst PenLine = createLucideIcon('pen-line', __iconNode);\n\nexport default PenLine;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzC;QACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACA;YACE,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACH,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA;KACP;CAEJ;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,OAAA,CAAA,CAAA,KAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 1866, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/loader-circle.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/loader-circle.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB;IAAC;QAAC,MAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,6BAAA,CAAA;YAA+B,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAC;CAAA;AAalG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,YAAA,CAAA,CAAA,KAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 1904, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/book-open.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book-open.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 7v14', key: '1akyts' }],\n [\n 'path',\n {\n d: 'M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z',\n key: 'ruj8y',\n },\n ],\n];\n\n/**\n * @component @name BookOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgN3YxNCIgLz4KICA8cGF0aCBkPSJNMyAxOGExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWg1YTQgNCAwIDAgMSA0IDQgNCA0IDAgMCAxIDQtNGg1YTEgMSAwIDAgMSAxIDF2MTNhMSAxIDAgMCAxLTEgMWgtNmEzIDMgMCAwIDAtMyAzIDMgMyAwIDAgMC0zLTN6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/book-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst BookOpen = createLucideIcon('book-open', __iconNode);\n\nexport default BookOpen;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzC;QACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACA;YACE,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACH,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA;KACP;CAEJ;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,QAAA,CAAA,CAAA,KAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}] + {"offset": {"line": 146, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n // Persist project fields\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n if (Object.keys(payload).length > 0) {\r\n await api.projects.update(id, payload);\r\n }\r\n\r\n // Persist workflow (nodes + connections) separately\r\n if (data.workflow) {\r\n await api.projects.syncWorkflow(id, {\r\n nodes: data.workflow.nodes || [],\r\n connections: data.workflow.connections || [],\r\n });\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 484, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/Dashboard.tsx"],"sourcesContent":["'use client';\n\n\nimport React from 'react';\nimport { BookProject, UserProfile } from '@/lib/types';\nimport { Plus, Book, Clock, Star, ChevronRight, LogOut, LayoutDashboard, User, Target, Flame, Edit3 } from 'lucide-react';\n\ninterface DashboardProps {\n user: UserProfile;\n projects: BookProject[];\n onSelect: (id: string) => void;\n onCreate: () => void;\n onLogout: () => void;\n onPricing: () => void;\n onProfile: () => void;\n}\n\nconst Dashboard: React.FC = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile }) => {\n return (\n
\n
\n \n {/* User Card */}\n
\n
\n
\n \"Avatar\"\n
\n
\n
\n

Bonjour, {user.name} 👋

\n
\n {user.subscription.plan}\n Membre depuis le 24 janv.\n
\n
\n
\n
\n \n \n
\n
\n\n {/* Stats Section */}\n
\n
\n
\n
\n

Série actuelle

\n

{user.stats.writingStreak} Jours

\n
\n
\n
\n
\n
\n

Mots écrits

\n

{user.stats.totalWordsWritten.toLocaleString()}

\n
\n
\n
\n
\n
\n

Objectif du jour

\n

{user.preferences.dailyWordGoal} Mots

\n
\n
\n
\n\n
\n {/* Project List */}\n
\n
\n

Mes Romans

\n \n
\n\n
\n {projects.map(p => (\n
onSelect(p.id)}\n className=\"bg-white p-8 rounded-[2.5rem] border border-indigo-50 shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64\"\n >\n
\n
\n \n
\n

{p.title}

\n

Dernière modification : {new Date(p.lastModified).toLocaleDateString()}

\n
\n
\n {p.chapters.length} Chapitres\n \n
\n
\n ))}\n {projects.length === 0 && (\n
\n \n

Prêt à commencer votre premier roman ?

\n \n
\n )}\n
\n
\n\n {/* Sidebar Stats & Plan */}\n
\n
\n
\n

Utilisation

\n
\n
\n
\n Actions IA\n {user.usage.aiActionsCurrent} / {user.usage.aiActionsLimit === 999999 ? '∞' : user.usage.aiActionsLimit}\n
\n
\n
\n
\n
\n
\n
\n Emplacements Roman\n {projects.length} / {user.usage.projectsLimit}\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Dashboard;\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 1153, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/dashboard/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { useRouter } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport Dashboard from '@/components/Dashboard';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\nimport { useEffect } from 'react';\r\n\r\nexport default function DashboardPage() {\r\n const router = useRouter();\r\n const { user, logout, loading } = useAuthContext();\r\n const { projects, setCurrentProjectId, createProject } = useProjects(user);\r\n\r\n useEffect(() => {\r\n if (!loading && !user) {\r\n router.replace('/login');\r\n }\r\n }, [user, loading, router]);\r\n\r\n if (loading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }}\r\n onCreate={async () => {\r\n const id = await createProject();\r\n if (id) {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }\r\n }}\r\n onLogout={() => {\r\n logout();\r\n router.push('/');\r\n }}\r\n onPricing={() => router.push('/pricing')}\r\n onProfile={() => router.push('/profile')}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;;;AAPA;;;;;;;AASe,SAAS;;IACpB,MAAM,SAAS,IAAA,8LAAS;IACxB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,kMAAc;IAChD,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,aAAa,EAAE,GAAG,IAAA,yLAAW,EAAC;IAErE,IAAA,sNAAS;mCAAC;YACN,IAAI,CAAC,WAAW,CAAC,MAAM;gBACnB,OAAO,OAAO,CAAC;YACnB;QACJ;kCAAG;QAAC;QAAM;QAAS;KAAO;IAE1B,IAAI,WAAW,CAAC,MAAM;QAClB,qBACI,yOAAC;YAAI,WAAU;;8BACX,yOAAC,2QAAO;oBAAC,WAAU;oBAAkC,MAAM;;;;;;8BAC3D,yOAAC;oBAAI,WAAU;;sCACX,yOAAC,yQAAQ;4BAAC,WAAU;4BAAgB,MAAM;;;;;;sCAC1C,yOAAC;4BAAK,WAAU;sCAAoB;;;;;;;;;;;;;;;;;;IAIpD;IAEA,qBACI,yOAAC,yLAAS;QACN,MAAM;QACN,UAAU;QACV,UAAU,CAAC;YACP,oBAAoB;YACpB,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI;QAChC;QACA,UAAU;YACN,MAAM,KAAK,MAAM;YACjB,IAAI,IAAI;gBACJ,oBAAoB;gBACpB,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI;YAChC;QACJ;QACA,UAAU;YACN;YACA,OAAO,IAAI,CAAC;QAChB;QACA,WAAW,IAAM,OAAO,IAAI,CAAC;QAC7B,WAAW,IAAM,OAAO,IAAI,CAAC;;;;;;AAGzC;GA9CwB;;QACL,8LAAS;QACU,kMAAc;QACS,yLAAW;;;KAHhD"}}, + {"offset": {"line": 1276, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/navigation.js"],"sourcesContent":["module.exports = require('./dist/client/components/navigation')\n"],"names":[],"mappings":"AAAA,OAAO,OAAO","ignoreList":[0]}}, + {"offset": {"line": 1281, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts"],"sourcesContent":["/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,YAAA,CAAA,CAAA,CAAe,CAAA,GAA2C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GACrE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,GAAO,KAAA,CAAA,CAAA,CAAA,CAAA,CAAU;QACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACE,OAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAChB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB,CAAA,CAAA,CAAA,CAAA,CAAA,MAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CACjC,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,KAAM,CAAA,CAAA,CAAA,CAAA,CAAA;IAEjC,CAAC,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAG,CAAA,CACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}}, + {"offset": {"line": 1299, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts"],"sourcesContent":["/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}}, + {"offset": {"line": 1315, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts"],"sourcesContent":["/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,WAAA,CAAA,CAAA,CAAc,CAAmB,MAAA,CAAA,CAAA,CAAA,AAC5C,CAD4C,AAC5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAyB,CAAC,CAAA,CAAA,CAAA,CAAA,GAAO,CAAA,CAAA,CAAA,CAAI,EAAA,CAAA,CAAA,CAAA,AAClD,CADkD,AAClD,IAAK,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAI,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}}, + {"offset": {"line": 1331, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts"],"sourcesContent":["import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n"],"names":[],"mappings":";;;;;;;;;;;AASO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAmB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgC;IAC7E,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,EAAY,MAAM,CAAA;IAEpC,OAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAY,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA;AAC/D,CAAA"}}, + {"offset": {"line": 1352, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/defaultAttributes.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts"],"sourcesContent":["export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n"],"names":[],"mappings":";;;;;;;;;IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe;IACb,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACP,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA;IACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA;IACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACT,CAAA,CAAA,CAAA,CAAA,EAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA;IACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACf,cAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAClB,CAAA"}}, + {"offset": {"line": 1378, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts"],"sourcesContent":["/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+B;IACzD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,KAAQ,KAAA,CAAA,AAAO;QACxB,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,KAAK,CAAA,CAAA,CAAA,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,MAAS,OAAA,CAAA,CAAS;YACnE,OAAO,CAAA,CAAA,CAAA,CAAA;QACT;IACF;IAEA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA"}}, + {"offset": {"line": 1401, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/Icon.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts"],"sourcesContent":["import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 1442, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/createLucideIcon.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts"],"sourcesContent":["import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAWA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,gBAAA,CAAA,CAAA,CAAmB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,QAAA,CAAA,CAAA,CAAA,CAAA,CAAuB;IACjE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAuC,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,GAAM,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GACjF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAc,gNAAA,CAAA,CAAM;YAClB,CAAA,CAAA,CAAA;YACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EACT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,MAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAC7C,CAAA,OAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,EAClB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAEF,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CACJ;IAGH,SAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,QAAQ,CAAA;IAE7C,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA"}}, + {"offset": {"line": 1477, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/plus.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/plus.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n];\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('plus', __iconNode);\n\nexport default Plus;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAC3C;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAA,CAAA,CAAA,KAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 1522, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/book.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20',\n key: 'k3hazp',\n },\n ],\n];\n\n/**\n * @component @name Book\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxOS41di0xNUEyLjUgMi41IDAgMCAxIDYuNSAySDE5YTEgMSAwIDAgMSAxIDF2MThhMSAxIDAgMCAxLTEgMUg2LjVhMSAxIDAgMCAxIDAtNUgyMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/book\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Book = createLucideIcon('book', __iconNode);\n\nexport default Book;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACA;YACE,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACH,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA;KACP;CAEJ;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAA,CAAA,CAAA,KAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 1560, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/star.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/star.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z',\n key: 'r04s7s',\n },\n ],\n];\n\n/**\n * @component @name Star\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuNTI1IDIuMjk1YS41My41MyAwIDAgMSAuOTUgMGwyLjMxIDQuNjc5YTIuMTIzIDIuMTIzIDAgMCAwIDEuNTk1IDEuMTZsNS4xNjYuNzU2YS41My41MyAwIDAgMSAuMjk0LjkwNGwtMy43MzYgMy42MzhhMi4xMjMgMi4xMjMgMCAwIDAtLjYxMSAxLjg3OGwuODgyIDUuMTRhLjUzLjUzIDAgMCAxLS43NzEuNTZsLTQuNjE4LTIuNDI4YTIuMTIyIDIuMTIyIDAgMCAwLTEuOTczIDBMNi4zOTYgMjEuMDFhLjUzLjUzIDAgMCAxLS43Ny0uNTZsLjg4MS01LjEzOWEyLjEyMiAyLjEyMiAwIDAgMC0uNjExLTEuODc5TDIuMTYgOS43OTVhLjUzLjUzIDAgMCAxIC4yOTQtLjkwNmw1LjE2NS0uNzU1YTIuMTIyIDIuMTIyIDAgMCAwIDEuNTk3LTEuMTZ6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/star\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Star = createLucideIcon('star', __iconNode);\n\nexport default Star;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACA;YACE,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACH,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA;KACP;CAEJ;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAA,CAAA,CAAA,KAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 1598, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/chevron-right.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/chevron-right.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]];\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtOSAxOCA2LTYtNi02IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('chevron-right', __iconNode);\n\nexport default ChevronRight;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB;IAAC;QAAC,MAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,eAAA,CAAA;YAAiB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAC;CAAA;AAapF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,YAAA,CAAA,CAAA,KAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 1636, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/log-out.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/log-out.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm16 17 5-5-5-5', key: '1bji2h' }],\n ['path', { d: 'M21 12H9', key: 'dn1m92' }],\n ['path', { d: 'M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4', key: '1uf3rs' }],\n];\n\n/**\n * @component @name LogOut\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTYgMTcgNS01LTUtNSIgLz4KICA8cGF0aCBkPSJNMjEgMTJIOSIgLz4KICA8cGF0aCBkPSJNOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/log-out\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LogOut = createLucideIcon('log-out', __iconNode);\n\nexport default LogOut;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAkB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC/C;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA2C,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAC1E;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,MAAA,CAAA,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 1688, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/user.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/user.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n];\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMjF2LTJhNCA0IDAgMCAwLTQtNEg5YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/user\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst User = createLucideIcon('user', __iconNode);\n\nexport default User;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA6C,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC1E;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,QAAA;QAAA,CAAU;KAAA;CACzD;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAA,CAAA,CAAA,KAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 1735, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/target.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/target.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['circle', { cx: '12', cy: '12', r: '6', key: '1vlfrh' }],\n ['circle', { cx: '12', cy: '12', r: '2', key: '1c9p78' }],\n];\n\n/**\n * @component @name Target\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI2IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/target\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Target = createLucideIcon('target', __iconNode);\n\nexport default Target;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,QAAA,CAAA;QAAU,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzD;QAAC,QAAA,CAAA;QAAU,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA;YAAK,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACxD;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,QAAA;QAAA,CAAU;KAAA;CAC1D;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,MAAA,CAAA,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 1793, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/flame.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/flame.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4',\n key: '1slcih',\n },\n ],\n];\n\n/**\n * @component @name Flame\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgM3ExIDQgNCA2LjV0MyA1LjVhMSAxIDAgMCAxLTE0IDAgNSA1IDAgMCAxIDEtMyAxIDEgMCAwIDAgNSAwYzAtMi0xLjUtMy0xLjUtNXEwLTIgMi41LTQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/flame\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Flame = createLucideIcon('flame', __iconNode);\n\nexport default Flame;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACA;YACE,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACH,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA;KACP;CAEJ;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAA,CAAA,CAAA,KAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 1831, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/pen-line.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/pen-line.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M13 21h8', key: '1jsn5i' }],\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n];\n\n/**\n * @component @name PenLine\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTMgMjFoOCIgLz4KICA8cGF0aCBkPSJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/pen-line\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst PenLine = createLucideIcon('pen-line', __iconNode);\n\nexport default PenLine;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzC;QACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACA;YACE,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACH,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA;KACP;CAEJ;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,OAAA,CAAA,CAAA,KAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 1876, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/loader-circle.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/loader-circle.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB;IAAC;QAAC,MAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,6BAAA,CAAA;YAA+B,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAC;CAAA;AAalG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,YAAA,CAAA,CAAA,KAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 1914, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/book-open.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book-open.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 7v14', key: '1akyts' }],\n [\n 'path',\n {\n d: 'M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z',\n key: 'ruj8y',\n },\n ],\n];\n\n/**\n * @component @name BookOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgN3YxNCIgLz4KICA8cGF0aCBkPSJNMyAxOGExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWg1YTQgNCAwIDAgMSA0IDQgNCA0IDAgMCAxIDQtNGg1YTEgMSAwIDAgMSAxIDF2MTNhMSAxIDAgMCAxLTEgMWgtNmEzIDMgMCAwIDAtMyAzIDMgMyAwIDAgMC0zLTN6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/book-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst BookOpen = createLucideIcon('book-open', __iconNode);\n\nexport default BookOpen;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzC;QACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACA;YACE,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACH,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA;KACP;CAEJ;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,QAAA,CAAA,CAAA,KAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}] } \ No newline at end of file diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js index 88a8cc8..83fcc33 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js @@ -357,12 +357,22 @@ const useProjects = (user)=>{ ...data } : p)); try { + // Persist project fields const payload = {}; if (data.title !== undefined) payload.title = data.title; if (data.author !== undefined) payload.author = data.author; if (data.settings !== undefined) payload.settings = data.settings; if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide; - await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].projects.update(id, payload); + if (Object.keys(payload).length > 0) { + await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].projects.update(id, payload); + } + // Persist workflow (nodes + connections) separately + if (data.workflow) { + await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].projects.syncWorkflow(id, { + nodes: data.workflow.nodes || [], + connections: data.workflow.connections || [] + }); + } } catch (err) { console.error("Failed to update project", err); } diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js.map b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js.map index 9c6134d..69ee088 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js.map +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js.map @@ -5,11 +5,11 @@ {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/providers/ProjectProvider.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { createContext, useContext } from 'react';\r\nimport { BookProject, UserProfile } from '@/lib/types';\r\n\r\ninterface ProjectContextType {\r\n project: BookProject;\r\n user: UserProfile;\r\n projectId: string;\r\n currentChapterId: string;\r\n setCurrentChapterId: (id: string) => void;\r\n updateProject: (updates: Partial) => void;\r\n updateChapter: (chapterId: string, data: any) => void;\r\n incrementUsage: () => void;\r\n}\r\n\r\nconst ProjectContext = createContext(null);\r\n\r\nexport function ProjectProvider({\r\n value,\r\n children,\r\n}: {\r\n value: ProjectContextType;\r\n children: React.ReactNode;\r\n}) {\r\n return {children};\r\n}\r\n\r\nexport function useProjectContext(): ProjectContextType {\r\n const ctx = useContext(ProjectContext);\r\n if (!ctx) throw new Error('useProjectContext must be used within ProjectProvider');\r\n return ctx;\r\n}\r\n"],"names":[],"mappings":";;;;;;;AAEA;;;AAFA;;AAgBA,MAAM,+BAAiB,IAAA,0NAAa,EAA4B;AAEzD,SAAS,gBAAgB,EAC5B,KAAK,EACL,QAAQ,EAIX;IACG,qBAAO,yOAAC,eAAe,QAAQ;QAAC,OAAO;kBAAQ;;;;;;AACnD;KARgB;AAUT,SAAS;;IACZ,MAAM,MAAM,IAAA,uNAAU,EAAC;IACvB,IAAI,CAAC,KAAK,MAAM,IAAI,MAAM;IAC1B,OAAO;AACX;GAJgB"}}, {"offset": {"line": 44, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/types.ts"],"sourcesContent":["\nexport enum EntityType {\n CHARACTER = 'Personnage',\n LOCATION = 'Lieu',\n OBJECT = 'Objet',\n NOTE = 'Note'\n}\n\nexport interface CharacterAttributes {\n age: number;\n height: number;\n hair: string;\n eyes: string;\n archetype: string;\n role: 'protagonist' | 'antagonist' | 'support' | 'extra';\n personality: {\n spectrumIntrovertExtravert: number;\n spectrumEmotionalRational: number;\n spectrumChaoticLawful: number;\n };\n physicalQuirk: string;\n behavioralQuirk: string;\n}\n\nexport type CustomFieldType = 'text' | 'textarea' | 'number' | 'boolean' | 'select';\n\nexport interface CustomFieldDefinition {\n id: string;\n label: string;\n type: CustomFieldType;\n options?: string[];\n placeholder?: string;\n}\n\nexport interface EntityTemplate {\n entityType: EntityType;\n fields: CustomFieldDefinition[];\n}\n\nexport interface Entity {\n id: string;\n type: EntityType;\n name: string;\n description: string;\n details: string;\n storyContext?: string;\n attributes?: CharacterAttributes;\n customValues?: Record;\n}\n\nexport interface Chapter {\n id: string;\n title: string;\n content: string;\n summary?: string;\n}\n\nexport type PlotNodeType = 'story' | 'dialogue' | 'action';\n\nexport interface PlotNode {\n id: string;\n x: number;\n y: number;\n title: string;\n description: string;\n color: string;\n type?: PlotNodeType;\n}\n\nexport interface PlotConnection {\n id: string;\n source: string;\n target: string;\n}\n\nexport interface WorkflowData {\n nodes: PlotNode[];\n connections: PlotConnection[];\n}\n\nexport type IdeaStatus = 'todo' | 'progress' | 'done';\nexport type IdeaCategory = 'plot' | 'character' | 'research' | 'todo';\n\nexport interface Idea {\n id: string;\n title: string;\n description: string;\n status: IdeaStatus;\n category: IdeaCategory;\n createdAt: number;\n}\n\nexport interface BookSettings {\n genre: string;\n subGenre?: string;\n targetAudience: string;\n tone: string;\n pov: string;\n tense: string;\n synopsis: string;\n themes: string;\n}\n\nexport interface BookProject {\n id: string;\n title: string;\n author: string;\n lastModified: number;\n settings?: BookSettings;\n // Direct fields sometimes used in creation/updates before settings normalization\n genre?: string;\n pov?: string;\n tense?: string;\n chapters: Chapter[];\n entities: Entity[];\n workflow?: WorkflowData;\n templates?: EntityTemplate[];\n styleGuide?: string;\n ideas?: Idea[];\n}\n\nexport interface ChatMessage {\n id: string;\n role: 'user' | 'model';\n text: string;\n responseType?: 'draft' | 'reflection';\n isLoading?: boolean;\n}\n\n// --- SAAS TYPES ---\n\nexport type PlanType = 'free' | 'pro' | 'master';\n\nexport interface Subscription {\n plan: PlanType;\n startDate: number;\n status: 'active' | 'canceled' | 'past_due';\n}\n\nexport interface UserUsage {\n aiActionsCurrent: number;\n aiActionsLimit: number;\n projectsLimit: number;\n}\n\nexport interface UserPreferences {\n theme: 'light' | 'dark' | 'sepia';\n dailyWordGoal: number;\n language: 'fr' | 'en';\n}\n\nexport interface UserStats {\n totalWordsWritten: number;\n writingStreak: number;\n lastWriteDate: number;\n}\n\nexport interface UserProfile {\n id: string;\n email: string;\n name: string;\n avatar?: string;\n bio?: string;\n subscription: Subscription;\n usage: UserUsage;\n preferences: UserPreferences;\n stats: UserStats;\n}\n\nexport type ViewMode = 'write' | 'world_building' | 'workflow' | 'settings' | 'preview' | 'ideas' | 'landing' | 'features' | 'pricing' | 'checkout' | 'dashboard' | 'auth' | 'signup' | 'profile';\n"],"names":[],"mappings":";;;;AACO,IAAA,AAAK,oCAAA;;;;;WAAA"}}, {"offset": {"line": 62, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/constants.ts"],"sourcesContent":["\nimport { EntityType } from \"./types\";\n\nexport const DEFAULT_BOOK_TITLE = \"Nouveau Roman\";\nexport const DEFAULT_AUTHOR = \"Auteur Inconnu\";\n\nexport const INITIAL_CHAPTER = {\n id: 'chap-1',\n title: 'Chapitre 1',\n content: '

Il était une fois...

',\n summary: 'Début de l\\'histoire.'\n};\n\nexport const ENTITY_ICONS: Record = {\n [EntityType.CHARACTER]: '👤',\n [EntityType.LOCATION]: '🏰',\n [EntityType.OBJECT]: '🗝️',\n [EntityType.NOTE]: '📝',\n};\n\n// Colors for tags\nexport const ENTITY_COLORS: Record = {\n [EntityType.CHARACTER]: 'bg-blue-100 text-blue-800 border-blue-200',\n [EntityType.LOCATION]: 'bg-green-100 text-green-800 border-green-200',\n [EntityType.OBJECT]: 'bg-amber-100 text-amber-800 border-amber-200',\n [EntityType.NOTE]: 'bg-gray-100 text-gray-800 border-gray-200',\n};\n\n// --- Character Creation Lists ---\n\nexport const HAIR_COLORS = [\n \"Brun\", \"Noir\", \"Blond\", \"Roux\", \"Auburn\", \"Gris\", \"Blanc\", \"Châtain\", \"Chauve\", \"Teinture (Bleu/Rose/Etc)\"\n];\n\nexport const EYE_COLORS = [\n \"Marron\", \"Bleu\", \"Vert\", \"Noisette\", \"Gris\", \"Noir\", \"Vairons\", \"Ambre\"\n];\n\nexport const ARCHETYPES = [\n \"Le Héros\", \"L'Ombre / Le Méchant\", \"Le Mentor\", \"Le Gardien du Seuil\",\n \"Le Shapeshifter (Changeforme)\", \"Le Trickster (Farceur)\", \"L'Allié\", \"L'Élu\",\n \"Le Rebelle\", \"Le Séducteur\", \"Le Sage\", \"Le Guerrier\", \"L'Innocent\"\n];\n\n// --- Book Settings Lists ---\n\nexport const GENRES = [\n \"Fantasy\", \"Science-Fiction\", \"Thriller / Polar\", \"Romance\", \"Historique\",\n \"Horreur\", \"Aventure\", \"Contemporain\", \"Jeunesse / Young Adult\", \"Dystopie\"\n];\n\nexport const TONES = [\n \"Sombre & Sérieux\", \"Léger & Humoristique\", \"Épique & Grandiose\",\n \"Mélancolique\", \"Mystérieux\", \"Optimiste\", \"Cynique\", \"Romantique\"\n];\n\nexport const POV_OPTIONS = [\n \"1ère personne (Je)\",\n \"3ème personne (Limitée au protagoniste)\",\n \"3ème personne (Omnisciente)\",\n \"Multi-points de vue (Alterné)\"\n];\n\nexport const TENSE_OPTIONS = [\n \"Passé (Passé simple / Imparfait)\",\n \"Présent de narration\"\n];"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEO,MAAM,qBAAqB;AAC3B,MAAM,iBAAiB;AAEvB,MAAM,kBAAkB;IAC7B,IAAI;IACJ,OAAO;IACP,SAAS;IACT,SAAS;AACX;AAEO,MAAM,eAA2C;IACtD,CAAC,gLAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,gLAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,gLAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,gLAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAGO,MAAM,gBAA4C;IACvD,CAAC,gLAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,gLAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,gLAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,gLAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAIO,MAAM,cAAc;IACzB;IAAQ;IAAQ;IAAS;IAAQ;IAAU;IAAQ;IAAS;IAAW;IAAU;CAClF;AAEM,MAAM,aAAa;IACxB;IAAU;IAAQ;IAAQ;IAAY;IAAQ;IAAQ;IAAW;CAClE;AAEM,MAAM,aAAa;IACxB;IAAY;IAAwB;IAAa;IACjD;IAAiC;IAA0B;IAAW;IACtE;IAAc;IAAgB;IAAW;IAAe;CACzD;AAIM,MAAM,SAAS;IACpB;IAAW;IAAmB;IAAoB;IAAW;IAC7D;IAAW;IAAY;IAAgB;IAA0B;CAClE;AAEM,MAAM,QAAQ;IACnB;IAAoB;IAAwB;IAC5C;IAAgB;IAAc;IAAa;IAAW;CACvD;AAEM,MAAM,cAAc;IACzB;IACA;IACA;IACA;CACD;AAEM,MAAM,gBAAgB;IAC3B;IACA;CACD"}}, - {"offset": {"line": 186, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n await api.projects.update(id, payload);\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 514, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useChat.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState } from 'react';\r\nimport {\r\n BookProject,\r\n ChatMessage,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\n\r\nexport const useChat = () => {\r\n const [chatHistory, setChatHistory] = useState([]);\r\n const [isGenerating, setIsGenerating] = useState(false);\r\n\r\n const sendMessage = async (\r\n project: BookProject,\r\n context: string,\r\n text: string,\r\n user: UserProfile,\r\n incrementUsage: () => void\r\n ) => {\r\n const userMsg: ChatMessage = {\r\n id: Date.now().toString(),\r\n role: 'user',\r\n text: text\r\n };\r\n setChatHistory(prev => [...prev, userMsg]);\r\n setIsGenerating(true);\r\n\r\n try {\r\n const response = await api.ai.generate(\r\n project,\r\n context === 'global' ? '' : context,\r\n text,\r\n user\r\n );\r\n\r\n incrementUsage();\r\n\r\n const aiMsg: ChatMessage = {\r\n id: (Date.now() + 1).toString(),\r\n role: 'model',\r\n text: response.text,\r\n responseType: response.type\r\n };\r\n setChatHistory(prev => [...prev, aiMsg]);\r\n } catch {\r\n setChatHistory(prev => [...prev, {\r\n id: Date.now().toString(),\r\n role: 'model',\r\n text: \"Désolé, une erreur est survenue lors de la génération.\"\r\n }]);\r\n } finally {\r\n setIsGenerating(false);\r\n }\r\n };\r\n\r\n return { chatHistory, isGenerating, sendMessage };\r\n};\r\n"],"names":[],"mappings":";;;;AAEA;AAMA;;AARA;;;AAUO,MAAM,UAAU;;IACnB,MAAM,CAAC,aAAa,eAAe,GAAG,IAAA,qNAAQ,EAAgB,EAAE;IAChE,MAAM,CAAC,cAAc,gBAAgB,GAAG,IAAA,qNAAQ,EAAC;IAEjD,MAAM,cAAc,OAChB,SACA,SACA,MACA,MACA;QAEA,MAAM,UAAuB;YACzB,IAAI,KAAK,GAAG,GAAG,QAAQ;YACvB,MAAM;YACN,MAAM;QACV;QACA,eAAe,CAAA,OAAQ;mBAAI;gBAAM;aAAQ;QACzC,gBAAgB;QAEhB,IAAI;YACA,MAAM,WAAW,MAAM,2KAAG,CAAC,EAAE,CAAC,QAAQ,CAClC,SACA,YAAY,WAAW,KAAK,SAC5B,MACA;YAGJ;YAEA,MAAM,QAAqB;gBACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,QAAQ;gBAC7B,MAAM;gBACN,MAAM,SAAS,IAAI;gBACnB,cAAc,SAAS,IAAI;YAC/B;YACA,eAAe,CAAA,OAAQ;uBAAI;oBAAM;iBAAM;QAC3C,EAAE,OAAM;YACJ,eAAe,CAAA,OAAQ;uBAAI;oBAAM;wBAC7B,IAAI,KAAK,GAAG,GAAG,QAAQ;wBACvB,MAAM;wBACN,MAAM;oBACV;iBAAE;QACN,SAAU;YACN,gBAAgB;QACpB;IACJ;IAEA,OAAO;QAAE;QAAa;QAAc;IAAY;AACpD;GAhDa"}}, - {"offset": {"line": 579, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/AIPanel.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { Sparkles, Send, RefreshCw, BookOpen, Bot, ArrowLeft, BrainCircuit, Zap } from 'lucide-react';\nimport { ChatMessage, UserUsage } from '@/lib/types';\n\ninterface AIPanelProps {\n chatHistory: ChatMessage[];\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n selectedText: string;\n isGenerating: boolean;\n usage?: UserUsage;\n}\n\nconst AIPanel: React.FC = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGenerating, usage }) => {\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [chatHistory, isGenerating]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (!input.trim() || isGenerating) return;\n onSendMessage(input);\n setInput(\"\");\n };\n\n const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false;\n\n return (\n
\n {/* Header with Usage Counter */}\n
\n
\n \n

Assistant IA

\n
\n {usage && (\n
\n {usage.aiActionsCurrent} / {usage.aiActionsLimit === 999999 ? '∞' : usage.aiActionsLimit}\n
\n )}\n
\n\n {selectedText && (\n
\n
Contexte :
\n
\"{selectedText.substring(0, 60)}...\"
\n
\n )}\n\n
\n {chatHistory.length === 0 && (\n
\n \n

Bonjour ! Comment puis-je vous aider aujourd'hui ?

\n {isLimitReached && (\n
\n Limite atteinte ! Améliorez votre plan.\n
\n )}\n
\n )}\n\n {chatHistory.map((msg) => (\n
\n
\n {msg.role === 'model' && msg.responseType === 'reflection' && (\n
Réflexion
\n )}\n
{msg.text}
\n
\n
\n ))}\n \n {isGenerating && (\n
\n
\n L'IA travaille...\n
\n
\n )}\n
\n
\n\n
\n
\n setInput(e.target.value)}\n placeholder={isLimitReached ? \"Limite atteinte...\" : \"Votre message...\"}\n className=\"w-full pl-4 pr-12 py-3 bg-slate-100 rounded-2xl text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-shadow disabled:opacity-50\"\n disabled={isGenerating || isLimitReached}\n />\n \n \n
\n
\n );\n};\n\nexport default AIPanel;\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 893, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/layout/EditorShell.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState } from 'react';\nimport { BookProject, UserProfile, ViewMode, ChatMessage } from '@/lib/types';\nimport AIPanel from '@/components/AIPanel';\nimport { Book, FileText, Globe, GitGraph, Lightbulb, Settings, Menu, ChevronRight, ChevronLeft, Share2, HelpCircle, LogOut, LayoutDashboard, User, Plus, Trash2 } from 'lucide-react';\n\ninterface EditorShellProps {\n project: BookProject;\n user: UserProfile;\n viewMode: ViewMode;\n currentChapterId: string;\n chatHistory: ChatMessage[];\n isGenerating: boolean;\n onViewModeChange: (mode: ViewMode) => void;\n onChapterSelect: (id: string) => void;\n onUpdateProject: (updates: Partial) => void;\n onAddChapter: () => Promise;\n onDeleteChapter: (id: string) => void;\n onLogout: () => void;\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n onOpenExport: () => void;\n onOpenHelp: () => void;\n children: React.ReactNode;\n}\n\nconst EditorShell: React.FC = (props) => {\n const { project, user, viewMode, currentChapterId, children } = props;\n const [isSidebarOpen, setIsSidebarOpen] = useState(true);\n const [isAiPanelOpen, setIsAiPanelOpen] = useState(true);\n\n const currentChapter = project.chapters.find(c => c.id === currentChapterId);\n\n return (\n
\n\n {/* SIDEBAR */}\n \n\n {/* MAIN CONTENT */}\n
\n
\n
\n \n {viewMode === 'write' ? (\n props.onUpdateProject({ chapters: project.chapters.map(c => c.id === currentChapterId ? { ...c, title: e.target.value } : c) })}\n className=\"font-serif font-bold text-lg bg-transparent border-b border-transparent focus:border-blue-500 focus:outline-none\"\n />\n ) : (\n {viewMode}\n )}\n
\n
\n \n \n \n
\n
\n\n
\n {children}\n
\n
\n\n {/* AI PANEL */}\n
\n {isAiPanelOpen && }\n
\n
\n );\n};\n\nexport default EditorShell;\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 1438, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/ExportModal.tsx"],"sourcesContent":["'use client';\n\nimport React, { useState } from 'react';\nimport { BookProject } from '@/lib/types';\nimport { FileText, FileType, Printer, X, Download, Book, FileJson } from 'lucide-react';\n\ninterface ExportModalProps {\n isOpen: boolean;\n onClose: () => void;\n project: BookProject;\n onPrint: (options: { includeCover: boolean, includeTOC: boolean }) => void;\n}\n\ntype ExportFormat = 'pdf' | 'word' | 'epub' | 'markdown';\ntype PageSize = 'A4' | 'A5' | 'Letter';\n\nconst ExportModal: React.FC = ({ isOpen, onClose, project, onPrint }) => {\n const [format, setFormat] = useState('pdf');\n const [pageSize, setPageSize] = useState('A4');\n const [includeCover, setIncludeCover] = useState(true);\n const [includeTOC, setIncludeTOC] = useState(true);\n\n if (!isOpen) return null;\n\n const generateContentHTML = () => {\n let html = `\n \n \n \n \n ${project.title}\n \n \n \n `;\n\n if (includeCover) {\n html += `\n
\n

${project.title}

\n

${project.author}

\n
\n `;\n }\n\n if (includeTOC) {\n html += `

Table des Matières

    `;\n project.chapters.forEach((chap, idx) => {\n html += `
  • ${chap.title}
  • `;\n });\n html += `
`;\n }\n\n project.chapters.forEach((chap, idx) => {\n html += `\n
\n

${chap.title}

\n ${chap.content}\n
\n `;\n });\n\n html += ``;\n return html;\n };\n\n const handleExport = () => {\n const filename = project.title.replace(/[^a-z0-9]/gi, '_').toLowerCase();\n\n if (format === 'pdf') {\n // Use the classic window print tool via parent callback\n onPrint({ includeCover, includeTOC });\n } \n else if (format === 'word') {\n // Export as HTML with specific Word namespaces -> interpreted as doc by Word\n const content = generateContentHTML();\n const blob = new Blob(['\\ufeff', content], {\n type: 'application/msword'\n });\n downloadBlob(blob, `${filename}.doc`);\n } \n else if (format === 'epub') {\n // Export as a single XHTML file (Ebook ready)\n const content = generateContentHTML();\n const blob = new Blob([content], {\n type: 'application/xhtml+xml'\n });\n downloadBlob(blob, `${filename}.xhtml`);\n }\n else if (format === 'markdown') {\n let md = `# ${project.title}\\nBy ${project.author}\\n\\n`;\n project.chapters.forEach(c => {\n // Very basic HTML to Text conversion\n const text = c.content.replace(/<[^>]+>/g, '\\n');\n md += `## ${c.title}\\n\\n${text}\\n\\n---\\n\\n`;\n });\n const blob = new Blob([md], { type: 'text/markdown' });\n downloadBlob(blob, `${filename}.md`);\n }\n };\n\n const downloadBlob = (blob: Blob, name: string) => {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = name;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n onClose();\n };\n\n return (\n
\n
\n \n {/* Header */}\n
\n
\n

\n Exporter le livre\n

\n

{project.title}

\n
\n \n
\n\n {/* Body */}\n
\n \n {/* Format Selection */}\n
\n \n \n \n\n \n\n \n
\n\n {/* Options Section */}\n
\n

\n Paramètres d'exportation ({format.toUpperCase()})\n

\n\n
\n {format === 'pdf' && (\n
\n
\n \n Géré par l'imprimante (A4, A5...)\n
\n
Auto
\n
\n )}\n\n
\n \n setIncludeCover(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n
\n \n setIncludeTOC(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n {format === 'epub' && (\n

\n Note: L'export EPUB génère un fichier XHTML optimisé prêt à être converti par Calibre ou Kindle Previewer.\n

\n )}\n
\n
\n
\n\n {/* Footer */}\n
\n \n \n
\n
\n
\n );\n};\n\nexport default ExportModal;"],"names":[],"mappings":"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"}}, - {"offset": {"line": 1946, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/HelpModal.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { X, Keyboard, MousePointerClick, MessageCircle, Sparkles, GitGraph, BookOpen, Command, Globe, Layout, Settings, Lightbulb } from 'lucide-react';\nimport { ViewMode } from '@/lib/types';\n\ninterface HelpModalProps {\n isOpen: boolean;\n onClose: () => void;\n viewMode: ViewMode;\n}\n\nconst Kbd: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n \n {children}\n \n);\n\nconst HelpModal: React.FC = ({ isOpen, onClose, viewMode }) => {\n if (!isOpen) return null;\n\n const renderContent = () => {\n switch (viewMode) {\n case 'ideas':\n return (\n
\n

\n Boîte à Idées & Tâches\n

\n
\n

\n Un espace de type Kanban pour ne rien oublier. Utilisez-le pour noter des idées fugaces, planifier des recherches ou lister les scènes à écrire.\n

\n
    \n
  • \n \n \n Glisser-Déposer : Déplacez les cartes d'une colonne à l'autre (À faire → En cours → Validé) pour suivre votre progression.\n \n
  • \n
  • \n \n \n Catégories : Utilisez les catégories (Intrigue, Personnage, Recherche) pour filtrer visuellement vos tâches grâce aux codes couleurs.\n \n
  • \n
\n
\n
\n );\n\n case 'workflow':\n return (\n <>\n {/* Workflow Section */}\n
\n

\n Organisation Narrative\n

\n
\n
    \n
  • \n \n \n Sélection : Ctrl + Clic pour sélectionner plusieurs cartes. Glissez pour déplacer tout un groupe.\n \n
  • \n
  • \n \n \n Copier / Coller : Ctrl + C pour copier les nœuds sélectionnés, Ctrl + V pour coller.\n \n
  • \n
  • \n \n \n Connexions : Tirez depuis le cercle à droite d'une carte pour lier les événements.\n \n
  • \n
\n
\n
\n\n {/* Dialogue Intelligent */}\n
\n

\n Mode Dialogue (Workflow)\n

\n
\n
\n
Écriture Rapide
\n

\n Tapez un nom et Entrée : le formatage Nom: s'ajoute seul.\n

\n

\n Dans un dialogue, Entrée change de ligne et devine le prochain interlocuteur automatiquement.\n

\n
\n
\n
Rotation & Insertion
\n

\n Tab permute instantanément entre les personnages présents dans la scène.\n

\n

\n Utilisez @ pour insérer un personnage, # pour un lieu.\n

\n
\n
\n
\n \n );\n\n case 'world_building':\n return (\n
\n

\n Bible du Monde\n

\n
\n

\n La bible du monde permet de centraliser toutes les informations sur vos personnages et lieux.\n Ces informations sont lues par l'IA pour assurer la cohérence de l'histoire.\n

\n
\n
\n

Modèles Personnalisés

\n

\n Cliquez sur le bouton \"Modèles\" pour ajouter des champs spécifiques (ex: \"Type de Magie\", \"Allégeance\") à tous vos personnages ou lieux.\n

\n
\n
\n

Contexte Automatique

\n

\n Le champ \"Contexte Narratif\" se remplit automatiquement au fur et à mesure que vous écrivez votre histoire et que l'IA détecte l'évolution des personnages.\n

\n
\n
\n
\n
\n );\n\n case 'settings':\n return (\n
\n

\n Paramètres du Livre\n

\n

\n Ces réglages sont cruciaux pour l'Assistant IA. Ils définissent le \"ton\" de toutes les générations de texte.\n

\n
    \n
  • Style Guide : Soyez précis sur le style (ex: \"phrases courtes\", \"beaucoup de métaphores\", \"humour noir\").
  • \n
  • POV (Point de Vue) : Définit si l'IA doit écrire en \"Je\" ou \"Il/Elle\".
  • \n
\n
\n );\n\n case 'write':\n default:\n return (\n
\n

\n Éditeur & Assistant IA\n

\n
\n
\n

Menu Contextuel Intelligent

\n

Sélectionnez du texte et faites un clic droit pour :

\n
    \n
  • Corriger l'orthographe
  • \n
  • Reformuler / Améliorer
  • \n
  • Développer (Show, don't tell)
  • \n
  • Continuer l'écriture
  • \n
\n
\n

\n Historique des versions : Activez la marge de droite (icône horloge) pour voir toutes les interventions de l'IA et revenir en arrière si nécessaire.\n

\n

\n Chat Latéral : Posez des questions sur votre histoire, demandez des résumés ou des idées de rebondissements. L'IA connaît le contexte de vos chapitres précédents et de vos fiches personnages.\n

\n \n
\n

\n Raccourcis Clavier (Éditeur)\n

\n
\n
\n
\n Mettre en Gras\n Ctrl + B\n
\n
\n Mettre en Italique\n Ctrl + I\n
\n
\n Souligner\n Ctrl + U\n
\n
\n
\n
\n Tout sélectionner\n Ctrl + A\n
\n
\n Annuler\n Ctrl + Z\n
\n
\n Rétablir\n Ctrl + Shift + Z\n
\n
\n
\n
\n
\n
\n );\n }\n };\n\n return (\n
\n
\n \n {/* Header */}\n
\n
\n

\n Aide : {\n viewMode === 'workflow' ? 'Workflow & Dialogues' :\n viewMode === 'world_building' ? 'Bible du Monde' :\n viewMode === 'settings' ? 'Paramètres' :\n viewMode === 'ideas' ? 'Boîte à Idées' :\n 'Éditeur & IA'\n }\n

\n

Astuces pour l'écran actuel.

\n
\n \n
\n\n {/* Content */}\n
\n \n {/* Context Specific Content */}\n {renderContent()}\n\n {/* General Footer Section (Always visible) */}\n
\n

Raccourcis Généraux

\n
\n
\n Sauvegarde Automatique\n Permanente\n
\n
\n Menu Latéral\n Clic sur le burger\n
\n
\n
\n\n
\n\n {/* Footer */}\n
\n \n
\n\n
\n
\n );\n};\n\nexport default HelpModal;"],"names":[],"mappings":"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"}}, - {"offset": {"line": 3308, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/layout.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport { useParams, useRouter, usePathname } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { ProjectProvider } from '@/providers/ProjectProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport { useChat } from '@/hooks/useChat';\r\nimport { ViewMode } from '@/lib/types';\r\nimport EditorShell from '@/components/layout/EditorShell';\r\nimport ExportModal from '@/components/ExportModal';\r\nimport HelpModal from '@/components/HelpModal';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\n\r\nfunction getViewModeFromPath(pathname: string): ViewMode {\r\n if (pathname.endsWith('/world')) return 'world_building';\r\n if (pathname.endsWith('/ideas')) return 'ideas';\r\n if (pathname.endsWith('/workflow')) return 'workflow';\r\n if (pathname.endsWith('/settings')) return 'settings';\r\n return 'write';\r\n}\r\n\r\nexport default function ProjectLayout({ children }: { children: React.ReactNode }) {\r\n const params = useParams();\r\n const router = useRouter();\r\n const pathname = usePathname();\r\n const projectId = params.id as string;\r\n\r\n const { user, logout, incrementUsage, loading: authLoading } = useAuthContext();\r\n const {\r\n projects, setCurrentProjectId,\r\n updateProject, updateChapter, addChapter,\r\n } = useProjects(user);\r\n const { chatHistory, isGenerating, sendMessage } = useChat();\r\n\r\n const [currentChapterId, setCurrentChapterId] = useState('');\r\n const [isExportModalOpen, setIsExportModalOpen] = useState(false);\r\n const [isHelpModalOpen, setIsHelpModalOpen] = useState(false);\r\n\r\n const viewMode = getViewModeFromPath(pathname);\r\n\r\n useEffect(() => {\r\n if (projectId) setCurrentProjectId(projectId);\r\n }, [projectId, setCurrentProjectId]);\r\n\r\n useEffect(() => {\r\n if (!authLoading && !user) router.replace('/login');\r\n }, [user, authLoading, router]);\r\n\r\n const project = projects.find(p => p.id === projectId);\r\n\r\n useEffect(() => {\r\n if (project && (!currentChapterId || !project.chapters.some(c => c.id === currentChapterId))) {\r\n setCurrentChapterId(project.chapters[0]?.id || '');\r\n }\r\n }, [project, currentChapterId]);\r\n\r\n if (authLoading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (!project) {\r\n return (\r\n
\r\n \r\n

Chargement du projet...

\r\n
\r\n );\r\n }\r\n\r\n const handleViewModeChange = (mode: ViewMode) => {\r\n const base = `/project/${projectId}`;\r\n switch (mode) {\r\n case 'write': router.push(base); break;\r\n case 'world_building': router.push(`${base}/world`); break;\r\n case 'ideas': router.push(`${base}/ideas`); break;\r\n case 'workflow': router.push(`${base}/workflow`); break;\r\n case 'settings': router.push(`${base}/settings`); break;\r\n case 'dashboard': router.push('/dashboard'); break;\r\n default: router.push(base);\r\n }\r\n };\r\n\r\n return (\r\n updateProject(projectId, updates),\r\n updateChapter: (chapterId, data) => updateChapter(projectId, chapterId, data),\r\n incrementUsage,\r\n }}>\r\n { setCurrentChapterId(id); router.push(`/project/${projectId}`); }}\r\n onUpdateProject={(updates) => updateProject(projectId, updates)}\r\n onAddChapter={async () => {\r\n const id = await addChapter(projectId, {});\r\n if (id) {\r\n setCurrentChapterId(id);\r\n router.push(`/project/${projectId}`);\r\n }\r\n }}\r\n onDeleteChapter={(id) => {\r\n if (project.chapters.length > 1) {\r\n const newChapters = project.chapters.filter(c => c.id !== id);\r\n updateProject(projectId, { chapters: newChapters });\r\n if (currentChapterId === id) setCurrentChapterId(newChapters[0].id);\r\n }\r\n }}\r\n onLogout={() => { logout(); router.push('/'); }}\r\n onSendMessage={(msg) => {\r\n if (project && user) sendMessage(project, 'global', msg, user, incrementUsage);\r\n }}\r\n onInsertText={() => { }}\r\n onOpenExport={() => setIsExportModalOpen(true)}\r\n onOpenHelp={() => setIsHelpModalOpen(true)}\r\n >\r\n setIsExportModalOpen(false)} project={project} onPrint={() => { }} />\r\n setIsHelpModalOpen(false)} viewMode={viewMode} />\r\n {children}\r\n \r\n \r\n );\r\n}\r\n"],"names":[],"mappings":"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"}}] + {"offset": {"line": 186, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n // Persist project fields\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n if (Object.keys(payload).length > 0) {\r\n await api.projects.update(id, payload);\r\n }\r\n\r\n // Persist workflow (nodes + connections) separately\r\n if (data.workflow) {\r\n await api.projects.syncWorkflow(id, {\r\n nodes: data.workflow.nodes || [],\r\n connections: data.workflow.connections || [],\r\n });\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 524, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useChat.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState } from 'react';\r\nimport {\r\n BookProject,\r\n ChatMessage,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\n\r\nexport const useChat = () => {\r\n const [chatHistory, setChatHistory] = useState([]);\r\n const [isGenerating, setIsGenerating] = useState(false);\r\n\r\n const sendMessage = async (\r\n project: BookProject,\r\n context: string,\r\n text: string,\r\n user: UserProfile,\r\n incrementUsage: () => void\r\n ) => {\r\n const userMsg: ChatMessage = {\r\n id: Date.now().toString(),\r\n role: 'user',\r\n text: text\r\n };\r\n setChatHistory(prev => [...prev, userMsg]);\r\n setIsGenerating(true);\r\n\r\n try {\r\n const response = await api.ai.generate(\r\n project,\r\n context === 'global' ? '' : context,\r\n text,\r\n user\r\n );\r\n\r\n incrementUsage();\r\n\r\n const aiMsg: ChatMessage = {\r\n id: (Date.now() + 1).toString(),\r\n role: 'model',\r\n text: response.text,\r\n responseType: response.type\r\n };\r\n setChatHistory(prev => [...prev, aiMsg]);\r\n } catch {\r\n setChatHistory(prev => [...prev, {\r\n id: Date.now().toString(),\r\n role: 'model',\r\n text: \"Désolé, une erreur est survenue lors de la génération.\"\r\n }]);\r\n } finally {\r\n setIsGenerating(false);\r\n }\r\n };\r\n\r\n return { chatHistory, isGenerating, sendMessage };\r\n};\r\n"],"names":[],"mappings":";;;;AAEA;AAMA;;AARA;;;AAUO,MAAM,UAAU;;IACnB,MAAM,CAAC,aAAa,eAAe,GAAG,IAAA,qNAAQ,EAAgB,EAAE;IAChE,MAAM,CAAC,cAAc,gBAAgB,GAAG,IAAA,qNAAQ,EAAC;IAEjD,MAAM,cAAc,OAChB,SACA,SACA,MACA,MACA;QAEA,MAAM,UAAuB;YACzB,IAAI,KAAK,GAAG,GAAG,QAAQ;YACvB,MAAM;YACN,MAAM;QACV;QACA,eAAe,CAAA,OAAQ;mBAAI;gBAAM;aAAQ;QACzC,gBAAgB;QAEhB,IAAI;YACA,MAAM,WAAW,MAAM,2KAAG,CAAC,EAAE,CAAC,QAAQ,CAClC,SACA,YAAY,WAAW,KAAK,SAC5B,MACA;YAGJ;YAEA,MAAM,QAAqB;gBACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,QAAQ;gBAC7B,MAAM;gBACN,MAAM,SAAS,IAAI;gBACnB,cAAc,SAAS,IAAI;YAC/B;YACA,eAAe,CAAA,OAAQ;uBAAI;oBAAM;iBAAM;QAC3C,EAAE,OAAM;YACJ,eAAe,CAAA,OAAQ;uBAAI;oBAAM;wBAC7B,IAAI,KAAK,GAAG,GAAG,QAAQ;wBACvB,MAAM;wBACN,MAAM;oBACV;iBAAE;QACN,SAAU;YACN,gBAAgB;QACpB;IACJ;IAEA,OAAO;QAAE;QAAa;QAAc;IAAY;AACpD;GAhDa"}}, + {"offset": {"line": 589, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/AIPanel.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { Sparkles, Send, RefreshCw, BookOpen, Bot, ArrowLeft, BrainCircuit, Zap } from 'lucide-react';\nimport { ChatMessage, UserUsage } from '@/lib/types';\n\ninterface AIPanelProps {\n chatHistory: ChatMessage[];\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n selectedText: string;\n isGenerating: boolean;\n usage?: UserUsage;\n}\n\nconst AIPanel: React.FC = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGenerating, usage }) => {\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [chatHistory, isGenerating]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (!input.trim() || isGenerating) return;\n onSendMessage(input);\n setInput(\"\");\n };\n\n const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false;\n\n return (\n
\n {/* Header with Usage Counter */}\n
\n
\n \n

Assistant IA

\n
\n {usage && (\n
\n {usage.aiActionsCurrent} / {usage.aiActionsLimit === 999999 ? '∞' : usage.aiActionsLimit}\n
\n )}\n
\n\n {selectedText && (\n
\n
Contexte :
\n
\"{selectedText.substring(0, 60)}...\"
\n
\n )}\n\n
\n {chatHistory.length === 0 && (\n
\n \n

Bonjour ! Comment puis-je vous aider aujourd'hui ?

\n {isLimitReached && (\n
\n Limite atteinte ! Améliorez votre plan.\n
\n )}\n
\n )}\n\n {chatHistory.map((msg) => (\n
\n
\n {msg.role === 'model' && msg.responseType === 'reflection' && (\n
Réflexion
\n )}\n
{msg.text}
\n
\n
\n ))}\n \n {isGenerating && (\n
\n
\n L'IA travaille...\n
\n
\n )}\n
\n
\n\n
\n
\n setInput(e.target.value)}\n placeholder={isLimitReached ? \"Limite atteinte...\" : \"Votre message...\"}\n className=\"w-full pl-4 pr-12 py-3 bg-slate-100 rounded-2xl text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-shadow disabled:opacity-50\"\n disabled={isGenerating || isLimitReached}\n />\n \n \n
\n
\n );\n};\n\nexport default AIPanel;\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 903, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/layout/EditorShell.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState } from 'react';\nimport { BookProject, UserProfile, ViewMode, ChatMessage } from '@/lib/types';\nimport AIPanel from '@/components/AIPanel';\nimport { Book, FileText, Globe, GitGraph, Lightbulb, Settings, Menu, ChevronRight, ChevronLeft, Share2, HelpCircle, LogOut, LayoutDashboard, User, Plus, Trash2 } from 'lucide-react';\n\ninterface EditorShellProps {\n project: BookProject;\n user: UserProfile;\n viewMode: ViewMode;\n currentChapterId: string;\n chatHistory: ChatMessage[];\n isGenerating: boolean;\n onViewModeChange: (mode: ViewMode) => void;\n onChapterSelect: (id: string) => void;\n onUpdateProject: (updates: Partial) => void;\n onAddChapter: () => Promise;\n onDeleteChapter: (id: string) => void;\n onLogout: () => void;\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n onOpenExport: () => void;\n onOpenHelp: () => void;\n children: React.ReactNode;\n}\n\nconst EditorShell: React.FC = (props) => {\n const { project, user, viewMode, currentChapterId, children } = props;\n const [isSidebarOpen, setIsSidebarOpen] = useState(true);\n const [isAiPanelOpen, setIsAiPanelOpen] = useState(true);\n\n const currentChapter = project.chapters.find(c => c.id === currentChapterId);\n\n return (\n
\n\n {/* SIDEBAR */}\n \n\n {/* MAIN CONTENT */}\n
\n
\n
\n \n {viewMode === 'write' ? (\n props.onUpdateProject({ chapters: project.chapters.map(c => c.id === currentChapterId ? { ...c, title: e.target.value } : c) })}\n className=\"font-serif font-bold text-lg bg-transparent border-b border-transparent focus:border-blue-500 focus:outline-none\"\n />\n ) : (\n {viewMode}\n )}\n
\n
\n \n \n \n
\n
\n\n
\n {children}\n
\n
\n\n {/* AI PANEL */}\n
\n {isAiPanelOpen && }\n
\n
\n );\n};\n\nexport default EditorShell;\n"],"names":[],"mappings":";;;;;AAGA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AANA;;;;AA4BA,MAAM,cAA0C,CAAC;;IAC7C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG;IAChE,MAAM,CAAC,eAAe,iBAAiB,GAAG,IAAA,qNAAQ,EAAC;IACnD,MAAM,CAAC,eAAe,iBAAiB,GAAG,IAAA,qNAAQ,EAAC;IAEnD,MAAM,iBAAiB,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAA,IAAK,EAAE,EAAE,KAAK;IAE3D,qBACI,yOAAC;QAAI,WAAW,CAAC,uCAAuC,EAAE,KAAK,WAAW,CAAC,KAAK,KAAK,SAAS,4BAA4B,KAAK,WAAW,CAAC,KAAK,KAAK,UAAU,iBAAiB,gBAAgB;;0BAG5L,yOAAC;gBAAM,WAAW,GAAG,gBAAgB,SAAS,MAAM,8HAA8H,CAAC;;kCAC/K,yOAAC;wBAAI,WAAU;;0CACX,yOAAC;gCAAG,WAAU;gCAAmE,SAAS,IAAM,MAAM,gBAAgB,CAAC;;kDACnH,yOAAC,yPAAI;wCAAC,WAAU;;;;;;oCAAkB;;;;;;;0CAEtC,yOAAC;gCACG,MAAK;gCACL,OAAO,QAAQ,KAAK;gCACpB,UAAU,CAAC,IAAM,MAAM,eAAe,CAAC;wCAAE,OAAO,EAAE,MAAM,CAAC,KAAK;oCAAC;gCAC/D,WAAU;gCACV,aAAY;;;;;;0CAEhB,yOAAC;gCAAO,SAAS,IAAM,MAAM,gBAAgB,CAAC;gCAAc,WAAU;;kDAClE,yOAAC,8RAAe;wCAAC,MAAM;;;;;;oCAAM;;;;;;;;;;;;;kCAIrC,yOAAC;wBAAI,WAAU;;0CACX,yOAAC;gCAAI,WAAU;;oCAA6F;kDAC9F,yOAAC;wCAAO,SAAS,MAAM,YAAY;wCAAE,WAAU;kDAAsB,cAAA,yOAAC,yPAAI;4CAAC,MAAM;;;;;;;;;;;;;;;;;4BAE9F,QAAQ,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,oBACzB,yOAAC;oCAAkB,WAAU;;sDACzB,yOAAC;4CACG,SAAS,IAAM,MAAM,eAAe,CAAC,KAAK,EAAE;4CAC5C,WAAW,CAAC,8DAA8D,EAAE,qBAAqB,KAAK,EAAE,IAAI,aAAa,UAAU,sDAAsD,sBAAsB;;gDAE9M,MAAM;gDAAE;gDAAG,KAAK,KAAK;;;;;;;sDAE1B,yOAAC;4CAAO,SAAS,IAAM,MAAM,eAAe,CAAC,KAAK,EAAE;4CAAG,WAAU;sDAA6F,cAAA,yOAAC,mQAAM;gDAAC,MAAM;;;;;;;;;;;;mCAPtK,KAAK,EAAE;;;;;0CAWrB,yOAAC;gCAAI,WAAU;0CAAgE;;;;;;0CAC/E,yOAAC;gCAAO,SAAS,IAAM,MAAM,gBAAgB,CAAC;gCAAU,WAAW,CAAC,2DAA2D,EAAE,aAAa,UAAU,2BAA2B,sBAAsB;;kDAAE,yOAAC,yQAAQ;wCAAC,MAAM;;;;;;oCAAM;;;;;;;0CACjO,yOAAC;gCAAO,SAAS,IAAM,MAAM,gBAAgB,CAAC;gCAAmB,WAAW,CAAC,2DAA2D,EAAE,aAAa,mBAAmB,6BAA6B,sBAAsB;;kDAAE,yOAAC,4PAAK;wCAAC,MAAM;;;;;;oCAAM;;;;;;;0CAClP,yOAAC;gCAAO,SAAS,IAAM,MAAM,gBAAgB,CAAC;gCAAa,WAAW,CAAC,2DAA2D,EAAE,aAAa,aAAa,6BAA6B,sBAAsB;;kDAAE,yOAAC,yQAAQ;wCAAC,MAAM;;;;;;oCAAM;;;;;;;0CACzO,yOAAC;gCAAO,SAAS,IAAM,MAAM,gBAAgB,CAAC;gCAAU,WAAW,CAAC,2DAA2D,EAAE,aAAa,UAAU,6BAA6B,sBAAsB;;kDAAE,yOAAC,wQAAS;wCAAC,MAAM;;;;;;oCAAM;;;;;;;0CACpO,yOAAC;gCAAO,SAAS,IAAM,MAAM,gBAAgB,CAAC;gCAAa,WAAW,CAAC,2DAA2D,EAAE,aAAa,aAAa,6BAA6B,sBAAsB;;kDAAE,yOAAC,qQAAQ;wCAAC,MAAM;;;;;;oCAAM;;;;;;;;;;;;;kCAG7O,yOAAC;wBAAI,WAAU;;0CACX,yOAAC;gCAAI,WAAU;;kDACX,yOAAC;wCAAI,WAAU;;0DACX,yOAAC;0DAAK;;;;;;0DACN,yOAAC;;oDAAM,KAAK,KAAK,CAAC,gBAAgB;oDAAC;oDAAI,KAAK,KAAK,CAAC,cAAc,KAAK,SAAS,MAAM,KAAK,KAAK,CAAC,cAAc;;;;;;;;;;;;;kDAEjH,yOAAC;wCAAI,WAAU;kDACX,cAAA,yOAAC;4CAAI,WAAU;4CAAqB,OAAO;gDAAE,OAAO,GAAG,KAAK,GAAG,CAAC,KAAK,AAAC,KAAK,KAAK,CAAC,gBAAgB,GAAG,KAAK,KAAK,CAAC,cAAc,GAAI,KAAK,CAAC,CAAC;4CAAC;;;;;;;;;;;;;;;;;0CAGjJ,yOAAC;gCAAO,SAAS,IAAM,MAAM,gBAAgB,CAAC;gCAAY,WAAU;;kDAAkG,yOAAC,yPAAI;wCAAC,MAAM;;;;;;oCAAM;;;;;;;0CACxL,yOAAC;gCAAO,SAAS,MAAM,QAAQ;gCAAE,WAAU;;kDAA4F,yOAAC,mQAAM;wCAAC,MAAM;;;;;;oCAAM;;;;;;;;;;;;;;;;;;;0BAKnK,yOAAC;gBAAI,WAAU;;kCACX,yOAAC;wBAAO,WAAU;;0CACd,yOAAC;gCAAI,WAAU;;kDACX,yOAAC;wCAAO,SAAS,IAAM,iBAAiB,CAAC;wCAAgB,WAAU;kDAAsC,cAAA,yOAAC,yPAAI;4CAAC,MAAM;;;;;;;;;;;oCACpH,aAAa,wBACV,yOAAC;wCACG,MAAK;wCACL,OAAO,gBAAgB,SAAS;wCAChC,UAAU,CAAC,IAAM,MAAM,eAAe,CAAC;gDAAE,UAAU,QAAQ,QAAQ,CAAC,GAAG,CAAC,CAAA,IAAK,EAAE,EAAE,KAAK,mBAAmB;wDAAE,GAAG,CAAC;wDAAE,OAAO,EAAE,MAAM,CAAC,KAAK;oDAAC,IAAI;4CAAG;wCAC9I,WAAU;;;;;iGAGd,yOAAC;wCAAK,WAAU;kDAA+C;;;;;;;;;;;;0CAGvE,yOAAC;gCAAI,WAAU;;kDACX,yOAAC;wCAAO,SAAS,MAAM,YAAY;wCAAE,WAAU;;0DAA8G,yOAAC,mQAAM;gDAAC,MAAM;;;;;;4CAAM;;;;;;;kDACjL,yOAAC;wCAAO,SAAS,MAAM,UAAU;wCAAE,WAAU;kDAAsD,cAAA,yOAAC,2RAAU;4CAAC,MAAM;;;;;;;;;;;kDACrH,yOAAC;wCAAO,SAAS,IAAM,iBAAiB,CAAC;wCAAgB,WAAW,CAAC,iBAAiB,EAAE,gBAAgB,kCAAkC,qCAAqC;kDAC1K,8BAAgB,yOAAC,qRAAY;4CAAC,MAAM;;;;;qGAAS,yOAAC,kRAAW;4CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;kCAK7E,yOAAC;wBAAK,WAAU;kCACX;;;;;;;;;;;;0BAKT,yOAAC;gBAAI,WAAW,GAAG,gBAAgB,iBAAiB,MAAM,oFAAoF,CAAC;0BAC1I,+BAAiB,yOAAC,uLAAO;oBAAC,aAAa,MAAM,WAAW;oBAAE,eAAe,MAAM,aAAa;oBAAE,cAAc,MAAM,YAAY;oBAAE,cAAa;oBAAG,cAAc,MAAM,YAAY;oBAAE,OAAO,KAAK,KAAK;;;;;;;;;;;;;;;;;AAIpN;GAvGM;KAAA;uCAyGS"}}, + {"offset": {"line": 1448, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/ExportModal.tsx"],"sourcesContent":["'use client';\n\nimport React, { useState } from 'react';\nimport { BookProject } from '@/lib/types';\nimport { FileText, FileType, Printer, X, Download, Book, FileJson } from 'lucide-react';\n\ninterface ExportModalProps {\n isOpen: boolean;\n onClose: () => void;\n project: BookProject;\n onPrint: (options: { includeCover: boolean, includeTOC: boolean }) => void;\n}\n\ntype ExportFormat = 'pdf' | 'word' | 'epub' | 'markdown';\ntype PageSize = 'A4' | 'A5' | 'Letter';\n\nconst ExportModal: React.FC = ({ isOpen, onClose, project, onPrint }) => {\n const [format, setFormat] = useState('pdf');\n const [pageSize, setPageSize] = useState('A4');\n const [includeCover, setIncludeCover] = useState(true);\n const [includeTOC, setIncludeTOC] = useState(true);\n\n if (!isOpen) return null;\n\n const generateContentHTML = () => {\n let html = `\n \n \n \n \n ${project.title}\n \n \n \n `;\n\n if (includeCover) {\n html += `\n
\n

${project.title}

\n

${project.author}

\n
\n `;\n }\n\n if (includeTOC) {\n html += `

Table des Matières

    `;\n project.chapters.forEach((chap, idx) => {\n html += `
  • ${chap.title}
  • `;\n });\n html += `
`;\n }\n\n project.chapters.forEach((chap, idx) => {\n html += `\n
\n

${chap.title}

\n ${chap.content}\n
\n `;\n });\n\n html += ``;\n return html;\n };\n\n const handleExport = () => {\n const filename = project.title.replace(/[^a-z0-9]/gi, '_').toLowerCase();\n\n if (format === 'pdf') {\n // Use the classic window print tool via parent callback\n onPrint({ includeCover, includeTOC });\n } \n else if (format === 'word') {\n // Export as HTML with specific Word namespaces -> interpreted as doc by Word\n const content = generateContentHTML();\n const blob = new Blob(['\\ufeff', content], {\n type: 'application/msword'\n });\n downloadBlob(blob, `${filename}.doc`);\n } \n else if (format === 'epub') {\n // Export as a single XHTML file (Ebook ready)\n const content = generateContentHTML();\n const blob = new Blob([content], {\n type: 'application/xhtml+xml'\n });\n downloadBlob(blob, `${filename}.xhtml`);\n }\n else if (format === 'markdown') {\n let md = `# ${project.title}\\nBy ${project.author}\\n\\n`;\n project.chapters.forEach(c => {\n // Very basic HTML to Text conversion\n const text = c.content.replace(/<[^>]+>/g, '\\n');\n md += `## ${c.title}\\n\\n${text}\\n\\n---\\n\\n`;\n });\n const blob = new Blob([md], { type: 'text/markdown' });\n downloadBlob(blob, `${filename}.md`);\n }\n };\n\n const downloadBlob = (blob: Blob, name: string) => {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = name;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n onClose();\n };\n\n return (\n
\n
\n \n {/* Header */}\n
\n
\n

\n Exporter le livre\n

\n

{project.title}

\n
\n \n
\n\n {/* Body */}\n
\n \n {/* Format Selection */}\n
\n \n \n \n\n \n\n \n
\n\n {/* Options Section */}\n
\n

\n Paramètres d'exportation ({format.toUpperCase()})\n

\n\n
\n {format === 'pdf' && (\n
\n
\n \n Géré par l'imprimante (A4, A5...)\n
\n
Auto
\n
\n )}\n\n
\n \n setIncludeCover(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n
\n \n setIncludeTOC(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n {format === 'epub' && (\n

\n Note: L'export EPUB génère un fichier XHTML optimisé prêt à être converti par Calibre ou Kindle Previewer.\n

\n )}\n
\n
\n
\n\n {/* Footer */}\n
\n \n \n
\n
\n
\n );\n};\n\nexport default ExportModal;"],"names":[],"mappings":"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"}}, + {"offset": {"line": 1956, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/HelpModal.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { X, Keyboard, MousePointerClick, MessageCircle, Sparkles, GitGraph, BookOpen, Command, Globe, Layout, Settings, Lightbulb } from 'lucide-react';\nimport { ViewMode } from '@/lib/types';\n\ninterface HelpModalProps {\n isOpen: boolean;\n onClose: () => void;\n viewMode: ViewMode;\n}\n\nconst Kbd: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n \n {children}\n \n);\n\nconst HelpModal: React.FC = ({ isOpen, onClose, viewMode }) => {\n if (!isOpen) return null;\n\n const renderContent = () => {\n switch (viewMode) {\n case 'ideas':\n return (\n
\n

\n Boîte à Idées & Tâches\n

\n
\n

\n Un espace de type Kanban pour ne rien oublier. Utilisez-le pour noter des idées fugaces, planifier des recherches ou lister les scènes à écrire.\n

\n
    \n
  • \n \n \n Glisser-Déposer : Déplacez les cartes d'une colonne à l'autre (À faire → En cours → Validé) pour suivre votre progression.\n \n
  • \n
  • \n \n \n Catégories : Utilisez les catégories (Intrigue, Personnage, Recherche) pour filtrer visuellement vos tâches grâce aux codes couleurs.\n \n
  • \n
\n
\n
\n );\n\n case 'workflow':\n return (\n <>\n {/* Workflow Section */}\n
\n

\n Organisation Narrative\n

\n
\n
    \n
  • \n \n \n Sélection : Ctrl + Clic pour sélectionner plusieurs cartes. Glissez pour déplacer tout un groupe.\n \n
  • \n
  • \n \n \n Copier / Coller : Ctrl + C pour copier les nœuds sélectionnés, Ctrl + V pour coller.\n \n
  • \n
  • \n \n \n Connexions : Tirez depuis le cercle à droite d'une carte pour lier les événements.\n \n
  • \n
\n
\n
\n\n {/* Dialogue Intelligent */}\n
\n

\n Mode Dialogue (Workflow)\n

\n
\n
\n
Écriture Rapide
\n

\n Tapez un nom et Entrée : le formatage Nom: s'ajoute seul.\n

\n

\n Dans un dialogue, Entrée change de ligne et devine le prochain interlocuteur automatiquement.\n

\n
\n
\n
Rotation & Insertion
\n

\n Tab permute instantanément entre les personnages présents dans la scène.\n

\n

\n Utilisez @ pour insérer un personnage, # pour un lieu.\n

\n
\n
\n
\n \n );\n\n case 'world_building':\n return (\n
\n

\n Bible du Monde\n

\n
\n

\n La bible du monde permet de centraliser toutes les informations sur vos personnages et lieux.\n Ces informations sont lues par l'IA pour assurer la cohérence de l'histoire.\n

\n
\n
\n

Modèles Personnalisés

\n

\n Cliquez sur le bouton \"Modèles\" pour ajouter des champs spécifiques (ex: \"Type de Magie\", \"Allégeance\") à tous vos personnages ou lieux.\n

\n
\n
\n

Contexte Automatique

\n

\n Le champ \"Contexte Narratif\" se remplit automatiquement au fur et à mesure que vous écrivez votre histoire et que l'IA détecte l'évolution des personnages.\n

\n
\n
\n
\n
\n );\n\n case 'settings':\n return (\n
\n

\n Paramètres du Livre\n

\n

\n Ces réglages sont cruciaux pour l'Assistant IA. Ils définissent le \"ton\" de toutes les générations de texte.\n

\n
    \n
  • Style Guide : Soyez précis sur le style (ex: \"phrases courtes\", \"beaucoup de métaphores\", \"humour noir\").
  • \n
  • POV (Point de Vue) : Définit si l'IA doit écrire en \"Je\" ou \"Il/Elle\".
  • \n
\n
\n );\n\n case 'write':\n default:\n return (\n
\n

\n Éditeur & Assistant IA\n

\n
\n
\n

Menu Contextuel Intelligent

\n

Sélectionnez du texte et faites un clic droit pour :

\n
    \n
  • Corriger l'orthographe
  • \n
  • Reformuler / Améliorer
  • \n
  • Développer (Show, don't tell)
  • \n
  • Continuer l'écriture
  • \n
\n
\n

\n Historique des versions : Activez la marge de droite (icône horloge) pour voir toutes les interventions de l'IA et revenir en arrière si nécessaire.\n

\n

\n Chat Latéral : Posez des questions sur votre histoire, demandez des résumés ou des idées de rebondissements. L'IA connaît le contexte de vos chapitres précédents et de vos fiches personnages.\n

\n \n
\n

\n Raccourcis Clavier (Éditeur)\n

\n
\n
\n
\n Mettre en Gras\n Ctrl + B\n
\n
\n Mettre en Italique\n Ctrl + I\n
\n
\n Souligner\n Ctrl + U\n
\n
\n
\n
\n Tout sélectionner\n Ctrl + A\n
\n
\n Annuler\n Ctrl + Z\n
\n
\n Rétablir\n Ctrl + Shift + Z\n
\n
\n
\n
\n
\n
\n );\n }\n };\n\n return (\n
\n
\n \n {/* Header */}\n
\n
\n

\n Aide : {\n viewMode === 'workflow' ? 'Workflow & Dialogues' :\n viewMode === 'world_building' ? 'Bible du Monde' :\n viewMode === 'settings' ? 'Paramètres' :\n viewMode === 'ideas' ? 'Boîte à Idées' :\n 'Éditeur & IA'\n }\n

\n

Astuces pour l'écran actuel.

\n
\n \n
\n\n {/* Content */}\n
\n \n {/* Context Specific Content */}\n {renderContent()}\n\n {/* General Footer Section (Always visible) */}\n
\n

Raccourcis Généraux

\n
\n
\n Sauvegarde Automatique\n Permanente\n
\n
\n Menu Latéral\n Clic sur le burger\n
\n
\n
\n\n
\n\n {/* Footer */}\n
\n \n
\n\n
\n
\n );\n};\n\nexport default HelpModal;"],"names":[],"mappings":"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"}}, + {"offset": {"line": 3318, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/layout.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport { useParams, useRouter, usePathname } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { ProjectProvider } from '@/providers/ProjectProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport { useChat } from '@/hooks/useChat';\r\nimport { ViewMode } from '@/lib/types';\r\nimport EditorShell from '@/components/layout/EditorShell';\r\nimport ExportModal from '@/components/ExportModal';\r\nimport HelpModal from '@/components/HelpModal';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\n\r\nfunction getViewModeFromPath(pathname: string): ViewMode {\r\n if (pathname.endsWith('/world')) return 'world_building';\r\n if (pathname.endsWith('/ideas')) return 'ideas';\r\n if (pathname.endsWith('/workflow')) return 'workflow';\r\n if (pathname.endsWith('/settings')) return 'settings';\r\n return 'write';\r\n}\r\n\r\nexport default function ProjectLayout({ children }: { children: React.ReactNode }) {\r\n const params = useParams();\r\n const router = useRouter();\r\n const pathname = usePathname();\r\n const projectId = params.id as string;\r\n\r\n const { user, logout, incrementUsage, loading: authLoading } = useAuthContext();\r\n const {\r\n projects, setCurrentProjectId,\r\n updateProject, updateChapter, addChapter,\r\n } = useProjects(user);\r\n const { chatHistory, isGenerating, sendMessage } = useChat();\r\n\r\n const [currentChapterId, setCurrentChapterId] = useState('');\r\n const [isExportModalOpen, setIsExportModalOpen] = useState(false);\r\n const [isHelpModalOpen, setIsHelpModalOpen] = useState(false);\r\n\r\n const viewMode = getViewModeFromPath(pathname);\r\n\r\n useEffect(() => {\r\n if (projectId) setCurrentProjectId(projectId);\r\n }, [projectId, setCurrentProjectId]);\r\n\r\n useEffect(() => {\r\n if (!authLoading && !user) router.replace('/login');\r\n }, [user, authLoading, router]);\r\n\r\n const project = projects.find(p => p.id === projectId);\r\n\r\n useEffect(() => {\r\n if (project && (!currentChapterId || !project.chapters.some(c => c.id === currentChapterId))) {\r\n setCurrentChapterId(project.chapters[0]?.id || '');\r\n }\r\n }, [project, currentChapterId]);\r\n\r\n if (authLoading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (!project) {\r\n return (\r\n
\r\n \r\n

Chargement du projet...

\r\n
\r\n );\r\n }\r\n\r\n const handleViewModeChange = (mode: ViewMode) => {\r\n const base = `/project/${projectId}`;\r\n switch (mode) {\r\n case 'write': router.push(base); break;\r\n case 'world_building': router.push(`${base}/world`); break;\r\n case 'ideas': router.push(`${base}/ideas`); break;\r\n case 'workflow': router.push(`${base}/workflow`); break;\r\n case 'settings': router.push(`${base}/settings`); break;\r\n case 'dashboard': router.push('/dashboard'); break;\r\n default: router.push(base);\r\n }\r\n };\r\n\r\n return (\r\n updateProject(projectId, updates),\r\n updateChapter: (chapterId, data) => updateChapter(projectId, chapterId, data),\r\n incrementUsage,\r\n }}>\r\n { setCurrentChapterId(id); router.push(`/project/${projectId}`); }}\r\n onUpdateProject={(updates) => updateProject(projectId, updates)}\r\n onAddChapter={async () => {\r\n const id = await addChapter(projectId, {});\r\n if (id) {\r\n setCurrentChapterId(id);\r\n router.push(`/project/${projectId}`);\r\n }\r\n }}\r\n onDeleteChapter={(id) => {\r\n if (project.chapters.length > 1) {\r\n const newChapters = project.chapters.filter(c => c.id !== id);\r\n updateProject(projectId, { chapters: newChapters });\r\n if (currentChapterId === id) setCurrentChapterId(newChapters[0].id);\r\n }\r\n }}\r\n onLogout={() => { logout(); router.push('/'); }}\r\n onSendMessage={(msg) => {\r\n if (project && user) sendMessage(project, 'global', msg, user, incrementUsage);\r\n }}\r\n onInsertText={() => { }}\r\n onOpenExport={() => setIsExportModalOpen(true)}\r\n onOpenHelp={() => setIsHelpModalOpen(true)}\r\n >\r\n setIsExportModalOpen(false)} project={project} onPrint={() => { }} />\r\n setIsHelpModalOpen(false)} viewMode={viewMode} />\r\n {children}\r\n \r\n \r\n );\r\n}\r\n"],"names":[],"mappings":"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"}}] } \ No newline at end of file diff --git a/.next/dev/trace b/.next/dev/trace index 1f7555f..eaf5d10 100644 --- a/.next/dev/trace +++ b/.next/dev/trace @@ -5,3 +5,23 @@ [{"name":"hot-reloader","duration":35,"timestamp":390442193600,"id":3,"tags":{"version":"16.1.6"},"startTime":1772136987227,"traceId":"e214b2be42526386"},{"name":"setup-dev-bundler","duration":189844,"timestamp":390442103334,"id":2,"parentId":1,"tags":{},"startTime":1772136987136,"traceId":"e214b2be42526386"},{"name":"start-dev-server","duration":579232,"timestamp":390441794639,"id":1,"tags":{"cpus":"32","platform":"win32","memory.freeMem":"5218418688","memory.totalMem":"34186964992","memory.heapSizeLimit":"17143169024","memory.rss":"253894656","memory.heapTotal":"90501120","memory.heapUsed":"61840912"},"startTime":1772136986828,"traceId":"e214b2be42526386"},{"name":"compile-path","duration":309440,"timestamp":390448347128,"id":6,"tags":{"trigger":"/"},"startTime":1772136993380,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":309835,"timestamp":390448346888,"id":5,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1772136993380,"traceId":"e214b2be42526386"}] [{"name":"handle-request","duration":531969,"timestamp":390448339630,"id":4,"tags":{"url":"/"},"startTime":1772136993373,"traceId":"e214b2be42526386"},{"name":"memory-usage","duration":7,"timestamp":390448871649,"id":7,"parentId":4,"tags":{"url":"/","memory.rss":"468344832","memory.heapUsed":"99198120","memory.heapTotal":"130007040"},"startTime":1772136993905,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":501,"timestamp":390449108987,"id":8,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772136994142,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":348,"timestamp":390449109535,"id":9,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772136994142,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":315,"timestamp":390449110586,"id":10,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772136994144,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":172,"timestamp":390449110988,"id":11,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772136994144,"traceId":"e214b2be42526386"},{"name":"compile-path","duration":10400,"timestamp":390449112846,"id":14,"tags":{"trigger":"/api/auth/[...nextauth]"},"startTime":1772136994146,"traceId":"e214b2be42526386"}] [{"name":"handle-request","duration":631044,"timestamp":390449111969,"id":12,"tags":{"url":"/api/auth/session"},"startTime":1772136994145,"traceId":"e214b2be42526386"},{"name":"memory-usage","duration":5,"timestamp":390449743110,"id":15,"parentId":12,"tags":{"url":"/api/auth/session","memory.rss":"516161536","memory.heapUsed":"103434920","memory.heapTotal":"141717504"},"startTime":1772136994776,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":401,"timestamp":390449763167,"id":16,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772136994796,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":286,"timestamp":390449763617,"id":17,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772136994797,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":564,"timestamp":390449764538,"id":18,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772136994797,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":480,"timestamp":390449765173,"id":19,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772136994798,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":724,"timestamp":390449766900,"id":21,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772136994800,"traceId":"e214b2be42526386"},{"name":"handle-request","duration":11654,"timestamp":390449766503,"id":20,"tags":{"url":"/api/auth/session"},"startTime":1772136994799,"traceId":"e214b2be42526386"},{"name":"memory-usage","duration":5,"timestamp":390449778190,"id":22,"parentId":20,"tags":{"url":"/api/auth/session","memory.rss":"516530176","memory.heapUsed":"105149264","memory.heapTotal":"141717504"},"startTime":1772136994811,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":278,"timestamp":390458320520,"id":23,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1772137003353,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":137,"timestamp":390458320828,"id":24,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1772137003354,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":128,"timestamp":390458321185,"id":25,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1772137003354,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":103,"timestamp":390458321328,"id":26,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1772137003354,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":575,"timestamp":390458322036,"id":28,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772137003355,"traceId":"e214b2be42526386"},{"name":"handle-request","duration":12074,"timestamp":390458321745,"id":27,"tags":{"url":"/api/auth/providers"},"startTime":1772137003355,"traceId":"e214b2be42526386"},{"name":"memory-usage","duration":4,"timestamp":390458333853,"id":29,"parentId":27,"tags":{"url":"/api/auth/providers","memory.rss":"528601088","memory.heapUsed":"102895504","memory.heapTotal":"109379584"},"startTime":1772137003367,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":430,"timestamp":390458337926,"id":30,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1772137003371,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":154,"timestamp":390458338380,"id":31,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1772137003371,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":217,"timestamp":390458338818,"id":32,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1772137003372,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":119,"timestamp":390458339052,"id":33,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1772137003372,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":481,"timestamp":390458340757,"id":35,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772137003374,"traceId":"e214b2be42526386"},{"name":"handle-request","duration":4530,"timestamp":390458340225,"id":34,"tags":{"url":"/api/auth/csrf"},"startTime":1772137003373,"traceId":"e214b2be42526386"},{"name":"memory-usage","duration":3,"timestamp":390458344775,"id":36,"parentId":34,"tags":{"url":"/api/auth/csrf","memory.rss":"529432576","memory.heapUsed":"103731728","memory.heapTotal":"108331008"},"startTime":1772137003378,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":340,"timestamp":390458348448,"id":37,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1772137003381,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":114,"timestamp":390458348812,"id":38,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1772137003382,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":342,"timestamp":390458349332,"id":39,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1772137003382,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":272,"timestamp":390458349702,"id":40,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1772137003383,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":771,"timestamp":390458350912,"id":42,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772137003384,"traceId":"e214b2be42526386"},{"name":"handle-request","duration":28079,"timestamp":390458350487,"id":41,"tags":{"url":"/api/auth/callback/credentials?"},"startTime":1772137003383,"traceId":"e214b2be42526386"},{"name":"memory-usage","duration":4,"timestamp":390458378592,"id":43,"parentId":41,"tags":{"url":"/api/auth/callback/credentials?","memory.rss":"535818240","memory.heapUsed":"107611912","memory.heapTotal":"114573312"},"startTime":1772137003412,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":198,"timestamp":390458381897,"id":44,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772137003415,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":148,"timestamp":390458382120,"id":45,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772137003415,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":166,"timestamp":390458382595,"id":46,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772137003416,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":107,"timestamp":390458382779,"id":47,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772137003416,"traceId":"e214b2be42526386"},{"name":"ensure-page","duration":440,"timestamp":390458383527,"id":49,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772137003416,"traceId":"e214b2be42526386"},{"name":"handle-request","duration":4630,"timestamp":390458383303,"id":48,"tags":{"url":"/api/auth/session"},"startTime":1772137003416,"traceId":"e214b2be42526386"},{"name":"memory-usage","duration":4,"timestamp":390458387955,"id":50,"parentId":48,"tags":{"url":"/api/auth/session","memory.rss":"537665536","memory.heapUsed":"107814712","memory.heapTotal":"115097600"},"startTime":1772137003421,"traceId":"e214b2be42526386"},{"name":"compile-path","duration":81965,"timestamp":390470493044,"id":53,"tags":{"trigger":"/api/auth/register"},"startTime":1772137015526,"traceId":"e214b2be42526386"}] +[{"name":"hot-reloader","duration":37,"timestamp":392601808279,"id":3,"tags":{"version":"16.1.6"},"startTime":1772139146841,"traceId":"f1bee5e7767cbf0a"},{"name":"setup-dev-bundler","duration":180973,"timestamp":392601721403,"id":2,"parentId":1,"tags":{},"startTime":1772139146754,"traceId":"f1bee5e7767cbf0a"},{"name":"start-dev-server","duration":563756,"timestamp":392601414904,"id":1,"tags":{"cpus":"32","platform":"win32","memory.freeMem":"8434274304","memory.totalMem":"34186964992","memory.heapSizeLimit":"17143169024","memory.rss":"269090816","memory.heapTotal":"90501120","memory.heapUsed":"63347376"},"startTime":1772139146448,"traceId":"f1bee5e7767cbf0a"},{"name":"compile-path","duration":312546,"timestamp":392609197816,"id":6,"tags":{"trigger":"/"},"startTime":1772139154230,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":313019,"timestamp":392609197634,"id":5,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1772139154230,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":509052,"timestamp":392609194314,"id":4,"tags":{"url":"/"},"startTime":1772139154227,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":8,"timestamp":392609703451,"id":7,"parentId":4,"tags":{"url":"/","memory.rss":"635047936","memory.heapUsed":"94553424","memory.heapTotal":"127373312"},"startTime":1772139154736,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":571,"timestamp":392609720458,"id":8,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1772139154753,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":380,"timestamp":392609721067,"id":9,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1772139154754,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":370,"timestamp":392609722105,"id":10,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1772139154755,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":196,"timestamp":392609722522,"id":11,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1772139154755,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":373,"timestamp":392610240109,"id":12,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139155273,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":261,"timestamp":392610240531,"id":13,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139155273,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":325,"timestamp":392610241316,"id":14,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139155274,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":431,"timestamp":392610241678,"id":15,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139155274,"traceId":"f1bee5e7767cbf0a"},{"name":"compile-path","duration":27571,"timestamp":392610244494,"id":18,"tags":{"trigger":"/api/auth/[...nextauth]"},"startTime":1772139155277,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":682421,"timestamp":392610243551,"id":16,"tags":{"url":"/api/auth/session"},"startTime":1772139155276,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392610926009,"id":19,"parentId":16,"tags":{"url":"/api/auth/session","memory.rss":"673087488","memory.heapUsed":"110970400","memory.heapTotal":"138940416"},"startTime":1772139155959,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":282,"timestamp":392610930516,"id":20,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139155963,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":125,"timestamp":392610930826,"id":21,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139155963,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":308,"timestamp":392610931476,"id":22,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139155964,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":285,"timestamp":392610931814,"id":23,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139155964,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":763,"timestamp":392610932906,"id":25,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772139155966,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":9505,"timestamp":392610932541,"id":24,"tags":{"url":"/api/auth/session"},"startTime":1772139155965,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392610942069,"id":26,"parentId":24,"tags":{"url":"/api/auth/session","memory.rss":"674770944","memory.heapUsed":"112654896","memory.heapTotal":"139202560"},"startTime":1772139155975,"traceId":"f1bee5e7767cbf0a"},{"name":"compile-path","duration":241812,"timestamp":392612455961,"id":29,"tags":{"trigger":"/login"},"startTime":1772139157489,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":264315,"timestamp":392612455172,"id":27,"tags":{"url":"/login?_rsc=vusbg"},"startTime":1772139157488,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392612719525,"id":30,"parentId":27,"tags":{"url":"/login?_rsc=vusbg","memory.rss":"694337536","memory.heapUsed":"105776600","memory.heapTotal":"139296768"},"startTime":1772139157752,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":804,"timestamp":392615982941,"id":32,"parentId":3,"tags":{"inputPage":"/login/page"},"startTime":1772139161016,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":11000,"timestamp":392615982509,"id":31,"tags":{"url":"/login?_rsc=vusbg"},"startTime":1772139161015,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392615993531,"id":33,"parentId":31,"tags":{"url":"/login?_rsc=vusbg","memory.rss":"791941120","memory.heapUsed":"109263288","memory.heapTotal":"139296768"},"startTime":1772139161026,"traceId":"f1bee5e7767cbf0a"},{"name":"compile-path","duration":166126,"timestamp":392617347023,"id":36,"tags":{"trigger":"/signup"},"startTime":1772139162380,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":185082,"timestamp":392617346704,"id":34,"tags":{"url":"/signup?_rsc=5c339"},"startTime":1772139162379,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392617531810,"id":37,"parentId":34,"tags":{"url":"/signup?_rsc=5c339","memory.rss":"743284736","memory.heapUsed":"115758688","memory.heapTotal":"141385728"},"startTime":1772139162564,"traceId":"f1bee5e7767cbf0a"},{"name":"compile-path","duration":7383,"timestamp":392629209448,"id":40,"tags":{"trigger":"/api/auth/register"},"startTime":1772139174242,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":392200,"timestamp":392629208667,"id":38,"tags":{"url":"/api/auth/register"},"startTime":1772139174241,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392629600918,"id":41,"parentId":38,"tags":{"url":"/api/auth/register","memory.rss":"743366656","memory.heapUsed":"120116168","memory.heapTotal":"132808704"},"startTime":1772139174634,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":203,"timestamp":392629605478,"id":42,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1772139174638,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":117,"timestamp":392629605703,"id":43,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1772139174638,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":198,"timestamp":392629606185,"id":44,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1772139174639,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":175,"timestamp":392629606398,"id":45,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1772139174639,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":687,"timestamp":392629607252,"id":47,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772139174640,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":11339,"timestamp":392629606944,"id":46,"tags":{"url":"/api/auth/providers"},"startTime":1772139174640,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392629618309,"id":48,"parentId":46,"tags":{"url":"/api/auth/providers","memory.rss":"746135552","memory.heapUsed":"118545424","memory.heapTotal":"141459456"},"startTime":1772139174651,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":183,"timestamp":392629625003,"id":49,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1772139174658,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":149,"timestamp":392629625207,"id":50,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1772139174658,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":153,"timestamp":392629625685,"id":51,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1772139174658,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":95,"timestamp":392629625854,"id":52,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1772139174659,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":599,"timestamp":392629626651,"id":54,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772139174659,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":5394,"timestamp":392629626321,"id":53,"tags":{"url":"/api/auth/csrf"},"startTime":1772139174659,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":1,"timestamp":392629631740,"id":55,"parentId":53,"tags":{"url":"/api/auth/csrf","memory.rss":"747401216","memory.heapUsed":"119981064","memory.heapTotal":"141983744"},"startTime":1772139174664,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":291,"timestamp":392629637417,"id":56,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1772139174670,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":122,"timestamp":392629637735,"id":57,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1772139174670,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":172,"timestamp":392629638154,"id":58,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1772139174671,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":117,"timestamp":392629638342,"id":59,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1772139174671,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":452,"timestamp":392629639148,"id":61,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772139174672,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":207207,"timestamp":392629638877,"id":60,"tags":{"url":"/api/auth/callback/credentials?"},"startTime":1772139174672,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392629846124,"id":62,"parentId":60,"tags":{"url":"/api/auth/callback/credentials?","memory.rss":"750571520","memory.heapUsed":"123167440","memory.heapTotal":"142245888"},"startTime":1772139174879,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":183,"timestamp":392629849742,"id":63,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139174882,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":102,"timestamp":392629849944,"id":64,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139174883,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":148,"timestamp":392629850285,"id":65,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139174883,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":95,"timestamp":392629850451,"id":66,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139174883,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":603,"timestamp":392629851075,"id":68,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772139174884,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":8539,"timestamp":392629850813,"id":67,"tags":{"url":"/api/auth/session"},"startTime":1772139174883,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392629859375,"id":69,"parentId":67,"tags":{"url":"/api/auth/session","memory.rss":"752152576","memory.heapUsed":"124860656","memory.heapTotal":"142508032"},"startTime":1772139174892,"traceId":"f1bee5e7767cbf0a"},{"name":"compile-path","duration":187970,"timestamp":392629874465,"id":72,"tags":{"trigger":"/dashboard"},"startTime":1772139174907,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":212679,"timestamp":392629874032,"id":70,"tags":{"url":"/dashboard?_rsc=6k3yh"},"startTime":1772139174907,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392630086732,"id":73,"parentId":70,"tags":{"url":"/dashboard?_rsc=6k3yh","memory.rss":"806924288","memory.heapUsed":"125850040","memory.heapTotal":"144060416"},"startTime":1772139175119,"traceId":"f1bee5e7767cbf0a"},{"name":"compile-path","duration":92041,"timestamp":392630158732,"id":76,"tags":{"trigger":"/api/projects"},"startTime":1772139175191,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":136384,"timestamp":392630158240,"id":74,"tags":{"url":"/api/projects"},"startTime":1772139175191,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392630294645,"id":77,"parentId":74,"tags":{"url":"/api/projects","memory.rss":"851353600","memory.heapUsed":"127054872","memory.heapTotal":"167591936"},"startTime":1772139175327,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":758,"timestamp":392630295532,"id":79,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139175328,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":23348,"timestamp":392630295264,"id":78,"tags":{"url":"/api/projects"},"startTime":1772139175328,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":1,"timestamp":392630318633,"id":80,"parentId":78,"tags":{"url":"/api/projects","memory.rss":"851677184","memory.heapUsed":"128747800","memory.heapTotal":"167854080"},"startTime":1772139175351,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":488,"timestamp":392641184836,"id":82,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139186217,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":51650,"timestamp":392641184584,"id":81,"tags":{"url":"/api/projects"},"startTime":1772139186217,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392641236257,"id":83,"parentId":81,"tags":{"url":"/api/projects","memory.rss":"833953792","memory.heapUsed":"126128832","memory.heapTotal":"130916352"},"startTime":1772139186269,"traceId":"f1bee5e7767cbf0a"},{"name":"compile-path","duration":63498,"timestamp":392641241150,"id":86,"tags":{"trigger":"/api/chapters"},"startTime":1772139186274,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":113840,"timestamp":392641240723,"id":84,"tags":{"url":"/api/chapters"},"startTime":1772139186273,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392641354586,"id":87,"parentId":84,"tags":{"url":"/api/chapters","memory.rss":"847032320","memory.heapUsed":"133222528","memory.heapTotal":"139612160"},"startTime":1772139186387,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":183,"timestamp":392641359055,"id":88,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139186392,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":106,"timestamp":392641359260,"id":89,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139186392,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":142,"timestamp":392641359656,"id":90,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139186392,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":93,"timestamp":392641359814,"id":91,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139186392,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":186,"timestamp":392641367640,"id":95,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139186400,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":108,"timestamp":392641367847,"id":96,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139186400,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":193,"timestamp":392641368224,"id":97,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139186401,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":91,"timestamp":392641368432,"id":98,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139186401,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":67992,"timestamp":392641369078,"id":100,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139186402,"traceId":"f1bee5e7767cbf0a"},{"name":"compile-path","duration":216131,"timestamp":392641360675,"id":94,"tags":{"trigger":"/project/[id]"},"startTime":1772139186393,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":557046,"timestamp":392641360340,"id":92,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=1h1b5"},"startTime":1772139186393,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392641917421,"id":101,"parentId":92,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=1h1b5","memory.rss":"886784000","memory.heapUsed":"136390976","memory.heapTotal":"156561408"},"startTime":1772139186950,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":771,"timestamp":392642000447,"id":103,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139187033,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":25963,"timestamp":392642000033,"id":102,"tags":{"url":"/api/projects"},"startTime":1772139187033,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392642026032,"id":104,"parentId":102,"tags":{"url":"/api/projects","memory.rss":"890757120","memory.heapUsed":"140523384","memory.heapTotal":"157085696"},"startTime":1772139187059,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":801,"timestamp":392642028084,"id":106,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139187061,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":24252,"timestamp":392642027623,"id":105,"tags":{"url":"/api/projects"},"startTime":1772139187060,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392642051923,"id":107,"parentId":105,"tags":{"url":"/api/projects","memory.rss":"891908096","memory.heapUsed":"141943920","memory.heapTotal":"157347840"},"startTime":1772139187085,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":751220,"timestamp":392641368853,"id":99,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139186402,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392642120108,"id":108,"parentId":99,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"893452288","memory.heapUsed":"140229280","memory.heapTotal":"159039488"},"startTime":1772139187153,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":383,"timestamp":392642121100,"id":109,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139187154,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":259,"timestamp":392642121515,"id":110,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139187154,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":291,"timestamp":392642122263,"id":111,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139187155,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":484,"timestamp":392642122582,"id":112,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139187155,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":905,"timestamp":392642124061,"id":114,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139187157,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":39629,"timestamp":392642123642,"id":113,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139187156,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392642163305,"id":115,"parentId":113,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"894160896","memory.heapUsed":"142449672","memory.heapTotal":"159039488"},"startTime":1772139187196,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":324,"timestamp":392644067804,"id":116,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139189100,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":419,"timestamp":392644068160,"id":117,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139189101,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":576,"timestamp":392644069136,"id":118,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139189102,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":418,"timestamp":392644069766,"id":119,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139189102,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":879,"timestamp":392644071783,"id":121,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139189104,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":18419,"timestamp":392644070995,"id":120,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw"},"startTime":1772139189104,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392644089444,"id":122,"parentId":120,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw","memory.rss":"897445888","memory.heapUsed":"145599152","memory.heapTotal":"159301632"},"startTime":1772139189122,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":328,"timestamp":392644545932,"id":123,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139189579,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":244,"timestamp":392644546291,"id":124,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139189579,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":193,"timestamp":392644548204,"id":125,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139189581,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":105,"timestamp":392644548415,"id":126,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139189581,"traceId":"f1bee5e7767cbf0a"},{"name":"compile-path","duration":154244,"timestamp":392644549343,"id":129,"tags":{"trigger":"/project/[id]/world"},"startTime":1772139189582,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":451756,"timestamp":392644549022,"id":127,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/world?_rsc=kc2xw"},"startTime":1772139189582,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":1,"timestamp":392645000800,"id":130,"parentId":127,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/world?_rsc=kc2xw","memory.rss":"916025344","memory.heapUsed":"148707832","memory.heapTotal":"163495936"},"startTime":1772139190033,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1017,"timestamp":392645086240,"id":132,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139190119,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":26806,"timestamp":392645085674,"id":131,"tags":{"url":"/api/projects"},"startTime":1772139190118,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392645112514,"id":133,"parentId":131,"tags":{"url":"/api/projects","memory.rss":"915795968","memory.heapUsed":"144465160","memory.heapTotal":"164007936"},"startTime":1772139190145,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1028,"timestamp":392645114162,"id":135,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139190147,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":28379,"timestamp":392645113757,"id":134,"tags":{"url":"/api/projects"},"startTime":1772139190146,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":17,"timestamp":392645142203,"id":136,"parentId":134,"tags":{"url":"/api/projects","memory.rss":"916017152","memory.heapUsed":"145838648","memory.heapTotal":"164007936"},"startTime":1772139190175,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":198,"timestamp":392645895329,"id":137,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139190928,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":101,"timestamp":392645895552,"id":138,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139190928,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":174,"timestamp":392645896101,"id":139,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139190929,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":101,"timestamp":392645896290,"id":140,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139190929,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":713,"timestamp":392645896872,"id":142,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139190930,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":21370,"timestamp":392645896652,"id":141,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=14fcw"},"startTime":1772139190929,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392645918040,"id":143,"parentId":141,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=14fcw","memory.rss":"916750336","memory.heapUsed":"149340552","memory.heapTotal":"164270080"},"startTime":1772139190951,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":190,"timestamp":392647901243,"id":144,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139192934,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":109,"timestamp":392647901457,"id":145,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139192934,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":148,"timestamp":392647901889,"id":146,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139192935,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":94,"timestamp":392647902056,"id":147,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139192935,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":782,"timestamp":392647903087,"id":149,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139192936,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":18697,"timestamp":392647902571,"id":148,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw"},"startTime":1772139192935,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392647921290,"id":150,"parentId":148,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw","memory.rss":"918777856","memory.heapUsed":"145822312","memory.heapTotal":"164794368"},"startTime":1772139192954,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":508,"timestamp":392648663175,"id":152,"parentId":3,"tags":{"inputPage":"/api/chapters/route"},"startTime":1772139193696,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":28887,"timestamp":392648662892,"id":151,"tags":{"url":"/api/chapters"},"startTime":1772139193696,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":1,"timestamp":392648691802,"id":153,"parentId":151,"tags":{"url":"/api/chapters","memory.rss":"919298048","memory.heapUsed":"147733208","memory.heapTotal":"165294080"},"startTime":1772139193724,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":321,"timestamp":392648696428,"id":154,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139193729,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":322,"timestamp":392648696771,"id":155,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139193729,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":237,"timestamp":392648697594,"id":156,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139193730,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":110,"timestamp":392648697858,"id":157,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139193731,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":757,"timestamp":392648698606,"id":159,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139193731,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":15751,"timestamp":392648698361,"id":158,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw"},"startTime":1772139193731,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392648714147,"id":160,"parentId":158,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw","memory.rss":"919658496","memory.heapUsed":"150827040","memory.heapTotal":"165556224"},"startTime":1772139193747,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":180,"timestamp":392649731114,"id":161,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139194764,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":117,"timestamp":392649731317,"id":162,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139194764,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":309,"timestamp":392649732043,"id":163,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139194765,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":205,"timestamp":392649732382,"id":164,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139194765,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":807,"timestamp":392649733748,"id":166,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139194766,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":19231,"timestamp":392649733299,"id":165,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw"},"startTime":1772139194766,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392649752557,"id":167,"parentId":165,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw","memory.rss":"923140096","memory.heapUsed":"148272888","memory.heapTotal":"183906304"},"startTime":1772139194785,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":332,"timestamp":392653835795,"id":168,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139198868,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":239,"timestamp":392653836160,"id":169,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139198869,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":232,"timestamp":392653836817,"id":170,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139198869,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":231,"timestamp":392653837070,"id":171,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139198870,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":836,"timestamp":392653838310,"id":173,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139198871,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":18418,"timestamp":392653837829,"id":172,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw"},"startTime":1772139198870,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392653856270,"id":174,"parentId":172,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw","memory.rss":"1039138816","memory.heapUsed":"136439088","memory.heapTotal":"143933440"},"startTime":1772139198889,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":334,"timestamp":392655831705,"id":175,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139200864,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":332,"timestamp":392655832070,"id":176,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139200865,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":304,"timestamp":392655833215,"id":177,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139200866,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":486,"timestamp":392655833638,"id":178,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139200866,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":806,"timestamp":392655835070,"id":180,"parentId":3,"tags":{"inputPage":"/project/[id]/world/page"},"startTime":1772139200868,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":19110,"timestamp":392655834692,"id":179,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/world?_rsc=kc2xw"},"startTime":1772139200867,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392655853820,"id":181,"parentId":179,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/world?_rsc=kc2xw","memory.rss":"915832832","memory.heapUsed":"137317752","memory.heapTotal":"145244160"},"startTime":1772139200886,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":883,"timestamp":392655896916,"id":183,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139200930,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":22267,"timestamp":392655896696,"id":182,"tags":{"url":"/api/projects"},"startTime":1772139200929,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392655918994,"id":184,"parentId":182,"tags":{"url":"/api/projects","memory.rss":"916176896","memory.heapUsed":"138903872","memory.heapTotal":"145506304"},"startTime":1772139200952,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":476,"timestamp":392655920255,"id":186,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139200953,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":16827,"timestamp":392655920017,"id":185,"tags":{"url":"/api/projects"},"startTime":1772139200953,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392655936868,"id":187,"parentId":185,"tags":{"url":"/api/projects","memory.rss":"916627456","memory.heapUsed":"138949840","memory.heapTotal":"146292736"},"startTime":1772139200970,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":178,"timestamp":392658780490,"id":188,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139203813,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":113,"timestamp":392658780689,"id":189,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139203813,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":128,"timestamp":392658781024,"id":190,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139203814,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":94,"timestamp":392658781166,"id":191,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139203814,"traceId":"f1bee5e7767cbf0a"},{"name":"compile-path","duration":153897,"timestamp":392658781736,"id":194,"tags":{"trigger":"/project/[id]/workflow"},"startTime":1772139203814,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":458728,"timestamp":392658781493,"id":192,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow?_rsc=14fcw"},"startTime":1772139203814,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392659240243,"id":195,"parentId":192,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow?_rsc=14fcw","memory.rss":"946716672","memory.heapUsed":"144048792","memory.heapTotal":"152821760"},"startTime":1772139204273,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":190,"timestamp":392660881675,"id":196,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139205914,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":111,"timestamp":392660881887,"id":197,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139205915,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":149,"timestamp":392660882304,"id":198,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139205915,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":101,"timestamp":392660882469,"id":199,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139205915,"traceId":"f1bee5e7767cbf0a"},{"name":"compile-path","duration":155683,"timestamp":392660883082,"id":202,"tags":{"trigger":"/project/[id]/ideas"},"startTime":1772139205916,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":452726,"timestamp":392660882830,"id":200,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas?_rsc=o7h66"},"startTime":1772139205915,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392661335579,"id":203,"parentId":200,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas?_rsc=o7h66","memory.rss":"959594496","memory.heapUsed":"147905664","memory.heapTotal":"166440960"},"startTime":1772139206368,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":435,"timestamp":392662033803,"id":204,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings"},"startTime":1772139207066,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":246,"timestamp":392662034272,"id":205,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings"},"startTime":1772139207067,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":252,"timestamp":392662034921,"id":206,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings"},"startTime":1772139207068,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":244,"timestamp":392662035197,"id":207,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings"},"startTime":1772139207068,"traceId":"f1bee5e7767cbf0a"},{"name":"compile-path","duration":141019,"timestamp":392662036513,"id":210,"tags":{"trigger":"/project/[id]/settings"},"startTime":1772139207069,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":453220,"timestamp":392662035968,"id":208,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings?_rsc=1dnpg"},"startTime":1772139207069,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392662489234,"id":211,"parentId":208,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings?_rsc=1dnpg","memory.rss":"970977280","memory.heapUsed":"152267032","memory.heapTotal":"167477248"},"startTime":1772139207522,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1097,"timestamp":392662554884,"id":213,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139207587,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":21161,"timestamp":392662554535,"id":212,"tags":{"url":"/api/projects"},"startTime":1772139207587,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392662575722,"id":214,"parentId":212,"tags":{"url":"/api/projects","memory.rss":"972279808","memory.heapUsed":"148834800","memory.heapTotal":"167464960"},"startTime":1772139207608,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":932,"timestamp":392662576581,"id":216,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139207609,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":21553,"timestamp":392662576384,"id":215,"tags":{"url":"/api/projects"},"startTime":1772139207609,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392662597970,"id":217,"parentId":215,"tags":{"url":"/api/projects","memory.rss":"972939264","memory.heapUsed":"150188048","memory.heapTotal":"167464960"},"startTime":1772139207631,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":198,"timestamp":392667071036,"id":218,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139212104,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":123,"timestamp":392667071256,"id":219,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139212104,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":156,"timestamp":392667071685,"id":220,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139212104,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":117,"timestamp":392667071858,"id":221,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139212104,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1498,"timestamp":392667072844,"id":223,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139212105,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":17719,"timestamp":392667072449,"id":222,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=h1m1z"},"startTime":1772139212105,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392667090194,"id":224,"parentId":222,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=h1m1z","memory.rss":"1018363904","memory.heapUsed":"153533544","memory.heapTotal":"168226816"},"startTime":1772139212123,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":185,"timestamp":392704633376,"id":225,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139249666,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":110,"timestamp":392704633583,"id":226,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139249666,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":130,"timestamp":392704633886,"id":227,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139249666,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":97,"timestamp":392704634031,"id":228,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139249667,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":741,"timestamp":392704634703,"id":230,"parentId":3,"tags":{"inputPage":"/project/[id]/world/page"},"startTime":1772139249667,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":16108,"timestamp":392704634468,"id":229,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/world?_rsc=kc2xw"},"startTime":1772139249667,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392704650597,"id":231,"parentId":229,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/world?_rsc=kc2xw","memory.rss":"973934592","memory.heapUsed":"151432808","memory.heapTotal":"156430336"},"startTime":1772139249683,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":622,"timestamp":392704698555,"id":233,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139249731,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":60789,"timestamp":392704698135,"id":232,"tags":{"url":"/api/projects"},"startTime":1772139249731,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392704758949,"id":234,"parentId":232,"tags":{"url":"/api/projects","memory.rss":"974438400","memory.heapUsed":"151834248","memory.heapTotal":"160100352"},"startTime":1772139249792,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":892,"timestamp":392704760362,"id":236,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139249793,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":30719,"timestamp":392704759974,"id":235,"tags":{"url":"/api/projects"},"startTime":1772139249793,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392704790733,"id":237,"parentId":235,"tags":{"url":"/api/projects","memory.rss":"972435456","memory.heapUsed":"153207760","memory.heapTotal":"160362496"},"startTime":1772139249823,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":350,"timestamp":392705194484,"id":238,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139250227,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":338,"timestamp":392705194870,"id":239,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139250227,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":263,"timestamp":392705195606,"id":240,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139250228,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":228,"timestamp":392705195894,"id":241,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139250228,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1668,"timestamp":392705197027,"id":243,"parentId":3,"tags":{"inputPage":"/project/[id]/workflow/page"},"startTime":1772139250230,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":20983,"timestamp":392705196611,"id":242,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow?_rsc=14fcw"},"startTime":1772139250229,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392705217616,"id":244,"parentId":242,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow?_rsc=14fcw","memory.rss":"973348864","memory.heapUsed":"153231192","memory.heapTotal":"157741056"},"startTime":1772139250250,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":204,"timestamp":392705804198,"id":245,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139250837,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":109,"timestamp":392705804427,"id":246,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139250837,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":354,"timestamp":392705805307,"id":247,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139250838,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":258,"timestamp":392705805690,"id":248,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139250838,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":868,"timestamp":392705806992,"id":250,"parentId":3,"tags":{"inputPage":"/project/[id]/ideas/page"},"startTime":1772139250840,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":19797,"timestamp":392705806476,"id":249,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas?_rsc=o7h66"},"startTime":1772139250839,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392705826324,"id":251,"parentId":249,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas?_rsc=o7h66","memory.rss":"973873152","memory.heapUsed":"154246400","memory.heapTotal":"158994432"},"startTime":1772139250859,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":351,"timestamp":392706430327,"id":252,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings"},"startTime":1772139251463,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":286,"timestamp":392706430724,"id":253,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings"},"startTime":1772139251463,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":245,"timestamp":392706431377,"id":254,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings"},"startTime":1772139251464,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":229,"timestamp":392706431645,"id":255,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings"},"startTime":1772139251464,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":906,"timestamp":392706432763,"id":257,"parentId":3,"tags":{"inputPage":"/project/[id]/settings/page"},"startTime":1772139251465,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":18756,"timestamp":392706432318,"id":256,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings?_rsc=1dnpg"},"startTime":1772139251465,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392706451095,"id":258,"parentId":256,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings?_rsc=1dnpg","memory.rss":"974848000","memory.heapUsed":"155374856","memory.heapTotal":"163188736"},"startTime":1772139251484,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":797,"timestamp":392706492234,"id":260,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139251525,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":21188,"timestamp":392706491874,"id":259,"tags":{"url":"/api/projects"},"startTime":1772139251524,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392706513099,"id":261,"parentId":259,"tags":{"url":"/api/projects","memory.rss":"974897152","memory.heapUsed":"156761720","memory.heapTotal":"163188736"},"startTime":1772139251546,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":801,"timestamp":392706515245,"id":263,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139251548,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":28643,"timestamp":392706514878,"id":262,"tags":{"url":"/api/projects"},"startTime":1772139251547,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392706543542,"id":264,"parentId":262,"tags":{"url":"/api/projects","memory.rss":"974917632","memory.heapUsed":"156972584","memory.heapTotal":"163713024"},"startTime":1772139251576,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":449,"timestamp":392707475355,"id":265,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139252508,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":133,"timestamp":392707475830,"id":266,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139252508,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":390,"timestamp":392707476345,"id":267,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139252509,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":296,"timestamp":392707476784,"id":268,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139252509,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":828,"timestamp":392707478661,"id":270,"parentId":3,"tags":{"inputPage":"/project/[id]/ideas/page"},"startTime":1772139252511,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":15581,"timestamp":392707478274,"id":269,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas?_rsc=h1m1z"},"startTime":1772139252511,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392707493885,"id":271,"parentId":269,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas?_rsc=h1m1z","memory.rss":"975048704","memory.heapUsed":"157822392","memory.heapTotal":"164761600"},"startTime":1772139252526,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":799,"timestamp":392708185825,"id":273,"parentId":3,"tags":{"inputPage":"/dashboard/page"},"startTime":1772139253218,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":10271,"timestamp":392708185331,"id":272,"tags":{"url":"/dashboard?_rsc=1dnpg"},"startTime":1772139253218,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":1,"timestamp":392708195623,"id":274,"parentId":272,"tags":{"url":"/dashboard?_rsc=1dnpg","memory.rss":"975142912","memory.heapUsed":"158860576","memory.heapTotal":"170266624"},"startTime":1772139253228,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1074,"timestamp":392708234064,"id":276,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139253267,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":14804,"timestamp":392708233769,"id":275,"tags":{"url":"/api/projects"},"startTime":1772139253266,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":10,"timestamp":392708248644,"id":277,"parentId":275,"tags":{"url":"/api/projects","memory.rss":"975147008","memory.heapUsed":"160236528","memory.heapTotal":"170266624"},"startTime":1772139253281,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":752,"timestamp":392708249784,"id":279,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139253282,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":15570,"timestamp":392708249432,"id":278,"tags":{"url":"/api/projects"},"startTime":1772139253282,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392708265030,"id":280,"parentId":278,"tags":{"url":"/api/projects","memory.rss":"975507456","memory.heapUsed":"159098464","memory.heapTotal":"170528768"},"startTime":1772139253298,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":302,"timestamp":392709738958,"id":281,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139254772,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":228,"timestamp":392709739292,"id":282,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139254772,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":374,"timestamp":392709739903,"id":283,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139254773,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":275,"timestamp":392709740307,"id":284,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139254773,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":771,"timestamp":392709741407,"id":286,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139254774,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":173,"timestamp":392709758069,"id":287,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139254791,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":105,"timestamp":392709758264,"id":288,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139254791,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":153,"timestamp":392709758757,"id":289,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139254791,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":103,"timestamp":392709758927,"id":290,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139254792,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":474,"timestamp":392709759890,"id":292,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139254792,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":26241,"timestamp":392709741177,"id":285,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=1h1b5"},"startTime":1772139254774,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392709767445,"id":293,"parentId":285,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=1h1b5","memory.rss":"977035264","memory.heapUsed":"161007448","memory.heapTotal":"171839488"},"startTime":1772139254800,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1296,"timestamp":392709805190,"id":295,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139254838,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":54448,"timestamp":392709759542,"id":291,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139254792,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392709814034,"id":296,"parentId":291,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"978251776","memory.heapUsed":"161322368","memory.heapTotal":"173150208"},"startTime":1772139254847,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":376,"timestamp":392709816396,"id":297,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139254849,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":347,"timestamp":392709816811,"id":298,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139254849,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":326,"timestamp":392709818110,"id":299,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139254851,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":319,"timestamp":392709818466,"id":300,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139254851,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1511,"timestamp":392709820414,"id":302,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139254853,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":36644,"timestamp":392709804957,"id":294,"tags":{"url":"/api/projects"},"startTime":1772139254838,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392709841653,"id":303,"parentId":294,"tags":{"url":"/api/projects","memory.rss":"978620416","memory.heapUsed":"163574064","memory.heapTotal":"173150208"},"startTime":1772139254874,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":647,"timestamp":392709843183,"id":305,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139254876,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":20956,"timestamp":392709842818,"id":304,"tags":{"url":"/api/projects"},"startTime":1772139254875,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":6,"timestamp":392709863847,"id":306,"parentId":304,"tags":{"url":"/api/projects","memory.rss":"981753856","memory.heapUsed":"163948280","memory.heapTotal":"175648768"},"startTime":1772139254896,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":61625,"timestamp":392709820000,"id":301,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139254853,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392709881660,"id":307,"parentId":301,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"980287488","memory.heapUsed":"155650640","memory.heapTotal":"184061952"},"startTime":1772139254914,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1443,"timestamp":392711078128,"id":309,"parentId":3,"tags":{"inputPage":"/dashboard/page"},"startTime":1772139256111,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":12001,"timestamp":392711077911,"id":308,"tags":{"url":"/dashboard?_rsc=kc2xw"},"startTime":1772139256111,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":1,"timestamp":392711089934,"id":310,"parentId":308,"tags":{"url":"/dashboard?_rsc=kc2xw","memory.rss":"980840448","memory.heapUsed":"158244424","memory.heapTotal":"184061952"},"startTime":1772139256123,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"ensure-page","duration":572,"timestamp":392711128561,"id":312,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139256161,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":27024,"timestamp":392711128337,"id":311,"tags":{"url":"/api/projects"},"startTime":1772139256161,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392711155391,"id":313,"parentId":311,"tags":{"url":"/api/projects","memory.rss":"980848640","memory.heapUsed":"159701256","memory.heapTotal":"184061952"},"startTime":1772139256188,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":634,"timestamp":392711156739,"id":315,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139256189,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":25055,"timestamp":392711156264,"id":314,"tags":{"url":"/api/projects"},"startTime":1772139256189,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392711181356,"id":316,"parentId":314,"tags":{"url":"/api/projects","memory.rss":"982265856","memory.heapUsed":"161065056","memory.heapTotal":"184061952"},"startTime":1772139256214,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":214,"timestamp":392712609819,"id":317,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139257642,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":104,"timestamp":392712610056,"id":318,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139257643,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":318,"timestamp":392712610571,"id":319,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139257643,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":254,"timestamp":392712610921,"id":320,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139257644,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":792,"timestamp":392712612034,"id":322,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139257645,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":177,"timestamp":392712630044,"id":323,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139257663,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":118,"timestamp":392712630258,"id":324,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139257663,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":170,"timestamp":392712630680,"id":325,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139257663,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":129,"timestamp":392712630871,"id":326,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139257663,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":904,"timestamp":392712632323,"id":328,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139257665,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":29484,"timestamp":392712611656,"id":321,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=1h1b5"},"startTime":1772139257644,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392712641175,"id":329,"parentId":321,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=1h1b5","memory.rss":"984231936","memory.heapUsed":"159817360","memory.heapTotal":"184299520"},"startTime":1772139257674,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":24010,"timestamp":392712631830,"id":327,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139257664,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392712655869,"id":330,"parentId":327,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"984260608","memory.heapUsed":"160681488","memory.heapTotal":"184299520"},"startTime":1772139257688,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":789,"timestamp":392712676846,"id":332,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139257709,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":340,"timestamp":392712680598,"id":333,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139257713,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":284,"timestamp":392712680972,"id":334,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139257714,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":303,"timestamp":392712682616,"id":335,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139257715,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":327,"timestamp":392712683135,"id":336,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139257716,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":956,"timestamp":392712685193,"id":338,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139257718,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":24300,"timestamp":392712676612,"id":331,"tags":{"url":"/api/projects"},"startTime":1772139257709,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392712700951,"id":339,"parentId":331,"tags":{"url":"/api/projects","memory.rss":"985952256","memory.heapUsed":"163577000","memory.heapTotal":"184299520"},"startTime":1772139257734,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":540,"timestamp":392712703823,"id":341,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139257736,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":24289,"timestamp":392712684770,"id":337,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139257717,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392712709098,"id":342,"parentId":337,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"986783744","memory.heapUsed":"164626504","memory.heapTotal":"184299520"},"startTime":1772139257742,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":19696,"timestamp":392712703344,"id":340,"tags":{"url":"/api/projects"},"startTime":1772139257736,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392712723087,"id":343,"parentId":340,"tags":{"url":"/api/projects","memory.rss":"987475968","memory.heapUsed":"161037080","memory.heapTotal":"184299520"},"startTime":1772139257756,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":160,"timestamp":392715510732,"id":344,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260543,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":90,"timestamp":392715510912,"id":345,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260544,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":142,"timestamp":392715511246,"id":346,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260544,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":93,"timestamp":392715511404,"id":347,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260544,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":495,"timestamp":392715511942,"id":349,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139260545,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":33241,"timestamp":392715511760,"id":348,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260544,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392715545032,"id":350,"parentId":348,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1002065920","memory.heapUsed":"163272560","memory.heapTotal":"184299520"},"startTime":1772139260578,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":280,"timestamp":392715545598,"id":351,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260578,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":119,"timestamp":392715545900,"id":352,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260578,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":302,"timestamp":392715546604,"id":353,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260579,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":111,"timestamp":392715546926,"id":354,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260580,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":442,"timestamp":392715547625,"id":356,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139260580,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":27635,"timestamp":392715547423,"id":355,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260580,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392715575091,"id":357,"parentId":355,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1002668032","memory.heapUsed":"165578272","memory.heapTotal":"184766464"},"startTime":1772139260608,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":160,"timestamp":392715695572,"id":358,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260728,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":99,"timestamp":392715695754,"id":359,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260728,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":116,"timestamp":392715696096,"id":360,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260729,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":89,"timestamp":392715696224,"id":361,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260729,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":515,"timestamp":392715696816,"id":363,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139260729,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":21463,"timestamp":392715696600,"id":362,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260729,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392715718094,"id":364,"parentId":362,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1002708992","memory.heapUsed":"167445200","memory.heapTotal":"184766464"},"startTime":1772139260751,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":321,"timestamp":392715807515,"id":365,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260840,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":267,"timestamp":392715807866,"id":366,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260840,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":174,"timestamp":392715808493,"id":367,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260841,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":99,"timestamp":392715808683,"id":368,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260841,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1631,"timestamp":392715809529,"id":370,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139260842,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":29393,"timestamp":392715809156,"id":369,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260842,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392715838585,"id":371,"parentId":369,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1002811392","memory.heapUsed":"164887184","memory.heapTotal":"184766464"},"startTime":1772139260871,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":312,"timestamp":392715919941,"id":372,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260953,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":228,"timestamp":392715920285,"id":373,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260953,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":187,"timestamp":392715921006,"id":374,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260954,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":108,"timestamp":392715921214,"id":375,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260954,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":610,"timestamp":392715921901,"id":377,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139260954,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":27589,"timestamp":392715921688,"id":376,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139260954,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392715949311,"id":378,"parentId":376,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1003077632","memory.heapUsed":"166737016","memory.heapTotal":"185028608"},"startTime":1772139260982,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":363,"timestamp":392715989594,"id":379,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261022,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":253,"timestamp":392715989992,"id":380,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261023,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":144,"timestamp":392715990843,"id":381,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261023,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":91,"timestamp":392715991002,"id":382,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261024,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":583,"timestamp":392715991707,"id":384,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139261024,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":21106,"timestamp":392715991502,"id":383,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261024,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392716012651,"id":385,"parentId":383,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1003413504","memory.heapUsed":"168591320","memory.heapTotal":"185290752"},"startTime":1772139261045,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":349,"timestamp":392716057794,"id":386,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261090,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":346,"timestamp":392716058178,"id":387,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261091,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":159,"timestamp":392716059081,"id":388,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261092,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":108,"timestamp":392716059257,"id":389,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261092,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":642,"timestamp":392716060036,"id":391,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139261093,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":32779,"timestamp":392716059785,"id":390,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261092,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392716092600,"id":392,"parentId":390,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1004384256","memory.heapUsed":"166114920","memory.heapTotal":"186339328"},"startTime":1772139261125,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":307,"timestamp":392716145351,"id":393,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261178,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":243,"timestamp":392716145692,"id":394,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261178,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":151,"timestamp":392716146367,"id":395,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261179,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":98,"timestamp":392716146535,"id":396,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261179,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":567,"timestamp":392716147356,"id":398,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139261180,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":26303,"timestamp":392716147146,"id":397,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261180,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392716173481,"id":399,"parentId":397,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1004589056","memory.heapUsed":"168221632","memory.heapTotal":"186339328"},"startTime":1772139261206,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":344,"timestamp":392716284723,"id":400,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261317,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":421,"timestamp":392716285102,"id":401,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261318,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":305,"timestamp":392716286284,"id":402,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261319,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":258,"timestamp":392716286617,"id":403,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261319,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":591,"timestamp":392716288142,"id":405,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139261321,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":167,"timestamp":392716296769,"id":406,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261329,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":99,"timestamp":392716296958,"id":407,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261330,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":140,"timestamp":392716297645,"id":408,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261330,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":98,"timestamp":392716297804,"id":409,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261330,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":452,"timestamp":392716298651,"id":411,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139261331,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":26113,"timestamp":392716287688,"id":404,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261320,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392716313848,"id":412,"parentId":404,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1006370816","memory.heapUsed":"171747800","memory.heapTotal":"186863616"},"startTime":1772139261346,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":20302,"timestamp":392716298422,"id":410,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139261331,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":11,"timestamp":392716318761,"id":413,"parentId":410,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1006370816","memory.heapUsed":"171983640","memory.heapTotal":"186863616"},"startTime":1772139261351,"traceId":"f1bee5e7767cbf0a"},{"name":"client-hmr-latency","duration":33000,"timestamp":392756463001,"id":414,"parentId":3,"tags":{"updatedModules":["[project]/Documents/00 - projet/plumeia/src/providers/ProjectProvider.tsx [app-client]","[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client]"],"page":"/project/cmm3xwzel0001b8i9ez4a6jy9","isPageHidden":false},"startTime":1772139301571,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":174,"timestamp":392756576309,"id":415,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139301609,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":97,"timestamp":392756576504,"id":416,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139301609,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":191,"timestamp":392756576902,"id":417,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139301610,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":210,"timestamp":392756577116,"id":418,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139301610,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":15705,"timestamp":392756578497,"id":420,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139301611,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":176660,"timestamp":392756578165,"id":419,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139301611,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392756754862,"id":421,"parentId":419,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"995557376","memory.heapUsed":"169998136","memory.heapTotal":"190373888"},"startTime":1772139301788,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":272,"timestamp":392756778860,"id":422,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1772139301812,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":240,"timestamp":392756779167,"id":423,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1772139301812,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":343,"timestamp":392756779835,"id":424,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1772139301812,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":473,"timestamp":392756780274,"id":425,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1772139301813,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":373,"timestamp":392757270767,"id":426,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139302303,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":287,"timestamp":392757271179,"id":427,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139302304,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":292,"timestamp":392757271936,"id":428,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139302305,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":251,"timestamp":392757272253,"id":429,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139302305,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1094,"timestamp":392757273610,"id":431,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772139302306,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":336,"timestamp":392757288831,"id":432,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139302321,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":276,"timestamp":392757289204,"id":433,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139302322,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":332,"timestamp":392757290612,"id":434,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139302323,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":292,"timestamp":392757290980,"id":435,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139302324,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1019,"timestamp":392757292847,"id":437,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139302325,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":37177,"timestamp":392757273088,"id":430,"tags":{"url":"/api/auth/session"},"startTime":1772139302306,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392757310306,"id":438,"parentId":430,"tags":{"url":"/api/auth/session","memory.rss":"1013043200","memory.heapUsed":"175546728","memory.heapTotal":"190873600"},"startTime":1772139302343,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":373,"timestamp":392757340308,"id":439,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139302373,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":315,"timestamp":392757340720,"id":440,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139302373,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":282,"timestamp":392757343494,"id":443,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139302376,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":145,"timestamp":392757343806,"id":444,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139302376,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":2641,"timestamp":392757342468,"id":442,"parentId":3,"tags":{"inputPage":"/login/page"},"startTime":1772139302375,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1164,"timestamp":392757357295,"id":446,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139302390,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1137,"timestamp":392757361467,"id":448,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772139302394,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":35487,"timestamp":392757341930,"id":441,"tags":{"url":"/login?_rsc=pw1nz"},"startTime":1772139302375,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":1,"timestamp":392757377438,"id":449,"parentId":441,"tags":{"url":"/login?_rsc=pw1nz","memory.rss":"1010356224","memory.heapUsed":"178098872","memory.heapTotal":"193437696"},"startTime":1772139302410,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":19595,"timestamp":392757361214,"id":447,"tags":{"url":"/api/auth/session"},"startTime":1772139302394,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392757380846,"id":450,"parentId":447,"tags":{"url":"/api/auth/session","memory.rss":"1010446336","memory.heapUsed":"178557512","memory.heapTotal":"193437696"},"startTime":1772139302413,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":36030,"timestamp":392757357064,"id":445,"tags":{"url":"/api/projects"},"startTime":1772139302390,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392757393129,"id":451,"parentId":445,"tags":{"url":"/api/projects","memory.rss":"1010450432","memory.heapUsed":"178916568","memory.heapTotal":"193437696"},"startTime":1772139302426,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":102151,"timestamp":392757292406,"id":436,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139302325,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392757394582,"id":452,"parentId":436,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1010515968","memory.heapUsed":"179093320","memory.heapTotal":"193437696"},"startTime":1772139302427,"traceId":"f1bee5e7767cbf0a"},{"name":"client-hmr-latency","duration":46000,"timestamp":392775769341,"id":453,"parentId":3,"tags":{"updatedModules":["[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx [app-client]"],"page":"/login","isPageHidden":false},"startTime":1772139320879,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":367,"timestamp":392838997985,"id":454,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1772139384031,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":246,"timestamp":392838998384,"id":455,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1772139384031,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":289,"timestamp":392838999154,"id":456,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1772139384032,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":270,"timestamp":392838999472,"id":457,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1772139384032,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":889,"timestamp":392839001155,"id":459,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772139384034,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":15237,"timestamp":392839000696,"id":458,"tags":{"url":"/api/auth/providers"},"startTime":1772139384034,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392839015965,"id":460,"parentId":458,"tags":{"url":"/api/auth/providers","memory.rss":"1005092864","memory.heapUsed":"168317152","memory.heapTotal":"174120960"},"startTime":1772139384049,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":368,"timestamp":392839020912,"id":461,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1772139384054,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":267,"timestamp":392839021317,"id":462,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1772139384054,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":274,"timestamp":392839022670,"id":463,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1772139384056,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":226,"timestamp":392839022970,"id":464,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1772139384056,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":714,"timestamp":392839024441,"id":466,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772139384057,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":6382,"timestamp":392839024115,"id":465,"tags":{"url":"/api/auth/csrf"},"startTime":1772139384057,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392839030532,"id":467,"parentId":465,"tags":{"url":"/api/auth/csrf","memory.rss":"1005621248","memory.heapUsed":"169205208","memory.heapTotal":"173334528"},"startTime":1772139384064,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":344,"timestamp":392839034226,"id":468,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1772139384067,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":234,"timestamp":392839034603,"id":469,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1772139384068,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":304,"timestamp":392839035300,"id":470,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1772139384068,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":251,"timestamp":392839035631,"id":471,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1772139384069,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":657,"timestamp":392839036694,"id":473,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772139384070,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":280840,"timestamp":392839036366,"id":472,"tags":{"url":"/api/auth/callback/credentials?"},"startTime":1772139384069,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392839317242,"id":474,"parentId":472,"tags":{"url":"/api/auth/callback/credentials?","memory.rss":"1006972928","memory.heapUsed":"169906464","memory.heapTotal":"175431680"},"startTime":1772139384350,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":312,"timestamp":392839322215,"id":475,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139384355,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":221,"timestamp":392839322562,"id":476,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139384356,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":273,"timestamp":392839323207,"id":477,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139384356,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":219,"timestamp":392839323506,"id":478,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1772139384357,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":963,"timestamp":392839324554,"id":480,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1772139384358,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":9477,"timestamp":392839324252,"id":479,"tags":{"url":"/api/auth/session"},"startTime":1772139384357,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392839333762,"id":481,"parentId":479,"tags":{"url":"/api/auth/session","memory.rss":"1007550464","memory.heapUsed":"170222936","memory.heapTotal":"174907392"},"startTime":1772139384367,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1236,"timestamp":392839338884,"id":483,"parentId":3,"tags":{"inputPage":"/dashboard/page"},"startTime":1772139384372,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":18469,"timestamp":392839338489,"id":482,"tags":{"url":"/dashboard?_rsc=5c339"},"startTime":1772139384372,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392839356989,"id":484,"parentId":482,"tags":{"url":"/dashboard?_rsc=5c339","memory.rss":"1008750592","memory.heapUsed":"170831368","memory.heapTotal":"175931392"},"startTime":1772139384390,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1261,"timestamp":392839439014,"id":486,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139384472,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":30335,"timestamp":392839438497,"id":485,"tags":{"url":"/api/projects"},"startTime":1772139384472,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392839468864,"id":487,"parentId":485,"tags":{"url":"/api/projects","memory.rss":"1009692672","memory.heapUsed":"172066872","memory.heapTotal":"177504256"},"startTime":1772139384502,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":796,"timestamp":392839470519,"id":489,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139384504,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":26282,"timestamp":392839470225,"id":488,"tags":{"url":"/api/projects"},"startTime":1772139384503,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392839496549,"id":490,"parentId":488,"tags":{"url":"/api/projects","memory.rss":"1010429952","memory.heapUsed":"172902184","memory.heapTotal":"180387840"},"startTime":1772139384530,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":308,"timestamp":392843055588,"id":491,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139388089,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":235,"timestamp":392843055927,"id":492,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139388089,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":242,"timestamp":392843056610,"id":493,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139388090,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":232,"timestamp":392843056883,"id":494,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139388090,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":25413,"timestamp":392843058435,"id":496,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139388091,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":351,"timestamp":392843190920,"id":497,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139388224,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":274,"timestamp":392843191304,"id":498,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139388224,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":308,"timestamp":392843192548,"id":499,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139388226,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":247,"timestamp":392843192886,"id":500,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139388226,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1023,"timestamp":392843194335,"id":502,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139388227,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":157978,"timestamp":392843058025,"id":495,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=1h1b5"},"startTime":1772139388091,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392843216040,"id":503,"parentId":495,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=1h1b5","memory.rss":"1044566016","memory.heapUsed":"184404848","memory.heapTotal":"209420288"},"startTime":1772139388249,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":869,"timestamp":392843257528,"id":505,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139388291,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":70696,"timestamp":392843193925,"id":501,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139388227,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392843264668,"id":506,"parentId":501,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1045696512","memory.heapUsed":"186533016","memory.heapTotal":"209420288"},"startTime":1772139388298,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":348,"timestamp":392843266589,"id":507,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139388300,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":415,"timestamp":392843266974,"id":508,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139388300,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":411,"timestamp":392843268824,"id":509,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139388302,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":324,"timestamp":392843269271,"id":510,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139388302,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1064,"timestamp":392843271029,"id":512,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139388304,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":31301,"timestamp":392843257074,"id":504,"tags":{"url":"/api/projects"},"startTime":1772139388290,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392843288416,"id":513,"parentId":504,"tags":{"url":"/api/projects","memory.rss":"1045766144","memory.heapUsed":"188690240","memory.heapTotal":"209420288"},"startTime":1772139388321,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"ensure-page","duration":853,"timestamp":392843291240,"id":515,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139388324,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":26860,"timestamp":392843270504,"id":511,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139388304,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392843297400,"id":516,"parentId":511,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1046581248","memory.heapUsed":"190029072","memory.heapTotal":"209657856"},"startTime":1772139388330,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":19220,"timestamp":392843290891,"id":514,"tags":{"url":"/api/projects"},"startTime":1772139388324,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392843310150,"id":517,"parentId":514,"tags":{"url":"/api/projects","memory.rss":"1047166976","memory.heapUsed":"190674104","memory.heapTotal":"209657856"},"startTime":1772139388343,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":330,"timestamp":392844263010,"id":518,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139389296,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":238,"timestamp":392844263378,"id":519,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139389296,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":335,"timestamp":392844264138,"id":520,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139389297,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":252,"timestamp":392844264500,"id":521,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139389298,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":30034,"timestamp":392844265918,"id":523,"parentId":3,"tags":{"inputPage":"/project/[id]/world/page"},"startTime":1772139389299,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":136658,"timestamp":392844265508,"id":522,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/world?_rsc=kc2xw"},"startTime":1772139389299,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392844402210,"id":524,"parentId":522,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/world?_rsc=kc2xw","memory.rss":"1073643520","memory.heapUsed":"204067168","memory.heapTotal":"240771072"},"startTime":1772139389435,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":924,"timestamp":392844483192,"id":526,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139389516,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":21592,"timestamp":392844482803,"id":525,"tags":{"url":"/api/projects"},"startTime":1772139389516,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392844504442,"id":527,"parentId":525,"tags":{"url":"/api/projects","memory.rss":"1071034368","memory.heapUsed":"199072272","memory.heapTotal":"239620096"},"startTime":1772139389537,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":893,"timestamp":392844506779,"id":529,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139389540,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":15968,"timestamp":392844506448,"id":528,"tags":{"url":"/api/projects"},"startTime":1772139389539,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392844522456,"id":530,"parentId":528,"tags":{"url":"/api/projects","memory.rss":"1069035520","memory.heapUsed":"200724592","memory.heapTotal":"239620096"},"startTime":1772139389555,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":345,"timestamp":392846378897,"id":531,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139391412,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":246,"timestamp":392846379275,"id":532,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139391412,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":251,"timestamp":392846379922,"id":533,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139391413,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":229,"timestamp":392846380197,"id":534,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139391413,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":27314,"timestamp":392846381338,"id":536,"parentId":3,"tags":{"inputPage":"/project/[id]/workflow/page"},"startTime":1772139391414,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":127323,"timestamp":392846380952,"id":535,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow?_rsc=14fcw"},"startTime":1772139391414,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392846508328,"id":537,"parentId":535,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow?_rsc=14fcw","memory.rss":"1085583360","memory.heapUsed":"225652048","memory.heapTotal":"252719104"},"startTime":1772139391541,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":346,"timestamp":392847888147,"id":538,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139392921,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":240,"timestamp":392847888530,"id":539,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139392922,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":287,"timestamp":392847889254,"id":540,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139392922,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":236,"timestamp":392847889569,"id":541,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/world"},"startTime":1772139392923,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1355,"timestamp":392847890671,"id":543,"parentId":3,"tags":{"inputPage":"/project/[id]/world/page"},"startTime":1772139392924,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":28316,"timestamp":392847890274,"id":542,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/world?_rsc=o7h66"},"startTime":1772139392923,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392847918626,"id":544,"parentId":542,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/world?_rsc=o7h66","memory.rss":"1086492672","memory.heapUsed":"214463400","memory.heapTotal":"249053184"},"startTime":1772139392952,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":841,"timestamp":392847960364,"id":546,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139392993,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":24409,"timestamp":392847960024,"id":545,"tags":{"url":"/api/projects"},"startTime":1772139392993,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392847984488,"id":547,"parentId":545,"tags":{"url":"/api/projects","memory.rss":"1085341696","memory.heapUsed":"215867224","memory.heapTotal":"249315328"},"startTime":1772139393018,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":694,"timestamp":392847985858,"id":549,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139393019,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":15024,"timestamp":392847985506,"id":548,"tags":{"url":"/api/projects"},"startTime":1772139393019,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392848000572,"id":550,"parentId":548,"tags":{"url":"/api/projects","memory.rss":"1085775872","memory.heapUsed":"217212120","memory.heapTotal":"249577472"},"startTime":1772139393034,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":354,"timestamp":392848784606,"id":551,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139393818,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":268,"timestamp":392848784995,"id":552,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139393818,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":293,"timestamp":392848785872,"id":553,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139393819,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":229,"timestamp":392848786192,"id":554,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow"},"startTime":1772139393819,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1317,"timestamp":392848787281,"id":556,"parentId":3,"tags":{"inputPage":"/project/[id]/workflow/page"},"startTime":1772139393820,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":24198,"timestamp":392848786926,"id":555,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow?_rsc=14fcw"},"startTime":1772139393820,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392848811171,"id":557,"parentId":555,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/workflow?_rsc=14fcw","memory.rss":"1089548288","memory.heapUsed":"220582720","memory.heapTotal":"250101760"},"startTime":1772139393844,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":381,"timestamp":392849652752,"id":558,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139394686,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":261,"timestamp":392849653174,"id":559,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139394686,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":250,"timestamp":392849653869,"id":560,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139394687,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":311,"timestamp":392849654143,"id":561,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas"},"startTime":1772139394687,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":37321,"timestamp":392849655511,"id":563,"parentId":3,"tags":{"inputPage":"/project/[id]/ideas/page"},"startTime":1772139394689,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":140850,"timestamp":392849655133,"id":562,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas?_rsc=o7h66"},"startTime":1772139394688,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392849796025,"id":564,"parentId":562,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/ideas?_rsc=o7h66","memory.rss":"1115824128","memory.heapUsed":"231974744","memory.heapTotal":"266637312"},"startTime":1772139394829,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":323,"timestamp":392850540148,"id":565,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings"},"startTime":1772139395573,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":238,"timestamp":392850540505,"id":566,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings"},"startTime":1772139395574,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":307,"timestamp":392850541249,"id":567,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings"},"startTime":1772139395574,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":237,"timestamp":392850541587,"id":568,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings"},"startTime":1772139395575,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":29480,"timestamp":392850542716,"id":570,"parentId":3,"tags":{"inputPage":"/project/[id]/settings/page"},"startTime":1772139395576,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":132635,"timestamp":392850542363,"id":569,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings?_rsc=1dnpg"},"startTime":1772139395575,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392850675042,"id":571,"parentId":569,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9/settings?_rsc=1dnpg","memory.rss":"1134211072","memory.heapUsed":"246728160","memory.heapTotal":"282853376"},"startTime":1772139395708,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":889,"timestamp":392850742226,"id":573,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139395775,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":21215,"timestamp":392850741786,"id":572,"tags":{"url":"/api/projects"},"startTime":1772139395775,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":5,"timestamp":392850763053,"id":574,"parentId":572,"tags":{"url":"/api/projects","memory.rss":"1131257856","memory.heapUsed":"243289592","memory.heapTotal":"286023680"},"startTime":1772139395796,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":787,"timestamp":392850764762,"id":576,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139395798,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":15892,"timestamp":392850764443,"id":575,"tags":{"url":"/api/projects"},"startTime":1772139395797,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392850780372,"id":577,"parentId":575,"tags":{"url":"/api/projects","memory.rss":"1131311104","memory.heapUsed":"244888904","memory.heapTotal":"286023680"},"startTime":1772139395813,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":321,"timestamp":392853162735,"id":578,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139398196,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":226,"timestamp":392853163090,"id":579,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139398196,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":242,"timestamp":392853163722,"id":580,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139398197,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":221,"timestamp":392853163987,"id":581,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139398197,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1274,"timestamp":392853165304,"id":583,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139398198,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":23879,"timestamp":392853164818,"id":582,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=h1m1z"},"startTime":1772139398198,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392853188729,"id":584,"parentId":582,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=h1m1z","memory.rss":"1183232000","memory.heapUsed":"248127120","memory.heapTotal":"286285824"},"startTime":1772139398222,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1298,"timestamp":392855360814,"id":586,"parentId":3,"tags":{"inputPage":"/dashboard/page"},"startTime":1772139400394,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":15069,"timestamp":392855360481,"id":585,"tags":{"url":"/dashboard?_rsc=kc2xw"},"startTime":1772139400394,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392855375589,"id":587,"parentId":585,"tags":{"url":"/dashboard?_rsc=kc2xw","memory.rss":"1137000448","memory.heapUsed":"250587168","memory.heapTotal":"286285824"},"startTime":1772139400409,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":796,"timestamp":392855413326,"id":589,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139400446,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":30585,"timestamp":392855412992,"id":588,"tags":{"url":"/api/projects"},"startTime":1772139400446,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392855443616,"id":590,"parentId":588,"tags":{"url":"/api/projects","memory.rss":"1137262592","memory.heapUsed":"252186728","memory.heapTotal":"286523392"},"startTime":1772139400477,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":966,"timestamp":392855444694,"id":592,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139400478,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":16105,"timestamp":392855444423,"id":591,"tags":{"url":"/api/projects"},"startTime":1772139400477,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392855460565,"id":593,"parentId":591,"tags":{"url":"/api/projects","memory.rss":"1137266688","memory.heapUsed":"253559464","memory.heapTotal":"286523392"},"startTime":1772139400494,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":319,"timestamp":392856493338,"id":594,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139401526,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":230,"timestamp":392856493691,"id":595,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139401527,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":268,"timestamp":392856494399,"id":596,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139401527,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":226,"timestamp":392856494694,"id":597,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139401528,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1949,"timestamp":392856495913,"id":599,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139401529,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":292,"timestamp":392856520031,"id":600,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139401553,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":218,"timestamp":392856520354,"id":601,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139401553,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":239,"timestamp":392856520970,"id":602,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139401554,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":240,"timestamp":392856521235,"id":603,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139401554,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":836,"timestamp":392856522405,"id":605,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139401555,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":41496,"timestamp":392856495533,"id":598,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=1h1b5"},"startTime":1772139401529,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392856537061,"id":606,"parentId":598,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=1h1b5","memory.rss":"1137434624","memory.heapUsed":"247177992","memory.heapTotal":"286523392"},"startTime":1772139401570,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":897,"timestamp":392856571054,"id":608,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139401604,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":61550,"timestamp":392856522060,"id":604,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139401555,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392856583654,"id":609,"parentId":604,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1137573888","memory.heapUsed":"249726960","memory.heapTotal":"286523392"},"startTime":1772139401617,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":366,"timestamp":392856584645,"id":610,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139401618,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":263,"timestamp":392856585045,"id":611,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139401618,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":314,"timestamp":392856585929,"id":612,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139401619,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":258,"timestamp":392856586272,"id":613,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139401619,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":683,"timestamp":392856587479,"id":615,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139401620,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":23242,"timestamp":392856570691,"id":607,"tags":{"url":"/api/projects"},"startTime":1772139401604,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392856593969,"id":616,"parentId":607,"tags":{"url":"/api/projects","memory.rss":"1137778688","memory.heapUsed":"250951072","memory.heapTotal":"286785536"},"startTime":1772139401627,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1100,"timestamp":392856596118,"id":618,"parentId":3,"tags":{"inputPage":"/api/projects/route"},"startTime":1772139401629,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":22239,"timestamp":392856595773,"id":617,"tags":{"url":"/api/projects"},"startTime":1772139401629,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392856618060,"id":619,"parentId":617,"tags":{"url":"/api/projects","memory.rss":"1138573312","memory.heapUsed":"253454176","memory.heapTotal":"287514624"},"startTime":1772139401651,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":49302,"timestamp":392856587068,"id":614,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139401620,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392856636410,"id":620,"parentId":614,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1138573312","memory.heapUsed":"253774184","memory.heapTotal":"287514624"},"startTime":1772139401669,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":300,"timestamp":392859270079,"id":621,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139404303,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":217,"timestamp":392859270413,"id":622,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139404303,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":250,"timestamp":392859271162,"id":623,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139404304,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":227,"timestamp":392859271435,"id":624,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139404304,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1257,"timestamp":392859272492,"id":626,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139404306,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":24409,"timestamp":392859272140,"id":625,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw"},"startTime":1772139404305,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392859296593,"id":627,"parentId":625,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw","memory.rss":"1139970048","memory.heapUsed":"256903504","memory.heapTotal":"287776768"},"startTime":1772139404330,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":339,"timestamp":392860034432,"id":628,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139405067,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":241,"timestamp":392860034807,"id":629,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139405068,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":318,"timestamp":392860035574,"id":630,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139405069,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":238,"timestamp":392860035920,"id":631,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139405069,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1487,"timestamp":392860037204,"id":633,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139405070,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":26959,"timestamp":392860036746,"id":632,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw"},"startTime":1772139405070,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392860063736,"id":634,"parentId":632,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw","memory.rss":"1109835776","memory.heapUsed":"239476904","memory.heapTotal":"256401408"},"startTime":1772139405097,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":346,"timestamp":392868109011,"id":635,"parentId":3,"tags":{"inputPage":"/api/chapters/cmm3xwzil0002b8i9u2dpyqbq"},"startTime":1772139413142,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":230,"timestamp":392868109389,"id":636,"parentId":3,"tags":{"inputPage":"/api/chapters/cmm3xwzil0002b8i9u2dpyqbq"},"startTime":1772139413142,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":232,"timestamp":392868110016,"id":637,"parentId":3,"tags":{"inputPage":"/api/chapters/cmm3xwzil0002b8i9u2dpyqbq"},"startTime":1772139413143,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":216,"timestamp":392868110270,"id":638,"parentId":3,"tags":{"inputPage":"/api/chapters/cmm3xwzil0002b8i9u2dpyqbq"},"startTime":1772139413143,"traceId":"f1bee5e7767cbf0a"},{"name":"compile-path","duration":91868,"timestamp":392868111324,"id":641,"tags":{"trigger":"/api/chapters/[id]"},"startTime":1772139413144,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"handle-request","duration":749482,"timestamp":392868110939,"id":639,"tags":{"url":"/api/chapters/cmm3xwzil0002b8i9u2dpyqbq"},"startTime":1772139413144,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392868860458,"id":642,"parentId":639,"tags":{"url":"/api/chapters/cmm3xwzil0002b8i9u2dpyqbq","memory.rss":"1106886656","memory.heapUsed":"243450224","memory.heapTotal":"252334080"},"startTime":1772139413893,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":337,"timestamp":392873396320,"id":643,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139418429,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":267,"timestamp":392873396691,"id":644,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139418430,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":286,"timestamp":392873397564,"id":645,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139418431,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":438,"timestamp":392873397881,"id":646,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139418431,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":840,"timestamp":392873399292,"id":648,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139418432,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":28811,"timestamp":392873398932,"id":647,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139418432,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392873427775,"id":649,"parentId":647,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1107832832","memory.heapUsed":"243815128","memory.heapTotal":"250236928"},"startTime":1772139418461,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":334,"timestamp":392873733502,"id":650,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139418767,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":270,"timestamp":392873733886,"id":651,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139418767,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":252,"timestamp":392873734585,"id":652,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139418768,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":227,"timestamp":392873734863,"id":653,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139418768,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":890,"timestamp":392873736038,"id":655,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139418769,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":36315,"timestamp":392873735715,"id":654,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139418769,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392873772067,"id":656,"parentId":654,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1108992000","memory.heapUsed":"244982112","memory.heapTotal":"254169088"},"startTime":1772139418805,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":310,"timestamp":392873981045,"id":657,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419014,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":229,"timestamp":392873981387,"id":658,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419014,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":242,"timestamp":392873981983,"id":659,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419015,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":223,"timestamp":392873982251,"id":660,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419015,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":774,"timestamp":392873983204,"id":662,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139419016,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":27136,"timestamp":392873982902,"id":661,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419016,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392874010074,"id":663,"parentId":661,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1110654976","memory.heapUsed":"245900712","memory.heapTotal":"254668800"},"startTime":1772139419043,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":313,"timestamp":392874115474,"id":664,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419148,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":225,"timestamp":392874115818,"id":665,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419149,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":284,"timestamp":392874116608,"id":666,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419150,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":228,"timestamp":392874116919,"id":667,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419150,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":786,"timestamp":392874118263,"id":669,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139419151,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":21660,"timestamp":392874117876,"id":668,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419151,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392874139574,"id":670,"parentId":668,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1111252992","memory.heapUsed":"246499712","memory.heapTotal":"255455232"},"startTime":1772139419173,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":161,"timestamp":392874362950,"id":671,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419396,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":152,"timestamp":392874363132,"id":672,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419396,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":384,"timestamp":392874363861,"id":673,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419397,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":281,"timestamp":392874364289,"id":674,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419397,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":816,"timestamp":392874365413,"id":676,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139419398,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":22452,"timestamp":392874365070,"id":675,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419398,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":1,"timestamp":392874387547,"id":677,"parentId":675,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1111924736","memory.heapUsed":"247134800","memory.heapTotal":"255979520"},"startTime":1772139419421,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":309,"timestamp":392874723381,"id":678,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419756,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":224,"timestamp":392874723724,"id":679,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419757,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":300,"timestamp":392874724456,"id":680,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419757,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":220,"timestamp":392874724788,"id":681,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419758,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1001,"timestamp":392874725953,"id":683,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139419759,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":39553,"timestamp":392874725649,"id":682,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139419759,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392874765248,"id":684,"parentId":682,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1112788992","memory.heapUsed":"247978424","memory.heapTotal":"261222400"},"startTime":1772139419798,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":306,"timestamp":392874993732,"id":685,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420027,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":221,"timestamp":392874994070,"id":686,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420027,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":307,"timestamp":392874994776,"id":687,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420028,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":229,"timestamp":392874995111,"id":688,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420028,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":807,"timestamp":392874996264,"id":690,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139420029,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":32487,"timestamp":392874995939,"id":689,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420029,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392875028479,"id":691,"parentId":689,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1113817088","memory.heapUsed":"249831224","memory.heapTotal":"261222400"},"startTime":1772139420061,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":328,"timestamp":392875128440,"id":692,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420161,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":233,"timestamp":392875128804,"id":693,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420162,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":237,"timestamp":392875129430,"id":694,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420162,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":290,"timestamp":392875129691,"id":695,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420163,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1080,"timestamp":392875130970,"id":697,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139420164,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":20254,"timestamp":392875130585,"id":696,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420164,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392875150875,"id":698,"parentId":696,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1116827648","memory.heapUsed":"249656528","memory.heapTotal":"262737920"},"startTime":1772139420184,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":393,"timestamp":392875307868,"id":699,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420341,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":241,"timestamp":392875308298,"id":700,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420341,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":232,"timestamp":392875308962,"id":701,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420342,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":214,"timestamp":392875309218,"id":702,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420342,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":902,"timestamp":392875310213,"id":704,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139420343,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":28142,"timestamp":392875309865,"id":703,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420343,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392875338047,"id":705,"parentId":703,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1118355456","memory.heapUsed":"251782424","memory.heapTotal":"262737920"},"startTime":1772139420371,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":314,"timestamp":392875467411,"id":706,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420500,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":228,"timestamp":392875467756,"id":707,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420501,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":269,"timestamp":392875468477,"id":708,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420501,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":396,"timestamp":392875468774,"id":709,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420502,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":740,"timestamp":392875470051,"id":711,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139420503,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":23054,"timestamp":392875469711,"id":710,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139420503,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392875492805,"id":712,"parentId":710,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1119444992","memory.heapUsed":"251548152","memory.heapTotal":"263786496"},"startTime":1772139420526,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":283,"timestamp":392879755201,"id":713,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139424788,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":208,"timestamp":392879755515,"id":714,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139424789,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":283,"timestamp":392879756243,"id":715,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139424789,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":218,"timestamp":392879756554,"id":716,"parentId":3,"tags":{"inputPage":"/project/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139424790,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1291,"timestamp":392879757907,"id":718,"parentId":3,"tags":{"inputPage":"/project/[id]/page"},"startTime":1772139424791,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":24896,"timestamp":392879757456,"id":717,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw"},"startTime":1772139424790,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392879782402,"id":719,"parentId":717,"tags":{"url":"/project/cmm3xwzel0001b8i9ez4a6jy9?_rsc=kc2xw","memory.rss":"1105649664","memory.heapUsed":"251884232","memory.heapTotal":"265359360"},"startTime":1772139424815,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":508,"timestamp":392891238998,"id":720,"parentId":3,"tags":{"inputPage":"/api/chapters/cmm3xx56e0003b8i9ej9kzwu6"},"startTime":1772139436272,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":230,"timestamp":392891239544,"id":721,"parentId":3,"tags":{"inputPage":"/api/chapters/cmm3xx56e0003b8i9ej9kzwu6"},"startTime":1772139436273,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":294,"timestamp":392891240248,"id":722,"parentId":3,"tags":{"inputPage":"/api/chapters/cmm3xx56e0003b8i9ej9kzwu6"},"startTime":1772139436273,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":223,"timestamp":392891240575,"id":723,"parentId":3,"tags":{"inputPage":"/api/chapters/cmm3xx56e0003b8i9ej9kzwu6"},"startTime":1772139436274,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":739,"timestamp":392891241690,"id":725,"parentId":3,"tags":{"inputPage":"/api/chapters/[id]/route"},"startTime":1772139436275,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":54902,"timestamp":392891241351,"id":724,"tags":{"url":"/api/chapters/cmm3xx56e0003b8i9ej9kzwu6"},"startTime":1772139436274,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392891296291,"id":726,"parentId":724,"tags":{"url":"/api/chapters/cmm3xx56e0003b8i9ej9kzwu6","memory.rss":"1119608832","memory.heapUsed":"254277904","memory.heapTotal":"265359360"},"startTime":1772139436329,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":316,"timestamp":392892363742,"id":727,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139437397,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":395,"timestamp":392892364091,"id":728,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139437397,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":284,"timestamp":392892365142,"id":729,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139437398,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":227,"timestamp":392892365451,"id":730,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139437398,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":784,"timestamp":392892366515,"id":732,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139437400,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":25715,"timestamp":392892366196,"id":731,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139437399,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392892391949,"id":733,"parentId":731,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1120628736","memory.heapUsed":"254146904","memory.heapTotal":"266145792"},"startTime":1772139437425,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":307,"timestamp":392892609881,"id":734,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139437643,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":215,"timestamp":392892610219,"id":735,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139437643,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":366,"timestamp":392892610955,"id":736,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139437644,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":233,"timestamp":392892611352,"id":737,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139437644,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":767,"timestamp":392892612429,"id":739,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139437645,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":23674,"timestamp":392892612112,"id":738,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139437645,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392892635829,"id":740,"parentId":738,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1121361920","memory.heapUsed":"253808528","memory.heapTotal":"259854336"},"startTime":1772139437669,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":324,"timestamp":392893105508,"id":741,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438139,"traceId":"f1bee5e7767cbf0a"}] +[{"name":"ensure-page","duration":348,"timestamp":392893106154,"id":742,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438139,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":283,"timestamp":392893108157,"id":743,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438141,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":234,"timestamp":392893108469,"id":744,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438141,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1101,"timestamp":392893109776,"id":746,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139438143,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":35189,"timestamp":392893109178,"id":745,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438142,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392893144406,"id":747,"parentId":745,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1121509376","memory.heapUsed":"254410760","memory.heapTotal":"260640768"},"startTime":1772139438177,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":317,"timestamp":392893285489,"id":748,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438319,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":231,"timestamp":392893285837,"id":749,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438319,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":368,"timestamp":392893286648,"id":750,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438320,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1228,"timestamp":392893287047,"id":751,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438320,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":776,"timestamp":392893289149,"id":753,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139438322,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":28673,"timestamp":392893288796,"id":752,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438322,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392893317509,"id":754,"parentId":752,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1121517568","memory.heapUsed":"255151104","memory.heapTotal":"261165056"},"startTime":1772139438351,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":325,"timestamp":392893781872,"id":755,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438815,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":245,"timestamp":392893782228,"id":756,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438815,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":326,"timestamp":392893783043,"id":757,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438816,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":256,"timestamp":392893783398,"id":758,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438816,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":814,"timestamp":392893784731,"id":760,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139438818,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":30392,"timestamp":392893784372,"id":759,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438817,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392893814805,"id":761,"parentId":759,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1122590720","memory.heapUsed":"256985240","memory.heapTotal":"266285056"},"startTime":1772139438848,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":311,"timestamp":392893960487,"id":762,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438994,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":236,"timestamp":392893960836,"id":763,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438994,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":234,"timestamp":392893961471,"id":764,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438994,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1538,"timestamp":392893961726,"id":765,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438995,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":775,"timestamp":392893964169,"id":767,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139438997,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":21258,"timestamp":392893963867,"id":766,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139438997,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392893985163,"id":768,"parentId":766,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1122934784","memory.heapUsed":"257587800","memory.heapTotal":"266547200"},"startTime":1772139439018,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":298,"timestamp":392894140842,"id":769,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439174,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":237,"timestamp":392894141173,"id":770,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439174,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":289,"timestamp":392894141943,"id":771,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439175,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":229,"timestamp":392894142258,"id":772,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439175,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":730,"timestamp":392894143292,"id":774,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139439176,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":19473,"timestamp":392894142999,"id":773,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439176,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392894162517,"id":775,"parentId":773,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1122934784","memory.heapUsed":"258191368","memory.heapTotal":"267071488"},"startTime":1772139439196,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":318,"timestamp":392894207756,"id":776,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439241,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":228,"timestamp":392894208108,"id":777,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439241,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":264,"timestamp":392894208720,"id":778,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439242,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":223,"timestamp":392894209007,"id":779,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439242,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":800,"timestamp":392894209995,"id":781,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139439243,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":19928,"timestamp":392894209709,"id":780,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439243,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392894229684,"id":782,"parentId":780,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1123545088","memory.heapUsed":"258837232","memory.heapTotal":"268120064"},"startTime":1772139439263,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":311,"timestamp":392894367607,"id":783,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439401,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":222,"timestamp":392894367951,"id":784,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439401,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":274,"timestamp":392894368655,"id":785,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439402,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":223,"timestamp":392894368958,"id":786,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439402,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":719,"timestamp":392894370087,"id":788,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139439403,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":24890,"timestamp":392894369806,"id":787,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439403,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392894394740,"id":789,"parentId":787,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1124622336","memory.heapUsed":"259700464","memory.heapTotal":"273362944"},"startTime":1772139439428,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":338,"timestamp":392894500647,"id":790,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439534,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":233,"timestamp":392894501023,"id":791,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439534,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":266,"timestamp":392894501761,"id":792,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439535,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":227,"timestamp":392894502054,"id":793,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439535,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":817,"timestamp":392894503084,"id":795,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139439536,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":37175,"timestamp":392894502771,"id":794,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439536,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392894539984,"id":796,"parentId":794,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1123930112","memory.heapUsed":"248351216","memory.heapTotal":"270360576"},"startTime":1772139439573,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":307,"timestamp":392894612913,"id":797,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439646,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":226,"timestamp":392894613253,"id":798,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439646,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":423,"timestamp":392894613933,"id":799,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439647,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":252,"timestamp":392894614386,"id":800,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439647,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":836,"timestamp":392894615405,"id":802,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139439648,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":20824,"timestamp":392894615122,"id":801,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439648,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392894635968,"id":803,"parentId":801,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1124999168","memory.heapUsed":"250182768","memory.heapTotal":"270360576"},"startTime":1772139439669,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":313,"timestamp":392894793314,"id":804,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439826,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":220,"timestamp":392894793663,"id":805,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439827,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":295,"timestamp":392894795322,"id":806,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439828,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":219,"timestamp":392894795646,"id":807,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439829,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":935,"timestamp":392894797098,"id":809,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139439830,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":27250,"timestamp":392894796517,"id":808,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439830,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":3,"timestamp":392894823802,"id":810,"parentId":808,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1125453824","memory.heapUsed":"249633072","memory.heapTotal":"270598144"},"startTime":1772139439857,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":324,"timestamp":392894861045,"id":811,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439894,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":222,"timestamp":392894861401,"id":812,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439894,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":283,"timestamp":392894862074,"id":813,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439895,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":295,"timestamp":392894862388,"id":814,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439895,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1007,"timestamp":392894863891,"id":816,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139439897,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":21329,"timestamp":392894863547,"id":815,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139439897,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392894884918,"id":817,"parentId":815,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1126858752","memory.heapUsed":"249450000","memory.heapTotal":"270598144"},"startTime":1772139439918,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":406,"timestamp":392895062766,"id":818,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440096,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":279,"timestamp":392895063212,"id":819,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440096,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":328,"timestamp":392895063968,"id":820,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440097,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":242,"timestamp":392895064326,"id":821,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440097,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":1060,"timestamp":392895066863,"id":823,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139440100,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":38013,"timestamp":392895066505,"id":822,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440100,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392895104552,"id":824,"parentId":822,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1126858752","memory.heapUsed":"251596328","memory.heapTotal":"270598144"},"startTime":1772139440138,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":318,"timestamp":392895176148,"id":825,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440209,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":232,"timestamp":392895176497,"id":826,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440210,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":311,"timestamp":392895177195,"id":827,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440210,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":221,"timestamp":392895177533,"id":828,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440211,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":830,"timestamp":392895178582,"id":830,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139440212,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":19673,"timestamp":392895178265,"id":829,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440211,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":4,"timestamp":392895197983,"id":831,"parentId":829,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1127038976","memory.heapUsed":"251199728","memory.heapTotal":"270598144"},"startTime":1772139440231,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":355,"timestamp":392895468023,"id":832,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440501,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":235,"timestamp":392895468421,"id":833,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440501,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":279,"timestamp":392895469152,"id":834,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440502,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":221,"timestamp":392895469459,"id":835,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440502,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":778,"timestamp":392895470514,"id":837,"parentId":3,"tags":{"inputPage":"/api/projects/[id]/route"},"startTime":1772139440504,"traceId":"f1bee5e7767cbf0a"},{"name":"handle-request","duration":32995,"timestamp":392895470225,"id":836,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440503,"traceId":"f1bee5e7767cbf0a"},{"name":"memory-usage","duration":2,"timestamp":392895503250,"id":838,"parentId":836,"tags":{"url":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9","memory.rss":"1127038976","memory.heapUsed":"253034592","memory.heapTotal":"270598144"},"startTime":1772139440536,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":319,"timestamp":392895760547,"id":839,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440794,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":219,"timestamp":392895760899,"id":840,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440794,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":322,"timestamp":392895761773,"id":841,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440795,"traceId":"f1bee5e7767cbf0a"},{"name":"ensure-page","duration":226,"timestamp":392895762127,"id":842,"parentId":3,"tags":{"inputPage":"/api/projects/cmm3xwzel0001b8i9ez4a6jy9"},"startTime":1772139440795,"traceId":"f1bee5e7767cbf0a"}] diff --git a/.next/dev/types/routes.d.ts b/.next/dev/types/routes.d.ts index fc317b1..2be77a0 100644 --- a/.next/dev/types/routes.d.ts +++ b/.next/dev/types/routes.d.ts @@ -2,7 +2,7 @@ // Do not edit this file manually type AppRoutes = "/" | "/checkout" | "/dashboard" | "/features" | "/login" | "/pricing" | "/profile" | "/project/[id]" | "/project/[id]/ideas" | "/project/[id]/settings" | "/project/[id]/workflow" | "/project/[id]/world" | "/signup" -type AppRouteHandlerRoutes = "/api/ai/generate" | "/api/ai/transform" | "/api/auth/[...nextauth]" | "/api/auth/register" | "/api/chapters" | "/api/chapters/[id]" | "/api/entities" | "/api/entities/[id]" | "/api/ideas" | "/api/ideas/[id]" | "/api/projects" | "/api/projects/[id]" +type AppRouteHandlerRoutes = "/api/ai/generate" | "/api/ai/transform" | "/api/auth/[...nextauth]" | "/api/auth/register" | "/api/chapters" | "/api/chapters/[id]" | "/api/entities" | "/api/entities/[id]" | "/api/ideas" | "/api/ideas/[id]" | "/api/projects" | "/api/projects/[id]" | "/api/projects/[id]/workflow" type PageRoutes = never type LayoutRoutes = "/" | "/project/[id]" type RedirectRoutes = never @@ -24,6 +24,7 @@ interface ParamMap { "/api/ideas/[id]": { "id": string; } "/api/projects": {} "/api/projects/[id]": { "id": string; } + "/api/projects/[id]/workflow": { "id": string; } "/checkout": {} "/dashboard": {} "/features": {} diff --git a/.next/dev/types/validator.ts b/.next/dev/types/validator.ts index b54d7e1..64994ac 100644 --- a/.next/dev/types/validator.ts +++ b/.next/dev/types/validator.ts @@ -263,6 +263,15 @@ type RouteHandlerConfig> = Specific + const handler = {} as typeof import("../../../src/app/api/projects/[id]/workflow/route.js") + type __Check = __IsExpected + // @ts-ignore + type __Unused = __Check +} + // Validate ../../../src/app/api/projects/route.ts { type __IsExpected> = Specific diff --git a/.next/fallback-build-manifest.json b/.next/fallback-build-manifest.json index 6bc1696..a6fa6d9 100644 --- a/.next/fallback-build-manifest.json +++ b/.next/fallback-build-manifest.json @@ -5,8 +5,8 @@ "devFiles": [], "polyfillFiles": [], "lowPriorityFiles": [ - "static/msXsDwtlDxhrnfeF2dg3H/_ssgManifest.js", - "static/msXsDwtlDxhrnfeF2dg3H/_buildManifest.js" + "static/F__YtZpml5C5L1OF5iRU8/_ssgManifest.js", + "static/F__YtZpml5C5L1OF5iRU8/_buildManifest.js" ], "rootMainFiles": [] } \ No newline at end of file diff --git a/.next/server/app/_global-error.html b/.next/server/app/_global-error.html index 59b646e..b046198 100644 --- a/.next/server/app/_global-error.html +++ b/.next/server/app/_global-error.html @@ -1,2 +1,2 @@ -500: Internal Server Error.

500

Internal Server Error.

\ No newline at end of file +500: Internal Server Error.

500

Internal Server Error.

\ No newline at end of file diff --git a/.next/server/app/_global-error.rsc b/.next/server/app/_global-error.rsc index cc01b48..9dde412 100644 --- a/.next/server/app/_global-error.rsc +++ b/.next/server/app/_global-error.rsc @@ -6,7 +6,7 @@ 7:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] 9:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] b:I[45235,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/0d48399cd7665c53.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/0d48399cd7665c53.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true} 8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 6:null a:[] diff --git a/.next/server/app/_global-error.segments/__PAGE__.segment.rsc b/.next/server/app/_global-error.segments/__PAGE__.segment.rsc index 6e8c7d9..da95a86 100644 --- a/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +++ b/.next/server/app/_global-error.segments/__PAGE__.segment.rsc @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" 2:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"OutletBoundary"] 3:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/0d48399cd7665c53.js","async":true}]],["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/0d48399cd7665c53.js","async":true}]],["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} 4:null diff --git a/.next/server/app/_global-error.segments/_full.segment.rsc b/.next/server/app/_global-error.segments/_full.segment.rsc index cc01b48..9dde412 100644 --- a/.next/server/app/_global-error.segments/_full.segment.rsc +++ b/.next/server/app/_global-error.segments/_full.segment.rsc @@ -6,7 +6,7 @@ 7:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] 9:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] b:I[45235,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/0d48399cd7665c53.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/0d48399cd7665c53.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true} 8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 6:null a:[] diff --git a/.next/server/app/_global-error.segments/_head.segment.rsc b/.next/server/app/_global-error.segments/_head.segment.rsc index 0493a7f..1c1f2f0 100644 --- a/.next/server/app/_global-error.segments/_head.segment.rsc +++ b/.next/server/app/_global-error.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] 3:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/_global-error.segments/_index.segment.rsc b/.next/server/app/_global-error.segments/_index.segment.rsc index 7c69a3b..c4a742f 100644 --- a/.next/server/app/_global-error.segments/_index.segment.rsc +++ b/.next/server/app/_global-error.segments/_index.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 3:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/_global-error.segments/_tree.segment.rsc b/.next/server/app/_global-error.segments/_tree.segment.rsc index 5324eba..076f34f 100644 --- a/.next/server/app/_global-error.segments/_tree.segment.rsc +++ b/.next/server/app/_global-error.segments/_tree.segment.rsc @@ -1 +1 @@ -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false},"staleTime":300} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false},"staleTime":300} diff --git a/.next/server/app/_not-found.html b/.next/server/app/_not-found.html index d5048db..1ca0aaa 100644 --- a/.next/server/app/_not-found.html +++ b/.next/server/app/_not-found.html @@ -1 +1 @@ -404: This page could not be found.PlumeIA - Éditeur Intelligent

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.PlumeIA - Éditeur Intelligent

404

This page could not be found.

\ No newline at end of file diff --git a/.next/server/app/_not-found.rsc b/.next/server/app/_not-found.rsc index f85c007..d15521f 100644 --- a/.next/server/app/_not-found.rsc +++ b/.next/server/app/_not-found.rsc @@ -8,7 +8,7 @@ a:I[35523,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] c:I[45235,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0d48399cd7665c53.js"],"default"] :HL["/_next/static/chunks/02e8536809396536.css","style"] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0d48399cd7665c53.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$6",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c","$undefined"],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0d48399cd7665c53.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$6",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c","$undefined"],"S":true} 9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 7:null b:[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]] diff --git a/.next/server/app/_not-found.segments/_full.segment.rsc b/.next/server/app/_not-found.segments/_full.segment.rsc index f85c007..d15521f 100644 --- a/.next/server/app/_not-found.segments/_full.segment.rsc +++ b/.next/server/app/_not-found.segments/_full.segment.rsc @@ -8,7 +8,7 @@ a:I[35523,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] c:I[45235,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0d48399cd7665c53.js"],"default"] :HL["/_next/static/chunks/02e8536809396536.css","style"] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0d48399cd7665c53.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$6",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c","$undefined"],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0d48399cd7665c53.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$6",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c","$undefined"],"S":true} 9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 7:null b:[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]] diff --git a/.next/server/app/_not-found.segments/_head.segment.rsc b/.next/server/app/_not-found.segments/_head.segment.rsc index 547f92e..e2001d7 100644 --- a/.next/server/app/_not-found.segments/_head.segment.rsc +++ b/.next/server/app/_not-found.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[35523,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] 3:I[35523,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/_not-found.segments/_index.segment.rsc b/.next/server/app/_not-found.segments/_index.segment.rsc index 522d021..e7c752c 100644 --- a/.next/server/app/_not-found.segments/_index.segment.rsc +++ b/.next/server/app/_not-found.segments/_index.segment.rsc @@ -3,4 +3,4 @@ 3:I[62025,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0d48399cd7665c53.js"],"default"] 4:I[61849,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0d48399cd7665c53.js"],"default"] :HL["/_next/static/chunks/02e8536809396536.css","style"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/0d48399cd7665c53.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/0d48399cd7665c53.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/_not-found.segments/_not-found.segment.rsc b/.next/server/app/_not-found.segments/_not-found.segment.rsc index ad99607..647c4ff 100644 --- a/.next/server/app/_not-found.segments/_not-found.segment.rsc +++ b/.next/server/app/_not-found.segments/_not-found.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[62025,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0d48399cd7665c53.js"],"default"] 3:I[61849,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0d48399cd7665c53.js"],"default"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc b/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc index 6ea3557..77caa52 100644 --- a/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +++ b/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" 2:I[35523,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0d48399cd7665c53.js"],"OutletBoundary"] 3:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} 4:null diff --git a/.next/server/app/_not-found.segments/_tree.segment.rsc b/.next/server/app/_not-found.segments/_tree.segment.rsc index b98c72e..4a9014f 100644 --- a/.next/server/app/_not-found.segments/_tree.segment.rsc +++ b/.next/server/app/_not-found.segments/_tree.segment.rsc @@ -1,2 +1,2 @@ :HL["/_next/static/chunks/02e8536809396536.css","style"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"/_not-found","paramType":null,"paramKey":"/_not-found","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"/_not-found","paramType":null,"paramKey":"/_not-found","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/.next/server/app/checkout.html b/.next/server/app/checkout.html index ee9f455..5085b4b 100644 --- a/.next/server/app/checkout.html +++ b/.next/server/app/checkout.html @@ -1 +1 @@ -PlumeIA - Éditeur Intelligent

Commande

Auteur Pro12.00€
TVA (20%)2.40€
Total14.40€

Paiement Sécurisé

Traitement chiffré SSL 256-bits
\ No newline at end of file +PlumeIA - Éditeur Intelligent

Commande

Auteur Pro12.00€
TVA (20%)2.40€
Total14.40€

Paiement Sécurisé

Traitement chiffré SSL 256-bits
\ No newline at end of file diff --git a/.next/server/app/checkout.rsc b/.next/server/app/checkout.rsc index b66b443..7e4a6fc 100644 --- a/.next/server/app/checkout.rsc +++ b/.next/server/app/checkout.rsc @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","checkout"],"q":"","i":false,"f":[[["",{"children":["checkout",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/26b64173345909cf.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","checkout"],"q":"","i":false,"f":[[["",{"children":["checkout",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/26b64173345909cf.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/checkout.segments/_full.segment.rsc b/.next/server/app/checkout.segments/_full.segment.rsc index b66b443..7e4a6fc 100644 --- a/.next/server/app/checkout.segments/_full.segment.rsc +++ b/.next/server/app/checkout.segments/_full.segment.rsc @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","checkout"],"q":"","i":false,"f":[[["",{"children":["checkout",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/26b64173345909cf.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","checkout"],"q":"","i":false,"f":[[["",{"children":["checkout",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/26b64173345909cf.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/checkout.segments/_head.segment.rsc b/.next/server/app/checkout.segments/_head.segment.rsc index edf78ca..9df94be 100644 --- a/.next/server/app/checkout.segments/_head.segment.rsc +++ b/.next/server/app/checkout.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] 3:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/checkout.segments/_index.segment.rsc b/.next/server/app/checkout.segments/_index.segment.rsc index 3524f5b..832f14c 100644 --- a/.next/server/app/checkout.segments/_index.segment.rsc +++ b/.next/server/app/checkout.segments/_index.segment.rsc @@ -3,4 +3,4 @@ 3:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 4:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] :HL["/_next/static/chunks/02e8536809396536.css","style"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/checkout.segments/_tree.segment.rsc b/.next/server/app/checkout.segments/_tree.segment.rsc index 5911c23..facda01 100644 --- a/.next/server/app/checkout.segments/_tree.segment.rsc +++ b/.next/server/app/checkout.segments/_tree.segment.rsc @@ -1,4 +1,4 @@ :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"checkout","paramType":null,"paramKey":"checkout","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"checkout","paramType":null,"paramKey":"checkout","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/.next/server/app/checkout.segments/checkout.segment.rsc b/.next/server/app/checkout.segments/checkout.segment.rsc index 7c69a3b..c4a742f 100644 --- a/.next/server/app/checkout.segments/checkout.segment.rsc +++ b/.next/server/app/checkout.segments/checkout.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 3:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/checkout.segments/checkout/__PAGE__.segment.rsc b/.next/server/app/checkout.segments/checkout/__PAGE__.segment.rsc index 7fdee59..39cff0c 100644 --- a/.next/server/app/checkout.segments/checkout/__PAGE__.segment.rsc +++ b/.next/server/app/checkout.segments/checkout/__PAGE__.segment.rsc @@ -3,7 +3,7 @@ 3:I[24911,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/26b64173345909cf.js"],"default"] 6:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"OutletBoundary"] 7:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/26b64173345909cf.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/26b64173345909cf.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} 4:{} 5:"$0:rsc:props:children:0:props:serverProvidedParams:params" 8:null diff --git a/.next/server/app/checkout/page.js.nft.json b/.next/server/app/checkout/page.js.nft.json index a361387..08ac2f0 100644 --- a/.next/server/app/checkout/page.js.nft.json +++ b/.next/server/app/checkout/page.js.nft.json @@ -1 +1 @@ -{"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../chunks/ssr/549ce_00782eb5._.js","../../chunks/ssr/549ce_next_dist_470effa2._.js","../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../chunks/ssr/80b94_00 - projet_plumeia__next-internal_server_app_checkout_page_actions_aa638dc6.js","../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../chunks/ssr/Documents_00 - projet_plumeia_a47a1c37._.js","../../chunks/ssr/[root-of-the-server]__0233288c._.js","../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../chunks/ssr/[root-of-the-server]__3bac9c52._.js","../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../chunks/ssr/[turbopack]_runtime.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file +{"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../chunks/ssr/549ce_00782eb5._.js","../../chunks/ssr/549ce_next_dist_470effa2._.js","../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../chunks/ssr/80b94_00 - projet_plumeia__next-internal_server_app_checkout_page_actions_aa638dc6.js","../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../chunks/ssr/Documents_00 - projet_plumeia_a47a1c37._.js","../../chunks/ssr/[root-of-the-server]__0233288c._.js","../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../chunks/ssr/[root-of-the-server]__93fbf849._.js","../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../chunks/ssr/[turbopack]_runtime.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/.next/server/app/checkout/page_client-reference-manifest.js b/.next/server/app/checkout/page_client-reference-manifest.js index b5419dd..1925f39 100644 --- a/.next/server/app/checkout/page_client-reference-manifest.js +++ b/.next/server/app/checkout/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/checkout/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/checkout/page.tsx ":{"id":24911,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/26b64173345909cf.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/checkout/page.tsx":{"id":24911,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/26b64173345909cf.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"24911":{"*":{"id":33045,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__3bac9c52._.js","server/chunks/ssr/549ce_00782eb5._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"24911":{"*":{"id":25331,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/checkout/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/checkout/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/26b64173345909cf.js"]}} +globalThis.__RSC_MANIFEST["/checkout/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/checkout/page.tsx ":{"id":24911,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/26b64173345909cf.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/checkout/page.tsx":{"id":24911,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/26b64173345909cf.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"24911":{"*":{"id":33045,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__93fbf849._.js","server/chunks/ssr/549ce_00782eb5._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"24911":{"*":{"id":25331,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/checkout/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/checkout/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/26b64173345909cf.js"]}} diff --git a/.next/server/app/dashboard.html b/.next/server/app/dashboard.html index fa78f76..d62eeb7 100644 --- a/.next/server/app/dashboard.html +++ b/.next/server/app/dashboard.html @@ -1 +1 @@ -PlumeIA - Éditeur Intelligent
PlumeIA
\ No newline at end of file +PlumeIA - Éditeur Intelligent
PlumeIA
\ No newline at end of file diff --git a/.next/server/app/dashboard.rsc b/.next/server/app/dashboard.rsc index bca5acd..7e0a33e 100644 --- a/.next/server/app/dashboard.rsc +++ b/.next/server/app/dashboard.rsc @@ -3,7 +3,7 @@ 3:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 4:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 5:I[74697,["/_next/static/chunks/0d48399cd7665c53.js"],"ClientPageRoot"] -6:I[23439,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/070a78325e29fc80.js"],"default"] +6:I[23439,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/aa7417042f808088.js"],"default"] 9:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"OutletBoundary"] a:"$Sreact.suspense" c:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","dashboard"],"q":"","i":false,"f":[[["",{"children":["dashboard",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/070a78325e29fc80.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","dashboard"],"q":"","i":false,"f":[[["",{"children":["dashboard",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/aa7417042f808088.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/dashboard.segments/_full.segment.rsc b/.next/server/app/dashboard.segments/_full.segment.rsc index bca5acd..7e0a33e 100644 --- a/.next/server/app/dashboard.segments/_full.segment.rsc +++ b/.next/server/app/dashboard.segments/_full.segment.rsc @@ -3,7 +3,7 @@ 3:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 4:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 5:I[74697,["/_next/static/chunks/0d48399cd7665c53.js"],"ClientPageRoot"] -6:I[23439,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/070a78325e29fc80.js"],"default"] +6:I[23439,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/aa7417042f808088.js"],"default"] 9:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"OutletBoundary"] a:"$Sreact.suspense" c:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","dashboard"],"q":"","i":false,"f":[[["",{"children":["dashboard",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/070a78325e29fc80.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","dashboard"],"q":"","i":false,"f":[[["",{"children":["dashboard",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/aa7417042f808088.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/dashboard.segments/_head.segment.rsc b/.next/server/app/dashboard.segments/_head.segment.rsc index edf78ca..9df94be 100644 --- a/.next/server/app/dashboard.segments/_head.segment.rsc +++ b/.next/server/app/dashboard.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] 3:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/dashboard.segments/_index.segment.rsc b/.next/server/app/dashboard.segments/_index.segment.rsc index 3524f5b..832f14c 100644 --- a/.next/server/app/dashboard.segments/_index.segment.rsc +++ b/.next/server/app/dashboard.segments/_index.segment.rsc @@ -3,4 +3,4 @@ 3:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 4:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] :HL["/_next/static/chunks/02e8536809396536.css","style"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/dashboard.segments/_tree.segment.rsc b/.next/server/app/dashboard.segments/_tree.segment.rsc index b59726c..17b0a5e 100644 --- a/.next/server/app/dashboard.segments/_tree.segment.rsc +++ b/.next/server/app/dashboard.segments/_tree.segment.rsc @@ -1,4 +1,4 @@ :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"dashboard","paramType":null,"paramKey":"dashboard","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"dashboard","paramType":null,"paramKey":"dashboard","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/.next/server/app/dashboard.segments/dashboard.segment.rsc b/.next/server/app/dashboard.segments/dashboard.segment.rsc index 7c69a3b..c4a742f 100644 --- a/.next/server/app/dashboard.segments/dashboard.segment.rsc +++ b/.next/server/app/dashboard.segments/dashboard.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 3:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/dashboard.segments/dashboard/__PAGE__.segment.rsc b/.next/server/app/dashboard.segments/dashboard/__PAGE__.segment.rsc index 34de490..73fbc77 100644 --- a/.next/server/app/dashboard.segments/dashboard/__PAGE__.segment.rsc +++ b/.next/server/app/dashboard.segments/dashboard/__PAGE__.segment.rsc @@ -1,9 +1,9 @@ 1:"$Sreact.fragment" 2:I[74697,["/_next/static/chunks/0d48399cd7665c53.js"],"ClientPageRoot"] -3:I[23439,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/070a78325e29fc80.js"],"default"] +3:I[23439,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/aa7417042f808088.js"],"default"] 6:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"OutletBoundary"] 7:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/070a78325e29fc80.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/aa7417042f808088.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} 4:{} 5:"$0:rsc:props:children:0:props:serverProvidedParams:params" 8:null diff --git a/.next/server/app/dashboard/page.js.nft.json b/.next/server/app/dashboard/page.js.nft.json index ff90207..e43322f 100644 --- a/.next/server/app/dashboard/page.js.nft.json +++ b/.next/server/app/dashboard/page.js.nft.json @@ -1 +1 @@ -{"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../chunks/ssr/549ce_00782eb5._.js","../../chunks/ssr/549ce_next_dist_470effa2._.js","../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../chunks/ssr/80b94_00 - projet_plumeia__next-internal_server_app_dashboard_page_actions_3551a95b.js","../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../chunks/ssr/Documents_00 - projet_plumeia_9b3d7672._.js","../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../chunks/ssr/[root-of-the-server]__dfe2f44e._.js","../../chunks/ssr/[root-of-the-server]__ed066274._.js","../../chunks/ssr/[turbopack]_runtime.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file +{"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../chunks/ssr/549ce_00782eb5._.js","../../chunks/ssr/549ce_next_dist_470effa2._.js","../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../chunks/ssr/80b94_00 - projet_plumeia__next-internal_server_app_dashboard_page_actions_3551a95b.js","../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../chunks/ssr/Documents_00 - projet_plumeia_9b3d7672._.js","../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../chunks/ssr/[root-of-the-server]__330afc62._.js","../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../chunks/ssr/[root-of-the-server]__ed066274._.js","../../chunks/ssr/[turbopack]_runtime.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/.next/server/app/dashboard/page_client-reference-manifest.js b/.next/server/app/dashboard/page_client-reference-manifest.js index 2475a00..be2a728 100644 --- a/.next/server/app/dashboard/page_client-reference-manifest.js +++ b/.next/server/app/dashboard/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/dashboard/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx ":{"id":23439,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/070a78325e29fc80.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx":{"id":23439,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/070a78325e29fc80.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"23439":{"*":{"id":51780,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__dfe2f44e._.js","server/chunks/ssr/549ce_00782eb5._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"23439":{"*":{"id":68857,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/070a78325e29fc80.js"]}} +globalThis.__RSC_MANIFEST["/dashboard/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx ":{"id":23439,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/aa7417042f808088.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx":{"id":23439,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/aa7417042f808088.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"23439":{"*":{"id":51780,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__330afc62._.js","server/chunks/ssr/549ce_00782eb5._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"23439":{"*":{"id":68857,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/aa7417042f808088.js"]}} diff --git a/.next/server/app/features.html b/.next/server/app/features.html index 0b3cf23..4b63583 100644 --- a/.next/server/app/features.html +++ b/.next/server/app/features.html @@ -1 +1 @@ -PlumeIA - Éditeur Intelligent

Un univers d'outils pour votre créativité.

Assistant IA Co-Auteur

Générez des paragraphes, brainstormez des idées et demandez conseil à une IA qui connaît votre univers.

Bible du Monde Vivante

Gérez vos personnages, lieux et objets. L'IA les reconnaît et garde une cohérence absolue.

Story Workflow

Visualisez votre intrigue sous forme de nœuds et gérez les embranchements de votre récit.

Boîte à Idées Kanban

Notez vos idées fugaces et transformez-les en chapitres quand vous êtes prêt.

Mise en page Pro

Exportez au format PDF, Word ou EPUB avec une mise en page soignée et automatique.

Éditeur Riche

Un traitement de texte complet avec mode focus et historique des modifications IA.

\ No newline at end of file +PlumeIA - Éditeur Intelligent

Un univers d'outils pour votre créativité.

Assistant IA Co-Auteur

Générez des paragraphes, brainstormez des idées et demandez conseil à une IA qui connaît votre univers.

Bible du Monde Vivante

Gérez vos personnages, lieux et objets. L'IA les reconnaît et garde une cohérence absolue.

Story Workflow

Visualisez votre intrigue sous forme de nœuds et gérez les embranchements de votre récit.

Boîte à Idées Kanban

Notez vos idées fugaces et transformez-les en chapitres quand vous êtes prêt.

Mise en page Pro

Exportez au format PDF, Word ou EPUB avec une mise en page soignée et automatique.

Éditeur Riche

Un traitement de texte complet avec mode focus et historique des modifications IA.

\ No newline at end of file diff --git a/.next/server/app/features.rsc b/.next/server/app/features.rsc index f217209..3490ade 100644 --- a/.next/server/app/features.rsc +++ b/.next/server/app/features.rsc @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","features"],"q":"","i":false,"f":[[["",{"children":["features",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/1a59817cc31dbd7f.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","features"],"q":"","i":false,"f":[[["",{"children":["features",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/1a59817cc31dbd7f.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/features.segments/_full.segment.rsc b/.next/server/app/features.segments/_full.segment.rsc index f217209..3490ade 100644 --- a/.next/server/app/features.segments/_full.segment.rsc +++ b/.next/server/app/features.segments/_full.segment.rsc @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","features"],"q":"","i":false,"f":[[["",{"children":["features",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/1a59817cc31dbd7f.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","features"],"q":"","i":false,"f":[[["",{"children":["features",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/1a59817cc31dbd7f.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/features.segments/_head.segment.rsc b/.next/server/app/features.segments/_head.segment.rsc index edf78ca..9df94be 100644 --- a/.next/server/app/features.segments/_head.segment.rsc +++ b/.next/server/app/features.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] 3:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/features.segments/_index.segment.rsc b/.next/server/app/features.segments/_index.segment.rsc index 3524f5b..832f14c 100644 --- a/.next/server/app/features.segments/_index.segment.rsc +++ b/.next/server/app/features.segments/_index.segment.rsc @@ -3,4 +3,4 @@ 3:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 4:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] :HL["/_next/static/chunks/02e8536809396536.css","style"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/features.segments/_tree.segment.rsc b/.next/server/app/features.segments/_tree.segment.rsc index 2b77733..e478a10 100644 --- a/.next/server/app/features.segments/_tree.segment.rsc +++ b/.next/server/app/features.segments/_tree.segment.rsc @@ -1,4 +1,4 @@ :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"features","paramType":null,"paramKey":"features","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"features","paramType":null,"paramKey":"features","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/.next/server/app/features.segments/features.segment.rsc b/.next/server/app/features.segments/features.segment.rsc index 7c69a3b..c4a742f 100644 --- a/.next/server/app/features.segments/features.segment.rsc +++ b/.next/server/app/features.segments/features.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 3:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/features.segments/features/__PAGE__.segment.rsc b/.next/server/app/features.segments/features/__PAGE__.segment.rsc index f9c4e97..8594040 100644 --- a/.next/server/app/features.segments/features/__PAGE__.segment.rsc +++ b/.next/server/app/features.segments/features/__PAGE__.segment.rsc @@ -3,7 +3,7 @@ 3:I[18076,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/1a59817cc31dbd7f.js"],"default"] 6:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"OutletBoundary"] 7:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/1a59817cc31dbd7f.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/1a59817cc31dbd7f.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} 4:{} 5:"$0:rsc:props:children:0:props:serverProvidedParams:params" 8:null diff --git a/.next/server/app/features/page.js.nft.json b/.next/server/app/features/page.js.nft.json index 59643ca..b2cf792 100644 --- a/.next/server/app/features/page.js.nft.json +++ b/.next/server/app/features/page.js.nft.json @@ -1 +1 @@ -{"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../chunks/ssr/549ce_00782eb5._.js","../../chunks/ssr/549ce_next_dist_470effa2._.js","../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../chunks/ssr/80b94_00 - projet_plumeia__next-internal_server_app_features_page_actions_18fb0c54.js","../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../chunks/ssr/Documents_00 - projet_plumeia_a0a73c03._.js","../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../chunks/ssr/[root-of-the-server]__28fa855e._.js","../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../chunks/ssr/[root-of-the-server]__635b48fc._.js","../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../chunks/ssr/[turbopack]_runtime.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file +{"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../chunks/ssr/549ce_00782eb5._.js","../../chunks/ssr/549ce_next_dist_470effa2._.js","../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../chunks/ssr/80b94_00 - projet_plumeia__next-internal_server_app_features_page_actions_18fb0c54.js","../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../chunks/ssr/Documents_00 - projet_plumeia_a0a73c03._.js","../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../chunks/ssr/[root-of-the-server]__26d3d76a._.js","../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../chunks/ssr/[root-of-the-server]__635b48fc._.js","../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../chunks/ssr/[turbopack]_runtime.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/.next/server/app/features/page_client-reference-manifest.js b/.next/server/app/features/page_client-reference-manifest.js index 0ad3f20..c931092 100644 --- a/.next/server/app/features/page_client-reference-manifest.js +++ b/.next/server/app/features/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/features/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/features/page.tsx ":{"id":18076,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/1a59817cc31dbd7f.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/features/page.tsx":{"id":18076,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/1a59817cc31dbd7f.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"18076":{"*":{"id":34437,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__28fa855e._.js","server/chunks/ssr/549ce_00782eb5._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"18076":{"*":{"id":98033,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/features/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/features/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/1a59817cc31dbd7f.js"]}} +globalThis.__RSC_MANIFEST["/features/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/features/page.tsx ":{"id":18076,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/1a59817cc31dbd7f.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/features/page.tsx":{"id":18076,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/1a59817cc31dbd7f.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"18076":{"*":{"id":34437,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__26d3d76a._.js","server/chunks/ssr/549ce_00782eb5._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"18076":{"*":{"id":98033,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/features/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/features/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/1a59817cc31dbd7f.js"]}} diff --git a/.next/server/app/index.html b/.next/server/app/index.html index 6c03567..304e06c 100644 --- a/.next/server/app/index.html +++ b/.next/server/app/index.html @@ -1 +1 @@ -PlumeIA - Éditeur Intelligent
NOUVEAUTÉ : GÉNÉRATION DE BIBLE DU MONDE PAR IA

L'écriture d'un roman,
augmentée par l'IA.

PlumeIA est le premier éditeur intelligent qui comprend votre univers, vos personnages et votre style pour vous aider à franchir la page blanche.

Editor Preview

Utilisé par les auteurs de demain

FantasyMagWriter's HubL'ÉditeurNovelty
PlumeIA

© 2024 PlumeIA. Tous droits réservés.

\ No newline at end of file +PlumeIA - Éditeur Intelligent
NOUVEAUTÉ : GÉNÉRATION DE BIBLE DU MONDE PAR IA

L'écriture d'un roman,
augmentée par l'IA.

PlumeIA est le premier éditeur intelligent qui comprend votre univers, vos personnages et votre style pour vous aider à franchir la page blanche.

Editor Preview

Utilisé par les auteurs de demain

FantasyMagWriter's HubL'ÉditeurNovelty
PlumeIA

© 2024 PlumeIA. Tous droits réservés.

\ No newline at end of file diff --git a/.next/server/app/index.rsc b/.next/server/app/index.rsc index 4e9a415..3ed430f 100644 --- a/.next/server/app/index.rsc +++ b/.next/server/app/index.rsc @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/b882acfc29dfc10d.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/b882acfc29dfc10d.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/index.segments/__PAGE__.segment.rsc b/.next/server/app/index.segments/__PAGE__.segment.rsc index b77cbfe..7580369 100644 --- a/.next/server/app/index.segments/__PAGE__.segment.rsc +++ b/.next/server/app/index.segments/__PAGE__.segment.rsc @@ -3,7 +3,7 @@ 3:I[99473,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/b882acfc29dfc10d.js"],"default"] 6:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"OutletBoundary"] 7:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/b882acfc29dfc10d.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/b882acfc29dfc10d.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} 4:{} 5:"$0:rsc:props:children:0:props:serverProvidedParams:params" 8:null diff --git a/.next/server/app/index.segments/_full.segment.rsc b/.next/server/app/index.segments/_full.segment.rsc index 4e9a415..3ed430f 100644 --- a/.next/server/app/index.segments/_full.segment.rsc +++ b/.next/server/app/index.segments/_full.segment.rsc @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/b882acfc29dfc10d.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/b882acfc29dfc10d.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/index.segments/_head.segment.rsc b/.next/server/app/index.segments/_head.segment.rsc index edf78ca..9df94be 100644 --- a/.next/server/app/index.segments/_head.segment.rsc +++ b/.next/server/app/index.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] 3:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/index.segments/_index.segment.rsc b/.next/server/app/index.segments/_index.segment.rsc index 3524f5b..832f14c 100644 --- a/.next/server/app/index.segments/_index.segment.rsc +++ b/.next/server/app/index.segments/_index.segment.rsc @@ -3,4 +3,4 @@ 3:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 4:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] :HL["/_next/static/chunks/02e8536809396536.css","style"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/index.segments/_tree.segment.rsc b/.next/server/app/index.segments/_tree.segment.rsc index 41c4d6c..a692c48 100644 --- a/.next/server/app/index.segments/_tree.segment.rsc +++ b/.next/server/app/index.segments/_tree.segment.rsc @@ -1,4 +1,4 @@ :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":true},"staleTime":300} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/.next/server/app/login.html b/.next/server/app/login.html index 4e8f875..5736443 100644 --- a/.next/server/app/login.html +++ b/.next/server/app/login.html @@ -1 +1 @@ -PlumeIA - Éditeur Intelligent

Connexion

Bienvenue ! Connectez-vous à votre compte

Pas encore de compte ?
\ No newline at end of file +PlumeIA - Éditeur Intelligent

Connexion

Bienvenue ! Connectez-vous à votre compte

Pas encore de compte ?
\ No newline at end of file diff --git a/.next/server/app/login.rsc b/.next/server/app/login.rsc index 3c508a4..3293a61 100644 --- a/.next/server/app/login.rsc +++ b/.next/server/app/login.rsc @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","login"],"q":"","i":false,"f":[[["",{"children":["login",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/7dee21f4f59da1b4.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","login"],"q":"","i":false,"f":[[["",{"children":["login",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/7dee21f4f59da1b4.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/login.segments/_full.segment.rsc b/.next/server/app/login.segments/_full.segment.rsc index 3c508a4..3293a61 100644 --- a/.next/server/app/login.segments/_full.segment.rsc +++ b/.next/server/app/login.segments/_full.segment.rsc @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","login"],"q":"","i":false,"f":[[["",{"children":["login",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/7dee21f4f59da1b4.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","login"],"q":"","i":false,"f":[[["",{"children":["login",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/7dee21f4f59da1b4.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/login.segments/_head.segment.rsc b/.next/server/app/login.segments/_head.segment.rsc index edf78ca..9df94be 100644 --- a/.next/server/app/login.segments/_head.segment.rsc +++ b/.next/server/app/login.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] 3:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/login.segments/_index.segment.rsc b/.next/server/app/login.segments/_index.segment.rsc index 3524f5b..832f14c 100644 --- a/.next/server/app/login.segments/_index.segment.rsc +++ b/.next/server/app/login.segments/_index.segment.rsc @@ -3,4 +3,4 @@ 3:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 4:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] :HL["/_next/static/chunks/02e8536809396536.css","style"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/login.segments/_tree.segment.rsc b/.next/server/app/login.segments/_tree.segment.rsc index da624ea..6bbc02c 100644 --- a/.next/server/app/login.segments/_tree.segment.rsc +++ b/.next/server/app/login.segments/_tree.segment.rsc @@ -1,4 +1,4 @@ :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"login","paramType":null,"paramKey":"login","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"login","paramType":null,"paramKey":"login","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/.next/server/app/login.segments/login.segment.rsc b/.next/server/app/login.segments/login.segment.rsc index 7c69a3b..c4a742f 100644 --- a/.next/server/app/login.segments/login.segment.rsc +++ b/.next/server/app/login.segments/login.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 3:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/login.segments/login/__PAGE__.segment.rsc b/.next/server/app/login.segments/login/__PAGE__.segment.rsc index 855c407..1bb0fa0 100644 --- a/.next/server/app/login.segments/login/__PAGE__.segment.rsc +++ b/.next/server/app/login.segments/login/__PAGE__.segment.rsc @@ -3,7 +3,7 @@ 3:I[37143,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7dee21f4f59da1b4.js"],"default"] 6:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"OutletBoundary"] 7:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/7dee21f4f59da1b4.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/7dee21f4f59da1b4.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} 4:{} 5:"$0:rsc:props:children:0:props:serverProvidedParams:params" 8:null diff --git a/.next/server/app/login/page.js.nft.json b/.next/server/app/login/page.js.nft.json index daff6c2..8bfdbc0 100644 --- a/.next/server/app/login/page.js.nft.json +++ b/.next/server/app/login/page.js.nft.json @@ -1 +1 @@ -{"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../chunks/ssr/549ce_00782eb5._.js","../../chunks/ssr/549ce_next_dist_470effa2._.js","../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../chunks/ssr/80b94_00 - projet_plumeia__next-internal_server_app_login_page_actions_e5748603.js","../../chunks/ssr/Documents_00 - projet_plumeia_05d2851f._.js","../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../chunks/ssr/[root-of-the-server]__d13a16ad._.js","../../chunks/ssr/[root-of-the-server]__f4bfd4af._.js","../../chunks/ssr/[turbopack]_runtime.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file +{"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../chunks/ssr/549ce_00782eb5._.js","../../chunks/ssr/549ce_next_dist_470effa2._.js","../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../chunks/ssr/80b94_00 - projet_plumeia__next-internal_server_app_login_page_actions_e5748603.js","../../chunks/ssr/Documents_00 - projet_plumeia_05d2851f._.js","../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../chunks/ssr/[root-of-the-server]__d13a16ad._.js","../../chunks/ssr/[root-of-the-server]__d76143b2._.js","../../chunks/ssr/[turbopack]_runtime.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/.next/server/app/login/page_client-reference-manifest.js b/.next/server/app/login/page_client-reference-manifest.js index e1ed0cc..d99e2d0 100644 --- a/.next/server/app/login/page_client-reference-manifest.js +++ b/.next/server/app/login/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/login/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx ":{"id":37143,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7dee21f4f59da1b4.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx":{"id":37143,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7dee21f4f59da1b4.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"37143":{"*":{"id":67356,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__f4bfd4af._.js","server/chunks/ssr/549ce_00782eb5._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"37143":{"*":{"id":40702,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/login/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/login/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/7dee21f4f59da1b4.js"]}} +globalThis.__RSC_MANIFEST["/login/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx ":{"id":37143,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7dee21f4f59da1b4.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx":{"id":37143,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7dee21f4f59da1b4.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"37143":{"*":{"id":67356,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__d76143b2._.js","server/chunks/ssr/549ce_00782eb5._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"37143":{"*":{"id":40702,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/login/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/login/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/7dee21f4f59da1b4.js"]}} diff --git a/.next/server/app/pricing.html b/.next/server/app/pricing.html index 2e6015f..b09a47c 100644 --- a/.next/server/app/pricing.html +++ b/.next/server/app/pricing.html @@ -1 +1 @@ -PlumeIA - Éditeur Intelligent

Choisissez votre destin d'écrivain.

Passez au plan supérieur pour libérer toute la puissance de l'IA.

Gratuit

0€/mois

Idéal pour découvrir PlumeIA.

  • 10 actions IA / mois
  • 1 projet actif
  • Bible du monde simple

Auteur Pro

12€/mois

Pour les écrivains sérieux.

  • 500 actions IA / mois
  • Projets illimités
  • Export Word & EPUB
  • Support prioritaire

Maître Plume

29€/mois

Le summum de l'écriture IA.

  • Actions IA illimitées
  • Accès Gemini 3 Pro
  • Bible du monde avancée
  • Outils de révision avancés
\ No newline at end of file +PlumeIA - Éditeur Intelligent

Choisissez votre destin d'écrivain.

Passez au plan supérieur pour libérer toute la puissance de l'IA.

Gratuit

0€/mois

Idéal pour découvrir PlumeIA.

  • 10 actions IA / mois
  • 1 projet actif
  • Bible du monde simple

Auteur Pro

12€/mois

Pour les écrivains sérieux.

  • 500 actions IA / mois
  • Projets illimités
  • Export Word & EPUB
  • Support prioritaire

Maître Plume

29€/mois

Le summum de l'écriture IA.

  • Actions IA illimitées
  • Accès Gemini 3 Pro
  • Bible du monde avancée
  • Outils de révision avancés
\ No newline at end of file diff --git a/.next/server/app/pricing.rsc b/.next/server/app/pricing.rsc index 47f03ce..2ead520 100644 --- a/.next/server/app/pricing.rsc +++ b/.next/server/app/pricing.rsc @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","pricing"],"q":"","i":false,"f":[[["",{"children":["pricing",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/14e10270b5f76fa2.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","pricing"],"q":"","i":false,"f":[[["",{"children":["pricing",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/14e10270b5f76fa2.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/pricing.segments/_full.segment.rsc b/.next/server/app/pricing.segments/_full.segment.rsc index 47f03ce..2ead520 100644 --- a/.next/server/app/pricing.segments/_full.segment.rsc +++ b/.next/server/app/pricing.segments/_full.segment.rsc @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","pricing"],"q":"","i":false,"f":[[["",{"children":["pricing",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/14e10270b5f76fa2.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","pricing"],"q":"","i":false,"f":[[["",{"children":["pricing",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/14e10270b5f76fa2.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/pricing.segments/_head.segment.rsc b/.next/server/app/pricing.segments/_head.segment.rsc index edf78ca..9df94be 100644 --- a/.next/server/app/pricing.segments/_head.segment.rsc +++ b/.next/server/app/pricing.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] 3:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/pricing.segments/_index.segment.rsc b/.next/server/app/pricing.segments/_index.segment.rsc index 3524f5b..832f14c 100644 --- a/.next/server/app/pricing.segments/_index.segment.rsc +++ b/.next/server/app/pricing.segments/_index.segment.rsc @@ -3,4 +3,4 @@ 3:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 4:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] :HL["/_next/static/chunks/02e8536809396536.css","style"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/pricing.segments/_tree.segment.rsc b/.next/server/app/pricing.segments/_tree.segment.rsc index 128015e..db1b275 100644 --- a/.next/server/app/pricing.segments/_tree.segment.rsc +++ b/.next/server/app/pricing.segments/_tree.segment.rsc @@ -1,4 +1,4 @@ :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"pricing","paramType":null,"paramKey":"pricing","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"pricing","paramType":null,"paramKey":"pricing","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/.next/server/app/pricing.segments/pricing.segment.rsc b/.next/server/app/pricing.segments/pricing.segment.rsc index 7c69a3b..c4a742f 100644 --- a/.next/server/app/pricing.segments/pricing.segment.rsc +++ b/.next/server/app/pricing.segments/pricing.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 3:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/pricing.segments/pricing/__PAGE__.segment.rsc b/.next/server/app/pricing.segments/pricing/__PAGE__.segment.rsc index f90fc78..6c1597e 100644 --- a/.next/server/app/pricing.segments/pricing/__PAGE__.segment.rsc +++ b/.next/server/app/pricing.segments/pricing/__PAGE__.segment.rsc @@ -3,7 +3,7 @@ 3:I[72150,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/14e10270b5f76fa2.js"],"default"] 6:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"OutletBoundary"] 7:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/14e10270b5f76fa2.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/14e10270b5f76fa2.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} 4:{} 5:"$0:rsc:props:children:0:props:serverProvidedParams:params" 8:null diff --git a/.next/server/app/profile.html b/.next/server/app/profile.html index 41e87e8..66e0ab6 100644 --- a/.next/server/app/profile.html +++ b/.next/server/app/profile.html @@ -1 +1 @@ -PlumeIA - Éditeur Intelligent \ No newline at end of file +PlumeIA - Éditeur Intelligent \ No newline at end of file diff --git a/.next/server/app/profile.rsc b/.next/server/app/profile.rsc index e41a389..717a365 100644 --- a/.next/server/app/profile.rsc +++ b/.next/server/app/profile.rsc @@ -3,7 +3,7 @@ 3:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 4:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 5:I[74697,["/_next/static/chunks/0d48399cd7665c53.js"],"ClientPageRoot"] -6:I[4248,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/6eddc7a29ea4b1ec.js"],"default"] +6:I[4248,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/d999d746f562d355.js"],"default"] 9:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"OutletBoundary"] a:"$Sreact.suspense" c:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","profile"],"q":"","i":false,"f":[[["",{"children":["profile",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/6eddc7a29ea4b1ec.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","profile"],"q":"","i":false,"f":[[["",{"children":["profile",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/d999d746f562d355.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/profile.segments/_full.segment.rsc b/.next/server/app/profile.segments/_full.segment.rsc index e41a389..717a365 100644 --- a/.next/server/app/profile.segments/_full.segment.rsc +++ b/.next/server/app/profile.segments/_full.segment.rsc @@ -3,7 +3,7 @@ 3:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 4:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 5:I[74697,["/_next/static/chunks/0d48399cd7665c53.js"],"ClientPageRoot"] -6:I[4248,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/6eddc7a29ea4b1ec.js"],"default"] +6:I[4248,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/d999d746f562d355.js"],"default"] 9:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"OutletBoundary"] a:"$Sreact.suspense" c:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","profile"],"q":"","i":false,"f":[[["",{"children":["profile",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/6eddc7a29ea4b1ec.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","profile"],"q":"","i":false,"f":[[["",{"children":["profile",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/d999d746f562d355.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/profile.segments/_head.segment.rsc b/.next/server/app/profile.segments/_head.segment.rsc index edf78ca..9df94be 100644 --- a/.next/server/app/profile.segments/_head.segment.rsc +++ b/.next/server/app/profile.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] 3:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/profile.segments/_index.segment.rsc b/.next/server/app/profile.segments/_index.segment.rsc index 3524f5b..832f14c 100644 --- a/.next/server/app/profile.segments/_index.segment.rsc +++ b/.next/server/app/profile.segments/_index.segment.rsc @@ -3,4 +3,4 @@ 3:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 4:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] :HL["/_next/static/chunks/02e8536809396536.css","style"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/profile.segments/_tree.segment.rsc b/.next/server/app/profile.segments/_tree.segment.rsc index 3822278..75164fa 100644 --- a/.next/server/app/profile.segments/_tree.segment.rsc +++ b/.next/server/app/profile.segments/_tree.segment.rsc @@ -1,4 +1,4 @@ :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"profile","paramType":null,"paramKey":"profile","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"profile","paramType":null,"paramKey":"profile","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/.next/server/app/profile.segments/profile.segment.rsc b/.next/server/app/profile.segments/profile.segment.rsc index 7c69a3b..c4a742f 100644 --- a/.next/server/app/profile.segments/profile.segment.rsc +++ b/.next/server/app/profile.segments/profile.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 3:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc b/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc index 8839b1f..408a8fa 100644 --- a/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +++ b/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc @@ -1,9 +1,9 @@ 1:"$Sreact.fragment" 2:I[74697,["/_next/static/chunks/0d48399cd7665c53.js"],"ClientPageRoot"] -3:I[4248,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/6eddc7a29ea4b1ec.js"],"default"] +3:I[4248,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/d999d746f562d355.js"],"default"] 6:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"OutletBoundary"] 7:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/6eddc7a29ea4b1ec.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/d999d746f562d355.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} 4:{} 5:"$0:rsc:props:children:0:props:serverProvidedParams:params" 8:null diff --git a/.next/server/app/profile/page.js.nft.json b/.next/server/app/profile/page.js.nft.json index fcf1e5a..33b3d37 100644 --- a/.next/server/app/profile/page.js.nft.json +++ b/.next/server/app/profile/page.js.nft.json @@ -1 +1 @@ -{"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../chunks/ssr/549ce_00782eb5._.js","../../chunks/ssr/549ce_next_dist_470effa2._.js","../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../chunks/ssr/80b94_00 - projet_plumeia__next-internal_server_app_profile_page_actions_dde55b35.js","../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../chunks/ssr/Documents_00 - projet_plumeia_7e493979._.js","../../chunks/ssr/[root-of-the-server]__0d77eb78._.js","../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../chunks/ssr/[root-of-the-server]__614a5f92._.js","../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../chunks/ssr/[turbopack]_runtime.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file +{"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../chunks/ssr/549ce_00782eb5._.js","../../chunks/ssr/549ce_next_dist_470effa2._.js","../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../chunks/ssr/80b94_00 - projet_plumeia__next-internal_server_app_profile_page_actions_dde55b35.js","../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../chunks/ssr/Documents_00 - projet_plumeia_7e493979._.js","../../chunks/ssr/[root-of-the-server]__0d77eb78._.js","../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../chunks/ssr/[root-of-the-server]__3d1ae521._.js","../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../chunks/ssr/[turbopack]_runtime.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/.next/server/app/profile/page_client-reference-manifest.js b/.next/server/app/profile/page_client-reference-manifest.js index 78f4baf..b5d2dd0 100644 --- a/.next/server/app/profile/page_client-reference-manifest.js +++ b/.next/server/app/profile/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/profile/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/profile/page.tsx ":{"id":4248,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/6eddc7a29ea4b1ec.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/profile/page.tsx":{"id":4248,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/6eddc7a29ea4b1ec.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"4248":{"*":{"id":98220,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__614a5f92._.js","server/chunks/ssr/549ce_00782eb5._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"4248":{"*":{"id":98532,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/profile/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/profile/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/6eddc7a29ea4b1ec.js"]}} +globalThis.__RSC_MANIFEST["/profile/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/profile/page.tsx ":{"id":4248,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/d999d746f562d355.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/profile/page.tsx":{"id":4248,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/d999d746f562d355.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"4248":{"*":{"id":98220,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__3d1ae521._.js","server/chunks/ssr/549ce_00782eb5._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"4248":{"*":{"id":98532,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/profile/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/profile/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/d999d746f562d355.js"]}} diff --git a/.next/server/app/project/[id]/ideas/page.js.nft.json b/.next/server/app/project/[id]/ideas/page.js.nft.json index 61a7b97..4f3b832 100644 --- a/.next/server/app/project/[id]/ideas/page.js.nft.json +++ b/.next/server/app/project/[id]/ideas/page.js.nft.json @@ -1 +1 @@ -{"version":1,"files":["../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../node_modules/next/package.json","../../../../chunks/ssr/549ce_00782eb5._.js","../../../../chunks/ssr/549ce_next_dist_470effa2._.js","../../../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_0aafbefe._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_834a77e3._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_c09de6f3._.js","../../../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../../../chunks/ssr/[root-of-the-server]__540aea7d._.js","../../../../chunks/ssr/[root-of-the-server]__54ebd377._.js","../../../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../../../chunks/ssr/[turbopack]_runtime.js","../../../../chunks/ssr/b79dd_plumeia__next-internal_server_app_project_[id]_ideas_page_actions_01ab8c20.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file +{"version":1,"files":["../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../node_modules/next/package.json","../../../../chunks/ssr/549ce_00782eb5._.js","../../../../chunks/ssr/549ce_next_dist_470effa2._.js","../../../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_0aafbefe._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_834a77e3._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_c09de6f3._.js","../../../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../../../chunks/ssr/[root-of-the-server]__54ebd377._.js","../../../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../../../chunks/ssr/[root-of-the-server]__87a657d3._.js","../../../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../../../chunks/ssr/[turbopack]_runtime.js","../../../../chunks/ssr/b79dd_plumeia__next-internal_server_app_project_[id]_ideas_page_actions_01ab8c20.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/.next/server/app/project/[id]/ideas/page_client-reference-manifest.js b/.next/server/app/project/[id]/ideas/page_client-reference-manifest.js index 28098f0..e7364d8 100644 --- a/.next/server/app/project/[id]/ideas/page_client-reference-manifest.js +++ b/.next/server/app/project/[id]/ideas/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/project/[id]/ideas/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx ":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/ideas/page.tsx ":{"id":89250,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js","/_next/static/chunks/fb9632df44fe5bfa.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/ideas/page.tsx":{"id":89250,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js","/_next/static/chunks/fb9632df44fe5bfa.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"34779":{"*":{"id":74007,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__540aea7d._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js"],"async":false}},"89250":{"*":{"id":71549,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__540aea7d._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","server/chunks/ssr/Documents_00 - projet_plumeia_834a77e3._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"34779":{"*":{"id":57119,"name":"*","chunks":[],"async":false}},"89250":{"*":{"id":3101,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/ideas/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":["static/chunks/ca38dfad29c437c1.js","static/chunks/7e431064c812a46a.js","static/chunks/243eedfdf0191d5a.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/ideas/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/7e431064c812a46a.js","static/chunks/243eedfdf0191d5a.js","static/chunks/fb9632df44fe5bfa.js"]}} +globalThis.__RSC_MANIFEST["/project/[id]/ideas/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx ":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/ideas/page.tsx ":{"id":89250,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js","/_next/static/chunks/c2f4290c04706c43.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/ideas/page.tsx":{"id":89250,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js","/_next/static/chunks/c2f4290c04706c43.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"34779":{"*":{"id":74007,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__87a657d3._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js"],"async":false}},"89250":{"*":{"id":71549,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__87a657d3._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","server/chunks/ssr/Documents_00 - projet_plumeia_834a77e3._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"34779":{"*":{"id":57119,"name":"*","chunks":[],"async":false}},"89250":{"*":{"id":3101,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/ideas/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":["static/chunks/ca38dfad29c437c1.js","static/chunks/c76d6f03f693a63d.js","static/chunks/2e1d4ab52d87fc3b.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/ideas/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/c76d6f03f693a63d.js","static/chunks/2e1d4ab52d87fc3b.js","static/chunks/c2f4290c04706c43.js"]}} diff --git a/.next/server/app/project/[id]/page.js.nft.json b/.next/server/app/project/[id]/page.js.nft.json index 654e20c..4b2b73f 100644 --- a/.next/server/app/project/[id]/page.js.nft.json +++ b/.next/server/app/project/[id]/page.js.nft.json @@ -1 +1 @@ -{"version":1,"files":["../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../node_modules/next/dist/lib/constants.js","../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../node_modules/next/dist/lib/is-error.js","../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../node_modules/next/package.json","../../../chunks/ssr/549ce_00782eb5._.js","../../../chunks/ssr/549ce_lucide-react_dist_esm_icons_35d6dd8e._.js","../../../chunks/ssr/549ce_next_dist_470effa2._.js","../../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../../chunks/ssr/Documents_00 - projet_plumeia_6744f8d6._.js","../../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_c09de6f3._.js","../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_page_tsx_7aa6a1c0._.js","../../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../../chunks/ssr/[root-of-the-server]__540aea7d._.js","../../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../../chunks/ssr/[root-of-the-server]__fe8a6881._.js","../../../chunks/ssr/[turbopack]_runtime.js","../../../chunks/ssr/b79dd_plumeia__next-internal_server_app_project_[id]_page_actions_6b8af4df.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file +{"version":1,"files":["../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../node_modules/next/dist/lib/constants.js","../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../node_modules/next/dist/lib/is-error.js","../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../node_modules/next/package.json","../../../chunks/ssr/549ce_00782eb5._.js","../../../chunks/ssr/549ce_lucide-react_dist_esm_icons_35d6dd8e._.js","../../../chunks/ssr/549ce_next_dist_470effa2._.js","../../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../../chunks/ssr/Documents_00 - projet_plumeia_6744f8d6._.js","../../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_c09de6f3._.js","../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_page_tsx_7aa6a1c0._.js","../../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../../chunks/ssr/[root-of-the-server]__87a657d3._.js","../../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../../chunks/ssr/[root-of-the-server]__fe8a6881._.js","../../../chunks/ssr/[turbopack]_runtime.js","../../../chunks/ssr/b79dd_plumeia__next-internal_server_app_project_[id]_page_actions_6b8af4df.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/.next/server/app/project/[id]/page_client-reference-manifest.js b/.next/server/app/project/[id]/page_client-reference-manifest.js index 570c71d..2148629 100644 --- a/.next/server/app/project/[id]/page_client-reference-manifest.js +++ b/.next/server/app/project/[id]/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/project/[id]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx ":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx ":{"id":81350,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js","/_next/static/chunks/baf4bf5c18ffa192.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx":{"id":81350,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js","/_next/static/chunks/baf4bf5c18ffa192.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"34779":{"*":{"id":74007,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__540aea7d._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js"],"async":false}},"81350":{"*":{"id":32791,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__540aea7d._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","server/chunks/ssr/549ce_lucide-react_dist_esm_icons_35d6dd8e._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_page_tsx_7aa6a1c0._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"34779":{"*":{"id":57119,"name":"*","chunks":[],"async":false}},"81350":{"*":{"id":71795,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":["static/chunks/ca38dfad29c437c1.js","static/chunks/7e431064c812a46a.js","static/chunks/243eedfdf0191d5a.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/7e431064c812a46a.js","static/chunks/243eedfdf0191d5a.js","static/chunks/baf4bf5c18ffa192.js"]}} +globalThis.__RSC_MANIFEST["/project/[id]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx ":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx ":{"id":81350,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js","/_next/static/chunks/d1fde94eaf7c0d4d.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx":{"id":81350,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js","/_next/static/chunks/d1fde94eaf7c0d4d.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"34779":{"*":{"id":74007,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__87a657d3._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js"],"async":false}},"81350":{"*":{"id":32791,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__87a657d3._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","server/chunks/ssr/549ce_lucide-react_dist_esm_icons_35d6dd8e._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_page_tsx_7aa6a1c0._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"34779":{"*":{"id":57119,"name":"*","chunks":[],"async":false}},"81350":{"*":{"id":71795,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":["static/chunks/ca38dfad29c437c1.js","static/chunks/c76d6f03f693a63d.js","static/chunks/2e1d4ab52d87fc3b.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/c76d6f03f693a63d.js","static/chunks/2e1d4ab52d87fc3b.js","static/chunks/d1fde94eaf7c0d4d.js"]}} diff --git a/.next/server/app/project/[id]/settings/page.js.nft.json b/.next/server/app/project/[id]/settings/page.js.nft.json index 0334a3b..5a49dc9 100644 --- a/.next/server/app/project/[id]/settings/page.js.nft.json +++ b/.next/server/app/project/[id]/settings/page.js.nft.json @@ -1 +1 @@ -{"version":1,"files":["../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../node_modules/next/package.json","../../../../chunks/ssr/549ce_00782eb5._.js","../../../../chunks/ssr/549ce_next_dist_470effa2._.js","../../../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_0e608513._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_73e30adc._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_c09de6f3._.js","../../../../chunks/ssr/[root-of-the-server]__08e21a6b._.js","../../../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../../../chunks/ssr/[root-of-the-server]__540aea7d._.js","../../../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../../../chunks/ssr/[turbopack]_runtime.js","../../../../chunks/ssr/b79dd_plumeia__next-internal_server_app_project_[id]_settings_page_actions_be2680b0.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file +{"version":1,"files":["../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../node_modules/next/package.json","../../../../chunks/ssr/549ce_00782eb5._.js","../../../../chunks/ssr/549ce_next_dist_470effa2._.js","../../../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_0e608513._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_73e30adc._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_c09de6f3._.js","../../../../chunks/ssr/[root-of-the-server]__08e21a6b._.js","../../../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../../../chunks/ssr/[root-of-the-server]__87a657d3._.js","../../../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../../../chunks/ssr/[turbopack]_runtime.js","../../../../chunks/ssr/b79dd_plumeia__next-internal_server_app_project_[id]_settings_page_actions_be2680b0.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/.next/server/app/project/[id]/settings/page_client-reference-manifest.js b/.next/server/app/project/[id]/settings/page_client-reference-manifest.js index 0adff94..bb68839 100644 --- a/.next/server/app/project/[id]/settings/page_client-reference-manifest.js +++ b/.next/server/app/project/[id]/settings/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/project/[id]/settings/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx ":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx ":{"id":78424,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js","/_next/static/chunks/a56b0a8519201145.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx":{"id":78424,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js","/_next/static/chunks/a56b0a8519201145.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"34779":{"*":{"id":74007,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__540aea7d._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js"],"async":false}},"78424":{"*":{"id":27131,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__540aea7d._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","server/chunks/ssr/Documents_00 - projet_plumeia_0e608513._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"34779":{"*":{"id":57119,"name":"*","chunks":[],"async":false}},"78424":{"*":{"id":935,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":["static/chunks/ca38dfad29c437c1.js","static/chunks/7e431064c812a46a.js","static/chunks/243eedfdf0191d5a.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/7e431064c812a46a.js","static/chunks/243eedfdf0191d5a.js","static/chunks/a56b0a8519201145.js"]}} +globalThis.__RSC_MANIFEST["/project/[id]/settings/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx ":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx ":{"id":78424,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js","/_next/static/chunks/ca1ac45dcb58cc08.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx":{"id":78424,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js","/_next/static/chunks/ca1ac45dcb58cc08.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"34779":{"*":{"id":74007,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__87a657d3._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js"],"async":false}},"78424":{"*":{"id":27131,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__87a657d3._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","server/chunks/ssr/Documents_00 - projet_plumeia_0e608513._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"34779":{"*":{"id":57119,"name":"*","chunks":[],"async":false}},"78424":{"*":{"id":935,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":["static/chunks/ca38dfad29c437c1.js","static/chunks/c76d6f03f693a63d.js","static/chunks/2e1d4ab52d87fc3b.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/c76d6f03f693a63d.js","static/chunks/2e1d4ab52d87fc3b.js","static/chunks/ca1ac45dcb58cc08.js"]}} diff --git a/.next/server/app/project/[id]/workflow/page.js.nft.json b/.next/server/app/project/[id]/workflow/page.js.nft.json index f1d4248..01400aa 100644 --- a/.next/server/app/project/[id]/workflow/page.js.nft.json +++ b/.next/server/app/project/[id]/workflow/page.js.nft.json @@ -1 +1 @@ -{"version":1,"files":["../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../node_modules/next/package.json","../../../../chunks/ssr/549ce_00782eb5._.js","../../../../chunks/ssr/549ce_lucide-react_dist_esm_icons_arrow-right_cad657db.js","../../../../chunks/ssr/549ce_next_dist_470effa2._.js","../../../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_c0669bf4._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_c09de6f3._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_workflow_page_tsx_7c45eeec._.js","../../../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../../../chunks/ssr/[root-of-the-server]__2f0c31a0._.js","../../../../chunks/ssr/[root-of-the-server]__540aea7d._.js","../../../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../../../chunks/ssr/[turbopack]_runtime.js","../../../../chunks/ssr/b79dd_plumeia__next-internal_server_app_project_[id]_workflow_page_actions_42a85d43.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file +{"version":1,"files":["../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../node_modules/next/package.json","../../../../chunks/ssr/549ce_00782eb5._.js","../../../../chunks/ssr/549ce_lucide-react_dist_esm_icons_arrow-right_cad657db.js","../../../../chunks/ssr/549ce_next_dist_470effa2._.js","../../../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_c0669bf4._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_c09de6f3._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_workflow_page_tsx_7c45eeec._.js","../../../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../../../chunks/ssr/[root-of-the-server]__2f0c31a0._.js","../../../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../../../chunks/ssr/[root-of-the-server]__87a657d3._.js","../../../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../../../chunks/ssr/[turbopack]_runtime.js","../../../../chunks/ssr/b79dd_plumeia__next-internal_server_app_project_[id]_workflow_page_actions_42a85d43.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/.next/server/app/project/[id]/workflow/page_client-reference-manifest.js b/.next/server/app/project/[id]/workflow/page_client-reference-manifest.js index 90d3296..f93a2f0 100644 --- a/.next/server/app/project/[id]/workflow/page_client-reference-manifest.js +++ b/.next/server/app/project/[id]/workflow/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/project/[id]/workflow/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx ":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/workflow/page.tsx ":{"id":38562,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js","/_next/static/chunks/8214509c661073ff.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/workflow/page.tsx":{"id":38562,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js","/_next/static/chunks/8214509c661073ff.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"34779":{"*":{"id":74007,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__540aea7d._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js"],"async":false}},"38562":{"*":{"id":82451,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__540aea7d._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","server/chunks/ssr/549ce_lucide-react_dist_esm_icons_arrow-right_cad657db.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_workflow_page_tsx_7c45eeec._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"34779":{"*":{"id":57119,"name":"*","chunks":[],"async":false}},"38562":{"*":{"id":55620,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/workflow/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":["static/chunks/ca38dfad29c437c1.js","static/chunks/7e431064c812a46a.js","static/chunks/243eedfdf0191d5a.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/workflow/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/7e431064c812a46a.js","static/chunks/243eedfdf0191d5a.js","static/chunks/8214509c661073ff.js"]}} +globalThis.__RSC_MANIFEST["/project/[id]/workflow/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx ":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/workflow/page.tsx ":{"id":38562,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js","/_next/static/chunks/9b50405aab01e4b4.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/workflow/page.tsx":{"id":38562,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js","/_next/static/chunks/9b50405aab01e4b4.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"34779":{"*":{"id":74007,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__87a657d3._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js"],"async":false}},"38562":{"*":{"id":82451,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__87a657d3._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","server/chunks/ssr/549ce_lucide-react_dist_esm_icons_arrow-right_cad657db.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_workflow_page_tsx_7c45eeec._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"34779":{"*":{"id":57119,"name":"*","chunks":[],"async":false}},"38562":{"*":{"id":55620,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/workflow/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":["static/chunks/ca38dfad29c437c1.js","static/chunks/c76d6f03f693a63d.js","static/chunks/2e1d4ab52d87fc3b.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/workflow/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/c76d6f03f693a63d.js","static/chunks/2e1d4ab52d87fc3b.js","static/chunks/9b50405aab01e4b4.js"]}} diff --git a/.next/server/app/project/[id]/world/page.js.nft.json b/.next/server/app/project/[id]/world/page.js.nft.json index 6235145..54b7d50 100644 --- a/.next/server/app/project/[id]/world/page.js.nft.json +++ b/.next/server/app/project/[id]/world/page.js.nft.json @@ -1 +1 @@ -{"version":1,"files":["../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../node_modules/next/package.json","../../../../chunks/ssr/549ce_00782eb5._.js","../../../../chunks/ssr/549ce_lucide-react_dist_esm_icons_293aa0b9._.js","../../../../chunks/ssr/549ce_next_dist_470effa2._.js","../../../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_05412e92._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_c09de6f3._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_world_page_tsx_ca59acbb._.js","../../../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../../../chunks/ssr/[root-of-the-server]__540aea7d._.js","../../../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../../../chunks/ssr/[root-of-the-server]__fafef80e._.js","../../../../chunks/ssr/[turbopack]_runtime.js","../../../../chunks/ssr/b79dd_plumeia__next-internal_server_app_project_[id]_world_page_actions_d01e8c43.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file +{"version":1,"files":["../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../node_modules/next/package.json","../../../../chunks/ssr/549ce_00782eb5._.js","../../../../chunks/ssr/549ce_lucide-react_dist_esm_icons_293aa0b9._.js","../../../../chunks/ssr/549ce_next_dist_470effa2._.js","../../../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_05412e92._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_c09de6f3._.js","../../../../chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_world_page_tsx_ca59acbb._.js","../../../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../../../chunks/ssr/[root-of-the-server]__87a657d3._.js","../../../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../../../chunks/ssr/[root-of-the-server]__fafef80e._.js","../../../../chunks/ssr/[turbopack]_runtime.js","../../../../chunks/ssr/b79dd_plumeia__next-internal_server_app_project_[id]_world_page_actions_d01e8c43.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/.next/server/app/project/[id]/world/page_client-reference-manifest.js b/.next/server/app/project/[id]/world/page_client-reference-manifest.js index 605d804..26d9bc9 100644 --- a/.next/server/app/project/[id]/world/page_client-reference-manifest.js +++ b/.next/server/app/project/[id]/world/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/project/[id]/world/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx ":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/world/page.tsx ":{"id":52724,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js","/_next/static/chunks/342f8c662a90d061.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/world/page.tsx":{"id":52724,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/7e431064c812a46a.js","/_next/static/chunks/243eedfdf0191d5a.js","/_next/static/chunks/342f8c662a90d061.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"34779":{"*":{"id":74007,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__540aea7d._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js"],"async":false}},"52724":{"*":{"id":85105,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__540aea7d._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","server/chunks/ssr/549ce_lucide-react_dist_esm_icons_293aa0b9._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_world_page_tsx_ca59acbb._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"34779":{"*":{"id":57119,"name":"*","chunks":[],"async":false}},"52724":{"*":{"id":55507,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/world/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":["static/chunks/ca38dfad29c437c1.js","static/chunks/7e431064c812a46a.js","static/chunks/243eedfdf0191d5a.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/world/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/7e431064c812a46a.js","static/chunks/243eedfdf0191d5a.js","static/chunks/342f8c662a90d061.js"]}} +globalThis.__RSC_MANIFEST["/project/[id]/world/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx ":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx":{"id":34779,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/world/page.tsx ":{"id":52724,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js","/_next/static/chunks/db791929fb045c25.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/world/page.tsx":{"id":52724,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/c76d6f03f693a63d.js","/_next/static/chunks/2e1d4ab52d87fc3b.js","/_next/static/chunks/db791929fb045c25.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"34779":{"*":{"id":74007,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__87a657d3._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js"],"async":false}},"52724":{"*":{"id":85105,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__87a657d3._.js","server/chunks/ssr/549ce_00782eb5._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js","server/chunks/ssr/549ce_lucide-react_dist_esm_icons_293aa0b9._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_world_page_tsx_ca59acbb._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"34779":{"*":{"id":57119,"name":"*","chunks":[],"async":false}},"52724":{"*":{"id":55507,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/world/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":["static/chunks/ca38dfad29c437c1.js","static/chunks/c76d6f03f693a63d.js","static/chunks/2e1d4ab52d87fc3b.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/world/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/c76d6f03f693a63d.js","static/chunks/2e1d4ab52d87fc3b.js","static/chunks/db791929fb045c25.js"]}} diff --git a/.next/server/app/signup.html b/.next/server/app/signup.html index b365c60..e359ea0 100644 --- a/.next/server/app/signup.html +++ b/.next/server/app/signup.html @@ -1 +1 @@ -PlumeIA - Éditeur Intelligent

Commencer l'aventure

Créez votre compte gratuit en quelques secondes.

Déjà membre ?

\ No newline at end of file +PlumeIA - Éditeur Intelligent

Commencer l'aventure

Créez votre compte gratuit en quelques secondes.

Déjà membre ?

\ No newline at end of file diff --git a/.next/server/app/signup.rsc b/.next/server/app/signup.rsc index 3a67019..c53dd41 100644 --- a/.next/server/app/signup.rsc +++ b/.next/server/app/signup.rsc @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","signup"],"q":"","i":false,"f":[[["",{"children":["signup",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/0b0db8395d3fe8fd.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","signup"],"q":"","i":false,"f":[[["",{"children":["signup",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/0b0db8395d3fe8fd.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/signup.segments/_full.segment.rsc b/.next/server/app/signup.segments/_full.segment.rsc index 3a67019..c53dd41 100644 --- a/.next/server/app/signup.segments/_full.segment.rsc +++ b/.next/server/app/signup.segments/_full.segment.rsc @@ -12,7 +12,7 @@ e:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"P":null,"b":"msXsDwtlDxhrnfeF2dg3H","c":["","signup"],"q":"","i":false,"f":[[["",{"children":["signup",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/0b0db8395d3fe8fd.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} +0:{"P":null,"b":"F__YtZpml5C5L1OF5iRU8","c":["","signup"],"q":"","i":false,"f":[[["",{"children":["signup",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/0b0db8395d3fe8fd.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true} 7:{} 8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params" d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] diff --git a/.next/server/app/signup.segments/_head.segment.rsc b/.next/server/app/signup.segments/_head.segment.rsc index edf78ca..9df94be 100644 --- a/.next/server/app/signup.segments/_head.segment.rsc +++ b/.next/server/app/signup.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"ViewportBoundary"] 3:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"PlumeIA - Éditeur Intelligent"}],["$","meta","1",{"name":"description","content":"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman."}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/signup.segments/_index.segment.rsc b/.next/server/app/signup.segments/_index.segment.rsc index 3524f5b..832f14c 100644 --- a/.next/server/app/signup.segments/_index.segment.rsc +++ b/.next/server/app/signup.segments/_index.segment.rsc @@ -3,4 +3,4 @@ 3:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 4:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] :HL["/_next/static/chunks/02e8536809396536.css","style"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/02e8536809396536.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/ca38dfad29c437c1.js","async":true}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable merriweather_6ee6941f-module__jsOStW__variable font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/signup.segments/_tree.segment.rsc b/.next/server/app/signup.segments/_tree.segment.rsc index edd3ef5..3d9d85c 100644 --- a/.next/server/app/signup.segments/_tree.segment.rsc +++ b/.next/server/app/signup.segments/_tree.segment.rsc @@ -1,4 +1,4 @@ :HL["/_next/static/chunks/02e8536809396536.css","style"] :HL["/_next/static/media/248e1dc0efc99276-s.p.8a6b2436.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"signup","paramType":null,"paramKey":"signup","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"signup","paramType":null,"paramKey":"signup","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/.next/server/app/signup.segments/signup.segment.rsc b/.next/server/app/signup.segments/signup.segment.rsc index 7c69a3b..c4a742f 100644 --- a/.next/server/app/signup.segments/signup.segment.rsc +++ b/.next/server/app/signup.segments/signup.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[62025,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] 3:I[61849,["/_next/static/chunks/0d48399cd7665c53.js"],"default"] -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/signup.segments/signup/__PAGE__.segment.rsc b/.next/server/app/signup.segments/signup/__PAGE__.segment.rsc index dc4a140..0bb3a6a 100644 --- a/.next/server/app/signup.segments/signup/__PAGE__.segment.rsc +++ b/.next/server/app/signup.segments/signup/__PAGE__.segment.rsc @@ -3,7 +3,7 @@ 3:I[24605,["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0b0db8395d3fe8fd.js"],"default"] 6:I[35523,["/_next/static/chunks/0d48399cd7665c53.js"],"OutletBoundary"] 7:"$Sreact.suspense" -0:{"buildId":"msXsDwtlDxhrnfeF2dg3H","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/0b0db8395d3fe8fd.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"F__YtZpml5C5L1OF5iRU8","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/0b0db8395d3fe8fd.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false} 4:{} 5:"$0:rsc:props:children:0:props:serverProvidedParams:params" 8:null diff --git a/.next/server/app/signup/page.js.nft.json b/.next/server/app/signup/page.js.nft.json index 8139f1c..1475ab5 100644 --- a/.next/server/app/signup/page.js.nft.json +++ b/.next/server/app/signup/page.js.nft.json @@ -1 +1 @@ -{"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../chunks/ssr/549ce_00782eb5._.js","../../chunks/ssr/549ce_next_dist_470effa2._.js","../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../chunks/ssr/80b94_00 - projet_plumeia__next-internal_server_app_signup_page_actions_adad39ce.js","../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../chunks/ssr/Documents_00 - projet_plumeia_dacda503._.js","../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../chunks/ssr/[root-of-the-server]__47b901a8._.js","../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../chunks/ssr/[root-of-the-server]__b26e19df._.js","../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../chunks/ssr/[turbopack]_runtime.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file +{"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../chunks/ssr/549ce_00782eb5._.js","../../chunks/ssr/549ce_next_dist_470effa2._.js","../../chunks/ssr/549ce_next_dist_4ebb36b4._.js","../../chunks/ssr/549ce_next_dist_752cd4f9._.js","../../chunks/ssr/549ce_next_dist_client_components_5ea51078._.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js","../../chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js","../../chunks/ssr/549ce_next_dist_f187ee39._.js","../../chunks/ssr/80b94_00 - projet_plumeia__next-internal_server_app_signup_page_actions_adad39ce.js","../../chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","../../chunks/ssr/Documents_00 - projet_plumeia_dacda503._.js","../../chunks/ssr/[root-of-the-server]__1a3c2506._.js","../../chunks/ssr/[root-of-the-server]__5bf29f18._.js","../../chunks/ssr/[root-of-the-server]__711fc51c._.js","../../chunks/ssr/[root-of-the-server]__b187b587._.js","../../chunks/ssr/[root-of-the-server]__b26e19df._.js","../../chunks/ssr/[root-of-the-server]__c50dc7b7._.js","../../chunks/ssr/[turbopack]_runtime.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/.next/server/app/signup/page_client-reference-manifest.js b/.next/server/app/signup/page_client-reference-manifest.js index b912dd8..b83b60e 100644 --- a/.next/server/app/signup/page_client-reference-manifest.js +++ b/.next/server/app/signup/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/signup/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx ":{"id":24605,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0b0db8395d3fe8fd.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx":{"id":24605,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0b0db8395d3fe8fd.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"24605":{"*":{"id":41440,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__47b901a8._.js","server/chunks/ssr/549ce_00782eb5._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"24605":{"*":{"id":35609,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/signup/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/signup/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/0b0db8395d3fe8fd.js"]}} +globalThis.__RSC_MANIFEST["/signup/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":62025,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61849,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":74697,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":65899,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63557,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":95835,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":35523,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":45235,"name":"*","chunks":["/_next/static/chunks/0d48399cd7665c53.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":18404,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx ":{"id":24605,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0b0db8395d3fe8fd.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx":{"id":24605,"name":"*","chunks":["/_next/static/chunks/ca38dfad29c437c1.js","/_next/static/chunks/0b0db8395d3fe8fd.js"],"async":false}},"ssrModuleMapping":{"62025":{"*":{"id":26852,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"61849":{"*":{"id":50425,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"74697":{"*":{"id":64166,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"65899":{"*":{"id":18936,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"63557":{"*":{"id":40182,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"95835":{"*":{"id":40158,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"35523":{"*":{"id":81947,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"45235":{"*":{"id":77979,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1a3c2506._.js","server/chunks/ssr/549ce_next_dist_4ebb36b4._.js"],"async":false}},"18404":{"*":{"id":95121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js"],"async":false}},"24605":{"*":{"id":41440,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__c50dc7b7._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6ac9e2a6._.js","server/chunks/ssr/[root-of-the-server]__b187b587._.js","server/chunks/ssr/549ce_00782eb5._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"62025":{"*":{"id":84270,"name":"*","chunks":[],"async":false}},"61849":{"*":{"id":1978,"name":"*","chunks":[],"async":false}},"74697":{"*":{"id":19271,"name":"*","chunks":[],"async":false}},"65899":{"*":{"id":79957,"name":"*","chunks":[],"async":false}},"63557":{"*":{"id":46976,"name":"*","chunks":[],"async":false}},"95835":{"*":{"id":17284,"name":"*","chunks":[],"async":false}},"35523":{"*":{"id":20825,"name":"*","chunks":[],"async":false}},"45235":{"*":{"id":40284,"name":"*","chunks":[],"async":false}},"18404":{"*":{"id":22012,"name":"*","chunks":[],"async":false}},"24605":{"*":{"id":35609,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/02e8536809396536.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/signup/page":[{"path":"static/chunks/02e8536809396536.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/0d48399cd7665c53.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/ca38dfad29c437c1.js"],"[project]/Documents/00 - projet/plumeia/src/app/signup/page":["static/chunks/ca38dfad29c437c1.js","static/chunks/0b0db8395d3fe8fd.js"]}} diff --git a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_0e608513._.js b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_0e608513._.js index 69fc57b..2fe67da 100644 --- a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_0e608513._.js +++ b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_0e608513._.js @@ -1,3 +1,3 @@ -module.exports=[45285,a=>{"use strict";let b=(0,a.i(29892).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);a.s(["Target",()=>b],45285)},49089,a=>{"use strict";let b=(0,a.i(29892).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Clock",()=>b],49089)},10704,a=>{"use strict";let b=(0,a.i(29892).default)("feather",[["path",{d:"M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z",key:"18jl4k"}],["path",{d:"M16 8 2 22",key:"vp34q"}],["path",{d:"M17.5 15H9",key:"1oz8nu"}]]);a.s(["Feather",()=>b],10704)},27131,a=>{"use strict";var b=a.i(78352),c=a.i(28091),d=a.i(68239),e=a.i(20769),f=a.i(14294),g=a.i(10704),h=a.i(29892);let i=(0,h.default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);var j=a.i(49089),k=a.i(45285);let l=(0,h.default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]),m={genre:"",subGenre:"",targetAudience:"",tone:"",pov:"",tense:"",synopsis:"",themes:""},n=({project:a,onUpdate:h,onDeleteProject:n})=>{let[o,p]=(0,c.useState)(a.settings||m),[q,r]=(0,c.useState)(!1);(0,c.useEffect)(()=>{a.settings&&p(a.settings)},[a.settings]);let s=(b,c)=>{let d={...o,[b]:c};p(d),h({...a,settings:d})};return(0,b.jsx)("div",{className:"h-full bg-[#eef2ff] p-8 overflow-y-auto",children:(0,b.jsxs)("div",{className:"max-w-4xl mx-auto bg-white rounded-xl shadow-lg border border-slate-200 overflow-hidden",children:[(0,b.jsxs)("div",{className:"bg-slate-900 text-white p-6 border-b border-slate-800 flex items-center gap-4",children:[(0,b.jsx)("div",{className:"bg-blue-600 p-3 rounded-lg",children:(0,b.jsx)(e.Settings,{size:24})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-2xl font-bold",children:"Paramètres Généraux du Roman"}),(0,b.jsx)("p",{className:"text-slate-400 text-sm",children:"Définissez l'identité, le ton et les règles de votre œuvre pour guider l'IA."})]})]}),(0,b.jsxs)("div",{className:"p-8 space-y-8",children:[(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2",children:[(0,b.jsx)(f.Book,{size:18,className:"text-blue-600"})," Informations de Base"]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Titre du Roman"}),(0,b.jsx)("input",{type:"text",value:a.title,onChange:b=>h({...a,title:b.target.value}),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-serif font-bold text-lg"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Nom d'Auteur"}),(0,b.jsx)("input",{type:"text",value:a.author,onChange:b=>h({...a,author:b.target.value}),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none"})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Synopsis Global"}),(0,b.jsx)("textarea",{value:o.synopsis,onChange:a=>s("synopsis",a.target.value),className:"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none h-24 text-sm bg-[#eef2ff]",placeholder:"De quoi parle votre histoire dans les grandes lignes ?"})]})]}),(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2",children:[(0,b.jsx)(k.Target,{size:18,className:"text-red-500"})," Genre & Public"]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Genre Principal"}),(0,b.jsx)("input",{type:"text",list:"genre-suggestions",value:o.genre,onChange:a=>s("genre",a.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Fantasy"}),(0,b.jsx)("datalist",{id:"genre-suggestions",children:d.GENRES.map(a=>(0,b.jsx)("option",{value:a},a))})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Sous-Genre"}),(0,b.jsx)("input",{type:"text",value:o.subGenre||"",onChange:a=>s("subGenre",a.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Dark Fantasy"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Public Cible"}),(0,b.jsx)("input",{type:"text",value:o.targetAudience,onChange:a=>s("targetAudience",a.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Jeune Adulte, Adulte..."})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Thèmes Clés"}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(l,{size:14,className:"absolute left-3 top-3 text-slate-400"}),(0,b.jsx)("input",{type:"text",value:o.themes,onChange:a=>s("themes",a.target.value),className:"w-full pl-9 p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Vengeance, Rédemption, Voyage initiatique..."})]})]})]}),(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2",children:[(0,b.jsx)(g.Feather,{size:18,className:"text-purple-600"})," Narration & Style"]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("label",{className:"block text-sm font-semibold text-slate-600 mb-1 flex items-center gap-1",children:[(0,b.jsx)(i,{size:14})," Point de Vue (POV)"]}),(0,b.jsxs)("select",{value:o.pov,onChange:a=>s("pov",a.target.value),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none",children:[(0,b.jsx)("option",{value:"",children:"Sélectionner..."}),d.POV_OPTIONS.map(a=>(0,b.jsx)("option",{value:a,children:a},a))]})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("label",{className:"block text-sm font-semibold text-slate-600 mb-1 flex items-center gap-1",children:[(0,b.jsx)(j.Clock,{size:14})," Temps du récit"]}),(0,b.jsxs)("select",{value:o.tense,onChange:a=>s("tense",a.target.value),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none",children:[(0,b.jsx)("option",{value:"",children:"Sélectionner..."}),d.TENSE_OPTIONS.map(a=>(0,b.jsx)("option",{value:a,children:a},a))]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Ton Général"}),(0,b.jsx)("input",{type:"text",list:"tone-suggestions",value:o.tone,onChange:a=>s("tone",a.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Sombre, Ironique..."}),(0,b.jsx)("datalist",{id:"tone-suggestions",children:d.TONES.map(a=>(0,b.jsx)("option",{value:a},a))})]})]}),(0,b.jsxs)("div",{className:"mt-4",children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Guide de Style & Instructions IA (Prompt Système)"}),(0,b.jsx)("p",{className:"text-xs text-slate-400 mb-2",children:'Ces instructions seront envoyées à l\'IA à chaque génération. Décrivez ici le style d\'écriture désiré (ex: "phrases courtes", "vocabulaire soutenu", "beaucoup de métaphores").'}),(0,b.jsx)("textarea",{value:a.styleGuide||"",onChange:b=>{var c;return c=b.target.value,void h({...a,styleGuide:c})},className:"w-full p-3 border border-indigo-100 bg-[#eef2ff] rounded-lg focus:ring-2 focus:ring-indigo-500 outline-none h-32 text-sm font-mono text-slate-700",placeholder:"Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique."})]})]}),(0,b.jsxs)("section",{className:"space-y-4 pt-8 border-t border-red-200",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-red-600 flex items-center gap-2 pb-2",children:[(0,b.jsx)("span",{className:"bg-red-100 p-1 rounded",children:"⚠️"})," Zone de Danger"]}),(0,b.jsxs)("div",{className:"bg-red-50 border border-red-200 rounded-lg p-6",children:[(0,b.jsx)("h4",{className:"font-bold text-red-900 mb-2",children:"Supprimer le projet"}),(0,b.jsx)("p",{className:"text-sm text-red-700 mb-4",children:"Cette action est irréversible. Toutes les données associées à ce projet (chapitres, entités, idées) seront définitivement effacées."}),q?(0,b.jsxs)("div",{className:"flex items-center gap-4 bg-white p-4 rounded border border-red-200",children:[(0,b.jsx)("span",{className:"text-sm font-bold text-slate-700",children:"Êtes-vous sûr ?"}),(0,b.jsx)("button",{onClick:n,className:"px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700 text-sm font-bold",children:"Oui, supprimer définitivement"}),(0,b.jsx)("button",{onClick:()=>r(!1),className:"px-4 py-2 bg-slate-200 text-slate-700 rounded hover:bg-slate-300 text-sm",children:"Annuler"})]}):(0,b.jsx)("button",{onClick:()=>r(!0),className:"px-4 py-2 bg-white border border-red-300 text-red-600 rounded hover:bg-red-50 text-sm font-bold",children:"Supprimer ce projet"})]})]})]})]})})};var o=a.i(34896),p=a.i(95121),q=a.i(3622);function r(a){let{project:c,updateProject:d}=a,e=(0,o.useParams)(),f=(0,o.useRouter)(),g=e.id,{user:h}=(0,p.useAuthContext)(),{deleteProject:i}=(0,q.useProjects)(h);return c?(0,b.jsx)(n,{project:c,onUpdate:a=>d?.(a),onDeleteProject:async()=>{await i(g),f.push("/dashboard")}}):null}a.s(["default",()=>r],27131)}]; +module.exports=[45285,a=>{"use strict";let b=(0,a.i(29892).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);a.s(["Target",()=>b],45285)},49089,a=>{"use strict";let b=(0,a.i(29892).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Clock",()=>b],49089)},10704,a=>{"use strict";let b=(0,a.i(29892).default)("feather",[["path",{d:"M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z",key:"18jl4k"}],["path",{d:"M16 8 2 22",key:"vp34q"}],["path",{d:"M17.5 15H9",key:"1oz8nu"}]]);a.s(["Feather",()=>b],10704)},27131,a=>{"use strict";var b=a.i(78352),c=a.i(28091),d=a.i(68239),e=a.i(20769),f=a.i(14294),g=a.i(10704),h=a.i(29892);let i=(0,h.default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);var j=a.i(49089),k=a.i(45285);let l=(0,h.default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]),m={genre:"",subGenre:"",targetAudience:"",tone:"",pov:"",tense:"",synopsis:"",themes:""},n=({project:a,onUpdate:h,onDeleteProject:n})=>{let[o,p]=(0,c.useState)(a.settings||m),[q,r]=(0,c.useState)(!1);(0,c.useEffect)(()=>{a.settings&&p(a.settings)},[a.settings]);let s=(b,c)=>{let d={...o,[b]:c};p(d),h({...a,settings:d})};return(0,b.jsx)("div",{className:"h-full bg-[#eef2ff] p-8 overflow-y-auto",children:(0,b.jsxs)("div",{className:"max-w-4xl mx-auto bg-white rounded-xl shadow-lg border border-slate-200 overflow-hidden",children:[(0,b.jsxs)("div",{className:"bg-slate-900 text-white p-6 border-b border-slate-800 flex items-center gap-4",children:[(0,b.jsx)("div",{className:"bg-blue-600 p-3 rounded-lg",children:(0,b.jsx)(e.Settings,{size:24})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-2xl font-bold",children:"Paramètres Généraux du Roman"}),(0,b.jsx)("p",{className:"text-slate-400 text-sm",children:"Définissez l'identité, le ton et les règles de votre œuvre pour guider l'IA."})]})]}),(0,b.jsxs)("div",{className:"p-8 space-y-8",children:[(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2",children:[(0,b.jsx)(f.Book,{size:18,className:"text-blue-600"})," Informations de Base"]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Titre du Roman"}),(0,b.jsx)("input",{type:"text",value:a.title,onChange:b=>h({...a,title:b.target.value}),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-serif font-bold text-lg"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Nom d'Auteur"}),(0,b.jsx)("input",{type:"text",value:a.author,onChange:b=>h({...a,author:b.target.value}),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none"})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Synopsis Global"}),(0,b.jsx)("textarea",{value:o.synopsis,onChange:a=>s("synopsis",a.target.value),className:"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none h-24 text-sm bg-[#eef2ff]",placeholder:"De quoi parle votre histoire dans les grandes lignes ?"})]})]}),(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2",children:[(0,b.jsx)(k.Target,{size:18,className:"text-red-500"})," Genre & Public"]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Genre Principal"}),(0,b.jsx)("input",{type:"text",list:"genre-suggestions",value:o.genre,onChange:a=>s("genre",a.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Fantasy"}),(0,b.jsx)("datalist",{id:"genre-suggestions",children:d.GENRES.map(a=>(0,b.jsx)("option",{value:a},a))})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Sous-Genre"}),(0,b.jsx)("input",{type:"text",value:o.subGenre||"",onChange:a=>s("subGenre",a.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Dark Fantasy"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Public Cible"}),(0,b.jsx)("input",{type:"text",value:o.targetAudience,onChange:a=>s("targetAudience",a.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Jeune Adulte, Adulte..."})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Thèmes Clés"}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(l,{size:14,className:"absolute left-3 top-3 text-slate-400"}),(0,b.jsx)("input",{type:"text",value:o.themes,onChange:a=>s("themes",a.target.value),className:"w-full pl-9 p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Vengeance, Rédemption, Voyage initiatique..."})]})]})]}),(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2",children:[(0,b.jsx)(g.Feather,{size:18,className:"text-purple-600"})," Narration & Style"]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("label",{className:"block text-sm font-semibold text-slate-600 mb-1 flex items-center gap-1",children:[(0,b.jsx)(i,{size:14})," Point de Vue (POV)"]}),(0,b.jsxs)("select",{value:o.pov,onChange:a=>s("pov",a.target.value),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none",children:[(0,b.jsx)("option",{value:"",children:"Sélectionner..."}),d.POV_OPTIONS.map(a=>(0,b.jsx)("option",{value:a,children:a},a))]})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("label",{className:"block text-sm font-semibold text-slate-600 mb-1 flex items-center gap-1",children:[(0,b.jsx)(j.Clock,{size:14})," Temps du récit"]}),(0,b.jsxs)("select",{value:o.tense,onChange:a=>s("tense",a.target.value),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none",children:[(0,b.jsx)("option",{value:"",children:"Sélectionner..."}),d.TENSE_OPTIONS.map(a=>(0,b.jsx)("option",{value:a,children:a},a))]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Ton Général"}),(0,b.jsx)("input",{type:"text",list:"tone-suggestions",value:o.tone,onChange:a=>s("tone",a.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Sombre, Ironique..."}),(0,b.jsx)("datalist",{id:"tone-suggestions",children:d.TONES.map(a=>(0,b.jsx)("option",{value:a},a))})]})]}),(0,b.jsxs)("div",{className:"mt-4",children:[(0,b.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Guide de Style & Instructions IA (Prompt Système)"}),(0,b.jsx)("p",{className:"text-xs text-slate-400 mb-2",children:'Ces instructions seront envoyées à l\'IA à chaque génération. Décrivez ici le style d\'écriture désiré (ex: "phrases courtes", "vocabulaire soutenu", "beaucoup de métaphores").'}),(0,b.jsx)("textarea",{value:a.styleGuide||"",onChange:b=>{var c;return c=b.target.value,void h({...a,styleGuide:c})},className:"w-full p-3 border border-indigo-100 bg-[#eef2ff] rounded-lg focus:ring-2 focus:ring-indigo-500 outline-none h-32 text-sm font-mono text-slate-700",placeholder:"Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique."})]})]}),(0,b.jsxs)("section",{className:"space-y-4 pt-8 border-t border-red-200",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-red-600 flex items-center gap-2 pb-2",children:[(0,b.jsx)("span",{className:"bg-red-100 p-1 rounded",children:"⚠️"})," Zone de Danger"]}),(0,b.jsxs)("div",{className:"bg-red-50 border border-red-200 rounded-lg p-6",children:[(0,b.jsx)("h4",{className:"font-bold text-red-900 mb-2",children:"Supprimer le projet"}),(0,b.jsx)("p",{className:"text-sm text-red-700 mb-4",children:"Cette action est irréversible. Toutes les données associées à ce projet (chapitres, entités, idées) seront définitivement effacées."}),q?(0,b.jsxs)("div",{className:"flex items-center gap-4 bg-white p-4 rounded border border-red-200",children:[(0,b.jsx)("span",{className:"text-sm font-bold text-slate-700",children:"Êtes-vous sûr ?"}),(0,b.jsx)("button",{onClick:n,className:"px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700 text-sm font-bold",children:"Oui, supprimer définitivement"}),(0,b.jsx)("button",{onClick:()=>r(!1),className:"px-4 py-2 bg-slate-200 text-slate-700 rounded hover:bg-slate-300 text-sm",children:"Annuler"})]}):(0,b.jsx)("button",{onClick:()=>r(!0),className:"px-4 py-2 bg-white border border-red-300 text-red-600 rounded hover:bg-red-50 text-sm font-bold",children:"Supprimer ce projet"})]})]})]})]})})};var o=a.i(46344),p=a.i(95121),q=a.i(3622),r=a.i(34896);function s(){let{project:a,projectId:c,updateProject:d}=(0,o.useProjectContext)(),{user:e}=(0,p.useAuthContext)(),{deleteProject:f}=(0,q.useProjects)(e),g=(0,r.useRouter)();return(0,b.jsx)(n,{project:a,onUpdate:a=>d(a),onDeleteProject:async()=>{await f(c),g.push("/dashboard")}})}a.s(["default",()=>s],27131)}]; //# sourceMappingURL=Documents_00%20-%20projet_plumeia_0e608513._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_0e608513._.js.map b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_0e608513._.js.map index 372e53f..e536700 100644 --- a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_0e608513._.js.map +++ b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_0e608513._.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/target.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/clock.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/feather.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/BookSettings.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/settings/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/hash.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/users.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['circle', { cx: '12', cy: '12', r: '6', key: '1vlfrh' }],\n ['circle', { cx: '12', cy: '12', r: '2', key: '1c9p78' }],\n];\n\n/**\n * @component @name Target\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI2IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/target\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Target = createLucideIcon('target', __iconNode);\n\nexport default Target;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 6v6l4 2', key: 'mmk7yg' }],\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n];\n\n/**\n * @component @name Clock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgNnY2bDQgMiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/clock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Clock = createLucideIcon('clock', __iconNode);\n\nexport default Clock;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z',\n key: '18jl4k',\n },\n ],\n ['path', { d: 'M16 8 2 22', key: 'vp34q' }],\n ['path', { d: 'M17.5 15H9', key: '1oz8nu' }],\n];\n\n/**\n * @component @name Feather\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIuNjcgMTlhMiAyIDAgMCAwIDEuNDE2LS41ODhsNi4xNTQtNi4xNzJhNiA2IDAgMCAwLTguNDktOC40OUw1LjU4NiA5LjkxNEEyIDIgMCAwIDAgNSAxMS4zMjhWMThhMSAxIDAgMCAwIDEgMXoiIC8+CiAgPHBhdGggZD0iTTE2IDggMiAyMiIgLz4KICA8cGF0aCBkPSJNMTcuNSAxNUg5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/feather\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Feather = createLucideIcon('feather', __iconNode);\n\nexport default Feather;\n","'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { BookProject, BookSettings } from '@/lib/types';\nimport { GENRES, TONES, POV_OPTIONS, TENSE_OPTIONS } from '@/lib/constants';\nimport { Settings, Book, Feather, Users, Clock, Target, Hash } from 'lucide-react';\n\ninterface BookSettingsProps {\n project: BookProject;\n onUpdate: (project: BookProject) => void;\n onDeleteProject: () => void;\n}\n\nconst DEFAULT_SETTINGS: BookSettings = {\n genre: '',\n subGenre: '',\n targetAudience: '',\n tone: '',\n pov: '',\n tense: '',\n synopsis: '',\n themes: ''\n};\n\nconst BookSettingsComponent: React.FC = ({ project, onUpdate, onDeleteProject }) => {\n const [settings, setSettings] = useState(project.settings || DEFAULT_SETTINGS);\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n\n useEffect(() => {\n if (project.settings) {\n setSettings(project.settings);\n }\n }, [project.settings]);\n\n const handleChange = (key: keyof BookSettings, value: string) => {\n const newSettings = { ...settings, [key]: value };\n setSettings(newSettings);\n onUpdate({ ...project, settings: newSettings });\n };\n\n const handleStyleGuideChange = (value: string) => {\n onUpdate({ ...project, styleGuide: value });\n };\n\n return (\n
\n
\n\n
\n
\n \n
\n
\n

Paramètres Généraux du Roman

\n

Définissez l'identité, le ton et les règles de votre œuvre pour guider l'IA.

\n
\n
\n\n
\n
\n

\n Informations de Base\n

\n
\n
\n \n onUpdate({ ...project, title: e.target.value })}\n className=\"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-serif font-bold text-lg\"\n />\n
\n
\n \n onUpdate({ ...project, author: e.target.value })}\n className=\"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none\"\n />\n
\n
\n
\n \n handleChange('synopsis', e.target.value)}\n className=\"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none h-24 text-sm bg-[#eef2ff]\"\n placeholder=\"De quoi parle votre histoire dans les grandes lignes ?\"\n />\n
\n
\n\n
\n

\n Genre & Public\n

\n
\n
\n \n handleChange('genre', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Fantasy\"\n />\n \n {GENRES.map(g => \n
\n
\n \n handleChange('subGenre', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Dark Fantasy\"\n />\n
\n
\n \n handleChange('targetAudience', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Jeune Adulte, Adulte...\"\n />\n
\n
\n
\n \n
\n \n handleChange('themes', e.target.value)}\n className=\"w-full pl-9 p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Vengeance, Rédemption, Voyage initiatique...\"\n />\n
\n
\n
\n\n
\n

\n Narration & Style\n

\n
\n
\n \n handleChange('pov', e.target.value)}\n className=\"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none\"\n >\n \n {POV_OPTIONS.map(o => )}\n \n
\n
\n \n handleChange('tense', e.target.value)}\n className=\"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none\"\n >\n \n {TENSE_OPTIONS.map(o => )}\n \n
\n
\n \n handleChange('tone', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Sombre, Ironique...\"\n />\n \n {TONES.map(t => \n
\n
\n\n
\n \n

\n Ces instructions seront envoyées à l'IA à chaque génération. Décrivez ici le style d'écriture désiré (ex: \"phrases courtes\", \"vocabulaire soutenu\", \"beaucoup de métaphores\").\n

\n handleStyleGuideChange(e.target.value)}\n className=\"w-full p-3 border border-indigo-100 bg-[#eef2ff] rounded-lg focus:ring-2 focus:ring-indigo-500 outline-none h-32 text-sm font-mono text-slate-700\"\n placeholder=\"Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique.\"\n />\n
\n
\n\n
\n

\n ⚠️ Zone de Danger\n

\n
\n

Supprimer le projet

\n

\n Cette action est irréversible. Toutes les données associées à ce projet (chapitres, entités, idées) seront définitivement effacées.\n

\n {showDeleteConfirm ? (\n
\n Êtes-vous sûr ?\n \n Oui, supprimer définitivement\n \n setShowDeleteConfirm(false)}\n className=\"px-4 py-2 bg-slate-200 text-slate-700 rounded hover:bg-slate-300 text-sm\"\n >\n Annuler\n \n
\n ) : (\n setShowDeleteConfirm(true)}\n className=\"px-4 py-2 bg-white border border-red-300 text-red-600 rounded hover:bg-red-50 text-sm font-bold\"\n >\n Supprimer ce projet\n \n )}\n
\n
\n
\n
\n
\n );\n};\n\nexport default BookSettingsComponent;","'use client';\r\n\r\nimport BookSettingsComponent from '@/components/BookSettings';\r\nimport { useParams, useRouter } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\n\r\ninterface SettingsPageProps {\r\n project?: any;\r\n updateProject?: (updates: any) => void;\r\n}\r\n\r\nexport default function SettingsPage(props: SettingsPageProps) {\r\n const { project, updateProject } = props;\r\n const params = useParams();\r\n const router = useRouter();\r\n const projectId = params.id as string;\r\n\r\n const { user } = useAuthContext();\r\n const { deleteProject } = useProjects(user);\r\n\r\n if (!project) return null;\r\n\r\n return (\r\n updateProject?.(updates)}\r\n onDeleteProject={async () => {\r\n await deleteProject(projectId);\r\n router.push('/dashboard');\r\n }}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['line', { x1: '4', x2: '20', y1: '9', y2: '9', key: '4lhtct' }],\n ['line', { x1: '4', x2: '20', y1: '15', y2: '15', key: 'vyu0kd' }],\n ['line', { x1: '10', x2: '8', y1: '3', y2: '21', key: '1ggp8o' }],\n ['line', { x1: '16', x2: '14', y1: '3', y2: '21', key: 'weycgp' }],\n];\n\n/**\n * @component @name Hash\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8bGluZSB4MT0iNCIgeDI9IjIwIiB5MT0iOSIgeTI9IjkiIC8+CiAgPGxpbmUgeDE9IjQiIHgyPSIyMCIgeTE9IjE1IiB5Mj0iMTUiIC8+CiAgPGxpbmUgeDE9IjEwIiB4Mj0iOCIgeTE9IjMiIHkyPSIyMSIgLz4KICA8bGluZSB4MT0iMTYiIHgyPSIxNCIgeTE9IjMiIHkyPSIyMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/hash\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Hash = createLucideIcon('hash', __iconNode);\n\nexport default Hash;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2', key: '1yyitq' }],\n ['path', { d: 'M16 3.128a4 4 0 0 1 0 7.744', key: '16gr8j' }],\n ['path', { d: 'M22 21v-2a4 4 0 0 0-3-3.87', key: 'kshegd' }],\n ['circle', { cx: '9', cy: '7', r: '4', key: 'nufk8' }],\n];\n\n/**\n * @component @name Users\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg2YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8cGF0aCBkPSJNMTYgMy4xMjhhNCA0IDAgMCAxIDAgNy43NDQiIC8+CiAgPHBhdGggZD0iTTIyIDIxdi0yYTQgNCAwIDAgMC0zLTMuODciIC8+CiAgPGNpcmNsZSBjeD0iOSIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/users\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Users = createLucideIcon('users', __iconNode);\n\nexport default Users;\n"],"names":[],"mappings":"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,AAAK,CAAA,ACAzB,CAAA,ADAyB,CCAzB,ADAyB,AAAI,CAAA,ACA7B,CAAA,ADA6B,CAAA,ACA7B,CAAA,ADAkC,CCAlC,ADAkC,CCAlC,ADAkC,CCAlC,ADAkC,CCAlC,ADAkC,WAChD,CAAC,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CDAA,ACAA,CAAA,ADAA,AAAQ,CAAA,ACAA,ADAE,CAAA,CAAA,CAAI,CCAD,ADAC,CCAD,ADAC,CCAD,ADAC,CAAA,AAAK,ACAN,CDAM,ACAN,CDAM,ACAN,CAAA,ADAM,AAAI,CCAV,ADAU,CCAV,ADAU,CCAV,ADAU,CCAV,ADAU,CAAA,ACAV,ADAgB,CCAhB,CAAA,ADAgB,CCAhB,ADAgB,AAAI,CAAA,ACApB,CDAoB,ACApB,CDAoB,ACApB,CAAA,ADAoB,CAAA,ACApB,ADA0B,CCA1B,ADA0B,CAAA,ACA1B,CAAA,ADA0B,AAAI,KAAM,CAAA,ACAA,CDAA,ACAA,CDAA,ACAA,CAAA,ADAA,AAAK,CCAL,ADAK,CAAA,ACAL,CDAK,KAAA,CAAU,CAAA,EAChE,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAU,CAAA,EAAI,CAAA,ACAD,CAAA,ADAC,CAAA,ACAD,CAAA,ADAC,CAAM,AAAN,ACAD,GDAW,CAAA,ACAX,CAAA,ADAW,CCAX,ADAW,CCAX,ADAW,AAAK,CCAhB,CAAA,ADAgB,CAAA,ACAhB,ADAoB,IAAK,CCAzB,ADAyB,CCAzB,ADAyB,CAAI,ACA7B,ADAyB,SAAe,CAAA,ACAL,CDAK,ACAL,CDAK,KAAA,CAAU,CAAA,SACvD,IAAM,CCAF,ADAE,IAAM,GAAI,YAAe,CCAD,ADAC,CAAA,ACAD,CAAA,ADAC,AAAI,IAAA,CAAA,AAAM,CCAN,ADAM,GAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,GFM7D,EAAiC,CACnC,MAAO,GACP,SAAU,GACV,eAAgB,GAChB,KAAM,GACN,IAAK,GACL,MAAO,GACP,SAAU,GACV,OAAQ,EACZ,IAE2D,CAAC,SAAE,CAAO,UAAE,CAAQ,SAqOhE,QArOkE,CAAe,CAAE,IAC9F,GAAM,CAAC,EAAU,EAAY,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAuB,EAAQ,QAAQ,EAAI,GACrE,CAAC,EAAmB,EAAqB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IAE3D,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACF,EAAQ,QAAQ,EAAE,AAClB,EAAY,EAAQ,QAAQ,CAEpC,EAAG,CAAC,EAAQ,QAAQ,CAAC,EAErB,IAAM,EAAe,CAAC,EAAyB,KAC3C,IAAM,EAAc,CAAE,GAAG,CAAQ,CAAE,CAAC,EAAI,CAAE,CAAM,EAChD,EAAY,GACZ,EAAS,CAAE,GAAG,CAAO,CAAE,SAAU,CAAY,EACjD,EAMA,MACI,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,mDACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oGAEX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0FACX,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,sCACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,KAAM,OAEpB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,8BAAqB,iCACnC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,kCAAyB,uFAI9C,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0BACX,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,sBACf,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,oGACV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,KAAM,GAAI,UAAU,kBAAkB,2BAEhD,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,kDACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,2DAAkD,mBACnE,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACG,KAAK,OACL,MAAO,EAAQ,KAAK,CACpB,SAAU,AAAC,GAAM,EAAS,CAAE,GAAG,CAAO,CAAE,MAAO,EAAE,MAAM,CAAC,KAAK,AAAC,GAC9D,UAAU,+IAGlB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,2DAAkD,iBACnE,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACG,KAAK,OACL,MAAO,EAAQ,MAAM,CACrB,SAAU,AAAC,GAAM,EAAS,CAAE,GAAG,CAAO,CAAE,OAAQ,EAAE,MAAM,CAAC,KAAK,AAAC,GAC/D,UAAU,qHAItB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,2DAAkD,oBACnE,CAAA,EAAA,EAAA,GAAA,EAAC,WAAA,CACG,MAAO,EAAS,QAAQ,CACxB,SAAU,AAAC,GAAM,EAAa,WAAY,EAAE,MAAM,CAAC,KAAK,EACxD,UAAU,wHACV,YAAY,iEAKxB,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,sBACf,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,oGACV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,KAAM,GAAI,UAAU,iBAAiB,qBAEjD,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,kDACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,2DAAkD,oBACnE,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACG,KAAK,OACL,KAAK,oBACL,MAAO,EAAS,KAAK,CACrB,SAAU,AAAC,GAAM,EAAa,QAAS,EAAE,MAAM,CAAC,KAAK,EACrD,UAAU,6GACV,YAAY,gBAEhB,CAAA,EAAA,EAAA,GAAA,EAAC,WAAA,CAAS,GAAG,6BACR,EAAA,MAAM,CAAC,GAAG,CAAC,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAe,MAAO,GAAV,SAGtC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,2DAAkD,eACnE,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACG,KAAK,OACL,MAAO,EAAS,QAAQ,EAAI,GAC5B,SAAU,AAAC,GAAM,EAAa,WAAY,EAAE,MAAM,CAAC,KAAK,EACxD,UAAU,6GACV,YAAY,wBAGpB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,2DAAkD,iBACnE,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACG,KAAK,OACL,MAAO,EAAS,cAAc,CAC9B,SAAU,AAAC,GAAM,EAAa,iBAAkB,EAAE,MAAM,CAAC,KAAK,EAC9D,UAAU,6GACV,YAAY,sCAIxB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,2DAAkD,gBACnE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,qBACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAK,KAAM,GAAI,UAAU,yCAC1B,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACG,KAAK,OACL,MAAO,EAAS,MAAM,CACtB,SAAU,AAAC,GAAM,EAAa,SAAU,EAAE,MAAM,CAAC,KAAK,EACtD,UAAU,kHACV,YAAY,8DAM5B,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,sBACf,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,oGACV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,KAAM,GAAI,UAAU,oBAAoB,wBAErD,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,kDACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACG,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAM,UAAU,oFACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAM,KAAM,KAAM,yBAEvB,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACG,MAAO,EAAS,GAAG,CACnB,SAAU,AAAC,GAAM,EAAa,MAAO,EAAE,MAAM,CAAC,KAAK,EACnD,UAAU,uHAEV,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,MAAM,YAAG,oBAChB,EAAA,WAAW,CAAC,GAAG,CAAC,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAe,MAAO,WAAI,GAAd,UAG3C,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACG,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAM,UAAU,oFACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,KAAM,KAAM,qBAEvB,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACG,MAAO,EAAS,KAAK,CACrB,SAAW,AAAD,GAAO,EAAa,QAAS,EAAE,MAAM,CAAC,KAAK,EACrD,UAAU,uHAEV,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,MAAM,YAAG,oBAChB,EAAA,aAAa,CAAC,GAAG,CAAC,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAe,MAAO,WAAI,GAAd,UAG7C,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,2DAAkD,gBACnE,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACG,KAAK,OACL,KAAK,mBACL,MAAO,EAAS,IAAI,CACpB,SAAU,AAAC,GAAM,EAAa,OAAQ,EAAE,MAAM,CAAC,KAAK,EACpD,UAAU,6GACV,YAAY,4BAEhB,CAAA,EAAA,EAAA,GAAA,EAAC,WAAA,CAAS,GAAG,4BACR,EAAA,KAAK,CAAC,GAAG,CAAC,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAe,MAAO,GAAV,YAKzC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,iBACX,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,2DAAkD,sDAGnE,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,uCAA8B,qLAG3C,CAAA,EAAA,EAAA,GAAA,EAAC,WAAA,CACG,MAAO,EAAQ,UAAU,EAAI,GAC7B,SAAU,AAAC,IAAM,aArKb,EAqKoC,EAAE,MAAM,CAAC,KAAK,MApK9E,EAAS,CAAE,GAAG,CAAO,CAAE,WAAY,CAAM,IAqKjB,UAAU,oJACV,YAAY,sGAKxB,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,mDACf,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,wEACV,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,kCAAyB,OAAS,qBAEtD,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,2DACX,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,uCAA8B,wBAC5C,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,qCAA4B,wIAGxC,EACG,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,+EACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,4CAAmC,oBACnD,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACG,QAAS,EACT,UAAU,sFACb,kCAGD,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACG,QAAS,IAAM,GAAqB,GACpC,UAAU,oFACb,eAKL,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACG,QAAS,IAAM,GAAqB,GACpC,UAAU,2GACb,qCAUjC,ECxPA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MAOe,SAAS,EAAa,CAAwB,EACzD,GAAM,SAAE,CAAO,eAAE,CAAa,CAAE,CAAG,EAC7B,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IAClB,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IAClB,EAAY,EAAO,EAAE,CAErB,MAAE,CAAI,CAAE,CAAG,CAAA,EAAA,EAAA,cAAA,AAAc,IACzB,eAAE,CAAa,CAAE,CAAG,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,UAEtC,AAAK,EAGD,CAAA,CAHA,CAGA,EAAA,EAHU,CAGV,EAAC,EAAA,CACG,QAAS,EACT,SAAU,AAAC,GAAY,IAAgB,GACvC,gBAAiB,UACb,MAAM,EAAc,GACpB,EAAO,IAAI,CAAC,aAChB,IATa,IAYzB","ignoreList":[0,1,2,5,6]} \ No newline at end of file +{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/target.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/clock.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/feather.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/BookSettings.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/settings/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/hash.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/users.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['circle', { cx: '12', cy: '12', r: '6', key: '1vlfrh' }],\n ['circle', { cx: '12', cy: '12', r: '2', key: '1c9p78' }],\n];\n\n/**\n * @component @name Target\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI2IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/target\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Target = createLucideIcon('target', __iconNode);\n\nexport default Target;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 6v6l4 2', key: 'mmk7yg' }],\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n];\n\n/**\n * @component @name Clock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgNnY2bDQgMiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/clock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Clock = createLucideIcon('clock', __iconNode);\n\nexport default Clock;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z',\n key: '18jl4k',\n },\n ],\n ['path', { d: 'M16 8 2 22', key: 'vp34q' }],\n ['path', { d: 'M17.5 15H9', key: '1oz8nu' }],\n];\n\n/**\n * @component @name Feather\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIuNjcgMTlhMiAyIDAgMCAwIDEuNDE2LS41ODhsNi4xNTQtNi4xNzJhNiA2IDAgMCAwLTguNDktOC40OUw1LjU4NiA5LjkxNEEyIDIgMCAwIDAgNSAxMS4zMjhWMThhMSAxIDAgMCAwIDEgMXoiIC8+CiAgPHBhdGggZD0iTTE2IDggMiAyMiIgLz4KICA8cGF0aCBkPSJNMTcuNSAxNUg5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/feather\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Feather = createLucideIcon('feather', __iconNode);\n\nexport default Feather;\n","'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { BookProject, BookSettings } from '@/lib/types';\nimport { GENRES, TONES, POV_OPTIONS, TENSE_OPTIONS } from '@/lib/constants';\nimport { Settings, Book, Feather, Users, Clock, Target, Hash } from 'lucide-react';\n\ninterface BookSettingsProps {\n project: BookProject;\n onUpdate: (project: BookProject) => void;\n onDeleteProject: () => void;\n}\n\nconst DEFAULT_SETTINGS: BookSettings = {\n genre: '',\n subGenre: '',\n targetAudience: '',\n tone: '',\n pov: '',\n tense: '',\n synopsis: '',\n themes: ''\n};\n\nconst BookSettingsComponent: React.FC = ({ project, onUpdate, onDeleteProject }) => {\n const [settings, setSettings] = useState(project.settings || DEFAULT_SETTINGS);\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n\n useEffect(() => {\n if (project.settings) {\n setSettings(project.settings);\n }\n }, [project.settings]);\n\n const handleChange = (key: keyof BookSettings, value: string) => {\n const newSettings = { ...settings, [key]: value };\n setSettings(newSettings);\n onUpdate({ ...project, settings: newSettings });\n };\n\n const handleStyleGuideChange = (value: string) => {\n onUpdate({ ...project, styleGuide: value });\n };\n\n return (\n
\n
\n\n
\n
\n \n
\n
\n

Paramètres Généraux du Roman

\n

Définissez l'identité, le ton et les règles de votre œuvre pour guider l'IA.

\n
\n
\n\n
\n
\n

\n Informations de Base\n

\n
\n
\n \n onUpdate({ ...project, title: e.target.value })}\n className=\"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-serif font-bold text-lg\"\n />\n
\n
\n \n onUpdate({ ...project, author: e.target.value })}\n className=\"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none\"\n />\n
\n
\n
\n \n handleChange('synopsis', e.target.value)}\n className=\"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none h-24 text-sm bg-[#eef2ff]\"\n placeholder=\"De quoi parle votre histoire dans les grandes lignes ?\"\n />\n
\n
\n\n
\n

\n Genre & Public\n

\n
\n
\n \n handleChange('genre', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Fantasy\"\n />\n \n {GENRES.map(g => \n
\n
\n \n handleChange('subGenre', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Dark Fantasy\"\n />\n
\n
\n \n handleChange('targetAudience', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Jeune Adulte, Adulte...\"\n />\n
\n
\n
\n \n
\n \n handleChange('themes', e.target.value)}\n className=\"w-full pl-9 p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Vengeance, Rédemption, Voyage initiatique...\"\n />\n
\n
\n
\n\n
\n

\n Narration & Style\n

\n
\n
\n \n handleChange('pov', e.target.value)}\n className=\"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none\"\n >\n \n {POV_OPTIONS.map(o => )}\n \n
\n
\n \n handleChange('tense', e.target.value)}\n className=\"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none\"\n >\n \n {TENSE_OPTIONS.map(o => )}\n \n
\n
\n \n handleChange('tone', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Sombre, Ironique...\"\n />\n \n {TONES.map(t => \n
\n
\n\n
\n \n

\n Ces instructions seront envoyées à l'IA à chaque génération. Décrivez ici le style d'écriture désiré (ex: \"phrases courtes\", \"vocabulaire soutenu\", \"beaucoup de métaphores\").\n

\n handleStyleGuideChange(e.target.value)}\n className=\"w-full p-3 border border-indigo-100 bg-[#eef2ff] rounded-lg focus:ring-2 focus:ring-indigo-500 outline-none h-32 text-sm font-mono text-slate-700\"\n placeholder=\"Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique.\"\n />\n
\n
\n\n
\n

\n ⚠️ Zone de Danger\n

\n
\n

Supprimer le projet

\n

\n Cette action est irréversible. Toutes les données associées à ce projet (chapitres, entités, idées) seront définitivement effacées.\n

\n {showDeleteConfirm ? (\n
\n Êtes-vous sûr ?\n \n Oui, supprimer définitivement\n \n setShowDeleteConfirm(false)}\n className=\"px-4 py-2 bg-slate-200 text-slate-700 rounded hover:bg-slate-300 text-sm\"\n >\n Annuler\n \n
\n ) : (\n setShowDeleteConfirm(true)}\n className=\"px-4 py-2 bg-white border border-red-300 text-red-600 rounded hover:bg-red-50 text-sm font-bold\"\n >\n Supprimer ce projet\n \n )}\n
\n
\n
\n
\n
\n );\n};\n\nexport default BookSettingsComponent;","'use client';\r\n\r\nimport BookSettingsComponent from '@/components/BookSettings';\r\nimport { useProjectContext } from '@/providers/ProjectProvider';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function SettingsPage() {\r\n const { project, projectId, updateProject } = useProjectContext();\r\n const { user } = useAuthContext();\r\n const { deleteProject } = useProjects(user);\r\n const router = useRouter();\r\n\r\n return (\r\n updateProject(updates)}\r\n onDeleteProject={async () => {\r\n await deleteProject(projectId);\r\n router.push('/dashboard');\r\n }}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['line', { x1: '4', x2: '20', y1: '9', y2: '9', key: '4lhtct' }],\n ['line', { x1: '4', x2: '20', y1: '15', y2: '15', key: 'vyu0kd' }],\n ['line', { x1: '10', x2: '8', y1: '3', y2: '21', key: '1ggp8o' }],\n ['line', { x1: '16', x2: '14', y1: '3', y2: '21', key: 'weycgp' }],\n];\n\n/**\n * @component @name Hash\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8bGluZSB4MT0iNCIgeDI9IjIwIiB5MT0iOSIgeTI9IjkiIC8+CiAgPGxpbmUgeDE9IjQiIHgyPSIyMCIgeTE9IjE1IiB5Mj0iMTUiIC8+CiAgPGxpbmUgeDE9IjEwIiB4Mj0iOCIgeTE9IjMiIHkyPSIyMSIgLz4KICA8bGluZSB4MT0iMTYiIHgyPSIxNCIgeTE9IjMiIHkyPSIyMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/hash\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Hash = createLucideIcon('hash', __iconNode);\n\nexport default Hash;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2', key: '1yyitq' }],\n ['path', { d: 'M16 3.128a4 4 0 0 1 0 7.744', key: '16gr8j' }],\n ['path', { d: 'M22 21v-2a4 4 0 0 0-3-3.87', key: 'kshegd' }],\n ['circle', { cx: '9', cy: '7', r: '4', key: 'nufk8' }],\n];\n\n/**\n * @component @name Users\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg2YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8cGF0aCBkPSJNMTYgMy4xMjhhNCA0IDAgMCAxIDAgNy43NDQiIC8+CiAgPHBhdGggZD0iTTIyIDIxdi0yYTQgNCAwIDAgMC0zLTMuODciIC8+CiAgPGNpcmNsZSBjeD0iOSIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/users\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Users = createLucideIcon('users', __iconNode);\n\nexport default Users;\n"],"names":[],"mappings":"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","ignoreList":[0,1,2,5,6]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_834a77e3._.js b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_834a77e3._.js index 009a8e9..2f189bd 100644 --- a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_834a77e3._.js +++ b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_834a77e3._.js @@ -1,3 +1,3 @@ -module.exports=[98205,a=>{"use strict";let b=(0,a.i(29892).default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);a.s(["Save",()=>b],98205)},68565,a=>{"use strict";let b=(0,a.i(29892).default)("pen-line",[["path",{d:"M13 21h8",key:"1jsn5i"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]);a.s(["Edit3",()=>b],68565)},49089,a=>{"use strict";let b=(0,a.i(29892).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Clock",()=>b],49089)},71549,a=>{"use strict";var b=a.i(78352),c=a.i(28091),d=a.i(33782),e=a.i(40400),f=a.i(29892);let g=(0,f.default)("grip-vertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]),h=(0,f.default)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]),i=(0,f.default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var j=a.i(49089),k=a.i(63287);let l=(0,f.default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);var m=a.i(46451),n=a.i(68565),o=a.i(98205);let p={plot:{label:"Intrigue",color:"bg-rose-100 text-rose-800 border-rose-200",icon:k.Lightbulb},character:{label:"Personnage",color:"bg-blue-100 text-blue-800 border-blue-200",icon:l},research:{label:"Recherche",color:"bg-amber-100 text-amber-800 border-amber-200",icon:l},todo:{label:"À faire",color:"bg-slate-100 text-slate-800 border-slate-200",icon:h}},q={todo:"Idées / À faire",progress:"En cours",done:"Terminé / Validé"},r=({ideas:a,onUpdate:f})=>{let[l,r]=(0,c.useState)(""),[s,t]=(0,c.useState)("plot"),[u,v]=(0,c.useState)(null),[w,x]=(0,c.useState)(null),y=b=>{confirm("Supprimer cette carte ?")&&(f(a.filter(a=>a.id!==b)),w?.id===b&&x(null))},z=a=>{x({title:"",description:"",category:"plot",status:a})},A=a=>{x({...a})},B=a=>{a.preventDefault(),a.dataTransfer.dropEffect="move"},C=({title:c,status:e,icon:h})=>{let i=a.filter(a=>a.status===e);return(0,b.jsxs)("div",{className:"flex-1 bg-[#eef2ff] rounded-xl border border-indigo-100 flex flex-col h-full overflow-hidden transition-colors hover:border-blue-200",onDragOver:B,onDrop:b=>{b.preventDefault(),u&&(f(a.map(a=>a.id===u?{...a,status:e}:a)),v(null))},onDoubleClick:()=>z(e),title:"Double-cliquez dans le vide pour ajouter une carte ici",children:[(0,b.jsxs)("div",{className:`p-4 border-b border-indigo-200 flex justify-between items-center ${"todo"===e?"bg-[#eef2ff]":"progress"===e?"bg-indigo-50":"bg-green-50"}`,children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 font-bold text-slate-700",children:[(0,b.jsx)(h,{size:18}),c]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("button",{onClick:a=>{a.stopPropagation(),z(e)},className:"p-1 hover:bg-white rounded-full text-slate-400 hover:text-blue-600 transition-colors",children:(0,b.jsx)(d.Plus,{size:16})}),(0,b.jsx)("span",{className:"text-xs font-semibold bg-white px-2 py-1 rounded-full border border-indigo-100 text-slate-500",children:i.length})]})]}),(0,b.jsxs)("div",{className:"flex-1 overflow-y-auto p-3 space-y-3 custom-scrollbar",children:[i.map(a=>{let c=a.description.length>300?a.description.substring(0,300)+"...":a.description;return(0,b.jsxs)("div",{draggable:!0,onDragStart:b=>{v(a.id),b.dataTransfer.effectAllowed="move"},onDoubleClick:b=>{b.stopPropagation(),A(a)},className:"bg-white p-3 rounded-lg shadow-sm border border-slate-200 cursor-grab active:cursor-grabbing hover:shadow-md hover:border-blue-300 transition-all group relative animate-in zoom-in-95 duration-200",children:[(0,b.jsxs)("div",{className:"flex justify-between items-start mb-2",children:[(0,b.jsx)("span",{className:`text-[10px] uppercase font-bold px-2 py-0.5 rounded-full flex items-center gap-1 ${p[a.category].color}`,children:p[a.category].label}),(0,b.jsxs)("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),A(a)},className:"text-slate-300 hover:text-blue-500",children:(0,b.jsx)(n.Edit3,{size:14})}),(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),y(a.id)},className:"text-slate-300 hover:text-red-500",children:(0,b.jsx)(m.Trash2,{size:14})})]})]}),(0,b.jsxs)("div",{className:"mb-2",children:[(0,b.jsx)("h4",{className:"font-bold text-slate-800 text-sm mb-1 leading-tight",children:a.title}),a.description&&(0,b.jsx)("p",{className:"text-xs text-slate-500 line-clamp-3 leading-relaxed",title:a.description.length>300?"Description tronquée (voir détail)":void 0,children:c})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center text-xs text-slate-400 border-t border-slate-50 pt-2 mt-2",children:[(0,b.jsxs)("span",{className:"flex items-center gap-1",children:[(0,b.jsx)(j.Clock,{size:10})," ",new Date(a.createdAt).toLocaleDateString()]}),(0,b.jsx)(g,{size:14,className:"opacity-20"})]})]},a.id)}),0===i.length&&(0,b.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-slate-300 text-sm italic border-2 border-dashed border-indigo-200 rounded-lg m-1",children:[(0,b.jsx)("span",{className:"mb-2",children:"Vide"}),(0,b.jsx)("span",{className:"text-xs opacity-70",children:"Double-cliquez pour ajouter"})]})]})]})};return(0,b.jsxs)("div",{className:"flex flex-col h-full bg-white p-6 gap-6 relative",children:[(0,b.jsxs)("div",{className:"flex flex-col md:flex-row justify-between items-start md:items-center gap-4 bg-white p-4 rounded-xl border border-slate-200 shadow-sm shrink-0",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("h2",{className:"text-2xl font-bold text-slate-800 flex items-center gap-2",children:[(0,b.jsx)(k.Lightbulb,{className:"text-yellow-500"})," Boîte à Idées"]}),(0,b.jsx)("p",{className:"text-slate-500 text-sm",children:"Organisez vos tâches, idées de scènes et recherches."})]}),(0,b.jsxs)("form",{onSubmit:b=>{b.preventDefault(),l.trim()&&(f([...a,{id:`idea-${Date.now()}`,title:l,description:"",category:s,status:"todo",createdAt:Date.now()}]),r(""))},className:"flex-1 w-full md:w-auto max-w-2xl flex gap-2",children:[(0,b.jsx)("select",{value:s,onChange:a=>t(a.target.value),className:"bg-[#eef2ff] border border-indigo-200 text-slate-700 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 outline-none",children:Object.entries(p).map(([a,c])=>(0,b.jsx)("option",{value:a,children:c.label},a))}),(0,b.jsx)("input",{type:"text",value:l,onChange:a=>r(a.target.value),placeholder:"Titre de la nouvelle idée...",className:"flex-1 bg-[#eef2ff] border border-indigo-200 text-slate-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 outline-none font-medium"}),(0,b.jsx)("button",{type:"submit",disabled:!l.trim(),className:"text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 disabled:opacity-50 transition-colors flex items-center gap-2",children:(0,b.jsx)(d.Plus,{size:18})})]})]}),(0,b.jsxs)("div",{className:"flex-1 grid grid-cols-1 md:grid-cols-3 gap-6 min-h-0",children:[(0,b.jsx)(C,{title:"Idées / À faire",status:"todo",icon:i}),(0,b.jsx)(C,{title:"En cours",status:"progress",icon:j.Clock}),(0,b.jsx)(C,{title:"Terminé",status:"done",icon:h})]}),w&&(0,b.jsx)("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black/40 backdrop-blur-sm p-4 animate-in fade-in duration-200",children:(0,b.jsxs)("div",{className:"bg-white rounded-xl shadow-2xl w-full max-w-lg overflow-hidden flex flex-col max-h-[90%]",children:[(0,b.jsxs)("div",{className:"bg-[#eef2ff] border-b border-indigo-100 p-4 flex justify-between items-center",children:[(0,b.jsxs)("h3",{className:"font-bold text-slate-700 flex items-center gap-2",children:[w.id?(0,b.jsx)(n.Edit3,{size:18}):(0,b.jsx)(d.Plus,{size:18}),w.id?"Éditer la carte":"Ajouter une carte"]}),(0,b.jsx)("button",{onClick:()=>x(null),className:"text-slate-400 hover:text-slate-600",children:(0,b.jsx)(e.X,{size:20})})]}),(0,b.jsxs)("div",{className:"p-6 space-y-4 overflow-y-auto",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Titre"}),(0,b.jsx)("input",{type:"text",value:w.title,onChange:a=>x({...w,title:a.target.value}),className:"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-bold text-slate-800",placeholder:"Titre de la tâche ou de l'idée...",autoFocus:!0})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Description"}),(0,b.jsx)("textarea",{value:w.description,onChange:a=>x({...w,description:a.target.value}),maxLength:500,className:"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none min-h-[120px] text-sm text-slate-600 leading-relaxed resize-none",placeholder:"Détails, notes, liens..."}),(0,b.jsxs)("div",{className:`text-right text-xs mt-1 transition-colors ${(w.description?.length||0)>=500?"text-red-500 font-bold":(w.description?.length||0)>450?"text-orange-500":"text-slate-400"}`,children:[w.description?.length||0," / ",500," caractères"]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Catégorie"}),(0,b.jsx)("select",{value:w.category,onChange:a=>x({...w,category:a.target.value}),className:"w-full p-2 bg-white border border-slate-300 rounded-lg text-sm outline-none focus:border-blue-500",children:Object.entries(p).map(([a,c])=>(0,b.jsx)("option",{value:a,children:c.label},a))})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Statut"}),(0,b.jsx)("select",{value:w.status,onChange:a=>x({...w,status:a.target.value}),className:"w-full p-2 bg-white border border-slate-300 rounded-lg text-sm outline-none focus:border-blue-500",children:Object.entries(q).map(([a,c])=>(0,b.jsx)("option",{value:a,children:c},a))})]})]})]}),(0,b.jsxs)("div",{className:"p-4 border-t border-slate-200 bg-[#eef2ff] flex justify-end gap-2 shrink-0",children:[w.id&&(0,b.jsx)("button",{onClick:()=>y(w.id),className:"mr-auto text-red-500 hover:text-red-700 text-sm font-medium px-3 py-2",children:"Supprimer"}),(0,b.jsx)("button",{onClick:()=>x(null),className:"px-4 py-2 text-slate-600 hover:bg-slate-200 rounded-lg text-sm font-medium",children:"Annuler"}),(0,b.jsxs)("button",{onClick:()=>{w&&w.title?.trim()&&(w.id?f(a.map(a=>a.id===w.id?{...a,...w}:a)):f([...a,{id:`idea-${Date.now()}`,title:w.title||"",description:w.description||"",category:w.category||"plot",status:w.status||"todo",createdAt:Date.now()}]),x(null))},disabled:!w.title?.trim(),className:"px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg text-sm font-medium shadow-sm disabled:opacity-50 flex items-center gap-2",children:[(0,b.jsx)(o.Save,{size:16})," Enregistrer"]})]})]})})]})};function s(a){let{project:c,updateProject:d}=a;return c?(0,b.jsx)(r,{ideas:c.ideas||[],onUpdate:a=>d?.({ideas:a})}):null}a.s(["default",()=>s],71549)}]; +module.exports=[98205,a=>{"use strict";let b=(0,a.i(29892).default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);a.s(["Save",()=>b],98205)},68565,a=>{"use strict";let b=(0,a.i(29892).default)("pen-line",[["path",{d:"M13 21h8",key:"1jsn5i"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]);a.s(["Edit3",()=>b],68565)},49089,a=>{"use strict";let b=(0,a.i(29892).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Clock",()=>b],49089)},71549,a=>{"use strict";var b=a.i(78352),c=a.i(28091),d=a.i(33782),e=a.i(40400),f=a.i(29892);let g=(0,f.default)("grip-vertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]),h=(0,f.default)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]),i=(0,f.default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var j=a.i(49089),k=a.i(63287);let l=(0,f.default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);var m=a.i(46451),n=a.i(68565),o=a.i(98205);let p={plot:{label:"Intrigue",color:"bg-rose-100 text-rose-800 border-rose-200",icon:k.Lightbulb},character:{label:"Personnage",color:"bg-blue-100 text-blue-800 border-blue-200",icon:l},research:{label:"Recherche",color:"bg-amber-100 text-amber-800 border-amber-200",icon:l},todo:{label:"À faire",color:"bg-slate-100 text-slate-800 border-slate-200",icon:h}},q={todo:"Idées / À faire",progress:"En cours",done:"Terminé / Validé"},r=({ideas:a,onUpdate:f})=>{let[l,r]=(0,c.useState)(""),[s,t]=(0,c.useState)("plot"),[u,v]=(0,c.useState)(null),[w,x]=(0,c.useState)(null),y=b=>{confirm("Supprimer cette carte ?")&&(f(a.filter(a=>a.id!==b)),w?.id===b&&x(null))},z=a=>{x({title:"",description:"",category:"plot",status:a})},A=a=>{x({...a})},B=a=>{a.preventDefault(),a.dataTransfer.dropEffect="move"},C=({title:c,status:e,icon:h})=>{let i=a.filter(a=>a.status===e);return(0,b.jsxs)("div",{className:"flex-1 bg-[#eef2ff] rounded-xl border border-indigo-100 flex flex-col h-full overflow-hidden transition-colors hover:border-blue-200",onDragOver:B,onDrop:b=>{b.preventDefault(),u&&(f(a.map(a=>a.id===u?{...a,status:e}:a)),v(null))},onDoubleClick:()=>z(e),title:"Double-cliquez dans le vide pour ajouter une carte ici",children:[(0,b.jsxs)("div",{className:`p-4 border-b border-indigo-200 flex justify-between items-center ${"todo"===e?"bg-[#eef2ff]":"progress"===e?"bg-indigo-50":"bg-green-50"}`,children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 font-bold text-slate-700",children:[(0,b.jsx)(h,{size:18}),c]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("button",{onClick:a=>{a.stopPropagation(),z(e)},className:"p-1 hover:bg-white rounded-full text-slate-400 hover:text-blue-600 transition-colors",children:(0,b.jsx)(d.Plus,{size:16})}),(0,b.jsx)("span",{className:"text-xs font-semibold bg-white px-2 py-1 rounded-full border border-indigo-100 text-slate-500",children:i.length})]})]}),(0,b.jsxs)("div",{className:"flex-1 overflow-y-auto p-3 space-y-3 custom-scrollbar",children:[i.map(a=>{let c=a.description.length>300?a.description.substring(0,300)+"...":a.description;return(0,b.jsxs)("div",{draggable:!0,onDragStart:b=>{v(a.id),b.dataTransfer.effectAllowed="move"},onDoubleClick:b=>{b.stopPropagation(),A(a)},className:"bg-white p-3 rounded-lg shadow-sm border border-slate-200 cursor-grab active:cursor-grabbing hover:shadow-md hover:border-blue-300 transition-all group relative animate-in zoom-in-95 duration-200",children:[(0,b.jsxs)("div",{className:"flex justify-between items-start mb-2",children:[(0,b.jsx)("span",{className:`text-[10px] uppercase font-bold px-2 py-0.5 rounded-full flex items-center gap-1 ${p[a.category].color}`,children:p[a.category].label}),(0,b.jsxs)("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),A(a)},className:"text-slate-300 hover:text-blue-500",children:(0,b.jsx)(n.Edit3,{size:14})}),(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),y(a.id)},className:"text-slate-300 hover:text-red-500",children:(0,b.jsx)(m.Trash2,{size:14})})]})]}),(0,b.jsxs)("div",{className:"mb-2",children:[(0,b.jsx)("h4",{className:"font-bold text-slate-800 text-sm mb-1 leading-tight",children:a.title}),a.description&&(0,b.jsx)("p",{className:"text-xs text-slate-500 line-clamp-3 leading-relaxed",title:a.description.length>300?"Description tronquée (voir détail)":void 0,children:c})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center text-xs text-slate-400 border-t border-slate-50 pt-2 mt-2",children:[(0,b.jsxs)("span",{className:"flex items-center gap-1",children:[(0,b.jsx)(j.Clock,{size:10})," ",new Date(a.createdAt).toLocaleDateString()]}),(0,b.jsx)(g,{size:14,className:"opacity-20"})]})]},a.id)}),0===i.length&&(0,b.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-slate-300 text-sm italic border-2 border-dashed border-indigo-200 rounded-lg m-1",children:[(0,b.jsx)("span",{className:"mb-2",children:"Vide"}),(0,b.jsx)("span",{className:"text-xs opacity-70",children:"Double-cliquez pour ajouter"})]})]})]})};return(0,b.jsxs)("div",{className:"flex flex-col h-full bg-white p-6 gap-6 relative",children:[(0,b.jsxs)("div",{className:"flex flex-col md:flex-row justify-between items-start md:items-center gap-4 bg-white p-4 rounded-xl border border-slate-200 shadow-sm shrink-0",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("h2",{className:"text-2xl font-bold text-slate-800 flex items-center gap-2",children:[(0,b.jsx)(k.Lightbulb,{className:"text-yellow-500"})," Boîte à Idées"]}),(0,b.jsx)("p",{className:"text-slate-500 text-sm",children:"Organisez vos tâches, idées de scènes et recherches."})]}),(0,b.jsxs)("form",{onSubmit:b=>{b.preventDefault(),l.trim()&&(f([...a,{id:`idea-${Date.now()}`,title:l,description:"",category:s,status:"todo",createdAt:Date.now()}]),r(""))},className:"flex-1 w-full md:w-auto max-w-2xl flex gap-2",children:[(0,b.jsx)("select",{value:s,onChange:a=>t(a.target.value),className:"bg-[#eef2ff] border border-indigo-200 text-slate-700 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 outline-none",children:Object.entries(p).map(([a,c])=>(0,b.jsx)("option",{value:a,children:c.label},a))}),(0,b.jsx)("input",{type:"text",value:l,onChange:a=>r(a.target.value),placeholder:"Titre de la nouvelle idée...",className:"flex-1 bg-[#eef2ff] border border-indigo-200 text-slate-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 outline-none font-medium"}),(0,b.jsx)("button",{type:"submit",disabled:!l.trim(),className:"text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 disabled:opacity-50 transition-colors flex items-center gap-2",children:(0,b.jsx)(d.Plus,{size:18})})]})]}),(0,b.jsxs)("div",{className:"flex-1 grid grid-cols-1 md:grid-cols-3 gap-6 min-h-0",children:[(0,b.jsx)(C,{title:"Idées / À faire",status:"todo",icon:i}),(0,b.jsx)(C,{title:"En cours",status:"progress",icon:j.Clock}),(0,b.jsx)(C,{title:"Terminé",status:"done",icon:h})]}),w&&(0,b.jsx)("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black/40 backdrop-blur-sm p-4 animate-in fade-in duration-200",children:(0,b.jsxs)("div",{className:"bg-white rounded-xl shadow-2xl w-full max-w-lg overflow-hidden flex flex-col max-h-[90%]",children:[(0,b.jsxs)("div",{className:"bg-[#eef2ff] border-b border-indigo-100 p-4 flex justify-between items-center",children:[(0,b.jsxs)("h3",{className:"font-bold text-slate-700 flex items-center gap-2",children:[w.id?(0,b.jsx)(n.Edit3,{size:18}):(0,b.jsx)(d.Plus,{size:18}),w.id?"Éditer la carte":"Ajouter une carte"]}),(0,b.jsx)("button",{onClick:()=>x(null),className:"text-slate-400 hover:text-slate-600",children:(0,b.jsx)(e.X,{size:20})})]}),(0,b.jsxs)("div",{className:"p-6 space-y-4 overflow-y-auto",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Titre"}),(0,b.jsx)("input",{type:"text",value:w.title,onChange:a=>x({...w,title:a.target.value}),className:"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-bold text-slate-800",placeholder:"Titre de la tâche ou de l'idée...",autoFocus:!0})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Description"}),(0,b.jsx)("textarea",{value:w.description,onChange:a=>x({...w,description:a.target.value}),maxLength:500,className:"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none min-h-[120px] text-sm text-slate-600 leading-relaxed resize-none",placeholder:"Détails, notes, liens..."}),(0,b.jsxs)("div",{className:`text-right text-xs mt-1 transition-colors ${(w.description?.length||0)>=500?"text-red-500 font-bold":(w.description?.length||0)>450?"text-orange-500":"text-slate-400"}`,children:[w.description?.length||0," / ",500," caractères"]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Catégorie"}),(0,b.jsx)("select",{value:w.category,onChange:a=>x({...w,category:a.target.value}),className:"w-full p-2 bg-white border border-slate-300 rounded-lg text-sm outline-none focus:border-blue-500",children:Object.entries(p).map(([a,c])=>(0,b.jsx)("option",{value:a,children:c.label},a))})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Statut"}),(0,b.jsx)("select",{value:w.status,onChange:a=>x({...w,status:a.target.value}),className:"w-full p-2 bg-white border border-slate-300 rounded-lg text-sm outline-none focus:border-blue-500",children:Object.entries(q).map(([a,c])=>(0,b.jsx)("option",{value:a,children:c},a))})]})]})]}),(0,b.jsxs)("div",{className:"p-4 border-t border-slate-200 bg-[#eef2ff] flex justify-end gap-2 shrink-0",children:[w.id&&(0,b.jsx)("button",{onClick:()=>y(w.id),className:"mr-auto text-red-500 hover:text-red-700 text-sm font-medium px-3 py-2",children:"Supprimer"}),(0,b.jsx)("button",{onClick:()=>x(null),className:"px-4 py-2 text-slate-600 hover:bg-slate-200 rounded-lg text-sm font-medium",children:"Annuler"}),(0,b.jsxs)("button",{onClick:()=>{w&&w.title?.trim()&&(w.id?f(a.map(a=>a.id===w.id?{...a,...w}:a)):f([...a,{id:`idea-${Date.now()}`,title:w.title||"",description:w.description||"",category:w.category||"plot",status:w.status||"todo",createdAt:Date.now()}]),x(null))},disabled:!w.title?.trim(),className:"px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg text-sm font-medium shadow-sm disabled:opacity-50 flex items-center gap-2",children:[(0,b.jsx)(o.Save,{size:16})," Enregistrer"]})]})]})})]})};var s=a.i(46344);function t(){let{project:a,updateProject:c}=(0,s.useProjectContext)();return(0,b.jsx)(r,{ideas:a.ideas||[],onUpdate:a=>c({ideas:a})})}a.s(["default",()=>t],71549)}]; //# sourceMappingURL=Documents_00%20-%20projet_plumeia_834a77e3._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_834a77e3._.js.map b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_834a77e3._.js.map index cb1601b..ba67e10 100644 --- a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_834a77e3._.js.map +++ b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_834a77e3._.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/save.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/pen-line.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/clock.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/IdeaBoard.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/ideas/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/search.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/grip-vertical.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/circle-check-big.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/circle.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z',\n key: '1c8476',\n },\n ],\n ['path', { d: 'M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7', key: '1ydtos' }],\n ['path', { d: 'M7 3v4a1 1 0 0 0 1 1h7', key: 't51u73' }],\n];\n\n/**\n * @component @name Save\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUuMiAzYTIgMiAwIDAgMSAxLjQuNmwzLjggMy44YTIgMiAwIDAgMSAuNiAxLjRWMTlhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yeiIgLz4KICA8cGF0aCBkPSJNMTcgMjF2LTdhMSAxIDAgMCAwLTEtMUg4YTEgMSAwIDAgMC0xIDF2NyIgLz4KICA8cGF0aCBkPSJNNyAzdjRhMSAxIDAgMCAwIDEgMWg3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/save\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Save = createLucideIcon('save', __iconNode);\n\nexport default Save;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M13 21h8', key: '1jsn5i' }],\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n];\n\n/**\n * @component @name PenLine\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTMgMjFoOCIgLz4KICA8cGF0aCBkPSJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/pen-line\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst PenLine = createLucideIcon('pen-line', __iconNode);\n\nexport default PenLine;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 6v6l4 2', key: 'mmk7yg' }],\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n];\n\n/**\n * @component @name Clock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgNnY2bDQgMiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/clock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Clock = createLucideIcon('clock', __iconNode);\n\nexport default Clock;\n","'use client';\n\nimport React, { useState } from 'react';\nimport { Idea, IdeaStatus, IdeaCategory } from '@/lib/types';\nimport { Plus, X, GripVertical, CheckCircle, Circle, Clock, Lightbulb, Search, Trash2, Edit3, Save } from 'lucide-react';\n\ninterface IdeaBoardProps {\n ideas: Idea[];\n onUpdate: (ideas: Idea[]) => void;\n}\n\nconst CATEGORIES: Record = {\n plot: { label: 'Intrigue', color: 'bg-rose-100 text-rose-800 border-rose-200', icon: Lightbulb },\n character: { label: 'Personnage', color: 'bg-blue-100 text-blue-800 border-blue-200', icon: Search },\n research: { label: 'Recherche', color: 'bg-amber-100 text-amber-800 border-amber-200', icon: Search },\n todo: { label: 'À faire', color: 'bg-slate-100 text-slate-800 border-slate-200', icon: CheckCircle },\n};\n\nconst STATUS_LABELS: Record = {\n todo: 'Idées / À faire',\n progress: 'En cours',\n done: 'Terminé / Validé'\n};\n\nconst MAX_DESCRIPTION_LENGTH = 500;\n\nconst IdeaBoard: React.FC = ({ ideas, onUpdate }) => {\n const [newIdeaTitle, setNewIdeaTitle] = useState('');\n const [newIdeaCategory, setNewIdeaCategory] = useState('plot');\n\n // Drag and Drop State\n const [draggedIdeaId, setDraggedIdeaId] = useState(null);\n\n // Modal State for Edit/Quick Add\n const [editingItem, setEditingItem] = useState | null>(null);\n\n // --- ACTIONS ---\n\n const handleAddIdea = (e: React.FormEvent) => {\n e.preventDefault();\n if (!newIdeaTitle.trim()) return;\n\n const newIdea: Idea = {\n id: `idea-${Date.now()}`,\n title: newIdeaTitle,\n description: '',\n category: newIdeaCategory,\n status: 'todo',\n createdAt: Date.now()\n };\n\n onUpdate([...ideas, newIdea]);\n setNewIdeaTitle('');\n };\n\n const handleDelete = (id: string) => {\n if(confirm(\"Supprimer cette carte ?\")) {\n onUpdate(ideas.filter(i => i.id !== id));\n if (editingItem?.id === id) setEditingItem(null);\n }\n };\n\n const handleSaveEdit = () => {\n if (!editingItem || !editingItem.title?.trim()) return;\n\n if (editingItem.id) {\n // Update existing\n onUpdate(ideas.map(i => i.id === editingItem.id ? { ...i, ...editingItem } as Idea : i));\n } else {\n // Create new from modal\n const newIdea: Idea = {\n id: `idea-${Date.now()}`,\n title: editingItem.title || '',\n description: editingItem.description || '',\n category: editingItem.category || 'plot',\n status: editingItem.status || 'todo',\n createdAt: Date.now()\n };\n onUpdate([...ideas, newIdea]);\n }\n setEditingItem(null);\n };\n\n const openQuickAdd = (status: IdeaStatus) => {\n setEditingItem({\n title: '',\n description: '',\n category: 'plot',\n status: status\n });\n };\n\n const openEdit = (idea: Idea) => {\n setEditingItem({ ...idea });\n };\n\n // --- DRAG HANDLERS ---\n\n const handleDragStart = (e: React.DragEvent, id: string) => {\n setDraggedIdeaId(id);\n e.dataTransfer.effectAllowed = 'move';\n };\n\n const handleDrop = (e: React.DragEvent, status: IdeaStatus) => {\n e.preventDefault();\n if (draggedIdeaId) {\n const updatedIdeas = ideas.map(idea => \n idea.id === draggedIdeaId ? { ...idea, status } : idea\n );\n onUpdate(updatedIdeas);\n setDraggedIdeaId(null);\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n };\n\n // --- RENDERERS ---\n\n const Column = ({ title, status, icon: Icon }: { title: string, status: IdeaStatus, icon: any }) => {\n const columnIdeas = ideas.filter(i => i.status === status);\n\n return (\n
handleDrop(e, status)}\n onDoubleClick={() => openQuickAdd(status)}\n title=\"Double-cliquez dans le vide pour ajouter une carte ici\"\n >\n {/* Column Header */}\n
\n
\n \n {title}\n
\n
\n \n \n {columnIdeas.length}\n \n
\n
\n\n {/* Column Body */}\n
\n {columnIdeas.map(idea => {\n const truncatedDesc = idea.description.length > 300 \n ? idea.description.substring(0, 300) + '...' \n : idea.description;\n\n return (\n handleDragStart(e, idea.id)}\n onDoubleClick={(e) => {\n e.stopPropagation(); // Prevent column double-click\n openEdit(idea);\n }}\n className=\"bg-white p-3 rounded-lg shadow-sm border border-slate-200 cursor-grab active:cursor-grabbing hover:shadow-md hover:border-blue-300 transition-all group relative animate-in zoom-in-95 duration-200\"\n >\n
\n \n {CATEGORIES[idea.category].label}\n \n
\n \n \n
\n
\n \n {/* CARD CONTENT */}\n
\n

{idea.title}

\n {idea.description && (\n

300 ? \"Description tronquée (voir détail)\" : undefined}>\n {truncatedDesc}\n

\n )}\n
\n\n
\n \n {new Date(idea.createdAt).toLocaleDateString()}\n \n \n
\n
\n );\n })}\n {columnIdeas.length === 0 && (\n
\n Vide\n Double-cliquez pour ajouter\n
\n )}\n
\n
\n );\n };\n\n return (\n
\n \n {/* Header & Add Form (Top Bar) */}\n
\n
\n

\n Boîte à Idées\n

\n

Organisez vos tâches, idées de scènes et recherches.

\n
\n\n
\n \n setNewIdeaTitle(e.target.value)}\n placeholder=\"Titre de la nouvelle idée...\" \n className=\"flex-1 bg-[#eef2ff] border border-indigo-200 text-slate-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 outline-none font-medium\"\n />\n \n
\n
\n\n {/* Kanban Board */}\n
\n \n \n \n
\n\n {/* EDIT / QUICK ADD MODAL */}\n {editingItem && (\n
\n
\n
\n

\n {editingItem.id ? : }\n {editingItem.id ? 'Éditer la carte' : 'Ajouter une carte'}\n

\n \n
\n \n
\n
\n \n setEditingItem({...editingItem, title: e.target.value})}\n className=\"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-bold text-slate-800\"\n placeholder=\"Titre de la tâche ou de l'idée...\"\n autoFocus\n />\n
\n\n
\n \n setEditingItem({...editingItem, description: e.target.value})}\n maxLength={MAX_DESCRIPTION_LENGTH}\n className=\"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none min-h-[120px] text-sm text-slate-600 leading-relaxed resize-none\"\n placeholder=\"Détails, notes, liens...\"\n />\n
= MAX_DESCRIPTION_LENGTH ? 'text-red-500 font-bold' : \n (editingItem.description?.length || 0) > MAX_DESCRIPTION_LENGTH * 0.9 ? 'text-orange-500' : 'text-slate-400'\n }`}>\n {editingItem.description?.length || 0} / {MAX_DESCRIPTION_LENGTH} caractères\n
\n
\n\n
\n
\n \n setEditingItem({...editingItem, category: e.target.value as IdeaCategory})}\n className=\"w-full p-2 bg-white border border-slate-300 rounded-lg text-sm outline-none focus:border-blue-500\"\n >\n {Object.entries(CATEGORIES).map(([key, val]) => (\n \n ))}\n \n
\n
\n \n setEditingItem({...editingItem, status: e.target.value as IdeaStatus})}\n className=\"w-full p-2 bg-white border border-slate-300 rounded-lg text-sm outline-none focus:border-blue-500\"\n >\n {Object.entries(STATUS_LABELS).map(([key, val]) => (\n \n ))}\n \n
\n
\n
\n\n
\n {editingItem.id && (\n \n )}\n \n \n
\n
\n
\n )}\n\n
\n );\n};\n\nexport default IdeaBoard;","'use client';\r\n\r\nimport IdeaBoard from '@/components/IdeaBoard';\r\n\r\ninterface IdeasPageProps {\r\n project?: any;\r\n updateProject?: (updates: any) => void;\r\n}\r\n\r\nexport default function IdeasPage(props: IdeasPageProps) {\r\n const { project, updateProject } = props;\r\n\r\n if (!project) return null;\r\n\r\n return (\r\n updateProject?.({ ideas })}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm21 21-4.34-4.34', key: '14j7rj' }],\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n];\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjEgMjEtNC4zNC00LjM0IiAvPgogIDxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/search\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Search = createLucideIcon('search', __iconNode);\n\nexport default Search;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '9', cy: '12', r: '1', key: '1vctgf' }],\n ['circle', { cx: '9', cy: '5', r: '1', key: 'hp0tcf' }],\n ['circle', { cx: '9', cy: '19', r: '1', key: 'fkjjf6' }],\n ['circle', { cx: '15', cy: '12', r: '1', key: '1tmaij' }],\n ['circle', { cx: '15', cy: '5', r: '1', key: '19l28e' }],\n ['circle', { cx: '15', cy: '19', r: '1', key: 'f4zoj3' }],\n];\n\n/**\n * @component @name GripVertical\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSI5IiBjeT0iMTIiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iOSIgY3k9IjUiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iOSIgY3k9IjE5IiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjE1IiBjeT0iMTIiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iMTUiIGN5PSI1IiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjE1IiBjeT0iMTkiIHI9IjEiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/grip-vertical\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GripVertical = createLucideIcon('grip-vertical', __iconNode);\n\nexport default GripVertical;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M21.801 10A10 10 0 1 1 17 3.335', key: 'yps3ct' }],\n ['path', { d: 'm9 11 3 3L22 4', key: '1pflzl' }],\n];\n\n/**\n * @component @name CircleCheckBig\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEuODAxIDEwQTEwIDEwIDAgMSAxIDE3IDMuMzM1IiAvPgogIDxwYXRoIGQ9Im05IDExIDMgM0wyMiA0IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/circle-check-big\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleCheckBig = createLucideIcon('circle-check-big', __iconNode);\n\nexport default CircleCheckBig;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }]];\n\n/**\n * @component @name Circle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Circle = createLucideIcon('circle', __iconNode);\n\nexport default Circle;\n"],"names":[],"mappings":"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","ignoreList":[0,1,2,5,6,7,8]} \ No newline at end of file +{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/save.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/pen-line.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/clock.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/IdeaBoard.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/ideas/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/search.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/grip-vertical.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/circle-check-big.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/circle.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z',\n key: '1c8476',\n },\n ],\n ['path', { d: 'M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7', key: '1ydtos' }],\n ['path', { d: 'M7 3v4a1 1 0 0 0 1 1h7', key: 't51u73' }],\n];\n\n/**\n * @component @name Save\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUuMiAzYTIgMiAwIDAgMSAxLjQuNmwzLjggMy44YTIgMiAwIDAgMSAuNiAxLjRWMTlhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yeiIgLz4KICA8cGF0aCBkPSJNMTcgMjF2LTdhMSAxIDAgMCAwLTEtMUg4YTEgMSAwIDAgMC0xIDF2NyIgLz4KICA8cGF0aCBkPSJNNyAzdjRhMSAxIDAgMCAwIDEgMWg3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/save\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Save = createLucideIcon('save', __iconNode);\n\nexport default Save;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M13 21h8', key: '1jsn5i' }],\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n];\n\n/**\n * @component @name PenLine\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTMgMjFoOCIgLz4KICA8cGF0aCBkPSJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/pen-line\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst PenLine = createLucideIcon('pen-line', __iconNode);\n\nexport default PenLine;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 6v6l4 2', key: 'mmk7yg' }],\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n];\n\n/**\n * @component @name Clock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgNnY2bDQgMiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/clock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Clock = createLucideIcon('clock', __iconNode);\n\nexport default Clock;\n","'use client';\n\nimport React, { useState } from 'react';\nimport { Idea, IdeaStatus, IdeaCategory } from '@/lib/types';\nimport { Plus, X, GripVertical, CheckCircle, Circle, Clock, Lightbulb, Search, Trash2, Edit3, Save } from 'lucide-react';\n\ninterface IdeaBoardProps {\n ideas: Idea[];\n onUpdate: (ideas: Idea[]) => void;\n}\n\nconst CATEGORIES: Record = {\n plot: { label: 'Intrigue', color: 'bg-rose-100 text-rose-800 border-rose-200', icon: Lightbulb },\n character: { label: 'Personnage', color: 'bg-blue-100 text-blue-800 border-blue-200', icon: Search },\n research: { label: 'Recherche', color: 'bg-amber-100 text-amber-800 border-amber-200', icon: Search },\n todo: { label: 'À faire', color: 'bg-slate-100 text-slate-800 border-slate-200', icon: CheckCircle },\n};\n\nconst STATUS_LABELS: Record = {\n todo: 'Idées / À faire',\n progress: 'En cours',\n done: 'Terminé / Validé'\n};\n\nconst MAX_DESCRIPTION_LENGTH = 500;\n\nconst IdeaBoard: React.FC = ({ ideas, onUpdate }) => {\n const [newIdeaTitle, setNewIdeaTitle] = useState('');\n const [newIdeaCategory, setNewIdeaCategory] = useState('plot');\n\n // Drag and Drop State\n const [draggedIdeaId, setDraggedIdeaId] = useState(null);\n\n // Modal State for Edit/Quick Add\n const [editingItem, setEditingItem] = useState | null>(null);\n\n // --- ACTIONS ---\n\n const handleAddIdea = (e: React.FormEvent) => {\n e.preventDefault();\n if (!newIdeaTitle.trim()) return;\n\n const newIdea: Idea = {\n id: `idea-${Date.now()}`,\n title: newIdeaTitle,\n description: '',\n category: newIdeaCategory,\n status: 'todo',\n createdAt: Date.now()\n };\n\n onUpdate([...ideas, newIdea]);\n setNewIdeaTitle('');\n };\n\n const handleDelete = (id: string) => {\n if(confirm(\"Supprimer cette carte ?\")) {\n onUpdate(ideas.filter(i => i.id !== id));\n if (editingItem?.id === id) setEditingItem(null);\n }\n };\n\n const handleSaveEdit = () => {\n if (!editingItem || !editingItem.title?.trim()) return;\n\n if (editingItem.id) {\n // Update existing\n onUpdate(ideas.map(i => i.id === editingItem.id ? { ...i, ...editingItem } as Idea : i));\n } else {\n // Create new from modal\n const newIdea: Idea = {\n id: `idea-${Date.now()}`,\n title: editingItem.title || '',\n description: editingItem.description || '',\n category: editingItem.category || 'plot',\n status: editingItem.status || 'todo',\n createdAt: Date.now()\n };\n onUpdate([...ideas, newIdea]);\n }\n setEditingItem(null);\n };\n\n const openQuickAdd = (status: IdeaStatus) => {\n setEditingItem({\n title: '',\n description: '',\n category: 'plot',\n status: status\n });\n };\n\n const openEdit = (idea: Idea) => {\n setEditingItem({ ...idea });\n };\n\n // --- DRAG HANDLERS ---\n\n const handleDragStart = (e: React.DragEvent, id: string) => {\n setDraggedIdeaId(id);\n e.dataTransfer.effectAllowed = 'move';\n };\n\n const handleDrop = (e: React.DragEvent, status: IdeaStatus) => {\n e.preventDefault();\n if (draggedIdeaId) {\n const updatedIdeas = ideas.map(idea => \n idea.id === draggedIdeaId ? { ...idea, status } : idea\n );\n onUpdate(updatedIdeas);\n setDraggedIdeaId(null);\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n };\n\n // --- RENDERERS ---\n\n const Column = ({ title, status, icon: Icon }: { title: string, status: IdeaStatus, icon: any }) => {\n const columnIdeas = ideas.filter(i => i.status === status);\n\n return (\n
handleDrop(e, status)}\n onDoubleClick={() => openQuickAdd(status)}\n title=\"Double-cliquez dans le vide pour ajouter une carte ici\"\n >\n {/* Column Header */}\n
\n
\n \n {title}\n
\n
\n \n \n {columnIdeas.length}\n \n
\n
\n\n {/* Column Body */}\n
\n {columnIdeas.map(idea => {\n const truncatedDesc = idea.description.length > 300 \n ? idea.description.substring(0, 300) + '...' \n : idea.description;\n\n return (\n handleDragStart(e, idea.id)}\n onDoubleClick={(e) => {\n e.stopPropagation(); // Prevent column double-click\n openEdit(idea);\n }}\n className=\"bg-white p-3 rounded-lg shadow-sm border border-slate-200 cursor-grab active:cursor-grabbing hover:shadow-md hover:border-blue-300 transition-all group relative animate-in zoom-in-95 duration-200\"\n >\n
\n \n {CATEGORIES[idea.category].label}\n \n
\n \n \n
\n
\n \n {/* CARD CONTENT */}\n
\n

{idea.title}

\n {idea.description && (\n

300 ? \"Description tronquée (voir détail)\" : undefined}>\n {truncatedDesc}\n

\n )}\n
\n\n
\n \n {new Date(idea.createdAt).toLocaleDateString()}\n \n \n
\n
\n );\n })}\n {columnIdeas.length === 0 && (\n
\n Vide\n Double-cliquez pour ajouter\n
\n )}\n
\n
\n );\n };\n\n return (\n
\n \n {/* Header & Add Form (Top Bar) */}\n
\n
\n

\n Boîte à Idées\n

\n

Organisez vos tâches, idées de scènes et recherches.

\n
\n\n
\n \n setNewIdeaTitle(e.target.value)}\n placeholder=\"Titre de la nouvelle idée...\" \n className=\"flex-1 bg-[#eef2ff] border border-indigo-200 text-slate-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 outline-none font-medium\"\n />\n \n
\n
\n\n {/* Kanban Board */}\n
\n \n \n \n
\n\n {/* EDIT / QUICK ADD MODAL */}\n {editingItem && (\n
\n
\n
\n

\n {editingItem.id ? : }\n {editingItem.id ? 'Éditer la carte' : 'Ajouter une carte'}\n

\n \n
\n \n
\n
\n \n setEditingItem({...editingItem, title: e.target.value})}\n className=\"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-bold text-slate-800\"\n placeholder=\"Titre de la tâche ou de l'idée...\"\n autoFocus\n />\n
\n\n
\n \n setEditingItem({...editingItem, description: e.target.value})}\n maxLength={MAX_DESCRIPTION_LENGTH}\n className=\"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none min-h-[120px] text-sm text-slate-600 leading-relaxed resize-none\"\n placeholder=\"Détails, notes, liens...\"\n />\n
= MAX_DESCRIPTION_LENGTH ? 'text-red-500 font-bold' : \n (editingItem.description?.length || 0) > MAX_DESCRIPTION_LENGTH * 0.9 ? 'text-orange-500' : 'text-slate-400'\n }`}>\n {editingItem.description?.length || 0} / {MAX_DESCRIPTION_LENGTH} caractères\n
\n
\n\n
\n
\n \n setEditingItem({...editingItem, category: e.target.value as IdeaCategory})}\n className=\"w-full p-2 bg-white border border-slate-300 rounded-lg text-sm outline-none focus:border-blue-500\"\n >\n {Object.entries(CATEGORIES).map(([key, val]) => (\n \n ))}\n \n
\n
\n \n setEditingItem({...editingItem, status: e.target.value as IdeaStatus})}\n className=\"w-full p-2 bg-white border border-slate-300 rounded-lg text-sm outline-none focus:border-blue-500\"\n >\n {Object.entries(STATUS_LABELS).map(([key, val]) => (\n \n ))}\n \n
\n
\n
\n\n
\n {editingItem.id && (\n \n )}\n \n \n
\n
\n
\n )}\n\n
\n );\n};\n\nexport default IdeaBoard;","'use client';\r\n\r\nimport IdeaBoard from '@/components/IdeaBoard';\r\nimport { useProjectContext } from '@/providers/ProjectProvider';\r\n\r\nexport default function IdeasPage() {\r\n const { project, updateProject } = useProjectContext();\r\n\r\n return (\r\n updateProject({ ideas })}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm21 21-4.34-4.34', key: '14j7rj' }],\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n];\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjEgMjEtNC4zNC00LjM0IiAvPgogIDxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/search\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Search = createLucideIcon('search', __iconNode);\n\nexport default Search;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '9', cy: '12', r: '1', key: '1vctgf' }],\n ['circle', { cx: '9', cy: '5', r: '1', key: 'hp0tcf' }],\n ['circle', { cx: '9', cy: '19', r: '1', key: 'fkjjf6' }],\n ['circle', { cx: '15', cy: '12', r: '1', key: '1tmaij' }],\n ['circle', { cx: '15', cy: '5', r: '1', key: '19l28e' }],\n ['circle', { cx: '15', cy: '19', r: '1', key: 'f4zoj3' }],\n];\n\n/**\n * @component @name GripVertical\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSI5IiBjeT0iMTIiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iOSIgY3k9IjUiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iOSIgY3k9IjE5IiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjE1IiBjeT0iMTIiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iMTUiIGN5PSI1IiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjE1IiBjeT0iMTkiIHI9IjEiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/grip-vertical\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GripVertical = createLucideIcon('grip-vertical', __iconNode);\n\nexport default GripVertical;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M21.801 10A10 10 0 1 1 17 3.335', key: 'yps3ct' }],\n ['path', { d: 'm9 11 3 3L22 4', key: '1pflzl' }],\n];\n\n/**\n * @component @name CircleCheckBig\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEuODAxIDEwQTEwIDEwIDAgMSAxIDE3IDMuMzM1IiAvPgogIDxwYXRoIGQ9Im05IDExIDMgM0wyMiA0IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/circle-check-big\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleCheckBig = createLucideIcon('circle-check-big', __iconNode);\n\nexport default CircleCheckBig;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }]];\n\n/**\n * @component @name Circle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Circle = createLucideIcon('circle', __iconNode);\n\nexport default Circle;\n"],"names":[],"mappings":"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","ignoreList":[0,1,2,5,6,7,8]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js index ba5c1a7..6247fb0 100644 --- a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js +++ b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js @@ -1,4 +1,4 @@ -module.exports=[74007,a=>{"use strict";var b=a.i(78352),c=a.i(28091),d=a.i(34896),e=a.i(95121),f=a.i(3622),g=a.i(31715),h=a.i(806),i=a.i(29892);let j=(0,i.default)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);var k=a.i(45044),l=a.i(73258);let m=(0,i.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]),n=(0,i.default)("brain-circuit",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M9 13a4.5 4.5 0 0 0 3-4",key:"10igwf"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M12 13h4",key:"1ku699"}],["path",{d:"M12 18h6a2 2 0 0 1 2 2v1",key:"105ag5"}],["path",{d:"M12 8h8",key:"1lhi5i"}],["path",{d:"M16 8V5a2 2 0 0 1 2-2",key:"u6izg6"}],["circle",{cx:"16",cy:"13",r:".5",key:"ry7gng"}],["circle",{cx:"18",cy:"3",r:".5",key:"1aiba7"}],["circle",{cx:"20",cy:"21",r:".5",key:"yhc1fs"}],["circle",{cx:"20",cy:"8",r:".5",key:"1e43v0"}]]);var o=a.i(72071);let p=({chatHistory:a,onSendMessage:d,onInsertText:e,selectedText:f,isGenerating:g,usage:i})=>{let[p,q]=(0,c.useState)(""),r=(0,c.useRef)(null);(0,c.useEffect)(()=>{r.current?.scrollIntoView({behavior:"smooth"})},[a,g]);let s=!!i&&i.aiActionsCurrent>=i.aiActionsLimit;return(0,b.jsxs)("div",{className:"flex flex-col h-full bg-white border-l border-slate-200 shadow-xl w-80 lg:w-96",children:[(0,b.jsxs)("div",{className:"p-4 bg-indigo-600 text-white flex items-center justify-between shadow-md",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(h.Sparkles,{size:20,className:"animate-pulse"}),(0,b.jsx)("h3",{className:"font-bold tracking-tight",children:"Assistant IA"})]}),i&&(0,b.jsxs)("div",{className:"bg-indigo-900/50 px-2 py-1 rounded text-[10px] font-black flex items-center gap-1",children:[(0,b.jsx)(o.Zap,{size:10,fill:"currentColor"})," ",i.aiActionsCurrent," / ",999999===i.aiActionsLimit?"∞":i.aiActionsLimit]})]}),f&&(0,b.jsxs)("div",{className:"bg-indigo-50 p-3 border-b border-indigo-100 text-xs text-indigo-800",children:[(0,b.jsxs)("div",{className:"font-bold flex items-center gap-1 mb-1",children:[(0,b.jsx)(l.BookOpen,{size:12})," Contexte :"]}),(0,b.jsxs)("div",{className:"italic truncate opacity-80",children:['"',f.substring(0,60),'..."']})]}),(0,b.jsxs)("div",{className:"flex-1 overflow-y-auto p-4 space-y-4 bg-slate-50",children:[0===a.length&&(0,b.jsxs)("div",{className:"text-center text-slate-400 mt-10",children:[(0,b.jsx)(m,{size:48,className:"mx-auto mb-2 opacity-50"}),(0,b.jsx)("p",{className:"text-sm",children:"Bonjour ! Comment puis-je vous aider aujourd'hui ?"}),s&&(0,b.jsx)("div",{className:"mt-4 p-4 bg-red-50 border border-red-100 rounded-xl text-red-600 text-xs font-bold uppercase animate-pulse",children:"Limite atteinte ! Améliorez votre plan."})]}),a.map(a=>(0,b.jsx)("div",{className:`flex flex-col ${"user"===a.role?"items-end":"items-start"}`,children:(0,b.jsxs)("div",{className:`max-w-[85%] rounded-2xl p-4 text-sm shadow-sm ${"user"===a.role?"bg-indigo-600 text-white rounded-br-none":"bg-white text-slate-700 border border-slate-100 rounded-bl-none"}`,children:["model"===a.role&&"reflection"===a.responseType&&(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-[10px] font-black text-amber-600 mb-1.5 uppercase tracking-wide",children:[(0,b.jsx)(n,{size:12})," Réflexion"]}),(0,b.jsx)("div",{className:"whitespace-pre-wrap leading-relaxed",children:a.text})]})},a.id)),g&&(0,b.jsx)("div",{className:"flex justify-start",children:(0,b.jsxs)("div",{className:"bg-white p-3 rounded-2xl rounded-bl-none shadow-sm border border-slate-100 flex items-center gap-2 text-xs text-slate-500",children:[(0,b.jsx)(k.RefreshCw,{size:14,className:"animate-spin"})," L'IA travaille..."]})}),(0,b.jsx)("div",{ref:r})]}),(0,b.jsx)("div",{className:"p-4 bg-white border-t border-slate-200",children:(0,b.jsxs)("form",{onSubmit:a=>{a.preventDefault(),p.trim()&&!g&&(d(p),q(""))},className:"relative",children:[(0,b.jsx)("input",{type:"text",value:p,onChange:a=>q(a.target.value),placeholder:s?"Limite atteinte...":"Votre message...",className:"w-full pl-4 pr-12 py-3 bg-slate-100 rounded-2xl text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-shadow disabled:opacity-50",disabled:g||s}),(0,b.jsx)("button",{type:"submit",disabled:!p.trim()||g||s,className:"absolute right-1.5 top-1.5 p-2 bg-indigo-600 text-white rounded-xl hover:bg-indigo-700 disabled:opacity-50 transition-colors shadow-md",children:(0,b.jsx)(j,{size:18})})]})})]})};var q=a.i(14294);let r=(0,i.default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);var s=a.i(95556),t=a.i(27197),u=a.i(63287),v=a.i(20769);let w=(0,i.default)("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]);var x=a.i(5127);let y=(0,i.default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),z=(0,i.default)("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]),A=(0,i.default)("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var B=a.i(38089);let C=(0,i.default)("layout-dashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);var D=a.i(82772),E=a.i(33782),F=a.i(46451);let G=a=>{let{project:d,user:e,viewMode:f,currentChapterId:g,children:h}=a,[i,j]=(0,c.useState)(!0),[k,l]=(0,c.useState)(!0),m=d.chapters.find(a=>a.id===g);return(0,b.jsxs)("div",{className:`flex h-screen overflow-hidden no-print ${"dark"===e.preferences.theme?"bg-slate-900 text-white":"sepia"===e.preferences.theme?"bg-[#f4ecd8]":"bg-[#eef2ff]"}`,children:[(0,b.jsxs)("aside",{className:`${i?"w-64":"w-0"} bg-slate-900 text-slate-300 flex-shrink-0 transition-all duration-300 overflow-hidden flex flex-col border-r border-slate-800`,children:[(0,b.jsxs)("div",{className:"p-4 border-b border-slate-700",children:[(0,b.jsxs)("h1",{className:"text-white font-bold flex items-center gap-2 mb-4 cursor-pointer",onClick:()=>a.onViewModeChange("dashboard"),children:[(0,b.jsx)(q.Book,{className:"text-blue-400"})," PlumeIA"]}),(0,b.jsx)("input",{type:"text",value:d.title,onChange:b=>a.onUpdateProject({title:b.target.value}),className:"w-full bg-transparent font-serif font-bold text-white text-lg mb-1 focus:outline-none focus:border-b focus:border-blue-500 truncate",placeholder:"Titre du livre"}),(0,b.jsxs)("button",{onClick:()=>a.onViewModeChange("dashboard"),className:"w-full flex items-center gap-2 text-xs hover:bg-slate-800 p-2 rounded transition-colors text-slate-400",children:[(0,b.jsx)(C,{size:14})," Retour au Dashboard"]})]}),(0,b.jsxs)("div",{className:"flex-1 overflow-y-auto py-2",children:[(0,b.jsxs)("div",{className:"px-4 py-2 text-xs font-semibold text-slate-500 uppercase flex justify-between items-center",children:["Chapitres ",(0,b.jsx)("button",{onClick:a.onAddChapter,className:"hover:text-blue-400",children:(0,b.jsx)(E.Plus,{size:14})})]}),d.chapters.map((c,d)=>(0,b.jsxs)("div",{className:"group relative",children:[(0,b.jsxs)("button",{onClick:()=>a.onChapterSelect(c.id),className:`w-full text-left px-4 py-2 text-sm truncate transition-colors ${g===c.id&&"write"===f?"bg-blue-900 text-white border-r-2 border-blue-400":"hover:bg-slate-800"}`,children:[d+1,". ",c.title]}),(0,b.jsx)("button",{onClick:()=>a.onDeleteChapter(c.id),className:"absolute right-2 top-2 text-slate-600 hover:text-red-400 opacity-0 group-hover:opacity-100",children:(0,b.jsx)(F.Trash2,{size:14})})]},c.id)),(0,b.jsx)("div",{className:"mt-6 px-4 py-2 text-xs font-semibold text-slate-500 uppercase",children:"Outils & Bible"}),(0,b.jsxs)("button",{onClick:()=>a.onViewModeChange("write"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"write"===f?"bg-blue-900 text-white":"hover:bg-slate-800"}`,children:[(0,b.jsx)(r,{size:16})," Retour à la rédaction"]}),(0,b.jsxs)("button",{onClick:()=>a.onViewModeChange("world_building"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"world_building"===f?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,b.jsx)(s.Globe,{size:16})," Bible du Monde"]}),(0,b.jsxs)("button",{onClick:()=>a.onViewModeChange("workflow"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"workflow"===f?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,b.jsx)(t.GitGraph,{size:16})," Workflow"]}),(0,b.jsxs)("button",{onClick:()=>a.onViewModeChange("ideas"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"ideas"===f?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,b.jsx)(u.Lightbulb,{size:16})," Boîte à Idées"]}),(0,b.jsxs)("button",{onClick:()=>a.onViewModeChange("settings"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"settings"===f?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,b.jsx)(v.Settings,{size:16})," Paramètres"]})]}),(0,b.jsxs)("div",{className:"p-4 border-t border-slate-800",children:[(0,b.jsxs)("div",{className:"bg-slate-800 rounded-lg p-3 mb-4",children:[(0,b.jsxs)("div",{className:"flex justify-between text-[10px] text-slate-400 uppercase font-bold mb-1",children:[(0,b.jsx)("span",{children:"Actions IA"}),(0,b.jsxs)("span",{children:[e.usage.aiActionsCurrent," / ",999999===e.usage.aiActionsLimit?"∞":e.usage.aiActionsLimit]})]}),(0,b.jsx)("div",{className:"h-1.5 w-full bg-slate-700 rounded-full overflow-hidden",children:(0,b.jsx)("div",{className:"h-full bg-blue-500",style:{width:`${Math.min(100,e.usage.aiActionsCurrent/e.usage.aiActionsLimit*100)}%`}})})]}),(0,b.jsxs)("button",{onClick:()=>a.onViewModeChange("profile"),className:"w-full flex items-center gap-2 px-3 py-2 text-xs text-slate-400 hover:bg-slate-800 rounded mb-2",children:[(0,b.jsx)(D.User,{size:14})," Mon Compte"]}),(0,b.jsxs)("button",{onClick:a.onLogout,className:"w-full flex items-center gap-2 px-3 py-2 text-xs text-red-400 hover:bg-red-900/20 rounded",children:[(0,b.jsx)(B.LogOut,{size:14})," Déconnexion"]})]})]}),(0,b.jsxs)("div",{className:"flex-1 flex flex-col h-full overflow-hidden",children:[(0,b.jsxs)("header",{className:"h-14 bg-white border-b border-slate-200 flex items-center justify-between px-4 shadow-sm z-10 text-slate-800",children:[(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("button",{onClick:()=>j(!i),className:"text-slate-500 hover:text-slate-800",children:(0,b.jsx)(w,{size:20})}),"write"===f?(0,b.jsx)("input",{type:"text",value:m?.title||"",onChange:b=>a.onUpdateProject({chapters:d.chapters.map(a=>a.id===g?{...a,title:b.target.value}:a)}),className:"font-serif font-bold text-lg bg-transparent border-b border-transparent focus:border-blue-500 focus:outline-none"}):(0,b.jsx)("span",{className:"font-bold uppercase tracking-widest text-xs",children:f})]}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsxs)("button",{onClick:a.onOpenExport,className:"bg-blue-600 text-white px-4 py-1.5 rounded-lg text-sm font-medium hover:bg-blue-700 flex items-center gap-2",children:[(0,b.jsx)(z,{size:16})," Publier"]}),(0,b.jsx)("button",{onClick:a.onOpenHelp,className:"p-2 text-slate-400 hover:text-blue-600 rounded-full",children:(0,b.jsx)(A,{size:20})}),(0,b.jsx)("button",{onClick:()=>l(!k),className:`p-2 rounded-full ${k?"bg-indigo-100 text-indigo-600":"text-slate-500 hover:bg-slate-100"}`,children:k?(0,b.jsx)(x.ChevronRight,{size:20}):(0,b.jsx)(y,{size:20})})]})]}),(0,b.jsx)("main",{className:"flex-1 overflow-hidden relative",children:h})]}),(0,b.jsx)("div",{className:`${k?"w-80 lg:w-96":"w-0"} transition-all duration-300 flex-shrink-0 h-full border-l border-slate-200 relative`,children:k&&(0,b.jsx)(p,{chatHistory:a.chatHistory,onSendMessage:a.onSendMessage,onInsertText:a.onInsertText,selectedText:"",isGenerating:a.isGenerating,usage:e.usage})})]})},H=(0,i.default)("printer",[["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",key:"143wyd"}],["path",{d:"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6",key:"1itne7"}],["rect",{x:"6",y:"14",width:"12",height:"8",rx:"1",key:"1ue0tg"}]]);var I=a.i(40400);let J=(0,i.default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]),K=(0,i.default)("file-braces",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"1oajmo"}],["path",{d:"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"mpwhp6"}]]),L=({isOpen:a,onClose:d,project:e,onPrint:f})=>{let[g,h]=(0,c.useState)("pdf"),[i,j]=(0,c.useState)("A4"),[k,l]=(0,c.useState)(!0),[m,n]=(0,c.useState)(!0);if(!a)return null;let o=()=>{let a=` +module.exports=[74007,a=>{"use strict";var b=a.i(78352),c=a.i(28091),d=a.i(34896),e=a.i(95121),f=a.i(46344),g=a.i(3622),h=a.i(31715),i=a.i(806),j=a.i(29892);let k=(0,j.default)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);var l=a.i(45044),m=a.i(73258);let n=(0,j.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]),o=(0,j.default)("brain-circuit",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M9 13a4.5 4.5 0 0 0 3-4",key:"10igwf"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M12 13h4",key:"1ku699"}],["path",{d:"M12 18h6a2 2 0 0 1 2 2v1",key:"105ag5"}],["path",{d:"M12 8h8",key:"1lhi5i"}],["path",{d:"M16 8V5a2 2 0 0 1 2-2",key:"u6izg6"}],["circle",{cx:"16",cy:"13",r:".5",key:"ry7gng"}],["circle",{cx:"18",cy:"3",r:".5",key:"1aiba7"}],["circle",{cx:"20",cy:"21",r:".5",key:"yhc1fs"}],["circle",{cx:"20",cy:"8",r:".5",key:"1e43v0"}]]);var p=a.i(72071);let q=({chatHistory:a,onSendMessage:d,onInsertText:e,selectedText:f,isGenerating:g,usage:h})=>{let[j,q]=(0,c.useState)(""),r=(0,c.useRef)(null);(0,c.useEffect)(()=>{r.current?.scrollIntoView({behavior:"smooth"})},[a,g]);let s=!!h&&h.aiActionsCurrent>=h.aiActionsLimit;return(0,b.jsxs)("div",{className:"flex flex-col h-full bg-white border-l border-slate-200 shadow-xl w-80 lg:w-96",children:[(0,b.jsxs)("div",{className:"p-4 bg-indigo-600 text-white flex items-center justify-between shadow-md",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(i.Sparkles,{size:20,className:"animate-pulse"}),(0,b.jsx)("h3",{className:"font-bold tracking-tight",children:"Assistant IA"})]}),h&&(0,b.jsxs)("div",{className:"bg-indigo-900/50 px-2 py-1 rounded text-[10px] font-black flex items-center gap-1",children:[(0,b.jsx)(p.Zap,{size:10,fill:"currentColor"})," ",h.aiActionsCurrent," / ",999999===h.aiActionsLimit?"∞":h.aiActionsLimit]})]}),f&&(0,b.jsxs)("div",{className:"bg-indigo-50 p-3 border-b border-indigo-100 text-xs text-indigo-800",children:[(0,b.jsxs)("div",{className:"font-bold flex items-center gap-1 mb-1",children:[(0,b.jsx)(m.BookOpen,{size:12})," Contexte :"]}),(0,b.jsxs)("div",{className:"italic truncate opacity-80",children:['"',f.substring(0,60),'..."']})]}),(0,b.jsxs)("div",{className:"flex-1 overflow-y-auto p-4 space-y-4 bg-slate-50",children:[0===a.length&&(0,b.jsxs)("div",{className:"text-center text-slate-400 mt-10",children:[(0,b.jsx)(n,{size:48,className:"mx-auto mb-2 opacity-50"}),(0,b.jsx)("p",{className:"text-sm",children:"Bonjour ! Comment puis-je vous aider aujourd'hui ?"}),s&&(0,b.jsx)("div",{className:"mt-4 p-4 bg-red-50 border border-red-100 rounded-xl text-red-600 text-xs font-bold uppercase animate-pulse",children:"Limite atteinte ! Améliorez votre plan."})]}),a.map(a=>(0,b.jsx)("div",{className:`flex flex-col ${"user"===a.role?"items-end":"items-start"}`,children:(0,b.jsxs)("div",{className:`max-w-[85%] rounded-2xl p-4 text-sm shadow-sm ${"user"===a.role?"bg-indigo-600 text-white rounded-br-none":"bg-white text-slate-700 border border-slate-100 rounded-bl-none"}`,children:["model"===a.role&&"reflection"===a.responseType&&(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-[10px] font-black text-amber-600 mb-1.5 uppercase tracking-wide",children:[(0,b.jsx)(o,{size:12})," Réflexion"]}),(0,b.jsx)("div",{className:"whitespace-pre-wrap leading-relaxed",children:a.text})]})},a.id)),g&&(0,b.jsx)("div",{className:"flex justify-start",children:(0,b.jsxs)("div",{className:"bg-white p-3 rounded-2xl rounded-bl-none shadow-sm border border-slate-100 flex items-center gap-2 text-xs text-slate-500",children:[(0,b.jsx)(l.RefreshCw,{size:14,className:"animate-spin"})," L'IA travaille..."]})}),(0,b.jsx)("div",{ref:r})]}),(0,b.jsx)("div",{className:"p-4 bg-white border-t border-slate-200",children:(0,b.jsxs)("form",{onSubmit:a=>{a.preventDefault(),j.trim()&&!g&&(d(j),q(""))},className:"relative",children:[(0,b.jsx)("input",{type:"text",value:j,onChange:a=>q(a.target.value),placeholder:s?"Limite atteinte...":"Votre message...",className:"w-full pl-4 pr-12 py-3 bg-slate-100 rounded-2xl text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-shadow disabled:opacity-50",disabled:g||s}),(0,b.jsx)("button",{type:"submit",disabled:!j.trim()||g||s,className:"absolute right-1.5 top-1.5 p-2 bg-indigo-600 text-white rounded-xl hover:bg-indigo-700 disabled:opacity-50 transition-colors shadow-md",children:(0,b.jsx)(k,{size:18})})]})})]})};var r=a.i(14294);let s=(0,j.default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);var t=a.i(95556),u=a.i(27197),v=a.i(63287),w=a.i(20769);let x=(0,j.default)("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]);var y=a.i(5127);let z=(0,j.default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),A=(0,j.default)("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]),B=(0,j.default)("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var C=a.i(38089);let D=(0,j.default)("layout-dashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);var E=a.i(82772),F=a.i(33782),G=a.i(46451);let H=a=>{let{project:d,user:e,viewMode:f,currentChapterId:g,children:h}=a,[i,j]=(0,c.useState)(!0),[k,l]=(0,c.useState)(!0),m=d.chapters.find(a=>a.id===g);return(0,b.jsxs)("div",{className:`flex h-screen overflow-hidden no-print ${"dark"===e.preferences.theme?"bg-slate-900 text-white":"sepia"===e.preferences.theme?"bg-[#f4ecd8]":"bg-[#eef2ff]"}`,children:[(0,b.jsxs)("aside",{className:`${i?"w-64":"w-0"} bg-slate-900 text-slate-300 flex-shrink-0 transition-all duration-300 overflow-hidden flex flex-col border-r border-slate-800`,children:[(0,b.jsxs)("div",{className:"p-4 border-b border-slate-700",children:[(0,b.jsxs)("h1",{className:"text-white font-bold flex items-center gap-2 mb-4 cursor-pointer",onClick:()=>a.onViewModeChange("dashboard"),children:[(0,b.jsx)(r.Book,{className:"text-blue-400"})," PlumeIA"]}),(0,b.jsx)("input",{type:"text",value:d.title,onChange:b=>a.onUpdateProject({title:b.target.value}),className:"w-full bg-transparent font-serif font-bold text-white text-lg mb-1 focus:outline-none focus:border-b focus:border-blue-500 truncate",placeholder:"Titre du livre"}),(0,b.jsxs)("button",{onClick:()=>a.onViewModeChange("dashboard"),className:"w-full flex items-center gap-2 text-xs hover:bg-slate-800 p-2 rounded transition-colors text-slate-400",children:[(0,b.jsx)(D,{size:14})," Retour au Dashboard"]})]}),(0,b.jsxs)("div",{className:"flex-1 overflow-y-auto py-2",children:[(0,b.jsxs)("div",{className:"px-4 py-2 text-xs font-semibold text-slate-500 uppercase flex justify-between items-center",children:["Chapitres ",(0,b.jsx)("button",{onClick:a.onAddChapter,className:"hover:text-blue-400",children:(0,b.jsx)(F.Plus,{size:14})})]}),d.chapters.map((c,d)=>(0,b.jsxs)("div",{className:"group relative",children:[(0,b.jsxs)("button",{onClick:()=>a.onChapterSelect(c.id),className:`w-full text-left px-4 py-2 text-sm truncate transition-colors ${g===c.id&&"write"===f?"bg-blue-900 text-white border-r-2 border-blue-400":"hover:bg-slate-800"}`,children:[d+1,". ",c.title]}),(0,b.jsx)("button",{onClick:()=>a.onDeleteChapter(c.id),className:"absolute right-2 top-2 text-slate-600 hover:text-red-400 opacity-0 group-hover:opacity-100",children:(0,b.jsx)(G.Trash2,{size:14})})]},c.id)),(0,b.jsx)("div",{className:"mt-6 px-4 py-2 text-xs font-semibold text-slate-500 uppercase",children:"Outils & Bible"}),(0,b.jsxs)("button",{onClick:()=>a.onViewModeChange("write"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"write"===f?"bg-blue-900 text-white":"hover:bg-slate-800"}`,children:[(0,b.jsx)(s,{size:16})," Retour à la rédaction"]}),(0,b.jsxs)("button",{onClick:()=>a.onViewModeChange("world_building"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"world_building"===f?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,b.jsx)(t.Globe,{size:16})," Bible du Monde"]}),(0,b.jsxs)("button",{onClick:()=>a.onViewModeChange("workflow"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"workflow"===f?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,b.jsx)(u.GitGraph,{size:16})," Workflow"]}),(0,b.jsxs)("button",{onClick:()=>a.onViewModeChange("ideas"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"ideas"===f?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,b.jsx)(v.Lightbulb,{size:16})," Boîte à Idées"]}),(0,b.jsxs)("button",{onClick:()=>a.onViewModeChange("settings"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"settings"===f?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,b.jsx)(w.Settings,{size:16})," Paramètres"]})]}),(0,b.jsxs)("div",{className:"p-4 border-t border-slate-800",children:[(0,b.jsxs)("div",{className:"bg-slate-800 rounded-lg p-3 mb-4",children:[(0,b.jsxs)("div",{className:"flex justify-between text-[10px] text-slate-400 uppercase font-bold mb-1",children:[(0,b.jsx)("span",{children:"Actions IA"}),(0,b.jsxs)("span",{children:[e.usage.aiActionsCurrent," / ",999999===e.usage.aiActionsLimit?"∞":e.usage.aiActionsLimit]})]}),(0,b.jsx)("div",{className:"h-1.5 w-full bg-slate-700 rounded-full overflow-hidden",children:(0,b.jsx)("div",{className:"h-full bg-blue-500",style:{width:`${Math.min(100,e.usage.aiActionsCurrent/e.usage.aiActionsLimit*100)}%`}})})]}),(0,b.jsxs)("button",{onClick:()=>a.onViewModeChange("profile"),className:"w-full flex items-center gap-2 px-3 py-2 text-xs text-slate-400 hover:bg-slate-800 rounded mb-2",children:[(0,b.jsx)(E.User,{size:14})," Mon Compte"]}),(0,b.jsxs)("button",{onClick:a.onLogout,className:"w-full flex items-center gap-2 px-3 py-2 text-xs text-red-400 hover:bg-red-900/20 rounded",children:[(0,b.jsx)(C.LogOut,{size:14})," Déconnexion"]})]})]}),(0,b.jsxs)("div",{className:"flex-1 flex flex-col h-full overflow-hidden",children:[(0,b.jsxs)("header",{className:"h-14 bg-white border-b border-slate-200 flex items-center justify-between px-4 shadow-sm z-10 text-slate-800",children:[(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("button",{onClick:()=>j(!i),className:"text-slate-500 hover:text-slate-800",children:(0,b.jsx)(x,{size:20})}),"write"===f?(0,b.jsx)("input",{type:"text",value:m?.title||"",onChange:b=>a.onUpdateProject({chapters:d.chapters.map(a=>a.id===g?{...a,title:b.target.value}:a)}),className:"font-serif font-bold text-lg bg-transparent border-b border-transparent focus:border-blue-500 focus:outline-none"}):(0,b.jsx)("span",{className:"font-bold uppercase tracking-widest text-xs",children:f})]}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsxs)("button",{onClick:a.onOpenExport,className:"bg-blue-600 text-white px-4 py-1.5 rounded-lg text-sm font-medium hover:bg-blue-700 flex items-center gap-2",children:[(0,b.jsx)(A,{size:16})," Publier"]}),(0,b.jsx)("button",{onClick:a.onOpenHelp,className:"p-2 text-slate-400 hover:text-blue-600 rounded-full",children:(0,b.jsx)(B,{size:20})}),(0,b.jsx)("button",{onClick:()=>l(!k),className:`p-2 rounded-full ${k?"bg-indigo-100 text-indigo-600":"text-slate-500 hover:bg-slate-100"}`,children:k?(0,b.jsx)(y.ChevronRight,{size:20}):(0,b.jsx)(z,{size:20})})]})]}),(0,b.jsx)("main",{className:"flex-1 overflow-hidden relative",children:h})]}),(0,b.jsx)("div",{className:`${k?"w-80 lg:w-96":"w-0"} transition-all duration-300 flex-shrink-0 h-full border-l border-slate-200 relative`,children:k&&(0,b.jsx)(q,{chatHistory:a.chatHistory,onSendMessage:a.onSendMessage,onInsertText:a.onInsertText,selectedText:"",isGenerating:a.isGenerating,usage:e.usage})})]})},I=(0,j.default)("printer",[["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",key:"143wyd"}],["path",{d:"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6",key:"1itne7"}],["rect",{x:"6",y:"14",width:"12",height:"8",rx:"1",key:"1ue0tg"}]]);var J=a.i(40400);let K=(0,j.default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]),L=(0,j.default)("file-braces",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"1oajmo"}],["path",{d:"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"mpwhp6"}]]),M=({isOpen:a,onClose:d,project:e,onPrint:f})=>{let[g,h]=(0,c.useState)("pdf"),[i,j]=(0,c.useState)("A4"),[k,l]=(0,c.useState)(!0),[m,n]=(0,c.useState)(!0);if(!a)return null;let o=()=>{let a=` @@ -27,7 +27,7 @@ module.exports=[74007,a=>{"use strict";var b=a.i(78352),c=a.i(28091),d=a.i(34896

${b.title}

${b.content}
- `}),a+=""},p=(a,b)=>{let c=URL.createObjectURL(a),e=document.createElement("a");e.href=c,e.download=b,document.body.appendChild(e),e.click(),document.body.removeChild(e),URL.revokeObjectURL(c),d()};return(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm animate-in fade-in duration-200 no-print",children:(0,b.jsxs)("div",{className:"bg-white rounded-xl shadow-2xl w-[600px] overflow-hidden flex flex-col max-h-[90vh]",children:[(0,b.jsxs)("div",{className:"bg-slate-900 text-white p-6 flex justify-between items-center",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("h2",{className:"text-xl font-bold flex items-center gap-2",children:[(0,b.jsx)(J,{size:24})," Exporter le livre"]}),(0,b.jsx)("p",{className:"text-slate-400 text-sm mt-1",children:e.title})]}),(0,b.jsx)("button",{onClick:d,className:"text-slate-400 hover:text-white transition-colors",children:(0,b.jsx)(I.X,{size:24})})]}),(0,b.jsxs)("div",{className:"p-6 overflow-y-auto flex-1",children:[(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4 mb-8",children:[(0,b.jsxs)("button",{onClick:()=>h("pdf"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"pdf"===g?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,b.jsx)(H,{size:32}),(0,b.jsx)("div",{className:"font-semibold",children:"PDF (Impression)"})]}),(0,b.jsxs)("button",{onClick:()=>h("word"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"word"===g?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,b.jsx)(r,{size:32}),(0,b.jsx)("div",{className:"font-semibold",children:"Microsoft Word"})]}),(0,b.jsxs)("button",{onClick:()=>h("epub"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"epub"===g?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,b.jsx)(q.Book,{size:32}),(0,b.jsx)("div",{className:"font-semibold",children:"EPUB / Ebook"})]}),(0,b.jsxs)("button",{onClick:()=>h("markdown"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"markdown"===g?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,b.jsx)(K,{size:32}),(0,b.jsx)("div",{className:"font-semibold",children:"Markdown"})]})]}),(0,b.jsxs)("div",{className:"bg-slate-50 rounded-lg p-5 border border-slate-200",children:[(0,b.jsxs)("h3",{className:"text-sm font-bold text-slate-500 uppercase tracking-wider mb-4",children:["Paramètres d'exportation (",g.toUpperCase(),")"]}),(0,b.jsxs)("div",{className:"space-y-4",children:["pdf"===g&&(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("label",{className:"text-slate-700 font-medium",children:"Format du papier"}),(0,b.jsx)("span",{className:"text-xs text-slate-400",children:"Géré par l'imprimante (A4, A5...)"})]}),(0,b.jsx)("div",{className:"bg-slate-200 px-3 py-1 rounded text-xs font-mono text-slate-600",children:"Auto"})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("label",{className:"text-slate-700 font-medium cursor-pointer",htmlFor:"cover",children:"Inclure la page de titre"}),(0,b.jsx)("input",{id:"cover",type:"checkbox",checked:k,onChange:a=>l(a.target.checked),className:"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500"})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("label",{className:"text-slate-700 font-medium cursor-pointer",htmlFor:"toc",children:"Générer la table des matières"}),(0,b.jsx)("input",{id:"toc",type:"checkbox",checked:m,onChange:a=>n(a.target.checked),className:"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500"})]}),"epub"===g&&(0,b.jsx)("p",{className:"text-xs text-amber-600 bg-amber-50 p-2 rounded mt-2",children:"Note: L'export EPUB génère un fichier XHTML optimisé prêt à être converti par Calibre ou Kindle Previewer."})]})]})]}),(0,b.jsxs)("div",{className:"p-4 border-t border-slate-200 bg-slate-50 flex justify-end gap-3",children:[(0,b.jsx)("button",{onClick:d,className:"px-5 py-2 text-slate-600 hover:bg-slate-200 rounded-lg font-medium transition-colors",children:"Annuler"}),(0,b.jsxs)("button",{onClick:()=>{let a=e.title.replace(/[^a-z0-9]/gi,"_").toLowerCase();if("pdf"===g)f({includeCover:k,includeTOC:m});else if("word"===g)p(new Blob(["\uFEFF",o()],{type:"application/msword"}),`${a}.doc`);else if("epub"===g)p(new Blob([o()],{type:"application/xhtml+xml"}),`${a}.xhtml`);else if("markdown"===g){let b=`# ${e.title} + `}),a+=""},p=(a,b)=>{let c=URL.createObjectURL(a),e=document.createElement("a");e.href=c,e.download=b,document.body.appendChild(e),e.click(),document.body.removeChild(e),URL.revokeObjectURL(c),d()};return(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm animate-in fade-in duration-200 no-print",children:(0,b.jsxs)("div",{className:"bg-white rounded-xl shadow-2xl w-[600px] overflow-hidden flex flex-col max-h-[90vh]",children:[(0,b.jsxs)("div",{className:"bg-slate-900 text-white p-6 flex justify-between items-center",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("h2",{className:"text-xl font-bold flex items-center gap-2",children:[(0,b.jsx)(K,{size:24})," Exporter le livre"]}),(0,b.jsx)("p",{className:"text-slate-400 text-sm mt-1",children:e.title})]}),(0,b.jsx)("button",{onClick:d,className:"text-slate-400 hover:text-white transition-colors",children:(0,b.jsx)(J.X,{size:24})})]}),(0,b.jsxs)("div",{className:"p-6 overflow-y-auto flex-1",children:[(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4 mb-8",children:[(0,b.jsxs)("button",{onClick:()=>h("pdf"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"pdf"===g?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,b.jsx)(I,{size:32}),(0,b.jsx)("div",{className:"font-semibold",children:"PDF (Impression)"})]}),(0,b.jsxs)("button",{onClick:()=>h("word"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"word"===g?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,b.jsx)(s,{size:32}),(0,b.jsx)("div",{className:"font-semibold",children:"Microsoft Word"})]}),(0,b.jsxs)("button",{onClick:()=>h("epub"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"epub"===g?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,b.jsx)(r.Book,{size:32}),(0,b.jsx)("div",{className:"font-semibold",children:"EPUB / Ebook"})]}),(0,b.jsxs)("button",{onClick:()=>h("markdown"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"markdown"===g?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,b.jsx)(L,{size:32}),(0,b.jsx)("div",{className:"font-semibold",children:"Markdown"})]})]}),(0,b.jsxs)("div",{className:"bg-slate-50 rounded-lg p-5 border border-slate-200",children:[(0,b.jsxs)("h3",{className:"text-sm font-bold text-slate-500 uppercase tracking-wider mb-4",children:["Paramètres d'exportation (",g.toUpperCase(),")"]}),(0,b.jsxs)("div",{className:"space-y-4",children:["pdf"===g&&(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("label",{className:"text-slate-700 font-medium",children:"Format du papier"}),(0,b.jsx)("span",{className:"text-xs text-slate-400",children:"Géré par l'imprimante (A4, A5...)"})]}),(0,b.jsx)("div",{className:"bg-slate-200 px-3 py-1 rounded text-xs font-mono text-slate-600",children:"Auto"})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("label",{className:"text-slate-700 font-medium cursor-pointer",htmlFor:"cover",children:"Inclure la page de titre"}),(0,b.jsx)("input",{id:"cover",type:"checkbox",checked:k,onChange:a=>l(a.target.checked),className:"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500"})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("label",{className:"text-slate-700 font-medium cursor-pointer",htmlFor:"toc",children:"Générer la table des matières"}),(0,b.jsx)("input",{id:"toc",type:"checkbox",checked:m,onChange:a=>n(a.target.checked),className:"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500"})]}),"epub"===g&&(0,b.jsx)("p",{className:"text-xs text-amber-600 bg-amber-50 p-2 rounded mt-2",children:"Note: L'export EPUB génère un fichier XHTML optimisé prêt à être converti par Calibre ou Kindle Previewer."})]})]})]}),(0,b.jsxs)("div",{className:"p-4 border-t border-slate-200 bg-slate-50 flex justify-end gap-3",children:[(0,b.jsx)("button",{onClick:d,className:"px-5 py-2 text-slate-600 hover:bg-slate-200 rounded-lg font-medium transition-colors",children:"Annuler"}),(0,b.jsxs)("button",{onClick:()=>{let a=e.title.replace(/[^a-z0-9]/gi,"_").toLowerCase();if("pdf"===g)f({includeCover:k,includeTOC:m});else if("word"===g)p(new Blob(["\uFEFF",o()],{type:"application/msword"}),`${a}.doc`);else if("epub"===g)p(new Blob([o()],{type:"application/xhtml+xml"}),`${a}.xhtml`);else if("markdown"===g){let b=`# ${e.title} By ${e.author} `;e.chapters.forEach(a=>{let c=a.content.replace(/<[^>]+>/g,"\n");b+=`## ${a.title} @@ -36,6 +36,6 @@ ${c} --- -`}),p(new Blob([b],{type:"text/markdown"}),`${a}.md`)}},className:"px-6 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg font-medium shadow-md transition-all flex items-center gap-2",children:["pdf"===g?(0,b.jsx)(H,{size:18}):(0,b.jsx)(J,{size:18}),"pdf"===g?"Imprimer / Enregistrer PDF":`T\xe9l\xe9charger .${"word"===g?"doc":"epub"===g?"xhtml":"md"}`]})]})]})})},M=(0,i.default)("keyboard",[["path",{d:"M10 8h.01",key:"1r9ogq"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M14 8h.01",key:"1primd"}],["path",{d:"M16 12h.01",key:"1l6xoz"}],["path",{d:"M18 8h.01",key:"emo2bl"}],["path",{d:"M6 8h.01",key:"x9i8wu"}],["path",{d:"M7 16h10",key:"wp8him"}],["path",{d:"M8 12h.01",key:"czm47f"}],["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}]]);var N=a.i(76763),O=a.i(6111);let P=(0,i.default)("command",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]);var Q=a.i(75108);let R=({children:a})=>(0,b.jsx)("kbd",{className:"px-2 py-1 text-xs font-semibold text-slate-800 bg-slate-100 border border-slate-300 rounded-md shadow-[0px_2px_0px_0px_rgba(203,213,225,1)] mx-1 font-mono",children:a}),S=({isOpen:a,onClose:c,viewMode:d})=>a?(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm animate-in fade-in duration-200",children:(0,b.jsxs)("div",{className:"bg-white rounded-xl shadow-2xl w-[800px] max-h-[90vh] flex flex-col overflow-hidden",children:[(0,b.jsxs)("div",{className:"bg-slate-900 text-white p-6 flex justify-between items-center shrink-0",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("h2",{className:"text-xl font-bold flex items-center gap-2",children:[(0,b.jsx)(l.BookOpen,{size:24,className:"text-blue-400"})," Aide : ","workflow"===d?"Workflow & Dialogues":"world_building"===d?"Bible du Monde":"settings"===d?"Paramètres":"ideas"===d?"Boîte à Idées":"Éditeur & IA"]}),(0,b.jsx)("p",{className:"text-slate-400 text-sm mt-1",children:"Astuces pour l'écran actuel."})]}),(0,b.jsx)("button",{onClick:c,className:"text-slate-400 hover:text-white transition-colors p-2 hover:bg-slate-800 rounded-full",children:(0,b.jsx)(I.X,{size:24})})]}),(0,b.jsxs)("div",{className:"overflow-y-auto p-8",children:[(()=>{switch(d){case"ideas":return(0,b.jsxs)("section",{className:"mb-8",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-yellow-600 flex items-center gap-2 border-b border-yellow-100 pb-2 mb-4",children:[(0,b.jsx)(u.Lightbulb,{size:20})," Boîte à Idées & Tâches"]}),(0,b.jsxs)("div",{className:"text-sm text-slate-600 space-y-4",children:[(0,b.jsx)("p",{children:"Un espace de type Kanban pour ne rien oublier. Utilisez-le pour noter des idées fugaces, planifier des recherches ou lister les scènes à écrire."}),(0,b.jsxs)("ul",{className:"space-y-3",children:[(0,b.jsxs)("li",{className:"flex items-start gap-2",children:[(0,b.jsx)(N.MousePointerClick,{size:16,className:"mt-0.5 shrink-0"}),(0,b.jsxs)("span",{children:[(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:"Glisser-Déposer :"})," Déplacez les cartes d'une colonne à l'autre (À faire → En cours → Validé) pour suivre votre progression."]})]}),(0,b.jsxs)("li",{className:"flex items-start gap-2",children:[(0,b.jsx)(Q.Layout,{size:16,className:"mt-0.5 shrink-0"}),(0,b.jsxs)("span",{children:[(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:"Catégories :"})," Utilisez les catégories (Intrigue, Personnage, Recherche) pour filtrer visuellement vos tâches grâce aux codes couleurs."]})]})]})]})]});case"workflow":return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("section",{className:"mb-8",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-indigo-700 flex items-center gap-2 border-b border-indigo-100 pb-2 mb-4",children:[(0,b.jsx)(t.GitGraph,{size:20})," Organisation Narrative"]}),(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 text-sm text-slate-600",children:(0,b.jsxs)("ul",{className:"space-y-3",children:[(0,b.jsxs)("li",{className:"flex items-start gap-2",children:[(0,b.jsx)(N.MousePointerClick,{size:16,className:"mt-0.5 shrink-0"}),(0,b.jsxs)("span",{children:[(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:"Sélection :"})," ",(0,b.jsx)(R,{children:"Ctrl"})," + Clic pour sélectionner plusieurs cartes. Glissez pour déplacer tout un groupe."]})]}),(0,b.jsxs)("li",{className:"flex items-start gap-2",children:[(0,b.jsx)(P,{size:16,className:"mt-0.5 shrink-0"}),(0,b.jsxs)("span",{children:[(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:"Copier / Coller :"})," ",(0,b.jsx)(R,{children:"Ctrl"})," + ",(0,b.jsx)(R,{children:"C"})," pour copier les nœuds sélectionnés, ",(0,b.jsx)(R,{children:"Ctrl"})," + ",(0,b.jsx)(R,{children:"V"})," pour coller."]})]}),(0,b.jsxs)("li",{className:"flex items-start gap-2",children:[(0,b.jsx)(Q.Layout,{size:16,className:"mt-0.5 shrink-0"}),(0,b.jsxs)("span",{children:[(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:"Connexions :"})," Tirez depuis le cercle à droite d'une carte pour lier les événements."]})]})]})})]}),(0,b.jsxs)("section",{className:"bg-blue-50 p-6 rounded-xl border border-blue-100 mb-8",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-blue-800 flex items-center gap-2 border-b border-blue-200 pb-2 mb-4",children:[(0,b.jsx)(O.MessageCircle,{size:20})," Mode Dialogue (Workflow)"]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 text-sm",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"font-semibold text-slate-800 mb-1",children:"Écriture Rapide"}),(0,b.jsxs)("p",{className:"text-slate-600 leading-relaxed mb-3",children:["Tapez un nom et ",(0,b.jsx)(R,{children:"Entrée"})," : le formatage ",(0,b.jsx)("code",{children:"Nom: "})," s'ajoute seul."]}),(0,b.jsxs)("p",{className:"text-slate-600 leading-relaxed",children:["Dans un dialogue, ",(0,b.jsx)(R,{children:"Entrée"})," change de ligne et ",(0,b.jsx)("strong",{children:"devine le prochain interlocuteur"})," automatiquement."]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"font-semibold text-slate-800 mb-1",children:"Rotation & Insertion"}),(0,b.jsxs)("p",{className:"text-slate-600 leading-relaxed mb-3",children:[(0,b.jsx)(R,{children:"Tab"})," permute instantanément entre les personnages présents dans la scène."]}),(0,b.jsxs)("p",{className:"text-slate-600 leading-relaxed",children:["Utilisez ",(0,b.jsx)(R,{children:"@"})," pour insérer un personnage, ",(0,b.jsx)(R,{children:"#"})," pour un lieu."]})]})]})]})]});case"world_building":return(0,b.jsxs)("section",{className:"mb-8",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-green-700 flex items-center gap-2 border-b border-green-100 pb-2 mb-4",children:[(0,b.jsx)(s.Globe,{size:20})," Bible du Monde"]}),(0,b.jsxs)("div",{className:"text-sm text-slate-600 space-y-4",children:[(0,b.jsxs)("p",{children:["La bible du monde permet de centraliser toutes les informations sur vos personnages et lieux. Ces informations sont ",(0,b.jsx)("strong",{children:"lues par l'IA"})," pour assurer la cohérence de l'histoire."]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 mt-4",children:[(0,b.jsxs)("div",{className:"bg-slate-50 p-4 rounded-lg",children:[(0,b.jsx)("h4",{className:"font-bold text-slate-800 mb-2",children:"Modèles Personnalisés"}),(0,b.jsx)("p",{children:'Cliquez sur le bouton "Modèles" pour ajouter des champs spécifiques (ex: "Type de Magie", "Allégeance") à tous vos personnages ou lieux.'})]}),(0,b.jsxs)("div",{className:"bg-slate-50 p-4 rounded-lg",children:[(0,b.jsx)("h4",{className:"font-bold text-slate-800 mb-2",children:"Contexte Automatique"}),(0,b.jsx)("p",{children:"Le champ \"Contexte Narratif\" se remplit automatiquement au fur et à mesure que vous écrivez votre histoire et que l'IA détecte l'évolution des personnages."})]})]})]})]});case"settings":return(0,b.jsxs)("section",{className:"mb-8",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-slate-700 flex items-center gap-2 border-b border-slate-100 pb-2 mb-4",children:[(0,b.jsx)(v.Settings,{size:20})," Paramètres du Livre"]}),(0,b.jsx)("p",{className:"text-sm text-slate-600 mb-4",children:'Ces réglages sont cruciaux pour l\'Assistant IA. Ils définissent le "ton" de toutes les générations de texte.'}),(0,b.jsxs)("ul",{className:"list-disc pl-5 space-y-2 text-sm text-slate-600",children:[(0,b.jsxs)("li",{children:[(0,b.jsx)("strong",{children:"Style Guide :"}),' Soyez précis sur le style (ex: "phrases courtes", "beaucoup de métaphores", "humour noir").']}),(0,b.jsxs)("li",{children:[(0,b.jsx)("strong",{children:"POV (Point de Vue) :"}),' Définit si l\'IA doit écrire en "Je" ou "Il/Elle".']})]})]});default:return(0,b.jsxs)("section",{className:"mb-8",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-amber-600 flex items-center gap-2 border-b border-amber-100 pb-2 mb-4",children:[(0,b.jsx)(h.Sparkles,{size:20})," Éditeur & Assistant IA"]}),(0,b.jsxs)("div",{className:"space-y-4 text-sm text-slate-600",children:[(0,b.jsxs)("div",{className:"bg-amber-50 p-4 rounded-lg border border-amber-100",children:[(0,b.jsx)("h4",{className:"font-bold text-amber-800 mb-2",children:"Menu Contextuel Intelligent"}),(0,b.jsxs)("p",{children:["Sélectionnez du texte et faites un ",(0,b.jsx)("strong",{children:"clic droit"})," pour :"]}),(0,b.jsxs)("ul",{className:"grid grid-cols-2 gap-2 mt-2 pl-4",children:[(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Corriger l'orthographe"]}),(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Reformuler / Améliorer"]}),(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Développer (Show, don't tell)"]}),(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Continuer l'écriture"]})]})]}),(0,b.jsxs)("p",{children:[(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:"Historique des versions :"})," Activez la marge de droite (icône horloge) pour voir toutes les interventions de l'IA et revenir en arrière si nécessaire."]}),(0,b.jsxs)("p",{children:[(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:"Chat Latéral :"})," Posez des questions sur votre histoire, demandez des résumés ou des idées de rebondissements. L'IA connaît le contexte de vos chapitres précédents et de vos fiches personnages."]}),(0,b.jsxs)("div",{className:"mt-6 border-t border-slate-100 pt-4",children:[(0,b.jsxs)("h4",{className:"font-bold text-slate-700 mb-3 flex items-center gap-2",children:[(0,b.jsx)(M,{size:16})," Raccourcis Clavier (Éditeur)"]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 bg-slate-50 p-4 rounded-lg border border-slate-100",children:[(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,b.jsx)("span",{className:"text-slate-600",children:"Mettre en Gras"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(R,{children:"Ctrl"})," + ",(0,b.jsx)(R,{children:"B"})]})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,b.jsx)("span",{className:"text-slate-600",children:"Mettre en Italique"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(R,{children:"Ctrl"})," + ",(0,b.jsx)(R,{children:"I"})]})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,b.jsx)("span",{className:"text-slate-600",children:"Souligner"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(R,{children:"Ctrl"})," + ",(0,b.jsx)(R,{children:"U"})]})]})]}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,b.jsx)("span",{className:"text-slate-600",children:"Tout sélectionner"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(R,{children:"Ctrl"})," + ",(0,b.jsx)(R,{children:"A"})]})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,b.jsx)("span",{className:"text-slate-600",children:"Annuler"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(R,{children:"Ctrl"})," + ",(0,b.jsx)(R,{children:"Z"})]})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,b.jsx)("span",{className:"text-slate-600",children:"Rétablir"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(R,{children:"Ctrl"})," + ",(0,b.jsx)(R,{children:"Shift"})," + ",(0,b.jsx)(R,{children:"Z"})]})]})]})]})]})]})]})}})(),(0,b.jsxs)("div",{className:"border-t border-slate-100 pt-6 mt-6",children:[(0,b.jsx)("h4",{className:"text-sm font-bold text-slate-500 uppercase tracking-wider mb-4",children:"Raccourcis Généraux"}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4 text-xs text-slate-600",children:[(0,b.jsxs)("div",{className:"flex justify-between",children:[(0,b.jsx)("span",{children:"Sauvegarde Automatique"}),(0,b.jsx)("span",{className:"font-mono text-slate-400",children:"Permanente"})]}),(0,b.jsxs)("div",{className:"flex justify-between",children:[(0,b.jsx)("span",{children:"Menu Latéral"}),(0,b.jsx)("span",{children:"Clic sur le burger"})]})]})]})]}),(0,b.jsx)("div",{className:"p-4 border-t border-slate-200 bg-slate-50 flex justify-end",children:(0,b.jsx)("button",{onClick:c,className:"px-6 py-2 bg-slate-800 text-white rounded-lg hover:bg-slate-900 transition-colors font-medium",children:"Fermer"})})]})}):null;var T=a.i(79080);function U({children:a}){let h=(0,d.useParams)(),i=(0,d.useRouter)(),j=(0,d.usePathname)(),k=h.id,{user:m,logout:n,incrementUsage:o,loading:p}=(0,e.useAuthContext)(),{projects:q,setCurrentProjectId:r,updateProject:s,updateChapter:t,addChapter:u}=(0,f.useProjects)(m),{chatHistory:v,isGenerating:w,sendMessage:x}=(()=>{let[a,b]=(0,c.useState)([]),[d,e]=(0,c.useState)(!1);return{chatHistory:a,isGenerating:d,sendMessage:async(a,c,d,f,h)=>{let i={id:Date.now().toString(),role:"user",text:d};b(a=>[...a,i]),e(!0);try{let e=await g.default.ai.generate(a,"global"===c?"":c,d,f);h();let i={id:(Date.now()+1).toString(),role:"model",text:e.text,responseType:e.type};b(a=>[...a,i])}catch{b(a=>[...a,{id:Date.now().toString(),role:"model",text:"Désolé, une erreur est survenue lors de la génération."}])}finally{e(!1)}}}})(),[y,z]=(0,c.useState)(""),[A,B]=(0,c.useState)(!1),[C,D]=(0,c.useState)(!1),E=j.endsWith("/world")?"world_building":j.endsWith("/ideas")?"ideas":j.endsWith("/workflow")?"workflow":j.endsWith("/settings")?"settings":"write";(0,c.useEffect)(()=>{k&&r(k)},[k,r]),(0,c.useEffect)(()=>{p||m||i.replace("/login")},[m,p,i]);let F=q.find(a=>a.id===k);return((0,c.useEffect)(()=>{!F||y&&F.chapters.some(a=>a.id===y)||z(F.chapters[0]?.id||"")},[F,y]),p||!m)?(0,b.jsxs)("div",{className:"h-screen w-full flex flex-col items-center justify-center bg-slate-900 text-white",children:[(0,b.jsx)(T.Loader2,{className:"animate-spin text-blue-500 mb-4",size:48}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(l.BookOpen,{className:"text-blue-500",size:20}),(0,b.jsx)("span",{className:"text-lg font-bold",children:"PlumeIA"})]})]}):F?(0,b.jsxs)(G,{project:F,user:m,viewMode:E,currentChapterId:y,chatHistory:v,isGenerating:w,onViewModeChange:a=>{let b=`/project/${k}`;switch(a){case"write":default:i.push(b);break;case"world_building":i.push(`${b}/world`);break;case"ideas":i.push(`${b}/ideas`);break;case"workflow":i.push(`${b}/workflow`);break;case"settings":i.push(`${b}/settings`);break;case"dashboard":i.push("/dashboard")}},onChapterSelect:a=>{z(a),i.push(`/project/${k}`)},onUpdateProject:a=>s(k,a),onAddChapter:async()=>{let a=await u(k,{});a&&(z(a),i.push(`/project/${k}`))},onDeleteChapter:a=>{if(F.chapters.length>1){let b=F.chapters.filter(b=>b.id!==a);s(k,{chapters:b}),y===a&&z(b[0].id)}},onLogout:()=>{n(),i.push("/")},onSendMessage:a=>{F&&m&&x(F,"global",a,m,o)},onInsertText:()=>{},onOpenExport:()=>B(!0),onOpenHelp:()=>D(!0),children:[(0,b.jsx)(L,{isOpen:A,onClose:()=>B(!1),project:F,onPrint:()=>{}}),(0,b.jsx)(S,{isOpen:C,onClose:()=>D(!1),viewMode:E}),c.default.cloneElement(a,{project:F,user:m,projectId:k,currentChapterId:y,setCurrentChapterId:z,updateProject:a=>s(k,a),updateChapter:(a,b)=>t(k,a,b),incrementUsage:o})]}):(0,b.jsxs)("div",{className:"h-screen w-full flex flex-col items-center justify-center bg-slate-900 text-white",children:[(0,b.jsx)(T.Loader2,{className:"animate-spin text-blue-500 mb-4",size:48}),(0,b.jsx)("p",{className:"text-slate-400",children:"Chargement du projet..."})]})}a.s(["default",()=>U],74007)}]; +`}),p(new Blob([b],{type:"text/markdown"}),`${a}.md`)}},className:"px-6 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg font-medium shadow-md transition-all flex items-center gap-2",children:["pdf"===g?(0,b.jsx)(I,{size:18}):(0,b.jsx)(K,{size:18}),"pdf"===g?"Imprimer / Enregistrer PDF":`T\xe9l\xe9charger .${"word"===g?"doc":"epub"===g?"xhtml":"md"}`]})]})]})})},N=(0,j.default)("keyboard",[["path",{d:"M10 8h.01",key:"1r9ogq"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M14 8h.01",key:"1primd"}],["path",{d:"M16 12h.01",key:"1l6xoz"}],["path",{d:"M18 8h.01",key:"emo2bl"}],["path",{d:"M6 8h.01",key:"x9i8wu"}],["path",{d:"M7 16h10",key:"wp8him"}],["path",{d:"M8 12h.01",key:"czm47f"}],["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}]]);var O=a.i(76763),P=a.i(6111);let Q=(0,j.default)("command",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]);var R=a.i(75108);let S=({children:a})=>(0,b.jsx)("kbd",{className:"px-2 py-1 text-xs font-semibold text-slate-800 bg-slate-100 border border-slate-300 rounded-md shadow-[0px_2px_0px_0px_rgba(203,213,225,1)] mx-1 font-mono",children:a}),T=({isOpen:a,onClose:c,viewMode:d})=>a?(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm animate-in fade-in duration-200",children:(0,b.jsxs)("div",{className:"bg-white rounded-xl shadow-2xl w-[800px] max-h-[90vh] flex flex-col overflow-hidden",children:[(0,b.jsxs)("div",{className:"bg-slate-900 text-white p-6 flex justify-between items-center shrink-0",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("h2",{className:"text-xl font-bold flex items-center gap-2",children:[(0,b.jsx)(m.BookOpen,{size:24,className:"text-blue-400"})," Aide : ","workflow"===d?"Workflow & Dialogues":"world_building"===d?"Bible du Monde":"settings"===d?"Paramètres":"ideas"===d?"Boîte à Idées":"Éditeur & IA"]}),(0,b.jsx)("p",{className:"text-slate-400 text-sm mt-1",children:"Astuces pour l'écran actuel."})]}),(0,b.jsx)("button",{onClick:c,className:"text-slate-400 hover:text-white transition-colors p-2 hover:bg-slate-800 rounded-full",children:(0,b.jsx)(J.X,{size:24})})]}),(0,b.jsxs)("div",{className:"overflow-y-auto p-8",children:[(()=>{switch(d){case"ideas":return(0,b.jsxs)("section",{className:"mb-8",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-yellow-600 flex items-center gap-2 border-b border-yellow-100 pb-2 mb-4",children:[(0,b.jsx)(v.Lightbulb,{size:20})," Boîte à Idées & Tâches"]}),(0,b.jsxs)("div",{className:"text-sm text-slate-600 space-y-4",children:[(0,b.jsx)("p",{children:"Un espace de type Kanban pour ne rien oublier. Utilisez-le pour noter des idées fugaces, planifier des recherches ou lister les scènes à écrire."}),(0,b.jsxs)("ul",{className:"space-y-3",children:[(0,b.jsxs)("li",{className:"flex items-start gap-2",children:[(0,b.jsx)(O.MousePointerClick,{size:16,className:"mt-0.5 shrink-0"}),(0,b.jsxs)("span",{children:[(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:"Glisser-Déposer :"})," Déplacez les cartes d'une colonne à l'autre (À faire → En cours → Validé) pour suivre votre progression."]})]}),(0,b.jsxs)("li",{className:"flex items-start gap-2",children:[(0,b.jsx)(R.Layout,{size:16,className:"mt-0.5 shrink-0"}),(0,b.jsxs)("span",{children:[(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:"Catégories :"})," Utilisez les catégories (Intrigue, Personnage, Recherche) pour filtrer visuellement vos tâches grâce aux codes couleurs."]})]})]})]})]});case"workflow":return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("section",{className:"mb-8",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-indigo-700 flex items-center gap-2 border-b border-indigo-100 pb-2 mb-4",children:[(0,b.jsx)(u.GitGraph,{size:20})," Organisation Narrative"]}),(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 text-sm text-slate-600",children:(0,b.jsxs)("ul",{className:"space-y-3",children:[(0,b.jsxs)("li",{className:"flex items-start gap-2",children:[(0,b.jsx)(O.MousePointerClick,{size:16,className:"mt-0.5 shrink-0"}),(0,b.jsxs)("span",{children:[(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:"Sélection :"})," ",(0,b.jsx)(S,{children:"Ctrl"})," + Clic pour sélectionner plusieurs cartes. Glissez pour déplacer tout un groupe."]})]}),(0,b.jsxs)("li",{className:"flex items-start gap-2",children:[(0,b.jsx)(Q,{size:16,className:"mt-0.5 shrink-0"}),(0,b.jsxs)("span",{children:[(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:"Copier / Coller :"})," ",(0,b.jsx)(S,{children:"Ctrl"})," + ",(0,b.jsx)(S,{children:"C"})," pour copier les nœuds sélectionnés, ",(0,b.jsx)(S,{children:"Ctrl"})," + ",(0,b.jsx)(S,{children:"V"})," pour coller."]})]}),(0,b.jsxs)("li",{className:"flex items-start gap-2",children:[(0,b.jsx)(R.Layout,{size:16,className:"mt-0.5 shrink-0"}),(0,b.jsxs)("span",{children:[(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:"Connexions :"})," Tirez depuis le cercle à droite d'une carte pour lier les événements."]})]})]})})]}),(0,b.jsxs)("section",{className:"bg-blue-50 p-6 rounded-xl border border-blue-100 mb-8",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-blue-800 flex items-center gap-2 border-b border-blue-200 pb-2 mb-4",children:[(0,b.jsx)(P.MessageCircle,{size:20})," Mode Dialogue (Workflow)"]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 text-sm",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"font-semibold text-slate-800 mb-1",children:"Écriture Rapide"}),(0,b.jsxs)("p",{className:"text-slate-600 leading-relaxed mb-3",children:["Tapez un nom et ",(0,b.jsx)(S,{children:"Entrée"})," : le formatage ",(0,b.jsx)("code",{children:"Nom: "})," s'ajoute seul."]}),(0,b.jsxs)("p",{className:"text-slate-600 leading-relaxed",children:["Dans un dialogue, ",(0,b.jsx)(S,{children:"Entrée"})," change de ligne et ",(0,b.jsx)("strong",{children:"devine le prochain interlocuteur"})," automatiquement."]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"font-semibold text-slate-800 mb-1",children:"Rotation & Insertion"}),(0,b.jsxs)("p",{className:"text-slate-600 leading-relaxed mb-3",children:[(0,b.jsx)(S,{children:"Tab"})," permute instantanément entre les personnages présents dans la scène."]}),(0,b.jsxs)("p",{className:"text-slate-600 leading-relaxed",children:["Utilisez ",(0,b.jsx)(S,{children:"@"})," pour insérer un personnage, ",(0,b.jsx)(S,{children:"#"})," pour un lieu."]})]})]})]})]});case"world_building":return(0,b.jsxs)("section",{className:"mb-8",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-green-700 flex items-center gap-2 border-b border-green-100 pb-2 mb-4",children:[(0,b.jsx)(t.Globe,{size:20})," Bible du Monde"]}),(0,b.jsxs)("div",{className:"text-sm text-slate-600 space-y-4",children:[(0,b.jsxs)("p",{children:["La bible du monde permet de centraliser toutes les informations sur vos personnages et lieux. Ces informations sont ",(0,b.jsx)("strong",{children:"lues par l'IA"})," pour assurer la cohérence de l'histoire."]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 mt-4",children:[(0,b.jsxs)("div",{className:"bg-slate-50 p-4 rounded-lg",children:[(0,b.jsx)("h4",{className:"font-bold text-slate-800 mb-2",children:"Modèles Personnalisés"}),(0,b.jsx)("p",{children:'Cliquez sur le bouton "Modèles" pour ajouter des champs spécifiques (ex: "Type de Magie", "Allégeance") à tous vos personnages ou lieux.'})]}),(0,b.jsxs)("div",{className:"bg-slate-50 p-4 rounded-lg",children:[(0,b.jsx)("h4",{className:"font-bold text-slate-800 mb-2",children:"Contexte Automatique"}),(0,b.jsx)("p",{children:"Le champ \"Contexte Narratif\" se remplit automatiquement au fur et à mesure que vous écrivez votre histoire et que l'IA détecte l'évolution des personnages."})]})]})]})]});case"settings":return(0,b.jsxs)("section",{className:"mb-8",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-slate-700 flex items-center gap-2 border-b border-slate-100 pb-2 mb-4",children:[(0,b.jsx)(w.Settings,{size:20})," Paramètres du Livre"]}),(0,b.jsx)("p",{className:"text-sm text-slate-600 mb-4",children:'Ces réglages sont cruciaux pour l\'Assistant IA. Ils définissent le "ton" de toutes les générations de texte.'}),(0,b.jsxs)("ul",{className:"list-disc pl-5 space-y-2 text-sm text-slate-600",children:[(0,b.jsxs)("li",{children:[(0,b.jsx)("strong",{children:"Style Guide :"}),' Soyez précis sur le style (ex: "phrases courtes", "beaucoup de métaphores", "humour noir").']}),(0,b.jsxs)("li",{children:[(0,b.jsx)("strong",{children:"POV (Point de Vue) :"}),' Définit si l\'IA doit écrire en "Je" ou "Il/Elle".']})]})]});default:return(0,b.jsxs)("section",{className:"mb-8",children:[(0,b.jsxs)("h3",{className:"text-lg font-bold text-amber-600 flex items-center gap-2 border-b border-amber-100 pb-2 mb-4",children:[(0,b.jsx)(i.Sparkles,{size:20})," Éditeur & Assistant IA"]}),(0,b.jsxs)("div",{className:"space-y-4 text-sm text-slate-600",children:[(0,b.jsxs)("div",{className:"bg-amber-50 p-4 rounded-lg border border-amber-100",children:[(0,b.jsx)("h4",{className:"font-bold text-amber-800 mb-2",children:"Menu Contextuel Intelligent"}),(0,b.jsxs)("p",{children:["Sélectionnez du texte et faites un ",(0,b.jsx)("strong",{children:"clic droit"})," pour :"]}),(0,b.jsxs)("ul",{className:"grid grid-cols-2 gap-2 mt-2 pl-4",children:[(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Corriger l'orthographe"]}),(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Reformuler / Améliorer"]}),(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Développer (Show, don't tell)"]}),(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Continuer l'écriture"]})]})]}),(0,b.jsxs)("p",{children:[(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:"Historique des versions :"})," Activez la marge de droite (icône horloge) pour voir toutes les interventions de l'IA et revenir en arrière si nécessaire."]}),(0,b.jsxs)("p",{children:[(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:"Chat Latéral :"})," Posez des questions sur votre histoire, demandez des résumés ou des idées de rebondissements. L'IA connaît le contexte de vos chapitres précédents et de vos fiches personnages."]}),(0,b.jsxs)("div",{className:"mt-6 border-t border-slate-100 pt-4",children:[(0,b.jsxs)("h4",{className:"font-bold text-slate-700 mb-3 flex items-center gap-2",children:[(0,b.jsx)(N,{size:16})," Raccourcis Clavier (Éditeur)"]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 bg-slate-50 p-4 rounded-lg border border-slate-100",children:[(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,b.jsx)("span",{className:"text-slate-600",children:"Mettre en Gras"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(S,{children:"Ctrl"})," + ",(0,b.jsx)(S,{children:"B"})]})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,b.jsx)("span",{className:"text-slate-600",children:"Mettre en Italique"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(S,{children:"Ctrl"})," + ",(0,b.jsx)(S,{children:"I"})]})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,b.jsx)("span",{className:"text-slate-600",children:"Souligner"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(S,{children:"Ctrl"})," + ",(0,b.jsx)(S,{children:"U"})]})]})]}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,b.jsx)("span",{className:"text-slate-600",children:"Tout sélectionner"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(S,{children:"Ctrl"})," + ",(0,b.jsx)(S,{children:"A"})]})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,b.jsx)("span",{className:"text-slate-600",children:"Annuler"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(S,{children:"Ctrl"})," + ",(0,b.jsx)(S,{children:"Z"})]})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,b.jsx)("span",{className:"text-slate-600",children:"Rétablir"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(S,{children:"Ctrl"})," + ",(0,b.jsx)(S,{children:"Shift"})," + ",(0,b.jsx)(S,{children:"Z"})]})]})]})]})]})]})]})}})(),(0,b.jsxs)("div",{className:"border-t border-slate-100 pt-6 mt-6",children:[(0,b.jsx)("h4",{className:"text-sm font-bold text-slate-500 uppercase tracking-wider mb-4",children:"Raccourcis Généraux"}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4 text-xs text-slate-600",children:[(0,b.jsxs)("div",{className:"flex justify-between",children:[(0,b.jsx)("span",{children:"Sauvegarde Automatique"}),(0,b.jsx)("span",{className:"font-mono text-slate-400",children:"Permanente"})]}),(0,b.jsxs)("div",{className:"flex justify-between",children:[(0,b.jsx)("span",{children:"Menu Latéral"}),(0,b.jsx)("span",{children:"Clic sur le burger"})]})]})]})]}),(0,b.jsx)("div",{className:"p-4 border-t border-slate-200 bg-slate-50 flex justify-end",children:(0,b.jsx)("button",{onClick:c,className:"px-6 py-2 bg-slate-800 text-white rounded-lg hover:bg-slate-900 transition-colors font-medium",children:"Fermer"})})]})}):null;var U=a.i(79080);function V({children:a}){let i=(0,d.useParams)(),j=(0,d.useRouter)(),k=(0,d.usePathname)(),l=i.id,{user:n,logout:o,incrementUsage:p,loading:q}=(0,e.useAuthContext)(),{projects:r,setCurrentProjectId:s,updateProject:t,updateChapter:u,addChapter:v}=(0,g.useProjects)(n),{chatHistory:w,isGenerating:x,sendMessage:y}=(()=>{let[a,b]=(0,c.useState)([]),[d,e]=(0,c.useState)(!1);return{chatHistory:a,isGenerating:d,sendMessage:async(a,c,d,f,g)=>{let i={id:Date.now().toString(),role:"user",text:d};b(a=>[...a,i]),e(!0);try{let e=await h.default.ai.generate(a,"global"===c?"":c,d,f);g();let i={id:(Date.now()+1).toString(),role:"model",text:e.text,responseType:e.type};b(a=>[...a,i])}catch{b(a=>[...a,{id:Date.now().toString(),role:"model",text:"Désolé, une erreur est survenue lors de la génération."}])}finally{e(!1)}}}})(),[z,A]=(0,c.useState)(""),[B,C]=(0,c.useState)(!1),[D,E]=(0,c.useState)(!1),F=k.endsWith("/world")?"world_building":k.endsWith("/ideas")?"ideas":k.endsWith("/workflow")?"workflow":k.endsWith("/settings")?"settings":"write";(0,c.useEffect)(()=>{l&&s(l)},[l,s]),(0,c.useEffect)(()=>{q||n||j.replace("/login")},[n,q,j]);let G=r.find(a=>a.id===l);return((0,c.useEffect)(()=>{!G||z&&G.chapters.some(a=>a.id===z)||A(G.chapters[0]?.id||"")},[G,z]),q||!n)?(0,b.jsxs)("div",{className:"h-screen w-full flex flex-col items-center justify-center bg-slate-900 text-white",children:[(0,b.jsx)(U.Loader2,{className:"animate-spin text-blue-500 mb-4",size:48}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(m.BookOpen,{className:"text-blue-500",size:20}),(0,b.jsx)("span",{className:"text-lg font-bold",children:"PlumeIA"})]})]}):G?(0,b.jsx)(f.ProjectProvider,{value:{project:G,user:n,projectId:l,currentChapterId:z,setCurrentChapterId:A,updateProject:a=>t(l,a),updateChapter:(a,b)=>u(l,a,b),incrementUsage:p},children:(0,b.jsxs)(H,{project:G,user:n,viewMode:F,currentChapterId:z,chatHistory:w,isGenerating:x,onViewModeChange:a=>{let b=`/project/${l}`;switch(a){case"write":default:j.push(b);break;case"world_building":j.push(`${b}/world`);break;case"ideas":j.push(`${b}/ideas`);break;case"workflow":j.push(`${b}/workflow`);break;case"settings":j.push(`${b}/settings`);break;case"dashboard":j.push("/dashboard")}},onChapterSelect:a=>{A(a),j.push(`/project/${l}`)},onUpdateProject:a=>t(l,a),onAddChapter:async()=>{let a=await v(l,{});a&&(A(a),j.push(`/project/${l}`))},onDeleteChapter:a=>{if(G.chapters.length>1){let b=G.chapters.filter(b=>b.id!==a);t(l,{chapters:b}),z===a&&A(b[0].id)}},onLogout:()=>{o(),j.push("/")},onSendMessage:a=>{G&&n&&y(G,"global",a,n,p)},onInsertText:()=>{},onOpenExport:()=>C(!0),onOpenHelp:()=>E(!0),children:[(0,b.jsx)(M,{isOpen:B,onClose:()=>C(!1),project:G,onPrint:()=>{}}),(0,b.jsx)(T,{isOpen:D,onClose:()=>E(!1),viewMode:F}),a]})}):(0,b.jsxs)("div",{className:"h-screen w-full flex flex-col items-center justify-center bg-slate-900 text-white",children:[(0,b.jsx)(U.Loader2,{className:"animate-spin text-blue-500 mb-4",size:48}),(0,b.jsx)("p",{className:"text-slate-400",children:"Chargement du projet..."})]})}a.s(["default",()=>V],74007)}]; //# sourceMappingURL=Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_8d39104f._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js.map b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js.map index a803f8c..1466bf4 100644 --- a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js.map +++ b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_8d39104f._.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/src/hooks/useChat.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/AIPanel.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/layout/EditorShell.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/ExportModal.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/HelpModal.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/layout.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/chevron-left.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/command.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/keyboard.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/menu.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/download.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/bot.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/layout-dashboard.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/circle-question-mark.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/share-2.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/file-text.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/brain-circuit.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/send.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/printer.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/file-braces.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState } from 'react';\r\nimport {\r\n BookProject,\r\n ChatMessage,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\n\r\nexport const useChat = () => {\r\n const [chatHistory, setChatHistory] = useState([]);\r\n const [isGenerating, setIsGenerating] = useState(false);\r\n\r\n const sendMessage = async (\r\n project: BookProject,\r\n context: string,\r\n text: string,\r\n user: UserProfile,\r\n incrementUsage: () => void\r\n ) => {\r\n const userMsg: ChatMessage = {\r\n id: Date.now().toString(),\r\n role: 'user',\r\n text: text\r\n };\r\n setChatHistory(prev => [...prev, userMsg]);\r\n setIsGenerating(true);\r\n\r\n try {\r\n const response = await api.ai.generate(\r\n project,\r\n context === 'global' ? '' : context,\r\n text,\r\n user\r\n );\r\n\r\n incrementUsage();\r\n\r\n const aiMsg: ChatMessage = {\r\n id: (Date.now() + 1).toString(),\r\n role: 'model',\r\n text: response.text,\r\n responseType: response.type\r\n };\r\n setChatHistory(prev => [...prev, aiMsg]);\r\n } catch {\r\n setChatHistory(prev => [...prev, {\r\n id: Date.now().toString(),\r\n role: 'model',\r\n text: \"Désolé, une erreur est survenue lors de la génération.\"\r\n }]);\r\n } finally {\r\n setIsGenerating(false);\r\n }\r\n };\r\n\r\n return { chatHistory, isGenerating, sendMessage };\r\n};\r\n","'use client';\n\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { Sparkles, Send, RefreshCw, BookOpen, Bot, ArrowLeft, BrainCircuit, Zap } from 'lucide-react';\nimport { ChatMessage, UserUsage } from '@/lib/types';\n\ninterface AIPanelProps {\n chatHistory: ChatMessage[];\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n selectedText: string;\n isGenerating: boolean;\n usage?: UserUsage;\n}\n\nconst AIPanel: React.FC = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGenerating, usage }) => {\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [chatHistory, isGenerating]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (!input.trim() || isGenerating) return;\n onSendMessage(input);\n setInput(\"\");\n };\n\n const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false;\n\n return (\n
\n {/* Header with Usage Counter */}\n
\n
\n \n

Assistant IA

\n
\n {usage && (\n
\n {usage.aiActionsCurrent} / {usage.aiActionsLimit === 999999 ? '∞' : usage.aiActionsLimit}\n
\n )}\n
\n\n {selectedText && (\n
\n
Contexte :
\n
\"{selectedText.substring(0, 60)}...\"
\n
\n )}\n\n
\n {chatHistory.length === 0 && (\n
\n \n

Bonjour ! Comment puis-je vous aider aujourd'hui ?

\n {isLimitReached && (\n
\n Limite atteinte ! Améliorez votre plan.\n
\n )}\n
\n )}\n\n {chatHistory.map((msg) => (\n
\n
\n {msg.role === 'model' && msg.responseType === 'reflection' && (\n
Réflexion
\n )}\n
{msg.text}
\n
\n
\n ))}\n \n {isGenerating && (\n
\n
\n L'IA travaille...\n
\n
\n )}\n
\n
\n\n
\n
\n setInput(e.target.value)}\n placeholder={isLimitReached ? \"Limite atteinte...\" : \"Votre message...\"}\n className=\"w-full pl-4 pr-12 py-3 bg-slate-100 rounded-2xl text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-shadow disabled:opacity-50\"\n disabled={isGenerating || isLimitReached}\n />\n \n \n
\n
\n );\n};\n\nexport default AIPanel;\n","'use client';\n\n\nimport React, { useState } from 'react';\nimport { BookProject, UserProfile, ViewMode, ChatMessage } from '@/lib/types';\nimport AIPanel from '@/components/AIPanel';\nimport { Book, FileText, Globe, GitGraph, Lightbulb, Settings, Menu, ChevronRight, ChevronLeft, Share2, HelpCircle, LogOut, LayoutDashboard, User, Plus, Trash2 } from 'lucide-react';\n\ninterface EditorShellProps {\n project: BookProject;\n user: UserProfile;\n viewMode: ViewMode;\n currentChapterId: string;\n chatHistory: ChatMessage[];\n isGenerating: boolean;\n onViewModeChange: (mode: ViewMode) => void;\n onChapterSelect: (id: string) => void;\n onUpdateProject: (updates: Partial) => void;\n onAddChapter: () => Promise;\n onDeleteChapter: (id: string) => void;\n onLogout: () => void;\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n onOpenExport: () => void;\n onOpenHelp: () => void;\n children: React.ReactNode;\n}\n\nconst EditorShell: React.FC = (props) => {\n const { project, user, viewMode, currentChapterId, children } = props;\n const [isSidebarOpen, setIsSidebarOpen] = useState(true);\n const [isAiPanelOpen, setIsAiPanelOpen] = useState(true);\n\n const currentChapter = project.chapters.find(c => c.id === currentChapterId);\n\n return (\n
\n\n {/* SIDEBAR */}\n \n\n {/* MAIN CONTENT */}\n
\n
\n
\n \n {viewMode === 'write' ? (\n props.onUpdateProject({ chapters: project.chapters.map(c => c.id === currentChapterId ? { ...c, title: e.target.value } : c) })}\n className=\"font-serif font-bold text-lg bg-transparent border-b border-transparent focus:border-blue-500 focus:outline-none\"\n />\n ) : (\n {viewMode}\n )}\n
\n
\n \n \n \n
\n
\n\n
\n {children}\n
\n
\n\n {/* AI PANEL */}\n
\n {isAiPanelOpen && }\n
\n
\n );\n};\n\nexport default EditorShell;\n","'use client';\n\nimport React, { useState } from 'react';\nimport { BookProject } from '@/lib/types';\nimport { FileText, FileType, Printer, X, Download, Book, FileJson } from 'lucide-react';\n\ninterface ExportModalProps {\n isOpen: boolean;\n onClose: () => void;\n project: BookProject;\n onPrint: (options: { includeCover: boolean, includeTOC: boolean }) => void;\n}\n\ntype ExportFormat = 'pdf' | 'word' | 'epub' | 'markdown';\ntype PageSize = 'A4' | 'A5' | 'Letter';\n\nconst ExportModal: React.FC = ({ isOpen, onClose, project, onPrint }) => {\n const [format, setFormat] = useState('pdf');\n const [pageSize, setPageSize] = useState('A4');\n const [includeCover, setIncludeCover] = useState(true);\n const [includeTOC, setIncludeTOC] = useState(true);\n\n if (!isOpen) return null;\n\n const generateContentHTML = () => {\n let html = `\n \n \n \n \n ${project.title}\n \n \n \n `;\n\n if (includeCover) {\n html += `\n
\n

${project.title}

\n

${project.author}

\n
\n `;\n }\n\n if (includeTOC) {\n html += `

Table des Matières

    `;\n project.chapters.forEach((chap, idx) => {\n html += `
  • ${chap.title}
  • `;\n });\n html += `
`;\n }\n\n project.chapters.forEach((chap, idx) => {\n html += `\n
\n

${chap.title}

\n ${chap.content}\n
\n `;\n });\n\n html += ``;\n return html;\n };\n\n const handleExport = () => {\n const filename = project.title.replace(/[^a-z0-9]/gi, '_').toLowerCase();\n\n if (format === 'pdf') {\n // Use the classic window print tool via parent callback\n onPrint({ includeCover, includeTOC });\n } \n else if (format === 'word') {\n // Export as HTML with specific Word namespaces -> interpreted as doc by Word\n const content = generateContentHTML();\n const blob = new Blob(['\\ufeff', content], {\n type: 'application/msword'\n });\n downloadBlob(blob, `${filename}.doc`);\n } \n else if (format === 'epub') {\n // Export as a single XHTML file (Ebook ready)\n const content = generateContentHTML();\n const blob = new Blob([content], {\n type: 'application/xhtml+xml'\n });\n downloadBlob(blob, `${filename}.xhtml`);\n }\n else if (format === 'markdown') {\n let md = `# ${project.title}\\nBy ${project.author}\\n\\n`;\n project.chapters.forEach(c => {\n // Very basic HTML to Text conversion\n const text = c.content.replace(/<[^>]+>/g, '\\n');\n md += `## ${c.title}\\n\\n${text}\\n\\n---\\n\\n`;\n });\n const blob = new Blob([md], { type: 'text/markdown' });\n downloadBlob(blob, `${filename}.md`);\n }\n };\n\n const downloadBlob = (blob: Blob, name: string) => {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = name;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n onClose();\n };\n\n return (\n
\n
\n \n {/* Header */}\n
\n
\n

\n Exporter le livre\n

\n

{project.title}

\n
\n \n
\n\n {/* Body */}\n
\n \n {/* Format Selection */}\n
\n \n \n \n\n \n\n \n
\n\n {/* Options Section */}\n
\n

\n Paramètres d'exportation ({format.toUpperCase()})\n

\n\n
\n {format === 'pdf' && (\n
\n
\n \n Géré par l'imprimante (A4, A5...)\n
\n
Auto
\n
\n )}\n\n
\n \n setIncludeCover(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n
\n \n setIncludeTOC(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n {format === 'epub' && (\n

\n Note: L'export EPUB génère un fichier XHTML optimisé prêt à être converti par Calibre ou Kindle Previewer.\n

\n )}\n
\n
\n
\n\n {/* Footer */}\n
\n \n \n
\n
\n
\n );\n};\n\nexport default ExportModal;","'use client';\n\nimport React from 'react';\nimport { X, Keyboard, MousePointerClick, MessageCircle, Sparkles, GitGraph, BookOpen, Command, Globe, Layout, Settings, Lightbulb } from 'lucide-react';\nimport { ViewMode } from '@/lib/types';\n\ninterface HelpModalProps {\n isOpen: boolean;\n onClose: () => void;\n viewMode: ViewMode;\n}\n\nconst Kbd: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n \n {children}\n \n);\n\nconst HelpModal: React.FC = ({ isOpen, onClose, viewMode }) => {\n if (!isOpen) return null;\n\n const renderContent = () => {\n switch (viewMode) {\n case 'ideas':\n return (\n
\n

\n Boîte à Idées & Tâches\n

\n
\n

\n Un espace de type Kanban pour ne rien oublier. Utilisez-le pour noter des idées fugaces, planifier des recherches ou lister les scènes à écrire.\n

\n
    \n
  • \n \n \n Glisser-Déposer : Déplacez les cartes d'une colonne à l'autre (À faire → En cours → Validé) pour suivre votre progression.\n \n
  • \n
  • \n \n \n Catégories : Utilisez les catégories (Intrigue, Personnage, Recherche) pour filtrer visuellement vos tâches grâce aux codes couleurs.\n \n
  • \n
\n
\n
\n );\n\n case 'workflow':\n return (\n <>\n {/* Workflow Section */}\n
\n

\n Organisation Narrative\n

\n
\n
    \n
  • \n \n \n Sélection : Ctrl + Clic pour sélectionner plusieurs cartes. Glissez pour déplacer tout un groupe.\n \n
  • \n
  • \n \n \n Copier / Coller : Ctrl + C pour copier les nœuds sélectionnés, Ctrl + V pour coller.\n \n
  • \n
  • \n \n \n Connexions : Tirez depuis le cercle à droite d'une carte pour lier les événements.\n \n
  • \n
\n
\n
\n\n {/* Dialogue Intelligent */}\n
\n

\n Mode Dialogue (Workflow)\n

\n
\n
\n
Écriture Rapide
\n

\n Tapez un nom et Entrée : le formatage Nom: s'ajoute seul.\n

\n

\n Dans un dialogue, Entrée change de ligne et devine le prochain interlocuteur automatiquement.\n

\n
\n
\n
Rotation & Insertion
\n

\n Tab permute instantanément entre les personnages présents dans la scène.\n

\n

\n Utilisez @ pour insérer un personnage, # pour un lieu.\n

\n
\n
\n
\n \n );\n\n case 'world_building':\n return (\n
\n

\n Bible du Monde\n

\n
\n

\n La bible du monde permet de centraliser toutes les informations sur vos personnages et lieux.\n Ces informations sont lues par l'IA pour assurer la cohérence de l'histoire.\n

\n
\n
\n

Modèles Personnalisés

\n

\n Cliquez sur le bouton \"Modèles\" pour ajouter des champs spécifiques (ex: \"Type de Magie\", \"Allégeance\") à tous vos personnages ou lieux.\n

\n
\n
\n

Contexte Automatique

\n

\n Le champ \"Contexte Narratif\" se remplit automatiquement au fur et à mesure que vous écrivez votre histoire et que l'IA détecte l'évolution des personnages.\n

\n
\n
\n
\n
\n );\n\n case 'settings':\n return (\n
\n

\n Paramètres du Livre\n

\n

\n Ces réglages sont cruciaux pour l'Assistant IA. Ils définissent le \"ton\" de toutes les générations de texte.\n

\n
    \n
  • Style Guide : Soyez précis sur le style (ex: \"phrases courtes\", \"beaucoup de métaphores\", \"humour noir\").
  • \n
  • POV (Point de Vue) : Définit si l'IA doit écrire en \"Je\" ou \"Il/Elle\".
  • \n
\n
\n );\n\n case 'write':\n default:\n return (\n
\n

\n Éditeur & Assistant IA\n

\n
\n
\n

Menu Contextuel Intelligent

\n

Sélectionnez du texte et faites un clic droit pour :

\n
    \n
  • Corriger l'orthographe
  • \n
  • Reformuler / Améliorer
  • \n
  • Développer (Show, don't tell)
  • \n
  • Continuer l'écriture
  • \n
\n
\n

\n Historique des versions : Activez la marge de droite (icône horloge) pour voir toutes les interventions de l'IA et revenir en arrière si nécessaire.\n

\n

\n Chat Latéral : Posez des questions sur votre histoire, demandez des résumés ou des idées de rebondissements. L'IA connaît le contexte de vos chapitres précédents et de vos fiches personnages.\n

\n \n
\n

\n Raccourcis Clavier (Éditeur)\n

\n
\n
\n
\n Mettre en Gras\n Ctrl + B\n
\n
\n Mettre en Italique\n Ctrl + I\n
\n
\n Souligner\n Ctrl + U\n
\n
\n
\n
\n Tout sélectionner\n Ctrl + A\n
\n
\n Annuler\n Ctrl + Z\n
\n
\n Rétablir\n Ctrl + Shift + Z\n
\n
\n
\n
\n
\n
\n );\n }\n };\n\n return (\n
\n
\n \n {/* Header */}\n
\n
\n

\n Aide : {\n viewMode === 'workflow' ? 'Workflow & Dialogues' :\n viewMode === 'world_building' ? 'Bible du Monde' :\n viewMode === 'settings' ? 'Paramètres' :\n viewMode === 'ideas' ? 'Boîte à Idées' :\n 'Éditeur & IA'\n }\n

\n

Astuces pour l'écran actuel.

\n
\n \n
\n\n {/* Content */}\n
\n \n {/* Context Specific Content */}\n {renderContent()}\n\n {/* General Footer Section (Always visible) */}\n
\n

Raccourcis Généraux

\n
\n
\n Sauvegarde Automatique\n Permanente\n
\n
\n Menu Latéral\n Clic sur le burger\n
\n
\n
\n\n
\n\n {/* Footer */}\n
\n \n
\n\n
\n
\n );\n};\n\nexport default HelpModal;","'use client';\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport { useParams, useRouter, usePathname } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport { useChat } from '@/hooks/useChat';\r\nimport { ViewMode } from '@/lib/types';\r\nimport EditorShell from '@/components/layout/EditorShell';\r\nimport ExportModal from '@/components/ExportModal';\r\nimport HelpModal from '@/components/HelpModal';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\n\r\n// Map path segments to ViewMode\r\nfunction getViewModeFromPath(pathname: string): ViewMode {\r\n if (pathname.endsWith('/world')) return 'world_building';\r\n if (pathname.endsWith('/ideas')) return 'ideas';\r\n if (pathname.endsWith('/workflow')) return 'workflow';\r\n if (pathname.endsWith('/settings')) return 'settings';\r\n return 'write';\r\n}\r\n\r\nexport default function ProjectLayout({ children }: { children: React.ReactNode }) {\r\n const params = useParams();\r\n const router = useRouter();\r\n const pathname = usePathname();\r\n const projectId = params.id as string;\r\n\r\n const { user, logout, incrementUsage, loading: authLoading } = useAuthContext();\r\n const {\r\n projects, setCurrentProjectId,\r\n updateProject, updateChapter, addChapter,\r\n } = useProjects(user);\r\n const { chatHistory, isGenerating, sendMessage } = useChat();\r\n\r\n const [currentChapterId, setCurrentChapterId] = useState('');\r\n const [isExportModalOpen, setIsExportModalOpen] = useState(false);\r\n const [isHelpModalOpen, setIsHelpModalOpen] = useState(false);\r\n\r\n const viewMode = getViewModeFromPath(pathname);\r\n\r\n // Set current project when component mounts\r\n useEffect(() => {\r\n if (projectId) {\r\n setCurrentProjectId(projectId);\r\n }\r\n }, [projectId, setCurrentProjectId]);\r\n\r\n // Redirect if not authenticated\r\n useEffect(() => {\r\n if (!authLoading && !user) {\r\n router.replace('/login');\r\n }\r\n }, [user, authLoading, router]);\r\n\r\n const project = projects.find(p => p.id === projectId);\r\n\r\n // Set initial chapter\r\n useEffect(() => {\r\n if (project && (!currentChapterId || !project.chapters.some(c => c.id === currentChapterId))) {\r\n setCurrentChapterId(project.chapters[0]?.id || '');\r\n }\r\n }, [project, currentChapterId]);\r\n\r\n if (authLoading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (!project) {\r\n return (\r\n
\r\n \r\n

Chargement du projet...

\r\n
\r\n );\r\n }\r\n\r\n const handleViewModeChange = (mode: ViewMode) => {\r\n const base = `/project/${projectId}`;\r\n switch (mode) {\r\n case 'write': router.push(base); break;\r\n case 'world_building': router.push(`${base}/world`); break;\r\n case 'ideas': router.push(`${base}/ideas`); break;\r\n case 'workflow': router.push(`${base}/workflow`); break;\r\n case 'settings': router.push(`${base}/settings`); break;\r\n case 'dashboard': router.push('/dashboard'); break;\r\n default: router.push(base);\r\n }\r\n };\r\n\r\n return (\r\n { setCurrentChapterId(id); router.push(`/project/${projectId}`); }}\r\n onUpdateProject={(updates) => updateProject(projectId, updates)}\r\n onAddChapter={async () => {\r\n const id = await addChapter(projectId, {});\r\n if (id) {\r\n setCurrentChapterId(id);\r\n router.push(`/project/${projectId}`);\r\n }\r\n }}\r\n onDeleteChapter={(id) => {\r\n if (project.chapters.length > 1) {\r\n const newChapters = project.chapters.filter(c => c.id !== id);\r\n updateProject(projectId, { chapters: newChapters });\r\n if (currentChapterId === id) setCurrentChapterId(newChapters[0].id);\r\n }\r\n }}\r\n onLogout={() => { logout(); router.push('/'); }}\r\n onSendMessage={(msg) => {\r\n if (project && user) sendMessage(project, 'global', msg, user, incrementUsage);\r\n }}\r\n onInsertText={() => { }}\r\n onOpenExport={() => setIsExportModalOpen(true)}\r\n onOpenHelp={() => setIsHelpModalOpen(true)}\r\n >\r\n setIsExportModalOpen(false)} project={project} onPrint={() => { }} />\r\n setIsHelpModalOpen(false)} viewMode={viewMode} />\r\n\r\n {/* Render the sub-page content with project context */}\r\n {React.cloneElement(children as React.ReactElement, {\r\n project,\r\n user,\r\n projectId,\r\n currentChapterId,\r\n setCurrentChapterId,\r\n updateProject: (updates: any) => updateProject(projectId, updates),\r\n updateChapter: (chapterId: string, data: any) => updateChapter(projectId, chapterId, data),\r\n incrementUsage,\r\n })}\r\n \r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }]];\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTUgMTgtNi02IDYtNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon('chevron-left', __iconNode);\n\nexport default ChevronLeft;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n { d: 'M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3', key: '11bfej' },\n ],\n];\n\n/**\n * @component @name Command\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgNnYxMmEzIDMgMCAxIDAgMy0zSDZhMyAzIDAgMSAwIDMgM1Y2YTMgMyAwIDEgMC0zIDNoMTJhMyAzIDAgMSAwLTMtMyIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/command\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Command = createLucideIcon('command', __iconNode);\n\nexport default Command;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M10 8h.01', key: '1r9ogq' }],\n ['path', { d: 'M12 12h.01', key: '1mp3jc' }],\n ['path', { d: 'M14 8h.01', key: '1primd' }],\n ['path', { d: 'M16 12h.01', key: '1l6xoz' }],\n ['path', { d: 'M18 8h.01', key: 'emo2bl' }],\n ['path', { d: 'M6 8h.01', key: 'x9i8wu' }],\n ['path', { d: 'M7 16h10', key: 'wp8him' }],\n ['path', { d: 'M8 12h.01', key: 'czm47f' }],\n ['rect', { width: '20', height: '16', x: '2', y: '4', rx: '2', key: '18n3k1' }],\n];\n\n/**\n * @component @name Keyboard\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTAgOGguMDEiIC8+CiAgPHBhdGggZD0iTTEyIDEyaC4wMSIgLz4KICA8cGF0aCBkPSJNMTQgOGguMDEiIC8+CiAgPHBhdGggZD0iTTE2IDEyaC4wMSIgLz4KICA8cGF0aCBkPSJNMTggOGguMDEiIC8+CiAgPHBhdGggZD0iTTYgOGguMDEiIC8+CiAgPHBhdGggZD0iTTcgMTZoMTAiIC8+CiAgPHBhdGggZD0iTTggMTJoLjAxIiAvPgogIDxyZWN0IHdpZHRoPSIyMCIgaGVpZ2h0PSIxNiIgeD0iMiIgeT0iNCIgcng9IjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/keyboard\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Keyboard = createLucideIcon('keyboard', __iconNode);\n\nexport default Keyboard;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M4 5h16', key: '1tepv9' }],\n ['path', { d: 'M4 12h16', key: '1lakjw' }],\n ['path', { d: 'M4 19h16', key: '1djgab' }],\n];\n\n/**\n * @component @name Menu\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCA1aDE2IiAvPgogIDxwYXRoIGQ9Ik00IDEyaDE2IiAvPgogIDxwYXRoIGQ9Ik00IDE5aDE2IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/menu\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Menu = createLucideIcon('menu', __iconNode);\n\nexport default Menu;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 15V3', key: 'm9g1x1' }],\n ['path', { d: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4', key: 'ih7n3h' }],\n ['path', { d: 'm7 10 5 5 5-5', key: 'brsn70' }],\n];\n\n/**\n * @component @name Download\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMTVWMyIgLz4KICA8cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNCIgLz4KICA8cGF0aCBkPSJtNyAxMCA1IDUgNS01IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/download\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Download = createLucideIcon('download', __iconNode);\n\nexport default Download;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 8V4H8', key: 'hb8ula' }],\n ['rect', { width: '16', height: '12', x: '4', y: '8', rx: '2', key: 'enze0r' }],\n ['path', { d: 'M2 14h2', key: 'vft8re' }],\n ['path', { d: 'M20 14h2', key: '4cs60a' }],\n ['path', { d: 'M15 13v2', key: '1xurst' }],\n ['path', { d: 'M9 13v2', key: 'rq6x2g' }],\n];\n\n/**\n * @component @name Bot\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgOFY0SDgiIC8+CiAgPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjEyIiB4PSI0IiB5PSI4IiByeD0iMiIgLz4KICA8cGF0aCBkPSJNMiAxNGgyIiAvPgogIDxwYXRoIGQ9Ik0yMCAxNGgyIiAvPgogIDxwYXRoIGQ9Ik0xNSAxM3YyIiAvPgogIDxwYXRoIGQ9Ik05IDEzdjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/bot\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Bot = createLucideIcon('bot', __iconNode);\n\nexport default Bot;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '7', height: '9', x: '3', y: '3', rx: '1', key: '10lvy0' }],\n ['rect', { width: '7', height: '5', x: '14', y: '3', rx: '1', key: '16une8' }],\n ['rect', { width: '7', height: '9', x: '14', y: '12', rx: '1', key: '1hutg5' }],\n ['rect', { width: '7', height: '5', x: '3', y: '16', rx: '1', key: 'ldoo1y' }],\n];\n\n/**\n * @component @name LayoutDashboard\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSI5IiB4PSIzIiB5PSIzIiByeD0iMSIgLz4KICA8cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSI1IiB4PSIxNCIgeT0iMyIgcng9IjEiIC8+CiAgPHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iOSIgeD0iMTQiIHk9IjEyIiByeD0iMSIgLz4KICA8cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSI1IiB4PSIzIiB5PSIxNiIgcng9IjEiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/layout-dashboard\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LayoutDashboard = createLucideIcon('layout-dashboard', __iconNode);\n\nexport default LayoutDashboard;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3', key: '1u773s' }],\n ['path', { d: 'M12 17h.01', key: 'p32p05' }],\n];\n\n/**\n * @component @name CircleQuestionMark\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDMiIC8+CiAgPHBhdGggZD0iTTEyIDE3aC4wMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/circle-question-mark\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleQuestionMark = createLucideIcon('circle-question-mark', __iconNode);\n\nexport default CircleQuestionMark;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '18', cy: '5', r: '3', key: 'gq8acd' }],\n ['circle', { cx: '6', cy: '12', r: '3', key: 'w7nqdw' }],\n ['circle', { cx: '18', cy: '19', r: '3', key: '1xt0gg' }],\n ['line', { x1: '8.59', x2: '15.42', y1: '13.51', y2: '17.49', key: '47mynk' }],\n ['line', { x1: '15.41', x2: '8.59', y1: '6.51', y2: '10.49', key: '1n3mei' }],\n];\n\n/**\n * @component @name Share2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjUiIHI9IjMiIC8+CiAgPGNpcmNsZSBjeD0iNiIgY3k9IjEyIiByPSIzIiAvPgogIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTkiIHI9IjMiIC8+CiAgPGxpbmUgeDE9IjguNTkiIHgyPSIxNS40MiIgeTE9IjEzLjUxIiB5Mj0iMTcuNDkiIC8+CiAgPGxpbmUgeDE9IjE1LjQxIiB4Mj0iOC41OSIgeTE9IjYuNTEiIHkyPSIxMC40OSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/share-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Share2 = createLucideIcon('share-2', __iconNode);\n\nexport default Share2;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'M10 9H8', key: 'b1mrlr' }],\n ['path', { d: 'M16 13H8', key: 't4e002' }],\n ['path', { d: 'M16 17H8', key: 'z1uh3a' }],\n];\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiIgLz4KICA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4KICA8cGF0aCBkPSJNMTAgOUg4IiAvPgogIDxwYXRoIGQ9Ik0xNiAxM0g4IiAvPgogIDxwYXRoIGQ9Ik0xNiAxN0g4IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/file-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileText = createLucideIcon('file-text', __iconNode);\n\nexport default FileText;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z',\n key: 'l5xja',\n },\n ],\n ['path', { d: 'M9 13a4.5 4.5 0 0 0 3-4', key: '10igwf' }],\n ['path', { d: 'M6.003 5.125A3 3 0 0 0 6.401 6.5', key: '105sqy' }],\n ['path', { d: 'M3.477 10.896a4 4 0 0 1 .585-.396', key: 'ql3yin' }],\n ['path', { d: 'M6 18a4 4 0 0 1-1.967-.516', key: '2e4loj' }],\n ['path', { d: 'M12 13h4', key: '1ku699' }],\n ['path', { d: 'M12 18h6a2 2 0 0 1 2 2v1', key: '105ag5' }],\n ['path', { d: 'M12 8h8', key: '1lhi5i' }],\n ['path', { d: 'M16 8V5a2 2 0 0 1 2-2', key: 'u6izg6' }],\n ['circle', { cx: '16', cy: '13', r: '.5', key: 'ry7gng' }],\n ['circle', { cx: '18', cy: '3', r: '.5', key: '1aiba7' }],\n ['circle', { cx: '20', cy: '21', r: '.5', key: 'yhc1fs' }],\n ['circle', { cx: '20', cy: '8', r: '.5', key: '1e43v0' }],\n];\n\n/**\n * @component @name BrainCircuit\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgNWEzIDMgMCAxIDAtNS45OTcuMTI1IDQgNCAwIDAgMC0yLjUyNiA1Ljc3IDQgNCAwIDAgMCAuNTU2IDYuNTg4QTQgNCAwIDEgMCAxMiAxOFoiIC8+CiAgPHBhdGggZD0iTTkgMTNhNC41IDQuNSAwIDAgMCAzLTQiIC8+CiAgPHBhdGggZD0iTTYuMDAzIDUuMTI1QTMgMyAwIDAgMCA2LjQwMSA2LjUiIC8+CiAgPHBhdGggZD0iTTMuNDc3IDEwLjg5NmE0IDQgMCAwIDEgLjU4NS0uMzk2IiAvPgogIDxwYXRoIGQ9Ik02IDE4YTQgNCAwIDAgMS0xLjk2Ny0uNTE2IiAvPgogIDxwYXRoIGQ9Ik0xMiAxM2g0IiAvPgogIDxwYXRoIGQ9Ik0xMiAxOGg2YTIgMiAwIDAgMSAyIDJ2MSIgLz4KICA8cGF0aCBkPSJNMTIgOGg4IiAvPgogIDxwYXRoIGQ9Ik0xNiA4VjVhMiAyIDAgMCAxIDItMiIgLz4KICA8Y2lyY2xlIGN4PSIxNiIgY3k9IjEzIiByPSIuNSIgLz4KICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjMiIHI9Ii41IiAvPgogIDxjaXJjbGUgY3g9IjIwIiBjeT0iMjEiIHI9Ii41IiAvPgogIDxjaXJjbGUgY3g9IjIwIiBjeT0iOCIgcj0iLjUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/brain-circuit\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst BrainCircuit = createLucideIcon('brain-circuit', __iconNode);\n\nexport default BrainCircuit;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z',\n key: '1ffxy3',\n },\n ],\n ['path', { d: 'm21.854 2.147-10.94 10.939', key: '12cjpa' }],\n];\n\n/**\n * @component @name Send\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTQuNTM2IDIxLjY4NmEuNS41IDAgMCAwIC45MzctLjAyNGw2LjUtMTlhLjQ5Ni40OTYgMCAwIDAtLjYzNS0uNjM1bC0xOSA2LjVhLjUuNSAwIDAgMC0uMDI0LjkzN2w3LjkzIDMuMThhMiAyIDAgMCAxIDEuMTEyIDEuMTF6IiAvPgogIDxwYXRoIGQ9Im0yMS44NTQgMi4xNDctMTAuOTQgMTAuOTM5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/send\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Send = createLucideIcon('send', __iconNode);\n\nexport default Send;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2',\n key: '143wyd',\n },\n ],\n ['path', { d: 'M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6', key: '1itne7' }],\n ['rect', { x: '6', y: '14', width: '12', height: '8', rx: '1', key: '1ue0tg' }],\n];\n\n/**\n * @component @name Printer\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAxOEg0YTIgMiAwIDAgMS0yLTJ2LTVhMiAyIDAgMCAxIDItMmgxNmEyIDIgMCAwIDEgMiAydjVhMiAyIDAgMCAxLTIgMmgtMiIgLz4KICA8cGF0aCBkPSJNNiA5VjNhMSAxIDAgMCAxIDEtMWgxMGExIDEgMCAwIDEgMSAxdjYiIC8+CiAgPHJlY3QgeD0iNiIgeT0iMTQiIHdpZHRoPSIxMiIgaGVpZ2h0PSI4IiByeD0iMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/printer\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Printer = createLucideIcon('printer', __iconNode);\n\nexport default Printer;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n [\n 'path',\n { d: 'M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1', key: '1oajmo' },\n ],\n [\n 'path',\n { d: 'M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1', key: 'mpwhp6' },\n ],\n];\n\n/**\n * @component @name FileBraces\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiIgLz4KICA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4KICA8cGF0aCBkPSJNMTAgMTJhMSAxIDAgMCAwLTEgMXYxYTEgMSAwIDAgMS0xIDEgMSAxIDAgMCAxIDEgMXYxYTEgMSAwIDAgMCAxIDEiIC8+CiAgPHBhdGggZD0iTTE0IDE4YTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMSAxIDEgMCAwIDEtMS0xdi0xYTEgMSAwIDAgMC0xLTEiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/file-braces\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileBraces = createLucideIcon('file-braces', __iconNode);\n\nexport default FileBraces;\n"],"names":[],"mappings":"wDKEA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MLGA,EAAA,EAAA,CAAA,CAAA,OCJA,EAAA,EAAA,CAAA,CAAA,iQgBQA,EhBRA,IAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,yIUCgF,8GAGrC,SAChC,CAAA,AHAA,6BQ2BL,EAAA,CAAA,EAAe,CAAA,CAAA,OAAA,EAAiB,iBAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,2MAxBR,CEAD,AVAA,AQAC,CEAD,AVAA,AQAC,SACvD,CAAC,UAAa,CAAA,ACYH,AFZG,CCAA,ADAA,AEYH,CFZG,ACAA,ACYH,CAAA,AFZG,ACAA,CAAA,ACYH,AFZG,+BCAqC,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,SACzD,oCAAwC,CRYL,AUAF,AFZO,CAAA,ARYL,AUAF,CVAE,AUAQ,AFZH,CAAA,ARYL,AUAQ,CVAE,AQZL,CRYK,AQZL,CAAA,CAAA,CAAU,CAAA,SAClD,CAAA,AAAE,EAAG,CAAA,CAAA,CGDP,CAAA,WHCwB,CAAA,CAAA,CAAA,KAAA,EAAU,EACxC,CAAA,ADYH,MCZW,CAAE,EAAA,2BAA+B,CAAA,ADYV,CCZU,EAAK,CAAA,ADYF,CAAA,ACZE,CDYF,ACZE,CAAA,ADYF,CAAA,ACZE,CDYF,ACZE,CDYF,ACZE,CDYQ,ECZE,CACzD,CAAC,OAAQ,CAAE,EAAG,CAAA,SAAW,IAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACxC,CAAC,OAAQ,CAAE,EAAG,CAAA,uBAAyB,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACtD,UAAW,CAAA,QAAY,CAAA,CGDhB,CAAA,AHCoB,KAAM,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,AAAM,GAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACzD,CAAC,SAAU,CAAA,GAAM,CAAA,IAAM,CAAA,CAAA,CAAA,IAAS,EAAG,CAAA,IAAM,GAAA,CAAA,AAAK,QAAA,CAAU,CAAA,WAC7C,CAAA,AAAE,CGYT,CAAA,AHZS,CAAA,KAAU,CGYN,AHZM,CAAA,AGYN,CHZM,AGYN,OHZmB,CAAA,AGYF,CAAA,AHZE,iBAAqB,CGYE,AHX3D,CGW2D,AHX1D,SAAU,CAAE,GAAI,IAAA,CAAM,GAAI,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,AAAG,CAAA,CAAA,GAAM,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAC1D,EfnBA,IAAA,EAAA,EAAA,CAAA,CAAA,aAYwC,CAAC,aAAE,CAAW,eAAE,CAAa,AAgGtD,cAhGwD,CAAY,cAAE,CAAY,cAAE,CAAY,OAAE,CAAK,CAAE,IACtH,GAAM,CAAC,EAAO,EAAS,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAS,IAC7B,EAAiB,CAAA,EAAA,EAAA,MAAA,AAAM,EAAiB,MAE9C,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,EAAe,OAAO,EAAE,eAAe,CAAE,SAAU,QAAS,EAC9D,EAAG,CAAC,EAAa,EAAa,EAS9B,IAAM,IAAiB,GAAQ,EAAM,gBAAgB,EAAI,EAAM,cAAc,CAE7E,EAFgF,IAG9E,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,2FAEb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,qFACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,KAAM,GAAI,UAAU,kBAC9B,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,oCAA2B,oBAE5C,GACG,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,8FACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,GAAG,CAAA,CAAC,KAAM,GAAI,KAAK,iBAAiB,IAAE,EAAM,gBAAgB,CAAC,MAA6B,SAAzB,EAAM,cAAc,CAAc,IAAM,EAAM,cAAc,OAKvI,GACC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,gFACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,mDAAyC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,KAAM,KAAM,iBAC9E,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,uCAA6B,IAAE,EAAa,SAAS,CAAC,EAAG,IAAI,aAIhF,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,6DACW,IAAvB,EAAY,MAAM,EACjB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,6CACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAI,KAAM,GAAI,UAAU,4BACzB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,mBAAU,uDACtB,GACG,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,sHAA6G,+CAOnI,EAAY,GAAG,CAAC,AAAC,GAChB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAiB,UAAW,CAAC,cAAc,EAAe,SAAb,EAAI,IAAI,CAAc,YAAc,cAAA,CAAe,UAC/F,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAW,CAAC,8CAA8C,EAAe,SAAb,EAAI,IAAI,CAAc,2CAA6C,kEAAA,CAAmE,WACvL,UAAb,EAAI,IAAI,EAAqC,eAArB,EAAI,YAAY,EACrC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,2GAAiG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAa,KAAM,KAAM,gBAE9I,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,+CAAuC,EAAI,IAAI,OALxD,EAAI,EAAE,GAUjB,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,8BACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sIACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAC,KAAM,GAAI,UAAU,iBAAiB,0BAItD,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,IAAK,OAGZ,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,kDACb,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,SAlES,AAAC,CAkEA,GAjEpB,EAAE,cAAc,GACX,EAAM,IAAI,KAAM,IACrB,EAAc,GACd,EAAS,GAF0B,CAGrC,EA6DoC,UAAU,qBACtC,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACC,KAAK,OACL,MAAO,EACP,SAAU,AAAC,GAAM,EAAS,EAAE,MAAM,CAAC,KAAK,EACxC,YAAa,EAAiB,qBAAuB,mBACrD,UAAU,sJACV,SAAU,GAAgB,IAE5B,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,SAAU,CAAC,EAAM,IAAI,IAAM,GAAgB,EAC3C,UAAU,kJAEV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAK,KAAM,cAMxB,ECxGA,IAAA,EAAA,EAAA,CAAA,CAAA,yBasBiB,EAAA,wBArBR,CCAA,AFAN,ANAA,AOAM,AJAN,ACAA,AKAM,ACAA,ACAA,oHJCE,CDAA,AKAA,AJAA,ANYL,AEZK,AKAA,ACAA,ATAA,AUAA,+CHGgC,CAAA,AJYP,AQZO,AFA3B,ADA2B,AEA3B,AVA4B,GOAI,CGAhC,ADA8B,AEAE,AHAA,ADAA,CAAA,AEAF,AEAE,AHAA,AEAhC,qDHEL,CAAA,ACAA,ACYL,aFZsB,IAAA,kDbP5B,IAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,kIOA4B,IAAA,aPA5B,IAAA,EAAA,EAAA,CAAA,CAAA,0CIHqC,AAagB,CAbf,MAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,gBAAA,CAAA,AAAkB,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,CAAA,OQmBtE,EAAA,OAAA,EAAiB,qEAjBjB,GAAA,sBAAgC,wCACT,CNAJ,AKAC,ADAG,ADAN,AFAC,ACAK,AIAA,CNAJ,ACAD,AGAK,AFAA,AGAH,ACAG,4HAEY,CJYJ,AGAF,ACZM,CJYJ,AGAF,ACZM,CAAA,AJYJ,AGAF,YCZwB,CAAA,ADYA,CAAA,ACZA,CAAA,ADYA,CAAA,ACZA,CDYA,ACZA,CDYA,ACZA,CDYA,ACZA,CDYA,oJAfP,CAAA,AHAA,AEAF,ADAC,CAAA,ADAC,AGAA,ADAF,kDVC3D,IAAA,EAAA,EAAA,CAAA,CAAA,aUewB,CAAA,EAAA,EAAA,OAAA,EAAA,oBAAqC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,0CAjBH,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,uDACT,UAAU,oBACtD,CEAA,AHAT,AEAA,ALAA,ACAA,ACAA,AEAS,MAAA,WAAsB,EAAA,QAAa,CAAA,CAAA,CAAA,CAAK,IAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CLAvE,CAAA,6BKC6B,CJAH,AIAG,AMA7B,ADAA,AFAA,ACAA,AGAA,ARAwB,CGAK,AFAA,ADAL,AQAxB,AJAA,APA0B,AUA1B,AFAA,ACAA,mCfDT,IAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,aAsBgD,AAAC,IAC7C,GAAM,SAAE,CAAO,MAAE,CAAI,QAwGV,EAxGY,CAAQ,kBAAE,CAAgB,UAAE,CAAQ,CAAE,CAAG,EAC1D,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IAC7C,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAE7C,EAAiB,EAAQ,QAAQ,CAAC,IAAI,CAAC,GAAK,EAAE,EAAE,GAAK,GAE3D,MACI,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAW,CAAC,uCAAuC,EAAE,AAA2B,WAAtB,WAAW,CAAC,KAAK,CAAc,0BAAuD,UAA3B,EAAK,WAAW,CAAC,KAAK,CAAe,eAAiB,eAAA,CAAgB,WAG5L,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAM,UAAW,CAAA,EAAG,EAAgB,OAAS,MAAM,8HAA8H,CAAC,WAC/K,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0CACX,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,mEAAmE,QAAS,IAAM,EAAM,gBAAgB,CAAC,uBACnH,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,UAAU,kBAAkB,cAEtC,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACG,KAAK,OACL,MAAO,EAAQ,KAAK,CACpB,SAAU,AAAC,GAAM,EAAM,eAAe,CAAC,CAAE,MAAO,EAAE,MAAM,CAAC,KAAM,AAAD,GAC9D,UAAU,sIACV,YAAY,mBAEhB,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAO,QAAS,IAAM,EAAM,gBAAgB,CAAC,aAAc,UAAU,mHAClE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAgB,KAAM,KAAM,6BAIrC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,wCACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,uGAA6F,aAC9F,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,QAAS,EAAM,YAAY,CAAE,UAAU,+BAAsB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,KAAM,UAE9F,EAAQ,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAM,IACzB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAkB,UAAU,2BACzB,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACG,QAAS,IAAM,EAAM,eAAe,CAAC,EAAK,EAAE,EAC5C,UAAW,CAAC,8DAA8D,EAAE,IAAqB,EAAK,EAAE,EAAiB,UAAb,EAAuB,oDAAsD,qBAAA,CAAsB,WAE9M,EAAM,EAAE,KAAG,EAAK,KAAK,IAE1B,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,QAAS,IAAM,EAAM,eAAe,CAAC,EAAK,EAAE,EAAG,UAAU,sGAA6F,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,KAAM,SAPtK,EAAK,EAAE,GAWrB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,yEAAgE,mBAC/E,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAO,QAAS,IAAM,EAAM,gBAAgB,CAAC,SAAU,UAAW,CAAC,2DAA2D,EAAe,UAAb,EAAuB,yBAA2B,qBAAA,CAAsB,WAAE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAS,KAAM,KAAM,4BACjO,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAO,QAAS,IAAM,EAAM,gBAAgB,CAAC,kBAAmB,UAAW,CAAC,2DAA2D,EAAe,mBAAb,EAAgC,2BAA6B,qBAAA,CAAsB,WAAE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,KAAM,KAAM,qBAClP,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAO,QAAS,IAAM,EAAM,gBAAgB,CAAC,YAAa,UAAW,CAAC,2DAA2D,EAAE,AAAa,eAAa,2BAA6B,qBAAA,CAAsB,WAAE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,KAAM,KAAM,eACzO,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAO,QAAS,IAAM,EAAM,gBAAgB,CAAC,SAAU,UAAW,CAAC,2DAA2D,EAAe,UAAb,EAAuB,2BAA6B,qBAAA,CAAsB,WAAE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAC,KAAM,KAAM,oBACpO,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAO,QAAS,IAAM,EAAM,gBAAgB,CAAC,YAAa,UAAW,CAAC,2DAA2D,EAAE,AAAa,eAAa,2BAA6B,qBAAA,CAAsB,WAAE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,KAAM,KAAM,oBAG7O,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0CACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,6CACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,qFACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,eACN,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WAAM,EAAK,KAAK,CAAC,gBAAgB,CAAC,MAAkC,SAA9B,EAAK,KAAK,CAAC,cAAc,CAAc,IAAM,EAAK,KAAK,CAAC,cAAc,OAEjH,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,kEACX,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,qBAAqB,MAAO,CAAE,MAAO,CAAA,EAAG,KAAK,GAAG,CAAC,IAAM,EAAK,KAAK,CAAC,gBAAgB,CAAG,EAAK,KAAK,CAAC,cAAc,CAAI,KAAK,CAAC,CAAE,AAAD,SAGhJ,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAO,QAAS,IAAM,EAAM,gBAAgB,CAAC,WAAY,UAAU,4GAAkG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,KAAM,KAAM,iBACxL,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAO,QAAS,EAAM,QAAQ,CAAE,UAAU,sGAA4F,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,KAAM,KAAM,wBAKnK,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,wDACX,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAO,UAAU,yHACd,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACX,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,QAAS,IAAM,EAAiB,CAAC,GAAgB,UAAU,+CAAsC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAK,KAAM,OACvG,UAAb,EACG,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACG,KAAK,OACL,MAAO,GAAgB,OAAS,GAChC,SAAU,AAAC,GAAM,EAAM,eAAe,CAAC,CAAE,SAAU,EAAQ,QAAQ,CAAC,GAAG,CAAC,GAAK,EAAE,EAAE,GAAK,EAAmB,CAAE,GAAG,CAAC,CAAE,MAAO,EAAE,MAAM,CAAC,KAAK,AAAC,EAAI,EAAG,GAC9I,UAAU,qHAGd,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uDAA+C,OAGvE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACX,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAO,QAAS,EAAM,YAAY,CAAE,UAAU,wHAA8G,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAO,KAAM,KAAM,cACjL,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,QAAS,EAAM,UAAU,CAAE,UAAU,+DAAsD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAW,KAAM,OACrH,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,QAAS,IAAM,EAAiB,CAAC,GAAgB,UAAW,CAAC,iBAAiB,EAAE,EAAgB,gCAAkC,oCAAA,CAAqC,UAC1K,EAAgB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,YAAY,CAAA,CAAC,KAAM,KAAS,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAY,KAAM,aAK7E,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,2CACX,OAKT,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAW,CAAA,EAAG,EAAgB,eAAiB,MAAM,oFAAoF,CAAC,UAC1I,GAAiB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAQ,YAAa,EAAM,WAAW,CAAE,cAAe,EAAM,aAAa,CAAE,aAAc,EAAM,YAAY,CAAE,aAAa,GAAG,aAAc,EAAM,YAAY,CAAE,MAAO,EAAK,KAAK,OAIpN,6LgBxHgE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,uBAC5C,MAAA,uBAAmC,IAAK,CVAA,AUAA,YfRtE,IAAA,EAAA,EAAA,CAAA,CAAA,yBOgBiB,EAAA,sHAf2D,6CS4BtE,EAAA,CAAA,EAAa,CAAA,AHZA,CAAA,AGYA,AHZA,CAAA,AGYA,CAAA,AHZA,KAAA,EAAA,8RGP4D,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,cAI3E,uEAAwE,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAEtF,IhBJgD,CAAC,QAAE,CAAM,CAAE,SAAO,SAAE,CAAO,EAuO5D,OAvO8D,CAAO,CAAE,IACpF,GAAM,CAAC,EAAQ,EAAU,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAe,OAC7C,CAAC,EAAU,EAAY,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAW,MAC7C,CAAC,EAAc,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAC3C,CAAC,EAAY,EAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAE7C,GAAI,CAAC,EAAQ,OAAO,KAEpB,IAAM,EAAsB,KAC1B,IAAI,EAAO,CAAC;;;;;eAKD,EAAE,EAAQ,KAAK,CAAC;;;;;;;;;;;;;;IAc3B,CAAC,CA6BD,OA3BI,AA2BG,IA1BL,GAAQ,CAAC,MADO;;4DAGsC,EAAE,EAAQ,KAAK,CAAC;6DACf,EAAE,EAAQ,MAAM,CAAC;;OAExE,AAAC,EAGC,IACF,GAAQ,CAAC,IADK,+CAC2C,CAAC,CAC1D,EAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAM,KAC9B,GAAQ,CAAC,mBAAmB,EAAE,EAAI,EAAE,EAAE,EAAK,KAAK,CAAC,SAAS,CAAC,AAC7D,GACA,GAAQ,CAAC,WAAW,CAAC,EAGvB,EAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAM,KAC9B,GAAQ,CAAC;sCACuB,EAAE,EAAI;cAC9B,EAAE,EAAK,KAAK,CAAC;UACjB,EAAE,EAAK,OAAO,CAAC;;MAEnB,CAAC,AACH,GAEA,GAAQ,CAAC,cAAc,CAAC,AAE1B,EAqCM,EAAe,CAAC,EAAY,KAChC,IAAM,EAAM,IAAI,eAAe,CAAC,GAC1B,EAAI,SAAS,aAAa,CAAC,KACjC,EAAE,IAAI,CAAG,EACT,EAAE,QAAQ,CAAG,EACb,SAAS,IAAI,CAAC,WAAW,CAAC,GAC1B,EAAE,KAAK,GACP,SAAS,IAAI,CAAC,WAAW,CAAC,GAC1B,IAAI,eAAe,CAAC,GACpB,GACF,EAEA,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,qIACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,gGAGb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0EACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,sDACZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAS,KAAM,KAAM,wBAExB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,uCAA+B,EAAQ,KAAK,MAE3D,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,QAAS,EAAS,UAAU,6DAClC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAC,CAAA,CAAC,KAAM,UAKb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,uCAGb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,wCACb,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,QAAS,IAAM,EAAU,OACzB,UAAW,CAAC,wEAAwE,EAAa,QAAX,EAAmB,2CAA6C,yDAAA,CAA0D,WAEhN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAQ,KAAM,KACf,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,yBAAgB,wBAGjC,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,QAAS,IAAM,EAAU,QACzB,UAAW,CAAC,wEAAwE,EAAE,AAAW,WAAS,2CAA6C,yDAAA,CAA0D,WAEjN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAS,KAAM,KAChB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,yBAAgB,sBAGjC,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,QAAS,IAAM,EAAU,QACzB,UAAW,CAAC,wEAAwE,EAAa,SAAX,EAAoB,2CAA6C,yDAAA,CAA0D,WAEjN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,KAAM,KACZ,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,yBAAgB,oBAGjC,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,QAAS,IAAM,EAAU,YACzB,UAAW,CAAC,wEAAwE,EAAa,aAAX,EAAwB,2CAA6C,yDAAA,CAA0D,WAErN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAS,KAAM,KAChB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,yBAAgB,mBAKnC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,+DACb,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,2EAAiE,6BAClD,EAAO,WAAW,GAAG,OAGlD,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sBACZ,AAAW,WACV,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,8CACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0BACX,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,sCAA6B,qBAC9C,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,kCAAyB,yCAE7C,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,2EAAkE,YAIrF,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,8CACb,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,4CAA4C,QAAQ,iBAAQ,6BAC7E,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACC,GAAG,QACH,KAAK,WACL,QAAS,EACT,SAAW,AAAD,GAAO,EAAgB,EAAE,MAAM,CAAC,OAAO,EACjD,UAAU,0EAId,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,8CACb,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,4CAA4C,QAAQ,eAAM,kCAC3E,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACC,GAAG,MACH,KAAK,WACL,QAAS,EACT,SAAU,AAAC,GAAM,EAAc,EAAE,MAAM,CAAC,OAAO,EAC/C,UAAU,0EAIF,SAAX,GACG,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,+DAAsD,wHAS7E,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,6EACb,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,QAAS,EACT,UAAU,gGACX,YAGD,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,QA/JW,CA+JF,IA9JjB,IAAM,EAAW,EAAQ,KAAK,CAAC,OAAO,CAAC,cAAe,KAAK,WAAW,GAEtE,GAAI,AAAW,OAAO,GAEpB,EAAQ,cAAE,aAAc,CAAW,QAEhC,GAAe,QAAQ,CAAnB,EAMP,EAHa,IAAI,KAAK,CAAC,CAGV,QAJG,IACyB,CAAE,CACzC,KAAM,oBACR,GACmB,CAAA,EAAG,EAAS,IAAI,CAAC,OAEjC,GAAe,QAAQ,CAAnB,EAMP,EAHa,IAAI,KAAK,CADN,CAIH,GAHkB,CAAE,CAC/B,KAAM,uBACR,GACmB,CAAA,EAAG,EAAS,MAAM,CAAC,OAEnC,GAAe,aAAX,EAAuB,CAC5B,IAAI,EAAK,CAAC,EAAE,EAAE,EAAQ,KAAK,CAAC;AAAA,GAAK,EAAE,EAAQ,MAAM,CAAC;AAAA;AAAI,CAAC,CACvD,EAAQ,QAAQ,CAAC,OAAO,CAAC,IAErB,IAAM,EAAO,EAAE,OAAO,CAAC,OAAO,CAAC,WAAY,MAC3C,GAAM,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC;AAAA;AAAI,EAAE,KAAK;AAAA;AAAA;AAAA;AAAW,CAAC,AAC/C,GAEA,EADa,IAAI,KAAK,CAAC,CACV,CADa,CAAE,CAAE,KAAM,eAAgB,GACjC,CAAA,EAAG,EAAS,GAAG,CAAC,CACvC,CACF,EA+HU,UAAU,uIAEE,QAAX,EAAmB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAQ,KAAM,KAAS,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAS,KAAM,KAChD,QAAX,EAAmB,6BAA+B,CAAC,mBAAa,EAAa,SAAX,EAAoB,MAAmB,SAAX,EAAoB,QAAU,KAAA,CAAM,WAM/I,OK3NiB,CUAD,AHZA,ACAA,ARYC,CQZD,ADAA,APYC,AUAD,AVAC,CQZD,AEYA,AHZA,APYC,MAAA,EAAiB,mCAtBL,CEAD,AFAC,ACAF,AEAE,ACAJ,ANYL,CGZO,AGAF,ADAI,ALYT,AEZS,AEAD,EAAA,UFAgB,SACjC,CKAA,AFAA,ACAA,AHAA,AKAR,AJAQ,AFAA,EAAK,CGAH,ACAA,AFAG,AFAA,ACAA,AIAA,ACAD,CFAF,AHAG,ACAA,ACAH,AHAG,AKAA,ACAD,WNAe,CIAL,AJAK,AGAJ,AFAE,ACAZ,AGAA,CHAA,ACAU,AGAE,ANAE,AIAL,AHAG,AIAZ,ELAmB,CKAnB,ALAmB,AGAD,ACAD,AHAA,ACAjB,kBFCL,CKAA,AJAA,ACAA,AEAA,ADAA,AGAR,ANAQ,cAAkB,IAAA,UAAe,6BACT,CUA1B,AJAoB,AKApB,ARAwB,AHAE,AIAF,AGAxB,ACAA,ACAA,CCAA,AFAA,ADAA,AEAA,AHAoB,AFAI,ADAA,AQAxB,AXA0B,4FAGxB,CMYL,ANZK,AAAE,CMYP,CNZU,WAAY,CAAA,AMYb,CAAA,ANZa,EAAK,CAAA,AMYD,CAAA,ANZC,CAAA,AMYD,6DNVZ,uBAA4B,CQAhC,CAAA,uBRAsD,CAAU,AUAA,CVAA,GJThF,IAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,eGkBgB,EAAA,OAAA,EAAiB,CIZD,AHAC,AIYT,ALAS,CIZD,AHAC,AIYT,ALAS,CCZA,ADYA,AKAT,ADZQ,QJL9B,SAEI,CAAA,AGAH,AEAA,ADAA,AEAA,AJAA,ADAA,CGAA,AJAG,ACAH,ACAA,ACAA,AEAA,ACAA,ANAM,0EAA2E,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KHHzF,IAAA,EAAA,EAAA,CAAA,CAAA,OASA,IAAM,EAA+C,CAAC,UAAE,CAAQ,CAAE,GAChE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,sKACZ,MAIuC,CAAC,CAAE,QAAM,SAAE,CAAO,UAAE,CAAQ,CAAE,AA0Q3D,GAzQb,AAAK,EA6MH,CAAA,CA7ME,CA6MF,EAAA,CA7MW,EA6MX,EAAC,MAAA,CAAI,UAAU,4HACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,gGAGb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,mFACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,sDACZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,KAAM,GAAI,UAAU,kBAAkB,WAC/B,aAAb,EAA0B,uBAC1B,AAAa,qBAAmB,iBACnB,aAAb,EAA0B,aACb,UAAb,EAAuB,gBACvB,kBAGN,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,uCAA8B,oCAE7C,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,QAAS,EAAS,UAAU,iGAClC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAC,CAAA,CAAC,KAAM,UAKb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,gCAGV,CArOW,KAClB,OAAQ,GACJ,IAAK,QACD,MACI,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,iBAChB,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,2GACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAC,KAAM,KAAM,6BAE1B,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,6CACZ,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,UAAE,qJAGH,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,sBACV,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,mCACV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,iBAAiB,CAAA,CAAC,KAAM,GAAI,UAAU,oBACvC,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,wCAA+B,sBAAwB,kHAG/E,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,mCACV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,KAAM,GAAI,UAAU,oBAC5B,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,wCAA+B,iBAAmB,0IAQ5F,KAAK,WACD,MACI,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WAEE,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,iBACf,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,2GACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,KAAM,KAAM,6BAEtB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,wEACf,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,sBACV,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,mCACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,iBAAiB,CAAA,CAAC,KAAM,GAAI,UAAU,oBACvC,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,wCAA+B,gBAAkB,IAAC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,SAAU,0FAGrF,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,mCACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAQ,KAAM,GAAI,UAAU,oBAC7B,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,wCAA+B,sBAAwB,IAAC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,SAAU,MAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,MAAO,wCAAqC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,SAAU,MAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,MAAO,sBAG7K,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,mCACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,KAAM,GAAI,UAAU,oBAC5B,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,wCAA+B,iBAAmB,uFAQ9E,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,kEACf,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,uGACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CAAC,KAAM,KAAM,+BAE3B,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0DACf,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,6CAAoC,oBACnD,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAE,UAAU,gDAAsC,mBAC/B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,WAAY,mBAAgB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,UAAY,qBAEvE,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAE,UAAU,2CAAiC,qBACxB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,WAAY,uBAAoB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,UAAO,qCAAyC,0BAGhH,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,6CAAoC,yBACnD,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAE,UAAU,gDACT,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,QAAS,2EAElB,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAE,UAAU,2CAAiC,YACjC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,MAAO,gCAA6B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,MAAO,+BAQpF,KAAK,iBACD,MACI,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,iBAChB,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,yGACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,KAAM,KAAM,qBAEtB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,6CACZ,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,WAAE,uHAEuB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,UAAO,kBAAsB,+CAExD,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,uDACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,uCACX,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,yCAAgC,0BAC9C,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,UAAE,gJAIP,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,uCACX,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,yCAAgC,yBAC9C,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,UAAE,6KASvB,KAAK,WACD,MACI,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,iBACf,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,yGACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,KAAM,KAAM,0BAEzB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,uCAA8B,kHAG3C,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,4DACV,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,WAAG,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,UAAO,kBAAsB,kGAClC,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,WAAG,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,UAAO,yBAA6B,8DAK3D,KAAK,IAED,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,iBACf,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,yGACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,KAAM,KAAM,6BAEtB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,6CACf,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,+DACX,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,yCAAgC,gCAC9C,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,WAAE,sCAAmC,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,UAAO,eAAmB,aACjE,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,6CACV,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,oCAA0B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,0CAAyC,4BAChG,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,oCAA0B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,0CAAyC,4BAChG,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,oCAA0B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,0CAAyC,mCAChG,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,oCAA0B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,0CAAyC,gCAGxG,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,wCAA+B,8BAAgC,iIAEnF,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,wCAA+B,mBAAqB,uLAGxE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,gDACX,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,kEACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAS,KAAM,KAAM,mCAEzB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,qGACV,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sBACZ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sDACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,0BAAiB,mBACjC,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WAAK,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,SAAU,MAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,YAEjC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sDACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,0BAAiB,uBACjC,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WAAK,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,SAAU,MAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,YAEjC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sDACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,0BAAiB,cACjC,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WAAK,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,SAAU,MAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,eAGpC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sBACZ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sDACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,0BAAiB,sBACjC,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WAAK,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,SAAU,MAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,YAEjC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sDACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,0BAAiB,YACjC,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WAAK,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,SAAU,MAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,YAEjC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sDACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,0BAAiB,aACjC,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WAAK,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,SAAU,MAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,UAAW,MAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAI,0BAQ9E,CACJ,KAgCU,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,gDACX,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,0EAAiE,wBAC/E,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0DACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,iCACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,2BACN,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,oCAA2B,kBAE/C,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,iCACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,iBACN,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,mCAQtB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,sEACb,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,QAAS,EACT,UAAU,yGACX,kBA/PW,KCRtB,IAAA,EAAA,EAAA,CAAA,CAAA,OAWe,SAAS,EAAc,UAAE,CAAQ,CAAiC,EAC7E,IAAM,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IAClB,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IAClB,EAAW,CAAA,EAAA,EAAA,WAAA,AAAW,IACtB,EAAY,EAAO,EAAE,CAErB,MAAE,CAAI,QAAE,CAAM,gBAAE,CAAc,CAAE,QAAS,CAAW,CAAE,CAAG,CAAA,EAAA,EAAA,cAAA,AAAc,IACvE,CACF,UAAQ,qBAAE,CAAmB,eAC7B,CAAa,eAAE,CAAa,YAAE,CAAU,CAC3C,CAAG,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,GACV,aAAE,CAAW,cAAE,CAAY,aAAE,CAAW,CAAE,CAAG,CLvBhC,KACnB,GAAM,CAAC,EAAa,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,EAAE,EAC1D,CAAC,EAAc,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IA6CjD,MAAO,CAAE,2BAAa,EAAc,YA3ChB,MAChB,EACA,EACA,EACA,EACA,KAEA,IAAM,EAAuB,CACzB,GAAI,KAAK,GAAG,GAAG,QAAQ,GACvB,KAAM,OACN,KAAM,CACV,EACA,EAAe,GAAQ,IAAI,EAAM,EAAQ,EACzC,GAAgB,GAEhB,GAAI,CACA,IAAM,EAAW,MAAM,EAAA,OAAG,CAAC,EAAE,CAAC,QAAQ,CAClC,EACY,WAAZ,EAAuB,GAAK,EAC5B,EACA,GAGJ,IAEA,IAAM,EAAqB,CACvB,GAAI,CAAC,KAAK,GAAG,IAAK,CAAC,CAAE,QAAQ,GAC7B,KAAM,QACN,KAAM,EAAS,IAAI,CACnB,aAAc,EAAS,IAAI,AAC/B,EACA,EAAe,GAAQ,IAAI,EAAM,EAAM,CAC3C,CAAE,KAAM,CACJ,EAAe,GAAQ,IAAI,EAAM,CAC7B,GAAI,KAAK,GAAG,GAAG,QAAQ,GACvB,KAAM,QACN,KAAM,wDACV,EAAE,CACN,QAAU,CACN,GAAgB,EACpB,CACJ,CAEgD,CACpD,KKvBU,CAAC,EAAkB,EAAoB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACnD,CAAC,EAAmB,EAAqB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACrD,CAAC,EAAiB,EAAmB,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,GAAS,GAEjD,EAxBF,AAAJ,AAwBqC,EAxBxB,OAwBI,CAxBI,CAAC,UAAkB,CAAP,gBAC7B,EAAS,QAAQ,CAAC,UAAkB,CAAP,OAC7B,EAAS,QAAQ,CAAC,aAAqB,CAAP,UAChC,EAAS,QAAQ,CAAC,aAAqB,CAAP,UAC7B,QAuBP,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACF,GACA,EAAoB,EAE5B,EAAG,CAAC,CAHe,CAGJ,EAAoB,EAGnC,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACF,AAAC,GAAgB,GACjB,EAAO,CADgB,MACT,AADE,CACD,SAEvB,EAAG,CAAC,EAAM,EAAa,EAAO,EAE9B,IAAM,EAAU,EAAS,IAAI,CAAC,GAAK,EAAE,EAAE,GAAK,SAS5C,CANA,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,MACF,GAAY,AAAC,GAAqB,EAAQ,GAA/B,KAAuC,CAAC,IAAI,CAAC,CAAvB,EAA4B,EAAE,EAAE,GAAK,IACtE,EAAoB,EAAQ,QAAQ,CADmD,AAClD,EAAE,CADmD,CACjD,IAAM,GAEvD,EAAG,CAAC,EAAS,EAAiB,EAE1B,GAAe,CAAC,GAEZ,CAAA,EAFkB,AAElB,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,8FACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,kCAAkC,KAAM,KAC3D,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,UAAU,gBAAgB,KAAM,KAC1C,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,6BAAoB,kBAM/C,EAuBD,CAAA,EAAA,EAAA,EAvBU,EAuBV,EAAC,EAAA,CACG,QAAS,EACT,KAAM,EACN,SAAU,EACV,iBAAkB,EAClB,YAAa,EACb,aAAc,EACd,iBArBqB,AAAC,CAqBJ,GApBtB,IAAM,EAAO,CAAC,SAAS,EAAE,EAAA,CAAW,CACpC,OAAQ,GACJ,IAAK,QAML,QANc,EAAO,IAAI,CAAC,GAAO,KACjC,KAAK,iBAAkB,EAAO,IAAI,CAAC,CAAA,EAAG,EAAK,MAAM,CAAC,EAAG,KACrD,KAAK,QAAS,EAAO,IAAI,CAAC,CAAA,EAAG,EAAK,MAAM,CAAC,EAAG,KAC5C,KAAK,WAAY,EAAO,IAAI,CAAC,CAAA,EAAG,EAAK,SAAS,CAAC,EAAG,KAClD,KAAK,WAAY,EAAO,IAAI,CAAC,CAAA,EAAG,EAAK,SAAS,CAAC,EAAG,KAClD,KAAK,YAAa,EAAO,IAAI,CAAC,aAElC,CACJ,EAWQ,gBAAiB,AAAC,IAAS,EAAoB,GAAK,EAAO,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA,CAAW,CAAG,EAC1F,gBAAiB,AAAC,GAAY,EAAc,EAAW,GACvD,aAAc,UACV,IAAM,EAAK,MAAM,EAAW,EAAW,CAAC,GACpC,IAAI,AACJ,EAAoB,GACpB,EAAO,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA,CAAW,EAE3C,EACA,gBAAiB,AAAC,IACd,GAAI,EAAQ,QAAQ,CAAC,MAAM,CAAG,EAAG,CAC7B,IAAM,EAAc,EAAQ,QAAQ,CAAC,MAAM,CAAC,GAAK,EAAE,EAAE,GAAK,GAC1D,EAAc,EAAW,CAAE,SAAU,CAAY,GAC7C,IAAqB,GAAI,EAAoB,CAAW,CAAC,EAAE,CAAC,EAAE,CACtE,CACJ,EACA,SAAU,KAAQ,IAAU,EAAO,IAAI,CAAC,IAAM,EAC9C,cAAe,AAAC,IACR,GAAW,GAAM,EAAY,EAAS,SAAU,EAAK,EAAM,EACnE,EACA,aAAc,KAAQ,EACtB,aAAc,IAAM,GAAqB,GACzC,WAAY,IAAM,GAAmB,aAErC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAY,OAAQ,EAAmB,QAAS,IAAM,GAAqB,GAAQ,QAAS,EAAS,QAAS,KAAQ,IACvH,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAU,OAAQ,EAAiB,QAAS,IAAM,GAAmB,GAAQ,SAAU,IAGvF,EAAA,OAAK,CAAC,YAAY,CAAC,EAAgC,SAChD,OACA,YACA,mBACA,sBACA,EACA,cAAe,AAAC,GAAiB,EAAc,EAAW,GAC1D,cAAe,CAAC,EAAmB,IAAc,EAAc,EAAW,EAAW,kBACrF,CACJ,MAlEA,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,8FACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,kCAAkC,KAAM,KAC3D,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,0BAAiB,8BAmE9C","ignoreList":[6,7,8,9,10,11,12,13,14,15,16,17,18,19]} \ No newline at end of file +{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/src/components/AIPanel.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/layout/EditorShell.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/ExportModal.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/hooks/useChat.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/HelpModal.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/layout.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/chevron-left.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/layout-dashboard.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/circle-question-mark.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/share-2.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/keyboard.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/download.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/menu.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/bot.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/command.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/file-text.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/printer.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/brain-circuit.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/send.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/file-braces.ts"],"sourcesContent":["'use client';\n\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { Sparkles, Send, RefreshCw, BookOpen, Bot, ArrowLeft, BrainCircuit, Zap } from 'lucide-react';\nimport { ChatMessage, UserUsage } from '@/lib/types';\n\ninterface AIPanelProps {\n chatHistory: ChatMessage[];\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n selectedText: string;\n isGenerating: boolean;\n usage?: UserUsage;\n}\n\nconst AIPanel: React.FC = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGenerating, usage }) => {\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [chatHistory, isGenerating]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (!input.trim() || isGenerating) return;\n onSendMessage(input);\n setInput(\"\");\n };\n\n const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false;\n\n return (\n
\n {/* Header with Usage Counter */}\n
\n
\n \n

Assistant IA

\n
\n {usage && (\n
\n {usage.aiActionsCurrent} / {usage.aiActionsLimit === 999999 ? '∞' : usage.aiActionsLimit}\n
\n )}\n
\n\n {selectedText && (\n
\n
Contexte :
\n
\"{selectedText.substring(0, 60)}...\"
\n
\n )}\n\n
\n {chatHistory.length === 0 && (\n
\n \n

Bonjour ! Comment puis-je vous aider aujourd'hui ?

\n {isLimitReached && (\n
\n Limite atteinte ! Améliorez votre plan.\n
\n )}\n
\n )}\n\n {chatHistory.map((msg) => (\n
\n
\n {msg.role === 'model' && msg.responseType === 'reflection' && (\n
Réflexion
\n )}\n
{msg.text}
\n
\n
\n ))}\n \n {isGenerating && (\n
\n
\n L'IA travaille...\n
\n
\n )}\n
\n
\n\n
\n
\n setInput(e.target.value)}\n placeholder={isLimitReached ? \"Limite atteinte...\" : \"Votre message...\"}\n className=\"w-full pl-4 pr-12 py-3 bg-slate-100 rounded-2xl text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-shadow disabled:opacity-50\"\n disabled={isGenerating || isLimitReached}\n />\n \n \n
\n
\n );\n};\n\nexport default AIPanel;\n","'use client';\n\n\nimport React, { useState } from 'react';\nimport { BookProject, UserProfile, ViewMode, ChatMessage } from '@/lib/types';\nimport AIPanel from '@/components/AIPanel';\nimport { Book, FileText, Globe, GitGraph, Lightbulb, Settings, Menu, ChevronRight, ChevronLeft, Share2, HelpCircle, LogOut, LayoutDashboard, User, Plus, Trash2 } from 'lucide-react';\n\ninterface EditorShellProps {\n project: BookProject;\n user: UserProfile;\n viewMode: ViewMode;\n currentChapterId: string;\n chatHistory: ChatMessage[];\n isGenerating: boolean;\n onViewModeChange: (mode: ViewMode) => void;\n onChapterSelect: (id: string) => void;\n onUpdateProject: (updates: Partial) => void;\n onAddChapter: () => Promise;\n onDeleteChapter: (id: string) => void;\n onLogout: () => void;\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n onOpenExport: () => void;\n onOpenHelp: () => void;\n children: React.ReactNode;\n}\n\nconst EditorShell: React.FC = (props) => {\n const { project, user, viewMode, currentChapterId, children } = props;\n const [isSidebarOpen, setIsSidebarOpen] = useState(true);\n const [isAiPanelOpen, setIsAiPanelOpen] = useState(true);\n\n const currentChapter = project.chapters.find(c => c.id === currentChapterId);\n\n return (\n
\n\n {/* SIDEBAR */}\n \n\n {/* MAIN CONTENT */}\n
\n
\n
\n \n {viewMode === 'write' ? (\n props.onUpdateProject({ chapters: project.chapters.map(c => c.id === currentChapterId ? { ...c, title: e.target.value } : c) })}\n className=\"font-serif font-bold text-lg bg-transparent border-b border-transparent focus:border-blue-500 focus:outline-none\"\n />\n ) : (\n {viewMode}\n )}\n
\n
\n \n \n \n
\n
\n\n
\n {children}\n
\n
\n\n {/* AI PANEL */}\n
\n {isAiPanelOpen && }\n
\n
\n );\n};\n\nexport default EditorShell;\n","'use client';\n\nimport React, { useState } from 'react';\nimport { BookProject } from '@/lib/types';\nimport { FileText, FileType, Printer, X, Download, Book, FileJson } from 'lucide-react';\n\ninterface ExportModalProps {\n isOpen: boolean;\n onClose: () => void;\n project: BookProject;\n onPrint: (options: { includeCover: boolean, includeTOC: boolean }) => void;\n}\n\ntype ExportFormat = 'pdf' | 'word' | 'epub' | 'markdown';\ntype PageSize = 'A4' | 'A5' | 'Letter';\n\nconst ExportModal: React.FC = ({ isOpen, onClose, project, onPrint }) => {\n const [format, setFormat] = useState('pdf');\n const [pageSize, setPageSize] = useState('A4');\n const [includeCover, setIncludeCover] = useState(true);\n const [includeTOC, setIncludeTOC] = useState(true);\n\n if (!isOpen) return null;\n\n const generateContentHTML = () => {\n let html = `\n \n \n \n \n ${project.title}\n \n \n \n `;\n\n if (includeCover) {\n html += `\n
\n

${project.title}

\n

${project.author}

\n
\n `;\n }\n\n if (includeTOC) {\n html += `

Table des Matières

    `;\n project.chapters.forEach((chap, idx) => {\n html += `
  • ${chap.title}
  • `;\n });\n html += `
`;\n }\n\n project.chapters.forEach((chap, idx) => {\n html += `\n
\n

${chap.title}

\n ${chap.content}\n
\n `;\n });\n\n html += ``;\n return html;\n };\n\n const handleExport = () => {\n const filename = project.title.replace(/[^a-z0-9]/gi, '_').toLowerCase();\n\n if (format === 'pdf') {\n // Use the classic window print tool via parent callback\n onPrint({ includeCover, includeTOC });\n } \n else if (format === 'word') {\n // Export as HTML with specific Word namespaces -> interpreted as doc by Word\n const content = generateContentHTML();\n const blob = new Blob(['\\ufeff', content], {\n type: 'application/msword'\n });\n downloadBlob(blob, `${filename}.doc`);\n } \n else if (format === 'epub') {\n // Export as a single XHTML file (Ebook ready)\n const content = generateContentHTML();\n const blob = new Blob([content], {\n type: 'application/xhtml+xml'\n });\n downloadBlob(blob, `${filename}.xhtml`);\n }\n else if (format === 'markdown') {\n let md = `# ${project.title}\\nBy ${project.author}\\n\\n`;\n project.chapters.forEach(c => {\n // Very basic HTML to Text conversion\n const text = c.content.replace(/<[^>]+>/g, '\\n');\n md += `## ${c.title}\\n\\n${text}\\n\\n---\\n\\n`;\n });\n const blob = new Blob([md], { type: 'text/markdown' });\n downloadBlob(blob, `${filename}.md`);\n }\n };\n\n const downloadBlob = (blob: Blob, name: string) => {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = name;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n onClose();\n };\n\n return (\n
\n
\n \n {/* Header */}\n
\n
\n

\n Exporter le livre\n

\n

{project.title}

\n
\n \n
\n\n {/* Body */}\n
\n \n {/* Format Selection */}\n
\n \n \n \n\n \n\n \n
\n\n {/* Options Section */}\n
\n

\n Paramètres d'exportation ({format.toUpperCase()})\n

\n\n
\n {format === 'pdf' && (\n
\n
\n \n Géré par l'imprimante (A4, A5...)\n
\n
Auto
\n
\n )}\n\n
\n \n setIncludeCover(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n
\n \n setIncludeTOC(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n {format === 'epub' && (\n

\n Note: L'export EPUB génère un fichier XHTML optimisé prêt à être converti par Calibre ou Kindle Previewer.\n

\n )}\n
\n
\n
\n\n {/* Footer */}\n
\n \n \n
\n
\n
\n );\n};\n\nexport default ExportModal;","'use client';\r\n\r\nimport { useState } from 'react';\r\nimport {\r\n BookProject,\r\n ChatMessage,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\n\r\nexport const useChat = () => {\r\n const [chatHistory, setChatHistory] = useState([]);\r\n const [isGenerating, setIsGenerating] = useState(false);\r\n\r\n const sendMessage = async (\r\n project: BookProject,\r\n context: string,\r\n text: string,\r\n user: UserProfile,\r\n incrementUsage: () => void\r\n ) => {\r\n const userMsg: ChatMessage = {\r\n id: Date.now().toString(),\r\n role: 'user',\r\n text: text\r\n };\r\n setChatHistory(prev => [...prev, userMsg]);\r\n setIsGenerating(true);\r\n\r\n try {\r\n const response = await api.ai.generate(\r\n project,\r\n context === 'global' ? '' : context,\r\n text,\r\n user\r\n );\r\n\r\n incrementUsage();\r\n\r\n const aiMsg: ChatMessage = {\r\n id: (Date.now() + 1).toString(),\r\n role: 'model',\r\n text: response.text,\r\n responseType: response.type\r\n };\r\n setChatHistory(prev => [...prev, aiMsg]);\r\n } catch {\r\n setChatHistory(prev => [...prev, {\r\n id: Date.now().toString(),\r\n role: 'model',\r\n text: \"Désolé, une erreur est survenue lors de la génération.\"\r\n }]);\r\n } finally {\r\n setIsGenerating(false);\r\n }\r\n };\r\n\r\n return { chatHistory, isGenerating, sendMessage };\r\n};\r\n","'use client';\n\nimport React from 'react';\nimport { X, Keyboard, MousePointerClick, MessageCircle, Sparkles, GitGraph, BookOpen, Command, Globe, Layout, Settings, Lightbulb } from 'lucide-react';\nimport { ViewMode } from '@/lib/types';\n\ninterface HelpModalProps {\n isOpen: boolean;\n onClose: () => void;\n viewMode: ViewMode;\n}\n\nconst Kbd: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n \n {children}\n \n);\n\nconst HelpModal: React.FC = ({ isOpen, onClose, viewMode }) => {\n if (!isOpen) return null;\n\n const renderContent = () => {\n switch (viewMode) {\n case 'ideas':\n return (\n
\n

\n Boîte à Idées & Tâches\n

\n
\n

\n Un espace de type Kanban pour ne rien oublier. Utilisez-le pour noter des idées fugaces, planifier des recherches ou lister les scènes à écrire.\n

\n
    \n
  • \n \n \n Glisser-Déposer : Déplacez les cartes d'une colonne à l'autre (À faire → En cours → Validé) pour suivre votre progression.\n \n
  • \n
  • \n \n \n Catégories : Utilisez les catégories (Intrigue, Personnage, Recherche) pour filtrer visuellement vos tâches grâce aux codes couleurs.\n \n
  • \n
\n
\n
\n );\n\n case 'workflow':\n return (\n <>\n {/* Workflow Section */}\n
\n

\n Organisation Narrative\n

\n
\n
    \n
  • \n \n \n Sélection : Ctrl + Clic pour sélectionner plusieurs cartes. Glissez pour déplacer tout un groupe.\n \n
  • \n
  • \n \n \n Copier / Coller : Ctrl + C pour copier les nœuds sélectionnés, Ctrl + V pour coller.\n \n
  • \n
  • \n \n \n Connexions : Tirez depuis le cercle à droite d'une carte pour lier les événements.\n \n
  • \n
\n
\n
\n\n {/* Dialogue Intelligent */}\n
\n

\n Mode Dialogue (Workflow)\n

\n
\n
\n
Écriture Rapide
\n

\n Tapez un nom et Entrée : le formatage Nom: s'ajoute seul.\n

\n

\n Dans un dialogue, Entrée change de ligne et devine le prochain interlocuteur automatiquement.\n

\n
\n
\n
Rotation & Insertion
\n

\n Tab permute instantanément entre les personnages présents dans la scène.\n

\n

\n Utilisez @ pour insérer un personnage, # pour un lieu.\n

\n
\n
\n
\n \n );\n\n case 'world_building':\n return (\n
\n

\n Bible du Monde\n

\n
\n

\n La bible du monde permet de centraliser toutes les informations sur vos personnages et lieux.\n Ces informations sont lues par l'IA pour assurer la cohérence de l'histoire.\n

\n
\n
\n

Modèles Personnalisés

\n

\n Cliquez sur le bouton \"Modèles\" pour ajouter des champs spécifiques (ex: \"Type de Magie\", \"Allégeance\") à tous vos personnages ou lieux.\n

\n
\n
\n

Contexte Automatique

\n

\n Le champ \"Contexte Narratif\" se remplit automatiquement au fur et à mesure que vous écrivez votre histoire et que l'IA détecte l'évolution des personnages.\n

\n
\n
\n
\n
\n );\n\n case 'settings':\n return (\n
\n

\n Paramètres du Livre\n

\n

\n Ces réglages sont cruciaux pour l'Assistant IA. Ils définissent le \"ton\" de toutes les générations de texte.\n

\n
    \n
  • Style Guide : Soyez précis sur le style (ex: \"phrases courtes\", \"beaucoup de métaphores\", \"humour noir\").
  • \n
  • POV (Point de Vue) : Définit si l'IA doit écrire en \"Je\" ou \"Il/Elle\".
  • \n
\n
\n );\n\n case 'write':\n default:\n return (\n
\n

\n Éditeur & Assistant IA\n

\n
\n
\n

Menu Contextuel Intelligent

\n

Sélectionnez du texte et faites un clic droit pour :

\n
    \n
  • Corriger l'orthographe
  • \n
  • Reformuler / Améliorer
  • \n
  • Développer (Show, don't tell)
  • \n
  • Continuer l'écriture
  • \n
\n
\n

\n Historique des versions : Activez la marge de droite (icône horloge) pour voir toutes les interventions de l'IA et revenir en arrière si nécessaire.\n

\n

\n Chat Latéral : Posez des questions sur votre histoire, demandez des résumés ou des idées de rebondissements. L'IA connaît le contexte de vos chapitres précédents et de vos fiches personnages.\n

\n \n
\n

\n Raccourcis Clavier (Éditeur)\n

\n
\n
\n
\n Mettre en Gras\n Ctrl + B\n
\n
\n Mettre en Italique\n Ctrl + I\n
\n
\n Souligner\n Ctrl + U\n
\n
\n
\n
\n Tout sélectionner\n Ctrl + A\n
\n
\n Annuler\n Ctrl + Z\n
\n
\n Rétablir\n Ctrl + Shift + Z\n
\n
\n
\n
\n
\n
\n );\n }\n };\n\n return (\n
\n
\n \n {/* Header */}\n
\n
\n

\n Aide : {\n viewMode === 'workflow' ? 'Workflow & Dialogues' :\n viewMode === 'world_building' ? 'Bible du Monde' :\n viewMode === 'settings' ? 'Paramètres' :\n viewMode === 'ideas' ? 'Boîte à Idées' :\n 'Éditeur & IA'\n }\n

\n

Astuces pour l'écran actuel.

\n
\n \n
\n\n {/* Content */}\n
\n \n {/* Context Specific Content */}\n {renderContent()}\n\n {/* General Footer Section (Always visible) */}\n
\n

Raccourcis Généraux

\n
\n
\n Sauvegarde Automatique\n Permanente\n
\n
\n Menu Latéral\n Clic sur le burger\n
\n
\n
\n\n
\n\n {/* Footer */}\n
\n \n
\n\n
\n
\n );\n};\n\nexport default HelpModal;","'use client';\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport { useParams, useRouter, usePathname } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { ProjectProvider } from '@/providers/ProjectProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport { useChat } from '@/hooks/useChat';\r\nimport { ViewMode } from '@/lib/types';\r\nimport EditorShell from '@/components/layout/EditorShell';\r\nimport ExportModal from '@/components/ExportModal';\r\nimport HelpModal from '@/components/HelpModal';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\n\r\nfunction getViewModeFromPath(pathname: string): ViewMode {\r\n if (pathname.endsWith('/world')) return 'world_building';\r\n if (pathname.endsWith('/ideas')) return 'ideas';\r\n if (pathname.endsWith('/workflow')) return 'workflow';\r\n if (pathname.endsWith('/settings')) return 'settings';\r\n return 'write';\r\n}\r\n\r\nexport default function ProjectLayout({ children }: { children: React.ReactNode }) {\r\n const params = useParams();\r\n const router = useRouter();\r\n const pathname = usePathname();\r\n const projectId = params.id as string;\r\n\r\n const { user, logout, incrementUsage, loading: authLoading } = useAuthContext();\r\n const {\r\n projects, setCurrentProjectId,\r\n updateProject, updateChapter, addChapter,\r\n } = useProjects(user);\r\n const { chatHistory, isGenerating, sendMessage } = useChat();\r\n\r\n const [currentChapterId, setCurrentChapterId] = useState('');\r\n const [isExportModalOpen, setIsExportModalOpen] = useState(false);\r\n const [isHelpModalOpen, setIsHelpModalOpen] = useState(false);\r\n\r\n const viewMode = getViewModeFromPath(pathname);\r\n\r\n useEffect(() => {\r\n if (projectId) setCurrentProjectId(projectId);\r\n }, [projectId, setCurrentProjectId]);\r\n\r\n useEffect(() => {\r\n if (!authLoading && !user) router.replace('/login');\r\n }, [user, authLoading, router]);\r\n\r\n const project = projects.find(p => p.id === projectId);\r\n\r\n useEffect(() => {\r\n if (project && (!currentChapterId || !project.chapters.some(c => c.id === currentChapterId))) {\r\n setCurrentChapterId(project.chapters[0]?.id || '');\r\n }\r\n }, [project, currentChapterId]);\r\n\r\n if (authLoading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (!project) {\r\n return (\r\n
\r\n \r\n

Chargement du projet...

\r\n
\r\n );\r\n }\r\n\r\n const handleViewModeChange = (mode: ViewMode) => {\r\n const base = `/project/${projectId}`;\r\n switch (mode) {\r\n case 'write': router.push(base); break;\r\n case 'world_building': router.push(`${base}/world`); break;\r\n case 'ideas': router.push(`${base}/ideas`); break;\r\n case 'workflow': router.push(`${base}/workflow`); break;\r\n case 'settings': router.push(`${base}/settings`); break;\r\n case 'dashboard': router.push('/dashboard'); break;\r\n default: router.push(base);\r\n }\r\n };\r\n\r\n return (\r\n updateProject(projectId, updates),\r\n updateChapter: (chapterId, data) => updateChapter(projectId, chapterId, data),\r\n incrementUsage,\r\n }}>\r\n { setCurrentChapterId(id); router.push(`/project/${projectId}`); }}\r\n onUpdateProject={(updates) => updateProject(projectId, updates)}\r\n onAddChapter={async () => {\r\n const id = await addChapter(projectId, {});\r\n if (id) {\r\n setCurrentChapterId(id);\r\n router.push(`/project/${projectId}`);\r\n }\r\n }}\r\n onDeleteChapter={(id) => {\r\n if (project.chapters.length > 1) {\r\n const newChapters = project.chapters.filter(c => c.id !== id);\r\n updateProject(projectId, { chapters: newChapters });\r\n if (currentChapterId === id) setCurrentChapterId(newChapters[0].id);\r\n }\r\n }}\r\n onLogout={() => { logout(); router.push('/'); }}\r\n onSendMessage={(msg) => {\r\n if (project && user) sendMessage(project, 'global', msg, user, incrementUsage);\r\n }}\r\n onInsertText={() => { }}\r\n onOpenExport={() => setIsExportModalOpen(true)}\r\n onOpenHelp={() => setIsHelpModalOpen(true)}\r\n >\r\n setIsExportModalOpen(false)} project={project} onPrint={() => { }} />\r\n setIsHelpModalOpen(false)} viewMode={viewMode} />\r\n {children}\r\n \r\n \r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }]];\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTUgMTgtNi02IDYtNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon('chevron-left', __iconNode);\n\nexport default ChevronLeft;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '7', height: '9', x: '3', y: '3', rx: '1', key: '10lvy0' }],\n ['rect', { width: '7', height: '5', x: '14', y: '3', rx: '1', key: '16une8' }],\n ['rect', { width: '7', height: '9', x: '14', y: '12', rx: '1', key: '1hutg5' }],\n ['rect', { width: '7', height: '5', x: '3', y: '16', rx: '1', key: 'ldoo1y' }],\n];\n\n/**\n * @component @name LayoutDashboard\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSI5IiB4PSIzIiB5PSIzIiByeD0iMSIgLz4KICA8cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSI1IiB4PSIxNCIgeT0iMyIgcng9IjEiIC8+CiAgPHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iOSIgeD0iMTQiIHk9IjEyIiByeD0iMSIgLz4KICA8cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSI1IiB4PSIzIiB5PSIxNiIgcng9IjEiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/layout-dashboard\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LayoutDashboard = createLucideIcon('layout-dashboard', __iconNode);\n\nexport default LayoutDashboard;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3', key: '1u773s' }],\n ['path', { d: 'M12 17h.01', key: 'p32p05' }],\n];\n\n/**\n * @component @name CircleQuestionMark\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDMiIC8+CiAgPHBhdGggZD0iTTEyIDE3aC4wMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/circle-question-mark\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleQuestionMark = createLucideIcon('circle-question-mark', __iconNode);\n\nexport default CircleQuestionMark;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '18', cy: '5', r: '3', key: 'gq8acd' }],\n ['circle', { cx: '6', cy: '12', r: '3', key: 'w7nqdw' }],\n ['circle', { cx: '18', cy: '19', r: '3', key: '1xt0gg' }],\n ['line', { x1: '8.59', x2: '15.42', y1: '13.51', y2: '17.49', key: '47mynk' }],\n ['line', { x1: '15.41', x2: '8.59', y1: '6.51', y2: '10.49', key: '1n3mei' }],\n];\n\n/**\n * @component @name Share2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjUiIHI9IjMiIC8+CiAgPGNpcmNsZSBjeD0iNiIgY3k9IjEyIiByPSIzIiAvPgogIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTkiIHI9IjMiIC8+CiAgPGxpbmUgeDE9IjguNTkiIHgyPSIxNS40MiIgeTE9IjEzLjUxIiB5Mj0iMTcuNDkiIC8+CiAgPGxpbmUgeDE9IjE1LjQxIiB4Mj0iOC41OSIgeTE9IjYuNTEiIHkyPSIxMC40OSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/share-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Share2 = createLucideIcon('share-2', __iconNode);\n\nexport default Share2;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M10 8h.01', key: '1r9ogq' }],\n ['path', { d: 'M12 12h.01', key: '1mp3jc' }],\n ['path', { d: 'M14 8h.01', key: '1primd' }],\n ['path', { d: 'M16 12h.01', key: '1l6xoz' }],\n ['path', { d: 'M18 8h.01', key: 'emo2bl' }],\n ['path', { d: 'M6 8h.01', key: 'x9i8wu' }],\n ['path', { d: 'M7 16h10', key: 'wp8him' }],\n ['path', { d: 'M8 12h.01', key: 'czm47f' }],\n ['rect', { width: '20', height: '16', x: '2', y: '4', rx: '2', key: '18n3k1' }],\n];\n\n/**\n * @component @name Keyboard\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTAgOGguMDEiIC8+CiAgPHBhdGggZD0iTTEyIDEyaC4wMSIgLz4KICA8cGF0aCBkPSJNMTQgOGguMDEiIC8+CiAgPHBhdGggZD0iTTE2IDEyaC4wMSIgLz4KICA8cGF0aCBkPSJNMTggOGguMDEiIC8+CiAgPHBhdGggZD0iTTYgOGguMDEiIC8+CiAgPHBhdGggZD0iTTcgMTZoMTAiIC8+CiAgPHBhdGggZD0iTTggMTJoLjAxIiAvPgogIDxyZWN0IHdpZHRoPSIyMCIgaGVpZ2h0PSIxNiIgeD0iMiIgeT0iNCIgcng9IjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/keyboard\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Keyboard = createLucideIcon('keyboard', __iconNode);\n\nexport default Keyboard;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 15V3', key: 'm9g1x1' }],\n ['path', { d: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4', key: 'ih7n3h' }],\n ['path', { d: 'm7 10 5 5 5-5', key: 'brsn70' }],\n];\n\n/**\n * @component @name Download\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMTVWMyIgLz4KICA8cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNCIgLz4KICA8cGF0aCBkPSJtNyAxMCA1IDUgNS01IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/download\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Download = createLucideIcon('download', __iconNode);\n\nexport default Download;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M4 5h16', key: '1tepv9' }],\n ['path', { d: 'M4 12h16', key: '1lakjw' }],\n ['path', { d: 'M4 19h16', key: '1djgab' }],\n];\n\n/**\n * @component @name Menu\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCA1aDE2IiAvPgogIDxwYXRoIGQ9Ik00IDEyaDE2IiAvPgogIDxwYXRoIGQ9Ik00IDE5aDE2IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/menu\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Menu = createLucideIcon('menu', __iconNode);\n\nexport default Menu;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 8V4H8', key: 'hb8ula' }],\n ['rect', { width: '16', height: '12', x: '4', y: '8', rx: '2', key: 'enze0r' }],\n ['path', { d: 'M2 14h2', key: 'vft8re' }],\n ['path', { d: 'M20 14h2', key: '4cs60a' }],\n ['path', { d: 'M15 13v2', key: '1xurst' }],\n ['path', { d: 'M9 13v2', key: 'rq6x2g' }],\n];\n\n/**\n * @component @name Bot\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgOFY0SDgiIC8+CiAgPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjEyIiB4PSI0IiB5PSI4IiByeD0iMiIgLz4KICA8cGF0aCBkPSJNMiAxNGgyIiAvPgogIDxwYXRoIGQ9Ik0yMCAxNGgyIiAvPgogIDxwYXRoIGQ9Ik0xNSAxM3YyIiAvPgogIDxwYXRoIGQ9Ik05IDEzdjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/bot\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Bot = createLucideIcon('bot', __iconNode);\n\nexport default Bot;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n { d: 'M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3', key: '11bfej' },\n ],\n];\n\n/**\n * @component @name Command\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgNnYxMmEzIDMgMCAxIDAgMy0zSDZhMyAzIDAgMSAwIDMgM1Y2YTMgMyAwIDEgMC0zIDNoMTJhMyAzIDAgMSAwLTMtMyIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/command\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Command = createLucideIcon('command', __iconNode);\n\nexport default Command;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'M10 9H8', key: 'b1mrlr' }],\n ['path', { d: 'M16 13H8', key: 't4e002' }],\n ['path', { d: 'M16 17H8', key: 'z1uh3a' }],\n];\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiIgLz4KICA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4KICA8cGF0aCBkPSJNMTAgOUg4IiAvPgogIDxwYXRoIGQ9Ik0xNiAxM0g4IiAvPgogIDxwYXRoIGQ9Ik0xNiAxN0g4IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/file-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileText = createLucideIcon('file-text', __iconNode);\n\nexport default FileText;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2',\n key: '143wyd',\n },\n ],\n ['path', { d: 'M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6', key: '1itne7' }],\n ['rect', { x: '6', y: '14', width: '12', height: '8', rx: '1', key: '1ue0tg' }],\n];\n\n/**\n * @component @name Printer\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAxOEg0YTIgMiAwIDAgMS0yLTJ2LTVhMiAyIDAgMCAxIDItMmgxNmEyIDIgMCAwIDEgMiAydjVhMiAyIDAgMCAxLTIgMmgtMiIgLz4KICA8cGF0aCBkPSJNNiA5VjNhMSAxIDAgMCAxIDEtMWgxMGExIDEgMCAwIDEgMSAxdjYiIC8+CiAgPHJlY3QgeD0iNiIgeT0iMTQiIHdpZHRoPSIxMiIgaGVpZ2h0PSI4IiByeD0iMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/printer\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Printer = createLucideIcon('printer', __iconNode);\n\nexport default Printer;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z',\n key: 'l5xja',\n },\n ],\n ['path', { d: 'M9 13a4.5 4.5 0 0 0 3-4', key: '10igwf' }],\n ['path', { d: 'M6.003 5.125A3 3 0 0 0 6.401 6.5', key: '105sqy' }],\n ['path', { d: 'M3.477 10.896a4 4 0 0 1 .585-.396', key: 'ql3yin' }],\n ['path', { d: 'M6 18a4 4 0 0 1-1.967-.516', key: '2e4loj' }],\n ['path', { d: 'M12 13h4', key: '1ku699' }],\n ['path', { d: 'M12 18h6a2 2 0 0 1 2 2v1', key: '105ag5' }],\n ['path', { d: 'M12 8h8', key: '1lhi5i' }],\n ['path', { d: 'M16 8V5a2 2 0 0 1 2-2', key: 'u6izg6' }],\n ['circle', { cx: '16', cy: '13', r: '.5', key: 'ry7gng' }],\n ['circle', { cx: '18', cy: '3', r: '.5', key: '1aiba7' }],\n ['circle', { cx: '20', cy: '21', r: '.5', key: 'yhc1fs' }],\n ['circle', { cx: '20', cy: '8', r: '.5', key: '1e43v0' }],\n];\n\n/**\n * @component @name BrainCircuit\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgNWEzIDMgMCAxIDAtNS45OTcuMTI1IDQgNCAwIDAgMC0yLjUyNiA1Ljc3IDQgNCAwIDAgMCAuNTU2IDYuNTg4QTQgNCAwIDEgMCAxMiAxOFoiIC8+CiAgPHBhdGggZD0iTTkgMTNhNC41IDQuNSAwIDAgMCAzLTQiIC8+CiAgPHBhdGggZD0iTTYuMDAzIDUuMTI1QTMgMyAwIDAgMCA2LjQwMSA2LjUiIC8+CiAgPHBhdGggZD0iTTMuNDc3IDEwLjg5NmE0IDQgMCAwIDEgLjU4NS0uMzk2IiAvPgogIDxwYXRoIGQ9Ik02IDE4YTQgNCAwIDAgMS0xLjk2Ny0uNTE2IiAvPgogIDxwYXRoIGQ9Ik0xMiAxM2g0IiAvPgogIDxwYXRoIGQ9Ik0xMiAxOGg2YTIgMiAwIDAgMSAyIDJ2MSIgLz4KICA8cGF0aCBkPSJNMTIgOGg4IiAvPgogIDxwYXRoIGQ9Ik0xNiA4VjVhMiAyIDAgMCAxIDItMiIgLz4KICA8Y2lyY2xlIGN4PSIxNiIgY3k9IjEzIiByPSIuNSIgLz4KICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjMiIHI9Ii41IiAvPgogIDxjaXJjbGUgY3g9IjIwIiBjeT0iMjEiIHI9Ii41IiAvPgogIDxjaXJjbGUgY3g9IjIwIiBjeT0iOCIgcj0iLjUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/brain-circuit\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst BrainCircuit = createLucideIcon('brain-circuit', __iconNode);\n\nexport default BrainCircuit;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z',\n key: '1ffxy3',\n },\n ],\n ['path', { d: 'm21.854 2.147-10.94 10.939', key: '12cjpa' }],\n];\n\n/**\n * @component @name Send\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTQuNTM2IDIxLjY4NmEuNS41IDAgMCAwIC45MzctLjAyNGw2LjUtMTlhLjQ5Ni40OTYgMCAwIDAtLjYzNS0uNjM1bC0xOSA2LjVhLjUuNSAwIDAgMC0uMDI0LjkzN2w3LjkzIDMuMThhMiAyIDAgMCAxIDEuMTEyIDEuMTF6IiAvPgogIDxwYXRoIGQ9Im0yMS44NTQgMi4xNDctMTAuOTQgMTAuOTM5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/send\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Send = createLucideIcon('send', __iconNode);\n\nexport default Send;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n [\n 'path',\n { d: 'M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1', key: '1oajmo' },\n ],\n [\n 'path',\n { d: 'M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1', key: 'mpwhp6' },\n ],\n];\n\n/**\n * @component @name FileBraces\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiIgLz4KICA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4KICA8cGF0aCBkPSJNMTAgMTJhMSAxIDAgMCAwLTEgMXYxYTEgMSAwIDAgMS0xIDEgMSAxIDAgMCAxIDEgMXYxYTEgMSAwIDAgMCAxIDEiIC8+CiAgPHBhdGggZD0iTTE0IDE4YTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMSAxIDEgMCAwIDEtMS0xdi0xYTEgMSAwIDAgMC0xLTEiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/file-braces\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileBraces = createLucideIcon('file-braces', __iconNode);\n\nexport default FileBraces;\n"],"names":[],"mappings":"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","ignoreList":[6,7,8,9,10,11,12,13,14,15,16,17,18,19]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_page_tsx_7aa6a1c0._.js b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_page_tsx_7aa6a1c0._.js index c5a25ef..e218e59 100644 --- a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_page_tsx_7aa6a1c0._.js +++ b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_page_tsx_7aa6a1c0._.js @@ -5,6 +5,6 @@ module.exports=[32791,a=>{"use strict";var b=a.i(78352),c=a.i(28091),d=a.i(29892 font-style: italic; cursor: text; } - `}),(0,b.jsxs)("div",{className:"flex items-center gap-1 p-2 bg-slate-50 border-b border-slate-200 flex-wrap relative z-20 shadow-sm",children:[(0,b.jsx)(ab,{icon:e,cmd:"bold",label:"Gras"}),(0,b.jsx)(ab,{icon:f,cmd:"italic",label:"Italique"}),(0,b.jsx)(ab,{icon:g,cmd:"underline",label:"Souligné"}),(0,b.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,b.jsx)(ab,{icon:l,cmd:"formatBlock",arg:"H1",label:"Titre 1"}),(0,b.jsx)(ab,{icon:m,cmd:"formatBlock",arg:"H2",label:"Titre 2"}),(0,b.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,b.jsx)(ab,{icon:h,cmd:"justifyLeft",label:"Aligner à gauche"}),(0,b.jsx)(ab,{icon:i,cmd:"justifyCenter",label:"Centrer"}),(0,b.jsx)(ab,{icon:j,cmd:"justifyRight",label:"Aligner à droite"}),(0,b.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,b.jsx)(ab,{icon:k.List,cmd:"insertUnorderedList",label:"Liste"}),(0,b.jsx)("div",{className:"flex-1"}),(0,b.jsxs)("div",{className:"flex items-center gap-2 mr-4 text-xs font-medium text-slate-400",children:["saving"===H&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s.Loader2,{size:12,className:"animate-spin"})," Sauvegarde..."]}),"saved"===H&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(p.Check,{size:12,className:"text-green-500"})," Sauvegardé"]}),"unsaved"===H&&(0,b.jsx)("span",{className:"text-amber-500",children:"Modifications non enregistrées..."})]}),(0,b.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,b.jsx)(ab,{icon:u,label:"Marge d'historique",onClick:()=>R(!Q),isActive:Q})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto relative bg-slate-100",ref:E,children:(0,b.jsxs)("div",{className:"flex justify-center relative min-h-full py-8",children:[(0,b.jsx)("div",{ref:D,contentEditable:!0,suppressContentEditableWarning:!0,className:"bg-white shadow-sm w-[800px] min-h-[1000px] p-12 outline-none font-serif text-lg leading-relaxed text-slate-900 editor-content",onInput:Z,onBlur:()=>{G(!1),$()},onFocus:()=>G(!0),onKeyUp:$,onMouseUp:$,onSelect:_,onClick:()=>D.current?.focus(),onContextMenu:a=>{a.preventDefault();let b=window.getSelection();if(b&&b.rangeCount>0){let c=b.getRangeAt(0);if(D.current?.contains(c.commonAncestorContainer)){U.current=c.cloneRange(),L({x:a.clientX,y:a.clientY});return}}U.current=null,L({x:a.clientX,y:a.clientY})},"data-placeholder":"Commencez à écrire votre chef-d'œuvre... (Clic droit pour outils IA)"}),Q&&(0,b.jsxs)("div",{className:"absolute left-[calc(50%+420px)] top-0 bottom-0 w-80 pt-8 pointer-events-none",children:[0===W.length&&(0,b.jsxs)("div",{className:"sticky top-10 text-center text-slate-300 p-4",children:[(0,b.jsx)(u,{size:48,className:"mx-auto mb-2 opacity-20"}),(0,b.jsx)("p",{className:"text-xs",children:"L'historique des modifications IA apparaîtra ici, aligné avec votre texte."})]}),W.map(a=>{let c=S.has(a.id),d=a.versions.length>1,e=a.versions[0];return(0,b.jsx)("div",{className:"absolute w-72 pointer-events-auto transition-all duration-300 ease-in-out",style:{top:`${a.topOffset+32}px`},children:(0,b.jsxs)("div",{className:`relative bg-white rounded-lg border shadow-sm transition-all duration-200 ${d&&!c?"border-indigo-200 shadow-md translate-x-1 translate-y-1":"border-slate-200"}`,children:[d&&!c&&(0,b.jsx)("div",{className:"absolute inset-0 bg-white border border-indigo-100 rounded-lg transform -translate-x-1 -translate-y-1 -z-10 shadow-sm"}),(0,b.jsxs)("div",{className:"p-2 border-b border-slate-100 flex justify-between items-center bg-slate-50 rounded-t-lg cursor-pointer hover:bg-slate-100",onClick:()=>{var b;let c;return d&&(b=a.id,void((c=new Set(S)).has(b)?c.delete(b):c.add(b),T(c)))},children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[d&&(0,b.jsx)(y,{size:14,className:"text-indigo-500"}),(0,b.jsx)("span",{className:`text-[10px] font-bold px-1.5 py-0.5 rounded uppercase tracking-wide ${e.type.includes("Correction")?"bg-green-100 text-green-700":e.type.includes("Insertion")?"bg-blue-100 text-blue-700":"bg-purple-100 text-purple-700"}`,children:e.type})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(0,b.jsx)("span",{className:"text-[10px] text-slate-400",children:new Date(e.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}),d&&(c?(0,b.jsx)(x,{size:14,className:"text-slate-400"}):(0,b.jsx)(w,{size:14,className:"text-slate-400"}))]})]}),!c&&(0,b.jsxs)("div",{className:"p-2",children:[(0,b.jsxs)("div",{className:"text-xs text-slate-500 italic line-clamp-2",children:['"',e.snippet,'"']}),(0,b.jsxs)("button",{onClick:()=>Y(e),className:"mt-2 w-full flex items-center justify-center gap-1 text-[10px] bg-slate-50 hover:bg-indigo-50 text-slate-600 hover:text-indigo-700 py-1 rounded transition-colors",children:[(0,b.jsx)(v,{size:10})," Restaurer"]})]}),c&&(0,b.jsx)("div",{className:"divide-y divide-slate-100 max-h-64 overflow-y-auto",children:a.versions.map((a,c)=>(0,b.jsxs)("div",{className:"p-2 bg-white hover:bg-slate-50 transition-colors",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center mb-1",children:[(0,b.jsx)("span",{className:"text-[10px] font-semibold text-slate-600",children:0===c?"Dernière version":`Version -${c}`}),(0,b.jsx)("span",{className:"text-[9px] text-slate-400",children:new Date(a.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})})]}),(0,b.jsxs)("div",{className:"text-xs text-slate-500 italic bg-slate-50 p-1.5 rounded mb-2 border border-slate-100",children:['"',a.snippet,'"']}),(0,b.jsxs)("button",{onClick:()=>Y(a),className:"w-full flex items-center justify-center gap-1 text-[10px] bg-white border border-slate-200 text-slate-600 hover:text-indigo-600 hover:border-indigo-200 py-1 rounded transition-colors",children:[(0,b.jsx)(v,{size:10})," Restaurer cette version"]})]},a.id))})]})},a.id)})]})]})}),K&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"fixed inset-0 z-40 bg-transparent",onClick:()=>L(null),onContextMenu:a=>{a.preventDefault(),L(null)}}),(0,b.jsx)("div",{className:"fixed z-50 bg-white border border-slate-200 rounded-lg shadow-xl py-1 w-56 animate-in fade-in zoom-in-95 duration-100 flex flex-col",style:{top:Math.min(K.y,window.innerHeight-200),left:Math.min(K.x,window.innerWidth-224)},children:M?(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center py-4 text-indigo-600 gap-2",children:[(0,b.jsx)(s.Loader2,{className:"animate-spin",size:24}),(0,b.jsx)("span",{className:"text-xs font-medium",children:"L'IA travaille..."})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"px-3 py-1 text-[10px] font-bold text-slate-400 uppercase tracking-wider",children:"Outils IA"}),(0,b.jsxs)("button",{onClick:()=>aa("correct"),disabled:!ac,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!ac?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-indigo-50 hover:text-indigo-700"}`,children:[(0,b.jsx)(p.Check,{size:14})," Corriger l'orthographe"]}),(0,b.jsxs)("button",{onClick:()=>aa("rewrite"),disabled:!ac,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!ac?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-indigo-50 hover:text-indigo-700"}`,children:[(0,b.jsx)(q.RefreshCw,{size:14})," Reformuler"]}),(0,b.jsxs)("button",{onClick:()=>aa("expand"),disabled:!ac,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!ac?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-indigo-50 hover:text-indigo-700"}`,children:[(0,b.jsx)(r,{size:14})," Développer"]}),(0,b.jsxs)("button",{onClick:()=>aa("continue"),className:"flex items-center gap-2 px-3 py-2 text-sm text-slate-700 hover:bg-indigo-50 hover:text-indigo-700 text-left transition-colors",children:[(0,b.jsx)(o,{size:14})," Continuer l'écriture"]}),(0,b.jsx)("div",{className:"h-px bg-slate-100 my-1"}),(0,b.jsx)("div",{className:"px-3 py-1 text-[10px] font-bold text-slate-400 uppercase tracking-wider",children:"Édition"}),(0,b.jsxs)("button",{onClick:()=>{if(U.current){let a=window.getSelection();a?.removeAllRanges(),a?.addRange(U.current),document.execCommand("copy")}L(null)},disabled:!ac,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!ac?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-slate-50"}`,children:[(0,b.jsx)(n,{size:14})," Copier"]}),(0,b.jsxs)("button",{onClick:()=>{D.current?.focus(),document.execCommand("selectAll"),_(),L(null)},className:"flex items-center gap-2 px-3 py-2 text-sm text-slate-700 hover:bg-slate-50 text-left transition-colors",children:[(0,b.jsx)(t.MousePointerClick,{size:14})," Tout sélectionner"]})]})})]})]})});var A=a.i(31715);function B(a){let d=(0,c.useRef)(null),{project:e,user:f,currentChapterId:g,updateChapter:h,incrementUsage:i}=a;if(!e||!g)return null;let j=e.chapters?.find(a=>a.id===g);return(0,b.jsx)(z,{ref:d,initialContent:j?.content||"",onSave:a=>h?.(g,{content:a}),onAiTransform:async(a,b)=>{let c=await A.default.ai.transform(a,b,j?.content||"",f);return i?.(),c}})}a.s(["default",()=>B],32791)}]; + `}),(0,b.jsxs)("div",{className:"flex items-center gap-1 p-2 bg-slate-50 border-b border-slate-200 flex-wrap relative z-20 shadow-sm",children:[(0,b.jsx)(ab,{icon:e,cmd:"bold",label:"Gras"}),(0,b.jsx)(ab,{icon:f,cmd:"italic",label:"Italique"}),(0,b.jsx)(ab,{icon:g,cmd:"underline",label:"Souligné"}),(0,b.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,b.jsx)(ab,{icon:l,cmd:"formatBlock",arg:"H1",label:"Titre 1"}),(0,b.jsx)(ab,{icon:m,cmd:"formatBlock",arg:"H2",label:"Titre 2"}),(0,b.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,b.jsx)(ab,{icon:h,cmd:"justifyLeft",label:"Aligner à gauche"}),(0,b.jsx)(ab,{icon:i,cmd:"justifyCenter",label:"Centrer"}),(0,b.jsx)(ab,{icon:j,cmd:"justifyRight",label:"Aligner à droite"}),(0,b.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,b.jsx)(ab,{icon:k.List,cmd:"insertUnorderedList",label:"Liste"}),(0,b.jsx)("div",{className:"flex-1"}),(0,b.jsxs)("div",{className:"flex items-center gap-2 mr-4 text-xs font-medium text-slate-400",children:["saving"===H&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s.Loader2,{size:12,className:"animate-spin"})," Sauvegarde..."]}),"saved"===H&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(p.Check,{size:12,className:"text-green-500"})," Sauvegardé"]}),"unsaved"===H&&(0,b.jsx)("span",{className:"text-amber-500",children:"Modifications non enregistrées..."})]}),(0,b.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,b.jsx)(ab,{icon:u,label:"Marge d'historique",onClick:()=>R(!Q),isActive:Q})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto relative bg-slate-100",ref:E,children:(0,b.jsxs)("div",{className:"flex justify-center relative min-h-full py-8",children:[(0,b.jsx)("div",{ref:D,contentEditable:!0,suppressContentEditableWarning:!0,className:"bg-white shadow-sm w-[800px] min-h-[1000px] p-12 outline-none font-serif text-lg leading-relaxed text-slate-900 editor-content",onInput:Z,onBlur:()=>{G(!1),$()},onFocus:()=>G(!0),onKeyUp:$,onMouseUp:$,onSelect:_,onClick:()=>D.current?.focus(),onContextMenu:a=>{a.preventDefault();let b=window.getSelection();if(b&&b.rangeCount>0){let c=b.getRangeAt(0);if(D.current?.contains(c.commonAncestorContainer)){U.current=c.cloneRange(),L({x:a.clientX,y:a.clientY});return}}U.current=null,L({x:a.clientX,y:a.clientY})},"data-placeholder":"Commencez à écrire votre chef-d'œuvre... (Clic droit pour outils IA)"}),Q&&(0,b.jsxs)("div",{className:"absolute left-[calc(50%+420px)] top-0 bottom-0 w-80 pt-8 pointer-events-none",children:[0===W.length&&(0,b.jsxs)("div",{className:"sticky top-10 text-center text-slate-300 p-4",children:[(0,b.jsx)(u,{size:48,className:"mx-auto mb-2 opacity-20"}),(0,b.jsx)("p",{className:"text-xs",children:"L'historique des modifications IA apparaîtra ici, aligné avec votre texte."})]}),W.map(a=>{let c=S.has(a.id),d=a.versions.length>1,e=a.versions[0];return(0,b.jsx)("div",{className:"absolute w-72 pointer-events-auto transition-all duration-300 ease-in-out",style:{top:`${a.topOffset+32}px`},children:(0,b.jsxs)("div",{className:`relative bg-white rounded-lg border shadow-sm transition-all duration-200 ${d&&!c?"border-indigo-200 shadow-md translate-x-1 translate-y-1":"border-slate-200"}`,children:[d&&!c&&(0,b.jsx)("div",{className:"absolute inset-0 bg-white border border-indigo-100 rounded-lg transform -translate-x-1 -translate-y-1 -z-10 shadow-sm"}),(0,b.jsxs)("div",{className:"p-2 border-b border-slate-100 flex justify-between items-center bg-slate-50 rounded-t-lg cursor-pointer hover:bg-slate-100",onClick:()=>{var b;let c;return d&&(b=a.id,void((c=new Set(S)).has(b)?c.delete(b):c.add(b),T(c)))},children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[d&&(0,b.jsx)(y,{size:14,className:"text-indigo-500"}),(0,b.jsx)("span",{className:`text-[10px] font-bold px-1.5 py-0.5 rounded uppercase tracking-wide ${e.type.includes("Correction")?"bg-green-100 text-green-700":e.type.includes("Insertion")?"bg-blue-100 text-blue-700":"bg-purple-100 text-purple-700"}`,children:e.type})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(0,b.jsx)("span",{className:"text-[10px] text-slate-400",children:new Date(e.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}),d&&(c?(0,b.jsx)(x,{size:14,className:"text-slate-400"}):(0,b.jsx)(w,{size:14,className:"text-slate-400"}))]})]}),!c&&(0,b.jsxs)("div",{className:"p-2",children:[(0,b.jsxs)("div",{className:"text-xs text-slate-500 italic line-clamp-2",children:['"',e.snippet,'"']}),(0,b.jsxs)("button",{onClick:()=>Y(e),className:"mt-2 w-full flex items-center justify-center gap-1 text-[10px] bg-slate-50 hover:bg-indigo-50 text-slate-600 hover:text-indigo-700 py-1 rounded transition-colors",children:[(0,b.jsx)(v,{size:10})," Restaurer"]})]}),c&&(0,b.jsx)("div",{className:"divide-y divide-slate-100 max-h-64 overflow-y-auto",children:a.versions.map((a,c)=>(0,b.jsxs)("div",{className:"p-2 bg-white hover:bg-slate-50 transition-colors",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center mb-1",children:[(0,b.jsx)("span",{className:"text-[10px] font-semibold text-slate-600",children:0===c?"Dernière version":`Version -${c}`}),(0,b.jsx)("span",{className:"text-[9px] text-slate-400",children:new Date(a.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})})]}),(0,b.jsxs)("div",{className:"text-xs text-slate-500 italic bg-slate-50 p-1.5 rounded mb-2 border border-slate-100",children:['"',a.snippet,'"']}),(0,b.jsxs)("button",{onClick:()=>Y(a),className:"w-full flex items-center justify-center gap-1 text-[10px] bg-white border border-slate-200 text-slate-600 hover:text-indigo-600 hover:border-indigo-200 py-1 rounded transition-colors",children:[(0,b.jsx)(v,{size:10})," Restaurer cette version"]})]},a.id))})]})},a.id)})]})]})}),K&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"fixed inset-0 z-40 bg-transparent",onClick:()=>L(null),onContextMenu:a=>{a.preventDefault(),L(null)}}),(0,b.jsx)("div",{className:"fixed z-50 bg-white border border-slate-200 rounded-lg shadow-xl py-1 w-56 animate-in fade-in zoom-in-95 duration-100 flex flex-col",style:{top:Math.min(K.y,window.innerHeight-200),left:Math.min(K.x,window.innerWidth-224)},children:M?(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center py-4 text-indigo-600 gap-2",children:[(0,b.jsx)(s.Loader2,{className:"animate-spin",size:24}),(0,b.jsx)("span",{className:"text-xs font-medium",children:"L'IA travaille..."})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"px-3 py-1 text-[10px] font-bold text-slate-400 uppercase tracking-wider",children:"Outils IA"}),(0,b.jsxs)("button",{onClick:()=>aa("correct"),disabled:!ac,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!ac?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-indigo-50 hover:text-indigo-700"}`,children:[(0,b.jsx)(p.Check,{size:14})," Corriger l'orthographe"]}),(0,b.jsxs)("button",{onClick:()=>aa("rewrite"),disabled:!ac,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!ac?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-indigo-50 hover:text-indigo-700"}`,children:[(0,b.jsx)(q.RefreshCw,{size:14})," Reformuler"]}),(0,b.jsxs)("button",{onClick:()=>aa("expand"),disabled:!ac,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!ac?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-indigo-50 hover:text-indigo-700"}`,children:[(0,b.jsx)(r,{size:14})," Développer"]}),(0,b.jsxs)("button",{onClick:()=>aa("continue"),className:"flex items-center gap-2 px-3 py-2 text-sm text-slate-700 hover:bg-indigo-50 hover:text-indigo-700 text-left transition-colors",children:[(0,b.jsx)(o,{size:14})," Continuer l'écriture"]}),(0,b.jsx)("div",{className:"h-px bg-slate-100 my-1"}),(0,b.jsx)("div",{className:"px-3 py-1 text-[10px] font-bold text-slate-400 uppercase tracking-wider",children:"Édition"}),(0,b.jsxs)("button",{onClick:()=>{if(U.current){let a=window.getSelection();a?.removeAllRanges(),a?.addRange(U.current),document.execCommand("copy")}L(null)},disabled:!ac,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!ac?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-slate-50"}`,children:[(0,b.jsx)(n,{size:14})," Copier"]}),(0,b.jsxs)("button",{onClick:()=>{D.current?.focus(),document.execCommand("selectAll"),_(),L(null)},className:"flex items-center gap-2 px-3 py-2 text-sm text-slate-700 hover:bg-slate-50 text-left transition-colors",children:[(0,b.jsx)(t.MousePointerClick,{size:14})," Tout sélectionner"]})]})})]})]})});var A=a.i(46344),B=a.i(31715);function C(){let a=(0,c.useRef)(null),{project:d,user:e,currentChapterId:f,updateChapter:g,incrementUsage:h}=(0,A.useProjectContext)();if(!f)return null;let i=d.chapters?.find(a=>a.id===f);return(0,b.jsx)(z,{ref:a,initialContent:i?.content||"",onSave:a=>g(f,{content:a}),onAiTransform:async(a,b)=>{let c=await B.default.ai.transform(a,b,i?.content||"",e);return h(),c}})}a.s(["default",()=>C],32791)}]; //# sourceMappingURL=Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_page_tsx_7aa6a1c0._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_page_tsx_7aa6a1c0._.js.map b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_page_tsx_7aa6a1c0._.js.map index 5bfcf0e..3674ee0 100644 --- a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_page_tsx_7aa6a1c0._.js.map +++ b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_page_tsx_7aa6a1c0._.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/src/components/RichTextEditor.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/layers.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/italic.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/bold.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/underline.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/text-align-start.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/text-align-center.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/text-align-end.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/heading-1.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/heading-2.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/copy.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/wand-sparkles.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/maximize-2.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/history.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/rotate-ccw.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/chevron-down.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/chevron-up.ts"],"sourcesContent":["'use client';\n\nimport React, { useRef, useEffect, useState, useImperativeHandle, forwardRef, useMemo } from 'react';\nimport {\n Bold, Italic, Underline, AlignLeft, AlignCenter, AlignRight, List, Heading1, Heading2,\n Copy, Wand2, Check, RefreshCw, Maximize2, Loader2, MousePointerClick, History, RotateCcw,\n ChevronDown, ChevronUp, Layers\n} from 'lucide-react';\n\nexport interface RichTextEditorHandle {\n insertHtml: (html: string) => void;\n}\n\ninterface RichTextEditorProps {\n initialContent: string;\n onChange?: (html: string) => void;\n onSave?: (html: string) => void;\n onSelectionChange?: (text: string) => void;\n onAiTransform?: (text: string, mode: 'correct' | 'rewrite' | 'expand' | 'continue') => Promise;\n}\n\ninterface Version {\n id: string;\n timestamp: number;\n type: string;\n content: string; // Full HTML snapshot\n snippet: string; // Selected text snippet before change\n topOffset: number; // Y position relative to editor top\n}\n\ninterface VersionGroup {\n id: string;\n topOffset: number;\n versions: Version[];\n}\n\nconst RichTextEditor = forwardRef(({ initialContent, onChange, onSave, onSelectionChange, onAiTransform }, ref) => {\n const contentRef = useRef(null);\n const scrollContainerRef = useRef(null);\n const [isFocused, setIsFocused] = useState(false);\n\n // Auto-Save State\n const [saveStatus, setSaveStatus] = useState<'saved' | 'saving' | 'unsaved'>('saved');\n const saveTimeoutRef = useRef(null);\n\n // Context Menu State\n const [contextMenu, setContextMenu] = useState<{ x: number; y: number } | null>(null);\n const [isAiLoading, setIsAiLoading] = useState(false);\n\n // History State\n const [versions, setVersions] = useState([]);\n const [showHistoryMargin, setShowHistoryMargin] = useState(true);\n const [expandedGroupIds, setExpandedGroupIds] = useState>(new Set());\n\n // Refs to track selection\n const savedRange = useRef(null);\n const lastCursorPosition = useRef(null);\n\n // --- Helpers ---\n\n // Group versions by proximity (within 60px) to stack them\n const versionGroups = useMemo(() => {\n const sortedVersions = [...versions].sort((a, b) => b.timestamp - a.timestamp);\n const groups: VersionGroup[] = [];\n\n sortedVersions.forEach(v => {\n // Find an existing group close to this version\n const existingGroup = groups.find(g => Math.abs(g.topOffset - v.topOffset) < 60);\n\n if (existingGroup) {\n existingGroup.versions.push(v);\n // Keep the group timestamp sorted\n existingGroup.versions.sort((a, b) => b.timestamp - a.timestamp);\n } else {\n groups.push({\n id: `group-${v.id}`,\n topOffset: v.topOffset,\n versions: [v]\n });\n }\n });\n\n return groups;\n }, [versions]);\n\n const toggleGroup = (groupId: string) => {\n const newSet = new Set(expandedGroupIds);\n if (newSet.has(groupId)) {\n newSet.delete(groupId);\n } else {\n newSet.add(groupId);\n }\n setExpandedGroupIds(newSet);\n };\n\n const getSelectionTopOffset = () => {\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0 && contentRef.current) {\n const range = sel.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n // We need offset relative to the content container (contentRef)\n // contentRef is the white page div.\n const containerRect = contentRef.current.getBoundingClientRect();\n return rect.top - containerRect.top;\n }\n return 0;\n };\n\n const saveVersion = (type: string, textSnippet: string) => {\n if (!contentRef.current) return;\n\n const topOffset = getSelectionTopOffset();\n\n const newVersion: Version = {\n id: Date.now().toString(),\n timestamp: Date.now(),\n type: type,\n content: contentRef.current.innerHTML,\n snippet: textSnippet.substring(0, 80) + (textSnippet.length > 80 ? '...' : ''),\n topOffset\n };\n\n setVersions(prev => [newVersion, ...prev]);\n setShowHistoryMargin(true);\n };\n\n const restoreVersion = (version: Version) => {\n if (!contentRef.current) return;\n if (confirm('Restaurer cette version ? Le contenu actuel sera remplacé.')) {\n contentRef.current.innerHTML = version.content;\n handleInput();\n }\n };\n\n // --- Exposed Methods ---\n\n useImperativeHandle(ref, () => ({\n insertHtml: (text: string) => {\n saveVersion('Insertion Chat', 'Insertion depuis le panneau IA');\n\n contentRef.current?.focus();\n\n const sel = window.getSelection();\n if (lastCursorPosition.current) {\n sel?.removeAllRanges();\n sel?.addRange(lastCursorPosition.current);\n } else if (contentRef.current) {\n const range = document.createRange();\n range.selectNodeContents(contentRef.current);\n range.collapse(false);\n sel?.removeAllRanges();\n sel?.addRange(range);\n }\n\n const htmlToInsert = text.includes('<') ? text : text.replace(/\\n/g, '
');\n document.execCommand('insertHTML', false, htmlToInsert);\n handleInput();\n }\n }));\n\n // --- Effects ---\n\n useEffect(() => {\n if (contentRef.current && contentRef.current.innerHTML !== initialContent) {\n // Only update if difference is significant to avoid cursor jumps on small re-renders?\n // OR better: Only update if NOT focused?\n if (!isFocused && Math.abs(contentRef.current.innerHTML.length - initialContent.length) > 5) {\n contentRef.current.innerHTML = initialContent;\n }\n }\n }, [initialContent, isFocused]);\n\n // --- Event Handlers ---\n\n const execCommand = (command: string, value: string | undefined = undefined) => {\n document.execCommand(command, false, value);\n handleInput();\n contentRef.current?.focus();\n };\n\n const handleInput = () => {\n if (contentRef.current) {\n if (onChange) onChange(contentRef.current.innerHTML);\n\n // Auto-Save Debounce\n if (onSave) {\n setSaveStatus('unsaved');\n if (saveTimeoutRef.current) clearTimeout(saveTimeoutRef.current);\n\n saveTimeoutRef.current = setTimeout(async () => {\n setSaveStatus('saving');\n await onSave(contentRef.current?.innerHTML || \"\");\n setSaveStatus('saved');\n }, 2000); // 2 seconds\n }\n }\n };\n\n const saveSelection = () => {\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0 && contentRef.current?.contains(sel.anchorNode)) {\n lastCursorPosition.current = sel.getRangeAt(0).cloneRange();\n }\n };\n\n const handleSelection = () => {\n const selection = window.getSelection();\n saveSelection();\n\n if (selection && selection.toString().length > 0 && onSelectionChange) {\n onSelectionChange(selection.toString());\n } else if (onSelectionChange) {\n onSelectionChange(\"\");\n }\n };\n\n const handleContextMenu = (e: React.MouseEvent) => {\n e.preventDefault();\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n if (contentRef.current?.contains(range.commonAncestorContainer)) {\n savedRange.current = range.cloneRange();\n setContextMenu({ x: e.clientX, y: e.clientY });\n return;\n }\n }\n\n savedRange.current = null;\n setContextMenu({ x: e.clientX, y: e.clientY });\n };\n\n const handleAiAction = async (mode: 'correct' | 'rewrite' | 'expand' | 'continue') => {\n if (!onAiTransform) return;\n\n const range = savedRange.current;\n const text = range?.toString() || \"\";\n\n if (!text && mode !== 'continue') return;\n\n const typeLabels: Record = {\n correct: 'Correction',\n rewrite: 'Reformulation',\n expand: 'Développement',\n continue: 'Continuation'\n };\n saveVersion(typeLabels[mode], text || \"Position curseur\");\n\n setIsAiLoading(true);\n try {\n const result = await onAiTransform(text, mode);\n\n if (result) {\n contentRef.current?.focus();\n const sel = window.getSelection();\n sel?.removeAllRanges();\n\n if (range) {\n sel?.addRange(range);\n }\n\n if (mode === 'continue') {\n sel?.collapseToEnd();\n document.execCommand('insertText', false, \" \" + result);\n } else {\n document.execCommand('insertText', false, result);\n }\n\n handleInput();\n }\n } catch (e) {\n console.error(\"AI Action failed\", e);\n } finally {\n setIsAiLoading(false);\n setContextMenu(null);\n }\n };\n\n const handleCopy = () => {\n if (savedRange.current) {\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(savedRange.current);\n document.execCommand('copy');\n }\n setContextMenu(null);\n };\n\n const handleSelectAll = () => {\n contentRef.current?.focus();\n document.execCommand('selectAll');\n handleSelection();\n setContextMenu(null);\n }\n\n const ToolbarButton = ({ icon: Icon, cmd, arg, label, onClick, isActive }: any) => (\n {\n if (onClick) {\n e.preventDefault();\n onClick();\n } else {\n e.preventDefault();\n execCommand(cmd, arg);\n }\n }}\n className={`p-1.5 rounded transition-colors ${isActive ? 'bg-indigo-100 text-indigo-700' : 'text-slate-500 hover:text-slate-800 hover:bg-slate-200'}`}\n title={label}\n >\n \n \n );\n\n const hasSelection = savedRange.current && !savedRange.current.collapsed;\n\n return (\n
\n \n\n {/* Toolbar */}\n
\n \n \n \n
\n \n \n
\n \n \n \n
\n \n\n
\n\n {/* Save Status Indicator */}\n
\n {saveStatus === 'saving' && <> Sauvegarde...}\n {saveStatus === 'saved' && <> Sauvegardé}\n {saveStatus === 'unsaved' && Modifications non enregistrées...}\n
\n\n
\n setShowHistoryMargin(!showHistoryMargin)}\n isActive={showHistoryMargin}\n />\n
\n\n {/* Main Container - Scrollable Area */}\n \n
\n\n {/* Editor Content Page */}\n { setIsFocused(false); saveSelection(); }}\n onFocus={() => setIsFocused(true)}\n onKeyUp={saveSelection}\n onMouseUp={saveSelection}\n onSelect={handleSelection}\n onClick={() => contentRef.current?.focus()}\n onContextMenu={handleContextMenu}\n data-placeholder=\"Commencez à écrire votre chef-d'œuvre... (Clic droit pour outils IA)\"\n />\n\n {/* History Track - Moving with the page */}\n {showHistoryMargin && (\n
\n {/* Placeholder for empty history */}\n {versionGroups.length === 0 && (\n
\n \n

L'historique des modifications IA apparaîtra ici, aligné avec votre texte.

\n
\n )}\n\n {/* Render Groups */}\n {versionGroups.map((group) => {\n const isExpanded = expandedGroupIds.has(group.id);\n const isStack = group.versions.length > 1;\n const latest = group.versions[0];\n\n return (\n \n
\n\n {/* Stack Effect Background Card */}\n {isStack && !isExpanded && (\n
\n )}\n\n {/* Main Card Header */}\n isStack && toggleGroup(group.id)}\n >\n
\n {isStack && (\n \n )}\n \n {latest.type}\n \n
\n
\n \n {new Date(latest.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}\n \n {isStack && (\n isExpanded ? : \n )}\n
\n
\n\n {/* Card Content (Latest) */}\n {!isExpanded && (\n
\n
\n \"{latest.snippet}\"\n
\n restoreVersion(latest)}\n className=\"mt-2 w-full flex items-center justify-center gap-1 text-[10px] bg-slate-50 hover:bg-indigo-50 text-slate-600 hover:text-indigo-700 py-1 rounded transition-colors\"\n >\n Restaurer\n \n
\n )}\n\n {/* Expanded Stack View */}\n {isExpanded && (\n
\n {group.versions.map((v, i) => (\n
\n
\n \n {i === 0 ? 'Dernière version' : `Version -${i}`}\n \n \n {new Date(v.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' })}\n \n
\n
\n \"{v.snippet}\"\n
\n restoreVersion(v)}\n className=\"w-full flex items-center justify-center gap-1 text-[10px] bg-white border border-slate-200 text-slate-600 hover:text-indigo-600 hover:border-indigo-200 py-1 rounded transition-colors\"\n >\n Restaurer cette version\n \n
\n ))}\n
\n )}\n
\n
\n );\n })}\n
\n )}\n
\n
\n\n {/* Context Menu Overlay */}\n {contextMenu && (\n <>\n setContextMenu(null)}\n onContextMenu={(e) => { e.preventDefault(); setContextMenu(null); }}\n />\n \n {isAiLoading ? (\n
\n \n L'IA travaille...\n
\n ) : (\n <>\n
\n Outils IA\n
\n\n handleAiAction('correct')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Corriger l'orthographe\n \n\n handleAiAction('rewrite')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Reformuler\n \n\n handleAiAction('expand')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Développer\n \n\n handleAiAction('continue')}\n className=\"flex items-center gap-2 px-3 py-2 text-sm text-slate-700 hover:bg-indigo-50 hover:text-indigo-700 text-left transition-colors\"\n >\n Continuer l'écriture\n \n\n
\n\n
\n Édition\n
\n\n \n Copier\n \n\n \n Tout sélectionner\n \n \n )}\n
\n \n )}\n
\n );\n});\n\nexport default RichTextEditor;\n","'use client';\r\n\r\nimport React, { useRef } from 'react';\r\nimport RichTextEditor, { RichTextEditorHandle } from '@/components/RichTextEditor';\r\nimport api from '@/lib/api';\r\n\r\ninterface WritePageProps {\r\n project?: any;\r\n user?: any;\r\n currentChapterId?: string;\r\n updateChapter?: (chapterId: string, data: any) => void;\r\n incrementUsage?: () => void;\r\n}\r\n\r\nexport default function WritePage(props: WritePageProps) {\r\n const editorRef = useRef(null);\r\n const { project, user, currentChapterId, updateChapter, incrementUsage } = props;\r\n\r\n if (!project || !currentChapterId) return null;\r\n\r\n const currentChapter = project.chapters?.find((c: any) => c.id === currentChapterId);\r\n\r\n return (\r\n updateChapter?.(currentChapterId, { content: html })}\r\n onAiTransform={async (text, mode) => {\r\n const result = await api.ai.transform(text, mode, currentChapter?.content || '', user);\r\n incrementUsage?.();\r\n return result;\r\n }}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z',\n key: 'zw3jo',\n },\n ],\n [\n 'path',\n {\n d: 'M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12',\n key: '1wduqc',\n },\n ],\n [\n 'path',\n {\n d: 'M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17',\n key: 'kqbvx6',\n },\n ],\n];\n\n/**\n * @component @name Layers\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIuODMgMi4xOGEyIDIgMCAwIDAtMS42NiAwTDIuNiA2LjA4YTEgMSAwIDAgMCAwIDEuODNsOC41OCAzLjkxYTIgMiAwIDAgMCAxLjY2IDBsOC41OC0zLjlhMSAxIDAgMCAwIDAtMS44M3oiIC8+CiAgPHBhdGggZD0iTTIgMTJhMSAxIDAgMCAwIC41OC45MWw4LjYgMy45MWEyIDIgMCAwIDAgMS42NSAwbDguNTgtMy45QTEgMSAwIDAgMCAyMiAxMiIgLz4KICA8cGF0aCBkPSJNMiAxN2ExIDEgMCAwIDAgLjU4LjkxbDguNiAzLjkxYTIgMiAwIDAgMCAxLjY1IDBsOC41OC0zLjlBMSAxIDAgMCAwIDIyIDE3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/layers\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Layers = createLucideIcon('layers', __iconNode);\n\nexport default Layers;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['line', { x1: '19', x2: '10', y1: '4', y2: '4', key: '15jd3p' }],\n ['line', { x1: '14', x2: '5', y1: '20', y2: '20', key: 'bu0au3' }],\n ['line', { x1: '15', x2: '9', y1: '4', y2: '20', key: 'uljnxc' }],\n];\n\n/**\n * @component @name Italic\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8bGluZSB4MT0iMTkiIHgyPSIxMCIgeTE9IjQiIHkyPSI0IiAvPgogIDxsaW5lIHgxPSIxNCIgeDI9IjUiIHkxPSIyMCIgeTI9IjIwIiAvPgogIDxsaW5lIHgxPSIxNSIgeDI9IjkiIHkxPSI0IiB5Mj0iMjAiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/italic\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Italic = createLucideIcon('italic', __iconNode);\n\nexport default Italic;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n { d: 'M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8', key: 'mg9rjx' },\n ],\n];\n\n/**\n * @component @name Bold\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAxMmg5YTQgNCAwIDAgMSAwIDhIN2ExIDEgMCAwIDEtMS0xVjVhMSAxIDAgMCAxIDEtMWg3YTQgNCAwIDAgMSAwIDgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/bold\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Bold = createLucideIcon('bold', __iconNode);\n\nexport default Bold;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M6 4v6a6 6 0 0 0 12 0V4', key: '9kb039' }],\n ['line', { x1: '4', x2: '20', y1: '20', y2: '20', key: 'nun2al' }],\n];\n\n/**\n * @component @name Underline\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiA0djZhNiA2IDAgMCAwIDEyIDBWNCIgLz4KICA8bGluZSB4MT0iNCIgeDI9IjIwIiB5MT0iMjAiIHkyPSIyMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/underline\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Underline = createLucideIcon('underline', __iconNode);\n\nexport default Underline;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M21 5H3', key: '1fi0y6' }],\n ['path', { d: 'M15 12H3', key: '6jk70r' }],\n ['path', { d: 'M17 19H3', key: 'z6ezky' }],\n];\n\n/**\n * @component @name TextAlignStart\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgNUgzIiAvPgogIDxwYXRoIGQ9Ik0xNSAxMkgzIiAvPgogIDxwYXRoIGQ9Ik0xNyAxOUgzIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/text-align-start\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TextAlignStart = createLucideIcon('text-align-start', __iconNode);\n\nexport default TextAlignStart;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M21 5H3', key: '1fi0y6' }],\n ['path', { d: 'M17 12H7', key: '16if0g' }],\n ['path', { d: 'M19 19H5', key: 'vjpgq2' }],\n];\n\n/**\n * @component @name TextAlignCenter\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgNUgzIiAvPgogIDxwYXRoIGQ9Ik0xNyAxMkg3IiAvPgogIDxwYXRoIGQ9Ik0xOSAxOUg1IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/text-align-center\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TextAlignCenter = createLucideIcon('text-align-center', __iconNode);\n\nexport default TextAlignCenter;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M21 5H3', key: '1fi0y6' }],\n ['path', { d: 'M21 12H9', key: 'dn1m92' }],\n ['path', { d: 'M21 19H7', key: '4cu937' }],\n];\n\n/**\n * @component @name TextAlignEnd\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgNUgzIiAvPgogIDxwYXRoIGQ9Ik0yMSAxMkg5IiAvPgogIDxwYXRoIGQ9Ik0yMSAxOUg3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/text-align-end\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TextAlignEnd = createLucideIcon('text-align-end', __iconNode);\n\nexport default TextAlignEnd;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M4 12h8', key: '17cfdx' }],\n ['path', { d: 'M4 18V6', key: '1rz3zl' }],\n ['path', { d: 'M12 18V6', key: 'zqpxq5' }],\n ['path', { d: 'm17 12 3-2v8', key: '1hhhft' }],\n];\n\n/**\n * @component @name Heading1\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxMmg4IiAvPgogIDxwYXRoIGQ9Ik00IDE4VjYiIC8+CiAgPHBhdGggZD0iTTEyIDE4VjYiIC8+CiAgPHBhdGggZD0ibTE3IDEyIDMtMnY4IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/heading-1\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Heading1 = createLucideIcon('heading-1', __iconNode);\n\nexport default Heading1;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M4 12h8', key: '17cfdx' }],\n ['path', { d: 'M4 18V6', key: '1rz3zl' }],\n ['path', { d: 'M12 18V6', key: 'zqpxq5' }],\n ['path', { d: 'M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1', key: '9jr5yi' }],\n];\n\n/**\n * @component @name Heading2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxMmg4IiAvPgogIDxwYXRoIGQ9Ik00IDE4VjYiIC8+CiAgPHBhdGggZD0iTTEyIDE4VjYiIC8+CiAgPHBhdGggZD0iTTIxIDE4aC00YzAtNCA0LTMgNC02IDAtMS41LTItMi41LTQtMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/heading-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Heading2 = createLucideIcon('heading-2', __iconNode);\n\nexport default Heading2;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '14', height: '14', x: '8', y: '8', rx: '2', ry: '2', key: '17jyea' }],\n ['path', { d: 'M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2', key: 'zix9uf' }],\n];\n\n/**\n * @component @name Copy\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHg9IjgiIHk9IjgiIHJ4PSIyIiByeT0iMiIgLz4KICA8cGF0aCBkPSJNNCAxNmMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDEwYzEuMSAwIDIgLjkgMiAyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/copy\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Copy = createLucideIcon('copy', __iconNode);\n\nexport default Copy;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72',\n key: 'ul74o6',\n },\n ],\n ['path', { d: 'm14 7 3 3', key: '1r5n42' }],\n ['path', { d: 'M5 6v4', key: 'ilb8ba' }],\n ['path', { d: 'M19 14v4', key: 'blhpug' }],\n ['path', { d: 'M10 2v2', key: '7u0qdc' }],\n ['path', { d: 'M7 8H3', key: 'zfb6yr' }],\n ['path', { d: 'M21 16h-4', key: '1cnmox' }],\n ['path', { d: 'M11 3H9', key: '1obp7u' }],\n];\n\n/**\n * @component @name WandSparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjEuNjQgMy42NC0xLjI4LTEuMjhhMS4yMSAxLjIxIDAgMCAwLTEuNzIgMEwyLjM2IDE4LjY0YTEuMjEgMS4yMSAwIDAgMCAwIDEuNzJsMS4yOCAxLjI4YTEuMiAxLjIgMCAwIDAgMS43MiAwTDIxLjY0IDUuMzZhMS4yIDEuMiAwIDAgMCAwLTEuNzIiIC8+CiAgPHBhdGggZD0ibTE0IDcgMyAzIiAvPgogIDxwYXRoIGQ9Ik01IDZ2NCIgLz4KICA8cGF0aCBkPSJNMTkgMTR2NCIgLz4KICA8cGF0aCBkPSJNMTAgMnYyIiAvPgogIDxwYXRoIGQ9Ik03IDhIMyIgLz4KICA8cGF0aCBkPSJNMjEgMTZoLTQiIC8+CiAgPHBhdGggZD0iTTExIDNIOSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/wand-sparkles\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst WandSparkles = createLucideIcon('wand-sparkles', __iconNode);\n\nexport default WandSparkles;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'm21 3-7 7', key: '1l2asr' }],\n ['path', { d: 'm3 21 7-7', key: 'tjx5ai' }],\n ['path', { d: 'M9 21H3v-6', key: 'wtvkvv' }],\n];\n\n/**\n * @component @name Maximize2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgM2g2djYiIC8+CiAgPHBhdGggZD0ibTIxIDMtNyA3IiAvPgogIDxwYXRoIGQ9Im0zIDIxIDctNyIgLz4KICA8cGF0aCBkPSJNOSAyMUgzdi02IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/maximize-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Maximize2 = createLucideIcon('maximize-2', __iconNode);\n\nexport default Maximize2;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8', key: '1357e3' }],\n ['path', { d: 'M3 3v5h5', key: '1xhq8a' }],\n ['path', { d: 'M12 7v5l4 2', key: '1fdv2h' }],\n];\n\n/**\n * @component @name History\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMyAxMmE5IDkgMCAxIDAgOS05IDkuNzUgOS43NSAwIDAgMC02Ljc0IDIuNzRMMyA4IiAvPgogIDxwYXRoIGQ9Ik0zIDN2NWg1IiAvPgogIDxwYXRoIGQ9Ik0xMiA3djVsNCAyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/history\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst History = createLucideIcon('history', __iconNode);\n\nexport default History;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8', key: '1357e3' }],\n ['path', { d: 'M3 3v5h5', key: '1xhq8a' }],\n];\n\n/**\n * @component @name RotateCcw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMyAxMmE5IDkgMCAxIDAgOS05IDkuNzUgOS43NSAwIDAgMC02Ljc0IDIuNzRMMyA4IiAvPgogIDxwYXRoIGQ9Ik0zIDN2NWg1IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/rotate-ccw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RotateCcw = createLucideIcon('rotate-ccw', __iconNode);\n\nexport default RotateCcw;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }]];\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiA5IDYgNiA2LTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('chevron-down', __iconNode);\n\nexport default ChevronDown;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm18 15-6-6-6 6', key: '153udz' }]];\n\n/**\n * @component @name ChevronUp\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTggMTUtNi02LTYgNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-up\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronUp = createLucideIcon('chevron-up', __iconNode);\n\nexport default ChevronUp;\n"],"names":[],"mappings":"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HZxC,APYuC,AHZvC,CAAA,AQAO,ALYgC,AUAC,AHZxC,CAAA,AGYwC,AbZxC,AQAO,ALYgC,CAAA,AKZhC,AEAP,AVAA,AaYwC,4KChBuB,CAAA,ACAH,0BAanD,EAAA,cAbmB,AAaY,CZZD,AYDV,ANCU,AKYX,AFZrB,AGYiC,AFZjC,MCDsB,ACAA,CDAA,ACAA,AAAQ,CDAA,ACAE,AAAF,EAAE,iBAAqB,CDAF,ACAE,CDAF,ACAE,EAAK,CDAF,ACAE,CAAA,ADAF,CCAE,ADAF,CAAA,ACAE,CDAF,ACAE,CDAF,ACAE,IAAW,CAAA,EfmC/E,EAAA,CAAA,EAAS,CAAT,AAAS,CAAT,AAAS,CAAT,AAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAA,CAAA,CAAA,CAAA,CenCzB,CfmCmC,CAjCtC,AAiCsC,CIjCvC,ASAA,AXAC,ADAD,AQAA,ATAC,AUAA,AHAD,ADAA,AEAA,AIAA,ADAA,ANAA,ALiCuC,CAAA,ASjCvC,AGAA,AVAC,AGAD,ADAA,AGAA,AMAA,AHAC,ATAD,AUAA,AHAA,AFAA,ANAC,CQAD,ANAC,AEAD,AQAA,ALAA,AEAA,ATAC,AaAD,ARAA,ACAA,AKAA,AXiCuC,ACjCvC,ASAC,CVAA,AEAA,AUAD,ARAA,ASAA,ANAA,ADAA,AKAA,AHAA,APAA,ASAC,ALAD,AIAA,ATiCuC,CajCvC,AbAC,ASAD,ADAA,APAA,AMAA,AJAA,AQAA,ADAC,ARAA,AGAD,AOAA,ANAA,AFAA,AJiCuC,CMjCvC,AKAA,AVAA,ASAC,ALAD,AGAA,ARAC,AEAA,AEAD,ASAA,AJAA,ANAA,ASAA,ALAA,APiCuC,CAAA,CA/BpC,AA+BoC,CQ/BvC,ARAG,AA+B8C,AW/BjD,AJAA,AGAG,CHAH,ACAA,AGAA,AXAM,AA+B2C,CA/B3C,AQAN,ACYG,AFZH,AGAM,ACAN,8GXCG,GUAA,AVAA,CUAA,AVAA,SAEJ,EAEE,CUAD,AVAC,CUAD,AVAC,CAAA,AUAD,KVEG,CAAA,AUAH,CAAA,AVAM,4EACH,CUAH,CAAA,CAAA,AVAG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","ignoreList":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]} \ No newline at end of file +{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/src/components/RichTextEditor.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/chevron-up.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/chevron-down.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/rotate-ccw.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/copy.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/history.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/underline.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/maximize-2.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/heading-2.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/heading-1.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/text-align-center.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/text-align-end.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/text-align-start.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/italic.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/bold.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/wand-sparkles.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/layers.ts"],"sourcesContent":["'use client';\n\nimport React, { useRef, useEffect, useState, useImperativeHandle, forwardRef, useMemo } from 'react';\nimport {\n Bold, Italic, Underline, AlignLeft, AlignCenter, AlignRight, List, Heading1, Heading2,\n Copy, Wand2, Check, RefreshCw, Maximize2, Loader2, MousePointerClick, History, RotateCcw,\n ChevronDown, ChevronUp, Layers\n} from 'lucide-react';\n\nexport interface RichTextEditorHandle {\n insertHtml: (html: string) => void;\n}\n\ninterface RichTextEditorProps {\n initialContent: string;\n onChange?: (html: string) => void;\n onSave?: (html: string) => void;\n onSelectionChange?: (text: string) => void;\n onAiTransform?: (text: string, mode: 'correct' | 'rewrite' | 'expand' | 'continue') => Promise;\n}\n\ninterface Version {\n id: string;\n timestamp: number;\n type: string;\n content: string; // Full HTML snapshot\n snippet: string; // Selected text snippet before change\n topOffset: number; // Y position relative to editor top\n}\n\ninterface VersionGroup {\n id: string;\n topOffset: number;\n versions: Version[];\n}\n\nconst RichTextEditor = forwardRef(({ initialContent, onChange, onSave, onSelectionChange, onAiTransform }, ref) => {\n const contentRef = useRef(null);\n const scrollContainerRef = useRef(null);\n const [isFocused, setIsFocused] = useState(false);\n\n // Auto-Save State\n const [saveStatus, setSaveStatus] = useState<'saved' | 'saving' | 'unsaved'>('saved');\n const saveTimeoutRef = useRef(null);\n\n // Context Menu State\n const [contextMenu, setContextMenu] = useState<{ x: number; y: number } | null>(null);\n const [isAiLoading, setIsAiLoading] = useState(false);\n\n // History State\n const [versions, setVersions] = useState([]);\n const [showHistoryMargin, setShowHistoryMargin] = useState(true);\n const [expandedGroupIds, setExpandedGroupIds] = useState>(new Set());\n\n // Refs to track selection\n const savedRange = useRef(null);\n const lastCursorPosition = useRef(null);\n\n // --- Helpers ---\n\n // Group versions by proximity (within 60px) to stack them\n const versionGroups = useMemo(() => {\n const sortedVersions = [...versions].sort((a, b) => b.timestamp - a.timestamp);\n const groups: VersionGroup[] = [];\n\n sortedVersions.forEach(v => {\n // Find an existing group close to this version\n const existingGroup = groups.find(g => Math.abs(g.topOffset - v.topOffset) < 60);\n\n if (existingGroup) {\n existingGroup.versions.push(v);\n // Keep the group timestamp sorted\n existingGroup.versions.sort((a, b) => b.timestamp - a.timestamp);\n } else {\n groups.push({\n id: `group-${v.id}`,\n topOffset: v.topOffset,\n versions: [v]\n });\n }\n });\n\n return groups;\n }, [versions]);\n\n const toggleGroup = (groupId: string) => {\n const newSet = new Set(expandedGroupIds);\n if (newSet.has(groupId)) {\n newSet.delete(groupId);\n } else {\n newSet.add(groupId);\n }\n setExpandedGroupIds(newSet);\n };\n\n const getSelectionTopOffset = () => {\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0 && contentRef.current) {\n const range = sel.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n // We need offset relative to the content container (contentRef)\n // contentRef is the white page div.\n const containerRect = contentRef.current.getBoundingClientRect();\n return rect.top - containerRect.top;\n }\n return 0;\n };\n\n const saveVersion = (type: string, textSnippet: string) => {\n if (!contentRef.current) return;\n\n const topOffset = getSelectionTopOffset();\n\n const newVersion: Version = {\n id: Date.now().toString(),\n timestamp: Date.now(),\n type: type,\n content: contentRef.current.innerHTML,\n snippet: textSnippet.substring(0, 80) + (textSnippet.length > 80 ? '...' : ''),\n topOffset\n };\n\n setVersions(prev => [newVersion, ...prev]);\n setShowHistoryMargin(true);\n };\n\n const restoreVersion = (version: Version) => {\n if (!contentRef.current) return;\n if (confirm('Restaurer cette version ? Le contenu actuel sera remplacé.')) {\n contentRef.current.innerHTML = version.content;\n handleInput();\n }\n };\n\n // --- Exposed Methods ---\n\n useImperativeHandle(ref, () => ({\n insertHtml: (text: string) => {\n saveVersion('Insertion Chat', 'Insertion depuis le panneau IA');\n\n contentRef.current?.focus();\n\n const sel = window.getSelection();\n if (lastCursorPosition.current) {\n sel?.removeAllRanges();\n sel?.addRange(lastCursorPosition.current);\n } else if (contentRef.current) {\n const range = document.createRange();\n range.selectNodeContents(contentRef.current);\n range.collapse(false);\n sel?.removeAllRanges();\n sel?.addRange(range);\n }\n\n const htmlToInsert = text.includes('<') ? text : text.replace(/\\n/g, '
');\n document.execCommand('insertHTML', false, htmlToInsert);\n handleInput();\n }\n }));\n\n // --- Effects ---\n\n useEffect(() => {\n if (contentRef.current && contentRef.current.innerHTML !== initialContent) {\n // Only update if difference is significant to avoid cursor jumps on small re-renders?\n // OR better: Only update if NOT focused?\n if (!isFocused && Math.abs(contentRef.current.innerHTML.length - initialContent.length) > 5) {\n contentRef.current.innerHTML = initialContent;\n }\n }\n }, [initialContent, isFocused]);\n\n // --- Event Handlers ---\n\n const execCommand = (command: string, value: string | undefined = undefined) => {\n document.execCommand(command, false, value);\n handleInput();\n contentRef.current?.focus();\n };\n\n const handleInput = () => {\n if (contentRef.current) {\n if (onChange) onChange(contentRef.current.innerHTML);\n\n // Auto-Save Debounce\n if (onSave) {\n setSaveStatus('unsaved');\n if (saveTimeoutRef.current) clearTimeout(saveTimeoutRef.current);\n\n saveTimeoutRef.current = setTimeout(async () => {\n setSaveStatus('saving');\n await onSave(contentRef.current?.innerHTML || \"\");\n setSaveStatus('saved');\n }, 2000); // 2 seconds\n }\n }\n };\n\n const saveSelection = () => {\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0 && contentRef.current?.contains(sel.anchorNode)) {\n lastCursorPosition.current = sel.getRangeAt(0).cloneRange();\n }\n };\n\n const handleSelection = () => {\n const selection = window.getSelection();\n saveSelection();\n\n if (selection && selection.toString().length > 0 && onSelectionChange) {\n onSelectionChange(selection.toString());\n } else if (onSelectionChange) {\n onSelectionChange(\"\");\n }\n };\n\n const handleContextMenu = (e: React.MouseEvent) => {\n e.preventDefault();\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n if (contentRef.current?.contains(range.commonAncestorContainer)) {\n savedRange.current = range.cloneRange();\n setContextMenu({ x: e.clientX, y: e.clientY });\n return;\n }\n }\n\n savedRange.current = null;\n setContextMenu({ x: e.clientX, y: e.clientY });\n };\n\n const handleAiAction = async (mode: 'correct' | 'rewrite' | 'expand' | 'continue') => {\n if (!onAiTransform) return;\n\n const range = savedRange.current;\n const text = range?.toString() || \"\";\n\n if (!text && mode !== 'continue') return;\n\n const typeLabels: Record = {\n correct: 'Correction',\n rewrite: 'Reformulation',\n expand: 'Développement',\n continue: 'Continuation'\n };\n saveVersion(typeLabels[mode], text || \"Position curseur\");\n\n setIsAiLoading(true);\n try {\n const result = await onAiTransform(text, mode);\n\n if (result) {\n contentRef.current?.focus();\n const sel = window.getSelection();\n sel?.removeAllRanges();\n\n if (range) {\n sel?.addRange(range);\n }\n\n if (mode === 'continue') {\n sel?.collapseToEnd();\n document.execCommand('insertText', false, \" \" + result);\n } else {\n document.execCommand('insertText', false, result);\n }\n\n handleInput();\n }\n } catch (e) {\n console.error(\"AI Action failed\", e);\n } finally {\n setIsAiLoading(false);\n setContextMenu(null);\n }\n };\n\n const handleCopy = () => {\n if (savedRange.current) {\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(savedRange.current);\n document.execCommand('copy');\n }\n setContextMenu(null);\n };\n\n const handleSelectAll = () => {\n contentRef.current?.focus();\n document.execCommand('selectAll');\n handleSelection();\n setContextMenu(null);\n }\n\n const ToolbarButton = ({ icon: Icon, cmd, arg, label, onClick, isActive }: any) => (\n {\n if (onClick) {\n e.preventDefault();\n onClick();\n } else {\n e.preventDefault();\n execCommand(cmd, arg);\n }\n }}\n className={`p-1.5 rounded transition-colors ${isActive ? 'bg-indigo-100 text-indigo-700' : 'text-slate-500 hover:text-slate-800 hover:bg-slate-200'}`}\n title={label}\n >\n \n \n );\n\n const hasSelection = savedRange.current && !savedRange.current.collapsed;\n\n return (\n
\n \n\n {/* Toolbar */}\n
\n \n \n \n
\n \n \n
\n \n \n \n
\n \n\n
\n\n {/* Save Status Indicator */}\n
\n {saveStatus === 'saving' && <> Sauvegarde...}\n {saveStatus === 'saved' && <> Sauvegardé}\n {saveStatus === 'unsaved' && Modifications non enregistrées...}\n
\n\n
\n setShowHistoryMargin(!showHistoryMargin)}\n isActive={showHistoryMargin}\n />\n
\n\n {/* Main Container - Scrollable Area */}\n \n
\n\n {/* Editor Content Page */}\n { setIsFocused(false); saveSelection(); }}\n onFocus={() => setIsFocused(true)}\n onKeyUp={saveSelection}\n onMouseUp={saveSelection}\n onSelect={handleSelection}\n onClick={() => contentRef.current?.focus()}\n onContextMenu={handleContextMenu}\n data-placeholder=\"Commencez à écrire votre chef-d'œuvre... (Clic droit pour outils IA)\"\n />\n\n {/* History Track - Moving with the page */}\n {showHistoryMargin && (\n
\n {/* Placeholder for empty history */}\n {versionGroups.length === 0 && (\n
\n \n

L'historique des modifications IA apparaîtra ici, aligné avec votre texte.

\n
\n )}\n\n {/* Render Groups */}\n {versionGroups.map((group) => {\n const isExpanded = expandedGroupIds.has(group.id);\n const isStack = group.versions.length > 1;\n const latest = group.versions[0];\n\n return (\n \n
\n\n {/* Stack Effect Background Card */}\n {isStack && !isExpanded && (\n
\n )}\n\n {/* Main Card Header */}\n isStack && toggleGroup(group.id)}\n >\n
\n {isStack && (\n \n )}\n \n {latest.type}\n \n
\n
\n \n {new Date(latest.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}\n \n {isStack && (\n isExpanded ? : \n )}\n
\n
\n\n {/* Card Content (Latest) */}\n {!isExpanded && (\n
\n
\n \"{latest.snippet}\"\n
\n restoreVersion(latest)}\n className=\"mt-2 w-full flex items-center justify-center gap-1 text-[10px] bg-slate-50 hover:bg-indigo-50 text-slate-600 hover:text-indigo-700 py-1 rounded transition-colors\"\n >\n Restaurer\n \n
\n )}\n\n {/* Expanded Stack View */}\n {isExpanded && (\n
\n {group.versions.map((v, i) => (\n
\n
\n \n {i === 0 ? 'Dernière version' : `Version -${i}`}\n \n \n {new Date(v.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' })}\n \n
\n
\n \"{v.snippet}\"\n
\n restoreVersion(v)}\n className=\"w-full flex items-center justify-center gap-1 text-[10px] bg-white border border-slate-200 text-slate-600 hover:text-indigo-600 hover:border-indigo-200 py-1 rounded transition-colors\"\n >\n Restaurer cette version\n \n
\n ))}\n
\n )}\n
\n
\n );\n })}\n
\n )}\n
\n
\n\n {/* Context Menu Overlay */}\n {contextMenu && (\n <>\n setContextMenu(null)}\n onContextMenu={(e) => { e.preventDefault(); setContextMenu(null); }}\n />\n \n {isAiLoading ? (\n
\n \n L'IA travaille...\n
\n ) : (\n <>\n
\n Outils IA\n
\n\n handleAiAction('correct')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Corriger l'orthographe\n \n\n handleAiAction('rewrite')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Reformuler\n \n\n handleAiAction('expand')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Développer\n \n\n handleAiAction('continue')}\n className=\"flex items-center gap-2 px-3 py-2 text-sm text-slate-700 hover:bg-indigo-50 hover:text-indigo-700 text-left transition-colors\"\n >\n Continuer l'écriture\n \n\n
\n\n
\n Édition\n
\n\n \n Copier\n \n\n \n Tout sélectionner\n \n \n )}\n
\n \n )}\n
\n );\n});\n\nexport default RichTextEditor;\n","'use client';\r\n\r\nimport React, { useRef } from 'react';\r\nimport RichTextEditor, { RichTextEditorHandle } from '@/components/RichTextEditor';\r\nimport { useProjectContext } from '@/providers/ProjectProvider';\r\nimport api from '@/lib/api';\r\n\r\nexport default function WritePage() {\r\n const editorRef = useRef(null);\r\n const { project, user, currentChapterId, updateChapter, incrementUsage } = useProjectContext();\r\n\r\n if (!currentChapterId) return null;\r\n\r\n const currentChapter = project.chapters?.find(c => c.id === currentChapterId);\r\n\r\n return (\r\n updateChapter(currentChapterId, { content: html })}\r\n onAiTransform={async (text, mode) => {\r\n const result = await api.ai.transform(text, mode, currentChapter?.content || '', user);\r\n incrementUsage();\r\n return result;\r\n }}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm18 15-6-6-6 6', key: '153udz' }]];\n\n/**\n * @component @name ChevronUp\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTggMTUtNi02LTYgNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-up\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronUp = createLucideIcon('chevron-up', __iconNode);\n\nexport default ChevronUp;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }]];\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiA5IDYgNiA2LTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('chevron-down', __iconNode);\n\nexport default ChevronDown;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8', key: '1357e3' }],\n ['path', { d: 'M3 3v5h5', key: '1xhq8a' }],\n];\n\n/**\n * @component @name RotateCcw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMyAxMmE5IDkgMCAxIDAgOS05IDkuNzUgOS43NSAwIDAgMC02Ljc0IDIuNzRMMyA4IiAvPgogIDxwYXRoIGQ9Ik0zIDN2NWg1IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/rotate-ccw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RotateCcw = createLucideIcon('rotate-ccw', __iconNode);\n\nexport default RotateCcw;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '14', height: '14', x: '8', y: '8', rx: '2', ry: '2', key: '17jyea' }],\n ['path', { d: 'M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2', key: 'zix9uf' }],\n];\n\n/**\n * @component @name Copy\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHg9IjgiIHk9IjgiIHJ4PSIyIiByeT0iMiIgLz4KICA8cGF0aCBkPSJNNCAxNmMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDEwYzEuMSAwIDIgLjkgMiAyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/copy\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Copy = createLucideIcon('copy', __iconNode);\n\nexport default Copy;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8', key: '1357e3' }],\n ['path', { d: 'M3 3v5h5', key: '1xhq8a' }],\n ['path', { d: 'M12 7v5l4 2', key: '1fdv2h' }],\n];\n\n/**\n * @component @name History\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMyAxMmE5IDkgMCAxIDAgOS05IDkuNzUgOS43NSAwIDAgMC02Ljc0IDIuNzRMMyA4IiAvPgogIDxwYXRoIGQ9Ik0zIDN2NWg1IiAvPgogIDxwYXRoIGQ9Ik0xMiA3djVsNCAyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/history\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst History = createLucideIcon('history', __iconNode);\n\nexport default History;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M6 4v6a6 6 0 0 0 12 0V4', key: '9kb039' }],\n ['line', { x1: '4', x2: '20', y1: '20', y2: '20', key: 'nun2al' }],\n];\n\n/**\n * @component @name Underline\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiA0djZhNiA2IDAgMCAwIDEyIDBWNCIgLz4KICA8bGluZSB4MT0iNCIgeDI9IjIwIiB5MT0iMjAiIHkyPSIyMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/underline\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Underline = createLucideIcon('underline', __iconNode);\n\nexport default Underline;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'm21 3-7 7', key: '1l2asr' }],\n ['path', { d: 'm3 21 7-7', key: 'tjx5ai' }],\n ['path', { d: 'M9 21H3v-6', key: 'wtvkvv' }],\n];\n\n/**\n * @component @name Maximize2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgM2g2djYiIC8+CiAgPHBhdGggZD0ibTIxIDMtNyA3IiAvPgogIDxwYXRoIGQ9Im0zIDIxIDctNyIgLz4KICA8cGF0aCBkPSJNOSAyMUgzdi02IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/maximize-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Maximize2 = createLucideIcon('maximize-2', __iconNode);\n\nexport default Maximize2;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M4 12h8', key: '17cfdx' }],\n ['path', { d: 'M4 18V6', key: '1rz3zl' }],\n ['path', { d: 'M12 18V6', key: 'zqpxq5' }],\n ['path', { d: 'M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1', key: '9jr5yi' }],\n];\n\n/**\n * @component @name Heading2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxMmg4IiAvPgogIDxwYXRoIGQ9Ik00IDE4VjYiIC8+CiAgPHBhdGggZD0iTTEyIDE4VjYiIC8+CiAgPHBhdGggZD0iTTIxIDE4aC00YzAtNCA0LTMgNC02IDAtMS41LTItMi41LTQtMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/heading-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Heading2 = createLucideIcon('heading-2', __iconNode);\n\nexport default Heading2;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M4 12h8', key: '17cfdx' }],\n ['path', { d: 'M4 18V6', key: '1rz3zl' }],\n ['path', { d: 'M12 18V6', key: 'zqpxq5' }],\n ['path', { d: 'm17 12 3-2v8', key: '1hhhft' }],\n];\n\n/**\n * @component @name Heading1\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxMmg4IiAvPgogIDxwYXRoIGQ9Ik00IDE4VjYiIC8+CiAgPHBhdGggZD0iTTEyIDE4VjYiIC8+CiAgPHBhdGggZD0ibTE3IDEyIDMtMnY4IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/heading-1\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Heading1 = createLucideIcon('heading-1', __iconNode);\n\nexport default Heading1;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M21 5H3', key: '1fi0y6' }],\n ['path', { d: 'M17 12H7', key: '16if0g' }],\n ['path', { d: 'M19 19H5', key: 'vjpgq2' }],\n];\n\n/**\n * @component @name TextAlignCenter\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgNUgzIiAvPgogIDxwYXRoIGQ9Ik0xNyAxMkg3IiAvPgogIDxwYXRoIGQ9Ik0xOSAxOUg1IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/text-align-center\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TextAlignCenter = createLucideIcon('text-align-center', __iconNode);\n\nexport default TextAlignCenter;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M21 5H3', key: '1fi0y6' }],\n ['path', { d: 'M21 12H9', key: 'dn1m92' }],\n ['path', { d: 'M21 19H7', key: '4cu937' }],\n];\n\n/**\n * @component @name TextAlignEnd\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgNUgzIiAvPgogIDxwYXRoIGQ9Ik0yMSAxMkg5IiAvPgogIDxwYXRoIGQ9Ik0yMSAxOUg3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/text-align-end\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TextAlignEnd = createLucideIcon('text-align-end', __iconNode);\n\nexport default TextAlignEnd;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M21 5H3', key: '1fi0y6' }],\n ['path', { d: 'M15 12H3', key: '6jk70r' }],\n ['path', { d: 'M17 19H3', key: 'z6ezky' }],\n];\n\n/**\n * @component @name TextAlignStart\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgNUgzIiAvPgogIDxwYXRoIGQ9Ik0xNSAxMkgzIiAvPgogIDxwYXRoIGQ9Ik0xNyAxOUgzIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/text-align-start\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TextAlignStart = createLucideIcon('text-align-start', __iconNode);\n\nexport default TextAlignStart;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['line', { x1: '19', x2: '10', y1: '4', y2: '4', key: '15jd3p' }],\n ['line', { x1: '14', x2: '5', y1: '20', y2: '20', key: 'bu0au3' }],\n ['line', { x1: '15', x2: '9', y1: '4', y2: '20', key: 'uljnxc' }],\n];\n\n/**\n * @component @name Italic\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8bGluZSB4MT0iMTkiIHgyPSIxMCIgeTE9IjQiIHkyPSI0IiAvPgogIDxsaW5lIHgxPSIxNCIgeDI9IjUiIHkxPSIyMCIgeTI9IjIwIiAvPgogIDxsaW5lIHgxPSIxNSIgeDI9IjkiIHkxPSI0IiB5Mj0iMjAiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/italic\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Italic = createLucideIcon('italic', __iconNode);\n\nexport default Italic;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n { d: 'M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8', key: 'mg9rjx' },\n ],\n];\n\n/**\n * @component @name Bold\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAxMmg5YTQgNCAwIDAgMSAwIDhIN2ExIDEgMCAwIDEtMS0xVjVhMSAxIDAgMCAxIDEtMWg3YTQgNCAwIDAgMSAwIDgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/bold\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Bold = createLucideIcon('bold', __iconNode);\n\nexport default Bold;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72',\n key: 'ul74o6',\n },\n ],\n ['path', { d: 'm14 7 3 3', key: '1r5n42' }],\n ['path', { d: 'M5 6v4', key: 'ilb8ba' }],\n ['path', { d: 'M19 14v4', key: 'blhpug' }],\n ['path', { d: 'M10 2v2', key: '7u0qdc' }],\n ['path', { d: 'M7 8H3', key: 'zfb6yr' }],\n ['path', { d: 'M21 16h-4', key: '1cnmox' }],\n ['path', { d: 'M11 3H9', key: '1obp7u' }],\n];\n\n/**\n * @component @name WandSparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjEuNjQgMy42NC0xLjI4LTEuMjhhMS4yMSAxLjIxIDAgMCAwLTEuNzIgMEwyLjM2IDE4LjY0YTEuMjEgMS4yMSAwIDAgMCAwIDEuNzJsMS4yOCAxLjI4YTEuMiAxLjIgMCAwIDAgMS43MiAwTDIxLjY0IDUuMzZhMS4yIDEuMiAwIDAgMCAwLTEuNzIiIC8+CiAgPHBhdGggZD0ibTE0IDcgMyAzIiAvPgogIDxwYXRoIGQ9Ik01IDZ2NCIgLz4KICA8cGF0aCBkPSJNMTkgMTR2NCIgLz4KICA8cGF0aCBkPSJNMTAgMnYyIiAvPgogIDxwYXRoIGQ9Ik03IDhIMyIgLz4KICA8cGF0aCBkPSJNMjEgMTZoLTQiIC8+CiAgPHBhdGggZD0iTTExIDNIOSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/wand-sparkles\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst WandSparkles = createLucideIcon('wand-sparkles', __iconNode);\n\nexport default WandSparkles;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z',\n key: 'zw3jo',\n },\n ],\n [\n 'path',\n {\n d: 'M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12',\n key: '1wduqc',\n },\n ],\n [\n 'path',\n {\n d: 'M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17',\n key: 'kqbvx6',\n },\n ],\n];\n\n/**\n * @component @name Layers\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIuODMgMi4xOGEyIDIgMCAwIDAtMS42NiAwTDIuNiA2LjA4YTEgMSAwIDAgMCAwIDEuODNsOC41OCAzLjkxYTIgMiAwIDAgMCAxLjY2IDBsOC41OC0zLjlhMSAxIDAgMCAwIDAtMS44M3oiIC8+CiAgPHBhdGggZD0iTTIgMTJhMSAxIDAgMCAwIC41OC45MWw4LjYgMy45MWEyIDIgMCAwIDAgMS42NSAwbDguNTgtMy45QTEgMSAwIDAgMCAyMiAxMiIgLz4KICA8cGF0aCBkPSJNMiAxN2ExIDEgMCAwIDAgLjU4LjkxbDguNiAzLjkxYTIgMiAwIDAgMCAxLjY1IDBsOC41OC0zLjlBMSAxIDAgMCAwIDIyIDE3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/layers\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Layers = createLucideIcon('layers', __iconNode);\n\nexport default Layers;\n"],"names":[],"mappings":"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","ignoreList":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_workflow_page_tsx_7c45eeec._.js b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_workflow_page_tsx_7c45eeec._.js index a7cf847..ecf8727 100644 --- a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_workflow_page_tsx_7c45eeec._.js +++ b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_workflow_page_tsx_7c45eeec._.js @@ -1,5 +1,5 @@ module.exports=[82451,a=>{"use strict";var b=a.i(78352),c=a.i(28091),d=a.i(37620),e=a.i(33782),f=a.i(46451),g=a.i(79320),h=a.i(73258),i=a.i(6111),j=a.i(72071);let k=(0,a.i(29892).default)("palette",[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]]),l=["#ffffff","#dbeafe","#dcfce7","#fef9c3","#fee2e2","#f3e8ff"],m=c.default.memo(({node:a,isSelected:d,isEditing:e,activeColorPickerId:f,entities:l,savedColors:m,onMouseDown:n,onMouseUp:o,onStartConnection:p,onUpdate:q,onSetEditing:r,onToggleColorPicker:s,onSaveColor:t,onNavigateToEntity:u,onInputFocus:v,onInputCheckAutocomplete:w,onKeyDownInInput:x})=>{let[y,z]=(0,c.useState)(!1),A=(0,c.useMemo)(()=>((a,c,d)=>{if(!a)return(0,b.jsx)("span",{className:"text-slate-400 italic",children:"Description..."});let e=[a];return c.forEach(a=>{if(!a.name)return;let c=RegExp(`(${a.name})`,"gi");for(let f=0;f1){let c=h.map((c,e)=>c.toLowerCase()===a.name.toLowerCase()?(0,b.jsx)("span",{onClick:b=>{b.stopPropagation(),d(a.id)},className:"text-indigo-600 hover:text-indigo-800 underline decoration-indigo-300 hover:decoration-indigo-600 cursor-pointer font-medium bg-indigo-50 px-0.5 rounded transition-all",title:`Voir la fiche de ${a.name}`,children:c},`${a.id}-${e}`):c);e.splice(f,1,...c),f+=c.length-1}}}}),(0,b.jsx)(b.Fragment,{children:e})})(a.description,l,u),[a.description,l,u]);return(0,b.jsxs)("div",{className:`absolute flex flex-col rounded-xl shadow-sm border transition-all z-10 group ${d?"ring-2 ring-indigo-500 shadow-lg scale-[1.01]":"border-slate-200 hover:shadow-md"} - `,style:{transform:`translate3d(${a.x}px, ${a.y}px, 0)`,width:260,height:220,backgroundColor:a.color||"#ffffff",willChange:"transform"},onMouseDown:b=>n(b,a.id),onMouseUp:b=>o(b,a.id),onMouseLeave:()=>z(!1),children:[(0,b.jsx)("div",{className:"h-1.5 rounded-t-xl bg-black/5 w-full cursor-grab active:cursor-grabbing"}),(0,b.jsxs)("div",{className:"flex-1 px-4 pb-4 pt-2 flex flex-col overflow-hidden relative",children:[(0,b.jsxs)("div",{className:"flex justify-between items-start mb-2 relative",children:[e?(0,b.jsx)("input",{className:"font-bold text-slate-800 bg-white/50 border-b border-indigo-400 outline-none w-full mr-6 text-sm p-1 rounded",value:a.title,onChange:b=>q(a.id,{title:b.target.value}),onFocus:v,autoFocus:!0}):(0,b.jsx)("div",{className:"font-bold text-slate-800 cursor-text truncate mr-6 text-sm",onDoubleClick:()=>r(a.id),children:a.title}),(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),s(a.id)},className:"p-1 rounded-full hover:bg-black/10 text-slate-400 hover:text-indigo-600 transition-colors absolute right-0 top-0",children:(0,b.jsx)(k,{size:14})}),f===a.id&&(0,b.jsxs)("div",{className:"absolute right-[-10px] top-8 bg-white rounded-lg shadow-xl border border-slate-200 p-3 z-50 w-48 animate-in fade-in zoom-in-95 duration-100 cursor-default",onMouseDown:a=>a.stopPropagation(),children:[(0,b.jsx)("div",{className:"grid grid-cols-4 gap-2 mb-3",children:m.map(c=>(0,b.jsx)("button",{onClick:()=>q(a.id,{color:c}),className:`w-8 h-8 rounded-full border border-slate-200 shadow-sm transition-transform hover:scale-110 ${a.color===c?"ring-2 ring-offset-1 ring-indigo-400":""}`,style:{backgroundColor:c}},c))}),(0,b.jsxs)("div",{className:"flex items-center gap-2 pt-2 border-t border-slate-100",children:[(0,b.jsx)("div",{className:"relative w-8 h-8 rounded-full overflow-hidden border border-slate-300 shadow-inner",children:(0,b.jsx)("input",{type:"color",className:"absolute -top-2 -left-2 w-16 h-16 cursor-pointer",value:a.color||"#ffffff",onChange:b=>q(a.id,{color:b.target.value})})}),(0,b.jsx)("button",{onClick:()=>t(a.color||"#ffffff"),className:"text-[10px] font-bold text-indigo-600 hover:text-indigo-800 hover:underline flex-1 text-right",children:"+ SAUVER"})]})]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto custom-scrollbar relative mb-4",children:e?(0,b.jsx)("textarea",{className:`w-full h-full bg-white/70 resize-none outline-none text-xs leading-relaxed p-2 rounded border border-indigo-100 shadow-inner ${"dialogue"===a.type?"font-mono text-slate-700":"text-slate-600"}`,placeholder:"dialogue"===a.type?"Héros: Salut !\nGuide: ...":"Résumé de l'intrigue...",value:a.description,onChange:b=>w(b,a.id,"description"),onKeyDown:b=>x(b,a.id),onFocus:v,onBlur:()=>r(null)}):(0,b.jsx)("div",{className:`w-full h-full text-xs text-slate-600 leading-relaxed p-1 cursor-text whitespace-pre-wrap ${"dialogue"===a.type?"font-mono bg-indigo-50/30 rounded pl-2 border-l-2 border-indigo-200":""}`,onClick:()=>r(a.id),children:A})}),(0,b.jsxs)("div",{className:"absolute bottom-2 right-2 z-20",children:[y&&(0,b.jsxs)("div",{className:"absolute bottom-full mb-2 right-0 bg-white shadow-xl border border-slate-200 rounded-lg p-1 flex gap-1 animate-in zoom-in-95 duration-100 w-max",onMouseDown:a=>a.stopPropagation(),children:[(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),q(a.id,{type:"story"}),z(!1)},className:`p-1.5 rounded hover:bg-slate-100 ${"story"===a.type?"bg-indigo-50 ring-1 ring-indigo-200":""}`,title:"Narration",children:(0,b.jsx)(h.BookOpen,{size:14,className:"text-slate-500"})}),(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),q(a.id,{type:"action"}),z(!1)},className:`p-1.5 rounded hover:bg-amber-50 ${"action"===a.type?"bg-amber-50 ring-1 ring-amber-200":""}`,title:"Action",children:(0,b.jsx)(j.Zap,{size:14,className:"text-amber-500"})}),(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),q(a.id,{type:"dialogue"}),z(!1)},className:`p-1.5 rounded hover:bg-blue-50 ${"dialogue"===a.type?"bg-blue-50 ring-1 ring-blue-200":""}`,title:"Dialogue",children:(0,b.jsx)(i.MessageCircle,{size:14,className:"text-blue-500"})})]}),(0,b.jsxs)("button",{className:"p-1.5 rounded-full bg-white/70 hover:bg-white shadow-sm border border-slate-100 hover:border-indigo-200 transition-all opacity-80 group-hover:opacity-100",onClick:a=>{a.stopPropagation(),z(!y)},children:["story"===a.type&&(0,b.jsx)(h.BookOpen,{size:14,className:"text-slate-500"}),"action"===a.type&&(0,b.jsx)(j.Zap,{size:14,className:"text-amber-500"}),"dialogue"===a.type&&(0,b.jsx)(i.MessageCircle,{size:14,className:"text-blue-500"})]})]})]}),(0,b.jsx)("button",{className:"absolute -right-3 top-1/2 -translate-y-1/2 w-6 h-6 bg-white border border-slate-300 rounded-full flex items-center justify-center text-slate-400 hover:text-indigo-600 hover:border-indigo-500 shadow-sm opacity-0 group-hover:opacity-100 transition-all z-20",onMouseDown:b=>p(b,a.id),children:(0,b.jsx)(g.ArrowRight,{size:12})})]})},(a,b)=>a.node===b.node&&a.isSelected===b.isSelected&&a.isEditing===b.isEditing&&a.activeColorPickerId===b.activeColorPickerId&&a.entities===b.entities),n=({data:a,onUpdate:g,entities:h,onNavigateToEntity:i})=>{let j=(0,c.useRef)(null),k=(0,c.useRef)(null),[n,o]=(0,c.useState)(a.nodes),p=(0,c.useRef)(n);(0,c.useEffect)(()=>{p.current=n},[n]),(0,c.useEffect)(()=>{o(a.nodes)},[a.nodes]),(0,c.useEffect)(()=>()=>{k.current&&cancelAnimationFrame(k.current)},[]);let[q,r]=(0,c.useState)(null),[s,t]=(0,c.useState)(new Set),[u,v]=(0,c.useState)(l),[w,x]=(0,c.useState)(null),[y,z]=(0,c.useState)(null),[A,B]=(0,c.useState)([]),[C,D]=(0,c.useState)(!1),[E,F]=(0,c.useState)(new Map),[G,H]=(0,c.useState)({x:0,y:0}),[I,J]=(0,c.useState)(null),[K,L]=(0,c.useState)({x:0,y:0}),[M,N]=(0,c.useState)(!1),[O,P]=(0,c.useState)({x:0,y:0}),[Q,R]=(0,c.useState)({x:0,y:0}),S=(0,c.useCallback)(()=>{B(b=>{let c=[...b,a];return c.length>20?c.slice(c.length-20):c})},[a]),T=(0,c.useCallback)((b,c)=>{let d=p.current;g({...a,nodes:d.map(a=>a.id===b?{...a,...c}:a)})},[a,g]),U=(0,c.useCallback)(a=>{a.stopPropagation()},[]),V=(0,c.useCallback)((a,b,c)=>{let e=a.target.value;T(b,{[c]:e});let f=a.target.selectionStart||0,g=e.slice(0,f).match(/([@#^])([^@#^\s]*)$/);if(g){let a=g[1],e=g[2].toLowerCase(),i="@"===a?d.EntityType.CHARACTER:"#"===a?d.EntityType.LOCATION:d.EntityType.OBJECT,j=h.filter(a=>a.type===i&&a.name.toLowerCase().includes(e));r({active:!0,trigger:a,query:e,nodeId:b,field:c,cursorIndex:f,selectedIndex:0,filteredEntities:j})}else r(null)},[T,h]),W=a=>{if(!q)return;let{nodeId:b,field:c,trigger:d,query:e}=q,f=p.current.find(a=>a.id===b);if(!f)return;let g=f[c],h=q.cursorIndex,i=h-(d.length+e.length);if(i<0)return;let j=g.slice(0,i),k=g.slice(h),l="dialogue"===f.type&&"@"===q.trigger;T(b,{[c]:j+a.name+(l?": ":" ")+k}),r(null)},X=(0,c.useCallback)((a,b)=>{if(q&&q.nodeId===b){if("ArrowDown"===a.key){a.preventDefault(),r(a=>a?{...a,selectedIndex:(a.selectedIndex+1)%a.filteredEntities.length}:null);return}else if("ArrowUp"===a.key){a.preventDefault(),r(a=>a?{...a,selectedIndex:(a.selectedIndex-1+a.filteredEntities.length)%a.filteredEntities.length}:null);return}else if("Tab"===a.key||"Enter"===a.key){a.preventDefault(),q.filteredEntities.length>0?W(q.filteredEntities[q.selectedIndex]):r(null);return}else if("Escape"===a.key)return void r(null)}},[q,h,T]),Y=(0,c.useCallback)((a,b)=>{a.stopPropagation(),x(null),t(c=>{let d=new Set(c);a.ctrlKey?d.has(b)?d.delete(b):d.add(b):d.has(b)||(d.clear(),d.add(b));let e=a.ctrlKey||d.has(b)?d:new Set([b]),f=new Map;return p.current.forEach(a=>{e.has(a.id)&&f.set(a.id,{x:a.x,y:a.y})}),F(f),d}),D(!0),H({x:a.clientX,y:a.clientY}),S()},[S]),Z=(0,c.useCallback)((a,b)=>{a.stopPropagation(),S(),J(b)},[S]),$=(0,c.useCallback)((b,c)=>{if(I&&I!==c&&!a.connections.some(a=>a.source===I&&a.target===c)){let b={id:`conn-${Date.now()}`,source:I,target:c};g({...a,nodes:p.current,connections:[...a.connections,b]})}J(null)},[a,g,I]),_=(0,c.useCallback)(a=>{x(b=>b===a?null:a)},[]),aa=(0,c.useCallback)(a=>{v(b=>b.includes(a)?b:[...b,a])},[]);return(0,b.jsxs)("div",{className:"h-full flex flex-col overflow-hidden bg-[#eef2ff] relative",children:[(0,b.jsxs)("div",{className:"h-12 bg-white border-b border-indigo-100 flex items-center justify-between px-4 z-10 shadow-sm shrink-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{onClick:()=>{S();let b=j.current?.scrollLeft||0,c=j.current?.scrollTop||0,d=j.current?.clientWidth||800,e=j.current?.clientHeight||600,f={id:`node-${Date.now()}`,x:b+d/2-130,y:c+e/2-110,title:"Nouveau point d'intrigue",description:"",color:l[0],type:"story"};g({...a,nodes:[...p.current,f]}),t(new Set([f.id])),z(f.id)},className:"flex items-center gap-1.5 px-3 py-1.5 bg-indigo-600 text-white rounded-lg hover:bg-indigo-700 text-xs font-bold transition-all shadow-md shadow-indigo-100",children:[(0,b.jsx)(e.Plus,{size:14})," AJOUTER NŒUD"]}),(0,b.jsx)("div",{className:"w-px h-6 bg-slate-100 mx-2"}),(0,b.jsx)("div",{className:"text-[10px] uppercase font-bold text-slate-400 tracking-wider",children:s.size>0?`${s.size} S\xc9LECTIONN\xc9(S)`:"Double-cliquez sur le canvas pour créer"})]}),(0,b.jsx)("div",{className:"flex items-center gap-2",children:(0,b.jsx)("button",{onClick:()=>{0===s.size||(S(),g({nodes:n.filter(a=>!s.has(a.id)),connections:a.connections.filter(a=>!s.has(a.source)&&!s.has(a.target))}),t(new Set))},disabled:0===s.size,className:"p-2 text-red-500 hover:bg-red-50 rounded-lg disabled:opacity-30 transition-colors",title:"Supprimer",children:(0,b.jsx)(f.Trash2,{size:16})})})]}),(0,b.jsxs)("div",{ref:j,className:"flex-1 overflow-auto relative cursor-grab active:cursor-grabbing bg-[#eef2ff]",onMouseDown:a=>{a.ctrlKey||t(new Set),r(null),x(null),z(null),N(!0),P({x:a.clientX,y:a.clientY}),j.current&&R({x:j.current.scrollLeft,y:j.current.scrollTop})},onMouseMove:a=>{let b=j.current?.getBoundingClientRect();if(!b)return;let c=a.clientX,d=a.clientY;if(M&&j.current){let a=c-O.x,b=d-O.y;j.current.scrollLeft=Q.x-a,j.current.scrollTop=Q.y-b;return}let e=j.current?.scrollLeft||0,f=j.current?.scrollTop||0;if(L({x:c-b.left+e,y:d-b.top+f}),C){if(k.current)return;k.current=requestAnimationFrame(()=>{let a=c-G.x,b=d-G.y;o(c=>c.map(c=>{let d=E.get(c.id);return d?{...c,x:d.x+a,y:d.y+b}:c})),k.current=null})}},onMouseUp:()=>{k.current&&(cancelAnimationFrame(k.current),k.current=null),C&&g({...a,nodes:p.current}),D(!1),N(!1),J(null)},onDoubleClick:b=>{b.preventDefault();let c=j.current?.getBoundingClientRect();if(!c)return;let d=b.clientX-c.left+(j.current?.scrollLeft||0)-130,e=b.clientY-c.top+(j.current?.scrollTop||0)-110;S();let f={id:`node-${Date.now()}`,x:d,y:e,title:"Nouvel événement",description:"",color:l[0],type:"story"};g({...a,nodes:[...p.current,f]}),t(new Set([f.id])),z(f.id)},style:{backgroundImage:"radial-gradient(#d1d5db 1px, transparent 1px)",backgroundSize:"24px 24px"},children:[(0,b.jsxs)("svg",{className:"absolute top-0 left-0 w-[4000px] h-[4000px] pointer-events-none z-0",children:[a.connections.map(a=>{let c=n.find(b=>b.id===a.source),d=n.find(b=>b.id===a.target);if(!c||!d)return null;let e=c.x+130,f=c.y+110,g=d.x+130,h=d.y+110;return(0,b.jsx)("line",{x1:e,y1:f,x2:g,y2:h,stroke:"#cbd5e1",strokeWidth:"2",markerEnd:"url(#arrowhead)"},a.id)}),I&&(0,b.jsx)("line",{x1:(n.find(a=>a.id===I)?.x||0)+130,y1:(n.find(a=>a.id===I)?.y||0)+110,x2:K.x,y2:K.y,stroke:"#6366f1",strokeWidth:"2",strokeDasharray:"5,5",markerEnd:"url(#arrowhead-blue)"}),(0,b.jsxs)("defs",{children:[(0,b.jsx)("marker",{id:"arrowhead",markerWidth:"10",markerHeight:"7",refX:"28",refY:"3.5",orient:"auto",children:(0,b.jsx)("path",{d:"M0,0 L0,7 L10,3.5 Z",fill:"#cbd5e1"})}),(0,b.jsx)("marker",{id:"arrowhead-blue",markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto",children:(0,b.jsx)("path",{d:"M0,0 L0,7 L10,3.5 Z",fill:"#6366f1"})})]})]}),n.map(a=>(0,b.jsx)(m,{node:a,isSelected:s.has(a.id),isEditing:y===a.id,activeColorPickerId:w,entities:h,savedColors:u,onMouseDown:Y,onMouseUp:$,onStartConnection:Z,onUpdate:T,onSetEditing:z,onToggleColorPicker:_,onSaveColor:aa,onNavigateToEntity:i,onInputFocus:U,onInputCheckAutocomplete:V,onKeyDownInInput:X},a.id))]}),q&&(0,b.jsxs)("div",{className:"fixed z-50 bg-white rounded-xl shadow-2xl border border-indigo-100 w-64 max-h-48 overflow-y-auto",style:{left:"50%",top:"50%",transform:"translate(-50%, -50%)"},children:[(0,b.jsxs)("div",{className:"px-3 py-2 bg-indigo-600 text-white text-[10px] font-black uppercase tracking-widest",children:["Insérer ","@"===q.trigger?"Personnage":"#"===q.trigger?"Lieu":"Objet"]}),(0,b.jsx)("div",{className:"divide-y divide-slate-50",children:q.filteredEntities.length>0?q.filteredEntities.map((a,c)=>(0,b.jsx)("button",{className:`w-full text-left px-4 py-3 text-xs flex items-center gap-3 hover:bg-indigo-50 transition-colors ${c===q.selectedIndex?"bg-indigo-50 text-indigo-700 font-bold":"text-slate-700"}`,onClick:()=>W(a),children:a.name},a.id)):(0,b.jsx)("div",{className:"p-4 text-xs text-slate-400 italic text-center",children:"Aucun résultat"})})]})]})};var o=a.i(34896);function p(a){let{project:c,updateProject:d}=a,e=(0,o.useParams)(),f=(0,o.useRouter)(),g=e.id;return c?(0,b.jsx)(n,{data:c.workflow||{nodes:[],connections:[]},onUpdate:a=>d?.({workflow:a}),entities:c.entities||[],onNavigateToEntity:a=>f.push(`/project/${g}/world`)}):null}a.s(["default",()=>p],82451)}]; + `,style:{transform:`translate3d(${a.x}px, ${a.y}px, 0)`,width:260,height:220,backgroundColor:a.color||"#ffffff",willChange:"transform"},onMouseDown:b=>n(b,a.id),onMouseUp:b=>o(b,a.id),onMouseLeave:()=>z(!1),children:[(0,b.jsx)("div",{className:"h-1.5 rounded-t-xl bg-black/5 w-full cursor-grab active:cursor-grabbing"}),(0,b.jsxs)("div",{className:"flex-1 px-4 pb-4 pt-2 flex flex-col overflow-hidden relative",children:[(0,b.jsxs)("div",{className:"flex justify-between items-start mb-2 relative",children:[e?(0,b.jsx)("input",{className:"font-bold text-slate-800 bg-white/50 border-b border-indigo-400 outline-none w-full mr-6 text-sm p-1 rounded",value:a.title,onChange:b=>q(a.id,{title:b.target.value}),onFocus:v,autoFocus:!0}):(0,b.jsx)("div",{className:"font-bold text-slate-800 cursor-text truncate mr-6 text-sm",onDoubleClick:()=>r(a.id),children:a.title}),(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),s(a.id)},className:"p-1 rounded-full hover:bg-black/10 text-slate-400 hover:text-indigo-600 transition-colors absolute right-0 top-0",children:(0,b.jsx)(k,{size:14})}),f===a.id&&(0,b.jsxs)("div",{className:"absolute right-[-10px] top-8 bg-white rounded-lg shadow-xl border border-slate-200 p-3 z-50 w-48 animate-in fade-in zoom-in-95 duration-100 cursor-default",onMouseDown:a=>a.stopPropagation(),children:[(0,b.jsx)("div",{className:"grid grid-cols-4 gap-2 mb-3",children:m.map(c=>(0,b.jsx)("button",{onClick:()=>q(a.id,{color:c}),className:`w-8 h-8 rounded-full border border-slate-200 shadow-sm transition-transform hover:scale-110 ${a.color===c?"ring-2 ring-offset-1 ring-indigo-400":""}`,style:{backgroundColor:c}},c))}),(0,b.jsxs)("div",{className:"flex items-center gap-2 pt-2 border-t border-slate-100",children:[(0,b.jsx)("div",{className:"relative w-8 h-8 rounded-full overflow-hidden border border-slate-300 shadow-inner",children:(0,b.jsx)("input",{type:"color",className:"absolute -top-2 -left-2 w-16 h-16 cursor-pointer",value:a.color||"#ffffff",onChange:b=>q(a.id,{color:b.target.value})})}),(0,b.jsx)("button",{onClick:()=>t(a.color||"#ffffff"),className:"text-[10px] font-bold text-indigo-600 hover:text-indigo-800 hover:underline flex-1 text-right",children:"+ SAUVER"})]})]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto custom-scrollbar relative mb-4",children:e?(0,b.jsx)("textarea",{className:`w-full h-full bg-white/70 resize-none outline-none text-xs leading-relaxed p-2 rounded border border-indigo-100 shadow-inner ${"dialogue"===a.type?"font-mono text-slate-700":"text-slate-600"}`,placeholder:"dialogue"===a.type?"Héros: Salut !\nGuide: ...":"Résumé de l'intrigue...",value:a.description,onChange:b=>w(b,a.id,"description"),onKeyDown:b=>x(b,a.id),onFocus:v,onBlur:()=>r(null)}):(0,b.jsx)("div",{className:`w-full h-full text-xs text-slate-600 leading-relaxed p-1 cursor-text whitespace-pre-wrap ${"dialogue"===a.type?"font-mono bg-indigo-50/30 rounded pl-2 border-l-2 border-indigo-200":""}`,onClick:()=>r(a.id),children:A})}),(0,b.jsxs)("div",{className:"absolute bottom-2 right-2 z-20",children:[y&&(0,b.jsxs)("div",{className:"absolute bottom-full mb-2 right-0 bg-white shadow-xl border border-slate-200 rounded-lg p-1 flex gap-1 animate-in zoom-in-95 duration-100 w-max",onMouseDown:a=>a.stopPropagation(),children:[(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),q(a.id,{type:"story"}),z(!1)},className:`p-1.5 rounded hover:bg-slate-100 ${"story"===a.type?"bg-indigo-50 ring-1 ring-indigo-200":""}`,title:"Narration",children:(0,b.jsx)(h.BookOpen,{size:14,className:"text-slate-500"})}),(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),q(a.id,{type:"action"}),z(!1)},className:`p-1.5 rounded hover:bg-amber-50 ${"action"===a.type?"bg-amber-50 ring-1 ring-amber-200":""}`,title:"Action",children:(0,b.jsx)(j.Zap,{size:14,className:"text-amber-500"})}),(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),q(a.id,{type:"dialogue"}),z(!1)},className:`p-1.5 rounded hover:bg-blue-50 ${"dialogue"===a.type?"bg-blue-50 ring-1 ring-blue-200":""}`,title:"Dialogue",children:(0,b.jsx)(i.MessageCircle,{size:14,className:"text-blue-500"})})]}),(0,b.jsxs)("button",{className:"p-1.5 rounded-full bg-white/70 hover:bg-white shadow-sm border border-slate-100 hover:border-indigo-200 transition-all opacity-80 group-hover:opacity-100",onClick:a=>{a.stopPropagation(),z(!y)},children:["story"===a.type&&(0,b.jsx)(h.BookOpen,{size:14,className:"text-slate-500"}),"action"===a.type&&(0,b.jsx)(j.Zap,{size:14,className:"text-amber-500"}),"dialogue"===a.type&&(0,b.jsx)(i.MessageCircle,{size:14,className:"text-blue-500"})]})]})]}),(0,b.jsx)("button",{className:"absolute -right-3 top-1/2 -translate-y-1/2 w-6 h-6 bg-white border border-slate-300 rounded-full flex items-center justify-center text-slate-400 hover:text-indigo-600 hover:border-indigo-500 shadow-sm opacity-0 group-hover:opacity-100 transition-all z-20",onMouseDown:b=>p(b,a.id),children:(0,b.jsx)(g.ArrowRight,{size:12})})]})},(a,b)=>a.node===b.node&&a.isSelected===b.isSelected&&a.isEditing===b.isEditing&&a.activeColorPickerId===b.activeColorPickerId&&a.entities===b.entities),n=({data:a,onUpdate:g,entities:h,onNavigateToEntity:i})=>{let j=(0,c.useRef)(null),k=(0,c.useRef)(null),[n,o]=(0,c.useState)(a.nodes),p=(0,c.useRef)(n);(0,c.useEffect)(()=>{p.current=n},[n]),(0,c.useEffect)(()=>{o(a.nodes)},[a.nodes]),(0,c.useEffect)(()=>()=>{k.current&&cancelAnimationFrame(k.current)},[]);let[q,r]=(0,c.useState)(null),[s,t]=(0,c.useState)(new Set),[u,v]=(0,c.useState)(l),[w,x]=(0,c.useState)(null),[y,z]=(0,c.useState)(null),[A,B]=(0,c.useState)([]),[C,D]=(0,c.useState)(!1),[E,F]=(0,c.useState)(new Map),[G,H]=(0,c.useState)({x:0,y:0}),[I,J]=(0,c.useState)(null),[K,L]=(0,c.useState)({x:0,y:0}),[M,N]=(0,c.useState)(!1),[O,P]=(0,c.useState)({x:0,y:0}),[Q,R]=(0,c.useState)({x:0,y:0}),S=(0,c.useCallback)(()=>{B(b=>{let c=[...b,a];return c.length>20?c.slice(c.length-20):c})},[a]),T=(0,c.useCallback)((b,c)=>{let d=p.current;g({...a,nodes:d.map(a=>a.id===b?{...a,...c}:a)})},[a,g]),U=(0,c.useCallback)(a=>{a.stopPropagation()},[]),V=(0,c.useCallback)((a,b,c)=>{let e=a.target.value;T(b,{[c]:e});let f=a.target.selectionStart||0,g=e.slice(0,f).match(/([@#^])([^@#^\s]*)$/);if(g){let a=g[1],e=g[2].toLowerCase(),i="@"===a?d.EntityType.CHARACTER:"#"===a?d.EntityType.LOCATION:d.EntityType.OBJECT,j=h.filter(a=>a.type===i&&a.name.toLowerCase().includes(e));r({active:!0,trigger:a,query:e,nodeId:b,field:c,cursorIndex:f,selectedIndex:0,filteredEntities:j})}else r(null)},[T,h]),W=a=>{if(!q)return;let{nodeId:b,field:c,trigger:d,query:e}=q,f=p.current.find(a=>a.id===b);if(!f)return;let g=f[c],h=q.cursorIndex,i=h-(d.length+e.length);if(i<0)return;let j=g.slice(0,i),k=g.slice(h),l="dialogue"===f.type&&"@"===q.trigger;T(b,{[c]:j+a.name+(l?": ":" ")+k}),r(null)},X=(0,c.useCallback)((a,b)=>{if(q&&q.nodeId===b){if("ArrowDown"===a.key){a.preventDefault(),r(a=>a?{...a,selectedIndex:(a.selectedIndex+1)%a.filteredEntities.length}:null);return}else if("ArrowUp"===a.key){a.preventDefault(),r(a=>a?{...a,selectedIndex:(a.selectedIndex-1+a.filteredEntities.length)%a.filteredEntities.length}:null);return}else if("Tab"===a.key||"Enter"===a.key){a.preventDefault(),q.filteredEntities.length>0?W(q.filteredEntities[q.selectedIndex]):r(null);return}else if("Escape"===a.key)return void r(null)}},[q,h,T]),Y=(0,c.useCallback)((a,b)=>{a.stopPropagation(),x(null),t(c=>{let d=new Set(c);a.ctrlKey?d.has(b)?d.delete(b):d.add(b):d.has(b)||(d.clear(),d.add(b));let e=a.ctrlKey||d.has(b)?d:new Set([b]),f=new Map;return p.current.forEach(a=>{e.has(a.id)&&f.set(a.id,{x:a.x,y:a.y})}),F(f),d}),D(!0),H({x:a.clientX,y:a.clientY}),S()},[S]),Z=(0,c.useCallback)((a,b)=>{a.stopPropagation(),S(),J(b)},[S]),$=(0,c.useCallback)((b,c)=>{if(I&&I!==c&&!a.connections.some(a=>a.source===I&&a.target===c)){let b={id:`conn-${Date.now()}`,source:I,target:c};g({...a,nodes:p.current,connections:[...a.connections,b]})}J(null)},[a,g,I]),_=(0,c.useCallback)(a=>{x(b=>b===a?null:a)},[]),aa=(0,c.useCallback)(a=>{v(b=>b.includes(a)?b:[...b,a])},[]);return(0,b.jsxs)("div",{className:"h-full flex flex-col overflow-hidden bg-[#eef2ff] relative",children:[(0,b.jsxs)("div",{className:"h-12 bg-white border-b border-indigo-100 flex items-center justify-between px-4 z-10 shadow-sm shrink-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{onClick:()=>{S();let b=j.current?.scrollLeft||0,c=j.current?.scrollTop||0,d=j.current?.clientWidth||800,e=j.current?.clientHeight||600,f={id:`node-${Date.now()}`,x:b+d/2-130,y:c+e/2-110,title:"Nouveau point d'intrigue",description:"",color:l[0],type:"story"};g({...a,nodes:[...p.current,f]}),t(new Set([f.id])),z(f.id)},className:"flex items-center gap-1.5 px-3 py-1.5 bg-indigo-600 text-white rounded-lg hover:bg-indigo-700 text-xs font-bold transition-all shadow-md shadow-indigo-100",children:[(0,b.jsx)(e.Plus,{size:14})," AJOUTER NŒUD"]}),(0,b.jsx)("div",{className:"w-px h-6 bg-slate-100 mx-2"}),(0,b.jsx)("div",{className:"text-[10px] uppercase font-bold text-slate-400 tracking-wider",children:s.size>0?`${s.size} S\xc9LECTIONN\xc9(S)`:"Double-cliquez sur le canvas pour créer"})]}),(0,b.jsx)("div",{className:"flex items-center gap-2",children:(0,b.jsx)("button",{onClick:()=>{0===s.size||(S(),g({nodes:n.filter(a=>!s.has(a.id)),connections:a.connections.filter(a=>!s.has(a.source)&&!s.has(a.target))}),t(new Set))},disabled:0===s.size,className:"p-2 text-red-500 hover:bg-red-50 rounded-lg disabled:opacity-30 transition-colors",title:"Supprimer",children:(0,b.jsx)(f.Trash2,{size:16})})})]}),(0,b.jsxs)("div",{ref:j,className:"flex-1 overflow-auto relative cursor-grab active:cursor-grabbing bg-[#eef2ff]",onMouseDown:a=>{a.ctrlKey||t(new Set),r(null),x(null),z(null),N(!0),P({x:a.clientX,y:a.clientY}),j.current&&R({x:j.current.scrollLeft,y:j.current.scrollTop})},onMouseMove:a=>{let b=j.current?.getBoundingClientRect();if(!b)return;let c=a.clientX,d=a.clientY;if(M&&j.current){let a=c-O.x,b=d-O.y;j.current.scrollLeft=Q.x-a,j.current.scrollTop=Q.y-b;return}let e=j.current?.scrollLeft||0,f=j.current?.scrollTop||0;if(L({x:c-b.left+e,y:d-b.top+f}),C){if(k.current)return;k.current=requestAnimationFrame(()=>{let a=c-G.x,b=d-G.y;o(c=>c.map(c=>{let d=E.get(c.id);return d?{...c,x:d.x+a,y:d.y+b}:c})),k.current=null})}},onMouseUp:()=>{k.current&&(cancelAnimationFrame(k.current),k.current=null),C&&g({...a,nodes:p.current}),D(!1),N(!1),J(null)},onDoubleClick:b=>{b.preventDefault();let c=j.current?.getBoundingClientRect();if(!c)return;let d=b.clientX-c.left+(j.current?.scrollLeft||0)-130,e=b.clientY-c.top+(j.current?.scrollTop||0)-110;S();let f={id:`node-${Date.now()}`,x:d,y:e,title:"Nouvel événement",description:"",color:l[0],type:"story"};g({...a,nodes:[...p.current,f]}),t(new Set([f.id])),z(f.id)},style:{backgroundImage:"radial-gradient(#d1d5db 1px, transparent 1px)",backgroundSize:"24px 24px"},children:[(0,b.jsxs)("svg",{className:"absolute top-0 left-0 w-[4000px] h-[4000px] pointer-events-none z-0",children:[a.connections.map(a=>{let c=n.find(b=>b.id===a.source),d=n.find(b=>b.id===a.target);if(!c||!d)return null;let e=c.x+130,f=c.y+110,g=d.x+130,h=d.y+110;return(0,b.jsx)("line",{x1:e,y1:f,x2:g,y2:h,stroke:"#cbd5e1",strokeWidth:"2",markerEnd:"url(#arrowhead)"},a.id)}),I&&(0,b.jsx)("line",{x1:(n.find(a=>a.id===I)?.x||0)+130,y1:(n.find(a=>a.id===I)?.y||0)+110,x2:K.x,y2:K.y,stroke:"#6366f1",strokeWidth:"2",strokeDasharray:"5,5",markerEnd:"url(#arrowhead-blue)"}),(0,b.jsxs)("defs",{children:[(0,b.jsx)("marker",{id:"arrowhead",markerWidth:"10",markerHeight:"7",refX:"28",refY:"3.5",orient:"auto",children:(0,b.jsx)("path",{d:"M0,0 L0,7 L10,3.5 Z",fill:"#cbd5e1"})}),(0,b.jsx)("marker",{id:"arrowhead-blue",markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto",children:(0,b.jsx)("path",{d:"M0,0 L0,7 L10,3.5 Z",fill:"#6366f1"})})]})]}),n.map(a=>(0,b.jsx)(m,{node:a,isSelected:s.has(a.id),isEditing:y===a.id,activeColorPickerId:w,entities:h,savedColors:u,onMouseDown:Y,onMouseUp:$,onStartConnection:Z,onUpdate:T,onSetEditing:z,onToggleColorPicker:_,onSaveColor:aa,onNavigateToEntity:i,onInputFocus:U,onInputCheckAutocomplete:V,onKeyDownInInput:X},a.id))]}),q&&(0,b.jsxs)("div",{className:"fixed z-50 bg-white rounded-xl shadow-2xl border border-indigo-100 w-64 max-h-48 overflow-y-auto",style:{left:"50%",top:"50%",transform:"translate(-50%, -50%)"},children:[(0,b.jsxs)("div",{className:"px-3 py-2 bg-indigo-600 text-white text-[10px] font-black uppercase tracking-widest",children:["Insérer ","@"===q.trigger?"Personnage":"#"===q.trigger?"Lieu":"Objet"]}),(0,b.jsx)("div",{className:"divide-y divide-slate-50",children:q.filteredEntities.length>0?q.filteredEntities.map((a,c)=>(0,b.jsx)("button",{className:`w-full text-left px-4 py-3 text-xs flex items-center gap-3 hover:bg-indigo-50 transition-colors ${c===q.selectedIndex?"bg-indigo-50 text-indigo-700 font-bold":"text-slate-700"}`,onClick:()=>W(a),children:a.name},a.id)):(0,b.jsx)("div",{className:"p-4 text-xs text-slate-400 italic text-center",children:"Aucun résultat"})})]})]})};var o=a.i(46344),p=a.i(34896);function q(){let{project:a,projectId:c,updateProject:d}=(0,o.useProjectContext)(),e=(0,p.useRouter)();return(0,b.jsx)(n,{data:a.workflow||{nodes:[],connections:[]},onUpdate:a=>d({workflow:a}),entities:a.entities||[],onNavigateToEntity:()=>e.push(`/project/${c}/world`)})}a.s(["default",()=>q],82451)}]; //# sourceMappingURL=Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_workflow_page_tsx_7c45eeec._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_workflow_page_tsx_7c45eeec._.js.map b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_workflow_page_tsx_7c45eeec._.js.map index a536ff4..def4f8a 100644 --- a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_workflow_page_tsx_7c45eeec._.js.map +++ b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_workflow_page_tsx_7c45eeec._.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/workflow/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/StoryWorkflow.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/palette.ts"],"sourcesContent":["'use client';\r\n\r\nimport StoryWorkflow from '@/components/StoryWorkflow';\r\nimport { useParams, useRouter } from 'next/navigation';\r\n\r\ninterface WorkflowPageProps {\r\n project?: any;\r\n updateProject?: (updates: any) => void;\r\n}\r\n\r\nexport default function WorkflowPage(props: WorkflowPageProps) {\r\n const { project, updateProject } = props;\r\n const params = useParams();\r\n const router = useRouter();\r\n const projectId = params.id as string;\r\n\r\n if (!project) return null;\r\n\r\n return (\r\n updateProject?.({ workflow })}\r\n entities={project.entities || []}\r\n onNavigateToEntity={(entityId) => router.push(`/project/${projectId}/world`)}\r\n />\r\n );\r\n}\r\n","'use client';\n\n\nimport React, { useState, useRef, useEffect, useCallback, useMemo } from 'react';\nimport { WorkflowData, PlotNode, PlotConnection, PlotNodeType, Entity, EntityType } from '@/lib/types';\nimport { Plus, Trash2, ArrowRight, BookOpen, MessageCircle, Zap, Palette, Save, Link2 } from 'lucide-react';\n\ninterface StoryWorkflowProps {\n data: WorkflowData;\n onUpdate: (data: WorkflowData) => void;\n entities: Entity[];\n onNavigateToEntity: (entityId: string) => void;\n}\n\nconst CARD_WIDTH = 260;\nconst CARD_HEIGHT = 220;\n\nconst INITIAL_COLORS = [\n '#ffffff', // White\n '#dbeafe', // Blue\n '#dcfce7', // Green\n '#fef9c3', // Yellow\n '#fee2e2', // Red\n '#f3e8ff', // Purple\n];\n\nconst renderTextWithLinks = (text: string, entities: Entity[], onNavigate: (id: string) => void) => {\n if (!text) return Description...;\n \n const parts: (string | React.ReactNode)[] = [text];\n \n entities.forEach(entity => {\n if (!entity.name) return;\n const regex = new RegExp(`(${entity.name})`, 'gi');\n \n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (typeof part === 'string') {\n const split = part.split(regex);\n if (split.length > 1) {\n const newParts = split.map((s, idx) => {\n if (s.toLowerCase() === entity.name.toLowerCase()) {\n return (\n { e.stopPropagation(); onNavigate(entity.id); }}\n className=\"text-indigo-600 hover:text-indigo-800 underline decoration-indigo-300 hover:decoration-indigo-600 cursor-pointer font-medium bg-indigo-50 px-0.5 rounded transition-all\"\n title={`Voir la fiche de ${entity.name}`}\n >\n {s}\n \n );\n }\n return s;\n });\n parts.splice(i, 1, ...newParts);\n i += newParts.length - 1;\n }\n }\n }\n });\n\n return <>{parts};\n};\n\ninterface StoryNodeProps {\n node: PlotNode;\n isSelected: boolean;\n isEditing: boolean;\n activeColorPickerId: string | null;\n entities: Entity[];\n savedColors: string[];\n \n onMouseDown: (e: React.MouseEvent, id: string) => void;\n onMouseUp: (e: React.MouseEvent, id: string) => void;\n onStartConnection: (e: React.MouseEvent, id: string) => void;\n onUpdate: (id: string, updates: Partial) => void;\n onSetEditing: (id: string | null) => void;\n onToggleColorPicker: (id: string) => void;\n onSaveColor: (color: string) => void;\n onNavigateToEntity: (id: string) => void;\n \n onInputFocus: (e: React.FocusEvent) => void;\n onInputCheckAutocomplete: (e: React.ChangeEvent, id: string, field: 'title'|'description') => void;\n onKeyDownInInput: (e: React.KeyboardEvent, id: string) => void;\n}\n\nconst StoryNode = React.memo(({ \n node, isSelected, isEditing, activeColorPickerId, entities, savedColors,\n onMouseDown, onMouseUp, onStartConnection, onUpdate, onSetEditing, \n onToggleColorPicker, onSaveColor, onNavigateToEntity, \n onInputFocus, onInputCheckAutocomplete, onKeyDownInInput\n}: StoryNodeProps) => {\n\n const [showTypePicker, setShowTypePicker] = useState(false);\n\n const richDescription = useMemo(() => {\n return renderTextWithLinks(node.description, entities, onNavigateToEntity);\n }, [node.description, entities, onNavigateToEntity]);\n\n return (\n onMouseDown(e, node.id)}\n onMouseUp={(e) => onMouseUp(e, node.id)}\n onMouseLeave={() => setShowTypePicker(false)}\n >\n
\n\n
\n
\n {isEditing ? (\n onUpdate(node.id, { title: e.target.value })}\n onFocus={onInputFocus}\n autoFocus\n />\n ) : (\n
onSetEditing(node.id)}\n >\n {node.title}\n
\n )}\n\n \n\n {activeColorPickerId === node.id && (\n
e.stopPropagation()}>\n
\n {savedColors.map(color => (\n
\n
\n
\n onUpdate(node.id, { color: e.target.value })}\n />\n
\n \n
\n
\n )}\n
\n\n
\n {isEditing ? (\n onInputCheckAutocomplete(e, node.id, 'description')}\n onKeyDown={(e) => onKeyDownInInput(e, node.id)}\n onFocus={onInputFocus}\n onBlur={() => onSetEditing(null)}\n />\n ) : (\n
onSetEditing(node.id)}\n >\n {richDescription}\n
\n )}\n
\n\n
\n {showTypePicker && (\n
e.stopPropagation()}>\n { e.stopPropagation(); onUpdate(node.id, { type: 'story' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-slate-100 ${node.type === 'story' ? 'bg-indigo-50 ring-1 ring-indigo-200' : ''}`}\n title=\"Narration\"\n >\n \n \n { e.stopPropagation(); onUpdate(node.id, { type: 'action' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-amber-50 ${node.type === 'action' ? 'bg-amber-50 ring-1 ring-amber-200' : ''}`}\n title=\"Action\"\n >\n \n \n { e.stopPropagation(); onUpdate(node.id, { type: 'dialogue' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-blue-50 ${node.type === 'dialogue' ? 'bg-blue-50 ring-1 ring-blue-200' : ''}`}\n title=\"Dialogue\"\n >\n \n \n
\n )}\n\n { e.stopPropagation(); setShowTypePicker(!showTypePicker); }}\n >\n {node.type === 'story' && }\n {node.type === 'action' && }\n {node.type === 'dialogue' && }\n \n
\n
\n\n onStartConnection(e, node.id)}\n >\n \n \n
\n );\n}, (prev, next) => {\n return (\n prev.node === next.node && \n prev.isSelected === next.isSelected &&\n prev.isEditing === next.isEditing &&\n prev.activeColorPickerId === next.activeColorPickerId &&\n prev.entities === next.entities\n );\n});\n\ninterface SuggestionState {\n active: boolean;\n trigger: string;\n query: string;\n nodeId: string;\n field: 'title' | 'description';\n cursorIndex: number;\n selectedIndex: number;\n filteredEntities: Entity[];\n}\n\nconst StoryWorkflow: React.FC = ({ data, onUpdate, entities, onNavigateToEntity }) => {\n const containerRef = useRef(null);\n const rafRef = useRef(null);\n \n const [internalNodes, setInternalNodes] = useState(data.nodes);\n const internalNodesRef = useRef(internalNodes);\n useEffect(() => { internalNodesRef.current = internalNodes; }, [internalNodes]);\n\n useEffect(() => {\n setInternalNodes(data.nodes);\n }, [data.nodes]);\n\n useEffect(() => {\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n };\n }, []);\n\n const [activeSuggestion, setActiveSuggestion] = useState(null);\n const [selectedNodeIds, setSelectedNodeIds] = useState>(new Set());\n const [savedColors, setSavedColors] = useState(INITIAL_COLORS);\n const [activeColorPickerId, setActiveColorPickerId] = useState(null);\n const [editingNodeId, setEditingNodeId] = useState(null);\n const [history, setHistory] = useState([]);\n \n const [isDragging, setIsDragging] = useState(false);\n const [dragStartPositions, setDragStartPositions] = useState>(new Map());\n const [dragStartMouse, setDragStartMouse] = useState({ x: 0, y: 0 });\n\n const [connectingNodeId, setConnectingNodeId] = useState(null);\n const [mousePos, setMousePos] = useState({ x: 0, y: 0 });\n\n const [isPanning, setIsPanning] = useState(false);\n const [panStart, setPanStart] = useState({ x: 0, y: 0 });\n const [scrollStart, setScrollStart] = useState({ x: 0, y: 0 });\n\n const pushHistory = useCallback(() => {\n setHistory(prev => {\n const newHistory = [...prev, data];\n if (newHistory.length > 20) return newHistory.slice(newHistory.length - 20);\n return newHistory;\n });\n }, [data]);\n\n const updateNode = useCallback((id: string, updates: Partial) => {\n const currentNodes = internalNodesRef.current;\n onUpdate({\n ...data,\n nodes: currentNodes.map(n => n.id === id ? { ...n, ...updates } : n)\n });\n }, [data, onUpdate]);\n\n const handleInputFocus = useCallback((e: React.FocusEvent) => {\n e.stopPropagation();\n }, []);\n\n const handleInputWithAutocomplete = useCallback((\n e: React.ChangeEvent, \n nodeId: string, \n field: 'title' | 'description'\n ) => {\n const val = e.target.value;\n updateNode(nodeId, { [field]: val });\n \n const cursor = e.target.selectionStart || 0;\n const textBeforeCursor = val.slice(0, cursor);\n const match = textBeforeCursor.match(/([@#^])([^@#^\\s]*)$/);\n\n if (match) {\n const trigger = match[1];\n const query = match[2].toLowerCase();\n const targetType = trigger === '@' ? EntityType.CHARACTER : trigger === '#' ? EntityType.LOCATION : EntityType.OBJECT;\n const filtered = entities.filter(ent => \n ent.type === targetType && \n ent.name.toLowerCase().includes(query)\n );\n\n setActiveSuggestion({\n active: true,\n trigger,\n query,\n nodeId,\n field,\n cursorIndex: cursor,\n selectedIndex: 0,\n filteredEntities: filtered\n });\n } else {\n setActiveSuggestion(null);\n }\n }, [updateNode, entities]);\n\n const insertEntity = (entity: Entity) => {\n if (!activeSuggestion) return;\n const { nodeId, field, trigger, query } = activeSuggestion;\n const node = internalNodesRef.current.find(n => n.id === nodeId);\n if (!node) return;\n const currentText = node[field] as string;\n const cursor = activeSuggestion.cursorIndex;\n const insertionLength = trigger.length + query.length;\n const startIdx = cursor - insertionLength;\n if (startIdx < 0) return;\n const before = currentText.slice(0, startIdx);\n const after = currentText.slice(cursor);\n const isDialogue = node.type === 'dialogue' && activeSuggestion.trigger === '@';\n const suffix = isDialogue ? \": \" : \" \";\n updateNode(nodeId, { [field]: before + entity.name + suffix + after });\n setActiveSuggestion(null);\n };\n\n const handleKeyDownInInput = useCallback((e: React.KeyboardEvent, nodeId: string) => {\n if (activeSuggestion && activeSuggestion.nodeId === nodeId) {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex + 1) % prev.filteredEntities.length } : null);\n return;\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex - 1 + prev.filteredEntities.length) % prev.filteredEntities.length } : null);\n return;\n } else if (e.key === 'Tab' || e.key === 'Enter') {\n e.preventDefault();\n if (activeSuggestion.filteredEntities.length > 0) {\n insertEntity(activeSuggestion.filteredEntities[activeSuggestion.selectedIndex]);\n } else {\n setActiveSuggestion(null); \n }\n return;\n } else if (e.key === 'Escape') {\n setActiveSuggestion(null);\n return;\n }\n }\n }, [activeSuggestion, entities, updateNode]);\n\n const handleNodeMouseDown = useCallback((e: React.MouseEvent, nodeId: string) => {\n e.stopPropagation(); \n setActiveColorPickerId(null);\n\n setSelectedNodeIds(prevSelected => {\n const newSelection = new Set(prevSelected);\n if (e.ctrlKey) {\n if (newSelection.has(nodeId)) newSelection.delete(nodeId);\n else newSelection.add(nodeId);\n } else {\n if (!newSelection.has(nodeId)) {\n newSelection.clear();\n newSelection.add(nodeId);\n }\n }\n const finalDragIds = e.ctrlKey ? newSelection : (newSelection.has(nodeId) ? newSelection : new Set([nodeId]));\n const startPositions = new Map();\n internalNodesRef.current.forEach(n => {\n if (finalDragIds.has(n.id)) {\n startPositions.set(n.id, { x: n.x, y: n.y });\n }\n });\n setDragStartPositions(startPositions);\n return newSelection;\n });\n\n setIsDragging(true);\n setDragStartMouse({ x: e.clientX, y: e.clientY });\n pushHistory();\n }, [pushHistory]);\n\n const startConnection = useCallback((e: React.MouseEvent, nodeId: string) => {\n e.stopPropagation();\n pushHistory();\n setConnectingNodeId(nodeId);\n }, [pushHistory]);\n\n const finishConnection = useCallback((e: React.MouseEvent, targetId: string) => {\n if (connectingNodeId && connectingNodeId !== targetId) {\n const exists = data.connections.some(c => c.source === connectingNodeId && c.target === targetId);\n if (!exists) {\n const newConn: PlotConnection = {\n id: `conn-${Date.now()}`,\n source: connectingNodeId,\n target: targetId\n };\n onUpdate({\n ...data,\n nodes: internalNodesRef.current,\n connections: [...data.connections, newConn]\n });\n }\n }\n setConnectingNodeId(null);\n }, [data, onUpdate, connectingNodeId]);\n\n const handleToggleColorPicker = useCallback((id: string) => {\n setActiveColorPickerId(prev => prev === id ? null : id);\n }, []);\n\n const handleSaveColor = useCallback((color: string) => {\n setSavedColors(prev => !prev.includes(color) ? [...prev, color] : prev);\n }, []);\n\n const handleMouseMove = (e: React.MouseEvent) => {\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect) return;\n const clientX = e.clientX;\n const clientY = e.clientY;\n\n if (isPanning && containerRef.current) {\n const dx = clientX - panStart.x;\n const dy = clientY - panStart.y;\n containerRef.current.scrollLeft = scrollStart.x - dx;\n containerRef.current.scrollTop = scrollStart.y - dy;\n return;\n }\n\n const scrollLeft = containerRef.current?.scrollLeft || 0;\n const scrollTop = containerRef.current?.scrollTop || 0;\n setMousePos({ x: clientX - rect.left + scrollLeft, y: clientY - rect.top + scrollTop });\n\n if (isDragging) {\n if (rafRef.current) return;\n rafRef.current = requestAnimationFrame(() => {\n const dx = clientX - dragStartMouse.x;\n const dy = clientY - dragStartMouse.y;\n setInternalNodes(prevNodes => prevNodes.map(node => {\n const startPos = dragStartPositions.get(node.id);\n if (startPos) return { ...node, x: startPos.x + dx, y: startPos.y + dy };\n return node;\n }));\n rafRef.current = null;\n });\n }\n };\n\n const handleMouseUp = () => {\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n if (isDragging) onUpdate({ ...data, nodes: internalNodesRef.current });\n setIsDragging(false);\n setIsPanning(false);\n setConnectingNodeId(null);\n };\n\n const handleCanvasMouseDown = (e: React.MouseEvent) => {\n if (!e.ctrlKey) setSelectedNodeIds(new Set());\n setActiveSuggestion(null); \n setActiveColorPickerId(null); \n setEditingNodeId(null); \n setIsPanning(true);\n setPanStart({ x: e.clientX, y: e.clientY });\n if (containerRef.current) {\n setScrollStart({ x: containerRef.current.scrollLeft, y: containerRef.current.scrollTop });\n }\n };\n\n const handleCanvasDoubleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect) return;\n const x = e.clientX - rect.left + (containerRef.current?.scrollLeft || 0) - CARD_WIDTH / 2;\n const y = e.clientY - rect.top + (containerRef.current?.scrollTop || 0) - CARD_HEIGHT / 2;\n pushHistory();\n const newNode: PlotNode = {\n id: `node-${Date.now()}`,\n x,\n y,\n title: 'Nouvel événement',\n description: '',\n color: INITIAL_COLORS[0],\n type: 'story'\n };\n onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] });\n setSelectedNodeIds(new Set([newNode.id]));\n setEditingNodeId(newNode.id);\n };\n\n const handleDeleteSelected = () => {\n if (selectedNodeIds.size === 0) return;\n pushHistory();\n const newNodes = internalNodes.filter(n => !selectedNodeIds.has(n.id));\n const newConnections = data.connections.filter(c => !selectedNodeIds.has(c.source) && !selectedNodeIds.has(c.target));\n onUpdate({ nodes: newNodes, connections: newConnections });\n setSelectedNodeIds(new Set());\n };\n\n const handleAddNodeCenter = () => {\n pushHistory();\n const scrollLeft = containerRef.current?.scrollLeft || 0;\n const scrollTop = containerRef.current?.scrollTop || 0;\n const clientWidth = containerRef.current?.clientWidth || 800;\n const clientHeight = containerRef.current?.clientHeight || 600;\n const newNode: PlotNode = {\n id: `node-${Date.now()}`,\n x: scrollLeft + clientWidth / 2 - CARD_WIDTH / 2,\n y: scrollTop + clientHeight / 2 - CARD_HEIGHT / 2,\n title: 'Nouveau point d\\'intrigue',\n description: '',\n color: INITIAL_COLORS[0],\n type: 'story'\n };\n onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] });\n setSelectedNodeIds(new Set([newNode.id]));\n setEditingNodeId(newNode.id);\n };\n\n return (\n
\n
\n
\n \n
\n
\n {selectedNodeIds.size > 0 ? `${selectedNodeIds.size} SÉLECTIONNÉ(S)` : 'Double-cliquez sur le canvas pour créer'}\n
\n
\n
\n \n
\n
\n\n
\n \n {data.connections.map(conn => {\n const source = internalNodes.find(n => n.id === conn.source); \n const target = internalNodes.find(n => n.id === conn.target); \n if (!source || !target) return null;\n const startX = source.x + CARD_WIDTH / 2;\n const startY = source.y + CARD_HEIGHT / 2;\n const endX = target.x + CARD_WIDTH / 2;\n const endY = target.y + CARD_HEIGHT / 2;\n return (\n \n );\n })}\n {connectingNodeId && (\n n.id === connectingNodeId)?.x || 0) + CARD_WIDTH/2}\n y1={(internalNodes.find(n => n.id === connectingNodeId)?.y || 0) + CARD_HEIGHT/2}\n x2={mousePos.x} y2={mousePos.y}\n stroke=\"#6366f1\" strokeWidth=\"2\" strokeDasharray=\"5,5\" markerEnd=\"url(#arrowhead-blue)\"\n />\n )}\n \n \n \n \n \n \n \n \n \n\n {internalNodes.map(node => (\n \n ))}\n
\n\n {activeSuggestion && (\n
\n
\n Insérer {activeSuggestion.trigger === '@' ? 'Personnage' : activeSuggestion.trigger === '#' ? 'Lieu' : 'Objet'}\n
\n
\n {activeSuggestion.filteredEntities.length > 0 ? (\n activeSuggestion.filteredEntities.map((ent, idx) => (\n insertEntity(ent)}\n >\n {ent.name}\n \n ))\n ) : (\n
Aucun résultat
\n )}\n
\n
\n )}\n
\n );\n};\n\nexport default StoryWorkflow;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z',\n key: 'e79jfc',\n },\n ],\n ['circle', { cx: '13.5', cy: '6.5', r: '.5', fill: 'currentColor', key: '1okk4w' }],\n ['circle', { cx: '17.5', cy: '10.5', r: '.5', fill: 'currentColor', key: 'f64h9f' }],\n ['circle', { cx: '6.5', cy: '12.5', r: '.5', fill: 'currentColor', key: 'qy21gx' }],\n ['circle', { cx: '8.5', cy: '7.5', r: '.5', fill: 'currentColor', key: 'fotxhn' }],\n];\n\n/**\n * @component @name Palette\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMjJhMSAxIDAgMCAxIDAtMjAgMTAgOSAwIDAgMSAxMCA5IDUgNSAwIDAgMS01IDVoLTIuMjVhMS43NSAxLjc1IDAgMCAwLTEuNCAyLjhsLjMuNGExLjc1IDEuNzUgMCAwIDEtMS40IDIuOHoiIC8+CiAgPGNpcmNsZSBjeD0iMTMuNSIgY3k9IjYuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KICA8Y2lyY2xlIGN4PSIxNy41IiBjeT0iMTAuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KICA8Y2lyY2xlIGN4PSI2LjUiIGN5PSIxMi41IiByPSIuNSIgZmlsbD0iY3VycmVudENvbG9yIiAvPgogIDxjaXJjbGUgY3g9IjguNSIgY3k9IjcuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/palette\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Palette = createLucideIcon('palette', __iconNode);\n\nexport default Palette;\n"],"names":[],"mappings":"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","ignoreList":[2]} \ No newline at end of file +{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/src/components/StoryWorkflow.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/workflow/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/palette.ts"],"sourcesContent":["'use client';\n\n\nimport React, { useState, useRef, useEffect, useCallback, useMemo } from 'react';\nimport { WorkflowData, PlotNode, PlotConnection, PlotNodeType, Entity, EntityType } from '@/lib/types';\nimport { Plus, Trash2, ArrowRight, BookOpen, MessageCircle, Zap, Palette, Save, Link2 } from 'lucide-react';\n\ninterface StoryWorkflowProps {\n data: WorkflowData;\n onUpdate: (data: WorkflowData) => void;\n entities: Entity[];\n onNavigateToEntity: (entityId: string) => void;\n}\n\nconst CARD_WIDTH = 260;\nconst CARD_HEIGHT = 220;\n\nconst INITIAL_COLORS = [\n '#ffffff', // White\n '#dbeafe', // Blue\n '#dcfce7', // Green\n '#fef9c3', // Yellow\n '#fee2e2', // Red\n '#f3e8ff', // Purple\n];\n\nconst renderTextWithLinks = (text: string, entities: Entity[], onNavigate: (id: string) => void) => {\n if (!text) return Description...;\n \n const parts: (string | React.ReactNode)[] = [text];\n \n entities.forEach(entity => {\n if (!entity.name) return;\n const regex = new RegExp(`(${entity.name})`, 'gi');\n \n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (typeof part === 'string') {\n const split = part.split(regex);\n if (split.length > 1) {\n const newParts = split.map((s, idx) => {\n if (s.toLowerCase() === entity.name.toLowerCase()) {\n return (\n { e.stopPropagation(); onNavigate(entity.id); }}\n className=\"text-indigo-600 hover:text-indigo-800 underline decoration-indigo-300 hover:decoration-indigo-600 cursor-pointer font-medium bg-indigo-50 px-0.5 rounded transition-all\"\n title={`Voir la fiche de ${entity.name}`}\n >\n {s}\n \n );\n }\n return s;\n });\n parts.splice(i, 1, ...newParts);\n i += newParts.length - 1;\n }\n }\n }\n });\n\n return <>{parts};\n};\n\ninterface StoryNodeProps {\n node: PlotNode;\n isSelected: boolean;\n isEditing: boolean;\n activeColorPickerId: string | null;\n entities: Entity[];\n savedColors: string[];\n \n onMouseDown: (e: React.MouseEvent, id: string) => void;\n onMouseUp: (e: React.MouseEvent, id: string) => void;\n onStartConnection: (e: React.MouseEvent, id: string) => void;\n onUpdate: (id: string, updates: Partial) => void;\n onSetEditing: (id: string | null) => void;\n onToggleColorPicker: (id: string) => void;\n onSaveColor: (color: string) => void;\n onNavigateToEntity: (id: string) => void;\n \n onInputFocus: (e: React.FocusEvent) => void;\n onInputCheckAutocomplete: (e: React.ChangeEvent, id: string, field: 'title'|'description') => void;\n onKeyDownInInput: (e: React.KeyboardEvent, id: string) => void;\n}\n\nconst StoryNode = React.memo(({ \n node, isSelected, isEditing, activeColorPickerId, entities, savedColors,\n onMouseDown, onMouseUp, onStartConnection, onUpdate, onSetEditing, \n onToggleColorPicker, onSaveColor, onNavigateToEntity, \n onInputFocus, onInputCheckAutocomplete, onKeyDownInInput\n}: StoryNodeProps) => {\n\n const [showTypePicker, setShowTypePicker] = useState(false);\n\n const richDescription = useMemo(() => {\n return renderTextWithLinks(node.description, entities, onNavigateToEntity);\n }, [node.description, entities, onNavigateToEntity]);\n\n return (\n onMouseDown(e, node.id)}\n onMouseUp={(e) => onMouseUp(e, node.id)}\n onMouseLeave={() => setShowTypePicker(false)}\n >\n
\n\n
\n
\n {isEditing ? (\n onUpdate(node.id, { title: e.target.value })}\n onFocus={onInputFocus}\n autoFocus\n />\n ) : (\n
onSetEditing(node.id)}\n >\n {node.title}\n
\n )}\n\n \n\n {activeColorPickerId === node.id && (\n
e.stopPropagation()}>\n
\n {savedColors.map(color => (\n
\n
\n
\n onUpdate(node.id, { color: e.target.value })}\n />\n
\n \n
\n
\n )}\n
\n\n
\n {isEditing ? (\n onInputCheckAutocomplete(e, node.id, 'description')}\n onKeyDown={(e) => onKeyDownInInput(e, node.id)}\n onFocus={onInputFocus}\n onBlur={() => onSetEditing(null)}\n />\n ) : (\n
onSetEditing(node.id)}\n >\n {richDescription}\n
\n )}\n
\n\n
\n {showTypePicker && (\n
e.stopPropagation()}>\n { e.stopPropagation(); onUpdate(node.id, { type: 'story' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-slate-100 ${node.type === 'story' ? 'bg-indigo-50 ring-1 ring-indigo-200' : ''}`}\n title=\"Narration\"\n >\n \n \n { e.stopPropagation(); onUpdate(node.id, { type: 'action' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-amber-50 ${node.type === 'action' ? 'bg-amber-50 ring-1 ring-amber-200' : ''}`}\n title=\"Action\"\n >\n \n \n { e.stopPropagation(); onUpdate(node.id, { type: 'dialogue' }); setShowTypePicker(false); }}\n className={`p-1.5 rounded hover:bg-blue-50 ${node.type === 'dialogue' ? 'bg-blue-50 ring-1 ring-blue-200' : ''}`}\n title=\"Dialogue\"\n >\n \n \n
\n )}\n\n { e.stopPropagation(); setShowTypePicker(!showTypePicker); }}\n >\n {node.type === 'story' && }\n {node.type === 'action' && }\n {node.type === 'dialogue' && }\n \n
\n
\n\n onStartConnection(e, node.id)}\n >\n \n \n
\n );\n}, (prev, next) => {\n return (\n prev.node === next.node && \n prev.isSelected === next.isSelected &&\n prev.isEditing === next.isEditing &&\n prev.activeColorPickerId === next.activeColorPickerId &&\n prev.entities === next.entities\n );\n});\n\ninterface SuggestionState {\n active: boolean;\n trigger: string;\n query: string;\n nodeId: string;\n field: 'title' | 'description';\n cursorIndex: number;\n selectedIndex: number;\n filteredEntities: Entity[];\n}\n\nconst StoryWorkflow: React.FC = ({ data, onUpdate, entities, onNavigateToEntity }) => {\n const containerRef = useRef(null);\n const rafRef = useRef(null);\n \n const [internalNodes, setInternalNodes] = useState(data.nodes);\n const internalNodesRef = useRef(internalNodes);\n useEffect(() => { internalNodesRef.current = internalNodes; }, [internalNodes]);\n\n useEffect(() => {\n setInternalNodes(data.nodes);\n }, [data.nodes]);\n\n useEffect(() => {\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n };\n }, []);\n\n const [activeSuggestion, setActiveSuggestion] = useState(null);\n const [selectedNodeIds, setSelectedNodeIds] = useState>(new Set());\n const [savedColors, setSavedColors] = useState(INITIAL_COLORS);\n const [activeColorPickerId, setActiveColorPickerId] = useState(null);\n const [editingNodeId, setEditingNodeId] = useState(null);\n const [history, setHistory] = useState([]);\n \n const [isDragging, setIsDragging] = useState(false);\n const [dragStartPositions, setDragStartPositions] = useState>(new Map());\n const [dragStartMouse, setDragStartMouse] = useState({ x: 0, y: 0 });\n\n const [connectingNodeId, setConnectingNodeId] = useState(null);\n const [mousePos, setMousePos] = useState({ x: 0, y: 0 });\n\n const [isPanning, setIsPanning] = useState(false);\n const [panStart, setPanStart] = useState({ x: 0, y: 0 });\n const [scrollStart, setScrollStart] = useState({ x: 0, y: 0 });\n\n const pushHistory = useCallback(() => {\n setHistory(prev => {\n const newHistory = [...prev, data];\n if (newHistory.length > 20) return newHistory.slice(newHistory.length - 20);\n return newHistory;\n });\n }, [data]);\n\n const updateNode = useCallback((id: string, updates: Partial) => {\n const currentNodes = internalNodesRef.current;\n onUpdate({\n ...data,\n nodes: currentNodes.map(n => n.id === id ? { ...n, ...updates } : n)\n });\n }, [data, onUpdate]);\n\n const handleInputFocus = useCallback((e: React.FocusEvent) => {\n e.stopPropagation();\n }, []);\n\n const handleInputWithAutocomplete = useCallback((\n e: React.ChangeEvent, \n nodeId: string, \n field: 'title' | 'description'\n ) => {\n const val = e.target.value;\n updateNode(nodeId, { [field]: val });\n \n const cursor = e.target.selectionStart || 0;\n const textBeforeCursor = val.slice(0, cursor);\n const match = textBeforeCursor.match(/([@#^])([^@#^\\s]*)$/);\n\n if (match) {\n const trigger = match[1];\n const query = match[2].toLowerCase();\n const targetType = trigger === '@' ? EntityType.CHARACTER : trigger === '#' ? EntityType.LOCATION : EntityType.OBJECT;\n const filtered = entities.filter(ent => \n ent.type === targetType && \n ent.name.toLowerCase().includes(query)\n );\n\n setActiveSuggestion({\n active: true,\n trigger,\n query,\n nodeId,\n field,\n cursorIndex: cursor,\n selectedIndex: 0,\n filteredEntities: filtered\n });\n } else {\n setActiveSuggestion(null);\n }\n }, [updateNode, entities]);\n\n const insertEntity = (entity: Entity) => {\n if (!activeSuggestion) return;\n const { nodeId, field, trigger, query } = activeSuggestion;\n const node = internalNodesRef.current.find(n => n.id === nodeId);\n if (!node) return;\n const currentText = node[field] as string;\n const cursor = activeSuggestion.cursorIndex;\n const insertionLength = trigger.length + query.length;\n const startIdx = cursor - insertionLength;\n if (startIdx < 0) return;\n const before = currentText.slice(0, startIdx);\n const after = currentText.slice(cursor);\n const isDialogue = node.type === 'dialogue' && activeSuggestion.trigger === '@';\n const suffix = isDialogue ? \": \" : \" \";\n updateNode(nodeId, { [field]: before + entity.name + suffix + after });\n setActiveSuggestion(null);\n };\n\n const handleKeyDownInInput = useCallback((e: React.KeyboardEvent, nodeId: string) => {\n if (activeSuggestion && activeSuggestion.nodeId === nodeId) {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex + 1) % prev.filteredEntities.length } : null);\n return;\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex - 1 + prev.filteredEntities.length) % prev.filteredEntities.length } : null);\n return;\n } else if (e.key === 'Tab' || e.key === 'Enter') {\n e.preventDefault();\n if (activeSuggestion.filteredEntities.length > 0) {\n insertEntity(activeSuggestion.filteredEntities[activeSuggestion.selectedIndex]);\n } else {\n setActiveSuggestion(null); \n }\n return;\n } else if (e.key === 'Escape') {\n setActiveSuggestion(null);\n return;\n }\n }\n }, [activeSuggestion, entities, updateNode]);\n\n const handleNodeMouseDown = useCallback((e: React.MouseEvent, nodeId: string) => {\n e.stopPropagation(); \n setActiveColorPickerId(null);\n\n setSelectedNodeIds(prevSelected => {\n const newSelection = new Set(prevSelected);\n if (e.ctrlKey) {\n if (newSelection.has(nodeId)) newSelection.delete(nodeId);\n else newSelection.add(nodeId);\n } else {\n if (!newSelection.has(nodeId)) {\n newSelection.clear();\n newSelection.add(nodeId);\n }\n }\n const finalDragIds = e.ctrlKey ? newSelection : (newSelection.has(nodeId) ? newSelection : new Set([nodeId]));\n const startPositions = new Map();\n internalNodesRef.current.forEach(n => {\n if (finalDragIds.has(n.id)) {\n startPositions.set(n.id, { x: n.x, y: n.y });\n }\n });\n setDragStartPositions(startPositions);\n return newSelection;\n });\n\n setIsDragging(true);\n setDragStartMouse({ x: e.clientX, y: e.clientY });\n pushHistory();\n }, [pushHistory]);\n\n const startConnection = useCallback((e: React.MouseEvent, nodeId: string) => {\n e.stopPropagation();\n pushHistory();\n setConnectingNodeId(nodeId);\n }, [pushHistory]);\n\n const finishConnection = useCallback((e: React.MouseEvent, targetId: string) => {\n if (connectingNodeId && connectingNodeId !== targetId) {\n const exists = data.connections.some(c => c.source === connectingNodeId && c.target === targetId);\n if (!exists) {\n const newConn: PlotConnection = {\n id: `conn-${Date.now()}`,\n source: connectingNodeId,\n target: targetId\n };\n onUpdate({\n ...data,\n nodes: internalNodesRef.current,\n connections: [...data.connections, newConn]\n });\n }\n }\n setConnectingNodeId(null);\n }, [data, onUpdate, connectingNodeId]);\n\n const handleToggleColorPicker = useCallback((id: string) => {\n setActiveColorPickerId(prev => prev === id ? null : id);\n }, []);\n\n const handleSaveColor = useCallback((color: string) => {\n setSavedColors(prev => !prev.includes(color) ? [...prev, color] : prev);\n }, []);\n\n const handleMouseMove = (e: React.MouseEvent) => {\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect) return;\n const clientX = e.clientX;\n const clientY = e.clientY;\n\n if (isPanning && containerRef.current) {\n const dx = clientX - panStart.x;\n const dy = clientY - panStart.y;\n containerRef.current.scrollLeft = scrollStart.x - dx;\n containerRef.current.scrollTop = scrollStart.y - dy;\n return;\n }\n\n const scrollLeft = containerRef.current?.scrollLeft || 0;\n const scrollTop = containerRef.current?.scrollTop || 0;\n setMousePos({ x: clientX - rect.left + scrollLeft, y: clientY - rect.top + scrollTop });\n\n if (isDragging) {\n if (rafRef.current) return;\n rafRef.current = requestAnimationFrame(() => {\n const dx = clientX - dragStartMouse.x;\n const dy = clientY - dragStartMouse.y;\n setInternalNodes(prevNodes => prevNodes.map(node => {\n const startPos = dragStartPositions.get(node.id);\n if (startPos) return { ...node, x: startPos.x + dx, y: startPos.y + dy };\n return node;\n }));\n rafRef.current = null;\n });\n }\n };\n\n const handleMouseUp = () => {\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n if (isDragging) onUpdate({ ...data, nodes: internalNodesRef.current });\n setIsDragging(false);\n setIsPanning(false);\n setConnectingNodeId(null);\n };\n\n const handleCanvasMouseDown = (e: React.MouseEvent) => {\n if (!e.ctrlKey) setSelectedNodeIds(new Set());\n setActiveSuggestion(null); \n setActiveColorPickerId(null); \n setEditingNodeId(null); \n setIsPanning(true);\n setPanStart({ x: e.clientX, y: e.clientY });\n if (containerRef.current) {\n setScrollStart({ x: containerRef.current.scrollLeft, y: containerRef.current.scrollTop });\n }\n };\n\n const handleCanvasDoubleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect) return;\n const x = e.clientX - rect.left + (containerRef.current?.scrollLeft || 0) - CARD_WIDTH / 2;\n const y = e.clientY - rect.top + (containerRef.current?.scrollTop || 0) - CARD_HEIGHT / 2;\n pushHistory();\n const newNode: PlotNode = {\n id: `node-${Date.now()}`,\n x,\n y,\n title: 'Nouvel événement',\n description: '',\n color: INITIAL_COLORS[0],\n type: 'story'\n };\n onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] });\n setSelectedNodeIds(new Set([newNode.id]));\n setEditingNodeId(newNode.id);\n };\n\n const handleDeleteSelected = () => {\n if (selectedNodeIds.size === 0) return;\n pushHistory();\n const newNodes = internalNodes.filter(n => !selectedNodeIds.has(n.id));\n const newConnections = data.connections.filter(c => !selectedNodeIds.has(c.source) && !selectedNodeIds.has(c.target));\n onUpdate({ nodes: newNodes, connections: newConnections });\n setSelectedNodeIds(new Set());\n };\n\n const handleAddNodeCenter = () => {\n pushHistory();\n const scrollLeft = containerRef.current?.scrollLeft || 0;\n const scrollTop = containerRef.current?.scrollTop || 0;\n const clientWidth = containerRef.current?.clientWidth || 800;\n const clientHeight = containerRef.current?.clientHeight || 600;\n const newNode: PlotNode = {\n id: `node-${Date.now()}`,\n x: scrollLeft + clientWidth / 2 - CARD_WIDTH / 2,\n y: scrollTop + clientHeight / 2 - CARD_HEIGHT / 2,\n title: 'Nouveau point d\\'intrigue',\n description: '',\n color: INITIAL_COLORS[0],\n type: 'story'\n };\n onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] });\n setSelectedNodeIds(new Set([newNode.id]));\n setEditingNodeId(newNode.id);\n };\n\n return (\n
\n
\n
\n \n
\n
\n {selectedNodeIds.size > 0 ? `${selectedNodeIds.size} SÉLECTIONNÉ(S)` : 'Double-cliquez sur le canvas pour créer'}\n
\n
\n
\n \n
\n
\n\n
\n \n {data.connections.map(conn => {\n const source = internalNodes.find(n => n.id === conn.source); \n const target = internalNodes.find(n => n.id === conn.target); \n if (!source || !target) return null;\n const startX = source.x + CARD_WIDTH / 2;\n const startY = source.y + CARD_HEIGHT / 2;\n const endX = target.x + CARD_WIDTH / 2;\n const endY = target.y + CARD_HEIGHT / 2;\n return (\n \n );\n })}\n {connectingNodeId && (\n n.id === connectingNodeId)?.x || 0) + CARD_WIDTH/2}\n y1={(internalNodes.find(n => n.id === connectingNodeId)?.y || 0) + CARD_HEIGHT/2}\n x2={mousePos.x} y2={mousePos.y}\n stroke=\"#6366f1\" strokeWidth=\"2\" strokeDasharray=\"5,5\" markerEnd=\"url(#arrowhead-blue)\"\n />\n )}\n \n \n \n \n \n \n \n \n \n\n {internalNodes.map(node => (\n \n ))}\n
\n\n {activeSuggestion && (\n
\n
\n Insérer {activeSuggestion.trigger === '@' ? 'Personnage' : activeSuggestion.trigger === '#' ? 'Lieu' : 'Objet'}\n
\n
\n {activeSuggestion.filteredEntities.length > 0 ? (\n activeSuggestion.filteredEntities.map((ent, idx) => (\n insertEntity(ent)}\n >\n {ent.name}\n \n ))\n ) : (\n
Aucun résultat
\n )}\n
\n
\n )}\n
\n );\n};\n\nexport default StoryWorkflow;\n","'use client';\r\n\r\nimport StoryWorkflow from '@/components/StoryWorkflow';\r\nimport { useProjectContext } from '@/providers/ProjectProvider';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function WorkflowPage() {\r\n const { project, projectId, updateProject } = useProjectContext();\r\n const router = useRouter();\r\n\r\n return (\r\n updateProject({ workflow })}\r\n entities={project.entities || []}\r\n onNavigateToEntity={() => router.push(`/project/${projectId}/world`)}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z',\n key: 'e79jfc',\n },\n ],\n ['circle', { cx: '13.5', cy: '6.5', r: '.5', fill: 'currentColor', key: '1okk4w' }],\n ['circle', { cx: '17.5', cy: '10.5', r: '.5', fill: 'currentColor', key: 'f64h9f' }],\n ['circle', { cx: '6.5', cy: '12.5', r: '.5', fill: 'currentColor', key: 'qy21gx' }],\n ['circle', { cx: '8.5', cy: '7.5', r: '.5', fill: 'currentColor', key: 'fotxhn' }],\n];\n\n/**\n * @component @name Palette\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMjJhMSAxIDAgMCAxIDAtMjAgMTAgOSAwIDAgMSAxMCA5IDUgNSAwIDAgMS01IDVoLTIuMjVhMS43NSAxLjc1IDAgMCAwLTEuNCAyLjhsLjMuNGExLjc1IDEuNzUgMCAwIDEtMS40IDIuOHoiIC8+CiAgPGNpcmNsZSBjeD0iMTMuNSIgY3k9IjYuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KICA8Y2lyY2xlIGN4PSIxNy41IiBjeT0iMTAuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KICA8Y2lyY2xlIGN4PSI2LjUiIGN5PSIxMi41IiByPSIuNSIgZmlsbD0iY3VycmVudENvbG9yIiAvPgogIDxjaXJjbGUgY3g9IjguNSIgY3k9IjcuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/palette\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Palette = createLucideIcon('palette', __iconNode);\n\nexport default Palette;\n"],"names":[],"mappings":"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","ignoreList":[2]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_world_page_tsx_ca59acbb._.js b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_world_page_tsx_ca59acbb._.js index 42f52ab..7ba78e3 100644 --- a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_world_page_tsx_ca59acbb._.js +++ b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_world_page_tsx_ca59acbb._.js @@ -1,3 +1,3 @@ -module.exports=[85105,a=>{"use strict";var b=a.i(78352),c=a.i(28091),d=a.i(37620),e=a.i(33782),f=a.i(46451),g=a.i(98205),h=a.i(40400),i=a.i(806),j=a.i(82772),k=a.i(29892);let l=(0,k.default)("brain",[["path",{d:"M12 18V5",key:"adv99a"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4",key:"1e3is1"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5",key:"1gqd8o"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77",key:"iwvgf7"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464",key:"efp6ie"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517",key:"1gq6am"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464",key:"k1g0md"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77",key:"q97ue3"}]]),m=(0,k.default)("ruler",[["path",{d:"M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.41 2.41 0 0 1 0-3.4l2.6-2.6a2.41 2.41 0 0 1 3.4 0Z",key:"icamh8"}],["path",{d:"m14.5 12.5 2-2",key:"inckbg"}],["path",{d:"m11.5 9.5 2-2",key:"fmmyf7"}],["path",{d:"m8.5 6.5 2-2",key:"vc6u1g"}],["path",{d:"m17.5 15.5 2-2",key:"wo5hmg"}]]);var n=a.i(20769),o=a.i(75108),p=a.i(35165),q=a.i(68239);let r={age:30,height:175,hair:"Brun",eyes:"Marron",archetype:"Le Héros",role:"support",personality:{spectrumIntrovertExtravert:50,spectrumEmotionalRational:50,spectrumChaoticLawful:50},physicalQuirk:"",behavioralQuirk:""},s=({entities:a,onCreate:k,onUpdate:s,onDelete:t,templates:u,onUpdateTemplates:v,initialSelectedId:w})=>{let x,[y,z]=(0,c.useState)(null),[A,B]=(0,c.useState)(null),[C,D]=(0,c.useState)("entities"),[E,F]=(0,c.useState)(d.EntityType.CHARACTER);(0,c.useEffect)(()=>{if(w){let b=a.find(a=>a.id===w);b&&(H(b),D("entities"))}},[w,a]);let G=(0,c.useMemo)(()=>{let b=a.filter(a=>a.type===d.EntityType.CHARACTER&&a.attributes?.archetype).map(a=>a.attributes.archetype);return Array.from(new Set([...q.ARCHETYPES,...b])).sort()},[a]),H=a=>{let b={...a};a.type!==d.EntityType.CHARACTER||a.attributes||(b.attributes={...r}),a.customValues||(b.customValues={}),B(b),z(a.id)},I=async()=>{if(A&&A.name){if("NEW"===y){let{id:a,...b}=A;await k(b)}else s(A.id,A);z(null),B(null)}},J=(a,b)=>{A&&A.attributes&&B({...A,attributes:{...A.attributes,[a]:b}})},K=(a,b)=>{A&&A.attributes&&B({...A,attributes:{...A.attributes,personality:{...A.attributes.personality,[a]:b}}})},L=(a,b)=>{A&&B({...A,customValues:{...A.customValues,[a]:b}})},M=(a,b,c)=>{v(u.map(d=>d.entityType!==a?d:{...d,fields:d.fields.map(a=>a.id===b?{...a,...c}:a)}))},N=b=>a.filter(a=>a.type===b);if("templates"===C){let a;return(0,b.jsxs)("div",{className:"flex h-full gap-6 p-6 bg-[#eef2ff]",children:[(0,b.jsx)("div",{className:"w-1/3 opacity-50 pointer-events-none filter blur-[1px]",children:(0,b.jsxs)("div",{className:"bg-white rounded-lg p-6 shadow-sm border border-slate-200",children:[(0,b.jsx)("h3",{className:"font-bold text-slate-700 mb-4",children:"Aperçu Fiches"}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("div",{className:"h-10 bg-indigo-50 rounded"}),(0,b.jsx)("div",{className:"h-10 bg-indigo-50 rounded"}),(0,b.jsx)("div",{className:"h-10 bg-indigo-50 rounded"})]})]})}),(a=u.find(a=>a.entityType===E)||{entityType:E,fields:[]},(0,b.jsxs)("div",{className:"flex-1 bg-white rounded-xl shadow-lg border border-slate-200 p-8 overflow-y-auto",children:[(0,b.jsxs)("div",{className:"flex justify-between items-start mb-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("h2",{className:"text-2xl font-bold text-slate-800 flex items-center gap-2",children:[(0,b.jsx)(o.Layout,{size:24,className:"text-indigo-600"})," Éditeur de Modèles"]}),(0,b.jsx)("p",{className:"text-slate-500 text-sm mt-1",children:"Configurez les champs personnalisés pour chaque type de fiche."})]}),(0,b.jsx)("button",{onClick:()=>D("entities"),className:"p-2 text-slate-500 hover:bg-slate-100 rounded-full",children:(0,b.jsx)(h.X,{size:20})})]}),(0,b.jsx)("div",{className:"flex gap-2 mb-8 border-b border-slate-200 pb-1",children:Object.values(d.EntityType).map(a=>(0,b.jsx)("button",{onClick:()=>F(a),className:`px-4 py-2 text-sm font-medium rounded-t-lg transition-colors ${E===a?"bg-indigo-50 text-indigo-700 border-b-2 border-indigo-600":"text-slate-500 hover:text-slate-800 hover:bg-slate-50"}`,children:a},a))}),(0,b.jsxs)("div",{className:"space-y-4",children:[a.fields.map((a,c)=>(0,b.jsxs)("div",{className:"bg-[#eef2ff] border border-indigo-100 rounded-lg p-4 flex gap-4 items-start group",children:[(0,b.jsxs)("div",{className:"flex-1 grid grid-cols-2 gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Nom du champ"}),(0,b.jsx)("input",{type:"text",value:a.label,onChange:b=>M(E,a.id,{label:b.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Type"}),(0,b.jsxs)("select",{value:a.type,onChange:b=>M(E,a.id,{type:b.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",children:[(0,b.jsx)("option",{value:"text",children:"Texte court"}),(0,b.jsx)("option",{value:"textarea",children:"Texte long"}),(0,b.jsx)("option",{value:"number",children:"Nombre"}),(0,b.jsx)("option",{value:"boolean",children:"Case à cocher"}),(0,b.jsx)("option",{value:"select",children:"Liste déroulante"})]})]}),"select"===a.type&&(0,b.jsxs)("div",{className:"col-span-2",children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Options (séparées par des virgules)"}),(0,b.jsx)("input",{type:"text",value:a.options?.join(",")||"",onChange:b=>M(E,a.id,{options:b.target.value.split(",").map(a=>a.trim())}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",placeholder:"Option A, Option B, Option C"})]})]}),(0,b.jsx)("button",{onClick:()=>{var b;return b=a.id,void v(u.map(a=>a.entityType!==E?a:{...a,fields:a.fields.filter(a=>a.id!==b)}))},className:"p-2 text-slate-400 hover:text-red-600 hover:bg-red-50 rounded mt-5",children:(0,b.jsx)(f.Trash2,{size:16})})]},a.id)),(0,b.jsxs)("button",{onClick:()=>{let a,b;return a={id:`field-${Date.now()}`,label:"Nouveau Champ",type:"text",placeholder:""},void(!(b=u.map(b=>b.entityType===E?{...b,fields:[...b.fields,a]}:b)).some(a=>a.entityType===E)&&b.push({entityType:E,fields:[a]}),v(b))},className:"w-full py-3 border-2 border-dashed border-slate-300 rounded-lg text-slate-500 hover:border-indigo-400 hover:text-indigo-600 hover:bg-indigo-50 transition-all flex items-center justify-center gap-2",children:[(0,b.jsx)(e.Plus,{size:20})," Ajouter un champ"]})]})]}))]})}return(0,b.jsxs)("div",{className:"flex h-full gap-6 p-6 bg-[#eef2ff]",children:[(0,b.jsxs)("div",{className:"w-1/3 flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center px-1",children:[(0,b.jsx)("h2",{className:"text-lg font-bold text-slate-700",children:"Explorateur"}),(0,b.jsxs)("button",{onClick:()=>D("templates"),className:"flex items-center gap-1.5 px-3 py-1.5 bg-indigo-100 text-indigo-700 hover:bg-indigo-200 rounded text-xs font-medium transition-colors",title:"Gérer les modèles de fiches",children:[(0,b.jsx)(n.Settings,{size:14})," Modèles"]})]}),(0,b.jsx)("div",{className:"space-y-6 overflow-y-auto pr-2 pb-4 flex-1",children:Object.values(d.EntityType).map(a=>(0,b.jsxs)("div",{className:"bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden",children:[(0,b.jsxs)("div",{className:"bg-indigo-50 p-3 border-b border-indigo-100 flex justify-between items-center",children:[(0,b.jsxs)("h3",{className:"font-semibold text-slate-700 flex items-center gap-2",children:[(0,b.jsx)("span",{children:q.ENTITY_ICONS[a]})," ",a,"s"]}),(0,b.jsx)("button",{onClick:()=>{B({id:Date.now().toString(),type:a,name:"",description:"",details:"",storyContext:"",attributes:a===d.EntityType.CHARACTER?{...r}:void 0,customValues:{}}),z("NEW")},className:"p-1 hover:bg-indigo-100 rounded text-indigo-600 transition-colors",children:(0,b.jsx)(e.Plus,{size:16})})]}),(0,b.jsxs)("div",{className:"divide-y divide-slate-100",children:[0===N(a).length&&(0,b.jsx)("p",{className:"p-4 text-sm text-slate-400 italic text-center",children:"Aucun élément"}),N(a).map(a=>(0,b.jsxs)("div",{onClick:()=>H(a),className:`p-3 cursor-pointer hover:bg-blue-50 transition-colors flex justify-between group ${y===a.id?"bg-blue-50 border-l-4 border-blue-500":""}`,children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"font-medium text-slate-800",children:a.name}),(0,b.jsx)("div",{className:"text-xs text-slate-500 truncate",children:a.description})]}),(0,b.jsx)("button",{onClick:b=>{var c;b.stopPropagation(),c=a.id,confirm("Supprimer cet élément ?")&&(t(c),y===c&&(z(null),B(null)))},className:"opacity-0 group-hover:opacity-100 text-red-400 hover:text-red-600 transition-opacity",children:(0,b.jsx)(f.Trash2,{size:14})})]},a.id))]})]},a))})]}),(0,b.jsx)("div",{className:"flex-1 bg-white rounded-xl shadow-lg border border-slate-200 p-8 overflow-y-auto",children:y&&A?(0,b.jsxs)("div",{className:"space-y-6 animate-in fade-in duration-200",children:[(0,b.jsxs)("div",{className:"flex justify-between items-start",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("span",{className:`inline-block px-2 py-1 rounded text-xs font-bold uppercase tracking-wider ${q.ENTITY_COLORS[A.type]}`,children:A.type}),(0,b.jsx)("h2",{className:"text-2xl font-bold text-slate-800",children:A.type===d.EntityType.CHARACTER?"Fiche Personnage":"Édition de la fiche"})]}),(0,b.jsx)("div",{className:"flex gap-2",children:(0,b.jsx)("button",{onClick:()=>z(null),className:"p-2 text-slate-500 hover:bg-slate-100 rounded-full",children:(0,b.jsx)(h.X,{size:20})})})]}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-medium text-slate-700 mb-1",children:"Nom"}),(0,b.jsx)("input",{type:"text",value:A.name,onChange:a=>B({...A,name:a.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none font-serif text-lg",placeholder:"Ex: Gandalf le Gris"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-medium text-slate-700 mb-1",children:"Description Courte (pour l'IA)"}),(0,b.jsx)("textarea",{value:A.description,onChange:a=>B({...A,description:a.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-20",placeholder:"Un magicien puissant qui guide la communauté..."})]}),A.type===d.EntityType.CHARACTER&&(()=>{if(!A?.attributes)return null;let a=A.attributes;return(0,b.jsxs)("div",{className:"space-y-8 border-t border-slate-100 pt-6 mt-4",children:[(0,b.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100",children:[(0,b.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,b.jsx)(j.User,{size:16})," Identité Narrative"]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-2",children:"Archétype"}),(0,b.jsx)("input",{type:"text",list:"archetype-suggestions",value:a.archetype,onChange:a=>J("archetype",a.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-blue-500",placeholder:"Ex: Le Héros, Le Sage..."}),(0,b.jsx)("datalist",{id:"archetype-suggestions",children:G.map(a=>(0,b.jsx)("option",{value:a},a))})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-2",children:"Rôle dans l'histoire"}),(0,b.jsx)("div",{className:"flex gap-2 flex-wrap",children:[{val:"protagonist",label:"Protagoniste"},{val:"antagonist",label:"Antagoniste"},{val:"support",label:"Secondaire"},{val:"extra",label:"Figurant"}].map(c=>(0,b.jsxs)("label",{className:`cursor-pointer px-3 py-1.5 rounded text-xs border transition-colors ${a.role===c.val?"bg-indigo-100 border-indigo-300 text-indigo-700 font-bold":"bg-[#eef2ff] border-slate-200 text-slate-600 hover:bg-slate-100"}`,children:[(0,b.jsx)("input",{type:"radio",name:"role",value:c.val,checked:a.role===c.val,onChange:()=>J("role",c.val),className:"hidden"}),c.label]},c.val))})]})]})]}),(0,b.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100",children:[(0,b.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,b.jsx)(m,{size:16})," Apparence Physique"]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"flex justify-between text-xs mb-1",children:(0,b.jsx)("label",{className:"font-semibold text-slate-600",children:"Âge (ans)"})}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)("input",{type:"range",min:"1",max:"100",value:Math.min(a.age,100),onChange:a=>J("age",parseInt(a.target.value)),className:"flex-1 h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"}),(0,b.jsx)("input",{type:"number",value:a.age,onChange:a=>J("age",parseInt(a.target.value)),className:"w-20 p-1 text-right text-sm border border-slate-300 rounded font-mono text-indigo-700 bg-[#eef2ff] focus:border-indigo-500 outline-none"})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"flex justify-between text-xs mb-1",children:(0,b.jsx)("label",{className:"font-semibold text-slate-600",children:"Taille (cm)"})}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)("input",{type:"range",min:"50",max:"250",value:Math.min(a.height,250),onChange:a=>J("height",parseInt(a.target.value)),className:"flex-1 h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"}),(0,b.jsx)("input",{type:"number",value:a.height,onChange:a=>J("height",parseInt(a.target.value)),className:"w-20 p-1 text-right text-sm border border-slate-300 rounded font-mono text-indigo-700 bg-[#eef2ff] focus:border-indigo-500 outline-none"})]})]})]}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Cheveux"}),(0,b.jsx)("select",{value:a.hair,onChange:a=>J("hair",a.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",children:q.HAIR_COLORS.map(a=>(0,b.jsx)("option",{value:a,children:a},a))})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Yeux"}),(0,b.jsx)("select",{value:a.eyes,onChange:a=>J("eyes",a.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",children:q.EYE_COLORS.map(a=>(0,b.jsx)("option",{value:a,children:a},a))})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Signe distinctif"}),(0,b.jsx)("input",{type:"text",value:a.physicalQuirk,onChange:a=>J("physicalQuirk",a.target.value),placeholder:"Cicatrice, tatouage...",className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400"})]})]})]})]}),(0,b.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100",children:[(0,b.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,b.jsx)(l,{size:16})," Psychologie & Comportement"]}),(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsxs)("div",{className:"space-y-4 px-2",children:[(0,b.jsxs)("div",{className:"relative pt-1",children:[(0,b.jsxs)("div",{className:"flex justify-between text-[10px] uppercase font-bold text-slate-500 mb-1",children:[(0,b.jsx)("span",{children:"Introverti"}),(0,b.jsx)("span",{children:"Extraverti"})]}),(0,b.jsx)("input",{type:"range",min:"0",max:"100",value:a.personality.spectrumIntrovertExtravert,onChange:a=>K("spectrumIntrovertExtravert",parseInt(a.target.value)),className:"w-full h-2 bg-gradient-to-r from-slate-300 via-indigo-200 to-slate-300 rounded-lg appearance-none cursor-pointer accent-indigo-600"})]}),(0,b.jsxs)("div",{className:"relative pt-1",children:[(0,b.jsxs)("div",{className:"flex justify-between text-[10px] uppercase font-bold text-slate-500 mb-1",children:[(0,b.jsx)("span",{children:"Émotionnel"}),(0,b.jsx)("span",{children:"Rationnel"})]}),(0,b.jsx)("input",{type:"range",min:"0",max:"100",value:a.personality.spectrumEmotionalRational,onChange:a=>K("spectrumEmotionalRational",parseInt(a.target.value)),className:"w-full h-2 bg-gradient-to-r from-red-200 via-purple-200 to-blue-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"})]}),(0,b.jsxs)("div",{className:"relative pt-1",children:[(0,b.jsxs)("div",{className:"flex justify-between text-[10px] uppercase font-bold text-slate-500 mb-1",children:[(0,b.jsx)("span",{children:"Chaotique"}),(0,b.jsx)("span",{children:"Loyal"})]}),(0,b.jsx)("input",{type:"range",min:"0",max:"100",value:a.personality.spectrumChaoticLawful,onChange:a=>K("spectrumChaoticLawful",parseInt(a.target.value)),className:"w-full h-2 bg-gradient-to-r from-orange-200 via-yellow-100 to-green-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"})]})]}),(0,b.jsxs)("div",{className:"border-t border-slate-200 pt-4",children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Toc ou habitude comportementale"}),(0,b.jsx)("input",{type:"text",value:a.behavioralQuirk,onChange:a=>J("behavioralQuirk",a.target.value),placeholder:"Joue avec sa bague, bégaie quand il ment...",className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400"})]})]})]})]})})(),(x=u.find(a=>a.entityType===A?.type))&&0!==x.fields.length?(0,b.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100 mt-6",children:[(0,b.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,b.jsx)(p.List,{size:16})," Champs Personnalisés"]}),(0,b.jsx)("div",{className:"grid grid-cols-1 gap-4",children:x.fields.map(a=>{let c=A?.customValues?.[a.id]??"";return(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:a.label}),"textarea"===a.type?(0,b.jsx)("textarea",{value:c,onChange:b=>L(a.id,b.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400",placeholder:a.placeholder}):"select"===a.type?(0,b.jsxs)("select",{value:c,onChange:b=>L(a.id,b.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400",children:[(0,b.jsx)("option",{value:"",children:"Sélectionner..."}),a.options?.map(a=>(0,b.jsx)("option",{value:a,children:a},a))]}):"boolean"===a.type?(0,b.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer",children:[(0,b.jsx)("input",{type:"checkbox",checked:!!c,onChange:b=>L(a.id,b.target.checked),className:"w-4 h-4 text-indigo-600 rounded border-slate-300 focus:ring-indigo-500"}),(0,b.jsx)("span",{className:"text-sm text-slate-700",children:"Activé / Oui"})]}):(0,b.jsx)("input",{type:"number"===a.type?"number":"text",value:c,onChange:b=>L(a.id,b.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400",placeholder:a.placeholder})]},a.id)})})]}):null,(0,b.jsxs)("div",{className:"mt-6 border-t border-slate-100 pt-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("label",{className:"block text-sm font-medium text-indigo-700 mb-1 flex items-center gap-2",children:[(0,b.jsx)(i.Sparkles,{size:14})," Contexte Narratif (Auto-généré)"]}),(0,b.jsx)("textarea",{value:A.storyContext||"",onChange:a=>B({...A,storyContext:a.target.value}),className:"w-full p-2 border border-indigo-200 bg-indigo-50 rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-24 italic text-slate-600",placeholder:"Les événements vécus par ce personnage apparaîtront ici..."})]}),(0,b.jsxs)("div",{className:"mt-4",children:[(0,b.jsx)("label",{className:"block text-sm font-medium text-slate-700 mb-1",children:"Notes & Biographie Complète"}),(0,b.jsx)("textarea",{value:A.details,onChange:a=>B({...A,details:a.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none h-48 font-serif",placeholder:"Histoire détaillée, secrets, origines..."})]})]}),(0,b.jsx)("div",{className:"pt-4 flex justify-end",children:(0,b.jsxs)("button",{onClick:I,className:"bg-blue-600 hover:bg-blue-700 text-white px-6 py-2 rounded-lg flex items-center gap-2 transition-colors shadow-md",children:[(0,b.jsx)(g.Save,{size:18}),"Enregistrer la fiche"]})})]})]}):(0,b.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-slate-400",children:[(0,b.jsx)("div",{className:"text-6xl mb-4 opacity-20",children:"🌍"}),(0,b.jsx)("p",{className:"text-lg",children:"Sélectionnez ou créez une fiche pour commencer."}),(0,b.jsx)("p",{className:"text-sm",children:"Ces informations aideront l'IA à rester cohérente."})]})})]})};var t=a.i(95121),u=a.i(3622),v=a.i(34896);function w(a){let{project:c,updateProject:d}=a,e=(0,v.useParams)();(0,v.useRouter)();let f=e.id,{user:g}=(0,t.useAuthContext)(),{createEntity:h,updateEntity:i,deleteEntity:j}=(0,u.useProjects)(g);return c?(0,b.jsx)(s,{entities:c.entities||[],onCreate:async a=>await h(f,a.type,a),onUpdate:(a,b)=>i(f,a,b),onDelete:a=>j(f,a),templates:c.templates||[],onUpdateTemplates:a=>d?.({templates:a}),initialSelectedId:null}):null}a.s(["default",()=>w],85105)}]; +module.exports=[85105,a=>{"use strict";var b=a.i(78352),c=a.i(28091),d=a.i(37620),e=a.i(33782),f=a.i(46451),g=a.i(98205),h=a.i(40400),i=a.i(806),j=a.i(82772),k=a.i(29892);let l=(0,k.default)("brain",[["path",{d:"M12 18V5",key:"adv99a"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4",key:"1e3is1"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5",key:"1gqd8o"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77",key:"iwvgf7"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464",key:"efp6ie"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517",key:"1gq6am"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464",key:"k1g0md"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77",key:"q97ue3"}]]),m=(0,k.default)("ruler",[["path",{d:"M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.41 2.41 0 0 1 0-3.4l2.6-2.6a2.41 2.41 0 0 1 3.4 0Z",key:"icamh8"}],["path",{d:"m14.5 12.5 2-2",key:"inckbg"}],["path",{d:"m11.5 9.5 2-2",key:"fmmyf7"}],["path",{d:"m8.5 6.5 2-2",key:"vc6u1g"}],["path",{d:"m17.5 15.5 2-2",key:"wo5hmg"}]]);var n=a.i(20769),o=a.i(75108),p=a.i(35165),q=a.i(68239);let r={age:30,height:175,hair:"Brun",eyes:"Marron",archetype:"Le Héros",role:"support",personality:{spectrumIntrovertExtravert:50,spectrumEmotionalRational:50,spectrumChaoticLawful:50},physicalQuirk:"",behavioralQuirk:""},s=({entities:a,onCreate:k,onUpdate:s,onDelete:t,templates:u,onUpdateTemplates:v,initialSelectedId:w})=>{let x,[y,z]=(0,c.useState)(null),[A,B]=(0,c.useState)(null),[C,D]=(0,c.useState)("entities"),[E,F]=(0,c.useState)(d.EntityType.CHARACTER);(0,c.useEffect)(()=>{if(w){let b=a.find(a=>a.id===w);b&&(H(b),D("entities"))}},[w,a]);let G=(0,c.useMemo)(()=>{let b=a.filter(a=>a.type===d.EntityType.CHARACTER&&a.attributes?.archetype).map(a=>a.attributes.archetype);return Array.from(new Set([...q.ARCHETYPES,...b])).sort()},[a]),H=a=>{let b={...a};a.type!==d.EntityType.CHARACTER||a.attributes||(b.attributes={...r}),a.customValues||(b.customValues={}),B(b),z(a.id)},I=async()=>{if(A&&A.name){if("NEW"===y){let{id:a,...b}=A;await k(b)}else s(A.id,A);z(null),B(null)}},J=(a,b)=>{A&&A.attributes&&B({...A,attributes:{...A.attributes,[a]:b}})},K=(a,b)=>{A&&A.attributes&&B({...A,attributes:{...A.attributes,personality:{...A.attributes.personality,[a]:b}}})},L=(a,b)=>{A&&B({...A,customValues:{...A.customValues,[a]:b}})},M=(a,b,c)=>{v(u.map(d=>d.entityType!==a?d:{...d,fields:d.fields.map(a=>a.id===b?{...a,...c}:a)}))},N=b=>a.filter(a=>a.type===b);if("templates"===C){let a;return(0,b.jsxs)("div",{className:"flex h-full gap-6 p-6 bg-[#eef2ff]",children:[(0,b.jsx)("div",{className:"w-1/3 opacity-50 pointer-events-none filter blur-[1px]",children:(0,b.jsxs)("div",{className:"bg-white rounded-lg p-6 shadow-sm border border-slate-200",children:[(0,b.jsx)("h3",{className:"font-bold text-slate-700 mb-4",children:"Aperçu Fiches"}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("div",{className:"h-10 bg-indigo-50 rounded"}),(0,b.jsx)("div",{className:"h-10 bg-indigo-50 rounded"}),(0,b.jsx)("div",{className:"h-10 bg-indigo-50 rounded"})]})]})}),(a=u.find(a=>a.entityType===E)||{entityType:E,fields:[]},(0,b.jsxs)("div",{className:"flex-1 bg-white rounded-xl shadow-lg border border-slate-200 p-8 overflow-y-auto",children:[(0,b.jsxs)("div",{className:"flex justify-between items-start mb-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("h2",{className:"text-2xl font-bold text-slate-800 flex items-center gap-2",children:[(0,b.jsx)(o.Layout,{size:24,className:"text-indigo-600"})," Éditeur de Modèles"]}),(0,b.jsx)("p",{className:"text-slate-500 text-sm mt-1",children:"Configurez les champs personnalisés pour chaque type de fiche."})]}),(0,b.jsx)("button",{onClick:()=>D("entities"),className:"p-2 text-slate-500 hover:bg-slate-100 rounded-full",children:(0,b.jsx)(h.X,{size:20})})]}),(0,b.jsx)("div",{className:"flex gap-2 mb-8 border-b border-slate-200 pb-1",children:Object.values(d.EntityType).map(a=>(0,b.jsx)("button",{onClick:()=>F(a),className:`px-4 py-2 text-sm font-medium rounded-t-lg transition-colors ${E===a?"bg-indigo-50 text-indigo-700 border-b-2 border-indigo-600":"text-slate-500 hover:text-slate-800 hover:bg-slate-50"}`,children:a},a))}),(0,b.jsxs)("div",{className:"space-y-4",children:[a.fields.map((a,c)=>(0,b.jsxs)("div",{className:"bg-[#eef2ff] border border-indigo-100 rounded-lg p-4 flex gap-4 items-start group",children:[(0,b.jsxs)("div",{className:"flex-1 grid grid-cols-2 gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Nom du champ"}),(0,b.jsx)("input",{type:"text",value:a.label,onChange:b=>M(E,a.id,{label:b.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Type"}),(0,b.jsxs)("select",{value:a.type,onChange:b=>M(E,a.id,{type:b.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",children:[(0,b.jsx)("option",{value:"text",children:"Texte court"}),(0,b.jsx)("option",{value:"textarea",children:"Texte long"}),(0,b.jsx)("option",{value:"number",children:"Nombre"}),(0,b.jsx)("option",{value:"boolean",children:"Case à cocher"}),(0,b.jsx)("option",{value:"select",children:"Liste déroulante"})]})]}),"select"===a.type&&(0,b.jsxs)("div",{className:"col-span-2",children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Options (séparées par des virgules)"}),(0,b.jsx)("input",{type:"text",value:a.options?.join(",")||"",onChange:b=>M(E,a.id,{options:b.target.value.split(",").map(a=>a.trim())}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",placeholder:"Option A, Option B, Option C"})]})]}),(0,b.jsx)("button",{onClick:()=>{var b;return b=a.id,void v(u.map(a=>a.entityType!==E?a:{...a,fields:a.fields.filter(a=>a.id!==b)}))},className:"p-2 text-slate-400 hover:text-red-600 hover:bg-red-50 rounded mt-5",children:(0,b.jsx)(f.Trash2,{size:16})})]},a.id)),(0,b.jsxs)("button",{onClick:()=>{let a,b;return a={id:`field-${Date.now()}`,label:"Nouveau Champ",type:"text",placeholder:""},void(!(b=u.map(b=>b.entityType===E?{...b,fields:[...b.fields,a]}:b)).some(a=>a.entityType===E)&&b.push({entityType:E,fields:[a]}),v(b))},className:"w-full py-3 border-2 border-dashed border-slate-300 rounded-lg text-slate-500 hover:border-indigo-400 hover:text-indigo-600 hover:bg-indigo-50 transition-all flex items-center justify-center gap-2",children:[(0,b.jsx)(e.Plus,{size:20})," Ajouter un champ"]})]})]}))]})}return(0,b.jsxs)("div",{className:"flex h-full gap-6 p-6 bg-[#eef2ff]",children:[(0,b.jsxs)("div",{className:"w-1/3 flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center px-1",children:[(0,b.jsx)("h2",{className:"text-lg font-bold text-slate-700",children:"Explorateur"}),(0,b.jsxs)("button",{onClick:()=>D("templates"),className:"flex items-center gap-1.5 px-3 py-1.5 bg-indigo-100 text-indigo-700 hover:bg-indigo-200 rounded text-xs font-medium transition-colors",title:"Gérer les modèles de fiches",children:[(0,b.jsx)(n.Settings,{size:14})," Modèles"]})]}),(0,b.jsx)("div",{className:"space-y-6 overflow-y-auto pr-2 pb-4 flex-1",children:Object.values(d.EntityType).map(a=>(0,b.jsxs)("div",{className:"bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden",children:[(0,b.jsxs)("div",{className:"bg-indigo-50 p-3 border-b border-indigo-100 flex justify-between items-center",children:[(0,b.jsxs)("h3",{className:"font-semibold text-slate-700 flex items-center gap-2",children:[(0,b.jsx)("span",{children:q.ENTITY_ICONS[a]})," ",a,"s"]}),(0,b.jsx)("button",{onClick:()=>{B({id:Date.now().toString(),type:a,name:"",description:"",details:"",storyContext:"",attributes:a===d.EntityType.CHARACTER?{...r}:void 0,customValues:{}}),z("NEW")},className:"p-1 hover:bg-indigo-100 rounded text-indigo-600 transition-colors",children:(0,b.jsx)(e.Plus,{size:16})})]}),(0,b.jsxs)("div",{className:"divide-y divide-slate-100",children:[0===N(a).length&&(0,b.jsx)("p",{className:"p-4 text-sm text-slate-400 italic text-center",children:"Aucun élément"}),N(a).map(a=>(0,b.jsxs)("div",{onClick:()=>H(a),className:`p-3 cursor-pointer hover:bg-blue-50 transition-colors flex justify-between group ${y===a.id?"bg-blue-50 border-l-4 border-blue-500":""}`,children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"font-medium text-slate-800",children:a.name}),(0,b.jsx)("div",{className:"text-xs text-slate-500 truncate",children:a.description})]}),(0,b.jsx)("button",{onClick:b=>{var c;b.stopPropagation(),c=a.id,confirm("Supprimer cet élément ?")&&(t(c),y===c&&(z(null),B(null)))},className:"opacity-0 group-hover:opacity-100 text-red-400 hover:text-red-600 transition-opacity",children:(0,b.jsx)(f.Trash2,{size:14})})]},a.id))]})]},a))})]}),(0,b.jsx)("div",{className:"flex-1 bg-white rounded-xl shadow-lg border border-slate-200 p-8 overflow-y-auto",children:y&&A?(0,b.jsxs)("div",{className:"space-y-6 animate-in fade-in duration-200",children:[(0,b.jsxs)("div",{className:"flex justify-between items-start",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("span",{className:`inline-block px-2 py-1 rounded text-xs font-bold uppercase tracking-wider ${q.ENTITY_COLORS[A.type]}`,children:A.type}),(0,b.jsx)("h2",{className:"text-2xl font-bold text-slate-800",children:A.type===d.EntityType.CHARACTER?"Fiche Personnage":"Édition de la fiche"})]}),(0,b.jsx)("div",{className:"flex gap-2",children:(0,b.jsx)("button",{onClick:()=>z(null),className:"p-2 text-slate-500 hover:bg-slate-100 rounded-full",children:(0,b.jsx)(h.X,{size:20})})})]}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-medium text-slate-700 mb-1",children:"Nom"}),(0,b.jsx)("input",{type:"text",value:A.name,onChange:a=>B({...A,name:a.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none font-serif text-lg",placeholder:"Ex: Gandalf le Gris"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-sm font-medium text-slate-700 mb-1",children:"Description Courte (pour l'IA)"}),(0,b.jsx)("textarea",{value:A.description,onChange:a=>B({...A,description:a.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-20",placeholder:"Un magicien puissant qui guide la communauté..."})]}),A.type===d.EntityType.CHARACTER&&(()=>{if(!A?.attributes)return null;let a=A.attributes;return(0,b.jsxs)("div",{className:"space-y-8 border-t border-slate-100 pt-6 mt-4",children:[(0,b.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100",children:[(0,b.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,b.jsx)(j.User,{size:16})," Identité Narrative"]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-2",children:"Archétype"}),(0,b.jsx)("input",{type:"text",list:"archetype-suggestions",value:a.archetype,onChange:a=>J("archetype",a.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-blue-500",placeholder:"Ex: Le Héros, Le Sage..."}),(0,b.jsx)("datalist",{id:"archetype-suggestions",children:G.map(a=>(0,b.jsx)("option",{value:a},a))})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-2",children:"Rôle dans l'histoire"}),(0,b.jsx)("div",{className:"flex gap-2 flex-wrap",children:[{val:"protagonist",label:"Protagoniste"},{val:"antagonist",label:"Antagoniste"},{val:"support",label:"Secondaire"},{val:"extra",label:"Figurant"}].map(c=>(0,b.jsxs)("label",{className:`cursor-pointer px-3 py-1.5 rounded text-xs border transition-colors ${a.role===c.val?"bg-indigo-100 border-indigo-300 text-indigo-700 font-bold":"bg-[#eef2ff] border-slate-200 text-slate-600 hover:bg-slate-100"}`,children:[(0,b.jsx)("input",{type:"radio",name:"role",value:c.val,checked:a.role===c.val,onChange:()=>J("role",c.val),className:"hidden"}),c.label]},c.val))})]})]})]}),(0,b.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100",children:[(0,b.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,b.jsx)(m,{size:16})," Apparence Physique"]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"flex justify-between text-xs mb-1",children:(0,b.jsx)("label",{className:"font-semibold text-slate-600",children:"Âge (ans)"})}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)("input",{type:"range",min:"1",max:"100",value:Math.min(a.age,100),onChange:a=>J("age",parseInt(a.target.value)),className:"flex-1 h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"}),(0,b.jsx)("input",{type:"number",value:a.age,onChange:a=>J("age",parseInt(a.target.value)),className:"w-20 p-1 text-right text-sm border border-slate-300 rounded font-mono text-indigo-700 bg-[#eef2ff] focus:border-indigo-500 outline-none"})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"flex justify-between text-xs mb-1",children:(0,b.jsx)("label",{className:"font-semibold text-slate-600",children:"Taille (cm)"})}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)("input",{type:"range",min:"50",max:"250",value:Math.min(a.height,250),onChange:a=>J("height",parseInt(a.target.value)),className:"flex-1 h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"}),(0,b.jsx)("input",{type:"number",value:a.height,onChange:a=>J("height",parseInt(a.target.value)),className:"w-20 p-1 text-right text-sm border border-slate-300 rounded font-mono text-indigo-700 bg-[#eef2ff] focus:border-indigo-500 outline-none"})]})]})]}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Cheveux"}),(0,b.jsx)("select",{value:a.hair,onChange:a=>J("hair",a.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",children:q.HAIR_COLORS.map(a=>(0,b.jsx)("option",{value:a,children:a},a))})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Yeux"}),(0,b.jsx)("select",{value:a.eyes,onChange:a=>J("eyes",a.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",children:q.EYE_COLORS.map(a=>(0,b.jsx)("option",{value:a,children:a},a))})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Signe distinctif"}),(0,b.jsx)("input",{type:"text",value:a.physicalQuirk,onChange:a=>J("physicalQuirk",a.target.value),placeholder:"Cicatrice, tatouage...",className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400"})]})]})]})]}),(0,b.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100",children:[(0,b.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,b.jsx)(l,{size:16})," Psychologie & Comportement"]}),(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsxs)("div",{className:"space-y-4 px-2",children:[(0,b.jsxs)("div",{className:"relative pt-1",children:[(0,b.jsxs)("div",{className:"flex justify-between text-[10px] uppercase font-bold text-slate-500 mb-1",children:[(0,b.jsx)("span",{children:"Introverti"}),(0,b.jsx)("span",{children:"Extraverti"})]}),(0,b.jsx)("input",{type:"range",min:"0",max:"100",value:a.personality.spectrumIntrovertExtravert,onChange:a=>K("spectrumIntrovertExtravert",parseInt(a.target.value)),className:"w-full h-2 bg-gradient-to-r from-slate-300 via-indigo-200 to-slate-300 rounded-lg appearance-none cursor-pointer accent-indigo-600"})]}),(0,b.jsxs)("div",{className:"relative pt-1",children:[(0,b.jsxs)("div",{className:"flex justify-between text-[10px] uppercase font-bold text-slate-500 mb-1",children:[(0,b.jsx)("span",{children:"Émotionnel"}),(0,b.jsx)("span",{children:"Rationnel"})]}),(0,b.jsx)("input",{type:"range",min:"0",max:"100",value:a.personality.spectrumEmotionalRational,onChange:a=>K("spectrumEmotionalRational",parseInt(a.target.value)),className:"w-full h-2 bg-gradient-to-r from-red-200 via-purple-200 to-blue-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"})]}),(0,b.jsxs)("div",{className:"relative pt-1",children:[(0,b.jsxs)("div",{className:"flex justify-between text-[10px] uppercase font-bold text-slate-500 mb-1",children:[(0,b.jsx)("span",{children:"Chaotique"}),(0,b.jsx)("span",{children:"Loyal"})]}),(0,b.jsx)("input",{type:"range",min:"0",max:"100",value:a.personality.spectrumChaoticLawful,onChange:a=>K("spectrumChaoticLawful",parseInt(a.target.value)),className:"w-full h-2 bg-gradient-to-r from-orange-200 via-yellow-100 to-green-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"})]})]}),(0,b.jsxs)("div",{className:"border-t border-slate-200 pt-4",children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Toc ou habitude comportementale"}),(0,b.jsx)("input",{type:"text",value:a.behavioralQuirk,onChange:a=>J("behavioralQuirk",a.target.value),placeholder:"Joue avec sa bague, bégaie quand il ment...",className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400"})]})]})]})]})})(),(x=u.find(a=>a.entityType===A?.type))&&0!==x.fields.length?(0,b.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100 mt-6",children:[(0,b.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,b.jsx)(p.List,{size:16})," Champs Personnalisés"]}),(0,b.jsx)("div",{className:"grid grid-cols-1 gap-4",children:x.fields.map(a=>{let c=A?.customValues?.[a.id]??"";return(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:a.label}),"textarea"===a.type?(0,b.jsx)("textarea",{value:c,onChange:b=>L(a.id,b.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400",placeholder:a.placeholder}):"select"===a.type?(0,b.jsxs)("select",{value:c,onChange:b=>L(a.id,b.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400",children:[(0,b.jsx)("option",{value:"",children:"Sélectionner..."}),a.options?.map(a=>(0,b.jsx)("option",{value:a,children:a},a))]}):"boolean"===a.type?(0,b.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer",children:[(0,b.jsx)("input",{type:"checkbox",checked:!!c,onChange:b=>L(a.id,b.target.checked),className:"w-4 h-4 text-indigo-600 rounded border-slate-300 focus:ring-indigo-500"}),(0,b.jsx)("span",{className:"text-sm text-slate-700",children:"Activé / Oui"})]}):(0,b.jsx)("input",{type:"number"===a.type?"number":"text",value:c,onChange:b=>L(a.id,b.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400",placeholder:a.placeholder})]},a.id)})})]}):null,(0,b.jsxs)("div",{className:"mt-6 border-t border-slate-100 pt-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("label",{className:"block text-sm font-medium text-indigo-700 mb-1 flex items-center gap-2",children:[(0,b.jsx)(i.Sparkles,{size:14})," Contexte Narratif (Auto-généré)"]}),(0,b.jsx)("textarea",{value:A.storyContext||"",onChange:a=>B({...A,storyContext:a.target.value}),className:"w-full p-2 border border-indigo-200 bg-indigo-50 rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-24 italic text-slate-600",placeholder:"Les événements vécus par ce personnage apparaîtront ici..."})]}),(0,b.jsxs)("div",{className:"mt-4",children:[(0,b.jsx)("label",{className:"block text-sm font-medium text-slate-700 mb-1",children:"Notes & Biographie Complète"}),(0,b.jsx)("textarea",{value:A.details,onChange:a=>B({...A,details:a.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none h-48 font-serif",placeholder:"Histoire détaillée, secrets, origines..."})]})]}),(0,b.jsx)("div",{className:"pt-4 flex justify-end",children:(0,b.jsxs)("button",{onClick:I,className:"bg-blue-600 hover:bg-blue-700 text-white px-6 py-2 rounded-lg flex items-center gap-2 transition-colors shadow-md",children:[(0,b.jsx)(g.Save,{size:18}),"Enregistrer la fiche"]})})]})]}):(0,b.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-slate-400",children:[(0,b.jsx)("div",{className:"text-6xl mb-4 opacity-20",children:"🌍"}),(0,b.jsx)("p",{className:"text-lg",children:"Sélectionnez ou créez une fiche pour commencer."}),(0,b.jsx)("p",{className:"text-sm",children:"Ces informations aideront l'IA à rester cohérente."})]})})]})};var t=a.i(46344),u=a.i(3622),v=a.i(95121);function w(){let{project:a,projectId:c,updateProject:d}=(0,t.useProjectContext)(),{user:e}=(0,v.useAuthContext)(),{createEntity:f,updateEntity:g,deleteEntity:h}=(0,u.useProjects)(e);return(0,b.jsx)(s,{entities:a.entities||[],onCreate:async a=>await f(c,a.type,a),onUpdate:(a,b)=>g(c,a,b),onDelete:a=>h(c,a),templates:a.templates||[],onUpdateTemplates:a=>d({templates:a}),initialSelectedId:null})}a.s(["default",()=>w],85105)}]; //# sourceMappingURL=Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_world_page_tsx_ca59acbb._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_world_page_tsx_ca59acbb._.js.map b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_world_page_tsx_ca59acbb._.js.map index c56c587..593274e 100644 --- a/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_world_page_tsx_ca59acbb._.js.map +++ b/.next/server/chunks/ssr/Documents_00 - projet_plumeia_src_app_project_[id]_world_page_tsx_ca59acbb._.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/src/components/WorldBuilder.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/world/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/ruler.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/brain.ts"],"sourcesContent":["'use client';\n\nimport React, { useState, useMemo, useEffect } from 'react';\nimport { Entity, EntityType, CharacterAttributes, EntityTemplate, CustomFieldDefinition, CustomFieldType } from '@/lib/types';\nimport { Plus, Trash2, Save, X, Sparkles, User, Activity, Brain, Ruler, Settings, Layout, List, ToggleLeft } from 'lucide-react';\nimport { ENTITY_ICONS, ENTITY_COLORS, HAIR_COLORS, EYE_COLORS, ARCHETYPES } from '@/lib/constants';\n\ninterface WorldBuilderProps {\n entities: Entity[];\n onCreate: (entity: Omit) => Promise;\n onUpdate: (id: string, updates: Partial) => void;\n onDelete: (id: string) => void;\n templates: EntityTemplate[];\n onUpdateTemplates: (templates: EntityTemplate[]) => void;\n initialSelectedId?: string | null;\n}\n\nconst DEFAULT_CHAR_ATTRIBUTES: CharacterAttributes = {\n age: 30,\n height: 175,\n hair: 'Brun',\n eyes: 'Marron',\n archetype: 'Le Héros',\n role: 'support',\n personality: {\n spectrumIntrovertExtravert: 50,\n spectrumEmotionalRational: 50,\n spectrumChaoticLawful: 50,\n },\n physicalQuirk: '',\n behavioralQuirk: ''\n};\n\nconst WorldBuilder: React.FC = ({ entities, onCreate, onUpdate, onDelete, templates, onUpdateTemplates, initialSelectedId }) => {\n const [editingId, setEditingId] = useState(null);\n const [tempEntity, setTempEntity] = useState(null);\n const [mode, setMode] = useState<'entities' | 'templates'>('entities');\n\n // Template Editor State\n const [activeTemplateType, setActiveTemplateType] = useState(EntityType.CHARACTER);\n\n // Handle external navigation request (deep link)\n useEffect(() => {\n if (initialSelectedId) {\n const entity = entities.find(e => e.id === initialSelectedId);\n if (entity) {\n handleEdit(entity);\n setMode('entities');\n }\n }\n }, [initialSelectedId, entities]);\n\n // Dynamic Archetypes List\n const allArchetypes = useMemo(() => {\n const existing = entities\n .filter(e => e.type === EntityType.CHARACTER && e.attributes?.archetype)\n .map(e => e.attributes!.archetype);\n return Array.from(new Set([...ARCHETYPES, ...existing])).sort();\n }, [entities]);\n\n // --- ENTITY ACTIONS ---\n\n const handleAdd = (type: EntityType) => {\n const newEntity: Entity = {\n id: Date.now().toString(), // Helper ID for UI\n type,\n name: '',\n description: '',\n details: '',\n storyContext: '',\n attributes: type === EntityType.CHARACTER ? { ...DEFAULT_CHAR_ATTRIBUTES } : undefined,\n customValues: {}\n };\n setTempEntity(newEntity);\n setEditingId('NEW');\n };\n\n const handleEdit = (entity: Entity) => {\n // Ensure attributes exist if it's a character (backward compatibility)\n const entityToEdit = { ...entity };\n if (entity.type === EntityType.CHARACTER && !entity.attributes) {\n entityToEdit.attributes = { ...DEFAULT_CHAR_ATTRIBUTES };\n }\n if (!entity.customValues) {\n entityToEdit.customValues = {};\n }\n setTempEntity(entityToEdit);\n setEditingId(entity.id);\n };\n\n const handleSave = async () => {\n if (!tempEntity || !tempEntity.name) return;\n\n if (editingId === 'NEW') {\n const { id, ...entityData } = tempEntity;\n await onCreate(entityData);\n } else {\n onUpdate(tempEntity.id, tempEntity);\n }\n setEditingId(null);\n setTempEntity(null);\n };\n\n const handleDelete = (id: string) => {\n if (confirm('Supprimer cet élément ?')) {\n onDelete(id);\n if (editingId === id) {\n setEditingId(null);\n setTempEntity(null);\n }\n }\n };\n\n const updateAttribute = (key: keyof CharacterAttributes, value: any) => {\n if (tempEntity && tempEntity.attributes) {\n setTempEntity({\n ...tempEntity,\n attributes: { ...tempEntity.attributes, [key]: value }\n });\n }\n };\n\n const updatePersonality = (key: keyof CharacterAttributes['personality'], value: number) => {\n if (tempEntity && tempEntity.attributes) {\n setTempEntity({\n ...tempEntity,\n attributes: {\n ...tempEntity.attributes,\n personality: { ...tempEntity.attributes.personality, [key]: value }\n }\n });\n }\n };\n\n const updateCustomValue = (fieldId: string, value: any) => {\n if (tempEntity) {\n setTempEntity({\n ...tempEntity,\n customValues: {\n ...tempEntity.customValues,\n [fieldId]: value\n }\n });\n }\n };\n\n // --- TEMPLATE ACTIONS ---\n\n const addCustomField = (type: EntityType) => {\n const newField: CustomFieldDefinition = {\n id: `field-${Date.now()}`,\n label: 'Nouveau Champ',\n type: 'text',\n placeholder: ''\n };\n\n // Correct immutable update\n const updatedTemplates = templates.map(t => {\n if (t.entityType === type) {\n return {\n ...t,\n fields: [...t.fields, newField]\n };\n }\n return t;\n });\n\n // If template didn't exist (unlikely given App.tsx init, but safe)\n if (!updatedTemplates.some(t => t.entityType === type)) {\n updatedTemplates.push({ entityType: type, fields: [newField] });\n }\n\n onUpdateTemplates(updatedTemplates);\n };\n\n const updateCustomField = (type: EntityType, fieldId: string, updates: Partial) => {\n const updatedTemplates = templates.map(t => {\n if (t.entityType !== type) return t;\n return {\n ...t,\n fields: t.fields.map(f => f.id === fieldId ? { ...f, ...updates } : f)\n };\n });\n onUpdateTemplates(updatedTemplates);\n };\n\n const deleteCustomField = (type: EntityType, fieldId: string) => {\n const updatedTemplates = templates.map(t => {\n if (t.entityType !== type) return t;\n return {\n ...t,\n fields: t.fields.filter(f => f.id !== fieldId)\n };\n });\n onUpdateTemplates(updatedTemplates);\n };\n\n const filterByType = (type: EntityType) => entities.filter(e => e.type === type);\n\n // --- RENDER HELPERS ---\n\n const renderCharacterEditor = () => {\n if (!tempEntity?.attributes) return null;\n const attrs = tempEntity.attributes;\n\n return (\n
\n\n {/* SECTION 1: ROLE & ARCHETYPE */}\n
\n

\n Identité Narrative\n

\n
\n
\n \n updateAttribute('archetype', e.target.value)}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-blue-500\"\n placeholder=\"Ex: Le Héros, Le Sage...\"\n />\n \n {allArchetypes.map(a => \n
\n
\n \n
\n {[\n { val: 'protagonist', label: 'Protagoniste' },\n { val: 'antagonist', label: 'Antagoniste' },\n { val: 'support', label: 'Secondaire' },\n { val: 'extra', label: 'Figurant' }\n ].map(opt => (\n \n ))}\n
\n
\n
\n
\n\n {/* SECTION 2: PHYSIQUE */}\n
\n

\n Apparence Physique\n

\n
\n
\n
\n
\n \n
\n
\n updateAttribute('age', parseInt(e.target.value))}\n className=\"flex-1 h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-indigo-600\"\n />\n updateAttribute('age', parseInt(e.target.value))}\n className=\"w-20 p-1 text-right text-sm border border-slate-300 rounded font-mono text-indigo-700 bg-[#eef2ff] focus:border-indigo-500 outline-none\"\n />\n
\n
\n\n
\n
\n \n
\n
\n updateAttribute('height', parseInt(e.target.value))}\n className=\"flex-1 h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-indigo-600\"\n />\n updateAttribute('height', parseInt(e.target.value))}\n className=\"w-20 p-1 text-right text-sm border border-slate-300 rounded font-mono text-indigo-700 bg-[#eef2ff] focus:border-indigo-500 outline-none\"\n />\n
\n
\n
\n\n
\n
\n
\n \n updateAttribute('hair', e.target.value)}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm\"\n >\n {HAIR_COLORS.map(c => )}\n \n
\n
\n \n updateAttribute('eyes', e.target.value)}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm\"\n >\n {EYE_COLORS.map(c => )}\n \n
\n
\n
\n \n updateAttribute('physicalQuirk', e.target.value)}\n placeholder=\"Cicatrice, tatouage...\"\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400\"\n />\n
\n
\n
\n
\n\n {/* SECTION 3: PSYCHOLOGIE */}\n
\n

\n Psychologie & Comportement\n

\n\n
\n
\n
\n
\n Introverti\n Extraverti\n
\n updatePersonality('spectrumIntrovertExtravert', parseInt(e.target.value))}\n className=\"w-full h-2 bg-gradient-to-r from-slate-300 via-indigo-200 to-slate-300 rounded-lg appearance-none cursor-pointer accent-indigo-600\"\n />\n
\n
\n
\n Émotionnel\n Rationnel\n
\n updatePersonality('spectrumEmotionalRational', parseInt(e.target.value))}\n className=\"w-full h-2 bg-gradient-to-r from-red-200 via-purple-200 to-blue-200 rounded-lg appearance-none cursor-pointer accent-indigo-600\"\n />\n
\n
\n
\n Chaotique\n Loyal\n
\n updatePersonality('spectrumChaoticLawful', parseInt(e.target.value))}\n className=\"w-full h-2 bg-gradient-to-r from-orange-200 via-yellow-100 to-green-200 rounded-lg appearance-none cursor-pointer accent-indigo-600\"\n />\n
\n
\n\n
\n \n updateAttribute('behavioralQuirk', e.target.value)}\n placeholder=\"Joue avec sa bague, bégaie quand il ment...\"\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400\"\n />\n
\n
\n
\n
\n );\n };\n\n const renderCustomFieldsEditor = () => {\n const currentTemplate = templates.find(t => t.entityType === tempEntity?.type);\n if (!currentTemplate || currentTemplate.fields.length === 0) return null;\n\n return (\n
\n

\n Champs Personnalisés\n

\n
\n {currentTemplate.fields.map(field => {\n const value = tempEntity?.customValues?.[field.id] ?? '';\n\n return (\n
\n \n\n {field.type === 'textarea' ? (\n updateCustomValue(field.id, e.target.value)}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400\"\n placeholder={field.placeholder}\n />\n ) : field.type === 'select' ? (\n updateCustomValue(field.id, e.target.value)}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400\"\n >\n \n {field.options?.map(opt => (\n \n ))}\n \n ) : field.type === 'boolean' ? (\n \n ) : (\n updateCustomValue(field.id, e.target.value)}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400\"\n placeholder={field.placeholder}\n />\n )}\n
\n );\n })}\n
\n
\n );\n };\n\n const renderTemplateManager = () => {\n const template = templates.find(t => t.entityType === activeTemplateType) || { entityType: activeTemplateType, fields: [] };\n\n return (\n
\n
\n
\n

\n Éditeur de Modèles\n

\n

\n Configurez les champs personnalisés pour chaque type de fiche.\n

\n
\n \n
\n\n
\n {Object.values(EntityType).map(type => (\n setActiveTemplateType(type)}\n className={`px-4 py-2 text-sm font-medium rounded-t-lg transition-colors ${activeTemplateType === type\n ? 'bg-indigo-50 text-indigo-700 border-b-2 border-indigo-600'\n : 'text-slate-500 hover:text-slate-800 hover:bg-slate-50'\n }`}\n >\n {type}\n \n ))}\n
\n\n
\n {template.fields.map((field, idx) => (\n
\n
\n
\n \n updateCustomField(activeTemplateType, field.id, { label: e.target.value })}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm\"\n />\n
\n
\n \n updateCustomField(activeTemplateType, field.id, { type: e.target.value as CustomFieldType })}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm\"\n >\n \n \n \n \n \n \n
\n {field.type === 'select' && (\n
\n \n updateCustomField(activeTemplateType, field.id, { options: e.target.value.split(',').map(s => s.trim()) })}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm\"\n placeholder=\"Option A, Option B, Option C\"\n />\n
\n )}\n
\n deleteCustomField(activeTemplateType, field.id)}\n className=\"p-2 text-slate-400 hover:text-red-600 hover:bg-red-50 rounded mt-5\"\n >\n \n \n
\n ))}\n\n addCustomField(activeTemplateType)}\n className=\"w-full py-3 border-2 border-dashed border-slate-300 rounded-lg text-slate-500 hover:border-indigo-400 hover:text-indigo-600 hover:bg-indigo-50 transition-all flex items-center justify-center gap-2\"\n >\n Ajouter un champ\n \n
\n
\n );\n };\n\n if (mode === 'templates') {\n return (\n
\n
\n
\n

Aperçu Fiches

\n
\n
\n
\n
\n
\n
\n
\n {renderTemplateManager()}\n
\n );\n }\n\n return (\n
\n
\n
\n

Explorateur

\n setMode('templates')}\n className=\"flex items-center gap-1.5 px-3 py-1.5 bg-indigo-100 text-indigo-700 hover:bg-indigo-200 rounded text-xs font-medium transition-colors\"\n title=\"Gérer les modèles de fiches\"\n >\n Modèles\n \n
\n\n
\n {Object.values(EntityType).map(type => (\n
\n
\n

\n {ENTITY_ICONS[type]} {type}s\n

\n handleAdd(type)}\n className=\"p-1 hover:bg-indigo-100 rounded text-indigo-600 transition-colors\"\n >\n \n \n
\n
\n {filterByType(type).length === 0 && (\n

Aucun élément

\n )}\n {filterByType(type).map(entity => (\n handleEdit(entity)}\n className={`p-3 cursor-pointer hover:bg-blue-50 transition-colors flex justify-between group ${editingId === entity.id ? 'bg-blue-50 border-l-4 border-blue-500' : ''}`}\n >\n
\n
{entity.name}
\n
{entity.description}
\n
\n { e.stopPropagation(); handleDelete(entity.id); }}\n className=\"opacity-0 group-hover:opacity-100 text-red-400 hover:text-red-600 transition-opacity\"\n >\n \n \n
\n ))}\n
\n
\n ))}\n
\n
\n\n
\n {editingId && tempEntity ? (\n
\n
\n
\n \n {tempEntity.type}\n \n

\n {tempEntity.type === EntityType.CHARACTER ? 'Fiche Personnage' : 'Édition de la fiche'}\n

\n
\n
\n \n
\n
\n\n
\n
\n \n setTempEntity({ ...tempEntity, name: e.target.value })}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none font-serif text-lg\"\n placeholder=\"Ex: Gandalf le Gris\"\n />\n
\n\n
\n \n setTempEntity({ ...tempEntity, description: e.target.value })}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-20\"\n placeholder=\"Un magicien puissant qui guide la communauté...\"\n />\n
\n\n {tempEntity.type === EntityType.CHARACTER && renderCharacterEditor()}\n\n {renderCustomFieldsEditor()}\n\n
\n
\n \n setTempEntity({ ...tempEntity, storyContext: e.target.value })}\n className=\"w-full p-2 border border-indigo-200 bg-indigo-50 rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-24 italic text-slate-600\"\n placeholder=\"Les événements vécus par ce personnage apparaîtront ici...\"\n />\n
\n\n
\n \n setTempEntity({ ...tempEntity, details: e.target.value })}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none h-48 font-serif\"\n placeholder=\"Histoire détaillée, secrets, origines...\"\n />\n
\n
\n\n
\n \n \n Enregistrer la fiche\n \n
\n
\n
\n ) : (\n
\n
🌍
\n

Sélectionnez ou créez une fiche pour commencer.

\n

Ces informations aideront l'IA à rester cohérente.

\n
\n )}\n
\n
\n );\n};\n\nexport default WorldBuilder;","'use client';\r\n\r\nimport WorldBuilder from '@/components/WorldBuilder';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport { useParams, useRouter } from 'next/navigation';\r\n\r\ninterface WorldPageProps {\r\n project?: any;\r\n updateProject?: (updates: any) => void;\r\n}\r\n\r\nexport default function WorldPage(props: WorldPageProps) {\r\n const { project, updateProject } = props;\r\n const params = useParams();\r\n const router = useRouter();\r\n const projectId = params.id as string;\r\n\r\n const { user } = useAuthContext();\r\n const { createEntity, updateEntity, deleteEntity } = useProjects(user);\r\n\r\n if (!project) return null;\r\n\r\n return (\r\n {\r\n return await createEntity(projectId, entityData.type, entityData);\r\n }}\r\n onUpdate={(entityId, updates) => updateEntity(projectId, entityId, updates)}\r\n onDelete={(entityId) => deleteEntity(projectId, entityId)}\r\n templates={project.templates || []}\r\n onUpdateTemplates={(t) => updateProject?.({ templates: t })}\r\n initialSelectedId={null}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.41 2.41 0 0 1 0-3.4l2.6-2.6a2.41 2.41 0 0 1 3.4 0Z',\n key: 'icamh8',\n },\n ],\n ['path', { d: 'm14.5 12.5 2-2', key: 'inckbg' }],\n ['path', { d: 'm11.5 9.5 2-2', key: 'fmmyf7' }],\n ['path', { d: 'm8.5 6.5 2-2', key: 'vc6u1g' }],\n ['path', { d: 'm17.5 15.5 2-2', key: 'wo5hmg' }],\n];\n\n/**\n * @component @name Ruler\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEuMyAxNS4zYTIuNCAyLjQgMCAwIDEgMCAzLjRsLTIuNiAyLjZhMi40IDIuNCAwIDAgMS0zLjQgMEwyLjcgOC43YTIuNDEgMi40MSAwIDAgMSAwLTMuNGwyLjYtMi42YTIuNDEgMi40MSAwIDAgMSAzLjQgMFoiIC8+CiAgPHBhdGggZD0ibTE0LjUgMTIuNSAyLTIiIC8+CiAgPHBhdGggZD0ibTExLjUgOS41IDItMiIgLz4KICA8cGF0aCBkPSJtOC41IDYuNSAyLTIiIC8+CiAgPHBhdGggZD0ibTE3LjUgMTUuNSAyLTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/ruler\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Ruler = createLucideIcon('ruler', __iconNode);\n\nexport default Ruler;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 18V5', key: 'adv99a' }],\n ['path', { d: 'M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4', key: '1e3is1' }],\n ['path', { d: 'M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5', key: '1gqd8o' }],\n ['path', { d: 'M17.997 5.125a4 4 0 0 1 2.526 5.77', key: 'iwvgf7' }],\n ['path', { d: 'M18 18a4 4 0 0 0 2-7.464', key: 'efp6ie' }],\n ['path', { d: 'M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517', key: '1gq6am' }],\n ['path', { d: 'M6 18a4 4 0 0 1-2-7.464', key: 'k1g0md' }],\n ['path', { d: 'M6.003 5.125a4 4 0 0 0-2.526 5.77', key: 'q97ue3' }],\n];\n\n/**\n * @component @name Brain\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMThWNSIgLz4KICA8cGF0aCBkPSJNMTUgMTNhNC4xNyA0LjE3IDAgMCAxLTMtNCA0LjE3IDQuMTcgMCAwIDEtMyA0IiAvPgogIDxwYXRoIGQ9Ik0xNy41OTggNi41QTMgMyAwIDEgMCAxMiA1YTMgMyAwIDEgMC01LjU5OCAxLjUiIC8+CiAgPHBhdGggZD0iTTE3Ljk5NyA1LjEyNWE0IDQgMCAwIDEgMi41MjYgNS43NyIgLz4KICA8cGF0aCBkPSJNMTggMThhNCA0IDAgMCAwIDItNy40NjQiIC8+CiAgPHBhdGggZD0iTTE5Ljk2NyAxNy40ODNBNCA0IDAgMSAxIDEyIDE4YTQgNCAwIDEgMS03Ljk2Ny0uNTE3IiAvPgogIDxwYXRoIGQ9Ik02IDE4YTQgNCAwIDAgMS0yLTcuNDY0IiAvPgogIDxwYXRoIGQ9Ik02LjAwMyA1LjEyNWE0IDQgMCAwIDAtMi41MjYgNS43NyIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/brain\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Brain = createLucideIcon('brain', __iconNode);\n\nexport default Brain;\n"],"names":[],"mappings":"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","ignoreList":[2,3]} \ No newline at end of file +{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/src/components/WorldBuilder.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/world/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/ruler.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/brain.ts"],"sourcesContent":["'use client';\n\nimport React, { useState, useMemo, useEffect } from 'react';\nimport { Entity, EntityType, CharacterAttributes, EntityTemplate, CustomFieldDefinition, CustomFieldType } from '@/lib/types';\nimport { Plus, Trash2, Save, X, Sparkles, User, Activity, Brain, Ruler, Settings, Layout, List, ToggleLeft } from 'lucide-react';\nimport { ENTITY_ICONS, ENTITY_COLORS, HAIR_COLORS, EYE_COLORS, ARCHETYPES } from '@/lib/constants';\n\ninterface WorldBuilderProps {\n entities: Entity[];\n onCreate: (entity: Omit) => Promise;\n onUpdate: (id: string, updates: Partial) => void;\n onDelete: (id: string) => void;\n templates: EntityTemplate[];\n onUpdateTemplates: (templates: EntityTemplate[]) => void;\n initialSelectedId?: string | null;\n}\n\nconst DEFAULT_CHAR_ATTRIBUTES: CharacterAttributes = {\n age: 30,\n height: 175,\n hair: 'Brun',\n eyes: 'Marron',\n archetype: 'Le Héros',\n role: 'support',\n personality: {\n spectrumIntrovertExtravert: 50,\n spectrumEmotionalRational: 50,\n spectrumChaoticLawful: 50,\n },\n physicalQuirk: '',\n behavioralQuirk: ''\n};\n\nconst WorldBuilder: React.FC = ({ entities, onCreate, onUpdate, onDelete, templates, onUpdateTemplates, initialSelectedId }) => {\n const [editingId, setEditingId] = useState(null);\n const [tempEntity, setTempEntity] = useState(null);\n const [mode, setMode] = useState<'entities' | 'templates'>('entities');\n\n // Template Editor State\n const [activeTemplateType, setActiveTemplateType] = useState(EntityType.CHARACTER);\n\n // Handle external navigation request (deep link)\n useEffect(() => {\n if (initialSelectedId) {\n const entity = entities.find(e => e.id === initialSelectedId);\n if (entity) {\n handleEdit(entity);\n setMode('entities');\n }\n }\n }, [initialSelectedId, entities]);\n\n // Dynamic Archetypes List\n const allArchetypes = useMemo(() => {\n const existing = entities\n .filter(e => e.type === EntityType.CHARACTER && e.attributes?.archetype)\n .map(e => e.attributes!.archetype);\n return Array.from(new Set([...ARCHETYPES, ...existing])).sort();\n }, [entities]);\n\n // --- ENTITY ACTIONS ---\n\n const handleAdd = (type: EntityType) => {\n const newEntity: Entity = {\n id: Date.now().toString(), // Helper ID for UI\n type,\n name: '',\n description: '',\n details: '',\n storyContext: '',\n attributes: type === EntityType.CHARACTER ? { ...DEFAULT_CHAR_ATTRIBUTES } : undefined,\n customValues: {}\n };\n setTempEntity(newEntity);\n setEditingId('NEW');\n };\n\n const handleEdit = (entity: Entity) => {\n // Ensure attributes exist if it's a character (backward compatibility)\n const entityToEdit = { ...entity };\n if (entity.type === EntityType.CHARACTER && !entity.attributes) {\n entityToEdit.attributes = { ...DEFAULT_CHAR_ATTRIBUTES };\n }\n if (!entity.customValues) {\n entityToEdit.customValues = {};\n }\n setTempEntity(entityToEdit);\n setEditingId(entity.id);\n };\n\n const handleSave = async () => {\n if (!tempEntity || !tempEntity.name) return;\n\n if (editingId === 'NEW') {\n const { id, ...entityData } = tempEntity;\n await onCreate(entityData);\n } else {\n onUpdate(tempEntity.id, tempEntity);\n }\n setEditingId(null);\n setTempEntity(null);\n };\n\n const handleDelete = (id: string) => {\n if (confirm('Supprimer cet élément ?')) {\n onDelete(id);\n if (editingId === id) {\n setEditingId(null);\n setTempEntity(null);\n }\n }\n };\n\n const updateAttribute = (key: keyof CharacterAttributes, value: any) => {\n if (tempEntity && tempEntity.attributes) {\n setTempEntity({\n ...tempEntity,\n attributes: { ...tempEntity.attributes, [key]: value }\n });\n }\n };\n\n const updatePersonality = (key: keyof CharacterAttributes['personality'], value: number) => {\n if (tempEntity && tempEntity.attributes) {\n setTempEntity({\n ...tempEntity,\n attributes: {\n ...tempEntity.attributes,\n personality: { ...tempEntity.attributes.personality, [key]: value }\n }\n });\n }\n };\n\n const updateCustomValue = (fieldId: string, value: any) => {\n if (tempEntity) {\n setTempEntity({\n ...tempEntity,\n customValues: {\n ...tempEntity.customValues,\n [fieldId]: value\n }\n });\n }\n };\n\n // --- TEMPLATE ACTIONS ---\n\n const addCustomField = (type: EntityType) => {\n const newField: CustomFieldDefinition = {\n id: `field-${Date.now()}`,\n label: 'Nouveau Champ',\n type: 'text',\n placeholder: ''\n };\n\n // Correct immutable update\n const updatedTemplates = templates.map(t => {\n if (t.entityType === type) {\n return {\n ...t,\n fields: [...t.fields, newField]\n };\n }\n return t;\n });\n\n // If template didn't exist (unlikely given App.tsx init, but safe)\n if (!updatedTemplates.some(t => t.entityType === type)) {\n updatedTemplates.push({ entityType: type, fields: [newField] });\n }\n\n onUpdateTemplates(updatedTemplates);\n };\n\n const updateCustomField = (type: EntityType, fieldId: string, updates: Partial) => {\n const updatedTemplates = templates.map(t => {\n if (t.entityType !== type) return t;\n return {\n ...t,\n fields: t.fields.map(f => f.id === fieldId ? { ...f, ...updates } : f)\n };\n });\n onUpdateTemplates(updatedTemplates);\n };\n\n const deleteCustomField = (type: EntityType, fieldId: string) => {\n const updatedTemplates = templates.map(t => {\n if (t.entityType !== type) return t;\n return {\n ...t,\n fields: t.fields.filter(f => f.id !== fieldId)\n };\n });\n onUpdateTemplates(updatedTemplates);\n };\n\n const filterByType = (type: EntityType) => entities.filter(e => e.type === type);\n\n // --- RENDER HELPERS ---\n\n const renderCharacterEditor = () => {\n if (!tempEntity?.attributes) return null;\n const attrs = tempEntity.attributes;\n\n return (\n
\n\n {/* SECTION 1: ROLE & ARCHETYPE */}\n
\n

\n Identité Narrative\n

\n
\n
\n \n updateAttribute('archetype', e.target.value)}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-blue-500\"\n placeholder=\"Ex: Le Héros, Le Sage...\"\n />\n \n {allArchetypes.map(a => \n
\n
\n \n
\n {[\n { val: 'protagonist', label: 'Protagoniste' },\n { val: 'antagonist', label: 'Antagoniste' },\n { val: 'support', label: 'Secondaire' },\n { val: 'extra', label: 'Figurant' }\n ].map(opt => (\n \n ))}\n
\n
\n
\n
\n\n {/* SECTION 2: PHYSIQUE */}\n
\n

\n Apparence Physique\n

\n
\n
\n
\n
\n \n
\n
\n updateAttribute('age', parseInt(e.target.value))}\n className=\"flex-1 h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-indigo-600\"\n />\n updateAttribute('age', parseInt(e.target.value))}\n className=\"w-20 p-1 text-right text-sm border border-slate-300 rounded font-mono text-indigo-700 bg-[#eef2ff] focus:border-indigo-500 outline-none\"\n />\n
\n
\n\n
\n
\n \n
\n
\n updateAttribute('height', parseInt(e.target.value))}\n className=\"flex-1 h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-indigo-600\"\n />\n updateAttribute('height', parseInt(e.target.value))}\n className=\"w-20 p-1 text-right text-sm border border-slate-300 rounded font-mono text-indigo-700 bg-[#eef2ff] focus:border-indigo-500 outline-none\"\n />\n
\n
\n
\n\n
\n
\n
\n \n updateAttribute('hair', e.target.value)}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm\"\n >\n {HAIR_COLORS.map(c => )}\n \n
\n
\n \n updateAttribute('eyes', e.target.value)}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm\"\n >\n {EYE_COLORS.map(c => )}\n \n
\n
\n
\n \n updateAttribute('physicalQuirk', e.target.value)}\n placeholder=\"Cicatrice, tatouage...\"\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400\"\n />\n
\n
\n
\n
\n\n {/* SECTION 3: PSYCHOLOGIE */}\n
\n

\n Psychologie & Comportement\n

\n\n
\n
\n
\n
\n Introverti\n Extraverti\n
\n updatePersonality('spectrumIntrovertExtravert', parseInt(e.target.value))}\n className=\"w-full h-2 bg-gradient-to-r from-slate-300 via-indigo-200 to-slate-300 rounded-lg appearance-none cursor-pointer accent-indigo-600\"\n />\n
\n
\n
\n Émotionnel\n Rationnel\n
\n updatePersonality('spectrumEmotionalRational', parseInt(e.target.value))}\n className=\"w-full h-2 bg-gradient-to-r from-red-200 via-purple-200 to-blue-200 rounded-lg appearance-none cursor-pointer accent-indigo-600\"\n />\n
\n
\n
\n Chaotique\n Loyal\n
\n updatePersonality('spectrumChaoticLawful', parseInt(e.target.value))}\n className=\"w-full h-2 bg-gradient-to-r from-orange-200 via-yellow-100 to-green-200 rounded-lg appearance-none cursor-pointer accent-indigo-600\"\n />\n
\n
\n\n
\n \n updateAttribute('behavioralQuirk', e.target.value)}\n placeholder=\"Joue avec sa bague, bégaie quand il ment...\"\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400\"\n />\n
\n
\n
\n
\n );\n };\n\n const renderCustomFieldsEditor = () => {\n const currentTemplate = templates.find(t => t.entityType === tempEntity?.type);\n if (!currentTemplate || currentTemplate.fields.length === 0) return null;\n\n return (\n
\n

\n Champs Personnalisés\n

\n
\n {currentTemplate.fields.map(field => {\n const value = tempEntity?.customValues?.[field.id] ?? '';\n\n return (\n
\n \n\n {field.type === 'textarea' ? (\n updateCustomValue(field.id, e.target.value)}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400\"\n placeholder={field.placeholder}\n />\n ) : field.type === 'select' ? (\n updateCustomValue(field.id, e.target.value)}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400\"\n >\n \n {field.options?.map(opt => (\n \n ))}\n \n ) : field.type === 'boolean' ? (\n \n ) : (\n updateCustomValue(field.id, e.target.value)}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400\"\n placeholder={field.placeholder}\n />\n )}\n
\n );\n })}\n
\n
\n );\n };\n\n const renderTemplateManager = () => {\n const template = templates.find(t => t.entityType === activeTemplateType) || { entityType: activeTemplateType, fields: [] };\n\n return (\n
\n
\n
\n

\n Éditeur de Modèles\n

\n

\n Configurez les champs personnalisés pour chaque type de fiche.\n

\n
\n \n
\n\n
\n {Object.values(EntityType).map(type => (\n setActiveTemplateType(type)}\n className={`px-4 py-2 text-sm font-medium rounded-t-lg transition-colors ${activeTemplateType === type\n ? 'bg-indigo-50 text-indigo-700 border-b-2 border-indigo-600'\n : 'text-slate-500 hover:text-slate-800 hover:bg-slate-50'\n }`}\n >\n {type}\n \n ))}\n
\n\n
\n {template.fields.map((field, idx) => (\n
\n
\n
\n \n updateCustomField(activeTemplateType, field.id, { label: e.target.value })}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm\"\n />\n
\n
\n \n updateCustomField(activeTemplateType, field.id, { type: e.target.value as CustomFieldType })}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm\"\n >\n \n \n \n \n \n \n
\n {field.type === 'select' && (\n
\n \n updateCustomField(activeTemplateType, field.id, { options: e.target.value.split(',').map(s => s.trim()) })}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm\"\n placeholder=\"Option A, Option B, Option C\"\n />\n
\n )}\n
\n deleteCustomField(activeTemplateType, field.id)}\n className=\"p-2 text-slate-400 hover:text-red-600 hover:bg-red-50 rounded mt-5\"\n >\n \n \n
\n ))}\n\n addCustomField(activeTemplateType)}\n className=\"w-full py-3 border-2 border-dashed border-slate-300 rounded-lg text-slate-500 hover:border-indigo-400 hover:text-indigo-600 hover:bg-indigo-50 transition-all flex items-center justify-center gap-2\"\n >\n Ajouter un champ\n \n
\n
\n );\n };\n\n if (mode === 'templates') {\n return (\n
\n
\n
\n

Aperçu Fiches

\n
\n
\n
\n
\n
\n
\n
\n {renderTemplateManager()}\n
\n );\n }\n\n return (\n
\n
\n
\n

Explorateur

\n setMode('templates')}\n className=\"flex items-center gap-1.5 px-3 py-1.5 bg-indigo-100 text-indigo-700 hover:bg-indigo-200 rounded text-xs font-medium transition-colors\"\n title=\"Gérer les modèles de fiches\"\n >\n Modèles\n \n
\n\n
\n {Object.values(EntityType).map(type => (\n
\n
\n

\n {ENTITY_ICONS[type]} {type}s\n

\n handleAdd(type)}\n className=\"p-1 hover:bg-indigo-100 rounded text-indigo-600 transition-colors\"\n >\n \n \n
\n
\n {filterByType(type).length === 0 && (\n

Aucun élément

\n )}\n {filterByType(type).map(entity => (\n handleEdit(entity)}\n className={`p-3 cursor-pointer hover:bg-blue-50 transition-colors flex justify-between group ${editingId === entity.id ? 'bg-blue-50 border-l-4 border-blue-500' : ''}`}\n >\n
\n
{entity.name}
\n
{entity.description}
\n
\n { e.stopPropagation(); handleDelete(entity.id); }}\n className=\"opacity-0 group-hover:opacity-100 text-red-400 hover:text-red-600 transition-opacity\"\n >\n \n \n
\n ))}\n
\n
\n ))}\n
\n
\n\n
\n {editingId && tempEntity ? (\n
\n
\n
\n \n {tempEntity.type}\n \n

\n {tempEntity.type === EntityType.CHARACTER ? 'Fiche Personnage' : 'Édition de la fiche'}\n

\n
\n
\n \n
\n
\n\n
\n
\n \n setTempEntity({ ...tempEntity, name: e.target.value })}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none font-serif text-lg\"\n placeholder=\"Ex: Gandalf le Gris\"\n />\n
\n\n
\n \n setTempEntity({ ...tempEntity, description: e.target.value })}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-20\"\n placeholder=\"Un magicien puissant qui guide la communauté...\"\n />\n
\n\n {tempEntity.type === EntityType.CHARACTER && renderCharacterEditor()}\n\n {renderCustomFieldsEditor()}\n\n
\n
\n \n setTempEntity({ ...tempEntity, storyContext: e.target.value })}\n className=\"w-full p-2 border border-indigo-200 bg-indigo-50 rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-24 italic text-slate-600\"\n placeholder=\"Les événements vécus par ce personnage apparaîtront ici...\"\n />\n
\n\n
\n \n setTempEntity({ ...tempEntity, details: e.target.value })}\n className=\"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none h-48 font-serif\"\n placeholder=\"Histoire détaillée, secrets, origines...\"\n />\n
\n
\n\n
\n \n \n Enregistrer la fiche\n \n
\n
\n
\n ) : (\n
\n
🌍
\n

Sélectionnez ou créez une fiche pour commencer.

\n

Ces informations aideront l'IA à rester cohérente.

\n
\n )}\n
\n
\n );\n};\n\nexport default WorldBuilder;","'use client';\r\n\r\nimport WorldBuilder from '@/components/WorldBuilder';\r\nimport { useProjectContext } from '@/providers/ProjectProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\n\r\nexport default function WorldPage() {\r\n const { project, projectId, updateProject } = useProjectContext();\r\n const { user } = useAuthContext();\r\n const { createEntity, updateEntity, deleteEntity } = useProjects(user);\r\n\r\n return (\r\n {\r\n return await createEntity(projectId, entityData.type, entityData);\r\n }}\r\n onUpdate={(entityId, updates) => updateEntity(projectId, entityId, updates)}\r\n onDelete={(entityId) => deleteEntity(projectId, entityId)}\r\n templates={project.templates || []}\r\n onUpdateTemplates={(t) => updateProject({ templates: t })}\r\n initialSelectedId={null}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.41 2.41 0 0 1 0-3.4l2.6-2.6a2.41 2.41 0 0 1 3.4 0Z',\n key: 'icamh8',\n },\n ],\n ['path', { d: 'm14.5 12.5 2-2', key: 'inckbg' }],\n ['path', { d: 'm11.5 9.5 2-2', key: 'fmmyf7' }],\n ['path', { d: 'm8.5 6.5 2-2', key: 'vc6u1g' }],\n ['path', { d: 'm17.5 15.5 2-2', key: 'wo5hmg' }],\n];\n\n/**\n * @component @name Ruler\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEuMyAxNS4zYTIuNCAyLjQgMCAwIDEgMCAzLjRsLTIuNiAyLjZhMi40IDIuNCAwIDAgMS0zLjQgMEwyLjcgOC43YTIuNDEgMi40MSAwIDAgMSAwLTMuNGwyLjYtMi42YTIuNDEgMi40MSAwIDAgMSAzLjQgMFoiIC8+CiAgPHBhdGggZD0ibTE0LjUgMTIuNSAyLTIiIC8+CiAgPHBhdGggZD0ibTExLjUgOS41IDItMiIgLz4KICA8cGF0aCBkPSJtOC41IDYuNSAyLTIiIC8+CiAgPHBhdGggZD0ibTE3LjUgMTUuNSAyLTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/ruler\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Ruler = createLucideIcon('ruler', __iconNode);\n\nexport default Ruler;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 18V5', key: 'adv99a' }],\n ['path', { d: 'M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4', key: '1e3is1' }],\n ['path', { d: 'M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5', key: '1gqd8o' }],\n ['path', { d: 'M17.997 5.125a4 4 0 0 1 2.526 5.77', key: 'iwvgf7' }],\n ['path', { d: 'M18 18a4 4 0 0 0 2-7.464', key: 'efp6ie' }],\n ['path', { d: 'M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517', key: '1gq6am' }],\n ['path', { d: 'M6 18a4 4 0 0 1-2-7.464', key: 'k1g0md' }],\n ['path', { d: 'M6.003 5.125a4 4 0 0 0-2.526 5.77', key: 'q97ue3' }],\n];\n\n/**\n * @component @name Brain\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMThWNSIgLz4KICA8cGF0aCBkPSJNMTUgMTNhNC4xNyA0LjE3IDAgMCAxLTMtNCA0LjE3IDQuMTcgMCAwIDEtMyA0IiAvPgogIDxwYXRoIGQ9Ik0xNy41OTggNi41QTMgMyAwIDEgMCAxMiA1YTMgMyAwIDEgMC01LjU5OCAxLjUiIC8+CiAgPHBhdGggZD0iTTE3Ljk5NyA1LjEyNWE0IDQgMCAwIDEgMi41MjYgNS43NyIgLz4KICA8cGF0aCBkPSJNMTggMThhNCA0IDAgMCAwIDItNy40NjQiIC8+CiAgPHBhdGggZD0iTTE5Ljk2NyAxNy40ODNBNCA0IDAgMSAxIDEyIDE4YTQgNCAwIDEgMS03Ljk2Ny0uNTE3IiAvPgogIDxwYXRoIGQ9Ik02IDE4YTQgNCAwIDAgMS0yLTcuNDY0IiAvPgogIDxwYXRoIGQ9Ik02LjAwMyA1LjEyNWE0IDQgMCAwIDAtMi41MjYgNS43NyIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/brain\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Brain = createLucideIcon('brain', __iconNode);\n\nexport default Brain;\n"],"names":[],"mappings":"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","ignoreList":[2,3]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__28fa855e._.js b/.next/server/chunks/ssr/[root-of-the-server]__26d3d76a._.js similarity index 91% rename from .next/server/chunks/ssr/[root-of-the-server]__28fa855e._.js rename to .next/server/chunks/ssr/[root-of-the-server]__26d3d76a._.js index 2cdd0c6..83715ac 100644 --- a/.next/server/chunks/ssr/[root-of-the-server]__28fa855e._.js +++ b/.next/server/chunks/ssr/[root-of-the-server]__26d3d76a._.js @@ -1,3 +1,3 @@ -module.exports=[56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},97442,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.AppRouterContext},42481,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.HooksClientContext},70676,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.ServerInsertedHtml},29892,a=>{"use strict";var b=a.i(28091);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],29892)},73258,a=>{"use strict";let b=(0,a.i(29892).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);a.s(["BookOpen",()=>b],73258)},806,a=>{"use strict";let b=(0,a.i(29892).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);a.s(["Sparkles",()=>b],806)},10704,a=>{"use strict";let b=(0,a.i(29892).default)("feather",[["path",{d:"M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z",key:"18jl4k"}],["path",{d:"M16 8 2 22",key:"vp34q"}],["path",{d:"M17.5 15H9",key:"1oz8nu"}]]);a.s(["Feather",()=>b],10704)},84104,a=>{"use strict";let b=(0,a.i(29892).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",()=>b],84104)},63287,a=>{"use strict";let b=(0,a.i(29892).default)("lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);a.s(["Lightbulb",()=>b],63287)},95556,27197,a=>{"use strict";var b=a.i(29892);let c=(0,b.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);a.s(["Globe",()=>c],95556);let d=(0,b.default)("git-graph",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M5 9v6",key:"158jrl"}],["circle",{cx:"5",cy:"18",r:"3",key:"104gr9"}],["path",{d:"M12 3v18",key:"108xh3"}],["circle",{cx:"19",cy:"6",r:"3",key:"108a5v"}],["path",{d:"M16 15.7A9 9 0 0 0 19 9",key:"1e3vqb"}]]);a.s(["GitGraph",()=>d],27197)},34437,a=>{"use strict";var b=a.i(78352),c=a.i(806),d=a.i(10704),e=a.i(95556),f=a.i(27197),g=a.i(73258),h=a.i(63287),i=a.i(84104);let j=({onBack:a})=>{let j=[{title:"Assistant IA Co-Auteur",icon:c.Sparkles,desc:"Générez des paragraphes, brainstormez des idées et demandez conseil à une IA qui connaît votre univers."},{title:"Bible du Monde Vivante",icon:e.Globe,desc:"Gérez vos personnages, lieux et objets. L'IA les reconnaît et garde une cohérence absolue."},{title:"Story Workflow",icon:f.GitGraph,desc:"Visualisez votre intrigue sous forme de nœuds et gérez les embranchements de votre récit."},{title:"Boîte à Idées Kanban",icon:h.Lightbulb,desc:"Notez vos idées fugaces et transformez-les en chapitres quand vous êtes prêt."},{title:"Mise en page Pro",icon:g.BookOpen,desc:"Exportez au format PDF, Word ou EPUB avec une mise en page soignée et automatique."},{title:"Éditeur Riche",icon:d.Feather,desc:"Un traitement de texte complet avec mode focus et historique des modifications IA."}];return(0,b.jsx)("div",{className:"min-h-screen bg-[#eef2ff] py-20 px-8",children:(0,b.jsxs)("div",{className:"max-w-7xl mx-auto",children:[(0,b.jsxs)("button",{onClick:a,className:"flex items-center gap-2 text-slate-500 hover:text-blue-600 mb-12 font-bold transition-colors",children:[(0,b.jsx)(i.ArrowLeft,{size:20})," Retour"]}),(0,b.jsx)("h1",{className:"text-5xl font-black text-slate-900 mb-12 text-center",children:"Un univers d'outils pour votre créativité."}),(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:j.map((a,c)=>(0,b.jsxs)("div",{className:"bg-white p-8 rounded-3xl shadow-xl border border-indigo-50 hover:scale-105 transition-transform",children:[(0,b.jsx)("div",{className:"w-12 h-12 bg-indigo-100 rounded-2xl flex items-center justify-center text-indigo-600 mb-6",children:(0,b.jsx)(a.icon,{size:24})}),(0,b.jsx)("h3",{className:"text-xl font-bold text-slate-900 mb-4",children:a.title}),(0,b.jsx)("p",{className:"text-slate-600 leading-relaxed",children:a.desc})]},c))})]})})};var k=a.i(34896),l=a.i(75192);function m(){let a=(0,k.useRouter)(),{data:c}=(0,l.useSession)();return(0,b.jsx)(j,{onBack:()=>a.push(c?"/dashboard":"/")})}a.s(["default",()=>m],34437)}]; +module.exports=[56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},97442,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.AppRouterContext},42481,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.HooksClientContext},70676,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.ServerInsertedHtml},29892,a=>{"use strict";var b=a.i(28091);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],29892)},73258,a=>{"use strict";let b=(0,a.i(29892).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);a.s(["BookOpen",()=>b],73258)},806,a=>{"use strict";let b=(0,a.i(29892).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);a.s(["Sparkles",()=>b],806)},84104,a=>{"use strict";let b=(0,a.i(29892).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",()=>b],84104)},10704,a=>{"use strict";let b=(0,a.i(29892).default)("feather",[["path",{d:"M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z",key:"18jl4k"}],["path",{d:"M16 8 2 22",key:"vp34q"}],["path",{d:"M17.5 15H9",key:"1oz8nu"}]]);a.s(["Feather",()=>b],10704)},63287,a=>{"use strict";let b=(0,a.i(29892).default)("lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);a.s(["Lightbulb",()=>b],63287)},95556,27197,a=>{"use strict";var b=a.i(29892);let c=(0,b.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);a.s(["Globe",()=>c],95556);let d=(0,b.default)("git-graph",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M5 9v6",key:"158jrl"}],["circle",{cx:"5",cy:"18",r:"3",key:"104gr9"}],["path",{d:"M12 3v18",key:"108xh3"}],["circle",{cx:"19",cy:"6",r:"3",key:"108a5v"}],["path",{d:"M16 15.7A9 9 0 0 0 19 9",key:"1e3vqb"}]]);a.s(["GitGraph",()=>d],27197)},34437,a=>{"use strict";var b=a.i(78352),c=a.i(806),d=a.i(10704),e=a.i(95556),f=a.i(27197),g=a.i(73258),h=a.i(63287),i=a.i(84104);let j=({onBack:a})=>{let j=[{title:"Assistant IA Co-Auteur",icon:c.Sparkles,desc:"Générez des paragraphes, brainstormez des idées et demandez conseil à une IA qui connaît votre univers."},{title:"Bible du Monde Vivante",icon:e.Globe,desc:"Gérez vos personnages, lieux et objets. L'IA les reconnaît et garde une cohérence absolue."},{title:"Story Workflow",icon:f.GitGraph,desc:"Visualisez votre intrigue sous forme de nœuds et gérez les embranchements de votre récit."},{title:"Boîte à Idées Kanban",icon:h.Lightbulb,desc:"Notez vos idées fugaces et transformez-les en chapitres quand vous êtes prêt."},{title:"Mise en page Pro",icon:g.BookOpen,desc:"Exportez au format PDF, Word ou EPUB avec une mise en page soignée et automatique."},{title:"Éditeur Riche",icon:d.Feather,desc:"Un traitement de texte complet avec mode focus et historique des modifications IA."}];return(0,b.jsx)("div",{className:"min-h-screen bg-[#eef2ff] py-20 px-8",children:(0,b.jsxs)("div",{className:"max-w-7xl mx-auto",children:[(0,b.jsxs)("button",{onClick:a,className:"flex items-center gap-2 text-slate-500 hover:text-blue-600 mb-12 font-bold transition-colors",children:[(0,b.jsx)(i.ArrowLeft,{size:20})," Retour"]}),(0,b.jsx)("h1",{className:"text-5xl font-black text-slate-900 mb-12 text-center",children:"Un univers d'outils pour votre créativité."}),(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:j.map((a,c)=>(0,b.jsxs)("div",{className:"bg-white p-8 rounded-3xl shadow-xl border border-indigo-50 hover:scale-105 transition-transform",children:[(0,b.jsx)("div",{className:"w-12 h-12 bg-indigo-100 rounded-2xl flex items-center justify-center text-indigo-600 mb-6",children:(0,b.jsx)(a.icon,{size:24})}),(0,b.jsx)("h3",{className:"text-xl font-bold text-slate-900 mb-4",children:a.title}),(0,b.jsx)("p",{className:"text-slate-600 leading-relaxed",children:a.desc})]},c))})]})})};var k=a.i(34896),l=a.i(75192);function m(){let a=(0,k.useRouter)(),{data:c}=(0,l.useSession)();return(0,b.jsx)(j,{onBack:()=>a.push(c?"/dashboard":"/")})}a.s(["default",()=>m],34437)}]; -//# sourceMappingURL=%5Broot-of-the-server%5D__28fa855e._.js.map \ No newline at end of file +//# sourceMappingURL=%5Broot-of-the-server%5D__26d3d76a._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__28fa855e._.js.map b/.next/server/chunks/ssr/[root-of-the-server]__26d3d76a._.js.map similarity index 60% rename from .next/server/chunks/ssr/[root-of-the-server]__28fa855e._.js.map rename to .next/server/chunks/ssr/[root-of-the-server]__26d3d76a._.js.map index e5a54af..5398606 100644 --- a/.next/server/chunks/ssr/[root-of-the-server]__28fa855e._.js.map +++ b/.next/server/chunks/ssr/[root-of-the-server]__26d3d76a._.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book-open.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/sparkles.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/feather.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-left.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/lightbulb.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/git-graph.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/globe.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/FeaturesPage.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/features/page.tsx"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 7v14', key: '1akyts' }],\n [\n 'path',\n {\n d: 'M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z',\n key: 'ruj8y',\n },\n ],\n];\n\n/**\n * @component @name BookOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgN3YxNCIgLz4KICA8cGF0aCBkPSJNMyAxOGExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWg1YTQgNCAwIDAgMSA0IDQgNCA0IDAgMCAxIDQtNGg1YTEgMSAwIDAgMSAxIDF2MTNhMSAxIDAgMCAxLTEgMWgtNmEzIDMgMCAwIDAtMyAzIDMgMyAwIDAgMC0zLTN6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/book-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst BookOpen = createLucideIcon('book-open', __iconNode);\n\nexport default BookOpen;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z',\n key: '1s2grr',\n },\n ],\n ['path', { d: 'M20 2v4', key: '1rf3ol' }],\n ['path', { d: 'M22 4h-4', key: 'gwowj6' }],\n ['circle', { cx: '4', cy: '20', r: '2', key: '6kqj1y' }],\n];\n\n/**\n * @component @name Sparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuMDE3IDIuODE0YTEgMSAwIDAgMSAxLjk2NiAwbDEuMDUxIDUuNTU4YTIgMiAwIDAgMCAxLjU5NCAxLjU5NGw1LjU1OCAxLjA1MWExIDEgMCAwIDEgMCAxLjk2NmwtNS41NTggMS4wNTFhMiAyIDAgMCAwLTEuNTk0IDEuNTk0bC0xLjA1MSA1LjU1OGExIDEgMCAwIDEtMS45NjYgMGwtMS4wNTEtNS41NThhMiAyIDAgMCAwLTEuNTk0LTEuNTk0bC01LjU1OC0xLjA1MWExIDEgMCAwIDEgMC0xLjk2Nmw1LjU1OC0xLjA1MWEyIDIgMCAwIDAgMS41OTQtMS41OTR6IiAvPgogIDxwYXRoIGQ9Ik0yMCAydjQiIC8+CiAgPHBhdGggZD0iTTIyIDRoLTQiIC8+CiAgPGNpcmNsZSBjeD0iNCIgY3k9IjIwIiByPSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/sparkles\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Sparkles = createLucideIcon('sparkles', __iconNode);\n\nexport default Sparkles;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z',\n key: '18jl4k',\n },\n ],\n ['path', { d: 'M16 8 2 22', key: 'vp34q' }],\n ['path', { d: 'M17.5 15H9', key: '1oz8nu' }],\n];\n\n/**\n * @component @name Feather\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIuNjcgMTlhMiAyIDAgMCAwIDEuNDE2LS41ODhsNi4xNTQtNi4xNzJhNiA2IDAgMCAwLTguNDktOC40OUw1LjU4NiA5LjkxNEEyIDIgMCAwIDAgNSAxMS4zMjhWMThhMSAxIDAgMCAwIDEgMXoiIC8+CiAgPHBhdGggZD0iTTE2IDggMiAyMiIgLz4KICA8cGF0aCBkPSJNMTcuNSAxNUg5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/feather\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Feather = createLucideIcon('feather', __iconNode);\n\nexport default Feather;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm12 19-7-7 7-7', key: '1l729n' }],\n ['path', { d: 'M19 12H5', key: 'x3x0zl' }],\n];\n\n/**\n * @component @name ArrowLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTIgMTktNy03IDctNyIgLz4KICA8cGF0aCBkPSJNMTkgMTJINSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/arrow-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowLeft = createLucideIcon('arrow-left', __iconNode);\n\nexport default ArrowLeft;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5',\n key: '1gvzjb',\n },\n ],\n ['path', { d: 'M9 18h6', key: 'x1upvd' }],\n ['path', { d: 'M10 22h4', key: 'ceow96' }],\n];\n\n/**\n * @component @name Lightbulb\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgMTRjLjItMSAuNy0xLjcgMS41LTIuNSAxLS45IDEuNS0yLjIgMS41LTMuNUE2IDYgMCAwIDAgNiA4YzAgMSAuMiAyLjIgMS41IDMuNS43LjcgMS4zIDEuNSAxLjUgMi41IiAvPgogIDxwYXRoIGQ9Ik05IDE4aDYiIC8+CiAgPHBhdGggZD0iTTEwIDIyaDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/lightbulb\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Lightbulb = createLucideIcon('lightbulb', __iconNode);\n\nexport default Lightbulb;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '5', cy: '6', r: '3', key: '1qnov2' }],\n ['path', { d: 'M5 9v6', key: '158jrl' }],\n ['circle', { cx: '5', cy: '18', r: '3', key: '104gr9' }],\n ['path', { d: 'M12 3v18', key: '108xh3' }],\n ['circle', { cx: '19', cy: '6', r: '3', key: '108a5v' }],\n ['path', { d: 'M16 15.7A9 9 0 0 0 19 9', key: '1e3vqb' }],\n];\n\n/**\n * @component @name GitGraph\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSI1IiBjeT0iNiIgcj0iMyIgLz4KICA8cGF0aCBkPSJNNSA5djYiIC8+CiAgPGNpcmNsZSBjeD0iNSIgY3k9IjE4IiByPSIzIiAvPgogIDxwYXRoIGQ9Ik0xMiAzdjE4IiAvPgogIDxjaXJjbGUgY3g9IjE5IiBjeT0iNiIgcj0iMyIgLz4KICA8cGF0aCBkPSJNMTYgMTUuN0E5IDkgMCAwIDAgMTkgOSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/git-graph\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GitGraph = createLucideIcon('git-graph', __iconNode);\n\nexport default GitGraph;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20', key: '13o1zl' }],\n ['path', { d: 'M2 12h20', key: '9i4pu4' }],\n];\n\n/**\n * @component @name Globe\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJNMTIgMmExNC41IDE0LjUgMCAwIDAgMCAyMCAxNC41IDE0LjUgMCAwIDAgMC0yMCIgLz4KICA8cGF0aCBkPSJNMiAxMmgyMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/globe\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Globe = createLucideIcon('globe', __iconNode);\n\nexport default Globe;\n","'use client';\n\n\nimport React from 'react';\nimport { Sparkles, Feather, Globe, GitGraph, BookOpen, Download, Lightbulb, Zap, ArrowLeft } from 'lucide-react';\n\ninterface FeaturesPageProps {\n onBack: () => void;\n}\n\nconst FeaturesPage: React.FC = ({ onBack }) => {\n const features = [\n { title: \"Assistant IA Co-Auteur\", icon: Sparkles, desc: \"Générez des paragraphes, brainstormez des idées et demandez conseil à une IA qui connaît votre univers.\" },\n { title: \"Bible du Monde Vivante\", icon: Globe, desc: \"Gérez vos personnages, lieux et objets. L'IA les reconnaît et garde une cohérence absolue.\" },\n { title: \"Story Workflow\", icon: GitGraph, desc: \"Visualisez votre intrigue sous forme de nœuds et gérez les embranchements de votre récit.\" },\n { title: \"Boîte à Idées Kanban\", icon: Lightbulb, desc: \"Notez vos idées fugaces et transformez-les en chapitres quand vous êtes prêt.\" },\n { title: \"Mise en page Pro\", icon: BookOpen, desc: \"Exportez au format PDF, Word ou EPUB avec une mise en page soignée et automatique.\" },\n { title: \"Éditeur Riche\", icon: Feather, desc: \"Un traitement de texte complet avec mode focus et historique des modifications IA.\" }\n ];\n\n return (\n
\n
\n \n

Un univers d'outils pour votre créativité.

\n
\n {features.map((f, i) => (\n
\n
\n \n
\n

{f.title}

\n

{f.desc}

\n
\n ))}\n
\n
\n
\n );\n};\n\nexport default FeaturesPage;\n","'use client';\r\n\r\nimport FeaturesPage from '@/components/FeaturesPage';\r\nimport { useRouter } from 'next/navigation';\r\nimport { useSession } from 'next-auth/react';\r\n\r\nexport default function Features() {\r\n const router = useRouter();\r\n const { data: session } = useSession();\r\n\r\n return (\r\n router.push(session ? '/dashboard' : '/')}\r\n />\r\n );\r\n}\r\n"],"names":["module","exports","require","vendored","AppRouterContext","HooksClientContext","ServerInsertedHtml"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]} \ No newline at end of file +{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book-open.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/sparkles.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-left.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/feather.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/lightbulb.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/git-graph.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/globe.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/FeaturesPage.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/features/page.tsx"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 7v14', key: '1akyts' }],\n [\n 'path',\n {\n d: 'M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z',\n key: 'ruj8y',\n },\n ],\n];\n\n/**\n * @component @name BookOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgN3YxNCIgLz4KICA8cGF0aCBkPSJNMyAxOGExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWg1YTQgNCAwIDAgMSA0IDQgNCA0IDAgMCAxIDQtNGg1YTEgMSAwIDAgMSAxIDF2MTNhMSAxIDAgMCAxLTEgMWgtNmEzIDMgMCAwIDAtMyAzIDMgMyAwIDAgMC0zLTN6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/book-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst BookOpen = createLucideIcon('book-open', __iconNode);\n\nexport default BookOpen;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z',\n key: '1s2grr',\n },\n ],\n ['path', { d: 'M20 2v4', key: '1rf3ol' }],\n ['path', { d: 'M22 4h-4', key: 'gwowj6' }],\n ['circle', { cx: '4', cy: '20', r: '2', key: '6kqj1y' }],\n];\n\n/**\n * @component @name Sparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuMDE3IDIuODE0YTEgMSAwIDAgMSAxLjk2NiAwbDEuMDUxIDUuNTU4YTIgMiAwIDAgMCAxLjU5NCAxLjU5NGw1LjU1OCAxLjA1MWExIDEgMCAwIDEgMCAxLjk2NmwtNS41NTggMS4wNTFhMiAyIDAgMCAwLTEuNTk0IDEuNTk0bC0xLjA1MSA1LjU1OGExIDEgMCAwIDEtMS45NjYgMGwtMS4wNTEtNS41NThhMiAyIDAgMCAwLTEuNTk0LTEuNTk0bC01LjU1OC0xLjA1MWExIDEgMCAwIDEgMC0xLjk2Nmw1LjU1OC0xLjA1MWEyIDIgMCAwIDAgMS41OTQtMS41OTR6IiAvPgogIDxwYXRoIGQ9Ik0yMCAydjQiIC8+CiAgPHBhdGggZD0iTTIyIDRoLTQiIC8+CiAgPGNpcmNsZSBjeD0iNCIgY3k9IjIwIiByPSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/sparkles\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Sparkles = createLucideIcon('sparkles', __iconNode);\n\nexport default Sparkles;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm12 19-7-7 7-7', key: '1l729n' }],\n ['path', { d: 'M19 12H5', key: 'x3x0zl' }],\n];\n\n/**\n * @component @name ArrowLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTIgMTktNy03IDctNyIgLz4KICA8cGF0aCBkPSJNMTkgMTJINSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/arrow-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowLeft = createLucideIcon('arrow-left', __iconNode);\n\nexport default ArrowLeft;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z',\n key: '18jl4k',\n },\n ],\n ['path', { d: 'M16 8 2 22', key: 'vp34q' }],\n ['path', { d: 'M17.5 15H9', key: '1oz8nu' }],\n];\n\n/**\n * @component @name Feather\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIuNjcgMTlhMiAyIDAgMCAwIDEuNDE2LS41ODhsNi4xNTQtNi4xNzJhNiA2IDAgMCAwLTguNDktOC40OUw1LjU4NiA5LjkxNEEyIDIgMCAwIDAgNSAxMS4zMjhWMThhMSAxIDAgMCAwIDEgMXoiIC8+CiAgPHBhdGggZD0iTTE2IDggMiAyMiIgLz4KICA8cGF0aCBkPSJNMTcuNSAxNUg5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/feather\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Feather = createLucideIcon('feather', __iconNode);\n\nexport default Feather;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5',\n key: '1gvzjb',\n },\n ],\n ['path', { d: 'M9 18h6', key: 'x1upvd' }],\n ['path', { d: 'M10 22h4', key: 'ceow96' }],\n];\n\n/**\n * @component @name Lightbulb\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgMTRjLjItMSAuNy0xLjcgMS41LTIuNSAxLS45IDEuNS0yLjIgMS41LTMuNUE2IDYgMCAwIDAgNiA4YzAgMSAuMiAyLjIgMS41IDMuNS43LjcgMS4zIDEuNSAxLjUgMi41IiAvPgogIDxwYXRoIGQ9Ik05IDE4aDYiIC8+CiAgPHBhdGggZD0iTTEwIDIyaDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/lightbulb\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Lightbulb = createLucideIcon('lightbulb', __iconNode);\n\nexport default Lightbulb;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '5', cy: '6', r: '3', key: '1qnov2' }],\n ['path', { d: 'M5 9v6', key: '158jrl' }],\n ['circle', { cx: '5', cy: '18', r: '3', key: '104gr9' }],\n ['path', { d: 'M12 3v18', key: '108xh3' }],\n ['circle', { cx: '19', cy: '6', r: '3', key: '108a5v' }],\n ['path', { d: 'M16 15.7A9 9 0 0 0 19 9', key: '1e3vqb' }],\n];\n\n/**\n * @component @name GitGraph\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSI1IiBjeT0iNiIgcj0iMyIgLz4KICA8cGF0aCBkPSJNNSA5djYiIC8+CiAgPGNpcmNsZSBjeD0iNSIgY3k9IjE4IiByPSIzIiAvPgogIDxwYXRoIGQ9Ik0xMiAzdjE4IiAvPgogIDxjaXJjbGUgY3g9IjE5IiBjeT0iNiIgcj0iMyIgLz4KICA8cGF0aCBkPSJNMTYgMTUuN0E5IDkgMCAwIDAgMTkgOSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/git-graph\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GitGraph = createLucideIcon('git-graph', __iconNode);\n\nexport default GitGraph;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20', key: '13o1zl' }],\n ['path', { d: 'M2 12h20', key: '9i4pu4' }],\n];\n\n/**\n * @component @name Globe\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJNMTIgMmExNC41IDE0LjUgMCAwIDAgMCAyMCAxNC41IDE0LjUgMCAwIDAgMC0yMCIgLz4KICA8cGF0aCBkPSJNMiAxMmgyMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/globe\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Globe = createLucideIcon('globe', __iconNode);\n\nexport default Globe;\n","'use client';\n\n\nimport React from 'react';\nimport { Sparkles, Feather, Globe, GitGraph, BookOpen, Download, Lightbulb, Zap, ArrowLeft } from 'lucide-react';\n\ninterface FeaturesPageProps {\n onBack: () => void;\n}\n\nconst FeaturesPage: React.FC = ({ onBack }) => {\n const features = [\n { title: \"Assistant IA Co-Auteur\", icon: Sparkles, desc: \"Générez des paragraphes, brainstormez des idées et demandez conseil à une IA qui connaît votre univers.\" },\n { title: \"Bible du Monde Vivante\", icon: Globe, desc: \"Gérez vos personnages, lieux et objets. L'IA les reconnaît et garde une cohérence absolue.\" },\n { title: \"Story Workflow\", icon: GitGraph, desc: \"Visualisez votre intrigue sous forme de nœuds et gérez les embranchements de votre récit.\" },\n { title: \"Boîte à Idées Kanban\", icon: Lightbulb, desc: \"Notez vos idées fugaces et transformez-les en chapitres quand vous êtes prêt.\" },\n { title: \"Mise en page Pro\", icon: BookOpen, desc: \"Exportez au format PDF, Word ou EPUB avec une mise en page soignée et automatique.\" },\n { title: \"Éditeur Riche\", icon: Feather, desc: \"Un traitement de texte complet avec mode focus et historique des modifications IA.\" }\n ];\n\n return (\n
\n
\n \n

Un univers d'outils pour votre créativité.

\n
\n {features.map((f, i) => (\n
\n
\n \n
\n

{f.title}

\n

{f.desc}

\n
\n ))}\n
\n
\n
\n );\n};\n\nexport default FeaturesPage;\n","'use client';\r\n\r\nimport FeaturesPage from '@/components/FeaturesPage';\r\nimport { useRouter } from 'next/navigation';\r\nimport { useSession } from 'next-auth/react';\r\n\r\nexport default function Features() {\r\n const router = useRouter();\r\n const { data: session } = useSession();\r\n\r\n return (\r\n router.push(session ? '/dashboard' : '/')}\r\n />\r\n );\r\n}\r\n"],"names":["module","exports","require","vendored","AppRouterContext","HooksClientContext","ServerInsertedHtml"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__dfe2f44e._.js b/.next/server/chunks/ssr/[root-of-the-server]__330afc62._.js similarity index 83% rename from .next/server/chunks/ssr/[root-of-the-server]__dfe2f44e._.js rename to .next/server/chunks/ssr/[root-of-the-server]__330afc62._.js index 7c8c5de..4b1c938 100644 --- a/.next/server/chunks/ssr/[root-of-the-server]__dfe2f44e._.js +++ b/.next/server/chunks/ssr/[root-of-the-server]__330afc62._.js @@ -1,3 +1,3 @@ -module.exports=[79080,a=>{"use strict";let b=(0,a.i(29892).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>b],79080)},73258,a=>{"use strict";let b=(0,a.i(29892).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);a.s(["BookOpen",()=>b],73258)},82772,a=>{"use strict";let b=(0,a.i(29892).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);a.s(["User",()=>b],82772)},33782,a=>{"use strict";let b=(0,a.i(29892).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",()=>b],33782)},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},97442,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.AppRouterContext},42481,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.HooksClientContext},70676,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.ServerInsertedHtml},29892,a=>{"use strict";var b=a.i(28091);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],29892)},37620,a=>{"use strict";var b,c=((b={}).CHARACTER="Personnage",b.LOCATION="Lieu",b.OBJECT="Objet",b.NOTE="Note",b);a.s(["EntityType",()=>c])},68565,a=>{"use strict";let b=(0,a.i(29892).default)("pen-line",[["path",{d:"M13 21h8",key:"1jsn5i"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]);a.s(["Edit3",()=>b],68565)},45285,a=>{"use strict";let b=(0,a.i(29892).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);a.s(["Target",()=>b],45285)},93216,a=>{"use strict";let b=(0,a.i(29892).default)("flame",[["path",{d:"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4",key:"1slcih"}]]);a.s(["Flame",()=>b],93216)},14294,a=>{"use strict";let b=(0,a.i(29892).default)("book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]]);a.s(["Book",()=>b],14294)},3622,68239,a=>{"use strict";var b=a.i(28091),c=a.i(31715),d=a.i(37620);let e="Nouveau Roman",f="Auteur Inconnu",g={id:"chap-1",title:"Chapitre 1",content:"

Il était une fois...

",summary:"Début de l'histoire."},h={[d.EntityType.CHARACTER]:"👤",[d.EntityType.LOCATION]:"🏰",[d.EntityType.OBJECT]:"🗝️",[d.EntityType.NOTE]:"📝"},i={[d.EntityType.CHARACTER]:"bg-blue-100 text-blue-800 border-blue-200",[d.EntityType.LOCATION]:"bg-green-100 text-green-800 border-green-200",[d.EntityType.OBJECT]:"bg-amber-100 text-amber-800 border-amber-200",[d.EntityType.NOTE]:"bg-gray-100 text-gray-800 border-gray-200"};a.s(["ARCHETYPES",0,["Le Héros","L'Ombre / Le Méchant","Le Mentor","Le Gardien du Seuil","Le Shapeshifter (Changeforme)","Le Trickster (Farceur)","L'Allié","L'Élu","Le Rebelle","Le Séducteur","Le Sage","Le Guerrier","L'Innocent"],"DEFAULT_AUTHOR",0,f,"DEFAULT_BOOK_TITLE",0,e,"ENTITY_COLORS",0,i,"ENTITY_ICONS",0,h,"EYE_COLORS",0,["Marron","Bleu","Vert","Noisette","Gris","Noir","Vairons","Ambre"],"GENRES",0,["Fantasy","Science-Fiction","Thriller / Polar","Romance","Historique","Horreur","Aventure","Contemporain","Jeunesse / Young Adult","Dystopie"],"HAIR_COLORS",0,["Brun","Noir","Blond","Roux","Auburn","Gris","Blanc","Châtain","Chauve","Teinture (Bleu/Rose/Etc)"],"INITIAL_CHAPTER",0,g,"POV_OPTIONS",0,["1ère personne (Je)","3ème personne (Limitée au protagoniste)","3ème personne (Omnisciente)","Multi-points de vue (Alterné)"],"TENSE_OPTIONS",0,["Passé (Passé simple / Imparfait)","Présent de narration"],"TONES",0,["Sombre & Sérieux","Léger & Humoristique","Épique & Grandiose","Mélancolique","Mystérieux","Optimiste","Cynique","Romantique"]],68239),a.s(["useProjects",0,a=>{let[d,h]=(0,b.useState)([]),[i,j]=(0,b.useState)(null),[k,l]=(0,b.useState)(!1);(0,b.useEffect)(()=>{a?(async()=>{l(!0);try{let a=(await c.default.projects.list()||[]).map(a=>({id:a.id,title:a.title,author:a.author,lastModified:new Date(a.updatedAt).getTime(),chapters:[],entities:[],ideas:[],settings:a.settings||void 0}));h(a)}catch(a){console.error("Failed to load projects",a)}finally{l(!1)}})():h([])},[a]),(0,b.useEffect)(()=>{i&&(async()=>{try{let a=await c.default.projects.get(i),b={id:a.id,title:a.title,author:a.author,lastModified:new Date(a.updatedAt).getTime(),settings:a.settings||void 0,styleGuide:a.styleGuide||void 0,chapters:(a.chapters||[]).map(a=>({id:a.id,title:a.title,content:a.content,summary:a.summary})),entities:(a.entities||[]).map(a=>({id:a.id,type:a.type,name:a.name,description:a.description,details:a.details,storyContext:a.storyContext,attributes:a.attributes,customValues:a.customValues})),ideas:(a.ideas||[]).map(a=>({id:a.id,title:a.title,description:a.description,status:a.status,category:a.category,createdAt:new Date(a.createdAt).getTime()})),workflow:{nodes:(a.plotNodes||[]).map(a=>({id:a.id,x:a.x,y:a.y,title:a.title,description:a.description,color:a.color,type:a.type})),connections:(a.plotConnections||[]).map(a=>({id:a.id,source:a.source,target:a.target}))}};h(a=>a.map(a=>a.id===i?b:a))}catch(a){console.error("Failed to load project details",a)}})()},[i]);let m=async(a,b)=>{try{let d=await c.default.chapters.create({projectId:a,title:b.title||"New Chapter",content:b.content||"",summary:b.summary||void 0});return h(b=>b.map(b=>b.id!==a?b:{...b,chapters:[...b.chapters,{id:d.id,title:d.title,content:d.content,summary:d.summary}]})),d.id}catch(a){return console.error("Failed to add chapter",a),null}};return{projects:d,currentProjectId:i,setCurrentProjectId:j,createProject:async()=>{if(a)try{let b=await c.default.projects.create({title:e,author:a.name||f,settings:{genre:"Fantasy",targetAudience:"Adult",tone:"Epic"}}),d={id:b.id,title:b.title,author:b.author,lastModified:Date.now(),chapters:[],entities:[],ideas:[],settings:b.settings};return h(a=>[...a,d]),await m(b.id,g),b.id}catch(a){console.error("Failed to create project",a)}},updateProject:async(a,b)=>{h(c=>c.map(c=>c.id===a?{...c,...b}:c));try{let d={};void 0!==b.title&&(d.title=b.title),void 0!==b.author&&(d.author=b.author),void 0!==b.settings&&(d.settings=b.settings),void 0!==b.styleGuide&&(d.styleGuide=b.styleGuide),await c.default.projects.update(a,d)}catch(a){console.error("Failed to update project",a)}},addChapter:m,updateChapter:async(a,b,d)=>{h(c=>c.map(c=>c.id!==a?c:{...c,chapters:c.chapters.map(a=>a.id===b?{...a,...d}:a)}));try{await c.default.chapters.update(b,d)}catch(a){console.error("Failed to update chapter",a)}},createEntity:async(a,b,d)=>{try{let e=await c.default.entities.create({projectId:a,type:b,name:d?.name||`Nouveau ${b}`,description:d?.description||"",details:d?.details||"",attributes:d?.attributes||void 0,customValues:d?.customValues||void 0});return h(b=>b.map(b=>b.id!==a?b:{...b,entities:[...b.entities,{id:e.id,type:e.type,name:e.name,description:e.description,details:e.details,attributes:e.attributes,customValues:e.customValues||{}}]})),e.id}catch(a){throw console.error("Failed to create entity",a),a}},updateEntity:async(a,b,d)=>{h(c=>c.map(c=>c.id!==a?c:{...c,entities:c.entities.map(a=>a.id===b?{...a,...d}:a)}));try{await c.default.entities.update(b,d)}catch(a){console.error("Failed to update entity",a)}},deleteEntity:async(a,b)=>{h(c=>c.map(c=>c.id!==a?c:{...c,entities:c.entities.filter(a=>a.id!==b)}));try{await c.default.entities.delete(b)}catch(a){console.error("Failed to delete entity",a)}},deleteProject:async a=>{try{await c.default.projects.delete(a),h(b=>b.filter(b=>b.id!==a)),i===a&&j(null)}catch(a){console.error("Failed to delete project",a)}}}}],3622)},5127,38089,a=>{"use strict";var b=a.i(29892);let c=(0,b.default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",()=>c],5127);let d=(0,b.default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);a.s(["LogOut",()=>d],38089)},51780,a=>{"use strict";var b=a.i(78352),c=a.i(34896),d=a.i(95121),e=a.i(3622),f=a.i(33782),g=a.i(14294);let h=(0,a.i(29892).default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);var i=a.i(5127),j=a.i(38089),k=a.i(82772),l=a.i(45285),m=a.i(93216),n=a.i(68565);let o=({user:a,projects:c,onSelect:d,onCreate:e,onLogout:o,onPricing:p,onProfile:q})=>(0,b.jsx)("div",{className:"min-h-screen bg-[#eef2ff] p-8 font-sans",children:(0,b.jsxs)("div",{className:"max-w-6xl mx-auto space-y-8",children:[(0,b.jsxs)("div",{className:"flex flex-col md:flex-row justify-between items-center bg-white p-8 rounded-[2rem] shadow-sm border border-indigo-100 gap-6",children:[(0,b.jsxs)("div",{className:"flex items-center gap-6",children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("img",{src:a.avatar,className:"w-20 h-20 rounded-full border-4 border-slate-50 shadow-lg object-cover",alt:"Avatar"}),(0,b.jsx)("div",{className:"absolute -bottom-1 -right-1 bg-green-500 w-5 h-5 rounded-full border-4 border-white"})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("h2",{className:"text-3xl font-black text-slate-900",children:["Bonjour, ",a.name," 👋"]}),(0,b.jsxs)("div",{className:"flex items-center gap-3 mt-1",children:[(0,b.jsx)("span",{className:"px-3 py-1 rounded-full bg-indigo-100 text-indigo-700 text-[10px] uppercase font-black tracking-widest",children:a.subscription.plan}),(0,b.jsx)("span",{className:"text-slate-400 text-xs font-medium",children:"Membre depuis le 24 janv."})]})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsxs)("button",{onClick:q,className:"bg-slate-50 text-slate-700 px-5 py-2.5 rounded-xl text-sm font-bold hover:bg-slate-100 transition-all flex items-center gap-2 border border-slate-200",children:[(0,b.jsx)(k.User,{size:18})," Mon Profil"]}),(0,b.jsx)("button",{onClick:o,className:"p-3 text-slate-400 hover:text-red-500 rounded-full hover:bg-red-50 transition-colors",children:(0,b.jsx)(j.LogOut,{size:20})})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[(0,b.jsxs)("div",{className:"bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4",children:[(0,b.jsx)("div",{className:"bg-orange-100 p-3 rounded-2xl text-orange-600",children:(0,b.jsx)(m.Flame,{size:24})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-xs font-bold text-slate-400 uppercase tracking-wider",children:"Série actuelle"}),(0,b.jsxs)("p",{className:"text-2xl font-black text-slate-900",children:[a.stats.writingStreak," Jours"]})]})]}),(0,b.jsxs)("div",{className:"bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4",children:[(0,b.jsx)("div",{className:"bg-blue-100 p-3 rounded-2xl text-blue-600",children:(0,b.jsx)(n.Edit3,{size:24})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-xs font-bold text-slate-400 uppercase tracking-wider",children:"Mots écrits"}),(0,b.jsx)("p",{className:"text-2xl font-black text-slate-900",children:a.stats.totalWordsWritten.toLocaleString()})]})]}),(0,b.jsxs)("div",{className:"bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4",children:[(0,b.jsx)("div",{className:"bg-indigo-100 p-3 rounded-2xl text-indigo-600",children:(0,b.jsx)(l.Target,{size:24})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-xs font-bold text-slate-400 uppercase tracking-wider",children:"Objectif du jour"}),(0,b.jsxs)("p",{className:"text-2xl font-black text-slate-900",children:[a.preferences.dailyWordGoal," Mots"]})]})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-8",children:[(0,b.jsxs)("div",{className:"lg:col-span-2 space-y-4",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,b.jsx)("h3",{className:"text-2xl font-black text-slate-900",children:"Mes Romans"}),(0,b.jsxs)("button",{onClick:e,className:"flex items-center gap-2 bg-blue-600 text-white px-6 py-3 rounded-2xl font-bold hover:bg-blue-700 transition-all shadow-xl shadow-blue-200",children:[(0,b.jsx)(f.Plus,{size:20})," Écrire un nouveau livre"]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[c.map(a=>(0,b.jsxs)("div",{onClick:()=>d(a.id),className:"bg-white p-8 rounded-[2.5rem] border border-indigo-50 shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"bg-blue-50 w-12 h-12 rounded-2xl flex items-center justify-center text-blue-600 mb-6 group-hover:bg-blue-600 group-hover:text-white transition-colors",children:(0,b.jsx)(g.Book,{size:24})}),(0,b.jsx)("h4",{className:"font-black text-slate-900 text-xl truncate mb-1",children:a.title}),(0,b.jsxs)("p",{className:"text-slate-400 text-sm",children:["Dernière modification : ",new Date(a.lastModified).toLocaleDateString()]})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center text-[10px] text-slate-400 font-black uppercase tracking-widest border-t border-slate-50 pt-4",children:[(0,b.jsxs)("span",{children:[a.chapters.length," Chapitres"]}),(0,b.jsx)(i.ChevronRight,{size:20,className:"group-hover:text-blue-600 transition-transform group-hover:translate-x-1 duration-300"})]})]},a.id)),0===c.length&&(0,b.jsxs)("div",{className:"col-span-2 py-24 bg-white rounded-[3rem] border-2 border-dashed border-indigo-100 flex flex-col items-center justify-center text-indigo-300",children:[(0,b.jsx)(g.Book,{size:64,className:"mb-6 opacity-20"}),(0,b.jsx)("p",{className:"font-bold text-lg",children:"Prêt à commencer votre premier roman ?"}),(0,b.jsx)("button",{onClick:e,className:"mt-4 text-blue-600 font-bold hover:underline",children:"Créer un projet maintenant"})]})]})]}),(0,b.jsx)("div",{className:"space-y-6",children:(0,b.jsxs)("div",{className:"bg-slate-900 text-white p-8 rounded-[2.5rem] shadow-xl relative overflow-hidden",children:[(0,b.jsx)("div",{className:"absolute top-0 right-0 w-32 h-32 bg-indigo-500/20 blur-[60px] -z-1"}),(0,b.jsxs)("h3",{className:"font-black text-xl mb-6 flex items-center gap-2",children:[(0,b.jsx)(h,{size:20,className:"text-yellow-400"})," Utilisation"]}),(0,b.jsxs)("div",{className:"space-y-8",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex justify-between text-[10px] font-black text-slate-400 uppercase tracking-widest mb-2",children:[(0,b.jsx)("span",{children:"Actions IA"}),(0,b.jsxs)("span",{children:[a.usage.aiActionsCurrent," / ",999999===a.usage.aiActionsLimit?"∞":a.usage.aiActionsLimit]})]}),(0,b.jsx)("div",{className:"h-3 w-full bg-slate-800 rounded-full overflow-hidden",children:(0,b.jsx)("div",{className:"h-full bg-blue-500 transition-all duration-1000 shadow-[0_0_10px_rgba(59,130,246,0.5)]",style:{width:`${Math.min(100,a.usage.aiActionsCurrent/a.usage.aiActionsLimit*100)}%`}})})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex justify-between text-[10px] font-black text-slate-400 uppercase tracking-widest mb-2",children:[(0,b.jsx)("span",{children:"Emplacements Roman"}),(0,b.jsxs)("span",{children:[c.length," / ",a.usage.projectsLimit]})]}),(0,b.jsx)("div",{className:"h-3 w-full bg-slate-800 rounded-full overflow-hidden",children:(0,b.jsx)("div",{className:"h-full bg-indigo-500 transition-all duration-1000 shadow-[0_0_10px_rgba(99,102,241,0.5)]",style:{width:`${Math.min(100,c.length/a.usage.projectsLimit*100)}%`}})})]})]}),(0,b.jsx)("button",{onClick:p,className:"w-full mt-10 bg-white/10 hover:bg-white/20 py-4 rounded-2xl text-sm font-bold transition-all",children:"Upgrade Plan"})]})})]})]})});var p=a.i(79080),q=a.i(73258),r=a.i(28091);function s(){let a=(0,c.useRouter)(),{user:f,logout:g,loading:h}=(0,d.useAuthContext)(),{projects:i,setCurrentProjectId:j,createProject:k}=(0,e.useProjects)(f);return((0,r.useEffect)(()=>{h||f||a.replace("/login")},[f,h,a]),h||!f)?(0,b.jsxs)("div",{className:"h-screen w-full flex flex-col items-center justify-center bg-slate-900 text-white",children:[(0,b.jsx)(p.Loader2,{className:"animate-spin text-blue-500 mb-4",size:48}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(q.BookOpen,{className:"text-blue-500",size:20}),(0,b.jsx)("span",{className:"text-lg font-bold",children:"PlumeIA"})]})]}):(0,b.jsx)(o,{user:f,projects:i,onSelect:b=>{j(b),a.push(`/project/${b}`)},onCreate:async()=>{let b=await k();b&&(j(b),a.push(`/project/${b}`))},onLogout:()=>{g(),a.push("/")},onPricing:()=>a.push("/pricing"),onProfile:()=>a.push("/profile")})}a.s(["default",()=>s],51780)}]; +module.exports=[56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},97442,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.AppRouterContext},42481,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.HooksClientContext},70676,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.ServerInsertedHtml},29892,a=>{"use strict";var b=a.i(28091);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],29892)},79080,a=>{"use strict";let b=(0,a.i(29892).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>b],79080)},82772,a=>{"use strict";let b=(0,a.i(29892).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);a.s(["User",()=>b],82772)},73258,a=>{"use strict";let b=(0,a.i(29892).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);a.s(["BookOpen",()=>b],73258)},37620,a=>{"use strict";var b,c=((b={}).CHARACTER="Personnage",b.LOCATION="Lieu",b.OBJECT="Objet",b.NOTE="Note",b);a.s(["EntityType",()=>c])},33782,a=>{"use strict";let b=(0,a.i(29892).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",()=>b],33782)},68565,a=>{"use strict";let b=(0,a.i(29892).default)("pen-line",[["path",{d:"M13 21h8",key:"1jsn5i"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]);a.s(["Edit3",()=>b],68565)},45285,a=>{"use strict";let b=(0,a.i(29892).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);a.s(["Target",()=>b],45285)},93216,a=>{"use strict";let b=(0,a.i(29892).default)("flame",[["path",{d:"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4",key:"1slcih"}]]);a.s(["Flame",()=>b],93216)},14294,a=>{"use strict";let b=(0,a.i(29892).default)("book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]]);a.s(["Book",()=>b],14294)},3622,68239,a=>{"use strict";var b=a.i(28091),c=a.i(31715),d=a.i(37620);let e="Nouveau Roman",f="Auteur Inconnu",g={id:"chap-1",title:"Chapitre 1",content:"

Il était une fois...

",summary:"Début de l'histoire."},h={[d.EntityType.CHARACTER]:"👤",[d.EntityType.LOCATION]:"🏰",[d.EntityType.OBJECT]:"🗝️",[d.EntityType.NOTE]:"📝"},i={[d.EntityType.CHARACTER]:"bg-blue-100 text-blue-800 border-blue-200",[d.EntityType.LOCATION]:"bg-green-100 text-green-800 border-green-200",[d.EntityType.OBJECT]:"bg-amber-100 text-amber-800 border-amber-200",[d.EntityType.NOTE]:"bg-gray-100 text-gray-800 border-gray-200"};a.s(["ARCHETYPES",0,["Le Héros","L'Ombre / Le Méchant","Le Mentor","Le Gardien du Seuil","Le Shapeshifter (Changeforme)","Le Trickster (Farceur)","L'Allié","L'Élu","Le Rebelle","Le Séducteur","Le Sage","Le Guerrier","L'Innocent"],"DEFAULT_AUTHOR",0,f,"DEFAULT_BOOK_TITLE",0,e,"ENTITY_COLORS",0,i,"ENTITY_ICONS",0,h,"EYE_COLORS",0,["Marron","Bleu","Vert","Noisette","Gris","Noir","Vairons","Ambre"],"GENRES",0,["Fantasy","Science-Fiction","Thriller / Polar","Romance","Historique","Horreur","Aventure","Contemporain","Jeunesse / Young Adult","Dystopie"],"HAIR_COLORS",0,["Brun","Noir","Blond","Roux","Auburn","Gris","Blanc","Châtain","Chauve","Teinture (Bleu/Rose/Etc)"],"INITIAL_CHAPTER",0,g,"POV_OPTIONS",0,["1ère personne (Je)","3ème personne (Limitée au protagoniste)","3ème personne (Omnisciente)","Multi-points de vue (Alterné)"],"TENSE_OPTIONS",0,["Passé (Passé simple / Imparfait)","Présent de narration"],"TONES",0,["Sombre & Sérieux","Léger & Humoristique","Épique & Grandiose","Mélancolique","Mystérieux","Optimiste","Cynique","Romantique"]],68239),a.s(["useProjects",0,a=>{let[d,h]=(0,b.useState)([]),[i,j]=(0,b.useState)(null),[k,l]=(0,b.useState)(!1);(0,b.useEffect)(()=>{a?(async()=>{l(!0);try{let a=(await c.default.projects.list()||[]).map(a=>({id:a.id,title:a.title,author:a.author,lastModified:new Date(a.updatedAt).getTime(),chapters:[],entities:[],ideas:[],settings:a.settings||void 0}));h(a)}catch(a){console.error("Failed to load projects",a)}finally{l(!1)}})():h([])},[a]),(0,b.useEffect)(()=>{i&&(async()=>{try{let a=await c.default.projects.get(i),b={id:a.id,title:a.title,author:a.author,lastModified:new Date(a.updatedAt).getTime(),settings:a.settings||void 0,styleGuide:a.styleGuide||void 0,chapters:(a.chapters||[]).map(a=>({id:a.id,title:a.title,content:a.content,summary:a.summary})),entities:(a.entities||[]).map(a=>({id:a.id,type:a.type,name:a.name,description:a.description,details:a.details,storyContext:a.storyContext,attributes:a.attributes,customValues:a.customValues})),ideas:(a.ideas||[]).map(a=>({id:a.id,title:a.title,description:a.description,status:a.status,category:a.category,createdAt:new Date(a.createdAt).getTime()})),workflow:{nodes:(a.plotNodes||[]).map(a=>({id:a.id,x:a.x,y:a.y,title:a.title,description:a.description,color:a.color,type:a.type})),connections:(a.plotConnections||[]).map(a=>({id:a.id,source:a.source,target:a.target}))}};h(a=>a.map(a=>a.id===i?b:a))}catch(a){console.error("Failed to load project details",a)}})()},[i]);let m=async(a,b)=>{try{let d=await c.default.chapters.create({projectId:a,title:b.title||"New Chapter",content:b.content||"",summary:b.summary||void 0});return h(b=>b.map(b=>b.id!==a?b:{...b,chapters:[...b.chapters,{id:d.id,title:d.title,content:d.content,summary:d.summary}]})),d.id}catch(a){return console.error("Failed to add chapter",a),null}};return{projects:d,currentProjectId:i,setCurrentProjectId:j,createProject:async()=>{if(a)try{let b=await c.default.projects.create({title:e,author:a.name||f,settings:{genre:"Fantasy",targetAudience:"Adult",tone:"Epic"}}),d={id:b.id,title:b.title,author:b.author,lastModified:Date.now(),chapters:[],entities:[],ideas:[],settings:b.settings};return h(a=>[...a,d]),await m(b.id,g),b.id}catch(a){console.error("Failed to create project",a)}},updateProject:async(a,b)=>{h(c=>c.map(c=>c.id===a?{...c,...b}:c));try{let d={};void 0!==b.title&&(d.title=b.title),void 0!==b.author&&(d.author=b.author),void 0!==b.settings&&(d.settings=b.settings),void 0!==b.styleGuide&&(d.styleGuide=b.styleGuide),await c.default.projects.update(a,d)}catch(a){console.error("Failed to update project",a)}},addChapter:m,updateChapter:async(a,b,d)=>{h(c=>c.map(c=>c.id!==a?c:{...c,chapters:c.chapters.map(a=>a.id===b?{...a,...d}:a)}));try{await c.default.chapters.update(b,d)}catch(a){console.error("Failed to update chapter",a)}},createEntity:async(a,b,d)=>{try{let e=await c.default.entities.create({projectId:a,type:b,name:d?.name||`Nouveau ${b}`,description:d?.description||"",details:d?.details||"",attributes:d?.attributes||void 0,customValues:d?.customValues||void 0});return h(b=>b.map(b=>b.id!==a?b:{...b,entities:[...b.entities,{id:e.id,type:e.type,name:e.name,description:e.description,details:e.details,attributes:e.attributes,customValues:e.customValues||{}}]})),e.id}catch(a){throw console.error("Failed to create entity",a),a}},updateEntity:async(a,b,d)=>{h(c=>c.map(c=>c.id!==a?c:{...c,entities:c.entities.map(a=>a.id===b?{...a,...d}:a)}));try{await c.default.entities.update(b,d)}catch(a){console.error("Failed to update entity",a)}},deleteEntity:async(a,b)=>{h(c=>c.map(c=>c.id!==a?c:{...c,entities:c.entities.filter(a=>a.id!==b)}));try{await c.default.entities.delete(b)}catch(a){console.error("Failed to delete entity",a)}},deleteProject:async a=>{try{await c.default.projects.delete(a),h(b=>b.filter(b=>b.id!==a)),i===a&&j(null)}catch(a){console.error("Failed to delete project",a)}}}}],3622)},5127,38089,a=>{"use strict";var b=a.i(29892);let c=(0,b.default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",()=>c],5127);let d=(0,b.default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);a.s(["LogOut",()=>d],38089)},51780,a=>{"use strict";var b=a.i(78352),c=a.i(34896),d=a.i(95121),e=a.i(3622),f=a.i(33782),g=a.i(14294);let h=(0,a.i(29892).default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);var i=a.i(5127),j=a.i(38089),k=a.i(82772),l=a.i(45285),m=a.i(93216),n=a.i(68565);let o=({user:a,projects:c,onSelect:d,onCreate:e,onLogout:o,onPricing:p,onProfile:q})=>(0,b.jsx)("div",{className:"min-h-screen bg-[#eef2ff] p-8 font-sans",children:(0,b.jsxs)("div",{className:"max-w-6xl mx-auto space-y-8",children:[(0,b.jsxs)("div",{className:"flex flex-col md:flex-row justify-between items-center bg-white p-8 rounded-[2rem] shadow-sm border border-indigo-100 gap-6",children:[(0,b.jsxs)("div",{className:"flex items-center gap-6",children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("img",{src:a.avatar,className:"w-20 h-20 rounded-full border-4 border-slate-50 shadow-lg object-cover",alt:"Avatar"}),(0,b.jsx)("div",{className:"absolute -bottom-1 -right-1 bg-green-500 w-5 h-5 rounded-full border-4 border-white"})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("h2",{className:"text-3xl font-black text-slate-900",children:["Bonjour, ",a.name," 👋"]}),(0,b.jsxs)("div",{className:"flex items-center gap-3 mt-1",children:[(0,b.jsx)("span",{className:"px-3 py-1 rounded-full bg-indigo-100 text-indigo-700 text-[10px] uppercase font-black tracking-widest",children:a.subscription.plan}),(0,b.jsx)("span",{className:"text-slate-400 text-xs font-medium",children:"Membre depuis le 24 janv."})]})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsxs)("button",{onClick:q,className:"bg-slate-50 text-slate-700 px-5 py-2.5 rounded-xl text-sm font-bold hover:bg-slate-100 transition-all flex items-center gap-2 border border-slate-200",children:[(0,b.jsx)(k.User,{size:18})," Mon Profil"]}),(0,b.jsx)("button",{onClick:o,className:"p-3 text-slate-400 hover:text-red-500 rounded-full hover:bg-red-50 transition-colors",children:(0,b.jsx)(j.LogOut,{size:20})})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[(0,b.jsxs)("div",{className:"bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4",children:[(0,b.jsx)("div",{className:"bg-orange-100 p-3 rounded-2xl text-orange-600",children:(0,b.jsx)(m.Flame,{size:24})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-xs font-bold text-slate-400 uppercase tracking-wider",children:"Série actuelle"}),(0,b.jsxs)("p",{className:"text-2xl font-black text-slate-900",children:[a.stats.writingStreak," Jours"]})]})]}),(0,b.jsxs)("div",{className:"bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4",children:[(0,b.jsx)("div",{className:"bg-blue-100 p-3 rounded-2xl text-blue-600",children:(0,b.jsx)(n.Edit3,{size:24})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-xs font-bold text-slate-400 uppercase tracking-wider",children:"Mots écrits"}),(0,b.jsx)("p",{className:"text-2xl font-black text-slate-900",children:a.stats.totalWordsWritten.toLocaleString()})]})]}),(0,b.jsxs)("div",{className:"bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4",children:[(0,b.jsx)("div",{className:"bg-indigo-100 p-3 rounded-2xl text-indigo-600",children:(0,b.jsx)(l.Target,{size:24})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-xs font-bold text-slate-400 uppercase tracking-wider",children:"Objectif du jour"}),(0,b.jsxs)("p",{className:"text-2xl font-black text-slate-900",children:[a.preferences.dailyWordGoal," Mots"]})]})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-8",children:[(0,b.jsxs)("div",{className:"lg:col-span-2 space-y-4",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,b.jsx)("h3",{className:"text-2xl font-black text-slate-900",children:"Mes Romans"}),(0,b.jsxs)("button",{onClick:e,className:"flex items-center gap-2 bg-blue-600 text-white px-6 py-3 rounded-2xl font-bold hover:bg-blue-700 transition-all shadow-xl shadow-blue-200",children:[(0,b.jsx)(f.Plus,{size:20})," Écrire un nouveau livre"]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[c.map(a=>(0,b.jsxs)("div",{onClick:()=>d(a.id),className:"bg-white p-8 rounded-[2.5rem] border border-indigo-50 shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"bg-blue-50 w-12 h-12 rounded-2xl flex items-center justify-center text-blue-600 mb-6 group-hover:bg-blue-600 group-hover:text-white transition-colors",children:(0,b.jsx)(g.Book,{size:24})}),(0,b.jsx)("h4",{className:"font-black text-slate-900 text-xl truncate mb-1",children:a.title}),(0,b.jsxs)("p",{className:"text-slate-400 text-sm",children:["Dernière modification : ",new Date(a.lastModified).toLocaleDateString()]})]}),(0,b.jsxs)("div",{className:"flex justify-between items-center text-[10px] text-slate-400 font-black uppercase tracking-widest border-t border-slate-50 pt-4",children:[(0,b.jsxs)("span",{children:[a.chapters.length," Chapitres"]}),(0,b.jsx)(i.ChevronRight,{size:20,className:"group-hover:text-blue-600 transition-transform group-hover:translate-x-1 duration-300"})]})]},a.id)),0===c.length&&(0,b.jsxs)("div",{className:"col-span-2 py-24 bg-white rounded-[3rem] border-2 border-dashed border-indigo-100 flex flex-col items-center justify-center text-indigo-300",children:[(0,b.jsx)(g.Book,{size:64,className:"mb-6 opacity-20"}),(0,b.jsx)("p",{className:"font-bold text-lg",children:"Prêt à commencer votre premier roman ?"}),(0,b.jsx)("button",{onClick:e,className:"mt-4 text-blue-600 font-bold hover:underline",children:"Créer un projet maintenant"})]})]})]}),(0,b.jsx)("div",{className:"space-y-6",children:(0,b.jsxs)("div",{className:"bg-slate-900 text-white p-8 rounded-[2.5rem] shadow-xl relative overflow-hidden",children:[(0,b.jsx)("div",{className:"absolute top-0 right-0 w-32 h-32 bg-indigo-500/20 blur-[60px] -z-1"}),(0,b.jsxs)("h3",{className:"font-black text-xl mb-6 flex items-center gap-2",children:[(0,b.jsx)(h,{size:20,className:"text-yellow-400"})," Utilisation"]}),(0,b.jsxs)("div",{className:"space-y-8",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex justify-between text-[10px] font-black text-slate-400 uppercase tracking-widest mb-2",children:[(0,b.jsx)("span",{children:"Actions IA"}),(0,b.jsxs)("span",{children:[a.usage.aiActionsCurrent," / ",999999===a.usage.aiActionsLimit?"∞":a.usage.aiActionsLimit]})]}),(0,b.jsx)("div",{className:"h-3 w-full bg-slate-800 rounded-full overflow-hidden",children:(0,b.jsx)("div",{className:"h-full bg-blue-500 transition-all duration-1000 shadow-[0_0_10px_rgba(59,130,246,0.5)]",style:{width:`${Math.min(100,a.usage.aiActionsCurrent/a.usage.aiActionsLimit*100)}%`}})})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex justify-between text-[10px] font-black text-slate-400 uppercase tracking-widest mb-2",children:[(0,b.jsx)("span",{children:"Emplacements Roman"}),(0,b.jsxs)("span",{children:[c.length," / ",a.usage.projectsLimit]})]}),(0,b.jsx)("div",{className:"h-3 w-full bg-slate-800 rounded-full overflow-hidden",children:(0,b.jsx)("div",{className:"h-full bg-indigo-500 transition-all duration-1000 shadow-[0_0_10px_rgba(99,102,241,0.5)]",style:{width:`${Math.min(100,c.length/a.usage.projectsLimit*100)}%`}})})]})]}),(0,b.jsx)("button",{onClick:p,className:"w-full mt-10 bg-white/10 hover:bg-white/20 py-4 rounded-2xl text-sm font-bold transition-all",children:"Upgrade Plan"})]})})]})]})});var p=a.i(79080),q=a.i(73258),r=a.i(28091);function s(){let a=(0,c.useRouter)(),{user:f,logout:g,loading:h}=(0,d.useAuthContext)(),{projects:i,setCurrentProjectId:j,createProject:k}=(0,e.useProjects)(f);return((0,r.useEffect)(()=>{h||f||a.replace("/login")},[f,h,a]),h||!f)?(0,b.jsxs)("div",{className:"h-screen w-full flex flex-col items-center justify-center bg-slate-900 text-white",children:[(0,b.jsx)(p.Loader2,{className:"animate-spin text-blue-500 mb-4",size:48}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(q.BookOpen,{className:"text-blue-500",size:20}),(0,b.jsx)("span",{className:"text-lg font-bold",children:"PlumeIA"})]})]}):(0,b.jsx)(o,{user:f,projects:i,onSelect:b=>{j(b),a.push(`/project/${b}`)},onCreate:async()=>{let b=await k();b&&(j(b),a.push(`/project/${b}`))},onLogout:()=>{g(),a.push("/")},onPricing:()=>a.push("/pricing"),onProfile:()=>a.push("/profile")})}a.s(["default",()=>s],51780)}]; -//# sourceMappingURL=%5Broot-of-the-server%5D__dfe2f44e._.js.map \ No newline at end of file +//# sourceMappingURL=%5Broot-of-the-server%5D__330afc62._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__dfe2f44e._.js.map b/.next/server/chunks/ssr/[root-of-the-server]__330afc62._.js.map similarity index 51% rename from .next/server/chunks/ssr/[root-of-the-server]__dfe2f44e._.js.map rename to .next/server/chunks/ssr/[root-of-the-server]__330afc62._.js.map index dae337d..cc58aab 100644 --- a/.next/server/chunks/ssr/[root-of-the-server]__dfe2f44e._.js.map +++ b/.next/server/chunks/ssr/[root-of-the-server]__330afc62._.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/loader-circle.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book-open.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/user.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/plus.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/lib/types.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/pen-line.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/target.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/flame.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/lib/constants.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/log-out.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/chevron-right.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/Dashboard.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/dashboard/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/star.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 7v14', key: '1akyts' }],\n [\n 'path',\n {\n d: 'M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z',\n key: 'ruj8y',\n },\n ],\n];\n\n/**\n * @component @name BookOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgN3YxNCIgLz4KICA8cGF0aCBkPSJNMyAxOGExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWg1YTQgNCAwIDAgMSA0IDQgNCA0IDAgMCAxIDQtNGg1YTEgMSAwIDAgMSAxIDF2MTNhMSAxIDAgMCAxLTEgMWgtNmEzIDMgMCAwIDAtMyAzIDMgMyAwIDAgMC0zLTN6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/book-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst BookOpen = createLucideIcon('book-open', __iconNode);\n\nexport default BookOpen;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n];\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMjF2LTJhNCA0IDAgMCAwLTQtNEg5YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/user\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst User = createLucideIcon('user', __iconNode);\n\nexport default User;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n];\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('plus', __iconNode);\n\nexport default Plus;\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","\nexport enum EntityType {\n CHARACTER = 'Personnage',\n LOCATION = 'Lieu',\n OBJECT = 'Objet',\n NOTE = 'Note'\n}\n\nexport interface CharacterAttributes {\n age: number;\n height: number;\n hair: string;\n eyes: string;\n archetype: string;\n role: 'protagonist' | 'antagonist' | 'support' | 'extra';\n personality: {\n spectrumIntrovertExtravert: number;\n spectrumEmotionalRational: number;\n spectrumChaoticLawful: number;\n };\n physicalQuirk: string;\n behavioralQuirk: string;\n}\n\nexport type CustomFieldType = 'text' | 'textarea' | 'number' | 'boolean' | 'select';\n\nexport interface CustomFieldDefinition {\n id: string;\n label: string;\n type: CustomFieldType;\n options?: string[];\n placeholder?: string;\n}\n\nexport interface EntityTemplate {\n entityType: EntityType;\n fields: CustomFieldDefinition[];\n}\n\nexport interface Entity {\n id: string;\n type: EntityType;\n name: string;\n description: string;\n details: string;\n storyContext?: string;\n attributes?: CharacterAttributes;\n customValues?: Record;\n}\n\nexport interface Chapter {\n id: string;\n title: string;\n content: string;\n summary?: string;\n}\n\nexport type PlotNodeType = 'story' | 'dialogue' | 'action';\n\nexport interface PlotNode {\n id: string;\n x: number;\n y: number;\n title: string;\n description: string;\n color: string;\n type?: PlotNodeType;\n}\n\nexport interface PlotConnection {\n id: string;\n source: string;\n target: string;\n}\n\nexport interface WorkflowData {\n nodes: PlotNode[];\n connections: PlotConnection[];\n}\n\nexport type IdeaStatus = 'todo' | 'progress' | 'done';\nexport type IdeaCategory = 'plot' | 'character' | 'research' | 'todo';\n\nexport interface Idea {\n id: string;\n title: string;\n description: string;\n status: IdeaStatus;\n category: IdeaCategory;\n createdAt: number;\n}\n\nexport interface BookSettings {\n genre: string;\n subGenre?: string;\n targetAudience: string;\n tone: string;\n pov: string;\n tense: string;\n synopsis: string;\n themes: string;\n}\n\nexport interface BookProject {\n id: string;\n title: string;\n author: string;\n lastModified: number;\n settings?: BookSettings;\n // Direct fields sometimes used in creation/updates before settings normalization\n genre?: string;\n pov?: string;\n tense?: string;\n chapters: Chapter[];\n entities: Entity[];\n workflow?: WorkflowData;\n templates?: EntityTemplate[];\n styleGuide?: string;\n ideas?: Idea[];\n}\n\nexport interface ChatMessage {\n id: string;\n role: 'user' | 'model';\n text: string;\n responseType?: 'draft' | 'reflection';\n isLoading?: boolean;\n}\n\n// --- SAAS TYPES ---\n\nexport type PlanType = 'free' | 'pro' | 'master';\n\nexport interface Subscription {\n plan: PlanType;\n startDate: number;\n status: 'active' | 'canceled' | 'past_due';\n}\n\nexport interface UserUsage {\n aiActionsCurrent: number;\n aiActionsLimit: number;\n projectsLimit: number;\n}\n\nexport interface UserPreferences {\n theme: 'light' | 'dark' | 'sepia';\n dailyWordGoal: number;\n language: 'fr' | 'en';\n}\n\nexport interface UserStats {\n totalWordsWritten: number;\n writingStreak: number;\n lastWriteDate: number;\n}\n\nexport interface UserProfile {\n id: string;\n email: string;\n name: string;\n avatar?: string;\n bio?: string;\n subscription: Subscription;\n usage: UserUsage;\n preferences: UserPreferences;\n stats: UserStats;\n}\n\nexport type ViewMode = 'write' | 'world_building' | 'workflow' | 'settings' | 'preview' | 'ideas' | 'landing' | 'features' | 'pricing' | 'checkout' | 'dashboard' | 'auth' | 'signup' | 'profile';\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M13 21h8', key: '1jsn5i' }],\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n];\n\n/**\n * @component @name PenLine\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTMgMjFoOCIgLz4KICA8cGF0aCBkPSJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/pen-line\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst PenLine = createLucideIcon('pen-line', __iconNode);\n\nexport default PenLine;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['circle', { cx: '12', cy: '12', r: '6', key: '1vlfrh' }],\n ['circle', { cx: '12', cy: '12', r: '2', key: '1c9p78' }],\n];\n\n/**\n * @component @name Target\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI2IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/target\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Target = createLucideIcon('target', __iconNode);\n\nexport default Target;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4',\n key: '1slcih',\n },\n ],\n];\n\n/**\n * @component @name Flame\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgM3ExIDQgNCA2LjV0MyA1LjVhMSAxIDAgMCAxLTE0IDAgNSA1IDAgMCAxIDEtMyAxIDEgMCAwIDAgNSAwYzAtMi0xLjUtMy0xLjUtNXEwLTIgMi41LTQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/flame\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Flame = createLucideIcon('flame', __iconNode);\n\nexport default Flame;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20',\n key: 'k3hazp',\n },\n ],\n];\n\n/**\n * @component @name Book\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxOS41di0xNUEyLjUgMi41IDAgMCAxIDYuNSAySDE5YTEgMSAwIDAgMSAxIDF2MThhMSAxIDAgMCAxLTEgMUg2LjVhMSAxIDAgMCAxIDAtNUgyMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/book\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Book = createLucideIcon('book', __iconNode);\n\nexport default Book;\n","'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n await api.projects.update(id, payload);\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n","\nimport { EntityType } from \"./types\";\n\nexport const DEFAULT_BOOK_TITLE = \"Nouveau Roman\";\nexport const DEFAULT_AUTHOR = \"Auteur Inconnu\";\n\nexport const INITIAL_CHAPTER = {\n id: 'chap-1',\n title: 'Chapitre 1',\n content: '

Il était une fois...

',\n summary: 'Début de l\\'histoire.'\n};\n\nexport const ENTITY_ICONS: Record = {\n [EntityType.CHARACTER]: '👤',\n [EntityType.LOCATION]: '🏰',\n [EntityType.OBJECT]: '🗝️',\n [EntityType.NOTE]: '📝',\n};\n\n// Colors for tags\nexport const ENTITY_COLORS: Record = {\n [EntityType.CHARACTER]: 'bg-blue-100 text-blue-800 border-blue-200',\n [EntityType.LOCATION]: 'bg-green-100 text-green-800 border-green-200',\n [EntityType.OBJECT]: 'bg-amber-100 text-amber-800 border-amber-200',\n [EntityType.NOTE]: 'bg-gray-100 text-gray-800 border-gray-200',\n};\n\n// --- Character Creation Lists ---\n\nexport const HAIR_COLORS = [\n \"Brun\", \"Noir\", \"Blond\", \"Roux\", \"Auburn\", \"Gris\", \"Blanc\", \"Châtain\", \"Chauve\", \"Teinture (Bleu/Rose/Etc)\"\n];\n\nexport const EYE_COLORS = [\n \"Marron\", \"Bleu\", \"Vert\", \"Noisette\", \"Gris\", \"Noir\", \"Vairons\", \"Ambre\"\n];\n\nexport const ARCHETYPES = [\n \"Le Héros\", \"L'Ombre / Le Méchant\", \"Le Mentor\", \"Le Gardien du Seuil\",\n \"Le Shapeshifter (Changeforme)\", \"Le Trickster (Farceur)\", \"L'Allié\", \"L'Élu\",\n \"Le Rebelle\", \"Le Séducteur\", \"Le Sage\", \"Le Guerrier\", \"L'Innocent\"\n];\n\n// --- Book Settings Lists ---\n\nexport const GENRES = [\n \"Fantasy\", \"Science-Fiction\", \"Thriller / Polar\", \"Romance\", \"Historique\",\n \"Horreur\", \"Aventure\", \"Contemporain\", \"Jeunesse / Young Adult\", \"Dystopie\"\n];\n\nexport const TONES = [\n \"Sombre & Sérieux\", \"Léger & Humoristique\", \"Épique & Grandiose\",\n \"Mélancolique\", \"Mystérieux\", \"Optimiste\", \"Cynique\", \"Romantique\"\n];\n\nexport const POV_OPTIONS = [\n \"1ère personne (Je)\",\n \"3ème personne (Limitée au protagoniste)\",\n \"3ème personne (Omnisciente)\",\n \"Multi-points de vue (Alterné)\"\n];\n\nexport const TENSE_OPTIONS = [\n \"Passé (Passé simple / Imparfait)\",\n \"Présent de narration\"\n];","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm16 17 5-5-5-5', key: '1bji2h' }],\n ['path', { d: 'M21 12H9', key: 'dn1m92' }],\n ['path', { d: 'M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4', key: '1uf3rs' }],\n];\n\n/**\n * @component @name LogOut\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTYgMTcgNS01LTUtNSIgLz4KICA8cGF0aCBkPSJNMjEgMTJIOSIgLz4KICA8cGF0aCBkPSJNOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/log-out\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LogOut = createLucideIcon('log-out', __iconNode);\n\nexport default LogOut;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]];\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtOSAxOCA2LTYtNi02IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('chevron-right', __iconNode);\n\nexport default ChevronRight;\n","'use client';\n\n\nimport React from 'react';\nimport { BookProject, UserProfile } from '@/lib/types';\nimport { Plus, Book, Clock, Star, ChevronRight, LogOut, LayoutDashboard, User, Target, Flame, Edit3 } from 'lucide-react';\n\ninterface DashboardProps {\n user: UserProfile;\n projects: BookProject[];\n onSelect: (id: string) => void;\n onCreate: () => void;\n onLogout: () => void;\n onPricing: () => void;\n onProfile: () => void;\n}\n\nconst Dashboard: React.FC = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile }) => {\n return (\n
\n
\n \n {/* User Card */}\n
\n
\n
\n \"Avatar\"\n
\n
\n
\n

Bonjour, {user.name} 👋

\n
\n {user.subscription.plan}\n Membre depuis le 24 janv.\n
\n
\n
\n
\n \n \n
\n
\n\n {/* Stats Section */}\n
\n
\n
\n
\n

Série actuelle

\n

{user.stats.writingStreak} Jours

\n
\n
\n
\n
\n
\n

Mots écrits

\n

{user.stats.totalWordsWritten.toLocaleString()}

\n
\n
\n
\n
\n
\n

Objectif du jour

\n

{user.preferences.dailyWordGoal} Mots

\n
\n
\n
\n\n
\n {/* Project List */}\n
\n
\n

Mes Romans

\n \n
\n\n
\n {projects.map(p => (\n
onSelect(p.id)}\n className=\"bg-white p-8 rounded-[2.5rem] border border-indigo-50 shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64\"\n >\n
\n
\n \n
\n

{p.title}

\n

Dernière modification : {new Date(p.lastModified).toLocaleDateString()}

\n
\n
\n {p.chapters.length} Chapitres\n \n
\n
\n ))}\n {projects.length === 0 && (\n
\n \n

Prêt à commencer votre premier roman ?

\n \n
\n )}\n
\n
\n\n {/* Sidebar Stats & Plan */}\n
\n
\n
\n

Utilisation

\n
\n
\n
\n Actions IA\n {user.usage.aiActionsCurrent} / {user.usage.aiActionsLimit === 999999 ? '∞' : user.usage.aiActionsLimit}\n
\n
\n
\n
\n
\n
\n
\n Emplacements Roman\n {projects.length} / {user.usage.projectsLimit}\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Dashboard;\n","'use client';\r\n\r\nimport { useRouter } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport Dashboard from '@/components/Dashboard';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\nimport { useEffect } from 'react';\r\n\r\nexport default function DashboardPage() {\r\n const router = useRouter();\r\n const { user, logout, loading } = useAuthContext();\r\n const { projects, setCurrentProjectId, createProject } = useProjects(user);\r\n\r\n useEffect(() => {\r\n if (!loading && !user) {\r\n router.replace('/login');\r\n }\r\n }, [user, loading, router]);\r\n\r\n if (loading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }}\r\n onCreate={async () => {\r\n const id = await createProject();\r\n if (id) {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }\r\n }}\r\n onLogout={() => {\r\n logout();\r\n router.push('/');\r\n }}\r\n onPricing={() => router.push('/pricing')}\r\n onProfile={() => router.push('/profile')}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z',\n key: 'r04s7s',\n },\n ],\n];\n\n/**\n * @component @name Star\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuNTI1IDIuMjk1YS41My41MyAwIDAgMSAuOTUgMGwyLjMxIDQuNjc5YTIuMTIzIDIuMTIzIDAgMCAwIDEuNTk1IDEuMTZsNS4xNjYuNzU2YS41My41MyAwIDAgMSAuMjk0LjkwNGwtMy43MzYgMy42MzhhMi4xMjMgMi4xMjMgMCAwIDAtLjYxMSAxLjg3OGwuODgyIDUuMTRhLjUzLjUzIDAgMCAxLS43NzEuNTZsLTQuNjE4LTIuNDI4YTIuMTIyIDIuMTIyIDAgMCAwLTEuOTczIDBMNi4zOTYgMjEuMDFhLjUzLjUzIDAgMCAxLS43Ny0uNTZsLjg4MS01LjEzOWEyLjEyMiAyLjEyMiAwIDAgMC0uNjExLTEuODc5TDIuMTYgOS43OTVhLjUzLjUzIDAgMCAxIC4yOTQtLjkwNmw1LjE2NS0uNzU1YTIuMTIyIDIuMTIyIDAgMCAwIDEuNTk3LTEuMTZ6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/star\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Star = createLucideIcon('star', __iconNode);\n\nexport default Star;\n"],"names":["module","exports","require","vendored","AppRouterContext","HooksClientContext","ServerInsertedHtml"],"mappings":"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AAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,C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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19,22,23,26]} \ No newline at end of file +{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/loader-circle.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/user.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book-open.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/lib/types.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/plus.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/pen-line.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/target.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/flame.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/lib/constants.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/log-out.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/chevron-right.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/Dashboard.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/dashboard/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/star.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n];\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMjF2LTJhNCA0IDAgMCAwLTQtNEg5YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/user\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst User = createLucideIcon('user', __iconNode);\n\nexport default User;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 7v14', key: '1akyts' }],\n [\n 'path',\n {\n d: 'M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z',\n key: 'ruj8y',\n },\n ],\n];\n\n/**\n * @component @name BookOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgN3YxNCIgLz4KICA8cGF0aCBkPSJNMyAxOGExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWg1YTQgNCAwIDAgMSA0IDQgNCA0IDAgMCAxIDQtNGg1YTEgMSAwIDAgMSAxIDF2MTNhMSAxIDAgMCAxLTEgMWgtNmEzIDMgMCAwIDAtMyAzIDMgMyAwIDAgMC0zLTN6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/book-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst BookOpen = createLucideIcon('book-open', __iconNode);\n\nexport default BookOpen;\n","\nexport enum EntityType {\n CHARACTER = 'Personnage',\n LOCATION = 'Lieu',\n OBJECT = 'Objet',\n NOTE = 'Note'\n}\n\nexport interface CharacterAttributes {\n age: number;\n height: number;\n hair: string;\n eyes: string;\n archetype: string;\n role: 'protagonist' | 'antagonist' | 'support' | 'extra';\n personality: {\n spectrumIntrovertExtravert: number;\n spectrumEmotionalRational: number;\n spectrumChaoticLawful: number;\n };\n physicalQuirk: string;\n behavioralQuirk: string;\n}\n\nexport type CustomFieldType = 'text' | 'textarea' | 'number' | 'boolean' | 'select';\n\nexport interface CustomFieldDefinition {\n id: string;\n label: string;\n type: CustomFieldType;\n options?: string[];\n placeholder?: string;\n}\n\nexport interface EntityTemplate {\n entityType: EntityType;\n fields: CustomFieldDefinition[];\n}\n\nexport interface Entity {\n id: string;\n type: EntityType;\n name: string;\n description: string;\n details: string;\n storyContext?: string;\n attributes?: CharacterAttributes;\n customValues?: Record;\n}\n\nexport interface Chapter {\n id: string;\n title: string;\n content: string;\n summary?: string;\n}\n\nexport type PlotNodeType = 'story' | 'dialogue' | 'action';\n\nexport interface PlotNode {\n id: string;\n x: number;\n y: number;\n title: string;\n description: string;\n color: string;\n type?: PlotNodeType;\n}\n\nexport interface PlotConnection {\n id: string;\n source: string;\n target: string;\n}\n\nexport interface WorkflowData {\n nodes: PlotNode[];\n connections: PlotConnection[];\n}\n\nexport type IdeaStatus = 'todo' | 'progress' | 'done';\nexport type IdeaCategory = 'plot' | 'character' | 'research' | 'todo';\n\nexport interface Idea {\n id: string;\n title: string;\n description: string;\n status: IdeaStatus;\n category: IdeaCategory;\n createdAt: number;\n}\n\nexport interface BookSettings {\n genre: string;\n subGenre?: string;\n targetAudience: string;\n tone: string;\n pov: string;\n tense: string;\n synopsis: string;\n themes: string;\n}\n\nexport interface BookProject {\n id: string;\n title: string;\n author: string;\n lastModified: number;\n settings?: BookSettings;\n // Direct fields sometimes used in creation/updates before settings normalization\n genre?: string;\n pov?: string;\n tense?: string;\n chapters: Chapter[];\n entities: Entity[];\n workflow?: WorkflowData;\n templates?: EntityTemplate[];\n styleGuide?: string;\n ideas?: Idea[];\n}\n\nexport interface ChatMessage {\n id: string;\n role: 'user' | 'model';\n text: string;\n responseType?: 'draft' | 'reflection';\n isLoading?: boolean;\n}\n\n// --- SAAS TYPES ---\n\nexport type PlanType = 'free' | 'pro' | 'master';\n\nexport interface Subscription {\n plan: PlanType;\n startDate: number;\n status: 'active' | 'canceled' | 'past_due';\n}\n\nexport interface UserUsage {\n aiActionsCurrent: number;\n aiActionsLimit: number;\n projectsLimit: number;\n}\n\nexport interface UserPreferences {\n theme: 'light' | 'dark' | 'sepia';\n dailyWordGoal: number;\n language: 'fr' | 'en';\n}\n\nexport interface UserStats {\n totalWordsWritten: number;\n writingStreak: number;\n lastWriteDate: number;\n}\n\nexport interface UserProfile {\n id: string;\n email: string;\n name: string;\n avatar?: string;\n bio?: string;\n subscription: Subscription;\n usage: UserUsage;\n preferences: UserPreferences;\n stats: UserStats;\n}\n\nexport type ViewMode = 'write' | 'world_building' | 'workflow' | 'settings' | 'preview' | 'ideas' | 'landing' | 'features' | 'pricing' | 'checkout' | 'dashboard' | 'auth' | 'signup' | 'profile';\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n];\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('plus', __iconNode);\n\nexport default Plus;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M13 21h8', key: '1jsn5i' }],\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n];\n\n/**\n * @component @name PenLine\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTMgMjFoOCIgLz4KICA8cGF0aCBkPSJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/pen-line\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst PenLine = createLucideIcon('pen-line', __iconNode);\n\nexport default PenLine;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['circle', { cx: '12', cy: '12', r: '6', key: '1vlfrh' }],\n ['circle', { cx: '12', cy: '12', r: '2', key: '1c9p78' }],\n];\n\n/**\n * @component @name Target\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI2IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/target\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Target = createLucideIcon('target', __iconNode);\n\nexport default Target;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4',\n key: '1slcih',\n },\n ],\n];\n\n/**\n * @component @name Flame\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgM3ExIDQgNCA2LjV0MyA1LjVhMSAxIDAgMCAxLTE0IDAgNSA1IDAgMCAxIDEtMyAxIDEgMCAwIDAgNSAwYzAtMi0xLjUtMy0xLjUtNXEwLTIgMi41LTQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/flame\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Flame = createLucideIcon('flame', __iconNode);\n\nexport default Flame;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20',\n key: 'k3hazp',\n },\n ],\n];\n\n/**\n * @component @name Book\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxOS41di0xNUEyLjUgMi41IDAgMCAxIDYuNSAySDE5YTEgMSAwIDAgMSAxIDF2MThhMSAxIDAgMCAxLTEgMUg2LjVhMSAxIDAgMCAxIDAtNUgyMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/book\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Book = createLucideIcon('book', __iconNode);\n\nexport default Book;\n","'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n await api.projects.update(id, payload);\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n","\nimport { EntityType } from \"./types\";\n\nexport const DEFAULT_BOOK_TITLE = \"Nouveau Roman\";\nexport const DEFAULT_AUTHOR = \"Auteur Inconnu\";\n\nexport const INITIAL_CHAPTER = {\n id: 'chap-1',\n title: 'Chapitre 1',\n content: '

Il était une fois...

',\n summary: 'Début de l\\'histoire.'\n};\n\nexport const ENTITY_ICONS: Record = {\n [EntityType.CHARACTER]: '👤',\n [EntityType.LOCATION]: '🏰',\n [EntityType.OBJECT]: '🗝️',\n [EntityType.NOTE]: '📝',\n};\n\n// Colors for tags\nexport const ENTITY_COLORS: Record = {\n [EntityType.CHARACTER]: 'bg-blue-100 text-blue-800 border-blue-200',\n [EntityType.LOCATION]: 'bg-green-100 text-green-800 border-green-200',\n [EntityType.OBJECT]: 'bg-amber-100 text-amber-800 border-amber-200',\n [EntityType.NOTE]: 'bg-gray-100 text-gray-800 border-gray-200',\n};\n\n// --- Character Creation Lists ---\n\nexport const HAIR_COLORS = [\n \"Brun\", \"Noir\", \"Blond\", \"Roux\", \"Auburn\", \"Gris\", \"Blanc\", \"Châtain\", \"Chauve\", \"Teinture (Bleu/Rose/Etc)\"\n];\n\nexport const EYE_COLORS = [\n \"Marron\", \"Bleu\", \"Vert\", \"Noisette\", \"Gris\", \"Noir\", \"Vairons\", \"Ambre\"\n];\n\nexport const ARCHETYPES = [\n \"Le Héros\", \"L'Ombre / Le Méchant\", \"Le Mentor\", \"Le Gardien du Seuil\",\n \"Le Shapeshifter (Changeforme)\", \"Le Trickster (Farceur)\", \"L'Allié\", \"L'Élu\",\n \"Le Rebelle\", \"Le Séducteur\", \"Le Sage\", \"Le Guerrier\", \"L'Innocent\"\n];\n\n// --- Book Settings Lists ---\n\nexport const GENRES = [\n \"Fantasy\", \"Science-Fiction\", \"Thriller / Polar\", \"Romance\", \"Historique\",\n \"Horreur\", \"Aventure\", \"Contemporain\", \"Jeunesse / Young Adult\", \"Dystopie\"\n];\n\nexport const TONES = [\n \"Sombre & Sérieux\", \"Léger & Humoristique\", \"Épique & Grandiose\",\n \"Mélancolique\", \"Mystérieux\", \"Optimiste\", \"Cynique\", \"Romantique\"\n];\n\nexport const POV_OPTIONS = [\n \"1ère personne (Je)\",\n \"3ème personne (Limitée au protagoniste)\",\n \"3ème personne (Omnisciente)\",\n \"Multi-points de vue (Alterné)\"\n];\n\nexport const TENSE_OPTIONS = [\n \"Passé (Passé simple / Imparfait)\",\n \"Présent de narration\"\n];","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm16 17 5-5-5-5', key: '1bji2h' }],\n ['path', { d: 'M21 12H9', key: 'dn1m92' }],\n ['path', { d: 'M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4', key: '1uf3rs' }],\n];\n\n/**\n * @component @name LogOut\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTYgMTcgNS01LTUtNSIgLz4KICA8cGF0aCBkPSJNMjEgMTJIOSIgLz4KICA8cGF0aCBkPSJNOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/log-out\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LogOut = createLucideIcon('log-out', __iconNode);\n\nexport default LogOut;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]];\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtOSAxOCA2LTYtNi02IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('chevron-right', __iconNode);\n\nexport default ChevronRight;\n","'use client';\n\n\nimport React from 'react';\nimport { BookProject, UserProfile } from '@/lib/types';\nimport { Plus, Book, Clock, Star, ChevronRight, LogOut, LayoutDashboard, User, Target, Flame, Edit3 } from 'lucide-react';\n\ninterface DashboardProps {\n user: UserProfile;\n projects: BookProject[];\n onSelect: (id: string) => void;\n onCreate: () => void;\n onLogout: () => void;\n onPricing: () => void;\n onProfile: () => void;\n}\n\nconst Dashboard: React.FC = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile }) => {\n return (\n
\n
\n \n {/* User Card */}\n
\n
\n
\n \"Avatar\"\n
\n
\n
\n

Bonjour, {user.name} 👋

\n
\n {user.subscription.plan}\n Membre depuis le 24 janv.\n
\n
\n
\n
\n \n \n
\n
\n\n {/* Stats Section */}\n
\n
\n
\n
\n

Série actuelle

\n

{user.stats.writingStreak} Jours

\n
\n
\n
\n
\n
\n

Mots écrits

\n

{user.stats.totalWordsWritten.toLocaleString()}

\n
\n
\n
\n
\n
\n

Objectif du jour

\n

{user.preferences.dailyWordGoal} Mots

\n
\n
\n
\n\n
\n {/* Project List */}\n
\n
\n

Mes Romans

\n \n
\n\n
\n {projects.map(p => (\n
onSelect(p.id)}\n className=\"bg-white p-8 rounded-[2.5rem] border border-indigo-50 shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64\"\n >\n
\n
\n \n
\n

{p.title}

\n

Dernière modification : {new Date(p.lastModified).toLocaleDateString()}

\n
\n
\n {p.chapters.length} Chapitres\n \n
\n
\n ))}\n {projects.length === 0 && (\n
\n \n

Prêt à commencer votre premier roman ?

\n \n
\n )}\n
\n
\n\n {/* Sidebar Stats & Plan */}\n
\n
\n
\n

Utilisation

\n
\n
\n
\n Actions IA\n {user.usage.aiActionsCurrent} / {user.usage.aiActionsLimit === 999999 ? '∞' : user.usage.aiActionsLimit}\n
\n
\n
\n
\n
\n
\n
\n Emplacements Roman\n {projects.length} / {user.usage.projectsLimit}\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Dashboard;\n","'use client';\r\n\r\nimport { useRouter } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport Dashboard from '@/components/Dashboard';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\nimport { useEffect } from 'react';\r\n\r\nexport default function DashboardPage() {\r\n const router = useRouter();\r\n const { user, logout, loading } = useAuthContext();\r\n const { projects, setCurrentProjectId, createProject } = useProjects(user);\r\n\r\n useEffect(() => {\r\n if (!loading && !user) {\r\n router.replace('/login');\r\n }\r\n }, [user, loading, router]);\r\n\r\n if (loading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }}\r\n onCreate={async () => {\r\n const id = await createProject();\r\n if (id) {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }\r\n }}\r\n onLogout={() => {\r\n logout();\r\n router.push('/');\r\n }}\r\n onPricing={() => router.push('/pricing')}\r\n onProfile={() => router.push('/profile')}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z',\n key: 'r04s7s',\n },\n ],\n];\n\n/**\n * @component @name Star\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuNTI1IDIuMjk1YS41My41MyAwIDAgMSAuOTUgMGwyLjMxIDQuNjc5YTIuMTIzIDIuMTIzIDAgMCAwIDEuNTk1IDEuMTZsNS4xNjYuNzU2YS41My41MyAwIDAgMSAuMjk0LjkwNGwtMy43MzYgMy42MzhhMi4xMjMgMi4xMjMgMCAwIDAtLjYxMSAxLjg3OGwuODgyIDUuMTRhLjUzLjUzIDAgMCAxLS43NzEuNTZsLTQuNjE4LTIuNDI4YTIuMTIyIDIuMTIyIDAgMCAwLTEuOTczIDBMNi4zOTYgMjEuMDFhLjUzLjUzIDAgMCAxLS43Ny0uNTZsLjg4MS01LjEzOWEyLjEyMiAyLjEyMiAwIDAgMC0uNjExLTEuODc5TDIuMTYgOS43OTVhLjUzLjUzIDAgMCAxIC4yOTQtLjkwNmw1LjE2NS0uNzU1YTIuMTIyIDIuMTIyIDAgMCAwIDEuNTk3LTEuMTZ6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/star\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Star = createLucideIcon('star', __iconNode);\n\nexport default Star;\n"],"names":["module","exports","require","vendored","AppRouterContext","HooksClientContext","ServerInsertedHtml"],"mappings":"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A,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,15,16,17,18,19,22,23,26]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__3bac9c52._.js.map b/.next/server/chunks/ssr/[root-of-the-server]__3bac9c52._.js.map deleted file mode 100644 index 00ccc7a..0000000 --- a/.next/server/chunks/ssr/[root-of-the-server]__3bac9c52._.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/loader-circle.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-right.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/shield.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/lock.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/Checkout.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/checkout/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/credit-card.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n];\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJtMTIgNSA3IDctNyA3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('arrow-right', __iconNode);\n\nexport default ArrowRight;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z',\n key: 'oel41y',\n },\n ],\n];\n\n/**\n * @component @name Shield\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXoiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/shield\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Shield = createLucideIcon('shield', __iconNode);\n\nexport default Shield;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '11', x: '3', y: '11', rx: '2', ry: '2', key: '1w4ew1' }],\n ['path', { d: 'M7 11V7a5 5 0 0 1 10 0v4', key: 'fwvmzm' }],\n];\n\n/**\n * @component @name Lock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTEiIHg9IjMiIHk9IjExIiByeD0iMiIgcnk9IjIiIC8+CiAgPHBhdGggZD0iTTcgMTFWN2E1IDUgMCAwIDEgMTAgMHY0IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/lock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Lock = createLucideIcon('lock', __iconNode);\n\nexport default Lock;\n","'use client';\n\n\nimport React, { useState } from 'react';\nimport { CreditCard, Shield, Lock, ArrowRight, Loader2 } from 'lucide-react';\n\ninterface CheckoutProps {\n onComplete: () => void;\n onCancel: () => void;\n}\n\nconst Checkout: React.FC = ({ onComplete, onCancel }) => {\n const [loading, setLoading] = useState(false);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n setLoading(true);\n setTimeout(() => {\n onComplete();\n }, 2000);\n };\n\n return (\n
\n
\n
\n

Commande

\n
\n
Auteur Pro12.00€
\n
TVA (20%)2.40€
\n
\n
Total14.40€
\n
\n
\n
\n

Paiement Sécurisé

\n
\n
\n \n
\n \n \n
\n
\n
\n \n \n
\n \n
\n Traitement chiffré SSL 256-bits\n
\n
\n
\n
\n
\n );\n};\n\nexport default Checkout;\n","'use client';\r\n\r\nimport Checkout from '@/components/Checkout';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function CheckoutPage() {\r\n const router = useRouter();\r\n\r\n return (\r\n router.push('/dashboard')}\r\n onCancel={() => router.push('/pricing')}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '20', height: '14', x: '2', y: '5', rx: '2', key: 'ynyp8z' }],\n ['line', { x1: '2', x2: '22', y1: '10', y2: '10', key: '1b3vmo' }],\n];\n\n/**\n * @component @name CreditCard\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMjAiIGhlaWdodD0iMTQiIHg9IjIiIHk9IjUiIHJ4PSIyIiAvPgogIDxsaW5lIHgxPSIyIiB4Mj0iMjIiIHkxPSIxMCIgeTI9IjEwIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/credit-card\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CreditCard = createLucideIcon('credit-card', __iconNode);\n\nexport default CreditCard;\n"],"names":["module","exports","require","vendored","AppRouterContext","HooksClientContext","ServerInsertedHtml"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__614a5f92._.js b/.next/server/chunks/ssr/[root-of-the-server]__3d1ae521._.js similarity index 79% rename from .next/server/chunks/ssr/[root-of-the-server]__614a5f92._.js rename to .next/server/chunks/ssr/[root-of-the-server]__3d1ae521._.js index 6a1d440..6dcb3fa 100644 --- a/.next/server/chunks/ssr/[root-of-the-server]__614a5f92._.js +++ b/.next/server/chunks/ssr/[root-of-the-server]__3d1ae521._.js @@ -1,3 +1,3 @@ -module.exports=[98205,a=>{"use strict";let b=(0,a.i(29892).default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);a.s(["Save",()=>b],98205)},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},97442,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.AppRouterContext},42481,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.HooksClientContext},70676,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.ServerInsertedHtml},29892,a=>{"use strict";var b=a.i(28091);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],29892)},82772,a=>{"use strict";let b=(0,a.i(29892).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);a.s(["User",()=>b],82772)},75108,a=>{"use strict";let b=(0,a.i(29892).default)("panels-top-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]]);a.s(["Layout",()=>b],75108)},89657,a=>{"use strict";let b=(0,a.i(29892).default)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);a.s(["Shield",()=>b],89657)},45285,a=>{"use strict";let b=(0,a.i(29892).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);a.s(["Target",()=>b],45285)},93216,a=>{"use strict";let b=(0,a.i(29892).default)("flame",[["path",{d:"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4",key:"1slcih"}]]);a.s(["Flame",()=>b],93216)},98220,a=>{"use strict";var b=a.i(78352),c=a.i(34896),d=a.i(95121),e=a.i(28091),f=a.i(82772),g=a.i(89657),h=a.i(98205);let i=(0,a.i(29892).default)("camera",[["path",{d:"M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",key:"18u6gg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]]);var j=a.i(45285),k=a.i(93216),l=a.i(75108);let m=({user:a,onUpdate:c,onBack:d})=>{console.log("[UserProfileSettings DEBUG] PROPS RECEIVED:",{user:a,userId:a?.id,hasOnUpdate:!!c,hasOnBack:!!d});let[m,n]=(0,e.useState)("profile"),[o,p]=(0,e.useState)({name:a.name,bio:a.bio||"",email:a.email,theme:a.preferences.theme,dailyWordGoal:a.preferences.dailyWordGoal});return(0,b.jsx)("div",{className:"h-full bg-slate-50 overflow-y-auto p-8 font-sans",children:(0,b.jsxs)("div",{className:"max-w-4xl mx-auto",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center mb-10",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-3xl font-black text-slate-900",children:"Mon Compte"}),(0,b.jsx)("p",{className:"text-slate-500",children:"Gérez vos informations personnelles et préférences d'écriture."})]}),(0,b.jsx)("button",{onClick:d,className:"bg-white border border-slate-200 px-4 py-2 rounded-lg text-sm font-bold hover:bg-slate-50 transition-colors",children:"Fermer"})]}),(0,b.jsxs)("div",{className:"flex flex-col md:flex-row gap-8",children:[(0,b.jsxs)("div",{className:"w-full md:w-64 space-y-1",children:[(0,b.jsxs)("button",{onClick:()=>n("profile"),className:`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${"profile"===m?"bg-slate-900 text-white shadow-lg":"text-slate-500 hover:bg-white hover:text-slate-900"}`,children:[(0,b.jsx)(f.User,{size:18})," Profil Public"]}),(0,b.jsxs)("button",{onClick:()=>n("preferences"),className:`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${"preferences"===m?"bg-slate-900 text-white shadow-lg":"text-slate-500 hover:bg-white hover:text-slate-900"}`,children:[(0,b.jsx)(l.Layout,{size:18})," Interface & Écriture"]}),(0,b.jsxs)("button",{onClick:()=>n("account"),className:`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${"account"===m?"bg-slate-900 text-white shadow-lg":"text-slate-500 hover:bg-white hover:text-slate-900"}`,children:[(0,b.jsx)(g.Shield,{size:18})," Sécurité & Plan"]})]}),(0,b.jsxs)("div",{className:"flex-1 bg-white rounded-2xl shadow-sm border border-slate-200 p-8",children:["profile"===m&&(0,b.jsxs)("div",{className:"space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300",children:[(0,b.jsxs)("div",{className:"flex items-center gap-6 pb-8 border-b border-slate-100",children:[(0,b.jsxs)("div",{className:"relative group",children:[(0,b.jsx)("img",{src:a.avatar,className:"w-24 h-24 rounded-full object-cover border-4 border-slate-50 shadow-md",alt:"Avatar"}),(0,b.jsx)("button",{className:"absolute inset-0 bg-black/40 text-white rounded-full opacity-0 group-hover:opacity-100 flex items-center justify-center transition-opacity",children:(0,b.jsx)(i,{size:20})})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"font-bold text-slate-900 text-lg",children:a.name}),(0,b.jsx)("p",{className:"text-slate-400 text-sm",children:"Membre depuis Janvier 2024"}),(0,b.jsx)("div",{className:"mt-2 flex gap-4",children:(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-bold text-orange-500",children:[(0,b.jsx)(k.Flame,{size:14,fill:"currentColor"})," ",a.stats.writingStreak," jours de streak"]})})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 gap-6",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest",children:"Nom affiché"}),(0,b.jsx)("input",{type:"text",value:o.name,onChange:a=>p({...o,name:a.target.value}),className:"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500"})]}),(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest",children:"Bio / Citation inspirante"}),(0,b.jsx)("textarea",{value:o.bio,onChange:a=>p({...o,bio:a.target.value}),className:"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 h-24 resize-none",placeholder:"Partagez quelques mots sur votre style..."})]})]})]}),"preferences"===m&&(0,b.jsx)("div",{className:"space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300",children:(0,b.jsxs)("div",{className:"grid grid-cols-1 gap-8",children:[(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest flex items-center gap-2",children:[(0,b.jsx)(j.Target,{size:14})," Objectif quotidien de mots"]}),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("input",{type:"range",min:"0",max:"5000",step:"100",value:o.dailyWordGoal,onChange:a=>p({...o,dailyWordGoal:parseInt(a.target.value)}),className:"flex-1 accent-blue-600"}),(0,b.jsx)("span",{className:"font-mono font-bold text-blue-600 bg-blue-50 px-3 py-1 rounded-lg",children:o.dailyWordGoal})]})]}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest flex items-center gap-2",children:"Thème de l'éditeur"}),(0,b.jsx)("div",{className:"grid grid-cols-3 gap-3",children:["light","sepia","dark"].map(a=>(0,b.jsxs)("button",{onClick:()=>p({...o,theme:a}),className:`p-4 rounded-xl border-2 transition-all flex flex-col items-center gap-2 ${o.theme===a?"border-blue-500 bg-blue-50 text-blue-700":"border-slate-100 hover:border-slate-200 text-slate-500"}`,children:[(0,b.jsx)("div",{className:`w-8 h-8 rounded-full border border-slate-200 ${"light"===a?"bg-white":"sepia"===a?"bg-[#f4ecd8]":"bg-slate-900"}`}),(0,b.jsx)("span",{className:"text-[10px] font-bold uppercase",children:a})]},a))})]})]})}),"account"===m&&(0,b.jsxs)("div",{className:"space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300",children:[(0,b.jsxs)("div",{className:"p-4 bg-blue-50 border border-blue-100 rounded-xl flex justify-between items-center",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("h4",{className:"font-bold text-blue-900",children:["Plan ",a.subscription.plan.toUpperCase()]}),(0,b.jsx)("p",{className:"text-xs text-blue-700",children:"Prochaine facturation le 15 Mars 2024"})]}),(0,b.jsx)("button",{className:"bg-blue-600 text-white px-4 py-2 rounded-lg text-xs font-bold hover:bg-blue-700 shadow-md shadow-blue-200",children:"Gérer"})]}),(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest",children:"Email du compte"}),(0,b.jsx)("input",{type:"email",value:o.email,onChange:a=>p({...o,email:a.target.value}),className:"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500"})]}),(0,b.jsx)("div",{className:"pt-4",children:(0,b.jsx)("button",{className:"text-red-500 text-sm font-bold hover:underline",children:"Supprimer mon compte définitivement"})})]}),(0,b.jsx)("div",{className:"mt-12 pt-8 border-t border-slate-100 flex justify-end",children:(0,b.jsxs)("button",{onClick:()=>{c({name:o.name,bio:o.bio,email:o.email,preferences:{...a.preferences,theme:o.theme,dailyWordGoal:o.dailyWordGoal}}),alert("Profil mis à jour !")},className:"bg-slate-900 text-white px-8 py-3 rounded-xl font-bold flex items-center gap-2 hover:bg-blue-600 transition-all shadow-xl hover:shadow-blue-200",children:[(0,b.jsx)(h.Save,{size:18})," Sauvegarder les modifications"]})})]})]})]})})};function n(){let a=(0,c.useRouter)(),{user:f,loading:g}=(0,d.useAuthContext)();return((0,e.useEffect)(()=>{g||f||a.replace("/login")},[f,g,a]),g||!f)?null:(0,b.jsx)(m,{user:f,onUpdate:a=>console.log("Profile update:",a),onBack:()=>a.push("/dashboard")})}a.s(["default",()=>n],98220)}]; +module.exports=[56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},97442,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.AppRouterContext},42481,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.HooksClientContext},70676,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.ServerInsertedHtml},29892,a=>{"use strict";var b=a.i(28091);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],29892)},98205,a=>{"use strict";let b=(0,a.i(29892).default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);a.s(["Save",()=>b],98205)},82772,a=>{"use strict";let b=(0,a.i(29892).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);a.s(["User",()=>b],82772)},75108,a=>{"use strict";let b=(0,a.i(29892).default)("panels-top-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]]);a.s(["Layout",()=>b],75108)},89657,a=>{"use strict";let b=(0,a.i(29892).default)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);a.s(["Shield",()=>b],89657)},45285,a=>{"use strict";let b=(0,a.i(29892).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);a.s(["Target",()=>b],45285)},93216,a=>{"use strict";let b=(0,a.i(29892).default)("flame",[["path",{d:"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4",key:"1slcih"}]]);a.s(["Flame",()=>b],93216)},98220,a=>{"use strict";var b=a.i(78352),c=a.i(34896),d=a.i(95121),e=a.i(28091),f=a.i(82772),g=a.i(89657),h=a.i(98205);let i=(0,a.i(29892).default)("camera",[["path",{d:"M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",key:"18u6gg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]]);var j=a.i(45285),k=a.i(93216),l=a.i(75108);let m=({user:a,onUpdate:c,onBack:d})=>{console.log("[UserProfileSettings DEBUG] PROPS RECEIVED:",{user:a,userId:a?.id,hasOnUpdate:!!c,hasOnBack:!!d});let[m,n]=(0,e.useState)("profile"),[o,p]=(0,e.useState)({name:a.name,bio:a.bio||"",email:a.email,theme:a.preferences.theme,dailyWordGoal:a.preferences.dailyWordGoal});return(0,b.jsx)("div",{className:"h-full bg-slate-50 overflow-y-auto p-8 font-sans",children:(0,b.jsxs)("div",{className:"max-w-4xl mx-auto",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center mb-10",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-3xl font-black text-slate-900",children:"Mon Compte"}),(0,b.jsx)("p",{className:"text-slate-500",children:"Gérez vos informations personnelles et préférences d'écriture."})]}),(0,b.jsx)("button",{onClick:d,className:"bg-white border border-slate-200 px-4 py-2 rounded-lg text-sm font-bold hover:bg-slate-50 transition-colors",children:"Fermer"})]}),(0,b.jsxs)("div",{className:"flex flex-col md:flex-row gap-8",children:[(0,b.jsxs)("div",{className:"w-full md:w-64 space-y-1",children:[(0,b.jsxs)("button",{onClick:()=>n("profile"),className:`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${"profile"===m?"bg-slate-900 text-white shadow-lg":"text-slate-500 hover:bg-white hover:text-slate-900"}`,children:[(0,b.jsx)(f.User,{size:18})," Profil Public"]}),(0,b.jsxs)("button",{onClick:()=>n("preferences"),className:`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${"preferences"===m?"bg-slate-900 text-white shadow-lg":"text-slate-500 hover:bg-white hover:text-slate-900"}`,children:[(0,b.jsx)(l.Layout,{size:18})," Interface & Écriture"]}),(0,b.jsxs)("button",{onClick:()=>n("account"),className:`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${"account"===m?"bg-slate-900 text-white shadow-lg":"text-slate-500 hover:bg-white hover:text-slate-900"}`,children:[(0,b.jsx)(g.Shield,{size:18})," Sécurité & Plan"]})]}),(0,b.jsxs)("div",{className:"flex-1 bg-white rounded-2xl shadow-sm border border-slate-200 p-8",children:["profile"===m&&(0,b.jsxs)("div",{className:"space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300",children:[(0,b.jsxs)("div",{className:"flex items-center gap-6 pb-8 border-b border-slate-100",children:[(0,b.jsxs)("div",{className:"relative group",children:[(0,b.jsx)("img",{src:a.avatar,className:"w-24 h-24 rounded-full object-cover border-4 border-slate-50 shadow-md",alt:"Avatar"}),(0,b.jsx)("button",{className:"absolute inset-0 bg-black/40 text-white rounded-full opacity-0 group-hover:opacity-100 flex items-center justify-center transition-opacity",children:(0,b.jsx)(i,{size:20})})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"font-bold text-slate-900 text-lg",children:a.name}),(0,b.jsx)("p",{className:"text-slate-400 text-sm",children:"Membre depuis Janvier 2024"}),(0,b.jsx)("div",{className:"mt-2 flex gap-4",children:(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-bold text-orange-500",children:[(0,b.jsx)(k.Flame,{size:14,fill:"currentColor"})," ",a.stats.writingStreak," jours de streak"]})})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 gap-6",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest",children:"Nom affiché"}),(0,b.jsx)("input",{type:"text",value:o.name,onChange:a=>p({...o,name:a.target.value}),className:"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500"})]}),(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest",children:"Bio / Citation inspirante"}),(0,b.jsx)("textarea",{value:o.bio,onChange:a=>p({...o,bio:a.target.value}),className:"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 h-24 resize-none",placeholder:"Partagez quelques mots sur votre style..."})]})]})]}),"preferences"===m&&(0,b.jsx)("div",{className:"space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300",children:(0,b.jsxs)("div",{className:"grid grid-cols-1 gap-8",children:[(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest flex items-center gap-2",children:[(0,b.jsx)(j.Target,{size:14})," Objectif quotidien de mots"]}),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("input",{type:"range",min:"0",max:"5000",step:"100",value:o.dailyWordGoal,onChange:a=>p({...o,dailyWordGoal:parseInt(a.target.value)}),className:"flex-1 accent-blue-600"}),(0,b.jsx)("span",{className:"font-mono font-bold text-blue-600 bg-blue-50 px-3 py-1 rounded-lg",children:o.dailyWordGoal})]})]}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest flex items-center gap-2",children:"Thème de l'éditeur"}),(0,b.jsx)("div",{className:"grid grid-cols-3 gap-3",children:["light","sepia","dark"].map(a=>(0,b.jsxs)("button",{onClick:()=>p({...o,theme:a}),className:`p-4 rounded-xl border-2 transition-all flex flex-col items-center gap-2 ${o.theme===a?"border-blue-500 bg-blue-50 text-blue-700":"border-slate-100 hover:border-slate-200 text-slate-500"}`,children:[(0,b.jsx)("div",{className:`w-8 h-8 rounded-full border border-slate-200 ${"light"===a?"bg-white":"sepia"===a?"bg-[#f4ecd8]":"bg-slate-900"}`}),(0,b.jsx)("span",{className:"text-[10px] font-bold uppercase",children:a})]},a))})]})]})}),"account"===m&&(0,b.jsxs)("div",{className:"space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300",children:[(0,b.jsxs)("div",{className:"p-4 bg-blue-50 border border-blue-100 rounded-xl flex justify-between items-center",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("h4",{className:"font-bold text-blue-900",children:["Plan ",a.subscription.plan.toUpperCase()]}),(0,b.jsx)("p",{className:"text-xs text-blue-700",children:"Prochaine facturation le 15 Mars 2024"})]}),(0,b.jsx)("button",{className:"bg-blue-600 text-white px-4 py-2 rounded-lg text-xs font-bold hover:bg-blue-700 shadow-md shadow-blue-200",children:"Gérer"})]}),(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest",children:"Email du compte"}),(0,b.jsx)("input",{type:"email",value:o.email,onChange:a=>p({...o,email:a.target.value}),className:"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500"})]}),(0,b.jsx)("div",{className:"pt-4",children:(0,b.jsx)("button",{className:"text-red-500 text-sm font-bold hover:underline",children:"Supprimer mon compte définitivement"})})]}),(0,b.jsx)("div",{className:"mt-12 pt-8 border-t border-slate-100 flex justify-end",children:(0,b.jsxs)("button",{onClick:()=>{c({name:o.name,bio:o.bio,email:o.email,preferences:{...a.preferences,theme:o.theme,dailyWordGoal:o.dailyWordGoal}}),alert("Profil mis à jour !")},className:"bg-slate-900 text-white px-8 py-3 rounded-xl font-bold flex items-center gap-2 hover:bg-blue-600 transition-all shadow-xl hover:shadow-blue-200",children:[(0,b.jsx)(h.Save,{size:18})," Sauvegarder les modifications"]})})]})]})]})})};function n(){let a=(0,c.useRouter)(),{user:f,loading:g}=(0,d.useAuthContext)();return((0,e.useEffect)(()=>{g||f||a.replace("/login")},[f,g,a]),g||!f)?null:(0,b.jsx)(m,{user:f,onUpdate:a=>console.log("Profile update:",a),onBack:()=>a.push("/dashboard")})}a.s(["default",()=>n],98220)}]; -//# sourceMappingURL=%5Broot-of-the-server%5D__614a5f92._.js.map \ No newline at end of file +//# sourceMappingURL=%5Broot-of-the-server%5D__3d1ae521._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__614a5f92._.js.map b/.next/server/chunks/ssr/[root-of-the-server]__3d1ae521._.js.map similarity index 61% rename from .next/server/chunks/ssr/[root-of-the-server]__614a5f92._.js.map rename to .next/server/chunks/ssr/[root-of-the-server]__3d1ae521._.js.map index 14be169..a113ae5 100644 --- a/.next/server/chunks/ssr/[root-of-the-server]__614a5f92._.js.map +++ b/.next/server/chunks/ssr/[root-of-the-server]__3d1ae521._.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/save.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/user.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/panels-top-left.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/shield.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/target.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/flame.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/UserProfileSettings.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/profile/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/camera.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z',\n key: '1c8476',\n },\n ],\n ['path', { d: 'M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7', key: '1ydtos' }],\n ['path', { d: 'M7 3v4a1 1 0 0 0 1 1h7', key: 't51u73' }],\n];\n\n/**\n * @component @name Save\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUuMiAzYTIgMiAwIDAgMSAxLjQuNmwzLjggMy44YTIgMiAwIDAgMSAuNiAxLjRWMTlhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yeiIgLz4KICA8cGF0aCBkPSJNMTcgMjF2LTdhMSAxIDAgMCAwLTEtMUg4YTEgMSAwIDAgMC0xIDF2NyIgLz4KICA8cGF0aCBkPSJNNyAzdjRhMSAxIDAgMCAwIDEgMWg3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/save\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Save = createLucideIcon('save', __iconNode);\n\nexport default Save;\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n];\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMjF2LTJhNCA0IDAgMCAwLTQtNEg5YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/user\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst User = createLucideIcon('user', __iconNode);\n\nexport default User;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', key: 'afitv7' }],\n ['path', { d: 'M3 9h18', key: '1pudct' }],\n ['path', { d: 'M9 21V9', key: '1oto5p' }],\n];\n\n/**\n * @component @name PanelsTopLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjMiIHJ4PSIyIiAvPgogIDxwYXRoIGQ9Ik0zIDloMTgiIC8+CiAgPHBhdGggZD0iTTkgMjFWOSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/panels-top-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst PanelsTopLeft = createLucideIcon('panels-top-left', __iconNode);\n\nexport default PanelsTopLeft;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z',\n key: 'oel41y',\n },\n ],\n];\n\n/**\n * @component @name Shield\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXoiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/shield\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Shield = createLucideIcon('shield', __iconNode);\n\nexport default Shield;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['circle', { cx: '12', cy: '12', r: '6', key: '1vlfrh' }],\n ['circle', { cx: '12', cy: '12', r: '2', key: '1c9p78' }],\n];\n\n/**\n * @component @name Target\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI2IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/target\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Target = createLucideIcon('target', __iconNode);\n\nexport default Target;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4',\n key: '1slcih',\n },\n ],\n];\n\n/**\n * @component @name Flame\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgM3ExIDQgNCA2LjV0MyA1LjVhMSAxIDAgMCAxLTE0IDAgNSA1IDAgMCAxIDEtMyAxIDEgMCAwIDAgNSAwYzAtMi0xLjUtMy0xLjUtNXEwLTIgMi41LTQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/flame\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Flame = createLucideIcon('flame', __iconNode);\n\nexport default Flame;\n","'use client';\n\n\nimport React, { useState } from 'react';\nimport { UserProfile, UserPreferences } from '@/lib/types';\nimport { User, Settings, Globe, Shield, Bell, Save, Camera, Target, Flame, Layout } from 'lucide-react';\n\ninterface UserProfileSettingsProps {\n user: UserProfile;\n onUpdate: (updates: Partial) => void;\n onBack: () => void;\n}\n\nconst UserProfileSettings: React.FC = ({ user, onUpdate, onBack }) => {\n // DEBUG: Check props\n console.log(\"[UserProfileSettings DEBUG] PROPS RECEIVED:\", {\n user,\n userId: user?.id,\n hasOnUpdate: !!onUpdate,\n hasOnBack: !!onBack\n });\n\n const [activeTab, setActiveTab] = useState<'profile' | 'preferences' | 'account'>('profile');\n const [formData, setFormData] = useState({\n name: user.name,\n bio: user.bio || '',\n email: user.email,\n theme: user.preferences.theme,\n dailyWordGoal: user.preferences.dailyWordGoal\n });\n\n const handleSave = () => {\n onUpdate({\n name: formData.name,\n bio: formData.bio,\n email: formData.email,\n preferences: {\n ...user.preferences,\n theme: formData.theme,\n dailyWordGoal: formData.dailyWordGoal\n }\n });\n alert(\"Profil mis à jour !\");\n };\n\n return (\n
\n
\n
\n
\n

Mon Compte

\n

Gérez vos informations personnelles et préférences d'écriture.

\n
\n \n
\n\n
\n {/* Sidebar Navigation */}\n
\n setActiveTab('profile')}\n className={`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${activeTab === 'profile' ? 'bg-slate-900 text-white shadow-lg' : 'text-slate-500 hover:bg-white hover:text-slate-900'}`}\n >\n Profil Public\n \n setActiveTab('preferences')}\n className={`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${activeTab === 'preferences' ? 'bg-slate-900 text-white shadow-lg' : 'text-slate-500 hover:bg-white hover:text-slate-900'}`}\n >\n Interface & Écriture\n \n setActiveTab('account')}\n className={`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${activeTab === 'account' ? 'bg-slate-900 text-white shadow-lg' : 'text-slate-500 hover:bg-white hover:text-slate-900'}`}\n >\n Sécurité & Plan\n \n
\n\n {/* Main Content Pane */}\n
\n {activeTab === 'profile' && (\n
\n
\n
\n \"Avatar\"\n \n
\n
\n

{user.name}

\n

Membre depuis Janvier 2024

\n
\n
\n {user.stats.writingStreak} jours de streak\n
\n
\n
\n
\n\n
\n
\n \n setFormData({ ...formData, name: e.target.value })}\n className=\"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500\"\n />\n
\n
\n \n setFormData({ ...formData, bio: e.target.value })}\n className=\"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 h-24 resize-none\"\n placeholder=\"Partagez quelques mots sur votre style...\"\n />\n
\n
\n
\n )}\n\n {activeTab === 'preferences' && (\n
\n
\n
\n \n
\n setFormData({ ...formData, dailyWordGoal: parseInt(e.target.value) })}\n className=\"flex-1 accent-blue-600\"\n />\n {formData.dailyWordGoal}\n
\n
\n\n
\n \n
\n {['light', 'sepia', 'dark'].map((t) => (\n setFormData({ ...formData, theme: t as any })}\n 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' : 'border-slate-100 hover:border-slate-200 text-slate-500'}`}\n >\n
\n {t}\n \n ))}\n
\n
\n
\n
\n )}\n\n {activeTab === 'account' && (\n
\n
\n
\n

Plan {user.subscription.plan.toUpperCase()}

\n

Prochaine facturation le 15 Mars 2024

\n
\n \n
\n\n
\n \n setFormData({ ...formData, email: e.target.value })}\n className=\"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500\"\n />\n
\n\n
\n \n
\n
\n )}\n\n
\n \n Sauvegarder les modifications\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default UserProfileSettings;\n","'use client';\r\n\r\nimport { useRouter } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport UserProfileSettings from '@/components/UserProfileSettings';\r\nimport { useEffect } from 'react';\r\n\r\nexport default function ProfilePage() {\r\n const router = useRouter();\r\n const { user, loading } = useAuthContext();\r\n\r\n useEffect(() => {\r\n if (!loading && !user) {\r\n router.replace('/login');\r\n }\r\n }, [user, loading, router]);\r\n\r\n if (loading || !user) return null;\r\n\r\n return (\r\n console.log('Profile update:', updates)}\r\n onBack={() => router.push('/dashboard')}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z',\n key: '18u6gg',\n },\n ],\n ['circle', { cx: '12', cy: '13', r: '3', key: '1vg3eu' }],\n];\n\n/**\n * @component @name Camera\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTMuOTk3IDRhMiAyIDAgMCAxIDEuNzYgMS4wNWwuNDg2LjlBMiAyIDAgMCAwIDE4LjAwMyA3SDIwYTIgMiAwIDAgMSAyIDJ2OWEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlY5YTIgMiAwIDAgMSAyLTJoMS45OTdhMiAyIDAgMCAwIDEuNzU5LTEuMDQ4bC40ODktLjkwNEEyIDIgMCAwIDEgMTAuMDA0IDR6IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTMiIHI9IjMiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/camera\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Camera = createLucideIcon('camera', __iconNode);\n\nexport default Camera;\n"],"names":["module","exports","require","vendored","AppRouterContext","HooksClientContext","ServerInsertedHtml"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19]} \ No newline at end of file +{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/save.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/user.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/panels-top-left.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/shield.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/target.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/flame.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/UserProfileSettings.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/profile/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/camera.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z',\n key: '1c8476',\n },\n ],\n ['path', { d: 'M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7', key: '1ydtos' }],\n ['path', { d: 'M7 3v4a1 1 0 0 0 1 1h7', key: 't51u73' }],\n];\n\n/**\n * @component @name Save\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUuMiAzYTIgMiAwIDAgMSAxLjQuNmwzLjggMy44YTIgMiAwIDAgMSAuNiAxLjRWMTlhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yeiIgLz4KICA8cGF0aCBkPSJNMTcgMjF2LTdhMSAxIDAgMCAwLTEtMUg4YTEgMSAwIDAgMC0xIDF2NyIgLz4KICA8cGF0aCBkPSJNNyAzdjRhMSAxIDAgMCAwIDEgMWg3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/save\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Save = createLucideIcon('save', __iconNode);\n\nexport default Save;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n];\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMjF2LTJhNCA0IDAgMCAwLTQtNEg5YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/user\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst User = createLucideIcon('user', __iconNode);\n\nexport default User;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', key: 'afitv7' }],\n ['path', { d: 'M3 9h18', key: '1pudct' }],\n ['path', { d: 'M9 21V9', key: '1oto5p' }],\n];\n\n/**\n * @component @name PanelsTopLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjMiIHJ4PSIyIiAvPgogIDxwYXRoIGQ9Ik0zIDloMTgiIC8+CiAgPHBhdGggZD0iTTkgMjFWOSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/panels-top-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst PanelsTopLeft = createLucideIcon('panels-top-left', __iconNode);\n\nexport default PanelsTopLeft;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z',\n key: 'oel41y',\n },\n ],\n];\n\n/**\n * @component @name Shield\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXoiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/shield\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Shield = createLucideIcon('shield', __iconNode);\n\nexport default Shield;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['circle', { cx: '12', cy: '12', r: '6', key: '1vlfrh' }],\n ['circle', { cx: '12', cy: '12', r: '2', key: '1c9p78' }],\n];\n\n/**\n * @component @name Target\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI2IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/target\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Target = createLucideIcon('target', __iconNode);\n\nexport default Target;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4',\n key: '1slcih',\n },\n ],\n];\n\n/**\n * @component @name Flame\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgM3ExIDQgNCA2LjV0MyA1LjVhMSAxIDAgMCAxLTE0IDAgNSA1IDAgMCAxIDEtMyAxIDEgMCAwIDAgNSAwYzAtMi0xLjUtMy0xLjUtNXEwLTIgMi41LTQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/flame\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Flame = createLucideIcon('flame', __iconNode);\n\nexport default Flame;\n","'use client';\n\n\nimport React, { useState } from 'react';\nimport { UserProfile, UserPreferences } from '@/lib/types';\nimport { User, Settings, Globe, Shield, Bell, Save, Camera, Target, Flame, Layout } from 'lucide-react';\n\ninterface UserProfileSettingsProps {\n user: UserProfile;\n onUpdate: (updates: Partial) => void;\n onBack: () => void;\n}\n\nconst UserProfileSettings: React.FC = ({ user, onUpdate, onBack }) => {\n // DEBUG: Check props\n console.log(\"[UserProfileSettings DEBUG] PROPS RECEIVED:\", {\n user,\n userId: user?.id,\n hasOnUpdate: !!onUpdate,\n hasOnBack: !!onBack\n });\n\n const [activeTab, setActiveTab] = useState<'profile' | 'preferences' | 'account'>('profile');\n const [formData, setFormData] = useState({\n name: user.name,\n bio: user.bio || '',\n email: user.email,\n theme: user.preferences.theme,\n dailyWordGoal: user.preferences.dailyWordGoal\n });\n\n const handleSave = () => {\n onUpdate({\n name: formData.name,\n bio: formData.bio,\n email: formData.email,\n preferences: {\n ...user.preferences,\n theme: formData.theme,\n dailyWordGoal: formData.dailyWordGoal\n }\n });\n alert(\"Profil mis à jour !\");\n };\n\n return (\n
\n
\n
\n
\n

Mon Compte

\n

Gérez vos informations personnelles et préférences d'écriture.

\n
\n \n
\n\n
\n {/* Sidebar Navigation */}\n
\n setActiveTab('profile')}\n className={`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${activeTab === 'profile' ? 'bg-slate-900 text-white shadow-lg' : 'text-slate-500 hover:bg-white hover:text-slate-900'}`}\n >\n Profil Public\n \n setActiveTab('preferences')}\n className={`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${activeTab === 'preferences' ? 'bg-slate-900 text-white shadow-lg' : 'text-slate-500 hover:bg-white hover:text-slate-900'}`}\n >\n Interface & Écriture\n \n setActiveTab('account')}\n className={`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${activeTab === 'account' ? 'bg-slate-900 text-white shadow-lg' : 'text-slate-500 hover:bg-white hover:text-slate-900'}`}\n >\n Sécurité & Plan\n \n
\n\n {/* Main Content Pane */}\n
\n {activeTab === 'profile' && (\n
\n
\n
\n \"Avatar\"\n \n
\n
\n

{user.name}

\n

Membre depuis Janvier 2024

\n
\n
\n {user.stats.writingStreak} jours de streak\n
\n
\n
\n
\n\n
\n
\n \n setFormData({ ...formData, name: e.target.value })}\n className=\"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500\"\n />\n
\n
\n \n setFormData({ ...formData, bio: e.target.value })}\n className=\"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 h-24 resize-none\"\n placeholder=\"Partagez quelques mots sur votre style...\"\n />\n
\n
\n
\n )}\n\n {activeTab === 'preferences' && (\n
\n
\n
\n \n
\n setFormData({ ...formData, dailyWordGoal: parseInt(e.target.value) })}\n className=\"flex-1 accent-blue-600\"\n />\n {formData.dailyWordGoal}\n
\n
\n\n
\n \n
\n {['light', 'sepia', 'dark'].map((t) => (\n setFormData({ ...formData, theme: t as any })}\n 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' : 'border-slate-100 hover:border-slate-200 text-slate-500'}`}\n >\n
\n {t}\n \n ))}\n
\n
\n
\n
\n )}\n\n {activeTab === 'account' && (\n
\n
\n
\n

Plan {user.subscription.plan.toUpperCase()}

\n

Prochaine facturation le 15 Mars 2024

\n
\n \n
\n\n
\n \n setFormData({ ...formData, email: e.target.value })}\n className=\"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500\"\n />\n
\n\n
\n \n
\n
\n )}\n\n
\n \n Sauvegarder les modifications\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default UserProfileSettings;\n","'use client';\r\n\r\nimport { useRouter } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport UserProfileSettings from '@/components/UserProfileSettings';\r\nimport { useEffect } from 'react';\r\n\r\nexport default function ProfilePage() {\r\n const router = useRouter();\r\n const { user, loading } = useAuthContext();\r\n\r\n useEffect(() => {\r\n if (!loading && !user) {\r\n router.replace('/login');\r\n }\r\n }, [user, loading, router]);\r\n\r\n if (loading || !user) return null;\r\n\r\n return (\r\n console.log('Profile update:', updates)}\r\n onBack={() => router.push('/dashboard')}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z',\n key: '18u6gg',\n },\n ],\n ['circle', { cx: '12', cy: '13', r: '3', key: '1vg3eu' }],\n];\n\n/**\n * @component @name Camera\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTMuOTk3IDRhMiAyIDAgMCAxIDEuNzYgMS4wNWwuNDg2LjlBMiAyIDAgMCAwIDE4LjAwMyA3SDIwYTIgMiAwIDAgMSAyIDJ2OWEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlY5YTIgMiAwIDAgMSAyLTJoMS45OTdhMiAyIDAgMCAwIDEuNzU5LTEuMDQ4bC40ODktLjkwNEEyIDIgMCAwIDEgMTAuMDA0IDR6IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTMiIHI9IjMiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/camera\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Camera = createLucideIcon('camera', __iconNode);\n\nexport default Camera;\n"],"names":["module","exports","require","vendored","AppRouterContext","HooksClientContext","ServerInsertedHtml"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__47b901a8._.js.map b/.next/server/chunks/ssr/[root-of-the-server]__47b901a8._.js.map deleted file mode 100644 index 8ff86b9..0000000 --- a/.next/server/chunks/ssr/[root-of-the-server]__47b901a8._.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/loader-circle.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-right.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/user.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book-open.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/lock.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/AuthPage.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/signup/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/shield-check.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/mail.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n];\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJtMTIgNSA3IDctNyA3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('arrow-right', __iconNode);\n\nexport default ArrowRight;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n];\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMjF2LTJhNCA0IDAgMCAwLTQtNEg5YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/user\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst User = createLucideIcon('user', __iconNode);\n\nexport default User;\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 7v14', key: '1akyts' }],\n [\n 'path',\n {\n d: 'M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z',\n key: 'ruj8y',\n },\n ],\n];\n\n/**\n * @component @name BookOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgN3YxNCIgLz4KICA8cGF0aCBkPSJNMyAxOGExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWg1YTQgNCAwIDAgMSA0IDQgNCA0IDAgMCAxIDQtNGg1YTEgMSAwIDAgMSAxIDF2MTNhMSAxIDAgMCAxLTEgMWgtNmEzIDMgMCAwIDAtMyAzIDMgMyAwIDAgMC0zLTN6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/book-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst BookOpen = createLucideIcon('book-open', __iconNode);\n\nexport default BookOpen;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '11', x: '3', y: '11', rx: '2', ry: '2', key: '1w4ew1' }],\n ['path', { d: 'M7 11V7a5 5 0 0 1 10 0v4', key: 'fwvmzm' }],\n];\n\n/**\n * @component @name Lock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTEiIHg9IjMiIHk9IjExIiByeD0iMiIgcnk9IjIiIC8+CiAgPHBhdGggZD0iTTcgMTFWN2E1IDUgMCAwIDEgMTAgMHY0IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/lock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Lock = createLucideIcon('lock', __iconNode);\n\nexport default Lock;\n","'use client';\n\nimport React, { useState, useEffect } from 'react';\nimport { Mail, Lock, User, ArrowRight, Loader2, BookOpen, ShieldCheck } from 'lucide-react';\nimport { useAuthContext } from '@/providers/AuthProvider';\n\ninterface AuthPageProps {\n onBack: () => void;\n onSuccess: () => void;\n initialMode?: 'signin' | 'signup' | 'forgot';\n}\n\nconst AuthPage: React.FC = ({ onBack, onSuccess, initialMode = 'signin' }) => {\n const [mode, setMode] = useState<'signin' | 'signup' | 'forgot'>(initialMode);\n const [loading, setLoading] = useState(false);\n const [formData, setFormData] = useState({ name: '', email: '', password: '' });\n const [error, setError] = useState('');\n\n // On récupère les fonctions de connexion directement du hook\n const { user, login, signup } = useAuthContext();\n\n // Redirection automatique dès que l'utilisateur est détecté dans l'état global\n useEffect(() => {\n if (user) {\n onSuccess();\n }\n }, [user, onSuccess]);\n\n const handleAdminLogin = async () => {\n const adminData = { email: 'streaper2@gmail.com', password: 'Kency1313' };\n setFormData({ name: 'Admin Plume', ...adminData });\n setLoading(true);\n setError('');\n\n try {\n await login(adminData.email, adminData.password);\n } catch (e: any) {\n setError(e?.message || 'Erreur de connexion au service.');\n } finally {\n setLoading(false);\n }\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setError('');\n setLoading(true);\n\n try {\n if (mode === 'signup') {\n await signup(formData.email, formData.password, formData.name);\n } else {\n await login(formData.email, formData.password);\n }\n } catch (e: any) {\n setError(e?.message || 'Une erreur technique est survenue.');\n } finally {\n setLoading(false);\n }\n };\n\n return (\n
\n {/* Panneau Latéral (Visible sur Desktop) */}\n
\n
\n
\n
\n
\n\n
\n PlumeIA\n
\n\n
\n

\n L'endroit où vos histoires prennent vie.\n

\n

\n Rejoignez une communauté d'auteurs qui utilisent l'IA pour briser la page blanche.\n

\n
\n\n
\n © 2024 PlumeIA Ecosystem.\n
\n
\n\n {/* Formulaire */}\n
\n
\n
\n

\n {mode === 'signin' ? 'Content de vous revoir' : mode === 'signup' ? \"Commencer l'aventure\" : 'Récupération'}\n

\n

\n {mode === 'signin' ? 'Entrez vos identifiants pour continuer.' : 'Créez votre compte gratuit en quelques secondes.'}\n

\n
\n\n {error && (\n
\n {error}\n
\n )}\n\n
\n {mode === 'signup' && (\n
\n \n
\n \n setFormData({ ...formData, name: e.target.value })}\n placeholder=\"Marc Dupré\"\n className=\"w-full pl-12 pr-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium\"\n />\n
\n
\n )}\n\n
\n \n
\n \n setFormData({ ...formData, email: e.target.value })}\n placeholder=\"votre@email.com\"\n className=\"w-full pl-12 pr-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium\"\n />\n
\n
\n\n {mode !== 'forgot' && (\n
\n \n
\n \n setFormData({ ...formData, password: e.target.value })}\n placeholder=\"••••••••\"\n className=\"w-full pl-12 pr-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium\"\n />\n
\n
\n )}\n\n \n {loading ? : (\n <>{mode === 'signin' ? 'Se connecter' : mode === 'signup' ? 'Créer mon compte' : 'Envoyer'} \n )}\n \n \n\n {mode === 'signin' && (\n \n Connexion démo (Admin)\n \n )}\n\n
\n

\n {mode === 'signin' ? \"Pas de compte ?\" : \"Déjà membre ?\"}\n setMode(mode === 'signin' ? 'signup' : 'signin')}\n className=\"ml-2 font-bold text-blue-600\"\n >\n {mode === 'signin' ? \"S'inscrire\" : \"Se connecter\"}\n \n

\n
\n\n \n
\n
\n
\n );\n};\n\nexport default AuthPage;","'use client';\r\n\r\nimport AuthPage from '@/components/AuthPage';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function Signup() {\r\n const router = useRouter();\r\n\r\n return (\r\n router.push('/')}\r\n onSuccess={() => router.push('/dashboard')}\r\n initialMode=\"signup\"\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z',\n key: 'oel41y',\n },\n ],\n ['path', { d: 'm9 12 2 2 4-4', key: 'dzmm74' }],\n];\n\n/**\n * @component @name ShieldCheck\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXoiIC8+CiAgPHBhdGggZD0ibTkgMTIgMiAyIDQtNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/shield-check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ShieldCheck = createLucideIcon('shield-check', __iconNode);\n\nexport default ShieldCheck;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7', key: '132q7q' }],\n ['rect', { x: '2', y: '4', width: '20', height: '16', rx: '2', key: 'izxlao' }],\n];\n\n/**\n * @component @name Mail\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjIgNy04Ljk5MSA1LjcyN2EyIDIgMCAwIDEtMi4wMDkgMEwyIDciIC8+CiAgPHJlY3QgeD0iMiIgeT0iNCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE2IiByeD0iMiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/mail\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Mail = createLucideIcon('mail', __iconNode);\n\nexport default Mail;\n"],"names":["module","exports","require","vendored","AppRouterContext","HooksClientContext","ServerInsertedHtml"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,18,19]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__540aea7d._.js b/.next/server/chunks/ssr/[root-of-the-server]__540aea7d._.js deleted file mode 100644 index 9f1ce4b..0000000 --- a/.next/server/chunks/ssr/[root-of-the-server]__540aea7d._.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports=[79080,a=>{"use strict";let b=(0,a.i(29892).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>b],79080)},73258,a=>{"use strict";let b=(0,a.i(29892).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);a.s(["BookOpen",()=>b],73258)},806,a=>{"use strict";let b=(0,a.i(29892).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);a.s(["Sparkles",()=>b],806)},40400,a=>{"use strict";let b=(0,a.i(29892).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);a.s(["X",()=>b],40400)},20769,a=>{"use strict";let b=(0,a.i(29892).default)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);a.s(["Settings",()=>b],20769)},82772,a=>{"use strict";let b=(0,a.i(29892).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);a.s(["User",()=>b],82772)},75108,a=>{"use strict";let b=(0,a.i(29892).default)("panels-top-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]]);a.s(["Layout",()=>b],75108)},45044,76763,a=>{"use strict";var b=a.i(29892);let c=(0,b.default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);a.s(["RefreshCw",()=>c],45044);let d=(0,b.default)("mouse-pointer-click",[["path",{d:"M14 4.1 12 6",key:"ita8i4"}],["path",{d:"m5.1 8-2.9-.8",key:"1go3kf"}],["path",{d:"m6 12-1.9 2",key:"mnht97"}],["path",{d:"M7.2 2.2 8 5.1",key:"1cfko1"}],["path",{d:"M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z",key:"s0h3yz"}]]);a.s(["MousePointerClick",()=>d],76763)},63287,a=>{"use strict";let b=(0,a.i(29892).default)("lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);a.s(["Lightbulb",()=>b],63287)},95556,27197,a=>{"use strict";var b=a.i(29892);let c=(0,b.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);a.s(["Globe",()=>c],95556);let d=(0,b.default)("git-graph",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M5 9v6",key:"158jrl"}],["circle",{cx:"5",cy:"18",r:"3",key:"104gr9"}],["path",{d:"M12 3v18",key:"108xh3"}],["circle",{cx:"19",cy:"6",r:"3",key:"108a5v"}],["path",{d:"M16 15.7A9 9 0 0 0 19 9",key:"1e3vqb"}]]);a.s(["GitGraph",()=>d],27197)},46451,a=>{"use strict";let b=(0,a.i(29892).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);a.s(["Trash2",()=>b],46451)},33782,a=>{"use strict";let b=(0,a.i(29892).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",()=>b],33782)},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},97442,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.AppRouterContext},42481,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.HooksClientContext},70676,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.ServerInsertedHtml},29892,a=>{"use strict";var b=a.i(28091);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],29892)},37620,a=>{"use strict";var b,c=((b={}).CHARACTER="Personnage",b.LOCATION="Lieu",b.OBJECT="Objet",b.NOTE="Note",b);a.s(["EntityType",()=>c])},72071,a=>{"use strict";let b=(0,a.i(29892).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);a.s(["Zap",()=>b],72071)},6111,a=>{"use strict";let b=(0,a.i(29892).default)("message-circle",[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}]]);a.s(["MessageCircle",()=>b],6111)},14294,a=>{"use strict";let b=(0,a.i(29892).default)("book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]]);a.s(["Book",()=>b],14294)},3622,68239,a=>{"use strict";var b=a.i(28091),c=a.i(31715),d=a.i(37620);let e="Nouveau Roman",f="Auteur Inconnu",g={id:"chap-1",title:"Chapitre 1",content:"

Il était une fois...

",summary:"Début de l'histoire."},h={[d.EntityType.CHARACTER]:"👤",[d.EntityType.LOCATION]:"🏰",[d.EntityType.OBJECT]:"🗝️",[d.EntityType.NOTE]:"📝"},i={[d.EntityType.CHARACTER]:"bg-blue-100 text-blue-800 border-blue-200",[d.EntityType.LOCATION]:"bg-green-100 text-green-800 border-green-200",[d.EntityType.OBJECT]:"bg-amber-100 text-amber-800 border-amber-200",[d.EntityType.NOTE]:"bg-gray-100 text-gray-800 border-gray-200"};a.s(["ARCHETYPES",0,["Le Héros","L'Ombre / Le Méchant","Le Mentor","Le Gardien du Seuil","Le Shapeshifter (Changeforme)","Le Trickster (Farceur)","L'Allié","L'Élu","Le Rebelle","Le Séducteur","Le Sage","Le Guerrier","L'Innocent"],"DEFAULT_AUTHOR",0,f,"DEFAULT_BOOK_TITLE",0,e,"ENTITY_COLORS",0,i,"ENTITY_ICONS",0,h,"EYE_COLORS",0,["Marron","Bleu","Vert","Noisette","Gris","Noir","Vairons","Ambre"],"GENRES",0,["Fantasy","Science-Fiction","Thriller / Polar","Romance","Historique","Horreur","Aventure","Contemporain","Jeunesse / Young Adult","Dystopie"],"HAIR_COLORS",0,["Brun","Noir","Blond","Roux","Auburn","Gris","Blanc","Châtain","Chauve","Teinture (Bleu/Rose/Etc)"],"INITIAL_CHAPTER",0,g,"POV_OPTIONS",0,["1ère personne (Je)","3ème personne (Limitée au protagoniste)","3ème personne (Omnisciente)","Multi-points de vue (Alterné)"],"TENSE_OPTIONS",0,["Passé (Passé simple / Imparfait)","Présent de narration"],"TONES",0,["Sombre & Sérieux","Léger & Humoristique","Épique & Grandiose","Mélancolique","Mystérieux","Optimiste","Cynique","Romantique"]],68239),a.s(["useProjects",0,a=>{let[d,h]=(0,b.useState)([]),[i,j]=(0,b.useState)(null),[k,l]=(0,b.useState)(!1);(0,b.useEffect)(()=>{a?(async()=>{l(!0);try{let a=(await c.default.projects.list()||[]).map(a=>({id:a.id,title:a.title,author:a.author,lastModified:new Date(a.updatedAt).getTime(),chapters:[],entities:[],ideas:[],settings:a.settings||void 0}));h(a)}catch(a){console.error("Failed to load projects",a)}finally{l(!1)}})():h([])},[a]),(0,b.useEffect)(()=>{i&&(async()=>{try{let a=await c.default.projects.get(i),b={id:a.id,title:a.title,author:a.author,lastModified:new Date(a.updatedAt).getTime(),settings:a.settings||void 0,styleGuide:a.styleGuide||void 0,chapters:(a.chapters||[]).map(a=>({id:a.id,title:a.title,content:a.content,summary:a.summary})),entities:(a.entities||[]).map(a=>({id:a.id,type:a.type,name:a.name,description:a.description,details:a.details,storyContext:a.storyContext,attributes:a.attributes,customValues:a.customValues})),ideas:(a.ideas||[]).map(a=>({id:a.id,title:a.title,description:a.description,status:a.status,category:a.category,createdAt:new Date(a.createdAt).getTime()})),workflow:{nodes:(a.plotNodes||[]).map(a=>({id:a.id,x:a.x,y:a.y,title:a.title,description:a.description,color:a.color,type:a.type})),connections:(a.plotConnections||[]).map(a=>({id:a.id,source:a.source,target:a.target}))}};h(a=>a.map(a=>a.id===i?b:a))}catch(a){console.error("Failed to load project details",a)}})()},[i]);let m=async(a,b)=>{try{let d=await c.default.chapters.create({projectId:a,title:b.title||"New Chapter",content:b.content||"",summary:b.summary||void 0});return h(b=>b.map(b=>b.id!==a?b:{...b,chapters:[...b.chapters,{id:d.id,title:d.title,content:d.content,summary:d.summary}]})),d.id}catch(a){return console.error("Failed to add chapter",a),null}};return{projects:d,currentProjectId:i,setCurrentProjectId:j,createProject:async()=>{if(a)try{let b=await c.default.projects.create({title:e,author:a.name||f,settings:{genre:"Fantasy",targetAudience:"Adult",tone:"Epic"}}),d={id:b.id,title:b.title,author:b.author,lastModified:Date.now(),chapters:[],entities:[],ideas:[],settings:b.settings};return h(a=>[...a,d]),await m(b.id,g),b.id}catch(a){console.error("Failed to create project",a)}},updateProject:async(a,b)=>{h(c=>c.map(c=>c.id===a?{...c,...b}:c));try{let d={};void 0!==b.title&&(d.title=b.title),void 0!==b.author&&(d.author=b.author),void 0!==b.settings&&(d.settings=b.settings),void 0!==b.styleGuide&&(d.styleGuide=b.styleGuide),await c.default.projects.update(a,d)}catch(a){console.error("Failed to update project",a)}},addChapter:m,updateChapter:async(a,b,d)=>{h(c=>c.map(c=>c.id!==a?c:{...c,chapters:c.chapters.map(a=>a.id===b?{...a,...d}:a)}));try{await c.default.chapters.update(b,d)}catch(a){console.error("Failed to update chapter",a)}},createEntity:async(a,b,d)=>{try{let e=await c.default.entities.create({projectId:a,type:b,name:d?.name||`Nouveau ${b}`,description:d?.description||"",details:d?.details||"",attributes:d?.attributes||void 0,customValues:d?.customValues||void 0});return h(b=>b.map(b=>b.id!==a?b:{...b,entities:[...b.entities,{id:e.id,type:e.type,name:e.name,description:e.description,details:e.details,attributes:e.attributes,customValues:e.customValues||{}}]})),e.id}catch(a){throw console.error("Failed to create entity",a),a}},updateEntity:async(a,b,d)=>{h(c=>c.map(c=>c.id!==a?c:{...c,entities:c.entities.map(a=>a.id===b?{...a,...d}:a)}));try{await c.default.entities.update(b,d)}catch(a){console.error("Failed to update entity",a)}},deleteEntity:async(a,b)=>{h(c=>c.map(c=>c.id!==a?c:{...c,entities:c.entities.filter(a=>a.id!==b)}));try{await c.default.entities.delete(b)}catch(a){console.error("Failed to delete entity",a)}},deleteProject:async a=>{try{await c.default.projects.delete(a),h(b=>b.filter(b=>b.id!==a)),i===a&&j(null)}catch(a){console.error("Failed to delete project",a)}}}}],3622)},5127,38089,a=>{"use strict";var b=a.i(29892);let c=(0,b.default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",()=>c],5127);let d=(0,b.default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);a.s(["LogOut",()=>d],38089)}]; - -//# sourceMappingURL=%5Broot-of-the-server%5D__540aea7d._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__540aea7d._.js.map b/.next/server/chunks/ssr/[root-of-the-server]__540aea7d._.js.map deleted file mode 100644 index 213563e..0000000 --- a/.next/server/chunks/ssr/[root-of-the-server]__540aea7d._.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/loader-circle.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book-open.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/sparkles.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/x.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/settings.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/user.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/panels-top-left.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/mouse-pointer-click.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/refresh-cw.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/lightbulb.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/git-graph.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/globe.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/trash-2.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/plus.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/lib/types.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/zap.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/message-circle.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/lib/constants.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/log-out.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/chevron-right.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 7v14', key: '1akyts' }],\n [\n 'path',\n {\n d: 'M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z',\n key: 'ruj8y',\n },\n ],\n];\n\n/**\n * @component @name BookOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgN3YxNCIgLz4KICA8cGF0aCBkPSJNMyAxOGExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWg1YTQgNCAwIDAgMSA0IDQgNCA0IDAgMCAxIDQtNGg1YTEgMSAwIDAgMSAxIDF2MTNhMSAxIDAgMCAxLTEgMWgtNmEzIDMgMCAwIDAtMyAzIDMgMyAwIDAgMC0zLTN6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/book-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst BookOpen = createLucideIcon('book-open', __iconNode);\n\nexport default BookOpen;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z',\n key: '1s2grr',\n },\n ],\n ['path', { d: 'M20 2v4', key: '1rf3ol' }],\n ['path', { d: 'M22 4h-4', key: 'gwowj6' }],\n ['circle', { cx: '4', cy: '20', r: '2', key: '6kqj1y' }],\n];\n\n/**\n * @component @name Sparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuMDE3IDIuODE0YTEgMSAwIDAgMSAxLjk2NiAwbDEuMDUxIDUuNTU4YTIgMiAwIDAgMCAxLjU5NCAxLjU5NGw1LjU1OCAxLjA1MWExIDEgMCAwIDEgMCAxLjk2NmwtNS41NTggMS4wNTFhMiAyIDAgMCAwLTEuNTk0IDEuNTk0bC0xLjA1MSA1LjU1OGExIDEgMCAwIDEtMS45NjYgMGwtMS4wNTEtNS41NThhMiAyIDAgMCAwLTEuNTk0LTEuNTk0bC01LjU1OC0xLjA1MWExIDEgMCAwIDEgMC0xLjk2Nmw1LjU1OC0xLjA1MWEyIDIgMCAwIDAgMS41OTQtMS41OTR6IiAvPgogIDxwYXRoIGQ9Ik0yMCAydjQiIC8+CiAgPHBhdGggZD0iTTIyIDRoLTQiIC8+CiAgPGNpcmNsZSBjeD0iNCIgY3k9IjIwIiByPSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/sparkles\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Sparkles = createLucideIcon('sparkles', __iconNode);\n\nexport default Sparkles;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n];\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPgogIDxwYXRoIGQ9Im02IDYgMTIgMTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('x', __iconNode);\n\nexport default X;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915',\n key: '1i5ecw',\n },\n ],\n ['circle', { cx: '12', cy: '12', r: '3', key: '1v7zrd' }],\n];\n\n/**\n * @component @name Settings\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNOS42NzEgNC4xMzZhMi4zNCAyLjM0IDAgMCAxIDQuNjU5IDAgMi4zNCAyLjM0IDAgMCAwIDMuMzE5IDEuOTE1IDIuMzQgMi4zNCAwIDAgMSAyLjMzIDQuMDMzIDIuMzQgMi4zNCAwIDAgMCAwIDMuODMxIDIuMzQgMi4zNCAwIDAgMS0yLjMzIDQuMDMzIDIuMzQgMi4zNCAwIDAgMC0zLjMxOSAxLjkxNSAyLjM0IDIuMzQgMCAwIDEtNC42NTkgMCAyLjM0IDIuMzQgMCAwIDAtMy4zMi0xLjkxNSAyLjM0IDIuMzQgMCAwIDEtMi4zMy00LjAzMyAyLjM0IDIuMzQgMCAwIDAgMC0zLjgzMUEyLjM0IDIuMzQgMCAwIDEgNi4zNSA2LjA1MWEyLjM0IDIuMzQgMCAwIDAgMy4zMTktMS45MTUiIC8+CiAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMyIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/settings\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Settings = createLucideIcon('settings', __iconNode);\n\nexport default Settings;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n];\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMjF2LTJhNCA0IDAgMCAwLTQtNEg5YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/user\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst User = createLucideIcon('user', __iconNode);\n\nexport default User;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', key: 'afitv7' }],\n ['path', { d: 'M3 9h18', key: '1pudct' }],\n ['path', { d: 'M9 21V9', key: '1oto5p' }],\n];\n\n/**\n * @component @name PanelsTopLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjMiIHJ4PSIyIiAvPgogIDxwYXRoIGQ9Ik0zIDloMTgiIC8+CiAgPHBhdGggZD0iTTkgMjFWOSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/panels-top-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst PanelsTopLeft = createLucideIcon('panels-top-left', __iconNode);\n\nexport default PanelsTopLeft;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M14 4.1 12 6', key: 'ita8i4' }],\n ['path', { d: 'm5.1 8-2.9-.8', key: '1go3kf' }],\n ['path', { d: 'm6 12-1.9 2', key: 'mnht97' }],\n ['path', { d: 'M7.2 2.2 8 5.1', key: '1cfko1' }],\n [\n 'path',\n {\n d: 'M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z',\n key: 's0h3yz',\n },\n ],\n];\n\n/**\n * @component @name MousePointerClick\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTQgNC4xIDEyIDYiIC8+CiAgPHBhdGggZD0ibTUuMSA4LTIuOS0uOCIgLz4KICA8cGF0aCBkPSJtNiAxMi0xLjkgMiIgLz4KICA8cGF0aCBkPSJNNy4yIDIuMiA4IDUuMSIgLz4KICA8cGF0aCBkPSJNOS4wMzcgOS42OWEuNDk4LjQ5OCAwIDAgMSAuNjUzLS42NTNsMTEgNC41YS41LjUgMCAwIDEtLjA3NC45NDlsLTQuMzQ5IDEuMDQxYTEgMSAwIDAgMC0uNzQuNzM5bC0xLjA0IDQuMzVhLjUuNSAwIDAgMS0uOTUuMDc0eiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/mouse-pointer-click\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst MousePointerClick = createLucideIcon('mouse-pointer-click', __iconNode);\n\nexport default MousePointerClick;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8', key: 'v9h5vc' }],\n ['path', { d: 'M21 3v5h-5', key: '1q7to0' }],\n ['path', { d: 'M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16', key: '3uifl3' }],\n ['path', { d: 'M8 16H3v5', key: '1cv678' }],\n];\n\n/**\n * @component @name RefreshCw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMyAxMmE5IDkgMCAwIDEgOS05IDkuNzUgOS43NSAwIDAgMSA2Ljc0IDIuNzRMMjEgOCIgLz4KICA8cGF0aCBkPSJNMjEgM3Y1aC01IiAvPgogIDxwYXRoIGQ9Ik0yMSAxMmE5IDkgMCAwIDEtOSA5IDkuNzUgOS43NSAwIDAgMS02Ljc0LTIuNzRMMyAxNiIgLz4KICA8cGF0aCBkPSJNOCAxNkgzdjUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/refresh-cw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RefreshCw = createLucideIcon('refresh-cw', __iconNode);\n\nexport default RefreshCw;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5',\n key: '1gvzjb',\n },\n ],\n ['path', { d: 'M9 18h6', key: 'x1upvd' }],\n ['path', { d: 'M10 22h4', key: 'ceow96' }],\n];\n\n/**\n * @component @name Lightbulb\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgMTRjLjItMSAuNy0xLjcgMS41LTIuNSAxLS45IDEuNS0yLjIgMS41LTMuNUE2IDYgMCAwIDAgNiA4YzAgMSAuMiAyLjIgMS41IDMuNS43LjcgMS4zIDEuNSAxLjUgMi41IiAvPgogIDxwYXRoIGQ9Ik05IDE4aDYiIC8+CiAgPHBhdGggZD0iTTEwIDIyaDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/lightbulb\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Lightbulb = createLucideIcon('lightbulb', __iconNode);\n\nexport default Lightbulb;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '5', cy: '6', r: '3', key: '1qnov2' }],\n ['path', { d: 'M5 9v6', key: '158jrl' }],\n ['circle', { cx: '5', cy: '18', r: '3', key: '104gr9' }],\n ['path', { d: 'M12 3v18', key: '108xh3' }],\n ['circle', { cx: '19', cy: '6', r: '3', key: '108a5v' }],\n ['path', { d: 'M16 15.7A9 9 0 0 0 19 9', key: '1e3vqb' }],\n];\n\n/**\n * @component @name GitGraph\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSI1IiBjeT0iNiIgcj0iMyIgLz4KICA8cGF0aCBkPSJNNSA5djYiIC8+CiAgPGNpcmNsZSBjeD0iNSIgY3k9IjE4IiByPSIzIiAvPgogIDxwYXRoIGQ9Ik0xMiAzdjE4IiAvPgogIDxjaXJjbGUgY3g9IjE5IiBjeT0iNiIgcj0iMyIgLz4KICA8cGF0aCBkPSJNMTYgMTUuN0E5IDkgMCAwIDAgMTkgOSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/git-graph\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GitGraph = createLucideIcon('git-graph', __iconNode);\n\nexport default GitGraph;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20', key: '13o1zl' }],\n ['path', { d: 'M2 12h20', key: '9i4pu4' }],\n];\n\n/**\n * @component @name Globe\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJNMTIgMmExNC41IDE0LjUgMCAwIDAgMCAyMCAxNC41IDE0LjUgMCAwIDAgMC0yMCIgLz4KICA8cGF0aCBkPSJNMiAxMmgyMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/globe\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Globe = createLucideIcon('globe', __iconNode);\n\nexport default Globe;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M10 11v6', key: 'nco0om' }],\n ['path', { d: 'M14 11v6', key: 'outv1u' }],\n ['path', { d: 'M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6', key: 'miytrc' }],\n ['path', { d: 'M3 6h18', key: 'd0wm0j' }],\n ['path', { d: 'M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2', key: 'e791ji' }],\n];\n\n/**\n * @component @name Trash2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTAgMTF2NiIgLz4KICA8cGF0aCBkPSJNMTQgMTF2NiIgLz4KICA8cGF0aCBkPSJNMTkgNnYxNGEyIDIgMCAwIDEtMiAySDdhMiAyIDAgMCAxLTItMlY2IiAvPgogIDxwYXRoIGQ9Ik0zIDZoMTgiIC8+CiAgPHBhdGggZD0iTTggNlY0YTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/trash-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Trash2 = createLucideIcon('trash-2', __iconNode);\n\nexport default Trash2;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n];\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('plus', __iconNode);\n\nexport default Plus;\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","\nexport enum EntityType {\n CHARACTER = 'Personnage',\n LOCATION = 'Lieu',\n OBJECT = 'Objet',\n NOTE = 'Note'\n}\n\nexport interface CharacterAttributes {\n age: number;\n height: number;\n hair: string;\n eyes: string;\n archetype: string;\n role: 'protagonist' | 'antagonist' | 'support' | 'extra';\n personality: {\n spectrumIntrovertExtravert: number;\n spectrumEmotionalRational: number;\n spectrumChaoticLawful: number;\n };\n physicalQuirk: string;\n behavioralQuirk: string;\n}\n\nexport type CustomFieldType = 'text' | 'textarea' | 'number' | 'boolean' | 'select';\n\nexport interface CustomFieldDefinition {\n id: string;\n label: string;\n type: CustomFieldType;\n options?: string[];\n placeholder?: string;\n}\n\nexport interface EntityTemplate {\n entityType: EntityType;\n fields: CustomFieldDefinition[];\n}\n\nexport interface Entity {\n id: string;\n type: EntityType;\n name: string;\n description: string;\n details: string;\n storyContext?: string;\n attributes?: CharacterAttributes;\n customValues?: Record;\n}\n\nexport interface Chapter {\n id: string;\n title: string;\n content: string;\n summary?: string;\n}\n\nexport type PlotNodeType = 'story' | 'dialogue' | 'action';\n\nexport interface PlotNode {\n id: string;\n x: number;\n y: number;\n title: string;\n description: string;\n color: string;\n type?: PlotNodeType;\n}\n\nexport interface PlotConnection {\n id: string;\n source: string;\n target: string;\n}\n\nexport interface WorkflowData {\n nodes: PlotNode[];\n connections: PlotConnection[];\n}\n\nexport type IdeaStatus = 'todo' | 'progress' | 'done';\nexport type IdeaCategory = 'plot' | 'character' | 'research' | 'todo';\n\nexport interface Idea {\n id: string;\n title: string;\n description: string;\n status: IdeaStatus;\n category: IdeaCategory;\n createdAt: number;\n}\n\nexport interface BookSettings {\n genre: string;\n subGenre?: string;\n targetAudience: string;\n tone: string;\n pov: string;\n tense: string;\n synopsis: string;\n themes: string;\n}\n\nexport interface BookProject {\n id: string;\n title: string;\n author: string;\n lastModified: number;\n settings?: BookSettings;\n // Direct fields sometimes used in creation/updates before settings normalization\n genre?: string;\n pov?: string;\n tense?: string;\n chapters: Chapter[];\n entities: Entity[];\n workflow?: WorkflowData;\n templates?: EntityTemplate[];\n styleGuide?: string;\n ideas?: Idea[];\n}\n\nexport interface ChatMessage {\n id: string;\n role: 'user' | 'model';\n text: string;\n responseType?: 'draft' | 'reflection';\n isLoading?: boolean;\n}\n\n// --- SAAS TYPES ---\n\nexport type PlanType = 'free' | 'pro' | 'master';\n\nexport interface Subscription {\n plan: PlanType;\n startDate: number;\n status: 'active' | 'canceled' | 'past_due';\n}\n\nexport interface UserUsage {\n aiActionsCurrent: number;\n aiActionsLimit: number;\n projectsLimit: number;\n}\n\nexport interface UserPreferences {\n theme: 'light' | 'dark' | 'sepia';\n dailyWordGoal: number;\n language: 'fr' | 'en';\n}\n\nexport interface UserStats {\n totalWordsWritten: number;\n writingStreak: number;\n lastWriteDate: number;\n}\n\nexport interface UserProfile {\n id: string;\n email: string;\n name: string;\n avatar?: string;\n bio?: string;\n subscription: Subscription;\n usage: UserUsage;\n preferences: UserPreferences;\n stats: UserStats;\n}\n\nexport type ViewMode = 'write' | 'world_building' | 'workflow' | 'settings' | 'preview' | 'ideas' | 'landing' | 'features' | 'pricing' | 'checkout' | 'dashboard' | 'auth' | 'signup' | 'profile';\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z',\n key: '1xq2db',\n },\n ],\n];\n\n/**\n * @component @name Zap\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxNGExIDEgMCAwIDEtLjc4LTEuNjNsOS45LTEwLjJhLjUuNSAwIDAgMSAuODYuNDZsLTEuOTIgNi4wMkExIDEgMCAwIDAgMTMgMTBoN2ExIDEgMCAwIDEgLjc4IDEuNjNsLTkuOSAxMC4yYS41LjUgMCAwIDEtLjg2LS40NmwxLjkyLTYuMDJBMSAxIDAgMCAwIDExIDE0eiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/zap\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Zap = createLucideIcon('zap', __iconNode);\n\nexport default Zap;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719',\n key: '1sd12s',\n },\n ],\n];\n\n/**\n * @component @name MessageCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMi45OTIgMTYuMzQyYTIgMiAwIDAgMSAuMDk0IDEuMTY3bC0xLjA2NSAzLjI5YTEgMSAwIDAgMCAxLjIzNiAxLjE2OGwzLjQxMy0uOTk4YTIgMiAwIDAgMSAxLjA5OS4wOTIgMTAgMTAgMCAxIDAtNC43NzctNC43MTkiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/message-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst MessageCircle = createLucideIcon('message-circle', __iconNode);\n\nexport default MessageCircle;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20',\n key: 'k3hazp',\n },\n ],\n];\n\n/**\n * @component @name Book\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxOS41di0xNUEyLjUgMi41IDAgMCAxIDYuNSAySDE5YTEgMSAwIDAgMSAxIDF2MThhMSAxIDAgMCAxLTEgMUg2LjVhMSAxIDAgMCAxIDAtNUgyMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/book\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Book = createLucideIcon('book', __iconNode);\n\nexport default Book;\n","'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n await api.projects.update(id, payload);\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n","\nimport { EntityType } from \"./types\";\n\nexport const DEFAULT_BOOK_TITLE = \"Nouveau Roman\";\nexport const DEFAULT_AUTHOR = \"Auteur Inconnu\";\n\nexport const INITIAL_CHAPTER = {\n id: 'chap-1',\n title: 'Chapitre 1',\n content: '

Il était une fois...

',\n summary: 'Début de l\\'histoire.'\n};\n\nexport const ENTITY_ICONS: Record = {\n [EntityType.CHARACTER]: '👤',\n [EntityType.LOCATION]: '🏰',\n [EntityType.OBJECT]: '🗝️',\n [EntityType.NOTE]: '📝',\n};\n\n// Colors for tags\nexport const ENTITY_COLORS: Record = {\n [EntityType.CHARACTER]: 'bg-blue-100 text-blue-800 border-blue-200',\n [EntityType.LOCATION]: 'bg-green-100 text-green-800 border-green-200',\n [EntityType.OBJECT]: 'bg-amber-100 text-amber-800 border-amber-200',\n [EntityType.NOTE]: 'bg-gray-100 text-gray-800 border-gray-200',\n};\n\n// --- Character Creation Lists ---\n\nexport const HAIR_COLORS = [\n \"Brun\", \"Noir\", \"Blond\", \"Roux\", \"Auburn\", \"Gris\", \"Blanc\", \"Châtain\", \"Chauve\", \"Teinture (Bleu/Rose/Etc)\"\n];\n\nexport const EYE_COLORS = [\n \"Marron\", \"Bleu\", \"Vert\", \"Noisette\", \"Gris\", \"Noir\", \"Vairons\", \"Ambre\"\n];\n\nexport const ARCHETYPES = [\n \"Le Héros\", \"L'Ombre / Le Méchant\", \"Le Mentor\", \"Le Gardien du Seuil\",\n \"Le Shapeshifter (Changeforme)\", \"Le Trickster (Farceur)\", \"L'Allié\", \"L'Élu\",\n \"Le Rebelle\", \"Le Séducteur\", \"Le Sage\", \"Le Guerrier\", \"L'Innocent\"\n];\n\n// --- Book Settings Lists ---\n\nexport const GENRES = [\n \"Fantasy\", \"Science-Fiction\", \"Thriller / Polar\", \"Romance\", \"Historique\",\n \"Horreur\", \"Aventure\", \"Contemporain\", \"Jeunesse / Young Adult\", \"Dystopie\"\n];\n\nexport const TONES = [\n \"Sombre & Sérieux\", \"Léger & Humoristique\", \"Épique & Grandiose\",\n \"Mélancolique\", \"Mystérieux\", \"Optimiste\", \"Cynique\", \"Romantique\"\n];\n\nexport const POV_OPTIONS = [\n \"1ère personne (Je)\",\n \"3ème personne (Limitée au protagoniste)\",\n \"3ème personne (Omnisciente)\",\n \"Multi-points de vue (Alterné)\"\n];\n\nexport const TENSE_OPTIONS = [\n \"Passé (Passé simple / Imparfait)\",\n \"Présent de narration\"\n];","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm16 17 5-5-5-5', key: '1bji2h' }],\n ['path', { d: 'M21 12H9', key: 'dn1m92' }],\n ['path', { d: 'M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4', key: '1uf3rs' }],\n];\n\n/**\n * @component @name LogOut\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTYgMTcgNS01LTUtNSIgLz4KICA8cGF0aCBkPSJNMjEgMTJIOSIgLz4KICA8cGF0aCBkPSJNOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/log-out\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LogOut = createLucideIcon('log-out', __iconNode);\n\nexport default LogOut;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]];\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtOSAxOCA2LTYtNi02IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('chevron-right', __iconNode);\n\nexport default ChevronRight;\n"],"names":["module","exports","require","vendored","AppRouterContext","HooksClientContext","ServerInsertedHtml"],"mappings":"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A,CAAA,CAAA,CAAA,CAAA,CAAA,AAAiB,CAAA,AAAjB,AAApB,CAAA,AAAoB,AAAiB,CAAjB,AAAiB,AAArC,CAAoB,AAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAzBP,CAClC,AAwBgE,CAxB/D,AAwB+D,CCxB/D,ADAA,AAwB+D,CCxB/D,ADAA,AAwB+D,CCxB/D,ADAA,AAwB+D,CAxB/D,ACAA,ADwB+D,CAxB/D,ACAA,ADwB+D,CAxB/D,ACAA,ADwB+D,CCxB/D,ADAA,AAAQ,AAwBuD,CCxBvD,ADAA,AAwBuD,CAAU,CAAA,AAxB5D,CAAA,ACAA,CDAA,ACAA,CDAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CDAA,ACAA,CDAA,ACAA,CDAgB,ACAhB,ADAA,CAAgB,ACAhB,CAAA,ADAgB,CCAhB,ADAgB,CAAA,ACAhB,UDA+B,CAC7C,ACDc,CDCb,ACDa,CACb,ADAA,ACDa,CDCb,ACDa,AACb,CAAA,ADAA,ACDa,CDCb,ACAA,AADa,CDCb,ACDa,AACb,CADa,AACb,ADAA,CCDa,AACb,ADAA,CCDa,ADCH,CCDG,CAAA,ADCA,CCDA,AACA,ADAA,CCDA,AACA,ADAA,CCDA,AACA,ADAA,CCDA,AACA,ADAA,CAAA,ACDA,AACA,CADA,AACA,ADAA,CCDA,AACA,ADAA,CCDA,AACA,ADAA,CCDA,ADCA,ACAA,CDAA,ACAA,CAAA,ADAA,CCAA,ADAA,CAAA,ACAA,ODAsB,CCAH,ADAG,CCAH,ADAG,CCAH,ADAG,CCAH,ADAG,CAAA,KAAU,CAC9C,CAAC,CAAA,ACAA,CAAA,ADAA,CAAA,ACAA,CDAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAU,EAAG,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CDAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27,28,31,32]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__87a657d3._.js b/.next/server/chunks/ssr/[root-of-the-server]__87a657d3._.js new file mode 100644 index 0000000..4753421 --- /dev/null +++ b/.next/server/chunks/ssr/[root-of-the-server]__87a657d3._.js @@ -0,0 +1,3 @@ +module.exports=[56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},97442,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.AppRouterContext},42481,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.HooksClientContext},70676,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.ServerInsertedHtml},29892,a=>{"use strict";var b=a.i(28091);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],29892)},79080,a=>{"use strict";let b=(0,a.i(29892).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>b],79080)},73258,a=>{"use strict";let b=(0,a.i(29892).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);a.s(["BookOpen",()=>b],73258)},806,a=>{"use strict";let b=(0,a.i(29892).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);a.s(["Sparkles",()=>b],806)},40400,a=>{"use strict";let b=(0,a.i(29892).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);a.s(["X",()=>b],40400)},20769,a=>{"use strict";let b=(0,a.i(29892).default)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);a.s(["Settings",()=>b],20769)},82772,a=>{"use strict";let b=(0,a.i(29892).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);a.s(["User",()=>b],82772)},75108,a=>{"use strict";let b=(0,a.i(29892).default)("panels-top-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]]);a.s(["Layout",()=>b],75108)},45044,76763,a=>{"use strict";var b=a.i(29892);let c=(0,b.default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);a.s(["RefreshCw",()=>c],45044);let d=(0,b.default)("mouse-pointer-click",[["path",{d:"M14 4.1 12 6",key:"ita8i4"}],["path",{d:"m5.1 8-2.9-.8",key:"1go3kf"}],["path",{d:"m6 12-1.9 2",key:"mnht97"}],["path",{d:"M7.2 2.2 8 5.1",key:"1cfko1"}],["path",{d:"M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z",key:"s0h3yz"}]]);a.s(["MousePointerClick",()=>d],76763)},63287,a=>{"use strict";let b=(0,a.i(29892).default)("lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);a.s(["Lightbulb",()=>b],63287)},95556,27197,a=>{"use strict";var b=a.i(29892);let c=(0,b.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);a.s(["Globe",()=>c],95556);let d=(0,b.default)("git-graph",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M5 9v6",key:"158jrl"}],["circle",{cx:"5",cy:"18",r:"3",key:"104gr9"}],["path",{d:"M12 3v18",key:"108xh3"}],["circle",{cx:"19",cy:"6",r:"3",key:"108a5v"}],["path",{d:"M16 15.7A9 9 0 0 0 19 9",key:"1e3vqb"}]]);a.s(["GitGraph",()=>d],27197)},37620,a=>{"use strict";var b,c=((b={}).CHARACTER="Personnage",b.LOCATION="Lieu",b.OBJECT="Objet",b.NOTE="Note",b);a.s(["EntityType",()=>c])},33782,a=>{"use strict";let b=(0,a.i(29892).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",()=>b],33782)},46344,a=>{"use strict";var b=a.i(78352),c=a.i(28091);let d=(0,c.createContext)(null);function e({value:a,children:c}){return(0,b.jsx)(d.Provider,{value:a,children:c})}function f(){let a=(0,c.useContext)(d);if(!a)throw Error("useProjectContext must be used within ProjectProvider");return a}a.s(["ProjectProvider",()=>e,"useProjectContext",()=>f])},46451,a=>{"use strict";let b=(0,a.i(29892).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);a.s(["Trash2",()=>b],46451)},72071,a=>{"use strict";let b=(0,a.i(29892).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);a.s(["Zap",()=>b],72071)},6111,a=>{"use strict";let b=(0,a.i(29892).default)("message-circle",[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}]]);a.s(["MessageCircle",()=>b],6111)},14294,a=>{"use strict";let b=(0,a.i(29892).default)("book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]]);a.s(["Book",()=>b],14294)},3622,68239,a=>{"use strict";var b=a.i(28091),c=a.i(31715),d=a.i(37620);let e="Nouveau Roman",f="Auteur Inconnu",g={id:"chap-1",title:"Chapitre 1",content:"

Il était une fois...

",summary:"Début de l'histoire."},h={[d.EntityType.CHARACTER]:"👤",[d.EntityType.LOCATION]:"🏰",[d.EntityType.OBJECT]:"🗝️",[d.EntityType.NOTE]:"📝"},i={[d.EntityType.CHARACTER]:"bg-blue-100 text-blue-800 border-blue-200",[d.EntityType.LOCATION]:"bg-green-100 text-green-800 border-green-200",[d.EntityType.OBJECT]:"bg-amber-100 text-amber-800 border-amber-200",[d.EntityType.NOTE]:"bg-gray-100 text-gray-800 border-gray-200"};a.s(["ARCHETYPES",0,["Le Héros","L'Ombre / Le Méchant","Le Mentor","Le Gardien du Seuil","Le Shapeshifter (Changeforme)","Le Trickster (Farceur)","L'Allié","L'Élu","Le Rebelle","Le Séducteur","Le Sage","Le Guerrier","L'Innocent"],"DEFAULT_AUTHOR",0,f,"DEFAULT_BOOK_TITLE",0,e,"ENTITY_COLORS",0,i,"ENTITY_ICONS",0,h,"EYE_COLORS",0,["Marron","Bleu","Vert","Noisette","Gris","Noir","Vairons","Ambre"],"GENRES",0,["Fantasy","Science-Fiction","Thriller / Polar","Romance","Historique","Horreur","Aventure","Contemporain","Jeunesse / Young Adult","Dystopie"],"HAIR_COLORS",0,["Brun","Noir","Blond","Roux","Auburn","Gris","Blanc","Châtain","Chauve","Teinture (Bleu/Rose/Etc)"],"INITIAL_CHAPTER",0,g,"POV_OPTIONS",0,["1ère personne (Je)","3ème personne (Limitée au protagoniste)","3ème personne (Omnisciente)","Multi-points de vue (Alterné)"],"TENSE_OPTIONS",0,["Passé (Passé simple / Imparfait)","Présent de narration"],"TONES",0,["Sombre & Sérieux","Léger & Humoristique","Épique & Grandiose","Mélancolique","Mystérieux","Optimiste","Cynique","Romantique"]],68239),a.s(["useProjects",0,a=>{let[d,h]=(0,b.useState)([]),[i,j]=(0,b.useState)(null),[k,l]=(0,b.useState)(!1);(0,b.useEffect)(()=>{a?(async()=>{l(!0);try{let a=(await c.default.projects.list()||[]).map(a=>({id:a.id,title:a.title,author:a.author,lastModified:new Date(a.updatedAt).getTime(),chapters:[],entities:[],ideas:[],settings:a.settings||void 0}));h(a)}catch(a){console.error("Failed to load projects",a)}finally{l(!1)}})():h([])},[a]),(0,b.useEffect)(()=>{i&&(async()=>{try{let a=await c.default.projects.get(i),b={id:a.id,title:a.title,author:a.author,lastModified:new Date(a.updatedAt).getTime(),settings:a.settings||void 0,styleGuide:a.styleGuide||void 0,chapters:(a.chapters||[]).map(a=>({id:a.id,title:a.title,content:a.content,summary:a.summary})),entities:(a.entities||[]).map(a=>({id:a.id,type:a.type,name:a.name,description:a.description,details:a.details,storyContext:a.storyContext,attributes:a.attributes,customValues:a.customValues})),ideas:(a.ideas||[]).map(a=>({id:a.id,title:a.title,description:a.description,status:a.status,category:a.category,createdAt:new Date(a.createdAt).getTime()})),workflow:{nodes:(a.plotNodes||[]).map(a=>({id:a.id,x:a.x,y:a.y,title:a.title,description:a.description,color:a.color,type:a.type})),connections:(a.plotConnections||[]).map(a=>({id:a.id,source:a.source,target:a.target}))}};h(a=>a.map(a=>a.id===i?b:a))}catch(a){console.error("Failed to load project details",a)}})()},[i]);let m=async(a,b)=>{try{let d=await c.default.chapters.create({projectId:a,title:b.title||"New Chapter",content:b.content||"",summary:b.summary||void 0});return h(b=>b.map(b=>b.id!==a?b:{...b,chapters:[...b.chapters,{id:d.id,title:d.title,content:d.content,summary:d.summary}]})),d.id}catch(a){return console.error("Failed to add chapter",a),null}};return{projects:d,currentProjectId:i,setCurrentProjectId:j,createProject:async()=>{if(a)try{let b=await c.default.projects.create({title:e,author:a.name||f,settings:{genre:"Fantasy",targetAudience:"Adult",tone:"Epic"}}),d={id:b.id,title:b.title,author:b.author,lastModified:Date.now(),chapters:[],entities:[],ideas:[],settings:b.settings};return h(a=>[...a,d]),await m(b.id,g),b.id}catch(a){console.error("Failed to create project",a)}},updateProject:async(a,b)=>{h(c=>c.map(c=>c.id===a?{...c,...b}:c));try{let d={};void 0!==b.title&&(d.title=b.title),void 0!==b.author&&(d.author=b.author),void 0!==b.settings&&(d.settings=b.settings),void 0!==b.styleGuide&&(d.styleGuide=b.styleGuide),await c.default.projects.update(a,d)}catch(a){console.error("Failed to update project",a)}},addChapter:m,updateChapter:async(a,b,d)=>{h(c=>c.map(c=>c.id!==a?c:{...c,chapters:c.chapters.map(a=>a.id===b?{...a,...d}:a)}));try{await c.default.chapters.update(b,d)}catch(a){console.error("Failed to update chapter",a)}},createEntity:async(a,b,d)=>{try{let e=await c.default.entities.create({projectId:a,type:b,name:d?.name||`Nouveau ${b}`,description:d?.description||"",details:d?.details||"",attributes:d?.attributes||void 0,customValues:d?.customValues||void 0});return h(b=>b.map(b=>b.id!==a?b:{...b,entities:[...b.entities,{id:e.id,type:e.type,name:e.name,description:e.description,details:e.details,attributes:e.attributes,customValues:e.customValues||{}}]})),e.id}catch(a){throw console.error("Failed to create entity",a),a}},updateEntity:async(a,b,d)=>{h(c=>c.map(c=>c.id!==a?c:{...c,entities:c.entities.map(a=>a.id===b?{...a,...d}:a)}));try{await c.default.entities.update(b,d)}catch(a){console.error("Failed to update entity",a)}},deleteEntity:async(a,b)=>{h(c=>c.map(c=>c.id!==a?c:{...c,entities:c.entities.filter(a=>a.id!==b)}));try{await c.default.entities.delete(b)}catch(a){console.error("Failed to delete entity",a)}},deleteProject:async a=>{try{await c.default.projects.delete(a),h(b=>b.filter(b=>b.id!==a)),i===a&&j(null)}catch(a){console.error("Failed to delete project",a)}}}}],3622)},5127,38089,a=>{"use strict";var b=a.i(29892);let c=(0,b.default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",()=>c],5127);let d=(0,b.default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);a.s(["LogOut",()=>d],38089)}]; + +//# sourceMappingURL=%5Broot-of-the-server%5D__87a657d3._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__87a657d3._.js.map b/.next/server/chunks/ssr/[root-of-the-server]__87a657d3._.js.map new file mode 100644 index 0000000..c89fb65 --- /dev/null +++ b/.next/server/chunks/ssr/[root-of-the-server]__87a657d3._.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/loader-circle.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book-open.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/sparkles.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/x.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/settings.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/user.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/panels-top-left.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/mouse-pointer-click.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/refresh-cw.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/lightbulb.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/git-graph.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/globe.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/lib/types.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/plus.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/providers/ProjectProvider.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/trash-2.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/zap.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/message-circle.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/lib/constants.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/log-out.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/chevron-right.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 7v14', key: '1akyts' }],\n [\n 'path',\n {\n d: 'M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z',\n key: 'ruj8y',\n },\n ],\n];\n\n/**\n * @component @name BookOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgN3YxNCIgLz4KICA8cGF0aCBkPSJNMyAxOGExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWg1YTQgNCAwIDAgMSA0IDQgNCA0IDAgMCAxIDQtNGg1YTEgMSAwIDAgMSAxIDF2MTNhMSAxIDAgMCAxLTEgMWgtNmEzIDMgMCAwIDAtMyAzIDMgMyAwIDAgMC0zLTN6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/book-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst BookOpen = createLucideIcon('book-open', __iconNode);\n\nexport default BookOpen;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z',\n key: '1s2grr',\n },\n ],\n ['path', { d: 'M20 2v4', key: '1rf3ol' }],\n ['path', { d: 'M22 4h-4', key: 'gwowj6' }],\n ['circle', { cx: '4', cy: '20', r: '2', key: '6kqj1y' }],\n];\n\n/**\n * @component @name Sparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuMDE3IDIuODE0YTEgMSAwIDAgMSAxLjk2NiAwbDEuMDUxIDUuNTU4YTIgMiAwIDAgMCAxLjU5NCAxLjU5NGw1LjU1OCAxLjA1MWExIDEgMCAwIDEgMCAxLjk2NmwtNS41NTggMS4wNTFhMiAyIDAgMCAwLTEuNTk0IDEuNTk0bC0xLjA1MSA1LjU1OGExIDEgMCAwIDEtMS45NjYgMGwtMS4wNTEtNS41NThhMiAyIDAgMCAwLTEuNTk0LTEuNTk0bC01LjU1OC0xLjA1MWExIDEgMCAwIDEgMC0xLjk2Nmw1LjU1OC0xLjA1MWEyIDIgMCAwIDAgMS41OTQtMS41OTR6IiAvPgogIDxwYXRoIGQ9Ik0yMCAydjQiIC8+CiAgPHBhdGggZD0iTTIyIDRoLTQiIC8+CiAgPGNpcmNsZSBjeD0iNCIgY3k9IjIwIiByPSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/sparkles\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Sparkles = createLucideIcon('sparkles', __iconNode);\n\nexport default Sparkles;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n];\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPgogIDxwYXRoIGQ9Im02IDYgMTIgMTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('x', __iconNode);\n\nexport default X;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915',\n key: '1i5ecw',\n },\n ],\n ['circle', { cx: '12', cy: '12', r: '3', key: '1v7zrd' }],\n];\n\n/**\n * @component @name Settings\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNOS42NzEgNC4xMzZhMi4zNCAyLjM0IDAgMCAxIDQuNjU5IDAgMi4zNCAyLjM0IDAgMCAwIDMuMzE5IDEuOTE1IDIuMzQgMi4zNCAwIDAgMSAyLjMzIDQuMDMzIDIuMzQgMi4zNCAwIDAgMCAwIDMuODMxIDIuMzQgMi4zNCAwIDAgMS0yLjMzIDQuMDMzIDIuMzQgMi4zNCAwIDAgMC0zLjMxOSAxLjkxNSAyLjM0IDIuMzQgMCAwIDEtNC42NTkgMCAyLjM0IDIuMzQgMCAwIDAtMy4zMi0xLjkxNSAyLjM0IDIuMzQgMCAwIDEtMi4zMy00LjAzMyAyLjM0IDIuMzQgMCAwIDAgMC0zLjgzMUEyLjM0IDIuMzQgMCAwIDEgNi4zNSA2LjA1MWEyLjM0IDIuMzQgMCAwIDAgMy4zMTktMS45MTUiIC8+CiAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMyIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/settings\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Settings = createLucideIcon('settings', __iconNode);\n\nexport default Settings;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n];\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMjF2LTJhNCA0IDAgMCAwLTQtNEg5YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/user\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst User = createLucideIcon('user', __iconNode);\n\nexport default User;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', key: 'afitv7' }],\n ['path', { d: 'M3 9h18', key: '1pudct' }],\n ['path', { d: 'M9 21V9', key: '1oto5p' }],\n];\n\n/**\n * @component @name PanelsTopLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjMiIHJ4PSIyIiAvPgogIDxwYXRoIGQ9Ik0zIDloMTgiIC8+CiAgPHBhdGggZD0iTTkgMjFWOSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/panels-top-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst PanelsTopLeft = createLucideIcon('panels-top-left', __iconNode);\n\nexport default PanelsTopLeft;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M14 4.1 12 6', key: 'ita8i4' }],\n ['path', { d: 'm5.1 8-2.9-.8', key: '1go3kf' }],\n ['path', { d: 'm6 12-1.9 2', key: 'mnht97' }],\n ['path', { d: 'M7.2 2.2 8 5.1', key: '1cfko1' }],\n [\n 'path',\n {\n d: 'M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z',\n key: 's0h3yz',\n },\n ],\n];\n\n/**\n * @component @name MousePointerClick\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTQgNC4xIDEyIDYiIC8+CiAgPHBhdGggZD0ibTUuMSA4LTIuOS0uOCIgLz4KICA8cGF0aCBkPSJtNiAxMi0xLjkgMiIgLz4KICA8cGF0aCBkPSJNNy4yIDIuMiA4IDUuMSIgLz4KICA8cGF0aCBkPSJNOS4wMzcgOS42OWEuNDk4LjQ5OCAwIDAgMSAuNjUzLS42NTNsMTEgNC41YS41LjUgMCAwIDEtLjA3NC45NDlsLTQuMzQ5IDEuMDQxYTEgMSAwIDAgMC0uNzQuNzM5bC0xLjA0IDQuMzVhLjUuNSAwIDAgMS0uOTUuMDc0eiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/mouse-pointer-click\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst MousePointerClick = createLucideIcon('mouse-pointer-click', __iconNode);\n\nexport default MousePointerClick;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8', key: 'v9h5vc' }],\n ['path', { d: 'M21 3v5h-5', key: '1q7to0' }],\n ['path', { d: 'M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16', key: '3uifl3' }],\n ['path', { d: 'M8 16H3v5', key: '1cv678' }],\n];\n\n/**\n * @component @name RefreshCw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMyAxMmE5IDkgMCAwIDEgOS05IDkuNzUgOS43NSAwIDAgMSA2Ljc0IDIuNzRMMjEgOCIgLz4KICA8cGF0aCBkPSJNMjEgM3Y1aC01IiAvPgogIDxwYXRoIGQ9Ik0yMSAxMmE5IDkgMCAwIDEtOSA5IDkuNzUgOS43NSAwIDAgMS02Ljc0LTIuNzRMMyAxNiIgLz4KICA8cGF0aCBkPSJNOCAxNkgzdjUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/refresh-cw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RefreshCw = createLucideIcon('refresh-cw', __iconNode);\n\nexport default RefreshCw;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5',\n key: '1gvzjb',\n },\n ],\n ['path', { d: 'M9 18h6', key: 'x1upvd' }],\n ['path', { d: 'M10 22h4', key: 'ceow96' }],\n];\n\n/**\n * @component @name Lightbulb\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgMTRjLjItMSAuNy0xLjcgMS41LTIuNSAxLS45IDEuNS0yLjIgMS41LTMuNUE2IDYgMCAwIDAgNiA4YzAgMSAuMiAyLjIgMS41IDMuNS43LjcgMS4zIDEuNSAxLjUgMi41IiAvPgogIDxwYXRoIGQ9Ik05IDE4aDYiIC8+CiAgPHBhdGggZD0iTTEwIDIyaDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/lightbulb\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Lightbulb = createLucideIcon('lightbulb', __iconNode);\n\nexport default Lightbulb;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '5', cy: '6', r: '3', key: '1qnov2' }],\n ['path', { d: 'M5 9v6', key: '158jrl' }],\n ['circle', { cx: '5', cy: '18', r: '3', key: '104gr9' }],\n ['path', { d: 'M12 3v18', key: '108xh3' }],\n ['circle', { cx: '19', cy: '6', r: '3', key: '108a5v' }],\n ['path', { d: 'M16 15.7A9 9 0 0 0 19 9', key: '1e3vqb' }],\n];\n\n/**\n * @component @name GitGraph\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSI1IiBjeT0iNiIgcj0iMyIgLz4KICA8cGF0aCBkPSJNNSA5djYiIC8+CiAgPGNpcmNsZSBjeD0iNSIgY3k9IjE4IiByPSIzIiAvPgogIDxwYXRoIGQ9Ik0xMiAzdjE4IiAvPgogIDxjaXJjbGUgY3g9IjE5IiBjeT0iNiIgcj0iMyIgLz4KICA8cGF0aCBkPSJNMTYgMTUuN0E5IDkgMCAwIDAgMTkgOSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/git-graph\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GitGraph = createLucideIcon('git-graph', __iconNode);\n\nexport default GitGraph;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20', key: '13o1zl' }],\n ['path', { d: 'M2 12h20', key: '9i4pu4' }],\n];\n\n/**\n * @component @name Globe\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJNMTIgMmExNC41IDE0LjUgMCAwIDAgMCAyMCAxNC41IDE0LjUgMCAwIDAgMC0yMCIgLz4KICA8cGF0aCBkPSJNMiAxMmgyMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/globe\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Globe = createLucideIcon('globe', __iconNode);\n\nexport default Globe;\n","\nexport enum EntityType {\n CHARACTER = 'Personnage',\n LOCATION = 'Lieu',\n OBJECT = 'Objet',\n NOTE = 'Note'\n}\n\nexport interface CharacterAttributes {\n age: number;\n height: number;\n hair: string;\n eyes: string;\n archetype: string;\n role: 'protagonist' | 'antagonist' | 'support' | 'extra';\n personality: {\n spectrumIntrovertExtravert: number;\n spectrumEmotionalRational: number;\n spectrumChaoticLawful: number;\n };\n physicalQuirk: string;\n behavioralQuirk: string;\n}\n\nexport type CustomFieldType = 'text' | 'textarea' | 'number' | 'boolean' | 'select';\n\nexport interface CustomFieldDefinition {\n id: string;\n label: string;\n type: CustomFieldType;\n options?: string[];\n placeholder?: string;\n}\n\nexport interface EntityTemplate {\n entityType: EntityType;\n fields: CustomFieldDefinition[];\n}\n\nexport interface Entity {\n id: string;\n type: EntityType;\n name: string;\n description: string;\n details: string;\n storyContext?: string;\n attributes?: CharacterAttributes;\n customValues?: Record;\n}\n\nexport interface Chapter {\n id: string;\n title: string;\n content: string;\n summary?: string;\n}\n\nexport type PlotNodeType = 'story' | 'dialogue' | 'action';\n\nexport interface PlotNode {\n id: string;\n x: number;\n y: number;\n title: string;\n description: string;\n color: string;\n type?: PlotNodeType;\n}\n\nexport interface PlotConnection {\n id: string;\n source: string;\n target: string;\n}\n\nexport interface WorkflowData {\n nodes: PlotNode[];\n connections: PlotConnection[];\n}\n\nexport type IdeaStatus = 'todo' | 'progress' | 'done';\nexport type IdeaCategory = 'plot' | 'character' | 'research' | 'todo';\n\nexport interface Idea {\n id: string;\n title: string;\n description: string;\n status: IdeaStatus;\n category: IdeaCategory;\n createdAt: number;\n}\n\nexport interface BookSettings {\n genre: string;\n subGenre?: string;\n targetAudience: string;\n tone: string;\n pov: string;\n tense: string;\n synopsis: string;\n themes: string;\n}\n\nexport interface BookProject {\n id: string;\n title: string;\n author: string;\n lastModified: number;\n settings?: BookSettings;\n // Direct fields sometimes used in creation/updates before settings normalization\n genre?: string;\n pov?: string;\n tense?: string;\n chapters: Chapter[];\n entities: Entity[];\n workflow?: WorkflowData;\n templates?: EntityTemplate[];\n styleGuide?: string;\n ideas?: Idea[];\n}\n\nexport interface ChatMessage {\n id: string;\n role: 'user' | 'model';\n text: string;\n responseType?: 'draft' | 'reflection';\n isLoading?: boolean;\n}\n\n// --- SAAS TYPES ---\n\nexport type PlanType = 'free' | 'pro' | 'master';\n\nexport interface Subscription {\n plan: PlanType;\n startDate: number;\n status: 'active' | 'canceled' | 'past_due';\n}\n\nexport interface UserUsage {\n aiActionsCurrent: number;\n aiActionsLimit: number;\n projectsLimit: number;\n}\n\nexport interface UserPreferences {\n theme: 'light' | 'dark' | 'sepia';\n dailyWordGoal: number;\n language: 'fr' | 'en';\n}\n\nexport interface UserStats {\n totalWordsWritten: number;\n writingStreak: number;\n lastWriteDate: number;\n}\n\nexport interface UserProfile {\n id: string;\n email: string;\n name: string;\n avatar?: string;\n bio?: string;\n subscription: Subscription;\n usage: UserUsage;\n preferences: UserPreferences;\n stats: UserStats;\n}\n\nexport type ViewMode = 'write' | 'world_building' | 'workflow' | 'settings' | 'preview' | 'ideas' | 'landing' | 'features' | 'pricing' | 'checkout' | 'dashboard' | 'auth' | 'signup' | 'profile';\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n];\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('plus', __iconNode);\n\nexport default Plus;\n","'use client';\r\n\r\nimport React, { createContext, useContext } from 'react';\r\nimport { BookProject, UserProfile } from '@/lib/types';\r\n\r\ninterface ProjectContextType {\r\n project: BookProject;\r\n user: UserProfile;\r\n projectId: string;\r\n currentChapterId: string;\r\n setCurrentChapterId: (id: string) => void;\r\n updateProject: (updates: Partial) => void;\r\n updateChapter: (chapterId: string, data: any) => void;\r\n incrementUsage: () => void;\r\n}\r\n\r\nconst ProjectContext = createContext(null);\r\n\r\nexport function ProjectProvider({\r\n value,\r\n children,\r\n}: {\r\n value: ProjectContextType;\r\n children: React.ReactNode;\r\n}) {\r\n return {children};\r\n}\r\n\r\nexport function useProjectContext(): ProjectContextType {\r\n const ctx = useContext(ProjectContext);\r\n if (!ctx) throw new Error('useProjectContext must be used within ProjectProvider');\r\n return ctx;\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M10 11v6', key: 'nco0om' }],\n ['path', { d: 'M14 11v6', key: 'outv1u' }],\n ['path', { d: 'M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6', key: 'miytrc' }],\n ['path', { d: 'M3 6h18', key: 'd0wm0j' }],\n ['path', { d: 'M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2', key: 'e791ji' }],\n];\n\n/**\n * @component @name Trash2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTAgMTF2NiIgLz4KICA8cGF0aCBkPSJNMTQgMTF2NiIgLz4KICA8cGF0aCBkPSJNMTkgNnYxNGEyIDIgMCAwIDEtMiAySDdhMiAyIDAgMCAxLTItMlY2IiAvPgogIDxwYXRoIGQ9Ik0zIDZoMTgiIC8+CiAgPHBhdGggZD0iTTggNlY0YTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/trash-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Trash2 = createLucideIcon('trash-2', __iconNode);\n\nexport default Trash2;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z',\n key: '1xq2db',\n },\n ],\n];\n\n/**\n * @component @name Zap\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxNGExIDEgMCAwIDEtLjc4LTEuNjNsOS45LTEwLjJhLjUuNSAwIDAgMSAuODYuNDZsLTEuOTIgNi4wMkExIDEgMCAwIDAgMTMgMTBoN2ExIDEgMCAwIDEgLjc4IDEuNjNsLTkuOSAxMC4yYS41LjUgMCAwIDEtLjg2LS40NmwxLjkyLTYuMDJBMSAxIDAgMCAwIDExIDE0eiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/zap\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Zap = createLucideIcon('zap', __iconNode);\n\nexport default Zap;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719',\n key: '1sd12s',\n },\n ],\n];\n\n/**\n * @component @name MessageCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMi45OTIgMTYuMzQyYTIgMiAwIDAgMSAuMDk0IDEuMTY3bC0xLjA2NSAzLjI5YTEgMSAwIDAgMCAxLjIzNiAxLjE2OGwzLjQxMy0uOTk4YTIgMiAwIDAgMSAxLjA5OS4wOTIgMTAgMTAgMCAxIDAtNC43NzctNC43MTkiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/message-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst MessageCircle = createLucideIcon('message-circle', __iconNode);\n\nexport default MessageCircle;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20',\n key: 'k3hazp',\n },\n ],\n];\n\n/**\n * @component @name Book\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxOS41di0xNUEyLjUgMi41IDAgMCAxIDYuNSAySDE5YTEgMSAwIDAgMSAxIDF2MThhMSAxIDAgMCAxLTEgMUg2LjVhMSAxIDAgMCAxIDAtNUgyMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/book\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Book = createLucideIcon('book', __iconNode);\n\nexport default Book;\n","'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n await api.projects.update(id, payload);\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n","\nimport { EntityType } from \"./types\";\n\nexport const DEFAULT_BOOK_TITLE = \"Nouveau Roman\";\nexport const DEFAULT_AUTHOR = \"Auteur Inconnu\";\n\nexport const INITIAL_CHAPTER = {\n id: 'chap-1',\n title: 'Chapitre 1',\n content: '

Il était une fois...

',\n summary: 'Début de l\\'histoire.'\n};\n\nexport const ENTITY_ICONS: Record = {\n [EntityType.CHARACTER]: '👤',\n [EntityType.LOCATION]: '🏰',\n [EntityType.OBJECT]: '🗝️',\n [EntityType.NOTE]: '📝',\n};\n\n// Colors for tags\nexport const ENTITY_COLORS: Record = {\n [EntityType.CHARACTER]: 'bg-blue-100 text-blue-800 border-blue-200',\n [EntityType.LOCATION]: 'bg-green-100 text-green-800 border-green-200',\n [EntityType.OBJECT]: 'bg-amber-100 text-amber-800 border-amber-200',\n [EntityType.NOTE]: 'bg-gray-100 text-gray-800 border-gray-200',\n};\n\n// --- Character Creation Lists ---\n\nexport const HAIR_COLORS = [\n \"Brun\", \"Noir\", \"Blond\", \"Roux\", \"Auburn\", \"Gris\", \"Blanc\", \"Châtain\", \"Chauve\", \"Teinture (Bleu/Rose/Etc)\"\n];\n\nexport const EYE_COLORS = [\n \"Marron\", \"Bleu\", \"Vert\", \"Noisette\", \"Gris\", \"Noir\", \"Vairons\", \"Ambre\"\n];\n\nexport const ARCHETYPES = [\n \"Le Héros\", \"L'Ombre / Le Méchant\", \"Le Mentor\", \"Le Gardien du Seuil\",\n \"Le Shapeshifter (Changeforme)\", \"Le Trickster (Farceur)\", \"L'Allié\", \"L'Élu\",\n \"Le Rebelle\", \"Le Séducteur\", \"Le Sage\", \"Le Guerrier\", \"L'Innocent\"\n];\n\n// --- Book Settings Lists ---\n\nexport const GENRES = [\n \"Fantasy\", \"Science-Fiction\", \"Thriller / Polar\", \"Romance\", \"Historique\",\n \"Horreur\", \"Aventure\", \"Contemporain\", \"Jeunesse / Young Adult\", \"Dystopie\"\n];\n\nexport const TONES = [\n \"Sombre & Sérieux\", \"Léger & Humoristique\", \"Épique & Grandiose\",\n \"Mélancolique\", \"Mystérieux\", \"Optimiste\", \"Cynique\", \"Romantique\"\n];\n\nexport const POV_OPTIONS = [\n \"1ère personne (Je)\",\n \"3ème personne (Limitée au protagoniste)\",\n \"3ème personne (Omnisciente)\",\n \"Multi-points de vue (Alterné)\"\n];\n\nexport const TENSE_OPTIONS = [\n \"Passé (Passé simple / Imparfait)\",\n \"Présent de narration\"\n];","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm16 17 5-5-5-5', key: '1bji2h' }],\n ['path', { d: 'M21 12H9', key: 'dn1m92' }],\n ['path', { d: 'M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4', key: '1uf3rs' }],\n];\n\n/**\n * @component @name LogOut\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTYgMTcgNS01LTUtNSIgLz4KICA8cGF0aCBkPSJNMjEgMTJIOSIgLz4KICA8cGF0aCBkPSJNOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/log-out\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LogOut = createLucideIcon('log-out', __iconNode);\n\nexport default LogOut;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]];\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtOSAxOCA2LTYtNi02IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('chevron-right', __iconNode);\n\nexport default ChevronRight;\n"],"names":["module","exports","require","vendored","AppRouterContext","HooksClientContext","ServerInsertedHtml"],"mappings":"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AA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACH,GAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAET,CACA,CAAC,CA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CAAA,wEDsBtF,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAoB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAiB,CAAjB,AAAiB,AAArC,CAAA,AAAoB,AAAiB,CAArC,AAAoB,AAAiB,CAAjB,AAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAzBP,CAClC,AAwBgE,CAAA,AAxB/D,CCAA,ADAA,AAwB+D,CAxB/D,ACAA,ADwB+D,CCxB/D,ADAA,AAwB+D,CAxB/D,ACAA,ADwB+D,CAxB/D,ACAA,ADwB+D,CAxB/D,ACAA,ADwB+D,CCxB/D,ADAA,AAAQ,AAwBuD,CCxBvD,ADAA,AAwBuD,CAAU,CAxB5D,AAwB4D,CCxB5D,ADAA,CAAA,ACAA,CDAA,ACAA,CAAA,ADAA,CCAA,ADAA,CAAA,ACAA,CDAA,ACAA,CDAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CDAA,ACAA,CDAA,ACAA,CDAA,AAAgB,ACAhB,CAAA,ADAgB,CCAhB,ADAgB,CCAhB,ADAgB,CAAA,ACAhB,UDA+B,CCA/B,ADCd,CCDc,ADCb,CCDa,AACb,ADAA,CCDa,AACb,ADAA,CCDa,AACb,ADAA,CCDa,ADCb,ACAA,CADa,AACb,ADAA,CCAA,AADa,ADCb,CCDa,AACb,ADAA,CCDa,ADCH,CCDG,CAAA,ADCA,CCDA,AACA,ADAA,CCDA,AACA,ADAA,CCDA,AACA,ADAA,CCDA,AACA,ADAA,CCDA,ADCA,ACAA,CAAA,AADA,ADCA,CCDA,AACA,ADAA,CCDA,AACA,ADAA,CCDA,ADCA,ACAA,CDAA,ACAA,CAAA,ADAA,CCAA,ADAA,CAAA,ACAA,ODAsB,CCAH,ADAG,CCAH,ADAG,CCAH,ADAG,CCAH,ADAG,CAAA,KAAU,CAC9C,CAAC,CAAA,ACAA,CAAA,ADAA,CAAA,ACAA,CAAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CAAU,EAAG,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,C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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,26,27,28,29,32,33]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__3bac9c52._.js b/.next/server/chunks/ssr/[root-of-the-server]__93fbf849._.js similarity index 56% rename from .next/server/chunks/ssr/[root-of-the-server]__3bac9c52._.js rename to .next/server/chunks/ssr/[root-of-the-server]__93fbf849._.js index 7b79248..a5a3b25 100644 --- a/.next/server/chunks/ssr/[root-of-the-server]__3bac9c52._.js +++ b/.next/server/chunks/ssr/[root-of-the-server]__93fbf849._.js @@ -1,3 +1,3 @@ -module.exports=[79080,a=>{"use strict";let b=(0,a.i(29892).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>b],79080)},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},97442,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.AppRouterContext},42481,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.HooksClientContext},70676,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.ServerInsertedHtml},29892,a=>{"use strict";var b=a.i(28091);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],29892)},79320,a=>{"use strict";let b=(0,a.i(29892).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);a.s(["ArrowRight",()=>b],79320)},89657,a=>{"use strict";let b=(0,a.i(29892).default)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);a.s(["Shield",()=>b],89657)},66181,a=>{"use strict";let b=(0,a.i(29892).default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);a.s(["Lock",()=>b],66181)},33045,a=>{"use strict";var b=a.i(78352),c=a.i(28091);let d=(0,a.i(29892).default)("credit-card",[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]]);var e=a.i(89657),f=a.i(66181),g=a.i(79320),h=a.i(79080);let i=({onComplete:a,onCancel:i})=>{let[j,k]=(0,c.useState)(!1);return(0,b.jsx)("div",{className:"min-h-screen bg-[#eef2ff] flex items-center justify-center p-8",children:(0,b.jsxs)("div",{className:"bg-white rounded-3xl shadow-2xl flex flex-col md:flex-row max-w-4xl w-full overflow-hidden animate-in fade-in slide-in-from-bottom-10 duration-500",children:[(0,b.jsxs)("div",{className:"w-full md:w-1/3 bg-slate-900 text-white p-8",children:[(0,b.jsxs)("h3",{className:"text-xl font-bold mb-8 flex items-center gap-2",children:[(0,b.jsx)(f.Lock,{size:18,className:"text-blue-400"})," Commande"]}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,b.jsx)("span",{children:"Auteur Pro"}),(0,b.jsx)("span",{children:"12.00€"})]}),(0,b.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,b.jsx)("span",{children:"TVA (20%)"}),(0,b.jsx)("span",{children:"2.40€"})]}),(0,b.jsx)("div",{className:"h-px bg-slate-800 my-4"}),(0,b.jsxs)("div",{className:"flex justify-between text-xl font-black",children:[(0,b.jsx)("span",{children:"Total"}),(0,b.jsx)("span",{className:"text-blue-400",children:"14.40€"})]})]})]}),(0,b.jsxs)("div",{className:"flex-1 p-8 md:p-12",children:[(0,b.jsx)("h2",{className:"text-2xl font-black text-slate-900 mb-8 text-center",children:"Paiement Sécurisé"}),(0,b.jsxs)("form",{onSubmit:b=>{b.preventDefault(),k(!0),setTimeout(()=>{a()},2e3)},className:"space-y-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-black text-slate-500 uppercase tracking-widest mb-2",children:"Numéro de carte"}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("input",{type:"text",placeholder:"4242 4242 4242 4242",className:"w-full bg-[#eef2ff] border border-indigo-100 p-4 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-bold"}),(0,b.jsx)(d,{className:"absolute right-4 top-4 text-slate-400"})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-6",children:[(0,b.jsx)("input",{type:"text",placeholder:"MM / YY",className:"w-full bg-[#eef2ff] border border-indigo-100 p-4 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-bold"}),(0,b.jsx)("input",{type:"text",placeholder:"CVC",className:"w-full bg-[#eef2ff] border border-indigo-100 p-4 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-bold"})]}),(0,b.jsx)("button",{disabled:j,className:"w-full bg-blue-600 text-white py-5 rounded-2xl font-black text-lg hover:bg-blue-700 transition-all shadow-xl shadow-blue-200 flex items-center justify-center gap-3",children:j?(0,b.jsx)(h.Loader2,{className:"animate-spin"}):(0,b.jsxs)(b.Fragment,{children:["Confirmer le paiement ",(0,b.jsx)(g.ArrowRight,{size:20})]})}),(0,b.jsxs)("div",{className:"flex items-center justify-center gap-2 text-[10px] text-slate-400 font-bold uppercase",children:[(0,b.jsx)(e.Shield,{size:12})," Traitement chiffré SSL 256-bits"]})]})]})]})})};var j=a.i(34896);function k(){let a=(0,j.useRouter)();return(0,b.jsx)(i,{onComplete:()=>a.push("/dashboard"),onCancel:()=>a.push("/pricing")})}a.s(["default",()=>k],33045)}]; +module.exports=[56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},97442,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.AppRouterContext},42481,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.HooksClientContext},70676,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.ServerInsertedHtml},29892,a=>{"use strict";var b=a.i(28091);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],29892)},79080,a=>{"use strict";let b=(0,a.i(29892).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>b],79080)},79320,a=>{"use strict";let b=(0,a.i(29892).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);a.s(["ArrowRight",()=>b],79320)},66181,a=>{"use strict";let b=(0,a.i(29892).default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);a.s(["Lock",()=>b],66181)},89657,a=>{"use strict";let b=(0,a.i(29892).default)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);a.s(["Shield",()=>b],89657)},33045,a=>{"use strict";var b=a.i(78352),c=a.i(28091);let d=(0,a.i(29892).default)("credit-card",[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]]);var e=a.i(89657),f=a.i(66181),g=a.i(79320),h=a.i(79080);let i=({onComplete:a,onCancel:i})=>{let[j,k]=(0,c.useState)(!1);return(0,b.jsx)("div",{className:"min-h-screen bg-[#eef2ff] flex items-center justify-center p-8",children:(0,b.jsxs)("div",{className:"bg-white rounded-3xl shadow-2xl flex flex-col md:flex-row max-w-4xl w-full overflow-hidden animate-in fade-in slide-in-from-bottom-10 duration-500",children:[(0,b.jsxs)("div",{className:"w-full md:w-1/3 bg-slate-900 text-white p-8",children:[(0,b.jsxs)("h3",{className:"text-xl font-bold mb-8 flex items-center gap-2",children:[(0,b.jsx)(f.Lock,{size:18,className:"text-blue-400"})," Commande"]}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,b.jsx)("span",{children:"Auteur Pro"}),(0,b.jsx)("span",{children:"12.00€"})]}),(0,b.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,b.jsx)("span",{children:"TVA (20%)"}),(0,b.jsx)("span",{children:"2.40€"})]}),(0,b.jsx)("div",{className:"h-px bg-slate-800 my-4"}),(0,b.jsxs)("div",{className:"flex justify-between text-xl font-black",children:[(0,b.jsx)("span",{children:"Total"}),(0,b.jsx)("span",{className:"text-blue-400",children:"14.40€"})]})]})]}),(0,b.jsxs)("div",{className:"flex-1 p-8 md:p-12",children:[(0,b.jsx)("h2",{className:"text-2xl font-black text-slate-900 mb-8 text-center",children:"Paiement Sécurisé"}),(0,b.jsxs)("form",{onSubmit:b=>{b.preventDefault(),k(!0),setTimeout(()=>{a()},2e3)},className:"space-y-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-black text-slate-500 uppercase tracking-widest mb-2",children:"Numéro de carte"}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("input",{type:"text",placeholder:"4242 4242 4242 4242",className:"w-full bg-[#eef2ff] border border-indigo-100 p-4 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-bold"}),(0,b.jsx)(d,{className:"absolute right-4 top-4 text-slate-400"})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-6",children:[(0,b.jsx)("input",{type:"text",placeholder:"MM / YY",className:"w-full bg-[#eef2ff] border border-indigo-100 p-4 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-bold"}),(0,b.jsx)("input",{type:"text",placeholder:"CVC",className:"w-full bg-[#eef2ff] border border-indigo-100 p-4 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-bold"})]}),(0,b.jsx)("button",{disabled:j,className:"w-full bg-blue-600 text-white py-5 rounded-2xl font-black text-lg hover:bg-blue-700 transition-all shadow-xl shadow-blue-200 flex items-center justify-center gap-3",children:j?(0,b.jsx)(h.Loader2,{className:"animate-spin"}):(0,b.jsxs)(b.Fragment,{children:["Confirmer le paiement ",(0,b.jsx)(g.ArrowRight,{size:20})]})}),(0,b.jsxs)("div",{className:"flex items-center justify-center gap-2 text-[10px] text-slate-400 font-bold uppercase",children:[(0,b.jsx)(e.Shield,{size:12})," Traitement chiffré SSL 256-bits"]})]})]})]})})};var j=a.i(34896);function k(){let a=(0,j.useRouter)();return(0,b.jsx)(i,{onComplete:()=>a.push("/dashboard"),onCancel:()=>a.push("/pricing")})}a.s(["default",()=>k],33045)}]; -//# sourceMappingURL=%5Broot-of-the-server%5D__3bac9c52._.js.map \ No newline at end of file +//# sourceMappingURL=%5Broot-of-the-server%5D__93fbf849._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__93fbf849._.js.map b/.next/server/chunks/ssr/[root-of-the-server]__93fbf849._.js.map new file mode 100644 index 0000000..3db7431 --- /dev/null +++ b/.next/server/chunks/ssr/[root-of-the-server]__93fbf849._.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/loader-circle.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-right.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/lock.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/shield.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/Checkout.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/checkout/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/credit-card.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n];\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJtMTIgNSA3IDctNyA3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('arrow-right', __iconNode);\n\nexport default ArrowRight;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '11', x: '3', y: '11', rx: '2', ry: '2', key: '1w4ew1' }],\n ['path', { d: 'M7 11V7a5 5 0 0 1 10 0v4', key: 'fwvmzm' }],\n];\n\n/**\n * @component @name Lock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTEiIHg9IjMiIHk9IjExIiByeD0iMiIgcnk9IjIiIC8+CiAgPHBhdGggZD0iTTcgMTFWN2E1IDUgMCAwIDEgMTAgMHY0IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/lock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Lock = createLucideIcon('lock', __iconNode);\n\nexport default Lock;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z',\n key: 'oel41y',\n },\n ],\n];\n\n/**\n * @component @name Shield\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXoiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/shield\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Shield = createLucideIcon('shield', __iconNode);\n\nexport default Shield;\n","'use client';\n\n\nimport React, { useState } from 'react';\nimport { CreditCard, Shield, Lock, ArrowRight, Loader2 } from 'lucide-react';\n\ninterface CheckoutProps {\n onComplete: () => void;\n onCancel: () => void;\n}\n\nconst Checkout: React.FC = ({ onComplete, onCancel }) => {\n const [loading, setLoading] = useState(false);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n setLoading(true);\n setTimeout(() => {\n onComplete();\n }, 2000);\n };\n\n return (\n
\n
\n
\n

Commande

\n
\n
Auteur Pro12.00€
\n
TVA (20%)2.40€
\n
\n
Total14.40€
\n
\n
\n
\n

Paiement Sécurisé

\n
\n
\n \n
\n \n \n
\n
\n
\n \n \n
\n \n
\n Traitement chiffré SSL 256-bits\n
\n
\n
\n
\n
\n );\n};\n\nexport default Checkout;\n","'use client';\r\n\r\nimport Checkout from '@/components/Checkout';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function CheckoutPage() {\r\n const router = useRouter();\r\n\r\n return (\r\n router.push('/dashboard')}\r\n onCancel={() => router.push('/pricing')}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '20', height: '14', x: '2', y: '5', rx: '2', key: 'ynyp8z' }],\n ['line', { x1: '2', x2: '22', y1: '10', y2: '10', key: '1b3vmo' }],\n];\n\n/**\n * @component @name CreditCard\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMjAiIGhlaWdodD0iMTQiIHg9IjIiIHk9IjUiIHJ4PSIyIiAvPgogIDxsaW5lIHgxPSIyIiB4Mj0iMjIiIHkxPSIxMCIgeTI9IjEwIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/credit-card\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CreditCard = createLucideIcon('credit-card', __iconNode);\n\nexport default CreditCard;\n"],"names":["module","exports","require","vendored","AppRouterContext","HooksClientContext","ServerInsertedHtml"],"mappings":"gjBAAAA,EAAOC,OAAO,CACZC,EAAQ,CAAA,CAAA,IAAA,GACRC,QAAQ,CAAC,QAAW,CAACC,gBAAgB,+BCFvCJ,EAAOC,OAAO,CACZC,EAAQ,CAAA,CAAA,IAAA,GACRC,QAAQ,CAAC,QAAW,CAACE,kBAAkB,+BCFzCL,EAAOC,OAAO,CACZC,EAAQ,CAAA,CAAA,IAAA,GACRC,QAAQ,CAAC,QAAW,CAACG,kBAAkB,wDKKvC,CDAA,AFAA,AGAA,CACG,MAAA,CAAO,CAAC,CHDI,AGCJ,CHDI,AGCJ,AHDI,CAAA,AGCJ,CHDI,AGCJ,AAAkB,CHDd,AGCJ,AHD0B,CAAtB,AGCJ,AHD0B,CGC1B,AHDI,AAAsB,CAAA,AAAtB,AGCJ,CHDiC,AGCf,AAAlB,AHDI,CAAA,AGCc,AAAlB,GAG4B,CAAA,CAAA,CAAA,CAAA,CAAA,EAAX,CAAA,CAAA,CAAA,CAAA,CAAA,GACtB,EAAM,CAAA,CAAA,CAAN,AAAM,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAe,AAAf,CAAe,AAAf,CAAe,AAAf,CAAe,AAAf,CAAe,AAAN,CAAA,AAAM,yBCF7B,CAAA,CAAwB,MAAM,CAAA,GAAlB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,sDFFW,CAAA,UEIrB,CAAA,CAAU,CAAA,AHRT,CAAA,AGQS,CHRT,AGQS,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAY,CAAI,CAAA,CAAU,AAAV,CAAU,AAAV,CAAU,AAAV,CAAU,AAAV,CAAU,AAAV,CAAA,AAAU,CAAV,AAAgB,CAAhB,AAAiB,CAAA,kDHVtD,UACC,CGOF,AHPE,CGOF,AHPE,0GAMQ,SIelB,CJpBW,AGSX,ALHI,AMcJ,GAAM,CAAA,CAAA,CAAA,EAAA,EAAA,UAAA,AAAO,EAAA,CAAA,CAAA,MAAA,EAAA,cAAA,CAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAKO,CJpBF,oBAAA,CAAA,AIqBZ,CJrBY,AIqBZ,CJrBY,SIqBZ,EACY,EAAA,CCfD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,SAAA,CDiBX,CAAA,GAAA,EAAA,CAAA,IAKF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,MAAA,KAGI,CAAA,CAAA,AACA,CADA,EACG,CAAA,CCjBT,ADiBS,AACH,CAAA,CAAA,IAAO,CChBN,ADgBM,CChBN,ADiBD,AADO,CAAA,AChBN,ADiBD,CADO,AChBN,ADiBD,CCjBC,ADiBD,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AACR,CADQ,AACR,CAAA,AADQ,CACR,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AACR,CADQ,CAAA,CAAA,QACR,CAAa,AAAb,CAAa,CAA6C,AAA7C,CAAA,AAA6C,CAA7C,AAA6C,CAA7C,AAAuB,CAAvB,AAAuB,CAAvB,AAAuB,CAAvB,AAAuB,CAAvB,AAAuB,CAAvB,AAAuB,CAAvB,AAAuB,CAAvB,AAA8B,CAA9B,AAA8B,CAAA,AAA9B,CAAA,AAA8B,AAAqB,CAAnD,AAA8B,AAAqB,CAAA,AAAnD,AAA8B,CAAA,AAA9B,AAAmD,CAArB,AAAqB,CAArB,AAAqB,CAArB,AAAqB,CAArB,AAA4B,CAAjB,AAAiB,CAAA,CAAA,AAAQ,CAAJ,AAAI,CAAJ,AAAI,AAC/E,CAD+E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAC/E,CAAA,AAAW,CAAA,CAAA,AAAa,CAAA,AAAb,CAAA,AAAa,CAAb,AAAa,CAAb,AAAa,CAAb,AAAa,CAAb,AAAa,CAAb,AAAa,CAAb,AAAa,CAAb,AAAa,AAAU,CAAvB,EACX,CAAA,CAAA,CAAI,CAAC,CAAA,CADsC,AACtC,CAAY,AAD0B,AACtC,CAAA,AAAa,CN1CC,AM0Cd,AAAa,CAAb,AAAa,CAAb,AAAa,CAAb,AAAa,CNzCxB,AMyCW,AAAa,CNzCxB,AGAe,ACEX,AEuCoB,AAAb,AJ/CX,CEQI,AFRJ,ACMe,AHAf,AMyCW,AAAa,CNzCxB,AGAe,ADNf,AEQI,AEuCoB,CFvCpB,AEuCoB,CAAA,GFvCpB,KJFe,CENZ,AESO,ADHC,CDNR,ACMQ,ACGD,AJFZ,CGDa,AEEV,ADMF,AFdI,AESO,AJFZ,AGDuC,ADLzC,CEQc,ADHC,ADNR,CFOD,AEPC,AFMY,AIGI,CFThB,AESgB,AJHJ,CACR,UAAA,CAAW,CKCuB,ALDvB,SAAqB,CGAjB,AHAiB,CGAjB,AHAiB,OAAT,CGAxB,AHAwB,CGAxB,AHAwB,CAAA,AAA4B,AGApD,OHAoD,CAAA,CAAS,CAAlB,CGAxB,AHAwB,CGAxB,AHAwB,CGAxB,AHAwB,KAC1C,CAAA,AKCL,CLDK,AKCL,CLDK,AKCL,CAAA,ALDK,CKCL,CAAA,ILGC,IMmC6B,CAAA,CAAA,CAAA,CAAS,AAAL,CAAK,AAAE,AAAP,CAAO,AAAP,CAAA,AAAO,CAAP,AAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,AAAf,MAAe,CAAO,CAC/D,CAAA,CAAA,CAAG,CAAA,CAAA,AACL,CADK,AAEL,IACK,CAAA,CAAA,AAAS,CAAT,CAAA,CAAS,AAAT,CAAa,AAAb,CAAc,AAAd,CAAe,AAAf,CAAe,CAAA,AAAK,CAAL,AAAK,CAAL,AAAK,AAAK,CAAL,CAAA,CAAK,CAAA,EAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAc,EAAK,CAAL,AAAK,CAAL,AAAK,CAAA,CAAA,CAAK,CAAC,CAAA,AACvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,AAAY,CAAA,AAAZ,CAAA,AAAY,AAAW,CAAX,AAAY,AAAxB,CAAY,AAAY,AAAxB,CAAY,AAAY,AAAQ,AAAxB,CAAA,AAAI,AAAY,AAAQ,CAAxB,AAAI,AAAY,CAAhB,AAAI,AAAY,CAAZ,AAAY,AC1C5C,CLLJ,AI+CoC,AAAY,CC1CzB,ALLvB,AI+CwD,CC1ChC,CAAA,CAAA,AAAkB,CAAlB,CAAA,CAAA,CAAA,CAAA,AACxB,CLLA,AKIwB,ADetB,ACdF,CADwB,CAAkB,CACpC,AADoC,CLJ1C,AIoBI,ACfE,AADoC,CAAA,AACpC,ALLN,AKKM,CADoC,ALJ1C,AKKM,CAD2D,CAC/C,CDeN,ACfM,CDeN,ACfM,CDeN,ACfM,CDeN,ACfM,CDeN,ACfM,OAAA,EAAuC,CAAA,WAAG,CLJ5D,AIoBI,AChBwD,CLJ5D,AKI4D,AAAW,CAAX,ALJ5D,AAAe,AKIwD,CAAA,ALJxD,CKIwD,EAAS,CAAA,AAAG,CAAA,CAAA,CAAA,CAAA,CAAA,EACjF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAc,EAAM,EAAN,CAAA,EACZ,CAAA,ADeA,CAAA,ACfA,CDeA,ACfA,CDeA,CAAA,CAAA,CAAA,CAAA,CAAA,CJpBJ,CAAA,AKMI,CDeA,ACfA,CDeA,ACfA,AACA,CDcA,ACfA,ADgBA,ACfA,CADA,ADeA,AACA,ACfA,CADA,ADeA,AACA,ACfA,CADA,ADeA,ACdA,ADeA,CADA,ACfA,ADgBA,ACfA,CAAA,AADA,ADgBA,AADA,CAAA,AACA,ACfA,CDcA,ACdA,CDcA,ACdA,CDcA,ACdW,CDcX,CAAA,ACbE,CDaF,ACbE,CDaF,AAEA,ACfE,CDeF,ACfE,KAAA,CAAA,CAAU,AAAY,CAAZ,AAAY,CAAZ,AAAY,AAAa,CAAzB,AAAY,AAAa,CAAzB,AAAY,AAAa,CAAzB,AAAY,AAAa,CAAzB,AAAY,AAAa,CAAb,AAAZ,AAAyB,CAAzB,AAAY,AAAa,CAAzB,AAAY,AAAa,CAAzB,AAAY,AAAqB,CAArB,AAAZ,AAAkC,CAAtB,AAAuB,sBNVd,CAAA,QAAA,WAAS,CAAA,CAAA,CMUK,CAAA,CAC7C,CAAA,OAAA,EAAU,CAAA,CAAQ,AAAR,CAAQ,AAAR,CACV,AADU,CDgBT,ACfD,AADU,CAAA,ADgBT,ACfD,CADU,AACV,AAEF,CAHoB,AAClB,ADoBF,AClBA,CAFE,AAEF,ADkBA,CCpBE,AAEC,CAFD,AAEC,CAAA,AAFD,AAGH,CADI,CAAA,CAMP,CDeS,CAAA,CAAA,ICjBT,CDgBM,CAAA,CAAA,UChBI,CDiBD,ACjBe,CDiBf,ACjBe,CAAA,AAAa,CAAb,CAAA,CAAA,AAEjB,CAAA,ADgBD,ACfR,AAH0B,CAAA,ADkBlB,AChBC,ADgBM,ACff,CAH0B,AAEjB,ADgBM,CClBW,ADkBX,CClBW,ADkBX,AClBgC,CDkBhC,AClBgC,AAArB,kDCT1B,CAAA,CAAA,CAAA,CAAM,AAAN,CAAA,CAAM,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAf,AAAe,CAAf,AAAe,CAAf,AAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAbF,CAAC,AAakB,CAbjB,AAaiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAbjB,AAaiB,CAbjB,AAAQ,AAaS,CAbT,AAAE,AAaO,CAAU,CAAA,AAbd,6BAAA,CAAA,AAA+B,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,CAAA,uDCgBlG,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,AAAb,CAAa,AAAb,CAAA,AAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAhBA,CAClC,AAeiD,CAfhD,AAegD,CAAA,AAfhD,CAAA,AAegD,CAfhD,AAegD,CAfhD,AAegD,CAAA,AAfhD,CAAA,AAegD,CAfxC,AAAR,AAegD,CAfxC,AAAE,AAesC,CAAU,CAAA,AAf7C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAiB,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAChD,0DCaA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,CAAA,CAAA,AAAO,CAAP,AAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAhBM,CAClC,AAeoC,CAfnC,AAemC,CAfnC,AAemC,CAfnC,AAemC,CAfnC,AAemC,CAfnC,AAemC,CAfnC,AAemC,CAfnC,AAemC,CAfnC,AAAQ,AAe2B,CAf3B,AAAE,AAeyB,CAAU,CAAA,GAfnC,CAAA,AAAO,CAAA,CAAA,CAAA,CAAA,CAAM,AAAN,CAAM,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAG,AAAH,CAAG,CAAA,CAAA,EAAM,CAAA,CAAA,CAAA,AAAI,GAAA,CAAA,AAAK,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACxF,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAA4B,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC3D,oDCkBA,CAAA,CAAA,CAAA,CAAM,AAAN,CAAA,CAAM,CAAA,EAAS,CAAT,AAAS,CAAT,AAAS,CAAT,AAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CArBI,CAClC,AAoBwC,CAnBtC,AAmBsC,CAnBtC,AAmBsC,CAnBtC,AAmBsC,CAnBtC,AAmBsC,CAnBtC,AAmBsC,CAnBtC,AAmBsC,CAnBtC,AAmBsC,CAlBtC,AAkBsC,CAjBpC,AAiBoC,CAjBpC,AAiB8C,CAAA,AAjB3C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACH,GAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACP,CAEJ,uECRA,EAAA,EAAA,CAAA,CAAA,OEgBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAb,AAAa,CAAb,AAAa,CAAb,AAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAhBA,CAClC,AAeiD,CAfhD,AAegD,CAfhD,AAegD,CAfhD,AAegD,CAfhD,AAegD,CAfhD,AAegD,CAfhD,AAegD,CAfhD,AAegD,CAfxC,AAewC,AAfhD,CAAU,AAesC,CAftC,AAegD,CAfhD,AAegD,CAfhD,CAAA,CAAA,CAAA,AAAO,CAAA,CAAA,CAAA,EAAM,CAAA,CAAA,CAAA,IAAQ,CAAA,CAAA,GAAM,EAAG,CAAA,CAAA,CAAA,CAAK,AAAL,EAAQ,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,AAAI,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC9E,CAAC,OAAQ,CAAE,EAAA,CAAA,AAAI,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAI,AAAJ,CAAI,IAAM,CAAA,CAAA,CAAI,CAAA,CAAA,MAAU,IAAA,CAAA,AAAM,CAAA,CAAA,EAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAU,CACnE,EFFA,IAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,aAO0C,CAAC,YAAE,CAAU,UAAE,CAAQ,CAAE,IACjE,CAoDa,EApDP,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAUvC,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,0EACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,+JACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,wDACX,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,2DAAiD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,KAAM,GAAI,UAAU,kBAAkB,eAC3G,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sBACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,yCAA+B,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,eAAiB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,cAC3E,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,yCAA+B,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,cAAgB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,aAC1E,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,2BACf,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oDAA0C,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,UAAY,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,yBAAgB,oBAGnH,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,+BACX,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,+DAAsD,sBACpE,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,SAtBK,AAAC,CAsBI,GArBxB,EAAE,cAAc,GAChB,GAAW,GACX,WAAW,KACP,GACJ,EAAG,IACL,EAgBwC,UAAU,sBACpC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACG,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,kFAAyE,oBAC1F,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,qBACX,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,OAAO,YAAY,sBAAsB,UAAU,wHAC/D,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAW,UAAU,gDAG9B,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,mCACX,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,OAAO,YAAY,UAAU,UAAU,wHACnD,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,KAAK,OAAO,YAAY,MAAM,UAAU,2HAEnD,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACG,SAAU,EACV,UAAU,+KAET,EAAU,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,iBAAoB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WAAE,yBAAsB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAC,KAAM,UAEhG,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,kGACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,KAAM,KAAM,gDAOxC,EC3DA,IAAA,EAAA,EAAA,CAAA,CAAA,OAEe,SAAS,IACpB,IAAM,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IAExB,MACI,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACG,WAAY,IAAM,EAAO,IAAI,CAAC,cAC9B,SAAU,IAAM,EAAO,IAAI,CAAC,aAGxC","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__47b901a8._.js b/.next/server/chunks/ssr/[root-of-the-server]__b187b587._.js similarity index 70% rename from .next/server/chunks/ssr/[root-of-the-server]__47b901a8._.js rename to .next/server/chunks/ssr/[root-of-the-server]__b187b587._.js index 5394343..b0866a5 100644 --- a/.next/server/chunks/ssr/[root-of-the-server]__47b901a8._.js +++ b/.next/server/chunks/ssr/[root-of-the-server]__b187b587._.js @@ -1,3 +1,3 @@ -module.exports=[79080,a=>{"use strict";let b=(0,a.i(29892).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>b],79080)},79320,a=>{"use strict";let b=(0,a.i(29892).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);a.s(["ArrowRight",()=>b],79320)},82772,a=>{"use strict";let b=(0,a.i(29892).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);a.s(["User",()=>b],82772)},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},97442,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.AppRouterContext},42481,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.HooksClientContext},70676,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.ServerInsertedHtml},29892,a=>{"use strict";var b=a.i(28091);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],29892)},73258,a=>{"use strict";let b=(0,a.i(29892).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);a.s(["BookOpen",()=>b],73258)},66181,a=>{"use strict";let b=(0,a.i(29892).default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);a.s(["Lock",()=>b],66181)},41440,a=>{"use strict";var b=a.i(78352),c=a.i(28091),d=a.i(29892);let e=(0,d.default)("mail",[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]]);var f=a.i(66181),g=a.i(82772),h=a.i(79320),i=a.i(79080),j=a.i(73258);let k=(0,d.default)("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);var l=a.i(95121);let m=({onBack:a,onSuccess:d,initialMode:m="signin"})=>{let[n,o]=(0,c.useState)(m),[p,q]=(0,c.useState)(!1),[r,s]=(0,c.useState)({name:"",email:"",password:""}),[t,u]=(0,c.useState)(""),{user:v,login:w,signup:x}=(0,l.useAuthContext)();(0,c.useEffect)(()=>{v&&d()},[v,d]);let y=async()=>{let a={email:"streaper2@gmail.com",password:"Kency1313"};s({name:"Admin Plume",...a}),q(!0),u("");try{await w(a.email,a.password)}catch(a){u(a?.message||"Erreur de connexion au service.")}finally{q(!1)}},z=async a=>{a.preventDefault(),u(""),q(!0);try{"signup"===n?await x(r.email,r.password,r.name):await w(r.email,r.password)}catch(a){u(a?.message||"Une erreur technique est survenue.")}finally{q(!1)}};return(0,b.jsxs)("div",{className:"min-h-screen bg-slate-50 flex overflow-hidden font-sans text-slate-900",children:[(0,b.jsxs)("div",{className:"hidden lg:flex w-1/2 bg-slate-900 relative p-12 flex-col justify-between overflow-hidden",children:[(0,b.jsxs)("div",{className:"absolute top-0 right-0 w-full h-full opacity-20 pointer-events-none",children:[(0,b.jsx)("div",{className:"absolute top-10 right-10 w-64 h-64 bg-blue-500 rounded-full blur-[120px]"}),(0,b.jsx)("div",{className:"absolute bottom-10 left-10 w-96 h-96 bg-indigo-500 rounded-full blur-[150px]"})]}),(0,b.jsxs)("div",{className:"relative z-10 flex items-center gap-2 text-white text-2xl font-black",children:[(0,b.jsx)(j.BookOpen,{className:"text-blue-500"})," PlumeIA"]}),(0,b.jsxs)("div",{className:"relative z-10 max-w-lg",children:[(0,b.jsxs)("h2",{className:"text-5xl font-black text-white leading-tight mb-6",children:["L'endroit où vos ",(0,b.jsx)("span",{className:"text-blue-400",children:"histoires"})," prennent vie."]}),(0,b.jsx)("p",{className:"text-slate-400 text-lg leading-relaxed",children:"Rejoignez une communauté d'auteurs qui utilisent l'IA pour briser la page blanche."})]}),(0,b.jsx)("div",{className:"relative z-10 text-slate-500 text-sm",children:"© 2024 PlumeIA Ecosystem."})]}),(0,b.jsx)("div",{className:"w-full lg:w-1/2 flex items-center justify-center p-8 bg-white overflow-y-auto",children:(0,b.jsxs)("div",{className:"w-full max-w-md animate-in fade-in slide-in-from-right-10 duration-500 py-8",children:[(0,b.jsxs)("div",{className:"text-center mb-10",children:[(0,b.jsx)("h1",{className:"text-3xl font-black text-slate-900 mb-2",children:"signin"===n?"Content de vous revoir":"signup"===n?"Commencer l'aventure":"Récupération"}),(0,b.jsx)("p",{className:"text-slate-500",children:"signin"===n?"Entrez vos identifiants pour continuer.":"Créez votre compte gratuit en quelques secondes."})]}),t&&(0,b.jsx)("div",{className:"mb-6 p-4 bg-red-50 border border-red-100 text-red-600 text-sm font-medium rounded-xl animate-in shake duration-300",children:t}),(0,b.jsxs)("form",{onSubmit:z,className:"space-y-4",children:["signup"===n&&(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-500 uppercase tracking-widest ml-1",children:"Nom complet"}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(g.User,{className:"absolute left-4 top-3.5 text-slate-400",size:18}),(0,b.jsx)("input",{type:"text",required:!0,value:r.name,onChange:a=>s({...r,name:a.target.value}),placeholder:"Marc Dupré",className:"w-full pl-12 pr-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium"})]})]}),(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-500 uppercase tracking-widest ml-1",children:"Email"}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(e,{className:"absolute left-4 top-3.5 text-slate-400",size:18}),(0,b.jsx)("input",{type:"email",required:!0,value:r.email,onChange:a=>s({...r,email:a.target.value}),placeholder:"votre@email.com",className:"w-full pl-12 pr-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium"})]})]}),"forgot"!==n&&(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-500 uppercase tracking-widest ml-1",children:"Mot de passe"}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(f.Lock,{className:"absolute left-4 top-3.5 text-slate-400",size:18}),(0,b.jsx)("input",{type:"password",required:!0,value:r.password,onChange:a=>s({...r,password:a.target.value}),placeholder:"••••••••",className:"w-full pl-12 pr-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium"})]})]}),(0,b.jsx)("button",{type:"submit",disabled:p,className:"w-full bg-slate-900 text-white py-4 rounded-xl font-bold flex items-center justify-center gap-2 hover:bg-blue-600 transition-all shadow-xl disabled:opacity-50 mt-4",children:p?(0,b.jsx)(i.Loader2,{className:"animate-spin"}):(0,b.jsxs)(b.Fragment,{children:["signin"===n?"Se connecter":"signup"===n?"Créer mon compte":"Envoyer"," ",(0,b.jsx)(h.ArrowRight,{size:18})]})})]}),"signin"===n&&(0,b.jsxs)("button",{onClick:y,className:"w-full mt-4 bg-amber-50 border border-amber-200 text-amber-800 py-3 rounded-xl font-bold flex items-center justify-center gap-2 hover:bg-amber-100 transition-all",children:[(0,b.jsx)(k,{size:18})," Connexion démo (Admin)"]}),(0,b.jsx)("div",{className:"mt-10 text-center",children:(0,b.jsxs)("p",{className:"text-sm text-slate-500",children:["signin"===n?"Pas de compte ?":"Déjà membre ?",(0,b.jsx)("button",{onClick:()=>o("signin"===n?"signup":"signin"),className:"ml-2 font-bold text-blue-600",children:"signin"===n?"S'inscrire":"Se connecter"})]})}),(0,b.jsx)("button",{onClick:a,className:"mt-8 text-xs text-slate-300 w-full text-center hover:text-slate-500 transition-colors",children:"← Revenir au site"})]})})]})};var n=a.i(34896);function o(){let a=(0,n.useRouter)();return(0,b.jsx)(m,{onBack:()=>a.push("/"),onSuccess:()=>a.push("/dashboard"),initialMode:"signup"})}a.s(["default",()=>o],41440)}]; +module.exports=[56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},97442,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.AppRouterContext},42481,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.HooksClientContext},70676,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.ServerInsertedHtml},29892,a=>{"use strict";var b=a.i(28091);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],29892)},79080,a=>{"use strict";let b=(0,a.i(29892).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>b],79080)},73258,a=>{"use strict";let b=(0,a.i(29892).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);a.s(["BookOpen",()=>b],73258)},79320,a=>{"use strict";let b=(0,a.i(29892).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);a.s(["ArrowRight",()=>b],79320)},82772,a=>{"use strict";let b=(0,a.i(29892).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);a.s(["User",()=>b],82772)},66181,a=>{"use strict";let b=(0,a.i(29892).default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);a.s(["Lock",()=>b],66181)},41440,a=>{"use strict";var b=a.i(78352),c=a.i(28091),d=a.i(29892);let e=(0,d.default)("mail",[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]]);var f=a.i(66181),g=a.i(82772),h=a.i(79320),i=a.i(79080),j=a.i(73258);let k=(0,d.default)("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);var l=a.i(95121);let m=({onBack:a,onSuccess:d,initialMode:m="signin"})=>{let[n,o]=(0,c.useState)(m),[p,q]=(0,c.useState)(!1),[r,s]=(0,c.useState)({name:"",email:"",password:""}),[t,u]=(0,c.useState)(""),{user:v,login:w,signup:x}=(0,l.useAuthContext)();(0,c.useEffect)(()=>{v&&d()},[v,d]);let y=async()=>{let a={email:"streaper2@gmail.com",password:"Kency1313"};s({name:"Admin Plume",...a}),q(!0),u("");try{await w(a.email,a.password)}catch(a){u(a?.message||"Erreur de connexion au service.")}finally{q(!1)}},z=async a=>{a.preventDefault(),u(""),q(!0);try{"signup"===n?await x(r.email,r.password,r.name):await w(r.email,r.password)}catch(a){u(a?.message||"Une erreur technique est survenue.")}finally{q(!1)}};return(0,b.jsxs)("div",{className:"min-h-screen bg-slate-50 flex overflow-hidden font-sans text-slate-900",children:[(0,b.jsxs)("div",{className:"hidden lg:flex w-1/2 bg-slate-900 relative p-12 flex-col justify-between overflow-hidden",children:[(0,b.jsxs)("div",{className:"absolute top-0 right-0 w-full h-full opacity-20 pointer-events-none",children:[(0,b.jsx)("div",{className:"absolute top-10 right-10 w-64 h-64 bg-blue-500 rounded-full blur-[120px]"}),(0,b.jsx)("div",{className:"absolute bottom-10 left-10 w-96 h-96 bg-indigo-500 rounded-full blur-[150px]"})]}),(0,b.jsxs)("div",{className:"relative z-10 flex items-center gap-2 text-white text-2xl font-black",children:[(0,b.jsx)(j.BookOpen,{className:"text-blue-500"})," PlumeIA"]}),(0,b.jsxs)("div",{className:"relative z-10 max-w-lg",children:[(0,b.jsxs)("h2",{className:"text-5xl font-black text-white leading-tight mb-6",children:["L'endroit où vos ",(0,b.jsx)("span",{className:"text-blue-400",children:"histoires"})," prennent vie."]}),(0,b.jsx)("p",{className:"text-slate-400 text-lg leading-relaxed",children:"Rejoignez une communauté d'auteurs qui utilisent l'IA pour briser la page blanche."})]}),(0,b.jsx)("div",{className:"relative z-10 text-slate-500 text-sm",children:"© 2024 PlumeIA Ecosystem."})]}),(0,b.jsx)("div",{className:"w-full lg:w-1/2 flex items-center justify-center p-8 bg-white overflow-y-auto",children:(0,b.jsxs)("div",{className:"w-full max-w-md animate-in fade-in slide-in-from-right-10 duration-500 py-8",children:[(0,b.jsxs)("div",{className:"text-center mb-10",children:[(0,b.jsx)("h1",{className:"text-3xl font-black text-slate-900 mb-2",children:"signin"===n?"Content de vous revoir":"signup"===n?"Commencer l'aventure":"Récupération"}),(0,b.jsx)("p",{className:"text-slate-500",children:"signin"===n?"Entrez vos identifiants pour continuer.":"Créez votre compte gratuit en quelques secondes."})]}),t&&(0,b.jsx)("div",{className:"mb-6 p-4 bg-red-50 border border-red-100 text-red-600 text-sm font-medium rounded-xl animate-in shake duration-300",children:t}),(0,b.jsxs)("form",{onSubmit:z,className:"space-y-4",children:["signup"===n&&(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-500 uppercase tracking-widest ml-1",children:"Nom complet"}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(g.User,{className:"absolute left-4 top-3.5 text-slate-400",size:18}),(0,b.jsx)("input",{type:"text",required:!0,value:r.name,onChange:a=>s({...r,name:a.target.value}),placeholder:"Marc Dupré",className:"w-full pl-12 pr-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium"})]})]}),(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-500 uppercase tracking-widest ml-1",children:"Email"}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(e,{className:"absolute left-4 top-3.5 text-slate-400",size:18}),(0,b.jsx)("input",{type:"email",required:!0,value:r.email,onChange:a=>s({...r,email:a.target.value}),placeholder:"votre@email.com",className:"w-full pl-12 pr-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium"})]})]}),"forgot"!==n&&(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-500 uppercase tracking-widest ml-1",children:"Mot de passe"}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(f.Lock,{className:"absolute left-4 top-3.5 text-slate-400",size:18}),(0,b.jsx)("input",{type:"password",required:!0,value:r.password,onChange:a=>s({...r,password:a.target.value}),placeholder:"••••••••",className:"w-full pl-12 pr-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium"})]})]}),(0,b.jsx)("button",{type:"submit",disabled:p,className:"w-full bg-slate-900 text-white py-4 rounded-xl font-bold flex items-center justify-center gap-2 hover:bg-blue-600 transition-all shadow-xl disabled:opacity-50 mt-4",children:p?(0,b.jsx)(i.Loader2,{className:"animate-spin"}):(0,b.jsxs)(b.Fragment,{children:["signin"===n?"Se connecter":"signup"===n?"Créer mon compte":"Envoyer"," ",(0,b.jsx)(h.ArrowRight,{size:18})]})})]}),"signin"===n&&(0,b.jsxs)("button",{onClick:y,className:"w-full mt-4 bg-amber-50 border border-amber-200 text-amber-800 py-3 rounded-xl font-bold flex items-center justify-center gap-2 hover:bg-amber-100 transition-all",children:[(0,b.jsx)(k,{size:18})," Connexion démo (Admin)"]}),(0,b.jsx)("div",{className:"mt-10 text-center",children:(0,b.jsxs)("p",{className:"text-sm text-slate-500",children:["signin"===n?"Pas de compte ?":"Déjà membre ?",(0,b.jsx)("button",{onClick:()=>o("signin"===n?"signup":"signin"),className:"ml-2 font-bold text-blue-600",children:"signin"===n?"S'inscrire":"Se connecter"})]})}),(0,b.jsx)("button",{onClick:a,className:"mt-8 text-xs text-slate-300 w-full text-center hover:text-slate-500 transition-colors",children:"← Revenir au site"})]})})]})};var n=a.i(34896);function o(){let a=(0,n.useRouter)();return(0,b.jsx)(m,{onBack:()=>a.push("/"),onSuccess:()=>a.push("/dashboard"),initialMode:"signup"})}a.s(["default",()=>o],41440)}]; -//# sourceMappingURL=%5Broot-of-the-server%5D__47b901a8._.js.map \ No newline at end of file +//# sourceMappingURL=%5Broot-of-the-server%5D__b187b587._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__b187b587._.js.map b/.next/server/chunks/ssr/[root-of-the-server]__b187b587._.js.map new file mode 100644 index 0000000..2ea3fad --- /dev/null +++ b/.next/server/chunks/ssr/[root-of-the-server]__b187b587._.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/loader-circle.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/book-open.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-right.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/user.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/lock.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/AuthPage.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/signup/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/shield-check.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/mail.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 7v14', key: '1akyts' }],\n [\n 'path',\n {\n d: 'M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z',\n key: 'ruj8y',\n },\n ],\n];\n\n/**\n * @component @name BookOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgN3YxNCIgLz4KICA8cGF0aCBkPSJNMyAxOGExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWg1YTQgNCAwIDAgMSA0IDQgNCA0IDAgMCAxIDQtNGg1YTEgMSAwIDAgMSAxIDF2MTNhMSAxIDAgMCAxLTEgMWgtNmEzIDMgMCAwIDAtMyAzIDMgMyAwIDAgMC0zLTN6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/book-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst BookOpen = createLucideIcon('book-open', __iconNode);\n\nexport default BookOpen;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n];\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJtMTIgNSA3IDctNyA3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('arrow-right', __iconNode);\n\nexport default ArrowRight;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n];\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMjF2LTJhNCA0IDAgMCAwLTQtNEg5YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/user\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst User = createLucideIcon('user', __iconNode);\n\nexport default User;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '11', x: '3', y: '11', rx: '2', ry: '2', key: '1w4ew1' }],\n ['path', { d: 'M7 11V7a5 5 0 0 1 10 0v4', key: 'fwvmzm' }],\n];\n\n/**\n * @component @name Lock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTEiIHg9IjMiIHk9IjExIiByeD0iMiIgcnk9IjIiIC8+CiAgPHBhdGggZD0iTTcgMTFWN2E1IDUgMCAwIDEgMTAgMHY0IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/lock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Lock = createLucideIcon('lock', __iconNode);\n\nexport default Lock;\n","'use client';\n\nimport React, { useState, useEffect } from 'react';\nimport { Mail, Lock, User, ArrowRight, Loader2, BookOpen, ShieldCheck } from 'lucide-react';\nimport { useAuthContext } from '@/providers/AuthProvider';\n\ninterface AuthPageProps {\n onBack: () => void;\n onSuccess: () => void;\n initialMode?: 'signin' | 'signup' | 'forgot';\n}\n\nconst AuthPage: React.FC = ({ onBack, onSuccess, initialMode = 'signin' }) => {\n const [mode, setMode] = useState<'signin' | 'signup' | 'forgot'>(initialMode);\n const [loading, setLoading] = useState(false);\n const [formData, setFormData] = useState({ name: '', email: '', password: '' });\n const [error, setError] = useState('');\n\n // On récupère les fonctions de connexion directement du hook\n const { user, login, signup } = useAuthContext();\n\n // Redirection automatique dès que l'utilisateur est détecté dans l'état global\n useEffect(() => {\n if (user) {\n onSuccess();\n }\n }, [user, onSuccess]);\n\n const handleAdminLogin = async () => {\n const adminData = { email: 'streaper2@gmail.com', password: 'Kency1313' };\n setFormData({ name: 'Admin Plume', ...adminData });\n setLoading(true);\n setError('');\n\n try {\n await login(adminData.email, adminData.password);\n } catch (e: any) {\n setError(e?.message || 'Erreur de connexion au service.');\n } finally {\n setLoading(false);\n }\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setError('');\n setLoading(true);\n\n try {\n if (mode === 'signup') {\n await signup(formData.email, formData.password, formData.name);\n } else {\n await login(formData.email, formData.password);\n }\n } catch (e: any) {\n setError(e?.message || 'Une erreur technique est survenue.');\n } finally {\n setLoading(false);\n }\n };\n\n return (\n
\n {/* Panneau Latéral (Visible sur Desktop) */}\n
\n
\n
\n
\n
\n\n
\n PlumeIA\n
\n\n
\n

\n L'endroit où vos histoires prennent vie.\n

\n

\n Rejoignez une communauté d'auteurs qui utilisent l'IA pour briser la page blanche.\n

\n
\n\n
\n © 2024 PlumeIA Ecosystem.\n
\n
\n\n {/* Formulaire */}\n
\n
\n
\n

\n {mode === 'signin' ? 'Content de vous revoir' : mode === 'signup' ? \"Commencer l'aventure\" : 'Récupération'}\n

\n

\n {mode === 'signin' ? 'Entrez vos identifiants pour continuer.' : 'Créez votre compte gratuit en quelques secondes.'}\n

\n
\n\n {error && (\n
\n {error}\n
\n )}\n\n
\n {mode === 'signup' && (\n
\n \n
\n \n setFormData({ ...formData, name: e.target.value })}\n placeholder=\"Marc Dupré\"\n className=\"w-full pl-12 pr-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium\"\n />\n
\n
\n )}\n\n
\n \n
\n \n setFormData({ ...formData, email: e.target.value })}\n placeholder=\"votre@email.com\"\n className=\"w-full pl-12 pr-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium\"\n />\n
\n
\n\n {mode !== 'forgot' && (\n
\n \n
\n \n setFormData({ ...formData, password: e.target.value })}\n placeholder=\"••••••••\"\n className=\"w-full pl-12 pr-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium\"\n />\n
\n
\n )}\n\n \n {loading ? : (\n <>{mode === 'signin' ? 'Se connecter' : mode === 'signup' ? 'Créer mon compte' : 'Envoyer'} \n )}\n \n \n\n {mode === 'signin' && (\n \n Connexion démo (Admin)\n \n )}\n\n
\n

\n {mode === 'signin' ? \"Pas de compte ?\" : \"Déjà membre ?\"}\n setMode(mode === 'signin' ? 'signup' : 'signin')}\n className=\"ml-2 font-bold text-blue-600\"\n >\n {mode === 'signin' ? \"S'inscrire\" : \"Se connecter\"}\n \n

\n
\n\n \n
\n
\n
\n );\n};\n\nexport default AuthPage;","'use client';\r\n\r\nimport AuthPage from '@/components/AuthPage';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function Signup() {\r\n const router = useRouter();\r\n\r\n return (\r\n router.push('/')}\r\n onSuccess={() => router.push('/dashboard')}\r\n initialMode=\"signup\"\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z',\n key: 'oel41y',\n },\n ],\n ['path', { d: 'm9 12 2 2 4-4', key: 'dzmm74' }],\n];\n\n/**\n * @component @name ShieldCheck\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXoiIC8+CiAgPHBhdGggZD0ibTkgMTIgMiAyIDQtNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/shield-check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ShieldCheck = createLucideIcon('shield-check', __iconNode);\n\nexport default ShieldCheck;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7', key: '132q7q' }],\n ['rect', { x: '2', y: '4', width: '20', height: '16', rx: '2', key: 'izxlao' }],\n];\n\n/**\n * @component @name Mail\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjIgNy04Ljk5MSA1LjcyN2EyIDIgMCAwIDEtMi4wMDkgMEwyIDciIC8+CiAgPHJlY3QgeD0iMiIgeT0iNCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE2IiByeD0iMiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/mail\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Mail = createLucideIcon('mail', __iconNode);\n\nexport default Mail;\n"],"names":["module","exports","require","vendored","AppRouterContext","HooksClientContext","ServerInsertedHtml"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,18,19]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__f4bfd4af._.js b/.next/server/chunks/ssr/[root-of-the-server]__d76143b2._.js similarity index 59% rename from .next/server/chunks/ssr/[root-of-the-server]__f4bfd4af._.js rename to .next/server/chunks/ssr/[root-of-the-server]__d76143b2._.js index 4888fb4..257a02e 100644 --- a/.next/server/chunks/ssr/[root-of-the-server]__f4bfd4af._.js +++ b/.next/server/chunks/ssr/[root-of-the-server]__d76143b2._.js @@ -1,3 +1,3 @@ -module.exports=[79080,a=>{"use strict";let b=(0,a.i(29892).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>b],79080)},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},97442,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.AppRouterContext},42481,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.HooksClientContext},70676,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.ServerInsertedHtml},29892,a=>{"use strict";var b=a.i(28091);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],29892)},79320,a=>{"use strict";let b=(0,a.i(29892).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);a.s(["ArrowRight",()=>b],79320)},67356,a=>{"use strict";var b=a.i(78352),c=a.i(28091),d=a.i(95121),e=a.i(79080);let f=(0,a.i(29892).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);var g=a.i(79320);let h=({onSuccess:a,onRegister:h})=>{let[i,j]=(0,c.useState)(""),[k,l]=(0,c.useState)(""),[m,n]=(0,c.useState)(""),[o,p]=(0,c.useState)(!1),{login:q}=(0,d.useAuthContext)();async function r(b){b.preventDefault(),n(""),p(!0);try{await q(i,k),a()}catch(a){n(a.message||"Une erreur inattendue est survenue."),p(!1)}}return(0,b.jsx)("div",{className:"min-h-screen bg-slate-50 flex overflow-hidden font-sans text-slate-900 items-center justify-center p-4",children:(0,b.jsxs)("div",{className:"w-full max-w-md bg-white rounded-2xl shadow-xl overflow-hidden p-8 animate-in fade-in zoom-in duration-300",children:[(0,b.jsxs)("div",{className:"text-center mb-8",children:[(0,b.jsx)("h1",{className:"text-3xl font-black text-slate-900 mb-2",children:"Connexion"}),(0,b.jsx)("p",{className:"text-slate-500",children:"Bienvenue ! Connectez-vous à votre compte"})]}),m&&(0,b.jsxs)("div",{className:"mb-6 p-4 bg-red-50 border border-red-100 text-red-600 text-sm font-medium rounded-xl flex items-center gap-2 animate-in shake duration-300",children:[(0,b.jsx)(f,{size:18}),m]}),(0,b.jsxs)("form",{onSubmit:r,className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-500 uppercase tracking-widest ml-1",htmlFor:"email",children:"Email"}),(0,b.jsx)("input",{id:"email",type:"email",className:"w-full px-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium transition-all",placeholder:"votre@email.com",value:i,onChange:a=>j(a.target.value),required:!0})]}),(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-500 uppercase tracking-widest ml-1",htmlFor:"password",children:"Mot de passe"}),(0,b.jsx)("input",{id:"password",type:"password",className:"w-full px-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium transition-all",placeholder:"••••••••",value:k,onChange:a=>l(a.target.value),required:!0})]}),(0,b.jsxs)("button",{type:"submit",className:"w-full bg-slate-900 text-white py-4 rounded-xl font-bold flex items-center justify-center gap-2 hover:bg-blue-600 transition-all shadow-xl disabled:opacity-50 mt-6",disabled:o,children:[o?(0,b.jsx)(e.Loader2,{className:"animate-spin"}):"Se connecter"," ",(0,b.jsx)(g.ArrowRight,{size:18})]})]}),(0,b.jsxs)("div",{className:"mt-8 text-center text-sm text-slate-500",children:["Pas encore de compte ?"," ",(0,b.jsx)("button",{onClick:h,className:"font-bold text-blue-600 hover:text-blue-800 transition-colors ml-1",children:"Créer un compte"})]})]})})};var i=a.i(34896);function j(){let a=(0,i.useRouter)();return(0,b.jsx)(h,{onSuccess:()=>a.push("/dashboard"),onRegister:()=>a.push("/signup")})}a.s(["default",()=>j],67356)}]; +module.exports=[56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},97442,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.AppRouterContext},42481,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.HooksClientContext},70676,(a,b,c)=>{"use strict";b.exports=a.r(23642).vendored.contexts.ServerInsertedHtml},29892,a=>{"use strict";var b=a.i(28091);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],29892)},79080,a=>{"use strict";let b=(0,a.i(29892).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>b],79080)},79320,a=>{"use strict";let b=(0,a.i(29892).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);a.s(["ArrowRight",()=>b],79320)},67356,a=>{"use strict";var b=a.i(78352),c=a.i(28091),d=a.i(95121),e=a.i(79080);let f=(0,a.i(29892).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);var g=a.i(79320);let h=({onSuccess:a,onRegister:h})=>{let[i,j]=(0,c.useState)(""),[k,l]=(0,c.useState)(""),[m,n]=(0,c.useState)(""),[o,p]=(0,c.useState)(!1),{login:q}=(0,d.useAuthContext)();async function r(b){b.preventDefault(),n(""),p(!0);try{await q(i,k),a()}catch(a){n(a.message||"Une erreur inattendue est survenue."),p(!1)}}return(0,b.jsx)("div",{className:"min-h-screen bg-slate-50 flex overflow-hidden font-sans text-slate-900 items-center justify-center p-4",children:(0,b.jsxs)("div",{className:"w-full max-w-md bg-white rounded-2xl shadow-xl overflow-hidden p-8 animate-in fade-in zoom-in duration-300",children:[(0,b.jsxs)("div",{className:"text-center mb-8",children:[(0,b.jsx)("h1",{className:"text-3xl font-black text-slate-900 mb-2",children:"Connexion"}),(0,b.jsx)("p",{className:"text-slate-500",children:"Bienvenue ! Connectez-vous à votre compte"})]}),m&&(0,b.jsxs)("div",{className:"mb-6 p-4 bg-red-50 border border-red-100 text-red-600 text-sm font-medium rounded-xl flex items-center gap-2 animate-in shake duration-300",children:[(0,b.jsx)(f,{size:18}),m]}),(0,b.jsxs)("form",{onSubmit:r,className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-500 uppercase tracking-widest ml-1",htmlFor:"email",children:"Email"}),(0,b.jsx)("input",{id:"email",type:"email",className:"w-full px-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium transition-all",placeholder:"votre@email.com",value:i,onChange:a=>j(a.target.value),required:!0})]}),(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-xs font-black text-slate-500 uppercase tracking-widest ml-1",htmlFor:"password",children:"Mot de passe"}),(0,b.jsx)("input",{id:"password",type:"password",className:"w-full px-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium transition-all",placeholder:"••••••••",value:k,onChange:a=>l(a.target.value),required:!0})]}),(0,b.jsxs)("button",{type:"submit",className:"w-full bg-slate-900 text-white py-4 rounded-xl font-bold flex items-center justify-center gap-2 hover:bg-blue-600 transition-all shadow-xl disabled:opacity-50 mt-6",disabled:o,children:[o?(0,b.jsx)(e.Loader2,{className:"animate-spin"}):"Se connecter"," ",(0,b.jsx)(g.ArrowRight,{size:18})]})]}),(0,b.jsxs)("div",{className:"mt-8 text-center text-sm text-slate-500",children:["Pas encore de compte ?"," ",(0,b.jsx)("button",{onClick:h,className:"font-bold text-blue-600 hover:text-blue-800 transition-colors ml-1",children:"Créer un compte"})]})]})})};var i=a.i(34896);function j(){let a=(0,i.useRouter)();return(0,b.jsx)(h,{onSuccess:()=>a.push("/dashboard"),onRegister:()=>a.push("/signup")})}a.s(["default",()=>j],67356)}]; -//# sourceMappingURL=%5Broot-of-the-server%5D__f4bfd4af._.js.map \ No newline at end of file +//# sourceMappingURL=%5Broot-of-the-server%5D__d76143b2._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__d76143b2._.js.map b/.next/server/chunks/ssr/[root-of-the-server]__d76143b2._.js.map new file mode 100644 index 0000000..cd2605f --- /dev/null +++ b/.next/server/chunks/ssr/[root-of-the-server]__d76143b2._.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/loader-circle.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-right.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/LoginPage.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/login/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/circle-alert.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n];\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJtMTIgNSA3IDctNyA3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('arrow-right', __iconNode);\n\nexport default ArrowRight;\n","'use client';\n\nimport React, { useState } from 'react';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { Loader2, AlertCircle, ArrowRight } from 'lucide-react';\r\n\r\ninterface LoginPageProps {\r\n onSuccess: () => void;\r\n onRegister: () => void;\r\n}\r\n\r\nconst LoginPage: React.FC = ({ onSuccess, onRegister }) => {\r\n const [email, setEmail] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n const [error, setError] = useState(\"\");\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Use the global auth context\r\n const { login } = useAuthContext();\r\n\r\n async function handleSubmit(e: React.FormEvent) {\r\n e.preventDefault();\r\n setError(\"\");\r\n setLoading(true);\r\n\r\n try {\r\n await login(email, password);\r\n onSuccess();\r\n } catch (err: any) {\r\n setError(err.message || \"Une erreur inattendue est survenue.\");\r\n setLoading(false);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {/* Using styles similar to AuthPage for consistency */}\r\n
\r\n
\r\n

Connexion

\r\n

Bienvenue ! Connectez-vous à votre compte

\r\n
\r\n\r\n {error && (\r\n
\r\n \r\n {error}\r\n
\r\n )}\r\n\r\n
\r\n
\r\n \r\n setEmail(e.target.value)}\r\n required\r\n />\r\n
\r\n\r\n
\r\n \r\n setPassword(e.target.value)}\r\n required\r\n />\r\n
\r\n\r\n \r\n {loading ? : \"Se connecter\"} \r\n \r\n \r\n\r\n
\r\n Pas encore de compte ?{\" \"}\r\n \r\n Créer un compte\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default LoginPage;\r\n","'use client';\r\n\r\nimport LoginPage from '@/components/LoginPage';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function Login() {\r\n const router = useRouter();\r\n\r\n return (\r\n router.push('/dashboard')}\r\n onRegister={() => router.push('/signup')}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['line', { x1: '12', x2: '12', y1: '8', y2: '12', key: '1pkeuh' }],\n ['line', { x1: '12', x2: '12.01', y1: '16', y2: '16', key: '4dfq90' }],\n];\n\n/**\n * @component @name CircleAlert\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8bGluZSB4MT0iMTIiIHgyPSIxMiIgeTE9IjgiIHkyPSIxMiIgLz4KICA8bGluZSB4MT0iMTIiIHgyPSIxMi4wMSIgeTE9IjE2IiB5Mj0iMTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/circle-alert\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleAlert = createLucideIcon('circle-alert', __iconNode);\n\nexport default CircleAlert;\n"],"names":["module","exports","require","vendored","AppRouterContext","HooksClientContext","ServerInsertedHtml"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,15]} \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__f4bfd4af._.js.map b/.next/server/chunks/ssr/[root-of-the-server]__f4bfd4af._.js.map deleted file mode 100644 index 551b5a5..0000000 --- a/.next/server/chunks/ssr/[root-of-the-server]__f4bfd4af._.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/loader-circle.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-right.ts","../../../../../../../Documents/00%20-%20projet/plumeia/src/components/LoginPage.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/src/app/login/page.tsx","../../../../../../../Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/circle-alert.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n];\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJtMTIgNSA3IDctNyA3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('arrow-right', __iconNode);\n\nexport default ArrowRight;\n","'use client';\n\nimport React, { useState } from 'react';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { Loader2, AlertCircle, ArrowRight } from 'lucide-react';\r\n\r\ninterface LoginPageProps {\r\n onSuccess: () => void;\r\n onRegister: () => void;\r\n}\r\n\r\nconst LoginPage: React.FC = ({ onSuccess, onRegister }) => {\r\n const [email, setEmail] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n const [error, setError] = useState(\"\");\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Use the global auth context\r\n const { login } = useAuthContext();\r\n\r\n async function handleSubmit(e: React.FormEvent) {\r\n e.preventDefault();\r\n setError(\"\");\r\n setLoading(true);\r\n\r\n try {\r\n await login(email, password);\r\n onSuccess();\r\n } catch (err: any) {\r\n setError(err.message || \"Une erreur inattendue est survenue.\");\r\n setLoading(false);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {/* Using styles similar to AuthPage for consistency */}\r\n
\r\n
\r\n

Connexion

\r\n

Bienvenue ! Connectez-vous à votre compte

\r\n
\r\n\r\n {error && (\r\n
\r\n \r\n {error}\r\n
\r\n )}\r\n\r\n
\r\n
\r\n \r\n setEmail(e.target.value)}\r\n required\r\n />\r\n
\r\n\r\n
\r\n \r\n setPassword(e.target.value)}\r\n required\r\n />\r\n
\r\n\r\n \r\n {loading ? : \"Se connecter\"} \r\n \r\n \r\n\r\n
\r\n Pas encore de compte ?{\" \"}\r\n \r\n Créer un compte\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default LoginPage;\r\n","'use client';\r\n\r\nimport LoginPage from '@/components/LoginPage';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function Login() {\r\n const router = useRouter();\r\n\r\n return (\r\n router.push('/dashboard')}\r\n onRegister={() => router.push('/signup')}\r\n />\r\n );\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['line', { x1: '12', x2: '12', y1: '8', y2: '12', key: '1pkeuh' }],\n ['line', { x1: '12', x2: '12.01', y1: '16', y2: '16', key: '4dfq90' }],\n];\n\n/**\n * @component @name CircleAlert\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8bGluZSB4MT0iMTIiIHgyPSIxMiIgeTE9IjgiIHkyPSIxMiIgLz4KICA8bGluZSB4MT0iMTIiIHgyPSIxMi4wMSIgeTE9IjE2IiB5Mj0iMTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/circle-alert\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleAlert = createLucideIcon('circle-alert', __iconNode);\n\nexport default CircleAlert;\n"],"names":["module","exports","require","vendored","AppRouterContext","HooksClientContext","ServerInsertedHtml"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,15]} \ No newline at end of file diff --git a/.next/server/pages/404.html b/.next/server/pages/404.html index d5048db..1ca0aaa 100644 --- a/.next/server/pages/404.html +++ b/.next/server/pages/404.html @@ -1 +1 @@ -404: This page could not be found.PlumeIA - Éditeur Intelligent

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.PlumeIA - Éditeur Intelligent

404

This page could not be found.

\ No newline at end of file diff --git a/.next/server/pages/500.html b/.next/server/pages/500.html index 59b646e..b046198 100644 --- a/.next/server/pages/500.html +++ b/.next/server/pages/500.html @@ -1,2 +1,2 @@ -500: Internal Server Error.

500

Internal Server Error.

\ No newline at end of file +500: Internal Server Error.

500

Internal Server Error.

\ No newline at end of file diff --git a/.next/static/msXsDwtlDxhrnfeF2dg3H/_buildManifest.js b/.next/static/F__YtZpml5C5L1OF5iRU8/_buildManifest.js similarity index 100% rename from .next/static/msXsDwtlDxhrnfeF2dg3H/_buildManifest.js rename to .next/static/F__YtZpml5C5L1OF5iRU8/_buildManifest.js diff --git a/.next/static/msXsDwtlDxhrnfeF2dg3H/_clientMiddlewareManifest.json b/.next/static/F__YtZpml5C5L1OF5iRU8/_clientMiddlewareManifest.json similarity index 100% rename from .next/static/msXsDwtlDxhrnfeF2dg3H/_clientMiddlewareManifest.json rename to .next/static/F__YtZpml5C5L1OF5iRU8/_clientMiddlewareManifest.json diff --git a/.next/static/msXsDwtlDxhrnfeF2dg3H/_ssgManifest.js b/.next/static/F__YtZpml5C5L1OF5iRU8/_ssgManifest.js similarity index 100% rename from .next/static/msXsDwtlDxhrnfeF2dg3H/_ssgManifest.js rename to .next/static/F__YtZpml5C5L1OF5iRU8/_ssgManifest.js diff --git a/.next/static/chunks/243eedfdf0191d5a.js b/.next/static/chunks/243eedfdf0191d5a.js deleted file mode 100644 index 843ddaa..0000000 --- a/.next/static/chunks/243eedfdf0191d5a.js +++ /dev/null @@ -1,39 +0,0 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,34779,e=>{"use strict";var s=e.i(30064),t=e.i(59760),l=e.i(12856),a=e.i(18404),r=e.i(8011),i=e.i(4301),n=e.i(46202),d=e.i(78445);let o=(0,d.default)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);var c=e.i(74080),x=e.i(62746);let h=(0,d.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]),m=(0,d.default)("brain-circuit",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M9 13a4.5 4.5 0 0 0 3-4",key:"10igwf"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M12 13h4",key:"1ku699"}],["path",{d:"M12 18h6a2 2 0 0 1 2 2v1",key:"105ag5"}],["path",{d:"M12 8h8",key:"1lhi5i"}],["path",{d:"M16 8V5a2 2 0 0 1 2-2",key:"u6izg6"}],["circle",{cx:"16",cy:"13",r:".5",key:"ry7gng"}],["circle",{cx:"18",cy:"3",r:".5",key:"1aiba7"}],["circle",{cx:"20",cy:"21",r:".5",key:"yhc1fs"}],["circle",{cx:"20",cy:"8",r:".5",key:"1e43v0"}]]);var u=e.i(30914);let p=({chatHistory:e,onSendMessage:l,onInsertText:a,selectedText:r,isGenerating:i,usage:d})=>{let[p,b]=(0,t.useState)(""),g=(0,t.useRef)(null);(0,t.useEffect)(()=>{g.current?.scrollIntoView({behavior:"smooth"})},[e,i]);let f=!!d&&d.aiActionsCurrent>=d.aiActionsLimit;return(0,s.jsxs)("div",{className:"flex flex-col h-full bg-white border-l border-slate-200 shadow-xl w-80 lg:w-96",children:[(0,s.jsxs)("div",{className:"p-4 bg-indigo-600 text-white flex items-center justify-between shadow-md",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(n.Sparkles,{size:20,className:"animate-pulse"}),(0,s.jsx)("h3",{className:"font-bold tracking-tight",children:"Assistant IA"})]}),d&&(0,s.jsxs)("div",{className:"bg-indigo-900/50 px-2 py-1 rounded text-[10px] font-black flex items-center gap-1",children:[(0,s.jsx)(u.Zap,{size:10,fill:"currentColor"})," ",d.aiActionsCurrent," / ",999999===d.aiActionsLimit?"∞":d.aiActionsLimit]})]}),r&&(0,s.jsxs)("div",{className:"bg-indigo-50 p-3 border-b border-indigo-100 text-xs text-indigo-800",children:[(0,s.jsxs)("div",{className:"font-bold flex items-center gap-1 mb-1",children:[(0,s.jsx)(x.BookOpen,{size:12})," Contexte :"]}),(0,s.jsxs)("div",{className:"italic truncate opacity-80",children:['"',r.substring(0,60),'..."']})]}),(0,s.jsxs)("div",{className:"flex-1 overflow-y-auto p-4 space-y-4 bg-slate-50",children:[0===e.length&&(0,s.jsxs)("div",{className:"text-center text-slate-400 mt-10",children:[(0,s.jsx)(h,{size:48,className:"mx-auto mb-2 opacity-50"}),(0,s.jsx)("p",{className:"text-sm",children:"Bonjour ! Comment puis-je vous aider aujourd'hui ?"}),f&&(0,s.jsx)("div",{className:"mt-4 p-4 bg-red-50 border border-red-100 rounded-xl text-red-600 text-xs font-bold uppercase animate-pulse",children:"Limite atteinte ! Améliorez votre plan."})]}),e.map(e=>(0,s.jsx)("div",{className:`flex flex-col ${"user"===e.role?"items-end":"items-start"}`,children:(0,s.jsxs)("div",{className:`max-w-[85%] rounded-2xl p-4 text-sm shadow-sm ${"user"===e.role?"bg-indigo-600 text-white rounded-br-none":"bg-white text-slate-700 border border-slate-100 rounded-bl-none"}`,children:["model"===e.role&&"reflection"===e.responseType&&(0,s.jsxs)("div",{className:"flex items-center gap-1.5 text-[10px] font-black text-amber-600 mb-1.5 uppercase tracking-wide",children:[(0,s.jsx)(m,{size:12})," Réflexion"]}),(0,s.jsx)("div",{className:"whitespace-pre-wrap leading-relaxed",children:e.text})]})},e.id)),i&&(0,s.jsx)("div",{className:"flex justify-start",children:(0,s.jsxs)("div",{className:"bg-white p-3 rounded-2xl rounded-bl-none shadow-sm border border-slate-100 flex items-center gap-2 text-xs text-slate-500",children:[(0,s.jsx)(c.RefreshCw,{size:14,className:"animate-spin"})," L'IA travaille..."]})}),(0,s.jsx)("div",{ref:g})]}),(0,s.jsx)("div",{className:"p-4 bg-white border-t border-slate-200",children:(0,s.jsxs)("form",{onSubmit:e=>{e.preventDefault(),p.trim()&&!i&&(l(p),b(""))},className:"relative",children:[(0,s.jsx)("input",{type:"text",value:p,onChange:e=>b(e.target.value),placeholder:f?"Limite atteinte...":"Votre message...",className:"w-full pl-4 pr-12 py-3 bg-slate-100 rounded-2xl text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-shadow disabled:opacity-50",disabled:i||f}),(0,s.jsx)("button",{type:"submit",disabled:!p.trim()||i||f,className:"absolute right-1.5 top-1.5 p-2 bg-indigo-600 text-white rounded-xl hover:bg-indigo-700 disabled:opacity-50 transition-colors shadow-md",children:(0,s.jsx)(o,{size:18})})]})})]})};var b=e.i(43331);let g=(0,d.default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);var f=e.i(12155),j=e.i(12100),v=e.i(36268),y=e.i(46553);let N=(0,d.default)("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]);var w=e.i(30103);let k=(0,d.default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),C=(0,d.default)("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]),z=(0,d.default)("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var M=e.i(86180);let A=(0,d.default)("layout-dashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);var $=e.i(50147),S=e.i(22508),P=e.i(4917);let I=e=>{let{project:l,user:a,viewMode:r,currentChapterId:i,children:n}=e,[d,o]=(0,t.useState)(!0),[c,x]=(0,t.useState)(!0),h=l.chapters.find(e=>e.id===i);return(0,s.jsxs)("div",{className:`flex h-screen overflow-hidden no-print ${"dark"===a.preferences.theme?"bg-slate-900 text-white":"sepia"===a.preferences.theme?"bg-[#f4ecd8]":"bg-[#eef2ff]"}`,children:[(0,s.jsxs)("aside",{className:`${d?"w-64":"w-0"} bg-slate-900 text-slate-300 flex-shrink-0 transition-all duration-300 overflow-hidden flex flex-col border-r border-slate-800`,children:[(0,s.jsxs)("div",{className:"p-4 border-b border-slate-700",children:[(0,s.jsxs)("h1",{className:"text-white font-bold flex items-center gap-2 mb-4 cursor-pointer",onClick:()=>e.onViewModeChange("dashboard"),children:[(0,s.jsx)(b.Book,{className:"text-blue-400"})," PlumeIA"]}),(0,s.jsx)("input",{type:"text",value:l.title,onChange:s=>e.onUpdateProject({title:s.target.value}),className:"w-full bg-transparent font-serif font-bold text-white text-lg mb-1 focus:outline-none focus:border-b focus:border-blue-500 truncate",placeholder:"Titre du livre"}),(0,s.jsxs)("button",{onClick:()=>e.onViewModeChange("dashboard"),className:"w-full flex items-center gap-2 text-xs hover:bg-slate-800 p-2 rounded transition-colors text-slate-400",children:[(0,s.jsx)(A,{size:14})," Retour au Dashboard"]})]}),(0,s.jsxs)("div",{className:"flex-1 overflow-y-auto py-2",children:[(0,s.jsxs)("div",{className:"px-4 py-2 text-xs font-semibold text-slate-500 uppercase flex justify-between items-center",children:["Chapitres ",(0,s.jsx)("button",{onClick:e.onAddChapter,className:"hover:text-blue-400",children:(0,s.jsx)(S.Plus,{size:14})})]}),l.chapters.map((t,l)=>(0,s.jsxs)("div",{className:"group relative",children:[(0,s.jsxs)("button",{onClick:()=>e.onChapterSelect(t.id),className:`w-full text-left px-4 py-2 text-sm truncate transition-colors ${i===t.id&&"write"===r?"bg-blue-900 text-white border-r-2 border-blue-400":"hover:bg-slate-800"}`,children:[l+1,". ",t.title]}),(0,s.jsx)("button",{onClick:()=>e.onDeleteChapter(t.id),className:"absolute right-2 top-2 text-slate-600 hover:text-red-400 opacity-0 group-hover:opacity-100",children:(0,s.jsx)(P.Trash2,{size:14})})]},t.id)),(0,s.jsx)("div",{className:"mt-6 px-4 py-2 text-xs font-semibold text-slate-500 uppercase",children:"Outils & Bible"}),(0,s.jsxs)("button",{onClick:()=>e.onViewModeChange("write"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"write"===r?"bg-blue-900 text-white":"hover:bg-slate-800"}`,children:[(0,s.jsx)(g,{size:16})," Retour à la rédaction"]}),(0,s.jsxs)("button",{onClick:()=>e.onViewModeChange("world_building"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"world_building"===r?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,s.jsx)(f.Globe,{size:16})," Bible du Monde"]}),(0,s.jsxs)("button",{onClick:()=>e.onViewModeChange("workflow"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"workflow"===r?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,s.jsx)(j.GitGraph,{size:16})," Workflow"]}),(0,s.jsxs)("button",{onClick:()=>e.onViewModeChange("ideas"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"ideas"===r?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,s.jsx)(v.Lightbulb,{size:16})," Boîte à Idées"]}),(0,s.jsxs)("button",{onClick:()=>e.onViewModeChange("settings"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"settings"===r?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,s.jsx)(y.Settings,{size:16})," Paramètres"]})]}),(0,s.jsxs)("div",{className:"p-4 border-t border-slate-800",children:[(0,s.jsxs)("div",{className:"bg-slate-800 rounded-lg p-3 mb-4",children:[(0,s.jsxs)("div",{className:"flex justify-between text-[10px] text-slate-400 uppercase font-bold mb-1",children:[(0,s.jsx)("span",{children:"Actions IA"}),(0,s.jsxs)("span",{children:[a.usage.aiActionsCurrent," / ",999999===a.usage.aiActionsLimit?"∞":a.usage.aiActionsLimit]})]}),(0,s.jsx)("div",{className:"h-1.5 w-full bg-slate-700 rounded-full overflow-hidden",children:(0,s.jsx)("div",{className:"h-full bg-blue-500",style:{width:`${Math.min(100,a.usage.aiActionsCurrent/a.usage.aiActionsLimit*100)}%`}})})]}),(0,s.jsxs)("button",{onClick:()=>e.onViewModeChange("profile"),className:"w-full flex items-center gap-2 px-3 py-2 text-xs text-slate-400 hover:bg-slate-800 rounded mb-2",children:[(0,s.jsx)($.User,{size:14})," Mon Compte"]}),(0,s.jsxs)("button",{onClick:e.onLogout,className:"w-full flex items-center gap-2 px-3 py-2 text-xs text-red-400 hover:bg-red-900/20 rounded",children:[(0,s.jsx)(M.LogOut,{size:14})," Déconnexion"]})]})]}),(0,s.jsxs)("div",{className:"flex-1 flex flex-col h-full overflow-hidden",children:[(0,s.jsxs)("header",{className:"h-14 bg-white border-b border-slate-200 flex items-center justify-between px-4 shadow-sm z-10 text-slate-800",children:[(0,s.jsxs)("div",{className:"flex items-center gap-4",children:[(0,s.jsx)("button",{onClick:()=>o(!d),className:"text-slate-500 hover:text-slate-800",children:(0,s.jsx)(N,{size:20})}),"write"===r?(0,s.jsx)("input",{type:"text",value:h?.title||"",onChange:s=>e.onUpdateProject({chapters:l.chapters.map(e=>e.id===i?{...e,title:s.target.value}:e)}),className:"font-serif font-bold text-lg bg-transparent border-b border-transparent focus:border-blue-500 focus:outline-none"}):(0,s.jsx)("span",{className:"font-bold uppercase tracking-widest text-xs",children:r})]}),(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsxs)("button",{onClick:e.onOpenExport,className:"bg-blue-600 text-white px-4 py-1.5 rounded-lg text-sm font-medium hover:bg-blue-700 flex items-center gap-2",children:[(0,s.jsx)(C,{size:16})," Publier"]}),(0,s.jsx)("button",{onClick:e.onOpenHelp,className:"p-2 text-slate-400 hover:text-blue-600 rounded-full",children:(0,s.jsx)(z,{size:20})}),(0,s.jsx)("button",{onClick:()=>x(!c),className:`p-2 rounded-full ${c?"bg-indigo-100 text-indigo-600":"text-slate-500 hover:bg-slate-100"}`,children:c?(0,s.jsx)(w.ChevronRight,{size:20}):(0,s.jsx)(k,{size:20})})]})]}),(0,s.jsx)("main",{className:"flex-1 overflow-hidden relative",children:n})]}),(0,s.jsx)("div",{className:`${c?"w-80 lg:w-96":"w-0"} transition-all duration-300 flex-shrink-0 h-full border-l border-slate-200 relative`,children:c&&(0,s.jsx)(p,{chatHistory:e.chatHistory,onSendMessage:e.onSendMessage,onInsertText:e.onInsertText,selectedText:"",isGenerating:e.isGenerating,usage:a.usage})})]})},L=(0,d.default)("printer",[["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",key:"143wyd"}],["path",{d:"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6",key:"1itne7"}],["rect",{x:"6",y:"14",width:"12",height:"8",rx:"1",key:"1ue0tg"}]]);var T=e.i(59111);let B=(0,d.default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]),E=(0,d.default)("file-braces",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"1oajmo"}],["path",{d:"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"mpwhp6"}]]),V=({isOpen:e,onClose:l,project:a,onPrint:r})=>{let[i,n]=(0,t.useState)("pdf"),[d,o]=(0,t.useState)("A4"),[c,x]=(0,t.useState)(!0),[h,m]=(0,t.useState)(!0);if(!e)return null;let u=()=>{let e=` - - - - - ${a.title} - - - - `;return c&&(e+=` -
-

${a.title}

-

${a.author}

-
- `),h&&(e+=`

Table des Mati\xe8res

    `,a.chapters.forEach((s,t)=>{e+=`
  • ${s.title}
  • `}),e+="
"),a.chapters.forEach((s,t)=>{e+=` -
-

${s.title}

- ${s.content} -
- `}),e+=""},p=(e,s)=>{let t=URL.createObjectURL(e),a=document.createElement("a");a.href=t,a.download=s,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(t),l()};return(0,s.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm animate-in fade-in duration-200 no-print",children:(0,s.jsxs)("div",{className:"bg-white rounded-xl shadow-2xl w-[600px] overflow-hidden flex flex-col max-h-[90vh]",children:[(0,s.jsxs)("div",{className:"bg-slate-900 text-white p-6 flex justify-between items-center",children:[(0,s.jsxs)("div",{children:[(0,s.jsxs)("h2",{className:"text-xl font-bold flex items-center gap-2",children:[(0,s.jsx)(B,{size:24})," Exporter le livre"]}),(0,s.jsx)("p",{className:"text-slate-400 text-sm mt-1",children:a.title})]}),(0,s.jsx)("button",{onClick:l,className:"text-slate-400 hover:text-white transition-colors",children:(0,s.jsx)(T.X,{size:24})})]}),(0,s.jsxs)("div",{className:"p-6 overflow-y-auto flex-1",children:[(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-4 mb-8",children:[(0,s.jsxs)("button",{onClick:()=>n("pdf"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"pdf"===i?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,s.jsx)(L,{size:32}),(0,s.jsx)("div",{className:"font-semibold",children:"PDF (Impression)"})]}),(0,s.jsxs)("button",{onClick:()=>n("word"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"word"===i?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,s.jsx)(g,{size:32}),(0,s.jsx)("div",{className:"font-semibold",children:"Microsoft Word"})]}),(0,s.jsxs)("button",{onClick:()=>n("epub"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"epub"===i?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,s.jsx)(b.Book,{size:32}),(0,s.jsx)("div",{className:"font-semibold",children:"EPUB / Ebook"})]}),(0,s.jsxs)("button",{onClick:()=>n("markdown"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"markdown"===i?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,s.jsx)(E,{size:32}),(0,s.jsx)("div",{className:"font-semibold",children:"Markdown"})]})]}),(0,s.jsxs)("div",{className:"bg-slate-50 rounded-lg p-5 border border-slate-200",children:[(0,s.jsxs)("h3",{className:"text-sm font-bold text-slate-500 uppercase tracking-wider mb-4",children:["Paramètres d'exportation (",i.toUpperCase(),")"]}),(0,s.jsxs)("div",{className:"space-y-4",children:["pdf"===i&&(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsxs)("div",{className:"flex flex-col",children:[(0,s.jsx)("label",{className:"text-slate-700 font-medium",children:"Format du papier"}),(0,s.jsx)("span",{className:"text-xs text-slate-400",children:"Géré par l'imprimante (A4, A5...)"})]}),(0,s.jsx)("div",{className:"bg-slate-200 px-3 py-1 rounded text-xs font-mono text-slate-600",children:"Auto"})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("label",{className:"text-slate-700 font-medium cursor-pointer",htmlFor:"cover",children:"Inclure la page de titre"}),(0,s.jsx)("input",{id:"cover",type:"checkbox",checked:c,onChange:e=>x(e.target.checked),className:"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500"})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("label",{className:"text-slate-700 font-medium cursor-pointer",htmlFor:"toc",children:"Générer la table des matières"}),(0,s.jsx)("input",{id:"toc",type:"checkbox",checked:h,onChange:e=>m(e.target.checked),className:"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500"})]}),"epub"===i&&(0,s.jsx)("p",{className:"text-xs text-amber-600 bg-amber-50 p-2 rounded mt-2",children:"Note: L'export EPUB génère un fichier XHTML optimisé prêt à être converti par Calibre ou Kindle Previewer."})]})]})]}),(0,s.jsxs)("div",{className:"p-4 border-t border-slate-200 bg-slate-50 flex justify-end gap-3",children:[(0,s.jsx)("button",{onClick:l,className:"px-5 py-2 text-slate-600 hover:bg-slate-200 rounded-lg font-medium transition-colors",children:"Annuler"}),(0,s.jsxs)("button",{onClick:()=>{let e=a.title.replace(/[^a-z0-9]/gi,"_").toLowerCase();if("pdf"===i)r({includeCover:c,includeTOC:h});else if("word"===i)p(new Blob(["\uFEFF",u()],{type:"application/msword"}),`${e}.doc`);else if("epub"===i)p(new Blob([u()],{type:"application/xhtml+xml"}),`${e}.xhtml`);else if("markdown"===i){let s=`# ${a.title} -By ${a.author} - -`;a.chapters.forEach(e=>{let t=e.content.replace(/<[^>]+>/g,"\n");s+=`## ${e.title} - -${t} - ---- - -`}),p(new Blob([s],{type:"text/markdown"}),`${e}.md`)}},className:"px-6 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg font-medium shadow-md transition-all flex items-center gap-2",children:["pdf"===i?(0,s.jsx)(L,{size:18}):(0,s.jsx)(B,{size:18}),"pdf"===i?"Imprimer / Enregistrer PDF":`T\xe9l\xe9charger .${"word"===i?"doc":"epub"===i?"xhtml":"md"}`]})]})]})})},R=(0,d.default)("keyboard",[["path",{d:"M10 8h.01",key:"1r9ogq"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M14 8h.01",key:"1primd"}],["path",{d:"M16 12h.01",key:"1l6xoz"}],["path",{d:"M18 8h.01",key:"emo2bl"}],["path",{d:"M6 8h.01",key:"x9i8wu"}],["path",{d:"M7 16h10",key:"wp8him"}],["path",{d:"M8 12h.01",key:"czm47f"}],["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}]]);var D=e.i(97794),U=e.i(15536);let q=(0,d.default)("command",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]);var O=e.i(98867);let G=({children:e})=>(0,s.jsx)("kbd",{className:"px-2 py-1 text-xs font-semibold text-slate-800 bg-slate-100 border border-slate-300 rounded-md shadow-[0px_2px_0px_0px_rgba(203,213,225,1)] mx-1 font-mono",children:e}),H=({isOpen:e,onClose:t,viewMode:l})=>e?(0,s.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm animate-in fade-in duration-200",children:(0,s.jsxs)("div",{className:"bg-white rounded-xl shadow-2xl w-[800px] max-h-[90vh] flex flex-col overflow-hidden",children:[(0,s.jsxs)("div",{className:"bg-slate-900 text-white p-6 flex justify-between items-center shrink-0",children:[(0,s.jsxs)("div",{children:[(0,s.jsxs)("h2",{className:"text-xl font-bold flex items-center gap-2",children:[(0,s.jsx)(x.BookOpen,{size:24,className:"text-blue-400"})," Aide : ","workflow"===l?"Workflow & Dialogues":"world_building"===l?"Bible du Monde":"settings"===l?"Paramètres":"ideas"===l?"Boîte à Idées":"Éditeur & IA"]}),(0,s.jsx)("p",{className:"text-slate-400 text-sm mt-1",children:"Astuces pour l'écran actuel."})]}),(0,s.jsx)("button",{onClick:t,className:"text-slate-400 hover:text-white transition-colors p-2 hover:bg-slate-800 rounded-full",children:(0,s.jsx)(T.X,{size:24})})]}),(0,s.jsxs)("div",{className:"overflow-y-auto p-8",children:[(()=>{switch(l){case"ideas":return(0,s.jsxs)("section",{className:"mb-8",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-yellow-600 flex items-center gap-2 border-b border-yellow-100 pb-2 mb-4",children:[(0,s.jsx)(v.Lightbulb,{size:20})," Boîte à Idées & Tâches"]}),(0,s.jsxs)("div",{className:"text-sm text-slate-600 space-y-4",children:[(0,s.jsx)("p",{children:"Un espace de type Kanban pour ne rien oublier. Utilisez-le pour noter des idées fugaces, planifier des recherches ou lister les scènes à écrire."}),(0,s.jsxs)("ul",{className:"space-y-3",children:[(0,s.jsxs)("li",{className:"flex items-start gap-2",children:[(0,s.jsx)(D.MousePointerClick,{size:16,className:"mt-0.5 shrink-0"}),(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"font-semibold text-slate-800",children:"Glisser-Déposer :"})," Déplacez les cartes d'une colonne à l'autre (À faire → En cours → Validé) pour suivre votre progression."]})]}),(0,s.jsxs)("li",{className:"flex items-start gap-2",children:[(0,s.jsx)(O.Layout,{size:16,className:"mt-0.5 shrink-0"}),(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"font-semibold text-slate-800",children:"Catégories :"})," Utilisez les catégories (Intrigue, Personnage, Recherche) pour filtrer visuellement vos tâches grâce aux codes couleurs."]})]})]})]})]});case"workflow":return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("section",{className:"mb-8",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-indigo-700 flex items-center gap-2 border-b border-indigo-100 pb-2 mb-4",children:[(0,s.jsx)(j.GitGraph,{size:20})," Organisation Narrative"]}),(0,s.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 text-sm text-slate-600",children:(0,s.jsxs)("ul",{className:"space-y-3",children:[(0,s.jsxs)("li",{className:"flex items-start gap-2",children:[(0,s.jsx)(D.MousePointerClick,{size:16,className:"mt-0.5 shrink-0"}),(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"font-semibold text-slate-800",children:"Sélection :"})," ",(0,s.jsx)(G,{children:"Ctrl"})," + Clic pour sélectionner plusieurs cartes. Glissez pour déplacer tout un groupe."]})]}),(0,s.jsxs)("li",{className:"flex items-start gap-2",children:[(0,s.jsx)(q,{size:16,className:"mt-0.5 shrink-0"}),(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"font-semibold text-slate-800",children:"Copier / Coller :"})," ",(0,s.jsx)(G,{children:"Ctrl"})," + ",(0,s.jsx)(G,{children:"C"})," pour copier les nœuds sélectionnés, ",(0,s.jsx)(G,{children:"Ctrl"})," + ",(0,s.jsx)(G,{children:"V"})," pour coller."]})]}),(0,s.jsxs)("li",{className:"flex items-start gap-2",children:[(0,s.jsx)(O.Layout,{size:16,className:"mt-0.5 shrink-0"}),(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"font-semibold text-slate-800",children:"Connexions :"})," Tirez depuis le cercle à droite d'une carte pour lier les événements."]})]})]})})]}),(0,s.jsxs)("section",{className:"bg-blue-50 p-6 rounded-xl border border-blue-100 mb-8",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-blue-800 flex items-center gap-2 border-b border-blue-200 pb-2 mb-4",children:[(0,s.jsx)(U.MessageCircle,{size:20})," Mode Dialogue (Workflow)"]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 text-sm",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"font-semibold text-slate-800 mb-1",children:"Écriture Rapide"}),(0,s.jsxs)("p",{className:"text-slate-600 leading-relaxed mb-3",children:["Tapez un nom et ",(0,s.jsx)(G,{children:"Entrée"})," : le formatage ",(0,s.jsx)("code",{children:"Nom: "})," s'ajoute seul."]}),(0,s.jsxs)("p",{className:"text-slate-600 leading-relaxed",children:["Dans un dialogue, ",(0,s.jsx)(G,{children:"Entrée"})," change de ligne et ",(0,s.jsx)("strong",{children:"devine le prochain interlocuteur"})," automatiquement."]})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"font-semibold text-slate-800 mb-1",children:"Rotation & Insertion"}),(0,s.jsxs)("p",{className:"text-slate-600 leading-relaxed mb-3",children:[(0,s.jsx)(G,{children:"Tab"})," permute instantanément entre les personnages présents dans la scène."]}),(0,s.jsxs)("p",{className:"text-slate-600 leading-relaxed",children:["Utilisez ",(0,s.jsx)(G,{children:"@"})," pour insérer un personnage, ",(0,s.jsx)(G,{children:"#"})," pour un lieu."]})]})]})]})]});case"world_building":return(0,s.jsxs)("section",{className:"mb-8",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-green-700 flex items-center gap-2 border-b border-green-100 pb-2 mb-4",children:[(0,s.jsx)(f.Globe,{size:20})," Bible du Monde"]}),(0,s.jsxs)("div",{className:"text-sm text-slate-600 space-y-4",children:[(0,s.jsxs)("p",{children:["La bible du monde permet de centraliser toutes les informations sur vos personnages et lieux. Ces informations sont ",(0,s.jsx)("strong",{children:"lues par l'IA"})," pour assurer la cohérence de l'histoire."]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 mt-4",children:[(0,s.jsxs)("div",{className:"bg-slate-50 p-4 rounded-lg",children:[(0,s.jsx)("h4",{className:"font-bold text-slate-800 mb-2",children:"Modèles Personnalisés"}),(0,s.jsx)("p",{children:'Cliquez sur le bouton "Modèles" pour ajouter des champs spécifiques (ex: "Type de Magie", "Allégeance") à tous vos personnages ou lieux.'})]}),(0,s.jsxs)("div",{className:"bg-slate-50 p-4 rounded-lg",children:[(0,s.jsx)("h4",{className:"font-bold text-slate-800 mb-2",children:"Contexte Automatique"}),(0,s.jsx)("p",{children:"Le champ \"Contexte Narratif\" se remplit automatiquement au fur et à mesure que vous écrivez votre histoire et que l'IA détecte l'évolution des personnages."})]})]})]})]});case"settings":return(0,s.jsxs)("section",{className:"mb-8",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-slate-700 flex items-center gap-2 border-b border-slate-100 pb-2 mb-4",children:[(0,s.jsx)(y.Settings,{size:20})," Paramètres du Livre"]}),(0,s.jsx)("p",{className:"text-sm text-slate-600 mb-4",children:'Ces réglages sont cruciaux pour l\'Assistant IA. Ils définissent le "ton" de toutes les générations de texte.'}),(0,s.jsxs)("ul",{className:"list-disc pl-5 space-y-2 text-sm text-slate-600",children:[(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{children:"Style Guide :"}),' Soyez précis sur le style (ex: "phrases courtes", "beaucoup de métaphores", "humour noir").']}),(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{children:"POV (Point de Vue) :"}),' Définit si l\'IA doit écrire en "Je" ou "Il/Elle".']})]})]});default:return(0,s.jsxs)("section",{className:"mb-8",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-amber-600 flex items-center gap-2 border-b border-amber-100 pb-2 mb-4",children:[(0,s.jsx)(n.Sparkles,{size:20})," Éditeur & Assistant IA"]}),(0,s.jsxs)("div",{className:"space-y-4 text-sm text-slate-600",children:[(0,s.jsxs)("div",{className:"bg-amber-50 p-4 rounded-lg border border-amber-100",children:[(0,s.jsx)("h4",{className:"font-bold text-amber-800 mb-2",children:"Menu Contextuel Intelligent"}),(0,s.jsxs)("p",{children:["Sélectionnez du texte et faites un ",(0,s.jsx)("strong",{children:"clic droit"})," pour :"]}),(0,s.jsxs)("ul",{className:"grid grid-cols-2 gap-2 mt-2 pl-4",children:[(0,s.jsxs)("li",{className:"flex items-center gap-2",children:[(0,s.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Corriger l'orthographe"]}),(0,s.jsxs)("li",{className:"flex items-center gap-2",children:[(0,s.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Reformuler / Améliorer"]}),(0,s.jsxs)("li",{className:"flex items-center gap-2",children:[(0,s.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Développer (Show, don't tell)"]}),(0,s.jsxs)("li",{className:"flex items-center gap-2",children:[(0,s.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Continuer l'écriture"]})]})]}),(0,s.jsxs)("p",{children:[(0,s.jsx)("span",{className:"font-semibold text-slate-800",children:"Historique des versions :"})," Activez la marge de droite (icône horloge) pour voir toutes les interventions de l'IA et revenir en arrière si nécessaire."]}),(0,s.jsxs)("p",{children:[(0,s.jsx)("span",{className:"font-semibold text-slate-800",children:"Chat Latéral :"})," Posez des questions sur votre histoire, demandez des résumés ou des idées de rebondissements. L'IA connaît le contexte de vos chapitres précédents et de vos fiches personnages."]}),(0,s.jsxs)("div",{className:"mt-6 border-t border-slate-100 pt-4",children:[(0,s.jsxs)("h4",{className:"font-bold text-slate-700 mb-3 flex items-center gap-2",children:[(0,s.jsx)(R,{size:16})," Raccourcis Clavier (Éditeur)"]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 bg-slate-50 p-4 rounded-lg border border-slate-100",children:[(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,s.jsx)("span",{className:"text-slate-600",children:"Mettre en Gras"}),(0,s.jsxs)("span",{children:[(0,s.jsx)(G,{children:"Ctrl"})," + ",(0,s.jsx)(G,{children:"B"})]})]}),(0,s.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,s.jsx)("span",{className:"text-slate-600",children:"Mettre en Italique"}),(0,s.jsxs)("span",{children:[(0,s.jsx)(G,{children:"Ctrl"})," + ",(0,s.jsx)(G,{children:"I"})]})]}),(0,s.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,s.jsx)("span",{className:"text-slate-600",children:"Souligner"}),(0,s.jsxs)("span",{children:[(0,s.jsx)(G,{children:"Ctrl"})," + ",(0,s.jsx)(G,{children:"U"})]})]})]}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,s.jsx)("span",{className:"text-slate-600",children:"Tout sélectionner"}),(0,s.jsxs)("span",{children:[(0,s.jsx)(G,{children:"Ctrl"})," + ",(0,s.jsx)(G,{children:"A"})]})]}),(0,s.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,s.jsx)("span",{className:"text-slate-600",children:"Annuler"}),(0,s.jsxs)("span",{children:[(0,s.jsx)(G,{children:"Ctrl"})," + ",(0,s.jsx)(G,{children:"Z"})]})]}),(0,s.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,s.jsx)("span",{className:"text-slate-600",children:"Rétablir"}),(0,s.jsxs)("span",{children:[(0,s.jsx)(G,{children:"Ctrl"})," + ",(0,s.jsx)(G,{children:"Shift"})," + ",(0,s.jsx)(G,{children:"Z"})]})]})]})]})]})]})]})}})(),(0,s.jsxs)("div",{className:"border-t border-slate-100 pt-6 mt-6",children:[(0,s.jsx)("h4",{className:"text-sm font-bold text-slate-500 uppercase tracking-wider mb-4",children:"Raccourcis Généraux"}),(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-4 text-xs text-slate-600",children:[(0,s.jsxs)("div",{className:"flex justify-between",children:[(0,s.jsx)("span",{children:"Sauvegarde Automatique"}),(0,s.jsx)("span",{className:"font-mono text-slate-400",children:"Permanente"})]}),(0,s.jsxs)("div",{className:"flex justify-between",children:[(0,s.jsx)("span",{children:"Menu Latéral"}),(0,s.jsx)("span",{children:"Clic sur le burger"})]})]})]})]}),(0,s.jsx)("div",{className:"p-4 border-t border-slate-200 bg-slate-50 flex justify-end",children:(0,s.jsx)("button",{onClick:t,className:"px-6 py-2 bg-slate-800 text-white rounded-lg hover:bg-slate-900 transition-colors font-medium",children:"Fermer"})})]})}):null;var F=e.i(44026);function _({children:e}){let n=(0,l.useParams)(),d=(0,l.useRouter)(),o=(0,l.usePathname)(),c=n.id,{user:h,logout:m,incrementUsage:u,loading:p}=(0,a.useAuthContext)(),{projects:b,setCurrentProjectId:g,updateProject:f,updateChapter:j,addChapter:v}=(0,r.useProjects)(h),{chatHistory:y,isGenerating:N,sendMessage:w}=(()=>{let[e,s]=(0,t.useState)([]),[l,a]=(0,t.useState)(!1);return{chatHistory:e,isGenerating:l,sendMessage:async(e,t,l,r,n)=>{let d={id:Date.now().toString(),role:"user",text:l};s(e=>[...e,d]),a(!0);try{let a=await i.default.ai.generate(e,"global"===t?"":t,l,r);n();let d={id:(Date.now()+1).toString(),role:"model",text:a.text,responseType:a.type};s(e=>[...e,d])}catch{s(e=>[...e,{id:Date.now().toString(),role:"model",text:"Désolé, une erreur est survenue lors de la génération."}])}finally{a(!1)}}}})(),[k,C]=(0,t.useState)(""),[z,M]=(0,t.useState)(!1),[A,$]=(0,t.useState)(!1),S=o.endsWith("/world")?"world_building":o.endsWith("/ideas")?"ideas":o.endsWith("/workflow")?"workflow":o.endsWith("/settings")?"settings":"write";(0,t.useEffect)(()=>{c&&g(c)},[c,g]),(0,t.useEffect)(()=>{p||h||d.replace("/login")},[h,p,d]);let P=b.find(e=>e.id===c);return((0,t.useEffect)(()=>{!P||k&&P.chapters.some(e=>e.id===k)||C(P.chapters[0]?.id||"")},[P,k]),p||!h)?(0,s.jsxs)("div",{className:"h-screen w-full flex flex-col items-center justify-center bg-slate-900 text-white",children:[(0,s.jsx)(F.Loader2,{className:"animate-spin text-blue-500 mb-4",size:48}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(x.BookOpen,{className:"text-blue-500",size:20}),(0,s.jsx)("span",{className:"text-lg font-bold",children:"PlumeIA"})]})]}):P?(0,s.jsxs)(I,{project:P,user:h,viewMode:S,currentChapterId:k,chatHistory:y,isGenerating:N,onViewModeChange:e=>{let s=`/project/${c}`;switch(e){case"write":default:d.push(s);break;case"world_building":d.push(`${s}/world`);break;case"ideas":d.push(`${s}/ideas`);break;case"workflow":d.push(`${s}/workflow`);break;case"settings":d.push(`${s}/settings`);break;case"dashboard":d.push("/dashboard")}},onChapterSelect:e=>{C(e),d.push(`/project/${c}`)},onUpdateProject:e=>f(c,e),onAddChapter:async()=>{let e=await v(c,{});e&&(C(e),d.push(`/project/${c}`))},onDeleteChapter:e=>{if(P.chapters.length>1){let s=P.chapters.filter(s=>s.id!==e);f(c,{chapters:s}),k===e&&C(s[0].id)}},onLogout:()=>{m(),d.push("/")},onSendMessage:e=>{P&&h&&w(P,"global",e,h,u)},onInsertText:()=>{},onOpenExport:()=>M(!0),onOpenHelp:()=>$(!0),children:[(0,s.jsx)(V,{isOpen:z,onClose:()=>M(!1),project:P,onPrint:()=>{}}),(0,s.jsx)(H,{isOpen:A,onClose:()=>$(!1),viewMode:S}),t.default.cloneElement(e,{project:P,user:h,projectId:c,currentChapterId:k,setCurrentChapterId:C,updateProject:e=>f(c,e),updateChapter:(e,s)=>j(c,e,s),incrementUsage:u})]}):(0,s.jsxs)("div",{className:"h-screen w-full flex flex-col items-center justify-center bg-slate-900 text-white",children:[(0,s.jsx)(F.Loader2,{className:"animate-spin text-blue-500 mb-4",size:48}),(0,s.jsx)("p",{className:"text-slate-400",children:"Chargement du projet..."})]})}e.s(["default",()=>_],34779)}]); \ No newline at end of file diff --git a/.next/static/chunks/2e1d4ab52d87fc3b.js b/.next/static/chunks/2e1d4ab52d87fc3b.js new file mode 100644 index 0000000..724cb0c --- /dev/null +++ b/.next/static/chunks/2e1d4ab52d87fc3b.js @@ -0,0 +1,39 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,34779,e=>{"use strict";var s=e.i(30064),t=e.i(59760),l=e.i(12856),a=e.i(18404),r=e.i(24224),i=e.i(8011),n=e.i(4301),d=e.i(46202),o=e.i(78445);let c=(0,o.default)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);var x=e.i(74080),h=e.i(62746);let m=(0,o.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]),u=(0,o.default)("brain-circuit",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M9 13a4.5 4.5 0 0 0 3-4",key:"10igwf"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M12 13h4",key:"1ku699"}],["path",{d:"M12 18h6a2 2 0 0 1 2 2v1",key:"105ag5"}],["path",{d:"M12 8h8",key:"1lhi5i"}],["path",{d:"M16 8V5a2 2 0 0 1 2-2",key:"u6izg6"}],["circle",{cx:"16",cy:"13",r:".5",key:"ry7gng"}],["circle",{cx:"18",cy:"3",r:".5",key:"1aiba7"}],["circle",{cx:"20",cy:"21",r:".5",key:"yhc1fs"}],["circle",{cx:"20",cy:"8",r:".5",key:"1e43v0"}]]);var p=e.i(30914);let b=({chatHistory:e,onSendMessage:l,onInsertText:a,selectedText:r,isGenerating:i,usage:n})=>{let[o,b]=(0,t.useState)(""),g=(0,t.useRef)(null);(0,t.useEffect)(()=>{g.current?.scrollIntoView({behavior:"smooth"})},[e,i]);let j=!!n&&n.aiActionsCurrent>=n.aiActionsLimit;return(0,s.jsxs)("div",{className:"flex flex-col h-full bg-white border-l border-slate-200 shadow-xl w-80 lg:w-96",children:[(0,s.jsxs)("div",{className:"p-4 bg-indigo-600 text-white flex items-center justify-between shadow-md",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(d.Sparkles,{size:20,className:"animate-pulse"}),(0,s.jsx)("h3",{className:"font-bold tracking-tight",children:"Assistant IA"})]}),n&&(0,s.jsxs)("div",{className:"bg-indigo-900/50 px-2 py-1 rounded text-[10px] font-black flex items-center gap-1",children:[(0,s.jsx)(p.Zap,{size:10,fill:"currentColor"})," ",n.aiActionsCurrent," / ",999999===n.aiActionsLimit?"∞":n.aiActionsLimit]})]}),r&&(0,s.jsxs)("div",{className:"bg-indigo-50 p-3 border-b border-indigo-100 text-xs text-indigo-800",children:[(0,s.jsxs)("div",{className:"font-bold flex items-center gap-1 mb-1",children:[(0,s.jsx)(h.BookOpen,{size:12})," Contexte :"]}),(0,s.jsxs)("div",{className:"italic truncate opacity-80",children:['"',r.substring(0,60),'..."']})]}),(0,s.jsxs)("div",{className:"flex-1 overflow-y-auto p-4 space-y-4 bg-slate-50",children:[0===e.length&&(0,s.jsxs)("div",{className:"text-center text-slate-400 mt-10",children:[(0,s.jsx)(m,{size:48,className:"mx-auto mb-2 opacity-50"}),(0,s.jsx)("p",{className:"text-sm",children:"Bonjour ! Comment puis-je vous aider aujourd'hui ?"}),j&&(0,s.jsx)("div",{className:"mt-4 p-4 bg-red-50 border border-red-100 rounded-xl text-red-600 text-xs font-bold uppercase animate-pulse",children:"Limite atteinte ! Améliorez votre plan."})]}),e.map(e=>(0,s.jsx)("div",{className:`flex flex-col ${"user"===e.role?"items-end":"items-start"}`,children:(0,s.jsxs)("div",{className:`max-w-[85%] rounded-2xl p-4 text-sm shadow-sm ${"user"===e.role?"bg-indigo-600 text-white rounded-br-none":"bg-white text-slate-700 border border-slate-100 rounded-bl-none"}`,children:["model"===e.role&&"reflection"===e.responseType&&(0,s.jsxs)("div",{className:"flex items-center gap-1.5 text-[10px] font-black text-amber-600 mb-1.5 uppercase tracking-wide",children:[(0,s.jsx)(u,{size:12})," Réflexion"]}),(0,s.jsx)("div",{className:"whitespace-pre-wrap leading-relaxed",children:e.text})]})},e.id)),i&&(0,s.jsx)("div",{className:"flex justify-start",children:(0,s.jsxs)("div",{className:"bg-white p-3 rounded-2xl rounded-bl-none shadow-sm border border-slate-100 flex items-center gap-2 text-xs text-slate-500",children:[(0,s.jsx)(x.RefreshCw,{size:14,className:"animate-spin"})," L'IA travaille..."]})}),(0,s.jsx)("div",{ref:g})]}),(0,s.jsx)("div",{className:"p-4 bg-white border-t border-slate-200",children:(0,s.jsxs)("form",{onSubmit:e=>{e.preventDefault(),o.trim()&&!i&&(l(o),b(""))},className:"relative",children:[(0,s.jsx)("input",{type:"text",value:o,onChange:e=>b(e.target.value),placeholder:j?"Limite atteinte...":"Votre message...",className:"w-full pl-4 pr-12 py-3 bg-slate-100 rounded-2xl text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-shadow disabled:opacity-50",disabled:i||j}),(0,s.jsx)("button",{type:"submit",disabled:!o.trim()||i||j,className:"absolute right-1.5 top-1.5 p-2 bg-indigo-600 text-white rounded-xl hover:bg-indigo-700 disabled:opacity-50 transition-colors shadow-md",children:(0,s.jsx)(c,{size:18})})]})})]})};var g=e.i(43331);let j=(0,o.default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);var f=e.i(12155),v=e.i(12100),y=e.i(36268),N=e.i(46553);let w=(0,o.default)("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]);var k=e.i(30103);let C=(0,o.default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),z=(0,o.default)("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]),M=(0,o.default)("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var A=e.i(86180);let $=(0,o.default)("layout-dashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);var P=e.i(50147),S=e.i(22508),I=e.i(4917);let L=e=>{let{project:l,user:a,viewMode:r,currentChapterId:i,children:n}=e,[d,o]=(0,t.useState)(!0),[c,x]=(0,t.useState)(!0),h=l.chapters.find(e=>e.id===i);return(0,s.jsxs)("div",{className:`flex h-screen overflow-hidden no-print ${"dark"===a.preferences.theme?"bg-slate-900 text-white":"sepia"===a.preferences.theme?"bg-[#f4ecd8]":"bg-[#eef2ff]"}`,children:[(0,s.jsxs)("aside",{className:`${d?"w-64":"w-0"} bg-slate-900 text-slate-300 flex-shrink-0 transition-all duration-300 overflow-hidden flex flex-col border-r border-slate-800`,children:[(0,s.jsxs)("div",{className:"p-4 border-b border-slate-700",children:[(0,s.jsxs)("h1",{className:"text-white font-bold flex items-center gap-2 mb-4 cursor-pointer",onClick:()=>e.onViewModeChange("dashboard"),children:[(0,s.jsx)(g.Book,{className:"text-blue-400"})," PlumeIA"]}),(0,s.jsx)("input",{type:"text",value:l.title,onChange:s=>e.onUpdateProject({title:s.target.value}),className:"w-full bg-transparent font-serif font-bold text-white text-lg mb-1 focus:outline-none focus:border-b focus:border-blue-500 truncate",placeholder:"Titre du livre"}),(0,s.jsxs)("button",{onClick:()=>e.onViewModeChange("dashboard"),className:"w-full flex items-center gap-2 text-xs hover:bg-slate-800 p-2 rounded transition-colors text-slate-400",children:[(0,s.jsx)($,{size:14})," Retour au Dashboard"]})]}),(0,s.jsxs)("div",{className:"flex-1 overflow-y-auto py-2",children:[(0,s.jsxs)("div",{className:"px-4 py-2 text-xs font-semibold text-slate-500 uppercase flex justify-between items-center",children:["Chapitres ",(0,s.jsx)("button",{onClick:e.onAddChapter,className:"hover:text-blue-400",children:(0,s.jsx)(S.Plus,{size:14})})]}),l.chapters.map((t,l)=>(0,s.jsxs)("div",{className:"group relative",children:[(0,s.jsxs)("button",{onClick:()=>e.onChapterSelect(t.id),className:`w-full text-left px-4 py-2 text-sm truncate transition-colors ${i===t.id&&"write"===r?"bg-blue-900 text-white border-r-2 border-blue-400":"hover:bg-slate-800"}`,children:[l+1,". ",t.title]}),(0,s.jsx)("button",{onClick:()=>e.onDeleteChapter(t.id),className:"absolute right-2 top-2 text-slate-600 hover:text-red-400 opacity-0 group-hover:opacity-100",children:(0,s.jsx)(I.Trash2,{size:14})})]},t.id)),(0,s.jsx)("div",{className:"mt-6 px-4 py-2 text-xs font-semibold text-slate-500 uppercase",children:"Outils & Bible"}),(0,s.jsxs)("button",{onClick:()=>e.onViewModeChange("write"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"write"===r?"bg-blue-900 text-white":"hover:bg-slate-800"}`,children:[(0,s.jsx)(j,{size:16})," Retour à la rédaction"]}),(0,s.jsxs)("button",{onClick:()=>e.onViewModeChange("world_building"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"world_building"===r?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,s.jsx)(f.Globe,{size:16})," Bible du Monde"]}),(0,s.jsxs)("button",{onClick:()=>e.onViewModeChange("workflow"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"workflow"===r?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,s.jsx)(v.GitGraph,{size:16})," Workflow"]}),(0,s.jsxs)("button",{onClick:()=>e.onViewModeChange("ideas"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"ideas"===r?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,s.jsx)(y.Lightbulb,{size:16})," Boîte à Idées"]}),(0,s.jsxs)("button",{onClick:()=>e.onViewModeChange("settings"),className:`w-full text-left px-4 py-2 text-sm flex items-center gap-2 ${"settings"===r?"bg-indigo-900 text-white":"hover:bg-slate-800"}`,children:[(0,s.jsx)(N.Settings,{size:16})," Paramètres"]})]}),(0,s.jsxs)("div",{className:"p-4 border-t border-slate-800",children:[(0,s.jsxs)("div",{className:"bg-slate-800 rounded-lg p-3 mb-4",children:[(0,s.jsxs)("div",{className:"flex justify-between text-[10px] text-slate-400 uppercase font-bold mb-1",children:[(0,s.jsx)("span",{children:"Actions IA"}),(0,s.jsxs)("span",{children:[a.usage.aiActionsCurrent," / ",999999===a.usage.aiActionsLimit?"∞":a.usage.aiActionsLimit]})]}),(0,s.jsx)("div",{className:"h-1.5 w-full bg-slate-700 rounded-full overflow-hidden",children:(0,s.jsx)("div",{className:"h-full bg-blue-500",style:{width:`${Math.min(100,a.usage.aiActionsCurrent/a.usage.aiActionsLimit*100)}%`}})})]}),(0,s.jsxs)("button",{onClick:()=>e.onViewModeChange("profile"),className:"w-full flex items-center gap-2 px-3 py-2 text-xs text-slate-400 hover:bg-slate-800 rounded mb-2",children:[(0,s.jsx)(P.User,{size:14})," Mon Compte"]}),(0,s.jsxs)("button",{onClick:e.onLogout,className:"w-full flex items-center gap-2 px-3 py-2 text-xs text-red-400 hover:bg-red-900/20 rounded",children:[(0,s.jsx)(A.LogOut,{size:14})," Déconnexion"]})]})]}),(0,s.jsxs)("div",{className:"flex-1 flex flex-col h-full overflow-hidden",children:[(0,s.jsxs)("header",{className:"h-14 bg-white border-b border-slate-200 flex items-center justify-between px-4 shadow-sm z-10 text-slate-800",children:[(0,s.jsxs)("div",{className:"flex items-center gap-4",children:[(0,s.jsx)("button",{onClick:()=>o(!d),className:"text-slate-500 hover:text-slate-800",children:(0,s.jsx)(w,{size:20})}),"write"===r?(0,s.jsx)("input",{type:"text",value:h?.title||"",onChange:s=>e.onUpdateProject({chapters:l.chapters.map(e=>e.id===i?{...e,title:s.target.value}:e)}),className:"font-serif font-bold text-lg bg-transparent border-b border-transparent focus:border-blue-500 focus:outline-none"}):(0,s.jsx)("span",{className:"font-bold uppercase tracking-widest text-xs",children:r})]}),(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsxs)("button",{onClick:e.onOpenExport,className:"bg-blue-600 text-white px-4 py-1.5 rounded-lg text-sm font-medium hover:bg-blue-700 flex items-center gap-2",children:[(0,s.jsx)(z,{size:16})," Publier"]}),(0,s.jsx)("button",{onClick:e.onOpenHelp,className:"p-2 text-slate-400 hover:text-blue-600 rounded-full",children:(0,s.jsx)(M,{size:20})}),(0,s.jsx)("button",{onClick:()=>x(!c),className:`p-2 rounded-full ${c?"bg-indigo-100 text-indigo-600":"text-slate-500 hover:bg-slate-100"}`,children:c?(0,s.jsx)(k.ChevronRight,{size:20}):(0,s.jsx)(C,{size:20})})]})]}),(0,s.jsx)("main",{className:"flex-1 overflow-hidden relative",children:n})]}),(0,s.jsx)("div",{className:`${c?"w-80 lg:w-96":"w-0"} transition-all duration-300 flex-shrink-0 h-full border-l border-slate-200 relative`,children:c&&(0,s.jsx)(b,{chatHistory:e.chatHistory,onSendMessage:e.onSendMessage,onInsertText:e.onInsertText,selectedText:"",isGenerating:e.isGenerating,usage:a.usage})})]})},T=(0,o.default)("printer",[["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",key:"143wyd"}],["path",{d:"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6",key:"1itne7"}],["rect",{x:"6",y:"14",width:"12",height:"8",rx:"1",key:"1ue0tg"}]]);var B=e.i(59111);let V=(0,o.default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]),E=(0,o.default)("file-braces",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"1oajmo"}],["path",{d:"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"mpwhp6"}]]),R=({isOpen:e,onClose:l,project:a,onPrint:r})=>{let[i,n]=(0,t.useState)("pdf"),[d,o]=(0,t.useState)("A4"),[c,x]=(0,t.useState)(!0),[h,m]=(0,t.useState)(!0);if(!e)return null;let u=()=>{let e=` + + + + + ${a.title} + + + + `;return c&&(e+=` +
+

${a.title}

+

${a.author}

+
+ `),h&&(e+=`

Table des Mati\xe8res

    `,a.chapters.forEach((s,t)=>{e+=`
  • ${s.title}
  • `}),e+="
"),a.chapters.forEach((s,t)=>{e+=` +
+

${s.title}

+ ${s.content} +
+ `}),e+=""},p=(e,s)=>{let t=URL.createObjectURL(e),a=document.createElement("a");a.href=t,a.download=s,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(t),l()};return(0,s.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm animate-in fade-in duration-200 no-print",children:(0,s.jsxs)("div",{className:"bg-white rounded-xl shadow-2xl w-[600px] overflow-hidden flex flex-col max-h-[90vh]",children:[(0,s.jsxs)("div",{className:"bg-slate-900 text-white p-6 flex justify-between items-center",children:[(0,s.jsxs)("div",{children:[(0,s.jsxs)("h2",{className:"text-xl font-bold flex items-center gap-2",children:[(0,s.jsx)(V,{size:24})," Exporter le livre"]}),(0,s.jsx)("p",{className:"text-slate-400 text-sm mt-1",children:a.title})]}),(0,s.jsx)("button",{onClick:l,className:"text-slate-400 hover:text-white transition-colors",children:(0,s.jsx)(B.X,{size:24})})]}),(0,s.jsxs)("div",{className:"p-6 overflow-y-auto flex-1",children:[(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-4 mb-8",children:[(0,s.jsxs)("button",{onClick:()=>n("pdf"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"pdf"===i?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,s.jsx)(T,{size:32}),(0,s.jsx)("div",{className:"font-semibold",children:"PDF (Impression)"})]}),(0,s.jsxs)("button",{onClick:()=>n("word"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"word"===i?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,s.jsx)(j,{size:32}),(0,s.jsx)("div",{className:"font-semibold",children:"Microsoft Word"})]}),(0,s.jsxs)("button",{onClick:()=>n("epub"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"epub"===i?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,s.jsx)(g.Book,{size:32}),(0,s.jsx)("div",{className:"font-semibold",children:"EPUB / Ebook"})]}),(0,s.jsxs)("button",{onClick:()=>n("markdown"),className:`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${"markdown"===i?"border-blue-600 bg-blue-50 text-blue-800":"border-slate-200 hover:border-slate-300 text-slate-600"}`,children:[(0,s.jsx)(E,{size:32}),(0,s.jsx)("div",{className:"font-semibold",children:"Markdown"})]})]}),(0,s.jsxs)("div",{className:"bg-slate-50 rounded-lg p-5 border border-slate-200",children:[(0,s.jsxs)("h3",{className:"text-sm font-bold text-slate-500 uppercase tracking-wider mb-4",children:["Paramètres d'exportation (",i.toUpperCase(),")"]}),(0,s.jsxs)("div",{className:"space-y-4",children:["pdf"===i&&(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsxs)("div",{className:"flex flex-col",children:[(0,s.jsx)("label",{className:"text-slate-700 font-medium",children:"Format du papier"}),(0,s.jsx)("span",{className:"text-xs text-slate-400",children:"Géré par l'imprimante (A4, A5...)"})]}),(0,s.jsx)("div",{className:"bg-slate-200 px-3 py-1 rounded text-xs font-mono text-slate-600",children:"Auto"})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("label",{className:"text-slate-700 font-medium cursor-pointer",htmlFor:"cover",children:"Inclure la page de titre"}),(0,s.jsx)("input",{id:"cover",type:"checkbox",checked:c,onChange:e=>x(e.target.checked),className:"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500"})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("label",{className:"text-slate-700 font-medium cursor-pointer",htmlFor:"toc",children:"Générer la table des matières"}),(0,s.jsx)("input",{id:"toc",type:"checkbox",checked:h,onChange:e=>m(e.target.checked),className:"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500"})]}),"epub"===i&&(0,s.jsx)("p",{className:"text-xs text-amber-600 bg-amber-50 p-2 rounded mt-2",children:"Note: L'export EPUB génère un fichier XHTML optimisé prêt à être converti par Calibre ou Kindle Previewer."})]})]})]}),(0,s.jsxs)("div",{className:"p-4 border-t border-slate-200 bg-slate-50 flex justify-end gap-3",children:[(0,s.jsx)("button",{onClick:l,className:"px-5 py-2 text-slate-600 hover:bg-slate-200 rounded-lg font-medium transition-colors",children:"Annuler"}),(0,s.jsxs)("button",{onClick:()=>{let e=a.title.replace(/[^a-z0-9]/gi,"_").toLowerCase();if("pdf"===i)r({includeCover:c,includeTOC:h});else if("word"===i)p(new Blob(["\uFEFF",u()],{type:"application/msword"}),`${e}.doc`);else if("epub"===i)p(new Blob([u()],{type:"application/xhtml+xml"}),`${e}.xhtml`);else if("markdown"===i){let s=`# ${a.title} +By ${a.author} + +`;a.chapters.forEach(e=>{let t=e.content.replace(/<[^>]+>/g,"\n");s+=`## ${e.title} + +${t} + +--- + +`}),p(new Blob([s],{type:"text/markdown"}),`${e}.md`)}},className:"px-6 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg font-medium shadow-md transition-all flex items-center gap-2",children:["pdf"===i?(0,s.jsx)(T,{size:18}):(0,s.jsx)(V,{size:18}),"pdf"===i?"Imprimer / Enregistrer PDF":`T\xe9l\xe9charger .${"word"===i?"doc":"epub"===i?"xhtml":"md"}`]})]})]})})},D=(0,o.default)("keyboard",[["path",{d:"M10 8h.01",key:"1r9ogq"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M14 8h.01",key:"1primd"}],["path",{d:"M16 12h.01",key:"1l6xoz"}],["path",{d:"M18 8h.01",key:"emo2bl"}],["path",{d:"M6 8h.01",key:"x9i8wu"}],["path",{d:"M7 16h10",key:"wp8him"}],["path",{d:"M8 12h.01",key:"czm47f"}],["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}]]);var U=e.i(97794),q=e.i(15536);let O=(0,o.default)("command",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]);var G=e.i(98867);let H=({children:e})=>(0,s.jsx)("kbd",{className:"px-2 py-1 text-xs font-semibold text-slate-800 bg-slate-100 border border-slate-300 rounded-md shadow-[0px_2px_0px_0px_rgba(203,213,225,1)] mx-1 font-mono",children:e}),F=({isOpen:e,onClose:t,viewMode:l})=>e?(0,s.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm animate-in fade-in duration-200",children:(0,s.jsxs)("div",{className:"bg-white rounded-xl shadow-2xl w-[800px] max-h-[90vh] flex flex-col overflow-hidden",children:[(0,s.jsxs)("div",{className:"bg-slate-900 text-white p-6 flex justify-between items-center shrink-0",children:[(0,s.jsxs)("div",{children:[(0,s.jsxs)("h2",{className:"text-xl font-bold flex items-center gap-2",children:[(0,s.jsx)(h.BookOpen,{size:24,className:"text-blue-400"})," Aide : ","workflow"===l?"Workflow & Dialogues":"world_building"===l?"Bible du Monde":"settings"===l?"Paramètres":"ideas"===l?"Boîte à Idées":"Éditeur & IA"]}),(0,s.jsx)("p",{className:"text-slate-400 text-sm mt-1",children:"Astuces pour l'écran actuel."})]}),(0,s.jsx)("button",{onClick:t,className:"text-slate-400 hover:text-white transition-colors p-2 hover:bg-slate-800 rounded-full",children:(0,s.jsx)(B.X,{size:24})})]}),(0,s.jsxs)("div",{className:"overflow-y-auto p-8",children:[(()=>{switch(l){case"ideas":return(0,s.jsxs)("section",{className:"mb-8",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-yellow-600 flex items-center gap-2 border-b border-yellow-100 pb-2 mb-4",children:[(0,s.jsx)(y.Lightbulb,{size:20})," Boîte à Idées & Tâches"]}),(0,s.jsxs)("div",{className:"text-sm text-slate-600 space-y-4",children:[(0,s.jsx)("p",{children:"Un espace de type Kanban pour ne rien oublier. Utilisez-le pour noter des idées fugaces, planifier des recherches ou lister les scènes à écrire."}),(0,s.jsxs)("ul",{className:"space-y-3",children:[(0,s.jsxs)("li",{className:"flex items-start gap-2",children:[(0,s.jsx)(U.MousePointerClick,{size:16,className:"mt-0.5 shrink-0"}),(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"font-semibold text-slate-800",children:"Glisser-Déposer :"})," Déplacez les cartes d'une colonne à l'autre (À faire → En cours → Validé) pour suivre votre progression."]})]}),(0,s.jsxs)("li",{className:"flex items-start gap-2",children:[(0,s.jsx)(G.Layout,{size:16,className:"mt-0.5 shrink-0"}),(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"font-semibold text-slate-800",children:"Catégories :"})," Utilisez les catégories (Intrigue, Personnage, Recherche) pour filtrer visuellement vos tâches grâce aux codes couleurs."]})]})]})]})]});case"workflow":return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("section",{className:"mb-8",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-indigo-700 flex items-center gap-2 border-b border-indigo-100 pb-2 mb-4",children:[(0,s.jsx)(v.GitGraph,{size:20})," Organisation Narrative"]}),(0,s.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 text-sm text-slate-600",children:(0,s.jsxs)("ul",{className:"space-y-3",children:[(0,s.jsxs)("li",{className:"flex items-start gap-2",children:[(0,s.jsx)(U.MousePointerClick,{size:16,className:"mt-0.5 shrink-0"}),(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"font-semibold text-slate-800",children:"Sélection :"})," ",(0,s.jsx)(H,{children:"Ctrl"})," + Clic pour sélectionner plusieurs cartes. Glissez pour déplacer tout un groupe."]})]}),(0,s.jsxs)("li",{className:"flex items-start gap-2",children:[(0,s.jsx)(O,{size:16,className:"mt-0.5 shrink-0"}),(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"font-semibold text-slate-800",children:"Copier / Coller :"})," ",(0,s.jsx)(H,{children:"Ctrl"})," + ",(0,s.jsx)(H,{children:"C"})," pour copier les nœuds sélectionnés, ",(0,s.jsx)(H,{children:"Ctrl"})," + ",(0,s.jsx)(H,{children:"V"})," pour coller."]})]}),(0,s.jsxs)("li",{className:"flex items-start gap-2",children:[(0,s.jsx)(G.Layout,{size:16,className:"mt-0.5 shrink-0"}),(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"font-semibold text-slate-800",children:"Connexions :"})," Tirez depuis le cercle à droite d'une carte pour lier les événements."]})]})]})})]}),(0,s.jsxs)("section",{className:"bg-blue-50 p-6 rounded-xl border border-blue-100 mb-8",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-blue-800 flex items-center gap-2 border-b border-blue-200 pb-2 mb-4",children:[(0,s.jsx)(q.MessageCircle,{size:20})," Mode Dialogue (Workflow)"]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 text-sm",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"font-semibold text-slate-800 mb-1",children:"Écriture Rapide"}),(0,s.jsxs)("p",{className:"text-slate-600 leading-relaxed mb-3",children:["Tapez un nom et ",(0,s.jsx)(H,{children:"Entrée"})," : le formatage ",(0,s.jsx)("code",{children:"Nom: "})," s'ajoute seul."]}),(0,s.jsxs)("p",{className:"text-slate-600 leading-relaxed",children:["Dans un dialogue, ",(0,s.jsx)(H,{children:"Entrée"})," change de ligne et ",(0,s.jsx)("strong",{children:"devine le prochain interlocuteur"})," automatiquement."]})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"font-semibold text-slate-800 mb-1",children:"Rotation & Insertion"}),(0,s.jsxs)("p",{className:"text-slate-600 leading-relaxed mb-3",children:[(0,s.jsx)(H,{children:"Tab"})," permute instantanément entre les personnages présents dans la scène."]}),(0,s.jsxs)("p",{className:"text-slate-600 leading-relaxed",children:["Utilisez ",(0,s.jsx)(H,{children:"@"})," pour insérer un personnage, ",(0,s.jsx)(H,{children:"#"})," pour un lieu."]})]})]})]})]});case"world_building":return(0,s.jsxs)("section",{className:"mb-8",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-green-700 flex items-center gap-2 border-b border-green-100 pb-2 mb-4",children:[(0,s.jsx)(f.Globe,{size:20})," Bible du Monde"]}),(0,s.jsxs)("div",{className:"text-sm text-slate-600 space-y-4",children:[(0,s.jsxs)("p",{children:["La bible du monde permet de centraliser toutes les informations sur vos personnages et lieux. Ces informations sont ",(0,s.jsx)("strong",{children:"lues par l'IA"})," pour assurer la cohérence de l'histoire."]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 mt-4",children:[(0,s.jsxs)("div",{className:"bg-slate-50 p-4 rounded-lg",children:[(0,s.jsx)("h4",{className:"font-bold text-slate-800 mb-2",children:"Modèles Personnalisés"}),(0,s.jsx)("p",{children:'Cliquez sur le bouton "Modèles" pour ajouter des champs spécifiques (ex: "Type de Magie", "Allégeance") à tous vos personnages ou lieux.'})]}),(0,s.jsxs)("div",{className:"bg-slate-50 p-4 rounded-lg",children:[(0,s.jsx)("h4",{className:"font-bold text-slate-800 mb-2",children:"Contexte Automatique"}),(0,s.jsx)("p",{children:"Le champ \"Contexte Narratif\" se remplit automatiquement au fur et à mesure que vous écrivez votre histoire et que l'IA détecte l'évolution des personnages."})]})]})]})]});case"settings":return(0,s.jsxs)("section",{className:"mb-8",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-slate-700 flex items-center gap-2 border-b border-slate-100 pb-2 mb-4",children:[(0,s.jsx)(N.Settings,{size:20})," Paramètres du Livre"]}),(0,s.jsx)("p",{className:"text-sm text-slate-600 mb-4",children:'Ces réglages sont cruciaux pour l\'Assistant IA. Ils définissent le "ton" de toutes les générations de texte.'}),(0,s.jsxs)("ul",{className:"list-disc pl-5 space-y-2 text-sm text-slate-600",children:[(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{children:"Style Guide :"}),' Soyez précis sur le style (ex: "phrases courtes", "beaucoup de métaphores", "humour noir").']}),(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{children:"POV (Point de Vue) :"}),' Définit si l\'IA doit écrire en "Je" ou "Il/Elle".']})]})]});default:return(0,s.jsxs)("section",{className:"mb-8",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-amber-600 flex items-center gap-2 border-b border-amber-100 pb-2 mb-4",children:[(0,s.jsx)(d.Sparkles,{size:20})," Éditeur & Assistant IA"]}),(0,s.jsxs)("div",{className:"space-y-4 text-sm text-slate-600",children:[(0,s.jsxs)("div",{className:"bg-amber-50 p-4 rounded-lg border border-amber-100",children:[(0,s.jsx)("h4",{className:"font-bold text-amber-800 mb-2",children:"Menu Contextuel Intelligent"}),(0,s.jsxs)("p",{children:["Sélectionnez du texte et faites un ",(0,s.jsx)("strong",{children:"clic droit"})," pour :"]}),(0,s.jsxs)("ul",{className:"grid grid-cols-2 gap-2 mt-2 pl-4",children:[(0,s.jsxs)("li",{className:"flex items-center gap-2",children:[(0,s.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Corriger l'orthographe"]}),(0,s.jsxs)("li",{className:"flex items-center gap-2",children:[(0,s.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Reformuler / Améliorer"]}),(0,s.jsxs)("li",{className:"flex items-center gap-2",children:[(0,s.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Développer (Show, don't tell)"]}),(0,s.jsxs)("li",{className:"flex items-center gap-2",children:[(0,s.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-amber-400"}),"Continuer l'écriture"]})]})]}),(0,s.jsxs)("p",{children:[(0,s.jsx)("span",{className:"font-semibold text-slate-800",children:"Historique des versions :"})," Activez la marge de droite (icône horloge) pour voir toutes les interventions de l'IA et revenir en arrière si nécessaire."]}),(0,s.jsxs)("p",{children:[(0,s.jsx)("span",{className:"font-semibold text-slate-800",children:"Chat Latéral :"})," Posez des questions sur votre histoire, demandez des résumés ou des idées de rebondissements. L'IA connaît le contexte de vos chapitres précédents et de vos fiches personnages."]}),(0,s.jsxs)("div",{className:"mt-6 border-t border-slate-100 pt-4",children:[(0,s.jsxs)("h4",{className:"font-bold text-slate-700 mb-3 flex items-center gap-2",children:[(0,s.jsx)(D,{size:16})," Raccourcis Clavier (Éditeur)"]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 bg-slate-50 p-4 rounded-lg border border-slate-100",children:[(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,s.jsx)("span",{className:"text-slate-600",children:"Mettre en Gras"}),(0,s.jsxs)("span",{children:[(0,s.jsx)(H,{children:"Ctrl"})," + ",(0,s.jsx)(H,{children:"B"})]})]}),(0,s.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,s.jsx)("span",{className:"text-slate-600",children:"Mettre en Italique"}),(0,s.jsxs)("span",{children:[(0,s.jsx)(H,{children:"Ctrl"})," + ",(0,s.jsx)(H,{children:"I"})]})]}),(0,s.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,s.jsx)("span",{className:"text-slate-600",children:"Souligner"}),(0,s.jsxs)("span",{children:[(0,s.jsx)(H,{children:"Ctrl"})," + ",(0,s.jsx)(H,{children:"U"})]})]})]}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,s.jsx)("span",{className:"text-slate-600",children:"Tout sélectionner"}),(0,s.jsxs)("span",{children:[(0,s.jsx)(H,{children:"Ctrl"})," + ",(0,s.jsx)(H,{children:"A"})]})]}),(0,s.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,s.jsx)("span",{className:"text-slate-600",children:"Annuler"}),(0,s.jsxs)("span",{children:[(0,s.jsx)(H,{children:"Ctrl"})," + ",(0,s.jsx)(H,{children:"Z"})]})]}),(0,s.jsxs)("div",{className:"flex justify-between items-center text-xs",children:[(0,s.jsx)("span",{className:"text-slate-600",children:"Rétablir"}),(0,s.jsxs)("span",{children:[(0,s.jsx)(H,{children:"Ctrl"})," + ",(0,s.jsx)(H,{children:"Shift"})," + ",(0,s.jsx)(H,{children:"Z"})]})]})]})]})]})]})]})}})(),(0,s.jsxs)("div",{className:"border-t border-slate-100 pt-6 mt-6",children:[(0,s.jsx)("h4",{className:"text-sm font-bold text-slate-500 uppercase tracking-wider mb-4",children:"Raccourcis Généraux"}),(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-4 text-xs text-slate-600",children:[(0,s.jsxs)("div",{className:"flex justify-between",children:[(0,s.jsx)("span",{children:"Sauvegarde Automatique"}),(0,s.jsx)("span",{className:"font-mono text-slate-400",children:"Permanente"})]}),(0,s.jsxs)("div",{className:"flex justify-between",children:[(0,s.jsx)("span",{children:"Menu Latéral"}),(0,s.jsx)("span",{children:"Clic sur le burger"})]})]})]})]}),(0,s.jsx)("div",{className:"p-4 border-t border-slate-200 bg-slate-50 flex justify-end",children:(0,s.jsx)("button",{onClick:t,className:"px-6 py-2 bg-slate-800 text-white rounded-lg hover:bg-slate-900 transition-colors font-medium",children:"Fermer"})})]})}):null;var _=e.i(44026);function W({children:e}){let d=(0,l.useParams)(),o=(0,l.useRouter)(),c=(0,l.usePathname)(),x=d.id,{user:m,logout:u,incrementUsage:p,loading:b}=(0,a.useAuthContext)(),{projects:g,setCurrentProjectId:j,updateProject:f,updateChapter:v,addChapter:y}=(0,i.useProjects)(m),{chatHistory:N,isGenerating:w,sendMessage:k}=(()=>{let[e,s]=(0,t.useState)([]),[l,a]=(0,t.useState)(!1);return{chatHistory:e,isGenerating:l,sendMessage:async(e,t,l,r,i)=>{let d={id:Date.now().toString(),role:"user",text:l};s(e=>[...e,d]),a(!0);try{let a=await n.default.ai.generate(e,"global"===t?"":t,l,r);i();let d={id:(Date.now()+1).toString(),role:"model",text:a.text,responseType:a.type};s(e=>[...e,d])}catch{s(e=>[...e,{id:Date.now().toString(),role:"model",text:"Désolé, une erreur est survenue lors de la génération."}])}finally{a(!1)}}}})(),[C,z]=(0,t.useState)(""),[M,A]=(0,t.useState)(!1),[$,P]=(0,t.useState)(!1),S=c.endsWith("/world")?"world_building":c.endsWith("/ideas")?"ideas":c.endsWith("/workflow")?"workflow":c.endsWith("/settings")?"settings":"write";(0,t.useEffect)(()=>{x&&j(x)},[x,j]),(0,t.useEffect)(()=>{b||m||o.replace("/login")},[m,b,o]);let I=g.find(e=>e.id===x);return((0,t.useEffect)(()=>{!I||C&&I.chapters.some(e=>e.id===C)||z(I.chapters[0]?.id||"")},[I,C]),b||!m)?(0,s.jsxs)("div",{className:"h-screen w-full flex flex-col items-center justify-center bg-slate-900 text-white",children:[(0,s.jsx)(_.Loader2,{className:"animate-spin text-blue-500 mb-4",size:48}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(h.BookOpen,{className:"text-blue-500",size:20}),(0,s.jsx)("span",{className:"text-lg font-bold",children:"PlumeIA"})]})]}):I?(0,s.jsx)(r.ProjectProvider,{value:{project:I,user:m,projectId:x,currentChapterId:C,setCurrentChapterId:z,updateProject:e=>f(x,e),updateChapter:(e,s)=>v(x,e,s),incrementUsage:p},children:(0,s.jsxs)(L,{project:I,user:m,viewMode:S,currentChapterId:C,chatHistory:N,isGenerating:w,onViewModeChange:e=>{let s=`/project/${x}`;switch(e){case"write":default:o.push(s);break;case"world_building":o.push(`${s}/world`);break;case"ideas":o.push(`${s}/ideas`);break;case"workflow":o.push(`${s}/workflow`);break;case"settings":o.push(`${s}/settings`);break;case"dashboard":o.push("/dashboard")}},onChapterSelect:e=>{z(e),o.push(`/project/${x}`)},onUpdateProject:e=>f(x,e),onAddChapter:async()=>{let e=await y(x,{});e&&(z(e),o.push(`/project/${x}`))},onDeleteChapter:e=>{if(I.chapters.length>1){let s=I.chapters.filter(s=>s.id!==e);f(x,{chapters:s}),C===e&&z(s[0].id)}},onLogout:()=>{u(),o.push("/")},onSendMessage:e=>{I&&m&&k(I,"global",e,m,p)},onInsertText:()=>{},onOpenExport:()=>A(!0),onOpenHelp:()=>P(!0),children:[(0,s.jsx)(R,{isOpen:M,onClose:()=>A(!1),project:I,onPrint:()=>{}}),(0,s.jsx)(F,{isOpen:$,onClose:()=>P(!1),viewMode:S}),e]})}):(0,s.jsxs)("div",{className:"h-screen w-full flex flex-col items-center justify-center bg-slate-900 text-white",children:[(0,s.jsx)(_.Loader2,{className:"animate-spin text-blue-500 mb-4",size:48}),(0,s.jsx)("p",{className:"text-slate-400",children:"Chargement du projet..."})]})}e.s(["default",()=>W],34779)}]); \ No newline at end of file diff --git a/.next/static/chunks/7e431064c812a46a.js b/.next/static/chunks/7e431064c812a46a.js deleted file mode 100644 index f819720..0000000 --- a/.next/static/chunks/7e431064c812a46a.js +++ /dev/null @@ -1 +0,0 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,44026,e=>{"use strict";let t=(0,e.i(78445).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["Loader2",()=>t],44026)},62746,e=>{"use strict";let t=(0,e.i(78445).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);e.s(["BookOpen",()=>t],62746)},46202,e=>{"use strict";let t=(0,e.i(78445).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);e.s(["Sparkles",()=>t],46202)},59111,e=>{"use strict";let t=(0,e.i(78445).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",()=>t],59111)},46553,e=>{"use strict";let t=(0,e.i(78445).default)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["Settings",()=>t],46553)},50147,e=>{"use strict";let t=(0,e.i(78445).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);e.s(["User",()=>t],50147)},98867,e=>{"use strict";let t=(0,e.i(78445).default)("panels-top-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]]);e.s(["Layout",()=>t],98867)},74080,97794,e=>{"use strict";var t=e.i(78445);let a=(0,t.default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",()=>a],74080);let r=(0,t.default)("mouse-pointer-click",[["path",{d:"M14 4.1 12 6",key:"ita8i4"}],["path",{d:"m5.1 8-2.9-.8",key:"1go3kf"}],["path",{d:"m6 12-1.9 2",key:"mnht97"}],["path",{d:"M7.2 2.2 8 5.1",key:"1cfko1"}],["path",{d:"M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z",key:"s0h3yz"}]]);e.s(["MousePointerClick",()=>r],97794)},36268,e=>{"use strict";let t=(0,e.i(78445).default)("lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);e.s(["Lightbulb",()=>t],36268)},12155,12100,e=>{"use strict";var t=e.i(78445);let a=(0,t.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);e.s(["Globe",()=>a],12155);let r=(0,t.default)("git-graph",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M5 9v6",key:"158jrl"}],["circle",{cx:"5",cy:"18",r:"3",key:"104gr9"}],["path",{d:"M12 3v18",key:"108xh3"}],["circle",{cx:"19",cy:"6",r:"3",key:"108a5v"}],["path",{d:"M16 15.7A9 9 0 0 0 19 9",key:"1e3vqb"}]]);e.s(["GitGraph",()=>r],12100)},4917,e=>{"use strict";let t=(0,e.i(78445).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);e.s(["Trash2",()=>t],4917)},22508,e=>{"use strict";let t=(0,e.i(78445).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",()=>t],22508)},78445,e=>{"use strict";var t=e.i(59760);let a=(...e)=>e.filter((e,t,a)=>!!e&&""!==e.trim()&&a.indexOf(e)===t).join(" ").trim(),r=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,a)=>a?a.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var i={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let s=(0,t.forwardRef)(({color:e="currentColor",size:r=24,strokeWidth:s=2,absoluteStrokeWidth:l,className:o="",children:d,iconNode:c,...n},u)=>(0,t.createElement)("svg",{ref:u,...i,width:r,height:r,stroke:e,strokeWidth:l?24*Number(s)/Number(r):s,className:a("lucide",o),...!d&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(n)&&{"aria-hidden":"true"},...n},[...c.map(([e,a])=>(0,t.createElement)(e,a)),...Array.isArray(d)?d:[d]])),l=(e,i)=>{let l=(0,t.forwardRef)(({className:l,...o},d)=>(0,t.createElement)(s,{ref:d,iconNode:i,className:a(`lucide-${r(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,l),...o}));return l.displayName=r(e),l};e.s(["default",()=>l],78445)},12856,(e,t,a)=>{t.exports=e.r(96479)},33907,e=>{"use strict";var t,a=((t={}).CHARACTER="Personnage",t.LOCATION="Lieu",t.OBJECT="Objet",t.NOTE="Note",t);e.s(["EntityType",()=>a])},30914,e=>{"use strict";let t=(0,e.i(78445).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);e.s(["Zap",()=>t],30914)},15536,e=>{"use strict";let t=(0,e.i(78445).default)("message-circle",[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}]]);e.s(["MessageCircle",()=>t],15536)},43331,e=>{"use strict";let t=(0,e.i(78445).default)("book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]]);e.s(["Book",()=>t],43331)},8011,71143,e=>{"use strict";var t=e.i(59760),a=e.i(4301),r=e.i(33907);let i="Nouveau Roman",s="Auteur Inconnu",l={id:"chap-1",title:"Chapitre 1",content:"

Il était une fois...

",summary:"Début de l'histoire."},o={[r.EntityType.CHARACTER]:"👤",[r.EntityType.LOCATION]:"🏰",[r.EntityType.OBJECT]:"🗝️",[r.EntityType.NOTE]:"📝"},d={[r.EntityType.CHARACTER]:"bg-blue-100 text-blue-800 border-blue-200",[r.EntityType.LOCATION]:"bg-green-100 text-green-800 border-green-200",[r.EntityType.OBJECT]:"bg-amber-100 text-amber-800 border-amber-200",[r.EntityType.NOTE]:"bg-gray-100 text-gray-800 border-gray-200"};e.s(["ARCHETYPES",0,["Le Héros","L'Ombre / Le Méchant","Le Mentor","Le Gardien du Seuil","Le Shapeshifter (Changeforme)","Le Trickster (Farceur)","L'Allié","L'Élu","Le Rebelle","Le Séducteur","Le Sage","Le Guerrier","L'Innocent"],"DEFAULT_AUTHOR",0,s,"DEFAULT_BOOK_TITLE",0,i,"ENTITY_COLORS",0,d,"ENTITY_ICONS",0,o,"EYE_COLORS",0,["Marron","Bleu","Vert","Noisette","Gris","Noir","Vairons","Ambre"],"GENRES",0,["Fantasy","Science-Fiction","Thriller / Polar","Romance","Historique","Horreur","Aventure","Contemporain","Jeunesse / Young Adult","Dystopie"],"HAIR_COLORS",0,["Brun","Noir","Blond","Roux","Auburn","Gris","Blanc","Châtain","Chauve","Teinture (Bleu/Rose/Etc)"],"INITIAL_CHAPTER",0,l,"POV_OPTIONS",0,["1ère personne (Je)","3ème personne (Limitée au protagoniste)","3ème personne (Omnisciente)","Multi-points de vue (Alterné)"],"TENSE_OPTIONS",0,["Passé (Passé simple / Imparfait)","Présent de narration"],"TONES",0,["Sombre & Sérieux","Léger & Humoristique","Épique & Grandiose","Mélancolique","Mystérieux","Optimiste","Cynique","Romantique"]],71143),e.s(["useProjects",0,e=>{let[r,o]=(0,t.useState)([]),[d,c]=(0,t.useState)(null),[n,u]=(0,t.useState)(!1);(0,t.useEffect)(()=>{e?(async()=>{u(!0);try{let e=(await a.default.projects.list()||[]).map(e=>({id:e.id,title:e.title,author:e.author,lastModified:new Date(e.updatedAt).getTime(),chapters:[],entities:[],ideas:[],settings:e.settings||void 0}));o(e)}catch(e){console.error("Failed to load projects",e)}finally{u(!1)}})():o([])},[e]),(0,t.useEffect)(()=>{d&&(async()=>{try{let e=await a.default.projects.get(d),t={id:e.id,title:e.title,author:e.author,lastModified:new Date(e.updatedAt).getTime(),settings:e.settings||void 0,styleGuide:e.styleGuide||void 0,chapters:(e.chapters||[]).map(e=>({id:e.id,title:e.title,content:e.content,summary:e.summary})),entities:(e.entities||[]).map(e=>({id:e.id,type:e.type,name:e.name,description:e.description,details:e.details,storyContext:e.storyContext,attributes:e.attributes,customValues:e.customValues})),ideas:(e.ideas||[]).map(e=>({id:e.id,title:e.title,description:e.description,status:e.status,category:e.category,createdAt:new Date(e.createdAt).getTime()})),workflow:{nodes:(e.plotNodes||[]).map(e=>({id:e.id,x:e.x,y:e.y,title:e.title,description:e.description,color:e.color,type:e.type})),connections:(e.plotConnections||[]).map(e=>({id:e.id,source:e.source,target:e.target}))}};o(e=>e.map(e=>e.id===d?t:e))}catch(e){console.error("Failed to load project details",e)}})()},[d]);let p=async(e,t)=>{try{let r=await a.default.chapters.create({projectId:e,title:t.title||"New Chapter",content:t.content||"",summary:t.summary||void 0});return o(t=>t.map(t=>t.id!==e?t:{...t,chapters:[...t.chapters,{id:r.id,title:r.title,content:r.content,summary:r.summary}]})),r.id}catch(e){return console.error("Failed to add chapter",e),null}};return{projects:r,currentProjectId:d,setCurrentProjectId:c,createProject:async()=>{if(e)try{let t=await a.default.projects.create({title:i,author:e.name||s,settings:{genre:"Fantasy",targetAudience:"Adult",tone:"Epic"}}),r={id:t.id,title:t.title,author:t.author,lastModified:Date.now(),chapters:[],entities:[],ideas:[],settings:t.settings};return o(e=>[...e,r]),await p(t.id,l),t.id}catch(e){console.error("Failed to create project",e)}},updateProject:async(e,t)=>{o(a=>a.map(a=>a.id===e?{...a,...t}:a));try{let r={};void 0!==t.title&&(r.title=t.title),void 0!==t.author&&(r.author=t.author),void 0!==t.settings&&(r.settings=t.settings),void 0!==t.styleGuide&&(r.styleGuide=t.styleGuide),await a.default.projects.update(e,r)}catch(e){console.error("Failed to update project",e)}},addChapter:p,updateChapter:async(e,t,r)=>{o(a=>a.map(a=>a.id!==e?a:{...a,chapters:a.chapters.map(e=>e.id===t?{...e,...r}:e)}));try{await a.default.chapters.update(t,r)}catch(e){console.error("Failed to update chapter",e)}},createEntity:async(e,t,r)=>{try{let i=await a.default.entities.create({projectId:e,type:t,name:r?.name||`Nouveau ${t}`,description:r?.description||"",details:r?.details||"",attributes:r?.attributes||void 0,customValues:r?.customValues||void 0});return o(t=>t.map(t=>t.id!==e?t:{...t,entities:[...t.entities,{id:i.id,type:i.type,name:i.name,description:i.description,details:i.details,attributes:i.attributes,customValues:i.customValues||{}}]})),i.id}catch(e){throw console.error("Failed to create entity",e),e}},updateEntity:async(e,t,r)=>{o(a=>a.map(a=>a.id!==e?a:{...a,entities:a.entities.map(e=>e.id===t?{...e,...r}:e)}));try{await a.default.entities.update(t,r)}catch(e){console.error("Failed to update entity",e)}},deleteEntity:async(e,t)=>{o(a=>a.map(a=>a.id!==e?a:{...a,entities:a.entities.filter(e=>e.id!==t)}));try{await a.default.entities.delete(t)}catch(e){console.error("Failed to delete entity",e)}},deleteProject:async e=>{try{await a.default.projects.delete(e),o(t=>t.filter(t=>t.id!==e)),d===e&&c(null)}catch(e){console.error("Failed to delete project",e)}}}}],8011)},30103,86180,e=>{"use strict";var t=e.i(78445);let a=(0,t.default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",()=>a],30103);let r=(0,t.default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);e.s(["LogOut",()=>r],86180)}]); \ No newline at end of file diff --git a/.next/static/chunks/8214509c661073ff.js b/.next/static/chunks/9b50405aab01e4b4.js similarity index 78% rename from .next/static/chunks/8214509c661073ff.js rename to .next/static/chunks/9b50405aab01e4b4.js index e812ac3..6ce55f9 100644 --- a/.next/static/chunks/8214509c661073ff.js +++ b/.next/static/chunks/9b50405aab01e4b4.js @@ -1,3 +1,3 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,11690,e=>{"use strict";let t=(0,e.i(78445).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);e.s(["ArrowRight",()=>t],11690)},38562,e=>{"use strict";var t=e.i(30064),r=e.i(59760),l=e.i(33907),i=e.i(22508),n=e.i(4917),o=e.i(11690),s=e.i(62746),a=e.i(15536),d=e.i(30914);let c=(0,e.i(78445).default)("palette",[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]]),u=["#ffffff","#dbeafe","#dcfce7","#fef9c3","#fee2e2","#f3e8ff"],x=r.default.memo(({node:e,isSelected:l,isEditing:i,activeColorPickerId:n,entities:u,savedColors:x,onMouseDown:f,onMouseUp:g,onStartConnection:p,onUpdate:h,onSetEditing:b,onToggleColorPicker:m,onSaveColor:y,onNavigateToEntity:w,onInputFocus:v,onInputCheckAutocomplete:k,onKeyDownInInput:j})=>{let[C,N]=(0,r.useState)(!1),S=(0,r.useMemo)(()=>((e,r,l)=>{if(!e)return(0,t.jsx)("span",{className:"text-slate-400 italic",children:"Description..."});let i=[e];return r.forEach(e=>{if(!e.name)return;let r=RegExp(`(${e.name})`,"gi");for(let n=0;n1){let r=s.map((r,i)=>r.toLowerCase()===e.name.toLowerCase()?(0,t.jsx)("span",{onClick:t=>{t.stopPropagation(),l(e.id)},className:"text-indigo-600 hover:text-indigo-800 underline decoration-indigo-300 hover:decoration-indigo-600 cursor-pointer font-medium bg-indigo-50 px-0.5 rounded transition-all",title:`Voir la fiche de ${e.name}`,children:r},`${e.id}-${i}`):r);i.splice(n,1,...r),n+=r.length-1}}}}),(0,t.jsx)(t.Fragment,{children:i})})(e.description,u,w),[e.description,u,w]);return(0,t.jsxs)("div",{className:`absolute flex flex-col rounded-xl shadow-sm border transition-all z-10 group - ${l?"ring-2 ring-indigo-500 shadow-lg scale-[1.01]":"border-slate-200 hover:shadow-md"} - `,style:{transform:`translate3d(${e.x}px, ${e.y}px, 0)`,width:260,height:220,backgroundColor:e.color||"#ffffff",willChange:"transform"},onMouseDown:t=>f(t,e.id),onMouseUp:t=>g(t,e.id),onMouseLeave:()=>N(!1),children:[(0,t.jsx)("div",{className:"h-1.5 rounded-t-xl bg-black/5 w-full cursor-grab active:cursor-grabbing"}),(0,t.jsxs)("div",{className:"flex-1 px-4 pb-4 pt-2 flex flex-col overflow-hidden relative",children:[(0,t.jsxs)("div",{className:"flex justify-between items-start mb-2 relative",children:[i?(0,t.jsx)("input",{className:"font-bold text-slate-800 bg-white/50 border-b border-indigo-400 outline-none w-full mr-6 text-sm p-1 rounded",value:e.title,onChange:t=>h(e.id,{title:t.target.value}),onFocus:v,autoFocus:!0}):(0,t.jsx)("div",{className:"font-bold text-slate-800 cursor-text truncate mr-6 text-sm",onDoubleClick:()=>b(e.id),children:e.title}),(0,t.jsx)("button",{onClick:t=>{t.stopPropagation(),m(e.id)},className:"p-1 rounded-full hover:bg-black/10 text-slate-400 hover:text-indigo-600 transition-colors absolute right-0 top-0",children:(0,t.jsx)(c,{size:14})}),n===e.id&&(0,t.jsxs)("div",{className:"absolute right-[-10px] top-8 bg-white rounded-lg shadow-xl border border-slate-200 p-3 z-50 w-48 animate-in fade-in zoom-in-95 duration-100 cursor-default",onMouseDown:e=>e.stopPropagation(),children:[(0,t.jsx)("div",{className:"grid grid-cols-4 gap-2 mb-3",children:x.map(r=>(0,t.jsx)("button",{onClick:()=>h(e.id,{color:r}),className:`w-8 h-8 rounded-full border border-slate-200 shadow-sm transition-transform hover:scale-110 ${e.color===r?"ring-2 ring-offset-1 ring-indigo-400":""}`,style:{backgroundColor:r}},r))}),(0,t.jsxs)("div",{className:"flex items-center gap-2 pt-2 border-t border-slate-100",children:[(0,t.jsx)("div",{className:"relative w-8 h-8 rounded-full overflow-hidden border border-slate-300 shadow-inner",children:(0,t.jsx)("input",{type:"color",className:"absolute -top-2 -left-2 w-16 h-16 cursor-pointer",value:e.color||"#ffffff",onChange:t=>h(e.id,{color:t.target.value})})}),(0,t.jsx)("button",{onClick:()=>y(e.color||"#ffffff"),className:"text-[10px] font-bold text-indigo-600 hover:text-indigo-800 hover:underline flex-1 text-right",children:"+ SAUVER"})]})]})]}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto custom-scrollbar relative mb-4",children:i?(0,t.jsx)("textarea",{className:`w-full h-full bg-white/70 resize-none outline-none text-xs leading-relaxed p-2 rounded border border-indigo-100 shadow-inner ${"dialogue"===e.type?"font-mono text-slate-700":"text-slate-600"}`,placeholder:"dialogue"===e.type?"Héros: Salut !\nGuide: ...":"Résumé de l'intrigue...",value:e.description,onChange:t=>k(t,e.id,"description"),onKeyDown:t=>j(t,e.id),onFocus:v,onBlur:()=>b(null)}):(0,t.jsx)("div",{className:`w-full h-full text-xs text-slate-600 leading-relaxed p-1 cursor-text whitespace-pre-wrap ${"dialogue"===e.type?"font-mono bg-indigo-50/30 rounded pl-2 border-l-2 border-indigo-200":""}`,onClick:()=>b(e.id),children:S})}),(0,t.jsxs)("div",{className:"absolute bottom-2 right-2 z-20",children:[C&&(0,t.jsxs)("div",{className:"absolute bottom-full mb-2 right-0 bg-white shadow-xl border border-slate-200 rounded-lg p-1 flex gap-1 animate-in zoom-in-95 duration-100 w-max",onMouseDown:e=>e.stopPropagation(),children:[(0,t.jsx)("button",{onClick:t=>{t.stopPropagation(),h(e.id,{type:"story"}),N(!1)},className:`p-1.5 rounded hover:bg-slate-100 ${"story"===e.type?"bg-indigo-50 ring-1 ring-indigo-200":""}`,title:"Narration",children:(0,t.jsx)(s.BookOpen,{size:14,className:"text-slate-500"})}),(0,t.jsx)("button",{onClick:t=>{t.stopPropagation(),h(e.id,{type:"action"}),N(!1)},className:`p-1.5 rounded hover:bg-amber-50 ${"action"===e.type?"bg-amber-50 ring-1 ring-amber-200":""}`,title:"Action",children:(0,t.jsx)(d.Zap,{size:14,className:"text-amber-500"})}),(0,t.jsx)("button",{onClick:t=>{t.stopPropagation(),h(e.id,{type:"dialogue"}),N(!1)},className:`p-1.5 rounded hover:bg-blue-50 ${"dialogue"===e.type?"bg-blue-50 ring-1 ring-blue-200":""}`,title:"Dialogue",children:(0,t.jsx)(a.MessageCircle,{size:14,className:"text-blue-500"})})]}),(0,t.jsxs)("button",{className:"p-1.5 rounded-full bg-white/70 hover:bg-white shadow-sm border border-slate-100 hover:border-indigo-200 transition-all opacity-80 group-hover:opacity-100",onClick:e=>{e.stopPropagation(),N(!C)},children:["story"===e.type&&(0,t.jsx)(s.BookOpen,{size:14,className:"text-slate-500"}),"action"===e.type&&(0,t.jsx)(d.Zap,{size:14,className:"text-amber-500"}),"dialogue"===e.type&&(0,t.jsx)(a.MessageCircle,{size:14,className:"text-blue-500"})]})]})]}),(0,t.jsx)("button",{className:"absolute -right-3 top-1/2 -translate-y-1/2 w-6 h-6 bg-white border border-slate-300 rounded-full flex items-center justify-center text-slate-400 hover:text-indigo-600 hover:border-indigo-500 shadow-sm opacity-0 group-hover:opacity-100 transition-all z-20",onMouseDown:t=>p(t,e.id),children:(0,t.jsx)(o.ArrowRight,{size:12})})]})},(e,t)=>e.node===t.node&&e.isSelected===t.isSelected&&e.isEditing===t.isEditing&&e.activeColorPickerId===t.activeColorPickerId&&e.entities===t.entities),f=({data:e,onUpdate:o,entities:s,onNavigateToEntity:a})=>{let d=(0,r.useRef)(null),c=(0,r.useRef)(null),[f,g]=(0,r.useState)(e.nodes),p=(0,r.useRef)(f);(0,r.useEffect)(()=>{p.current=f},[f]),(0,r.useEffect)(()=>{g(e.nodes)},[e.nodes]),(0,r.useEffect)(()=>()=>{c.current&&cancelAnimationFrame(c.current)},[]);let[h,b]=(0,r.useState)(null),[m,y]=(0,r.useState)(new Set),[w,v]=(0,r.useState)(u),[k,j]=(0,r.useState)(null),[C,N]=(0,r.useState)(null),[S,E]=(0,r.useState)([]),[z,D]=(0,r.useState)(!1),[T,I]=(0,r.useState)(new Map),[M,P]=(0,r.useState)({x:0,y:0}),[$,A]=(0,r.useState)(null),[L,R]=(0,r.useState)({x:0,y:0}),[U,O]=(0,r.useState)(!1),[B,F]=(0,r.useState)({x:0,y:0}),[K,X]=(0,r.useState)({x:0,y:0}),Y=(0,r.useCallback)(()=>{E(t=>{let r=[...t,e];return r.length>20?r.slice(r.length-20):r})},[e]),H=(0,r.useCallback)((t,r)=>{let l=p.current;o({...e,nodes:l.map(e=>e.id===t?{...e,...r}:e)})},[e,o]),W=(0,r.useCallback)(e=>{e.stopPropagation()},[]),q=(0,r.useCallback)((e,t,r)=>{let i=e.target.value;H(t,{[r]:i});let n=e.target.selectionStart||0,o=i.slice(0,n).match(/([@#^])([^@#^\s]*)$/);if(o){let e=o[1],i=o[2].toLowerCase(),a="@"===e?l.EntityType.CHARACTER:"#"===e?l.EntityType.LOCATION:l.EntityType.OBJECT,d=s.filter(e=>e.type===a&&e.name.toLowerCase().includes(i));b({active:!0,trigger:e,query:i,nodeId:t,field:r,cursorIndex:n,selectedIndex:0,filteredEntities:d})}else b(null)},[H,s]),Z=e=>{if(!h)return;let{nodeId:t,field:r,trigger:l,query:i}=h,n=p.current.find(e=>e.id===t);if(!n)return;let o=n[r],s=h.cursorIndex,a=s-(l.length+i.length);if(a<0)return;let d=o.slice(0,a),c=o.slice(s),u="dialogue"===n.type&&"@"===h.trigger;H(t,{[r]:d+e.name+(u?": ":" ")+c}),b(null)},J=(0,r.useCallback)((e,t)=>{if(h&&h.nodeId===t){if("ArrowDown"===e.key){e.preventDefault(),b(e=>e?{...e,selectedIndex:(e.selectedIndex+1)%e.filteredEntities.length}:null);return}else if("ArrowUp"===e.key){e.preventDefault(),b(e=>e?{...e,selectedIndex:(e.selectedIndex-1+e.filteredEntities.length)%e.filteredEntities.length}:null);return}else if("Tab"===e.key||"Enter"===e.key){e.preventDefault(),h.filteredEntities.length>0?Z(h.filteredEntities[h.selectedIndex]):b(null);return}else if("Escape"===e.key)return void b(null)}},[h,s,H]),V=(0,r.useCallback)((e,t)=>{e.stopPropagation(),j(null),y(r=>{let l=new Set(r);e.ctrlKey?l.has(t)?l.delete(t):l.add(t):l.has(t)||(l.clear(),l.add(t));let i=e.ctrlKey||l.has(t)?l:new Set([t]),n=new Map;return p.current.forEach(e=>{i.has(e.id)&&n.set(e.id,{x:e.x,y:e.y})}),I(n),l}),D(!0),P({x:e.clientX,y:e.clientY}),Y()},[Y]),G=(0,r.useCallback)((e,t)=>{e.stopPropagation(),Y(),A(t)},[Y]),Q=(0,r.useCallback)((t,r)=>{if($&&$!==r&&!e.connections.some(e=>e.source===$&&e.target===r)){let t={id:`conn-${Date.now()}`,source:$,target:r};o({...e,nodes:p.current,connections:[...e.connections,t]})}A(null)},[e,o,$]),_=(0,r.useCallback)(e=>{j(t=>t===e?null:e)},[]),ee=(0,r.useCallback)(e=>{v(t=>t.includes(e)?t:[...t,e])},[]);return(0,t.jsxs)("div",{className:"h-full flex flex-col overflow-hidden bg-[#eef2ff] relative",children:[(0,t.jsxs)("div",{className:"h-12 bg-white border-b border-indigo-100 flex items-center justify-between px-4 z-10 shadow-sm shrink-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("button",{onClick:()=>{Y();let t=d.current?.scrollLeft||0,r=d.current?.scrollTop||0,l=d.current?.clientWidth||800,i=d.current?.clientHeight||600,n={id:`node-${Date.now()}`,x:t+l/2-130,y:r+i/2-110,title:"Nouveau point d'intrigue",description:"",color:u[0],type:"story"};o({...e,nodes:[...p.current,n]}),y(new Set([n.id])),N(n.id)},className:"flex items-center gap-1.5 px-3 py-1.5 bg-indigo-600 text-white rounded-lg hover:bg-indigo-700 text-xs font-bold transition-all shadow-md shadow-indigo-100",children:[(0,t.jsx)(i.Plus,{size:14})," AJOUTER NŒUD"]}),(0,t.jsx)("div",{className:"w-px h-6 bg-slate-100 mx-2"}),(0,t.jsx)("div",{className:"text-[10px] uppercase font-bold text-slate-400 tracking-wider",children:m.size>0?`${m.size} S\xc9LECTIONN\xc9(S)`:"Double-cliquez sur le canvas pour créer"})]}),(0,t.jsx)("div",{className:"flex items-center gap-2",children:(0,t.jsx)("button",{onClick:()=>{0===m.size||(Y(),o({nodes:f.filter(e=>!m.has(e.id)),connections:e.connections.filter(e=>!m.has(e.source)&&!m.has(e.target))}),y(new Set))},disabled:0===m.size,className:"p-2 text-red-500 hover:bg-red-50 rounded-lg disabled:opacity-30 transition-colors",title:"Supprimer",children:(0,t.jsx)(n.Trash2,{size:16})})})]}),(0,t.jsxs)("div",{ref:d,className:"flex-1 overflow-auto relative cursor-grab active:cursor-grabbing bg-[#eef2ff]",onMouseDown:e=>{e.ctrlKey||y(new Set),b(null),j(null),N(null),O(!0),F({x:e.clientX,y:e.clientY}),d.current&&X({x:d.current.scrollLeft,y:d.current.scrollTop})},onMouseMove:e=>{let t=d.current?.getBoundingClientRect();if(!t)return;let r=e.clientX,l=e.clientY;if(U&&d.current){let e=r-B.x,t=l-B.y;d.current.scrollLeft=K.x-e,d.current.scrollTop=K.y-t;return}let i=d.current?.scrollLeft||0,n=d.current?.scrollTop||0;if(R({x:r-t.left+i,y:l-t.top+n}),z){if(c.current)return;c.current=requestAnimationFrame(()=>{let e=r-M.x,t=l-M.y;g(r=>r.map(r=>{let l=T.get(r.id);return l?{...r,x:l.x+e,y:l.y+t}:r})),c.current=null})}},onMouseUp:()=>{c.current&&(cancelAnimationFrame(c.current),c.current=null),z&&o({...e,nodes:p.current}),D(!1),O(!1),A(null)},onDoubleClick:t=>{t.preventDefault();let r=d.current?.getBoundingClientRect();if(!r)return;let l=t.clientX-r.left+(d.current?.scrollLeft||0)-130,i=t.clientY-r.top+(d.current?.scrollTop||0)-110;Y();let n={id:`node-${Date.now()}`,x:l,y:i,title:"Nouvel événement",description:"",color:u[0],type:"story"};o({...e,nodes:[...p.current,n]}),y(new Set([n.id])),N(n.id)},style:{backgroundImage:"radial-gradient(#d1d5db 1px, transparent 1px)",backgroundSize:"24px 24px"},children:[(0,t.jsxs)("svg",{className:"absolute top-0 left-0 w-[4000px] h-[4000px] pointer-events-none z-0",children:[e.connections.map(e=>{let r=f.find(t=>t.id===e.source),l=f.find(t=>t.id===e.target);if(!r||!l)return null;let i=r.x+130,n=r.y+110,o=l.x+130,s=l.y+110;return(0,t.jsx)("line",{x1:i,y1:n,x2:o,y2:s,stroke:"#cbd5e1",strokeWidth:"2",markerEnd:"url(#arrowhead)"},e.id)}),$&&(0,t.jsx)("line",{x1:(f.find(e=>e.id===$)?.x||0)+130,y1:(f.find(e=>e.id===$)?.y||0)+110,x2:L.x,y2:L.y,stroke:"#6366f1",strokeWidth:"2",strokeDasharray:"5,5",markerEnd:"url(#arrowhead-blue)"}),(0,t.jsxs)("defs",{children:[(0,t.jsx)("marker",{id:"arrowhead",markerWidth:"10",markerHeight:"7",refX:"28",refY:"3.5",orient:"auto",children:(0,t.jsx)("path",{d:"M0,0 L0,7 L10,3.5 Z",fill:"#cbd5e1"})}),(0,t.jsx)("marker",{id:"arrowhead-blue",markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto",children:(0,t.jsx)("path",{d:"M0,0 L0,7 L10,3.5 Z",fill:"#6366f1"})})]})]}),f.map(e=>(0,t.jsx)(x,{node:e,isSelected:m.has(e.id),isEditing:C===e.id,activeColorPickerId:k,entities:s,savedColors:w,onMouseDown:V,onMouseUp:Q,onStartConnection:G,onUpdate:H,onSetEditing:N,onToggleColorPicker:_,onSaveColor:ee,onNavigateToEntity:a,onInputFocus:W,onInputCheckAutocomplete:q,onKeyDownInInput:J},e.id))]}),h&&(0,t.jsxs)("div",{className:"fixed z-50 bg-white rounded-xl shadow-2xl border border-indigo-100 w-64 max-h-48 overflow-y-auto",style:{left:"50%",top:"50%",transform:"translate(-50%, -50%)"},children:[(0,t.jsxs)("div",{className:"px-3 py-2 bg-indigo-600 text-white text-[10px] font-black uppercase tracking-widest",children:["Insérer ","@"===h.trigger?"Personnage":"#"===h.trigger?"Lieu":"Objet"]}),(0,t.jsx)("div",{className:"divide-y divide-slate-50",children:h.filteredEntities.length>0?h.filteredEntities.map((e,r)=>(0,t.jsx)("button",{className:`w-full text-left px-4 py-3 text-xs flex items-center gap-3 hover:bg-indigo-50 transition-colors ${r===h.selectedIndex?"bg-indigo-50 text-indigo-700 font-bold":"text-slate-700"}`,onClick:()=>Z(e),children:e.name},e.id)):(0,t.jsx)("div",{className:"p-4 text-xs text-slate-400 italic text-center",children:"Aucun résultat"})})]})]})};var g=e.i(12856);function p(e){let{project:r,updateProject:l}=e,i=(0,g.useParams)(),n=(0,g.useRouter)(),o=i.id;return r?(0,t.jsx)(f,{data:r.workflow||{nodes:[],connections:[]},onUpdate:e=>l?.({workflow:e}),entities:r.entities||[],onNavigateToEntity:e=>n.push(`/project/${o}/world`)}):null}e.s(["default",()=>p],38562)}]); \ No newline at end of file +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,11690,e=>{"use strict";let t=(0,e.i(78445).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);e.s(["ArrowRight",()=>t],11690)},38562,e=>{"use strict";var t=e.i(30064),r=e.i(59760),i=e.i(33907),l=e.i(22508),n=e.i(4917),o=e.i(11690),s=e.i(62746),a=e.i(15536),d=e.i(30914);let c=(0,e.i(78445).default)("palette",[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]]),u=["#ffffff","#dbeafe","#dcfce7","#fef9c3","#fee2e2","#f3e8ff"],x=r.default.memo(({node:e,isSelected:i,isEditing:l,activeColorPickerId:n,entities:u,savedColors:x,onMouseDown:f,onMouseUp:g,onStartConnection:p,onUpdate:h,onSetEditing:b,onToggleColorPicker:m,onSaveColor:y,onNavigateToEntity:w,onInputFocus:v,onInputCheckAutocomplete:j,onKeyDownInInput:k})=>{let[C,N]=(0,r.useState)(!1),S=(0,r.useMemo)(()=>((e,r,i)=>{if(!e)return(0,t.jsx)("span",{className:"text-slate-400 italic",children:"Description..."});let l=[e];return r.forEach(e=>{if(!e.name)return;let r=RegExp(`(${e.name})`,"gi");for(let n=0;n1){let r=s.map((r,l)=>r.toLowerCase()===e.name.toLowerCase()?(0,t.jsx)("span",{onClick:t=>{t.stopPropagation(),i(e.id)},className:"text-indigo-600 hover:text-indigo-800 underline decoration-indigo-300 hover:decoration-indigo-600 cursor-pointer font-medium bg-indigo-50 px-0.5 rounded transition-all",title:`Voir la fiche de ${e.name}`,children:r},`${e.id}-${l}`):r);l.splice(n,1,...r),n+=r.length-1}}}}),(0,t.jsx)(t.Fragment,{children:l})})(e.description,u,w),[e.description,u,w]);return(0,t.jsxs)("div",{className:`absolute flex flex-col rounded-xl shadow-sm border transition-all z-10 group + ${i?"ring-2 ring-indigo-500 shadow-lg scale-[1.01]":"border-slate-200 hover:shadow-md"} + `,style:{transform:`translate3d(${e.x}px, ${e.y}px, 0)`,width:260,height:220,backgroundColor:e.color||"#ffffff",willChange:"transform"},onMouseDown:t=>f(t,e.id),onMouseUp:t=>g(t,e.id),onMouseLeave:()=>N(!1),children:[(0,t.jsx)("div",{className:"h-1.5 rounded-t-xl bg-black/5 w-full cursor-grab active:cursor-grabbing"}),(0,t.jsxs)("div",{className:"flex-1 px-4 pb-4 pt-2 flex flex-col overflow-hidden relative",children:[(0,t.jsxs)("div",{className:"flex justify-between items-start mb-2 relative",children:[l?(0,t.jsx)("input",{className:"font-bold text-slate-800 bg-white/50 border-b border-indigo-400 outline-none w-full mr-6 text-sm p-1 rounded",value:e.title,onChange:t=>h(e.id,{title:t.target.value}),onFocus:v,autoFocus:!0}):(0,t.jsx)("div",{className:"font-bold text-slate-800 cursor-text truncate mr-6 text-sm",onDoubleClick:()=>b(e.id),children:e.title}),(0,t.jsx)("button",{onClick:t=>{t.stopPropagation(),m(e.id)},className:"p-1 rounded-full hover:bg-black/10 text-slate-400 hover:text-indigo-600 transition-colors absolute right-0 top-0",children:(0,t.jsx)(c,{size:14})}),n===e.id&&(0,t.jsxs)("div",{className:"absolute right-[-10px] top-8 bg-white rounded-lg shadow-xl border border-slate-200 p-3 z-50 w-48 animate-in fade-in zoom-in-95 duration-100 cursor-default",onMouseDown:e=>e.stopPropagation(),children:[(0,t.jsx)("div",{className:"grid grid-cols-4 gap-2 mb-3",children:x.map(r=>(0,t.jsx)("button",{onClick:()=>h(e.id,{color:r}),className:`w-8 h-8 rounded-full border border-slate-200 shadow-sm transition-transform hover:scale-110 ${e.color===r?"ring-2 ring-offset-1 ring-indigo-400":""}`,style:{backgroundColor:r}},r))}),(0,t.jsxs)("div",{className:"flex items-center gap-2 pt-2 border-t border-slate-100",children:[(0,t.jsx)("div",{className:"relative w-8 h-8 rounded-full overflow-hidden border border-slate-300 shadow-inner",children:(0,t.jsx)("input",{type:"color",className:"absolute -top-2 -left-2 w-16 h-16 cursor-pointer",value:e.color||"#ffffff",onChange:t=>h(e.id,{color:t.target.value})})}),(0,t.jsx)("button",{onClick:()=>y(e.color||"#ffffff"),className:"text-[10px] font-bold text-indigo-600 hover:text-indigo-800 hover:underline flex-1 text-right",children:"+ SAUVER"})]})]})]}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto custom-scrollbar relative mb-4",children:l?(0,t.jsx)("textarea",{className:`w-full h-full bg-white/70 resize-none outline-none text-xs leading-relaxed p-2 rounded border border-indigo-100 shadow-inner ${"dialogue"===e.type?"font-mono text-slate-700":"text-slate-600"}`,placeholder:"dialogue"===e.type?"Héros: Salut !\nGuide: ...":"Résumé de l'intrigue...",value:e.description,onChange:t=>j(t,e.id,"description"),onKeyDown:t=>k(t,e.id),onFocus:v,onBlur:()=>b(null)}):(0,t.jsx)("div",{className:`w-full h-full text-xs text-slate-600 leading-relaxed p-1 cursor-text whitespace-pre-wrap ${"dialogue"===e.type?"font-mono bg-indigo-50/30 rounded pl-2 border-l-2 border-indigo-200":""}`,onClick:()=>b(e.id),children:S})}),(0,t.jsxs)("div",{className:"absolute bottom-2 right-2 z-20",children:[C&&(0,t.jsxs)("div",{className:"absolute bottom-full mb-2 right-0 bg-white shadow-xl border border-slate-200 rounded-lg p-1 flex gap-1 animate-in zoom-in-95 duration-100 w-max",onMouseDown:e=>e.stopPropagation(),children:[(0,t.jsx)("button",{onClick:t=>{t.stopPropagation(),h(e.id,{type:"story"}),N(!1)},className:`p-1.5 rounded hover:bg-slate-100 ${"story"===e.type?"bg-indigo-50 ring-1 ring-indigo-200":""}`,title:"Narration",children:(0,t.jsx)(s.BookOpen,{size:14,className:"text-slate-500"})}),(0,t.jsx)("button",{onClick:t=>{t.stopPropagation(),h(e.id,{type:"action"}),N(!1)},className:`p-1.5 rounded hover:bg-amber-50 ${"action"===e.type?"bg-amber-50 ring-1 ring-amber-200":""}`,title:"Action",children:(0,t.jsx)(d.Zap,{size:14,className:"text-amber-500"})}),(0,t.jsx)("button",{onClick:t=>{t.stopPropagation(),h(e.id,{type:"dialogue"}),N(!1)},className:`p-1.5 rounded hover:bg-blue-50 ${"dialogue"===e.type?"bg-blue-50 ring-1 ring-blue-200":""}`,title:"Dialogue",children:(0,t.jsx)(a.MessageCircle,{size:14,className:"text-blue-500"})})]}),(0,t.jsxs)("button",{className:"p-1.5 rounded-full bg-white/70 hover:bg-white shadow-sm border border-slate-100 hover:border-indigo-200 transition-all opacity-80 group-hover:opacity-100",onClick:e=>{e.stopPropagation(),N(!C)},children:["story"===e.type&&(0,t.jsx)(s.BookOpen,{size:14,className:"text-slate-500"}),"action"===e.type&&(0,t.jsx)(d.Zap,{size:14,className:"text-amber-500"}),"dialogue"===e.type&&(0,t.jsx)(a.MessageCircle,{size:14,className:"text-blue-500"})]})]})]}),(0,t.jsx)("button",{className:"absolute -right-3 top-1/2 -translate-y-1/2 w-6 h-6 bg-white border border-slate-300 rounded-full flex items-center justify-center text-slate-400 hover:text-indigo-600 hover:border-indigo-500 shadow-sm opacity-0 group-hover:opacity-100 transition-all z-20",onMouseDown:t=>p(t,e.id),children:(0,t.jsx)(o.ArrowRight,{size:12})})]})},(e,t)=>e.node===t.node&&e.isSelected===t.isSelected&&e.isEditing===t.isEditing&&e.activeColorPickerId===t.activeColorPickerId&&e.entities===t.entities),f=({data:e,onUpdate:o,entities:s,onNavigateToEntity:a})=>{let d=(0,r.useRef)(null),c=(0,r.useRef)(null),[f,g]=(0,r.useState)(e.nodes),p=(0,r.useRef)(f);(0,r.useEffect)(()=>{p.current=f},[f]),(0,r.useEffect)(()=>{g(e.nodes)},[e.nodes]),(0,r.useEffect)(()=>()=>{c.current&&cancelAnimationFrame(c.current)},[]);let[h,b]=(0,r.useState)(null),[m,y]=(0,r.useState)(new Set),[w,v]=(0,r.useState)(u),[j,k]=(0,r.useState)(null),[C,N]=(0,r.useState)(null),[S,E]=(0,r.useState)([]),[z,D]=(0,r.useState)(!1),[T,I]=(0,r.useState)(new Map),[M,P]=(0,r.useState)({x:0,y:0}),[$,A]=(0,r.useState)(null),[L,R]=(0,r.useState)({x:0,y:0}),[U,O]=(0,r.useState)(!1),[B,F]=(0,r.useState)({x:0,y:0}),[K,X]=(0,r.useState)({x:0,y:0}),Y=(0,r.useCallback)(()=>{E(t=>{let r=[...t,e];return r.length>20?r.slice(r.length-20):r})},[e]),H=(0,r.useCallback)((t,r)=>{let i=p.current;o({...e,nodes:i.map(e=>e.id===t?{...e,...r}:e)})},[e,o]),W=(0,r.useCallback)(e=>{e.stopPropagation()},[]),q=(0,r.useCallback)((e,t,r)=>{let l=e.target.value;H(t,{[r]:l});let n=e.target.selectionStart||0,o=l.slice(0,n).match(/([@#^])([^@#^\s]*)$/);if(o){let e=o[1],l=o[2].toLowerCase(),a="@"===e?i.EntityType.CHARACTER:"#"===e?i.EntityType.LOCATION:i.EntityType.OBJECT,d=s.filter(e=>e.type===a&&e.name.toLowerCase().includes(l));b({active:!0,trigger:e,query:l,nodeId:t,field:r,cursorIndex:n,selectedIndex:0,filteredEntities:d})}else b(null)},[H,s]),Z=e=>{if(!h)return;let{nodeId:t,field:r,trigger:i,query:l}=h,n=p.current.find(e=>e.id===t);if(!n)return;let o=n[r],s=h.cursorIndex,a=s-(i.length+l.length);if(a<0)return;let d=o.slice(0,a),c=o.slice(s),u="dialogue"===n.type&&"@"===h.trigger;H(t,{[r]:d+e.name+(u?": ":" ")+c}),b(null)},J=(0,r.useCallback)((e,t)=>{if(h&&h.nodeId===t){if("ArrowDown"===e.key){e.preventDefault(),b(e=>e?{...e,selectedIndex:(e.selectedIndex+1)%e.filteredEntities.length}:null);return}else if("ArrowUp"===e.key){e.preventDefault(),b(e=>e?{...e,selectedIndex:(e.selectedIndex-1+e.filteredEntities.length)%e.filteredEntities.length}:null);return}else if("Tab"===e.key||"Enter"===e.key){e.preventDefault(),h.filteredEntities.length>0?Z(h.filteredEntities[h.selectedIndex]):b(null);return}else if("Escape"===e.key)return void b(null)}},[h,s,H]),V=(0,r.useCallback)((e,t)=>{e.stopPropagation(),k(null),y(r=>{let i=new Set(r);e.ctrlKey?i.has(t)?i.delete(t):i.add(t):i.has(t)||(i.clear(),i.add(t));let l=e.ctrlKey||i.has(t)?i:new Set([t]),n=new Map;return p.current.forEach(e=>{l.has(e.id)&&n.set(e.id,{x:e.x,y:e.y})}),I(n),i}),D(!0),P({x:e.clientX,y:e.clientY}),Y()},[Y]),G=(0,r.useCallback)((e,t)=>{e.stopPropagation(),Y(),A(t)},[Y]),Q=(0,r.useCallback)((t,r)=>{if($&&$!==r&&!e.connections.some(e=>e.source===$&&e.target===r)){let t={id:`conn-${Date.now()}`,source:$,target:r};o({...e,nodes:p.current,connections:[...e.connections,t]})}A(null)},[e,o,$]),_=(0,r.useCallback)(e=>{k(t=>t===e?null:e)},[]),ee=(0,r.useCallback)(e=>{v(t=>t.includes(e)?t:[...t,e])},[]);return(0,t.jsxs)("div",{className:"h-full flex flex-col overflow-hidden bg-[#eef2ff] relative",children:[(0,t.jsxs)("div",{className:"h-12 bg-white border-b border-indigo-100 flex items-center justify-between px-4 z-10 shadow-sm shrink-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("button",{onClick:()=>{Y();let t=d.current?.scrollLeft||0,r=d.current?.scrollTop||0,i=d.current?.clientWidth||800,l=d.current?.clientHeight||600,n={id:`node-${Date.now()}`,x:t+i/2-130,y:r+l/2-110,title:"Nouveau point d'intrigue",description:"",color:u[0],type:"story"};o({...e,nodes:[...p.current,n]}),y(new Set([n.id])),N(n.id)},className:"flex items-center gap-1.5 px-3 py-1.5 bg-indigo-600 text-white rounded-lg hover:bg-indigo-700 text-xs font-bold transition-all shadow-md shadow-indigo-100",children:[(0,t.jsx)(l.Plus,{size:14})," AJOUTER NŒUD"]}),(0,t.jsx)("div",{className:"w-px h-6 bg-slate-100 mx-2"}),(0,t.jsx)("div",{className:"text-[10px] uppercase font-bold text-slate-400 tracking-wider",children:m.size>0?`${m.size} S\xc9LECTIONN\xc9(S)`:"Double-cliquez sur le canvas pour créer"})]}),(0,t.jsx)("div",{className:"flex items-center gap-2",children:(0,t.jsx)("button",{onClick:()=>{0===m.size||(Y(),o({nodes:f.filter(e=>!m.has(e.id)),connections:e.connections.filter(e=>!m.has(e.source)&&!m.has(e.target))}),y(new Set))},disabled:0===m.size,className:"p-2 text-red-500 hover:bg-red-50 rounded-lg disabled:opacity-30 transition-colors",title:"Supprimer",children:(0,t.jsx)(n.Trash2,{size:16})})})]}),(0,t.jsxs)("div",{ref:d,className:"flex-1 overflow-auto relative cursor-grab active:cursor-grabbing bg-[#eef2ff]",onMouseDown:e=>{e.ctrlKey||y(new Set),b(null),k(null),N(null),O(!0),F({x:e.clientX,y:e.clientY}),d.current&&X({x:d.current.scrollLeft,y:d.current.scrollTop})},onMouseMove:e=>{let t=d.current?.getBoundingClientRect();if(!t)return;let r=e.clientX,i=e.clientY;if(U&&d.current){let e=r-B.x,t=i-B.y;d.current.scrollLeft=K.x-e,d.current.scrollTop=K.y-t;return}let l=d.current?.scrollLeft||0,n=d.current?.scrollTop||0;if(R({x:r-t.left+l,y:i-t.top+n}),z){if(c.current)return;c.current=requestAnimationFrame(()=>{let e=r-M.x,t=i-M.y;g(r=>r.map(r=>{let i=T.get(r.id);return i?{...r,x:i.x+e,y:i.y+t}:r})),c.current=null})}},onMouseUp:()=>{c.current&&(cancelAnimationFrame(c.current),c.current=null),z&&o({...e,nodes:p.current}),D(!1),O(!1),A(null)},onDoubleClick:t=>{t.preventDefault();let r=d.current?.getBoundingClientRect();if(!r)return;let i=t.clientX-r.left+(d.current?.scrollLeft||0)-130,l=t.clientY-r.top+(d.current?.scrollTop||0)-110;Y();let n={id:`node-${Date.now()}`,x:i,y:l,title:"Nouvel événement",description:"",color:u[0],type:"story"};o({...e,nodes:[...p.current,n]}),y(new Set([n.id])),N(n.id)},style:{backgroundImage:"radial-gradient(#d1d5db 1px, transparent 1px)",backgroundSize:"24px 24px"},children:[(0,t.jsxs)("svg",{className:"absolute top-0 left-0 w-[4000px] h-[4000px] pointer-events-none z-0",children:[e.connections.map(e=>{let r=f.find(t=>t.id===e.source),i=f.find(t=>t.id===e.target);if(!r||!i)return null;let l=r.x+130,n=r.y+110,o=i.x+130,s=i.y+110;return(0,t.jsx)("line",{x1:l,y1:n,x2:o,y2:s,stroke:"#cbd5e1",strokeWidth:"2",markerEnd:"url(#arrowhead)"},e.id)}),$&&(0,t.jsx)("line",{x1:(f.find(e=>e.id===$)?.x||0)+130,y1:(f.find(e=>e.id===$)?.y||0)+110,x2:L.x,y2:L.y,stroke:"#6366f1",strokeWidth:"2",strokeDasharray:"5,5",markerEnd:"url(#arrowhead-blue)"}),(0,t.jsxs)("defs",{children:[(0,t.jsx)("marker",{id:"arrowhead",markerWidth:"10",markerHeight:"7",refX:"28",refY:"3.5",orient:"auto",children:(0,t.jsx)("path",{d:"M0,0 L0,7 L10,3.5 Z",fill:"#cbd5e1"})}),(0,t.jsx)("marker",{id:"arrowhead-blue",markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto",children:(0,t.jsx)("path",{d:"M0,0 L0,7 L10,3.5 Z",fill:"#6366f1"})})]})]}),f.map(e=>(0,t.jsx)(x,{node:e,isSelected:m.has(e.id),isEditing:C===e.id,activeColorPickerId:j,entities:s,savedColors:w,onMouseDown:V,onMouseUp:Q,onStartConnection:G,onUpdate:H,onSetEditing:N,onToggleColorPicker:_,onSaveColor:ee,onNavigateToEntity:a,onInputFocus:W,onInputCheckAutocomplete:q,onKeyDownInInput:J},e.id))]}),h&&(0,t.jsxs)("div",{className:"fixed z-50 bg-white rounded-xl shadow-2xl border border-indigo-100 w-64 max-h-48 overflow-y-auto",style:{left:"50%",top:"50%",transform:"translate(-50%, -50%)"},children:[(0,t.jsxs)("div",{className:"px-3 py-2 bg-indigo-600 text-white text-[10px] font-black uppercase tracking-widest",children:["Insérer ","@"===h.trigger?"Personnage":"#"===h.trigger?"Lieu":"Objet"]}),(0,t.jsx)("div",{className:"divide-y divide-slate-50",children:h.filteredEntities.length>0?h.filteredEntities.map((e,r)=>(0,t.jsx)("button",{className:`w-full text-left px-4 py-3 text-xs flex items-center gap-3 hover:bg-indigo-50 transition-colors ${r===h.selectedIndex?"bg-indigo-50 text-indigo-700 font-bold":"text-slate-700"}`,onClick:()=>Z(e),children:e.name},e.id)):(0,t.jsx)("div",{className:"p-4 text-xs text-slate-400 italic text-center",children:"Aucun résultat"})})]})]})};var g=e.i(24224),p=e.i(12856);function h(){let{project:e,projectId:r,updateProject:i}=(0,g.useProjectContext)(),l=(0,p.useRouter)();return(0,t.jsx)(f,{data:e.workflow||{nodes:[],connections:[]},onUpdate:e=>i({workflow:e}),entities:e.entities||[],onNavigateToEntity:()=>l.push(`/project/${r}/world`)})}e.s(["default",()=>h],38562)}]); \ No newline at end of file diff --git a/.next/static/chunks/070a78325e29fc80.js b/.next/static/chunks/aa7417042f808088.js similarity index 88% rename from .next/static/chunks/070a78325e29fc80.js rename to .next/static/chunks/aa7417042f808088.js index b5089b0..0a57699 100644 --- a/.next/static/chunks/070a78325e29fc80.js +++ b/.next/static/chunks/aa7417042f808088.js @@ -1 +1 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,44026,e=>{"use strict";let t=(0,e.i(78445).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["Loader2",()=>t],44026)},62746,e=>{"use strict";let t=(0,e.i(78445).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);e.s(["BookOpen",()=>t],62746)},50147,e=>{"use strict";let t=(0,e.i(78445).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);e.s(["User",()=>t],50147)},22508,e=>{"use strict";let t=(0,e.i(78445).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",()=>t],22508)},78445,e=>{"use strict";var t=e.i(59760);let s=(...e)=>e.filter((e,t,s)=>!!e&&""!==e.trim()&&s.indexOf(e)===t).join(" ").trim(),i=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,s)=>s?s.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var a={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let r=(0,t.forwardRef)(({color:e="currentColor",size:i=24,strokeWidth:r=2,absoluteStrokeWidth:l,className:n="",children:o,iconNode:d,...c},u)=>(0,t.createElement)("svg",{ref:u,...a,width:i,height:i,stroke:e,strokeWidth:l?24*Number(r)/Number(i):r,className:s("lucide",n),...!o&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(c)&&{"aria-hidden":"true"},...c},[...d.map(([e,s])=>(0,t.createElement)(e,s)),...Array.isArray(o)?o:[o]])),l=(e,a)=>{let l=(0,t.forwardRef)(({className:l,...n},o)=>(0,t.createElement)(r,{ref:o,iconNode:a,className:s(`lucide-${i(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,l),...n}));return l.displayName=i(e),l};e.s(["default",()=>l],78445)},12856,(e,t,s)=>{t.exports=e.r(96479)},33907,e=>{"use strict";var t,s=((t={}).CHARACTER="Personnage",t.LOCATION="Lieu",t.OBJECT="Objet",t.NOTE="Note",t);e.s(["EntityType",()=>s])},4915,e=>{"use strict";let t=(0,e.i(78445).default)("pen-line",[["path",{d:"M13 21h8",key:"1jsn5i"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]);e.s(["Edit3",()=>t],4915)},54956,e=>{"use strict";let t=(0,e.i(78445).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);e.s(["Target",()=>t],54956)},49491,e=>{"use strict";let t=(0,e.i(78445).default)("flame",[["path",{d:"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4",key:"1slcih"}]]);e.s(["Flame",()=>t],49491)},43331,e=>{"use strict";let t=(0,e.i(78445).default)("book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]]);e.s(["Book",()=>t],43331)},8011,71143,e=>{"use strict";var t=e.i(59760),s=e.i(4301),i=e.i(33907);let a="Nouveau Roman",r="Auteur Inconnu",l={id:"chap-1",title:"Chapitre 1",content:"

Il était une fois...

",summary:"Début de l'histoire."},n={[i.EntityType.CHARACTER]:"👤",[i.EntityType.LOCATION]:"🏰",[i.EntityType.OBJECT]:"🗝️",[i.EntityType.NOTE]:"📝"},o={[i.EntityType.CHARACTER]:"bg-blue-100 text-blue-800 border-blue-200",[i.EntityType.LOCATION]:"bg-green-100 text-green-800 border-green-200",[i.EntityType.OBJECT]:"bg-amber-100 text-amber-800 border-amber-200",[i.EntityType.NOTE]:"bg-gray-100 text-gray-800 border-gray-200"};e.s(["ARCHETYPES",0,["Le Héros","L'Ombre / Le Méchant","Le Mentor","Le Gardien du Seuil","Le Shapeshifter (Changeforme)","Le Trickster (Farceur)","L'Allié","L'Élu","Le Rebelle","Le Séducteur","Le Sage","Le Guerrier","L'Innocent"],"DEFAULT_AUTHOR",0,r,"DEFAULT_BOOK_TITLE",0,a,"ENTITY_COLORS",0,o,"ENTITY_ICONS",0,n,"EYE_COLORS",0,["Marron","Bleu","Vert","Noisette","Gris","Noir","Vairons","Ambre"],"GENRES",0,["Fantasy","Science-Fiction","Thriller / Polar","Romance","Historique","Horreur","Aventure","Contemporain","Jeunesse / Young Adult","Dystopie"],"HAIR_COLORS",0,["Brun","Noir","Blond","Roux","Auburn","Gris","Blanc","Châtain","Chauve","Teinture (Bleu/Rose/Etc)"],"INITIAL_CHAPTER",0,l,"POV_OPTIONS",0,["1ère personne (Je)","3ème personne (Limitée au protagoniste)","3ème personne (Omnisciente)","Multi-points de vue (Alterné)"],"TENSE_OPTIONS",0,["Passé (Passé simple / Imparfait)","Présent de narration"],"TONES",0,["Sombre & Sérieux","Léger & Humoristique","Épique & Grandiose","Mélancolique","Mystérieux","Optimiste","Cynique","Romantique"]],71143),e.s(["useProjects",0,e=>{let[i,n]=(0,t.useState)([]),[o,d]=(0,t.useState)(null),[c,u]=(0,t.useState)(!1);(0,t.useEffect)(()=>{e?(async()=>{u(!0);try{let e=(await s.default.projects.list()||[]).map(e=>({id:e.id,title:e.title,author:e.author,lastModified:new Date(e.updatedAt).getTime(),chapters:[],entities:[],ideas:[],settings:e.settings||void 0}));n(e)}catch(e){console.error("Failed to load projects",e)}finally{u(!1)}})():n([])},[e]),(0,t.useEffect)(()=>{o&&(async()=>{try{let e=await s.default.projects.get(o),t={id:e.id,title:e.title,author:e.author,lastModified:new Date(e.updatedAt).getTime(),settings:e.settings||void 0,styleGuide:e.styleGuide||void 0,chapters:(e.chapters||[]).map(e=>({id:e.id,title:e.title,content:e.content,summary:e.summary})),entities:(e.entities||[]).map(e=>({id:e.id,type:e.type,name:e.name,description:e.description,details:e.details,storyContext:e.storyContext,attributes:e.attributes,customValues:e.customValues})),ideas:(e.ideas||[]).map(e=>({id:e.id,title:e.title,description:e.description,status:e.status,category:e.category,createdAt:new Date(e.createdAt).getTime()})),workflow:{nodes:(e.plotNodes||[]).map(e=>({id:e.id,x:e.x,y:e.y,title:e.title,description:e.description,color:e.color,type:e.type})),connections:(e.plotConnections||[]).map(e=>({id:e.id,source:e.source,target:e.target}))}};n(e=>e.map(e=>e.id===o?t:e))}catch(e){console.error("Failed to load project details",e)}})()},[o]);let p=async(e,t)=>{try{let i=await s.default.chapters.create({projectId:e,title:t.title||"New Chapter",content:t.content||"",summary:t.summary||void 0});return n(t=>t.map(t=>t.id!==e?t:{...t,chapters:[...t.chapters,{id:i.id,title:i.title,content:i.content,summary:i.summary}]})),i.id}catch(e){return console.error("Failed to add chapter",e),null}};return{projects:i,currentProjectId:o,setCurrentProjectId:d,createProject:async()=>{if(e)try{let t=await s.default.projects.create({title:a,author:e.name||r,settings:{genre:"Fantasy",targetAudience:"Adult",tone:"Epic"}}),i={id:t.id,title:t.title,author:t.author,lastModified:Date.now(),chapters:[],entities:[],ideas:[],settings:t.settings};return n(e=>[...e,i]),await p(t.id,l),t.id}catch(e){console.error("Failed to create project",e)}},updateProject:async(e,t)=>{n(s=>s.map(s=>s.id===e?{...s,...t}:s));try{let i={};void 0!==t.title&&(i.title=t.title),void 0!==t.author&&(i.author=t.author),void 0!==t.settings&&(i.settings=t.settings),void 0!==t.styleGuide&&(i.styleGuide=t.styleGuide),await s.default.projects.update(e,i)}catch(e){console.error("Failed to update project",e)}},addChapter:p,updateChapter:async(e,t,i)=>{n(s=>s.map(s=>s.id!==e?s:{...s,chapters:s.chapters.map(e=>e.id===t?{...e,...i}:e)}));try{await s.default.chapters.update(t,i)}catch(e){console.error("Failed to update chapter",e)}},createEntity:async(e,t,i)=>{try{let a=await s.default.entities.create({projectId:e,type:t,name:i?.name||`Nouveau ${t}`,description:i?.description||"",details:i?.details||"",attributes:i?.attributes||void 0,customValues:i?.customValues||void 0});return n(t=>t.map(t=>t.id!==e?t:{...t,entities:[...t.entities,{id:a.id,type:a.type,name:a.name,description:a.description,details:a.details,attributes:a.attributes,customValues:a.customValues||{}}]})),a.id}catch(e){throw console.error("Failed to create entity",e),e}},updateEntity:async(e,t,i)=>{n(s=>s.map(s=>s.id!==e?s:{...s,entities:s.entities.map(e=>e.id===t?{...e,...i}:e)}));try{await s.default.entities.update(t,i)}catch(e){console.error("Failed to update entity",e)}},deleteEntity:async(e,t)=>{n(s=>s.map(s=>s.id!==e?s:{...s,entities:s.entities.filter(e=>e.id!==t)}));try{await s.default.entities.delete(t)}catch(e){console.error("Failed to delete entity",e)}},deleteProject:async e=>{try{await s.default.projects.delete(e),n(t=>t.filter(t=>t.id!==e)),o===e&&d(null)}catch(e){console.error("Failed to delete project",e)}}}}],8011)},30103,86180,e=>{"use strict";var t=e.i(78445);let s=(0,t.default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",()=>s],30103);let i=(0,t.default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);e.s(["LogOut",()=>i],86180)},23439,e=>{"use strict";var t=e.i(30064),s=e.i(12856),i=e.i(18404),a=e.i(8011),r=e.i(22508),l=e.i(43331);let n=(0,e.i(78445).default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);var o=e.i(30103),d=e.i(86180),c=e.i(50147),u=e.i(54956),p=e.i(49491),h=e.i(4915);let m=({user:e,projects:s,onSelect:i,onCreate:a,onLogout:m,onPricing:x,onProfile:g})=>(0,t.jsx)("div",{className:"min-h-screen bg-[#eef2ff] p-8 font-sans",children:(0,t.jsxs)("div",{className:"max-w-6xl mx-auto space-y-8",children:[(0,t.jsxs)("div",{className:"flex flex-col md:flex-row justify-between items-center bg-white p-8 rounded-[2rem] shadow-sm border border-indigo-100 gap-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-6",children:[(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("img",{src:e.avatar,className:"w-20 h-20 rounded-full border-4 border-slate-50 shadow-lg object-cover",alt:"Avatar"}),(0,t.jsx)("div",{className:"absolute -bottom-1 -right-1 bg-green-500 w-5 h-5 rounded-full border-4 border-white"})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("h2",{className:"text-3xl font-black text-slate-900",children:["Bonjour, ",e.name," 👋"]}),(0,t.jsxs)("div",{className:"flex items-center gap-3 mt-1",children:[(0,t.jsx)("span",{className:"px-3 py-1 rounded-full bg-indigo-100 text-indigo-700 text-[10px] uppercase font-black tracking-widest",children:e.subscription.plan}),(0,t.jsx)("span",{className:"text-slate-400 text-xs font-medium",children:"Membre depuis le 24 janv."})]})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsxs)("button",{onClick:g,className:"bg-slate-50 text-slate-700 px-5 py-2.5 rounded-xl text-sm font-bold hover:bg-slate-100 transition-all flex items-center gap-2 border border-slate-200",children:[(0,t.jsx)(c.User,{size:18})," Mon Profil"]}),(0,t.jsx)("button",{onClick:m,className:"p-3 text-slate-400 hover:text-red-500 rounded-full hover:bg-red-50 transition-colors",children:(0,t.jsx)(d.LogOut,{size:20})})]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[(0,t.jsxs)("div",{className:"bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4",children:[(0,t.jsx)("div",{className:"bg-orange-100 p-3 rounded-2xl text-orange-600",children:(0,t.jsx)(p.Flame,{size:24})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-xs font-bold text-slate-400 uppercase tracking-wider",children:"Série actuelle"}),(0,t.jsxs)("p",{className:"text-2xl font-black text-slate-900",children:[e.stats.writingStreak," Jours"]})]})]}),(0,t.jsxs)("div",{className:"bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4",children:[(0,t.jsx)("div",{className:"bg-blue-100 p-3 rounded-2xl text-blue-600",children:(0,t.jsx)(h.Edit3,{size:24})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-xs font-bold text-slate-400 uppercase tracking-wider",children:"Mots écrits"}),(0,t.jsx)("p",{className:"text-2xl font-black text-slate-900",children:e.stats.totalWordsWritten.toLocaleString()})]})]}),(0,t.jsxs)("div",{className:"bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4",children:[(0,t.jsx)("div",{className:"bg-indigo-100 p-3 rounded-2xl text-indigo-600",children:(0,t.jsx)(u.Target,{size:24})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-xs font-bold text-slate-400 uppercase tracking-wider",children:"Objectif du jour"}),(0,t.jsxs)("p",{className:"text-2xl font-black text-slate-900",children:[e.preferences.dailyWordGoal," Mots"]})]})]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-8",children:[(0,t.jsxs)("div",{className:"lg:col-span-2 space-y-4",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,t.jsx)("h3",{className:"text-2xl font-black text-slate-900",children:"Mes Romans"}),(0,t.jsxs)("button",{onClick:a,className:"flex items-center gap-2 bg-blue-600 text-white px-6 py-3 rounded-2xl font-bold hover:bg-blue-700 transition-all shadow-xl shadow-blue-200",children:[(0,t.jsx)(r.Plus,{size:20})," Écrire un nouveau livre"]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[s.map(e=>(0,t.jsxs)("div",{onClick:()=>i(e.id),className:"bg-white p-8 rounded-[2.5rem] border border-indigo-50 shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"bg-blue-50 w-12 h-12 rounded-2xl flex items-center justify-center text-blue-600 mb-6 group-hover:bg-blue-600 group-hover:text-white transition-colors",children:(0,t.jsx)(l.Book,{size:24})}),(0,t.jsx)("h4",{className:"font-black text-slate-900 text-xl truncate mb-1",children:e.title}),(0,t.jsxs)("p",{className:"text-slate-400 text-sm",children:["Dernière modification : ",new Date(e.lastModified).toLocaleDateString()]})]}),(0,t.jsxs)("div",{className:"flex justify-between items-center text-[10px] text-slate-400 font-black uppercase tracking-widest border-t border-slate-50 pt-4",children:[(0,t.jsxs)("span",{children:[e.chapters.length," Chapitres"]}),(0,t.jsx)(o.ChevronRight,{size:20,className:"group-hover:text-blue-600 transition-transform group-hover:translate-x-1 duration-300"})]})]},e.id)),0===s.length&&(0,t.jsxs)("div",{className:"col-span-2 py-24 bg-white rounded-[3rem] border-2 border-dashed border-indigo-100 flex flex-col items-center justify-center text-indigo-300",children:[(0,t.jsx)(l.Book,{size:64,className:"mb-6 opacity-20"}),(0,t.jsx)("p",{className:"font-bold text-lg",children:"Prêt à commencer votre premier roman ?"}),(0,t.jsx)("button",{onClick:a,className:"mt-4 text-blue-600 font-bold hover:underline",children:"Créer un projet maintenant"})]})]})]}),(0,t.jsx)("div",{className:"space-y-6",children:(0,t.jsxs)("div",{className:"bg-slate-900 text-white p-8 rounded-[2.5rem] shadow-xl relative overflow-hidden",children:[(0,t.jsx)("div",{className:"absolute top-0 right-0 w-32 h-32 bg-indigo-500/20 blur-[60px] -z-1"}),(0,t.jsxs)("h3",{className:"font-black text-xl mb-6 flex items-center gap-2",children:[(0,t.jsx)(n,{size:20,className:"text-yellow-400"})," Utilisation"]}),(0,t.jsxs)("div",{className:"space-y-8",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex justify-between text-[10px] font-black text-slate-400 uppercase tracking-widest mb-2",children:[(0,t.jsx)("span",{children:"Actions IA"}),(0,t.jsxs)("span",{children:[e.usage.aiActionsCurrent," / ",999999===e.usage.aiActionsLimit?"∞":e.usage.aiActionsLimit]})]}),(0,t.jsx)("div",{className:"h-3 w-full bg-slate-800 rounded-full overflow-hidden",children:(0,t.jsx)("div",{className:"h-full bg-blue-500 transition-all duration-1000 shadow-[0_0_10px_rgba(59,130,246,0.5)]",style:{width:`${Math.min(100,e.usage.aiActionsCurrent/e.usage.aiActionsLimit*100)}%`}})})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex justify-between text-[10px] font-black text-slate-400 uppercase tracking-widest mb-2",children:[(0,t.jsx)("span",{children:"Emplacements Roman"}),(0,t.jsxs)("span",{children:[s.length," / ",e.usage.projectsLimit]})]}),(0,t.jsx)("div",{className:"h-3 w-full bg-slate-800 rounded-full overflow-hidden",children:(0,t.jsx)("div",{className:"h-full bg-indigo-500 transition-all duration-1000 shadow-[0_0_10px_rgba(99,102,241,0.5)]",style:{width:`${Math.min(100,s.length/e.usage.projectsLimit*100)}%`}})})]})]}),(0,t.jsx)("button",{onClick:x,className:"w-full mt-10 bg-white/10 hover:bg-white/20 py-4 rounded-2xl text-sm font-bold transition-all",children:"Upgrade Plan"})]})})]})]})});var x=e.i(44026),g=e.i(62746),b=e.i(59760);function f(){let e=(0,s.useRouter)(),{user:r,logout:l,loading:n}=(0,i.useAuthContext)(),{projects:o,setCurrentProjectId:d,createProject:c}=(0,a.useProjects)(r);return((0,b.useEffect)(()=>{n||r||e.replace("/login")},[r,n,e]),n||!r)?(0,t.jsxs)("div",{className:"h-screen w-full flex flex-col items-center justify-center bg-slate-900 text-white",children:[(0,t.jsx)(x.Loader2,{className:"animate-spin text-blue-500 mb-4",size:48}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(g.BookOpen,{className:"text-blue-500",size:20}),(0,t.jsx)("span",{className:"text-lg font-bold",children:"PlumeIA"})]})]}):(0,t.jsx)(m,{user:r,projects:o,onSelect:t=>{d(t),e.push(`/project/${t}`)},onCreate:async()=>{let t=await c();t&&(d(t),e.push(`/project/${t}`))},onLogout:()=>{l(),e.push("/")},onPricing:()=>e.push("/pricing"),onProfile:()=>e.push("/profile")})}e.s(["default",()=>f],23439)}]); \ No newline at end of file +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,44026,e=>{"use strict";let t=(0,e.i(78445).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["Loader2",()=>t],44026)},50147,e=>{"use strict";let t=(0,e.i(78445).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);e.s(["User",()=>t],50147)},78445,e=>{"use strict";var t=e.i(59760);let s=(...e)=>e.filter((e,t,s)=>!!e&&""!==e.trim()&&s.indexOf(e)===t).join(" ").trim(),i=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,s)=>s?s.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var a={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let r=(0,t.forwardRef)(({color:e="currentColor",size:i=24,strokeWidth:r=2,absoluteStrokeWidth:l,className:n="",children:o,iconNode:d,...c},u)=>(0,t.createElement)("svg",{ref:u,...a,width:i,height:i,stroke:e,strokeWidth:l?24*Number(r)/Number(i):r,className:s("lucide",n),...!o&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(c)&&{"aria-hidden":"true"},...c},[...d.map(([e,s])=>(0,t.createElement)(e,s)),...Array.isArray(o)?o:[o]])),l=(e,a)=>{let l=(0,t.forwardRef)(({className:l,...n},o)=>(0,t.createElement)(r,{ref:o,iconNode:a,className:s(`lucide-${i(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,l),...n}));return l.displayName=i(e),l};e.s(["default",()=>l],78445)},12856,(e,t,s)=>{t.exports=e.r(96479)},62746,e=>{"use strict";let t=(0,e.i(78445).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);e.s(["BookOpen",()=>t],62746)},33907,e=>{"use strict";var t,s=((t={}).CHARACTER="Personnage",t.LOCATION="Lieu",t.OBJECT="Objet",t.NOTE="Note",t);e.s(["EntityType",()=>s])},22508,e=>{"use strict";let t=(0,e.i(78445).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",()=>t],22508)},4915,e=>{"use strict";let t=(0,e.i(78445).default)("pen-line",[["path",{d:"M13 21h8",key:"1jsn5i"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]);e.s(["Edit3",()=>t],4915)},54956,e=>{"use strict";let t=(0,e.i(78445).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);e.s(["Target",()=>t],54956)},49491,e=>{"use strict";let t=(0,e.i(78445).default)("flame",[["path",{d:"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4",key:"1slcih"}]]);e.s(["Flame",()=>t],49491)},43331,e=>{"use strict";let t=(0,e.i(78445).default)("book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]]);e.s(["Book",()=>t],43331)},8011,71143,e=>{"use strict";var t=e.i(59760),s=e.i(4301),i=e.i(33907);let a="Nouveau Roman",r="Auteur Inconnu",l={id:"chap-1",title:"Chapitre 1",content:"

Il était une fois...

",summary:"Début de l'histoire."},n={[i.EntityType.CHARACTER]:"👤",[i.EntityType.LOCATION]:"🏰",[i.EntityType.OBJECT]:"🗝️",[i.EntityType.NOTE]:"📝"},o={[i.EntityType.CHARACTER]:"bg-blue-100 text-blue-800 border-blue-200",[i.EntityType.LOCATION]:"bg-green-100 text-green-800 border-green-200",[i.EntityType.OBJECT]:"bg-amber-100 text-amber-800 border-amber-200",[i.EntityType.NOTE]:"bg-gray-100 text-gray-800 border-gray-200"};e.s(["ARCHETYPES",0,["Le Héros","L'Ombre / Le Méchant","Le Mentor","Le Gardien du Seuil","Le Shapeshifter (Changeforme)","Le Trickster (Farceur)","L'Allié","L'Élu","Le Rebelle","Le Séducteur","Le Sage","Le Guerrier","L'Innocent"],"DEFAULT_AUTHOR",0,r,"DEFAULT_BOOK_TITLE",0,a,"ENTITY_COLORS",0,o,"ENTITY_ICONS",0,n,"EYE_COLORS",0,["Marron","Bleu","Vert","Noisette","Gris","Noir","Vairons","Ambre"],"GENRES",0,["Fantasy","Science-Fiction","Thriller / Polar","Romance","Historique","Horreur","Aventure","Contemporain","Jeunesse / Young Adult","Dystopie"],"HAIR_COLORS",0,["Brun","Noir","Blond","Roux","Auburn","Gris","Blanc","Châtain","Chauve","Teinture (Bleu/Rose/Etc)"],"INITIAL_CHAPTER",0,l,"POV_OPTIONS",0,["1ère personne (Je)","3ème personne (Limitée au protagoniste)","3ème personne (Omnisciente)","Multi-points de vue (Alterné)"],"TENSE_OPTIONS",0,["Passé (Passé simple / Imparfait)","Présent de narration"],"TONES",0,["Sombre & Sérieux","Léger & Humoristique","Épique & Grandiose","Mélancolique","Mystérieux","Optimiste","Cynique","Romantique"]],71143),e.s(["useProjects",0,e=>{let[i,n]=(0,t.useState)([]),[o,d]=(0,t.useState)(null),[c,u]=(0,t.useState)(!1);(0,t.useEffect)(()=>{e?(async()=>{u(!0);try{let e=(await s.default.projects.list()||[]).map(e=>({id:e.id,title:e.title,author:e.author,lastModified:new Date(e.updatedAt).getTime(),chapters:[],entities:[],ideas:[],settings:e.settings||void 0}));n(e)}catch(e){console.error("Failed to load projects",e)}finally{u(!1)}})():n([])},[e]),(0,t.useEffect)(()=>{o&&(async()=>{try{let e=await s.default.projects.get(o),t={id:e.id,title:e.title,author:e.author,lastModified:new Date(e.updatedAt).getTime(),settings:e.settings||void 0,styleGuide:e.styleGuide||void 0,chapters:(e.chapters||[]).map(e=>({id:e.id,title:e.title,content:e.content,summary:e.summary})),entities:(e.entities||[]).map(e=>({id:e.id,type:e.type,name:e.name,description:e.description,details:e.details,storyContext:e.storyContext,attributes:e.attributes,customValues:e.customValues})),ideas:(e.ideas||[]).map(e=>({id:e.id,title:e.title,description:e.description,status:e.status,category:e.category,createdAt:new Date(e.createdAt).getTime()})),workflow:{nodes:(e.plotNodes||[]).map(e=>({id:e.id,x:e.x,y:e.y,title:e.title,description:e.description,color:e.color,type:e.type})),connections:(e.plotConnections||[]).map(e=>({id:e.id,source:e.source,target:e.target}))}};n(e=>e.map(e=>e.id===o?t:e))}catch(e){console.error("Failed to load project details",e)}})()},[o]);let p=async(e,t)=>{try{let i=await s.default.chapters.create({projectId:e,title:t.title||"New Chapter",content:t.content||"",summary:t.summary||void 0});return n(t=>t.map(t=>t.id!==e?t:{...t,chapters:[...t.chapters,{id:i.id,title:i.title,content:i.content,summary:i.summary}]})),i.id}catch(e){return console.error("Failed to add chapter",e),null}};return{projects:i,currentProjectId:o,setCurrentProjectId:d,createProject:async()=>{if(e)try{let t=await s.default.projects.create({title:a,author:e.name||r,settings:{genre:"Fantasy",targetAudience:"Adult",tone:"Epic"}}),i={id:t.id,title:t.title,author:t.author,lastModified:Date.now(),chapters:[],entities:[],ideas:[],settings:t.settings};return n(e=>[...e,i]),await p(t.id,l),t.id}catch(e){console.error("Failed to create project",e)}},updateProject:async(e,t)=>{n(s=>s.map(s=>s.id===e?{...s,...t}:s));try{let i={};void 0!==t.title&&(i.title=t.title),void 0!==t.author&&(i.author=t.author),void 0!==t.settings&&(i.settings=t.settings),void 0!==t.styleGuide&&(i.styleGuide=t.styleGuide),await s.default.projects.update(e,i)}catch(e){console.error("Failed to update project",e)}},addChapter:p,updateChapter:async(e,t,i)=>{n(s=>s.map(s=>s.id!==e?s:{...s,chapters:s.chapters.map(e=>e.id===t?{...e,...i}:e)}));try{await s.default.chapters.update(t,i)}catch(e){console.error("Failed to update chapter",e)}},createEntity:async(e,t,i)=>{try{let a=await s.default.entities.create({projectId:e,type:t,name:i?.name||`Nouveau ${t}`,description:i?.description||"",details:i?.details||"",attributes:i?.attributes||void 0,customValues:i?.customValues||void 0});return n(t=>t.map(t=>t.id!==e?t:{...t,entities:[...t.entities,{id:a.id,type:a.type,name:a.name,description:a.description,details:a.details,attributes:a.attributes,customValues:a.customValues||{}}]})),a.id}catch(e){throw console.error("Failed to create entity",e),e}},updateEntity:async(e,t,i)=>{n(s=>s.map(s=>s.id!==e?s:{...s,entities:s.entities.map(e=>e.id===t?{...e,...i}:e)}));try{await s.default.entities.update(t,i)}catch(e){console.error("Failed to update entity",e)}},deleteEntity:async(e,t)=>{n(s=>s.map(s=>s.id!==e?s:{...s,entities:s.entities.filter(e=>e.id!==t)}));try{await s.default.entities.delete(t)}catch(e){console.error("Failed to delete entity",e)}},deleteProject:async e=>{try{await s.default.projects.delete(e),n(t=>t.filter(t=>t.id!==e)),o===e&&d(null)}catch(e){console.error("Failed to delete project",e)}}}}],8011)},30103,86180,e=>{"use strict";var t=e.i(78445);let s=(0,t.default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",()=>s],30103);let i=(0,t.default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);e.s(["LogOut",()=>i],86180)},23439,e=>{"use strict";var t=e.i(30064),s=e.i(12856),i=e.i(18404),a=e.i(8011),r=e.i(22508),l=e.i(43331);let n=(0,e.i(78445).default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);var o=e.i(30103),d=e.i(86180),c=e.i(50147),u=e.i(54956),p=e.i(49491),h=e.i(4915);let m=({user:e,projects:s,onSelect:i,onCreate:a,onLogout:m,onPricing:x,onProfile:g})=>(0,t.jsx)("div",{className:"min-h-screen bg-[#eef2ff] p-8 font-sans",children:(0,t.jsxs)("div",{className:"max-w-6xl mx-auto space-y-8",children:[(0,t.jsxs)("div",{className:"flex flex-col md:flex-row justify-between items-center bg-white p-8 rounded-[2rem] shadow-sm border border-indigo-100 gap-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-6",children:[(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("img",{src:e.avatar,className:"w-20 h-20 rounded-full border-4 border-slate-50 shadow-lg object-cover",alt:"Avatar"}),(0,t.jsx)("div",{className:"absolute -bottom-1 -right-1 bg-green-500 w-5 h-5 rounded-full border-4 border-white"})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("h2",{className:"text-3xl font-black text-slate-900",children:["Bonjour, ",e.name," 👋"]}),(0,t.jsxs)("div",{className:"flex items-center gap-3 mt-1",children:[(0,t.jsx)("span",{className:"px-3 py-1 rounded-full bg-indigo-100 text-indigo-700 text-[10px] uppercase font-black tracking-widest",children:e.subscription.plan}),(0,t.jsx)("span",{className:"text-slate-400 text-xs font-medium",children:"Membre depuis le 24 janv."})]})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsxs)("button",{onClick:g,className:"bg-slate-50 text-slate-700 px-5 py-2.5 rounded-xl text-sm font-bold hover:bg-slate-100 transition-all flex items-center gap-2 border border-slate-200",children:[(0,t.jsx)(c.User,{size:18})," Mon Profil"]}),(0,t.jsx)("button",{onClick:m,className:"p-3 text-slate-400 hover:text-red-500 rounded-full hover:bg-red-50 transition-colors",children:(0,t.jsx)(d.LogOut,{size:20})})]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[(0,t.jsxs)("div",{className:"bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4",children:[(0,t.jsx)("div",{className:"bg-orange-100 p-3 rounded-2xl text-orange-600",children:(0,t.jsx)(p.Flame,{size:24})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-xs font-bold text-slate-400 uppercase tracking-wider",children:"Série actuelle"}),(0,t.jsxs)("p",{className:"text-2xl font-black text-slate-900",children:[e.stats.writingStreak," Jours"]})]})]}),(0,t.jsxs)("div",{className:"bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4",children:[(0,t.jsx)("div",{className:"bg-blue-100 p-3 rounded-2xl text-blue-600",children:(0,t.jsx)(h.Edit3,{size:24})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-xs font-bold text-slate-400 uppercase tracking-wider",children:"Mots écrits"}),(0,t.jsx)("p",{className:"text-2xl font-black text-slate-900",children:e.stats.totalWordsWritten.toLocaleString()})]})]}),(0,t.jsxs)("div",{className:"bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4",children:[(0,t.jsx)("div",{className:"bg-indigo-100 p-3 rounded-2xl text-indigo-600",children:(0,t.jsx)(u.Target,{size:24})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-xs font-bold text-slate-400 uppercase tracking-wider",children:"Objectif du jour"}),(0,t.jsxs)("p",{className:"text-2xl font-black text-slate-900",children:[e.preferences.dailyWordGoal," Mots"]})]})]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-8",children:[(0,t.jsxs)("div",{className:"lg:col-span-2 space-y-4",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,t.jsx)("h3",{className:"text-2xl font-black text-slate-900",children:"Mes Romans"}),(0,t.jsxs)("button",{onClick:a,className:"flex items-center gap-2 bg-blue-600 text-white px-6 py-3 rounded-2xl font-bold hover:bg-blue-700 transition-all shadow-xl shadow-blue-200",children:[(0,t.jsx)(r.Plus,{size:20})," Écrire un nouveau livre"]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[s.map(e=>(0,t.jsxs)("div",{onClick:()=>i(e.id),className:"bg-white p-8 rounded-[2.5rem] border border-indigo-50 shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"bg-blue-50 w-12 h-12 rounded-2xl flex items-center justify-center text-blue-600 mb-6 group-hover:bg-blue-600 group-hover:text-white transition-colors",children:(0,t.jsx)(l.Book,{size:24})}),(0,t.jsx)("h4",{className:"font-black text-slate-900 text-xl truncate mb-1",children:e.title}),(0,t.jsxs)("p",{className:"text-slate-400 text-sm",children:["Dernière modification : ",new Date(e.lastModified).toLocaleDateString()]})]}),(0,t.jsxs)("div",{className:"flex justify-between items-center text-[10px] text-slate-400 font-black uppercase tracking-widest border-t border-slate-50 pt-4",children:[(0,t.jsxs)("span",{children:[e.chapters.length," Chapitres"]}),(0,t.jsx)(o.ChevronRight,{size:20,className:"group-hover:text-blue-600 transition-transform group-hover:translate-x-1 duration-300"})]})]},e.id)),0===s.length&&(0,t.jsxs)("div",{className:"col-span-2 py-24 bg-white rounded-[3rem] border-2 border-dashed border-indigo-100 flex flex-col items-center justify-center text-indigo-300",children:[(0,t.jsx)(l.Book,{size:64,className:"mb-6 opacity-20"}),(0,t.jsx)("p",{className:"font-bold text-lg",children:"Prêt à commencer votre premier roman ?"}),(0,t.jsx)("button",{onClick:a,className:"mt-4 text-blue-600 font-bold hover:underline",children:"Créer un projet maintenant"})]})]})]}),(0,t.jsx)("div",{className:"space-y-6",children:(0,t.jsxs)("div",{className:"bg-slate-900 text-white p-8 rounded-[2.5rem] shadow-xl relative overflow-hidden",children:[(0,t.jsx)("div",{className:"absolute top-0 right-0 w-32 h-32 bg-indigo-500/20 blur-[60px] -z-1"}),(0,t.jsxs)("h3",{className:"font-black text-xl mb-6 flex items-center gap-2",children:[(0,t.jsx)(n,{size:20,className:"text-yellow-400"})," Utilisation"]}),(0,t.jsxs)("div",{className:"space-y-8",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex justify-between text-[10px] font-black text-slate-400 uppercase tracking-widest mb-2",children:[(0,t.jsx)("span",{children:"Actions IA"}),(0,t.jsxs)("span",{children:[e.usage.aiActionsCurrent," / ",999999===e.usage.aiActionsLimit?"∞":e.usage.aiActionsLimit]})]}),(0,t.jsx)("div",{className:"h-3 w-full bg-slate-800 rounded-full overflow-hidden",children:(0,t.jsx)("div",{className:"h-full bg-blue-500 transition-all duration-1000 shadow-[0_0_10px_rgba(59,130,246,0.5)]",style:{width:`${Math.min(100,e.usage.aiActionsCurrent/e.usage.aiActionsLimit*100)}%`}})})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex justify-between text-[10px] font-black text-slate-400 uppercase tracking-widest mb-2",children:[(0,t.jsx)("span",{children:"Emplacements Roman"}),(0,t.jsxs)("span",{children:[s.length," / ",e.usage.projectsLimit]})]}),(0,t.jsx)("div",{className:"h-3 w-full bg-slate-800 rounded-full overflow-hidden",children:(0,t.jsx)("div",{className:"h-full bg-indigo-500 transition-all duration-1000 shadow-[0_0_10px_rgba(99,102,241,0.5)]",style:{width:`${Math.min(100,s.length/e.usage.projectsLimit*100)}%`}})})]})]}),(0,t.jsx)("button",{onClick:x,className:"w-full mt-10 bg-white/10 hover:bg-white/20 py-4 rounded-2xl text-sm font-bold transition-all",children:"Upgrade Plan"})]})})]})]})});var x=e.i(44026),g=e.i(62746),b=e.i(59760);function f(){let e=(0,s.useRouter)(),{user:r,logout:l,loading:n}=(0,i.useAuthContext)(),{projects:o,setCurrentProjectId:d,createProject:c}=(0,a.useProjects)(r);return((0,b.useEffect)(()=>{n||r||e.replace("/login")},[r,n,e]),n||!r)?(0,t.jsxs)("div",{className:"h-screen w-full flex flex-col items-center justify-center bg-slate-900 text-white",children:[(0,t.jsx)(x.Loader2,{className:"animate-spin text-blue-500 mb-4",size:48}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(g.BookOpen,{className:"text-blue-500",size:20}),(0,t.jsx)("span",{className:"text-lg font-bold",children:"PlumeIA"})]})]}):(0,t.jsx)(m,{user:r,projects:o,onSelect:t=>{d(t),e.push(`/project/${t}`)},onCreate:async()=>{let t=await c();t&&(d(t),e.push(`/project/${t}`))},onLogout:()=>{l(),e.push("/")},onPricing:()=>e.push("/pricing"),onProfile:()=>e.push("/profile")})}e.s(["default",()=>f],23439)}]); \ No newline at end of file diff --git a/.next/static/chunks/fb9632df44fe5bfa.js b/.next/static/chunks/c2f4290c04706c43.js similarity index 86% rename from .next/static/chunks/fb9632df44fe5bfa.js rename to .next/static/chunks/c2f4290c04706c43.js index d1df269..d0fe8ff 100644 --- a/.next/static/chunks/fb9632df44fe5bfa.js +++ b/.next/static/chunks/c2f4290c04706c43.js @@ -1 +1 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54879,e=>{"use strict";let t=(0,e.i(78445).default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",()=>t],54879)},4915,e=>{"use strict";let t=(0,e.i(78445).default)("pen-line",[["path",{d:"M13 21h8",key:"1jsn5i"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]);e.s(["Edit3",()=>t],4915)},62200,e=>{"use strict";let t=(0,e.i(78445).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Clock",()=>t],62200)},89250,e=>{"use strict";var t=e.i(30064),l=e.i(59760),s=e.i(22508),r=e.i(59111),a=e.i(78445);let i=(0,a.default)("grip-vertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]),o=(0,a.default)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]),c=(0,a.default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var d=e.i(62200),n=e.i(36268);let x=(0,a.default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);var u=e.i(4917),b=e.i(4915),m=e.i(54879);let p={plot:{label:"Intrigue",color:"bg-rose-100 text-rose-800 border-rose-200",icon:n.Lightbulb},character:{label:"Personnage",color:"bg-blue-100 text-blue-800 border-blue-200",icon:x},research:{label:"Recherche",color:"bg-amber-100 text-amber-800 border-amber-200",icon:x},todo:{label:"À faire",color:"bg-slate-100 text-slate-800 border-slate-200",icon:o}},h={todo:"Idées / À faire",progress:"En cours",done:"Terminé / Validé"},g=({ideas:e,onUpdate:a})=>{let[x,g]=(0,l.useState)(""),[f,j]=(0,l.useState)("plot"),[v,y]=(0,l.useState)(null),[N,k]=(0,l.useState)(null),w=t=>{confirm("Supprimer cette carte ?")&&(a(e.filter(e=>e.id!==t)),N?.id===t&&k(null))},z=e=>{k({title:"",description:"",category:"plot",status:e})},C=e=>{k({...e})},D=e=>{e.preventDefault(),e.dataTransfer.dropEffect="move"},S=({title:l,status:r,icon:o})=>{let c=e.filter(e=>e.status===r);return(0,t.jsxs)("div",{className:"flex-1 bg-[#eef2ff] rounded-xl border border-indigo-100 flex flex-col h-full overflow-hidden transition-colors hover:border-blue-200",onDragOver:D,onDrop:t=>{t.preventDefault(),v&&(a(e.map(e=>e.id===v?{...e,status:r}:e)),y(null))},onDoubleClick:()=>z(r),title:"Double-cliquez dans le vide pour ajouter une carte ici",children:[(0,t.jsxs)("div",{className:`p-4 border-b border-indigo-200 flex justify-between items-center ${"todo"===r?"bg-[#eef2ff]":"progress"===r?"bg-indigo-50":"bg-green-50"}`,children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 font-bold text-slate-700",children:[(0,t.jsx)(o,{size:18}),l]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("button",{onClick:e=>{e.stopPropagation(),z(r)},className:"p-1 hover:bg-white rounded-full text-slate-400 hover:text-blue-600 transition-colors",children:(0,t.jsx)(s.Plus,{size:16})}),(0,t.jsx)("span",{className:"text-xs font-semibold bg-white px-2 py-1 rounded-full border border-indigo-100 text-slate-500",children:c.length})]})]}),(0,t.jsxs)("div",{className:"flex-1 overflow-y-auto p-3 space-y-3 custom-scrollbar",children:[c.map(e=>{let l=e.description.length>300?e.description.substring(0,300)+"...":e.description;return(0,t.jsxs)("div",{draggable:!0,onDragStart:t=>{y(e.id),t.dataTransfer.effectAllowed="move"},onDoubleClick:t=>{t.stopPropagation(),C(e)},className:"bg-white p-3 rounded-lg shadow-sm border border-slate-200 cursor-grab active:cursor-grabbing hover:shadow-md hover:border-blue-300 transition-all group relative animate-in zoom-in-95 duration-200",children:[(0,t.jsxs)("div",{className:"flex justify-between items-start mb-2",children:[(0,t.jsx)("span",{className:`text-[10px] uppercase font-bold px-2 py-0.5 rounded-full flex items-center gap-1 ${p[e.category].color}`,children:p[e.category].label}),(0,t.jsxs)("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,t.jsx)("button",{onClick:t=>{t.stopPropagation(),C(e)},className:"text-slate-300 hover:text-blue-500",children:(0,t.jsx)(b.Edit3,{size:14})}),(0,t.jsx)("button",{onClick:t=>{t.stopPropagation(),w(e.id)},className:"text-slate-300 hover:text-red-500",children:(0,t.jsx)(u.Trash2,{size:14})})]})]}),(0,t.jsxs)("div",{className:"mb-2",children:[(0,t.jsx)("h4",{className:"font-bold text-slate-800 text-sm mb-1 leading-tight",children:e.title}),e.description&&(0,t.jsx)("p",{className:"text-xs text-slate-500 line-clamp-3 leading-relaxed",title:e.description.length>300?"Description tronquée (voir détail)":void 0,children:l})]}),(0,t.jsxs)("div",{className:"flex justify-between items-center text-xs text-slate-400 border-t border-slate-50 pt-2 mt-2",children:[(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsx)(d.Clock,{size:10})," ",new Date(e.createdAt).toLocaleDateString()]}),(0,t.jsx)(i,{size:14,className:"opacity-20"})]})]},e.id)}),0===c.length&&(0,t.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-slate-300 text-sm italic border-2 border-dashed border-indigo-200 rounded-lg m-1",children:[(0,t.jsx)("span",{className:"mb-2",children:"Vide"}),(0,t.jsx)("span",{className:"text-xs opacity-70",children:"Double-cliquez pour ajouter"})]})]})]})};return(0,t.jsxs)("div",{className:"flex flex-col h-full bg-white p-6 gap-6 relative",children:[(0,t.jsxs)("div",{className:"flex flex-col md:flex-row justify-between items-start md:items-center gap-4 bg-white p-4 rounded-xl border border-slate-200 shadow-sm shrink-0",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("h2",{className:"text-2xl font-bold text-slate-800 flex items-center gap-2",children:[(0,t.jsx)(n.Lightbulb,{className:"text-yellow-500"})," Boîte à Idées"]}),(0,t.jsx)("p",{className:"text-slate-500 text-sm",children:"Organisez vos tâches, idées de scènes et recherches."})]}),(0,t.jsxs)("form",{onSubmit:t=>{t.preventDefault(),x.trim()&&(a([...e,{id:`idea-${Date.now()}`,title:x,description:"",category:f,status:"todo",createdAt:Date.now()}]),g(""))},className:"flex-1 w-full md:w-auto max-w-2xl flex gap-2",children:[(0,t.jsx)("select",{value:f,onChange:e=>j(e.target.value),className:"bg-[#eef2ff] border border-indigo-200 text-slate-700 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 outline-none",children:Object.entries(p).map(([e,l])=>(0,t.jsx)("option",{value:e,children:l.label},e))}),(0,t.jsx)("input",{type:"text",value:x,onChange:e=>g(e.target.value),placeholder:"Titre de la nouvelle idée...",className:"flex-1 bg-[#eef2ff] border border-indigo-200 text-slate-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 outline-none font-medium"}),(0,t.jsx)("button",{type:"submit",disabled:!x.trim(),className:"text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 disabled:opacity-50 transition-colors flex items-center gap-2",children:(0,t.jsx)(s.Plus,{size:18})})]})]}),(0,t.jsxs)("div",{className:"flex-1 grid grid-cols-1 md:grid-cols-3 gap-6 min-h-0",children:[(0,t.jsx)(S,{title:"Idées / À faire",status:"todo",icon:c}),(0,t.jsx)(S,{title:"En cours",status:"progress",icon:d.Clock}),(0,t.jsx)(S,{title:"Terminé",status:"done",icon:o})]}),N&&(0,t.jsx)("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black/40 backdrop-blur-sm p-4 animate-in fade-in duration-200",children:(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-2xl w-full max-w-lg overflow-hidden flex flex-col max-h-[90%]",children:[(0,t.jsxs)("div",{className:"bg-[#eef2ff] border-b border-indigo-100 p-4 flex justify-between items-center",children:[(0,t.jsxs)("h3",{className:"font-bold text-slate-700 flex items-center gap-2",children:[N.id?(0,t.jsx)(b.Edit3,{size:18}):(0,t.jsx)(s.Plus,{size:18}),N.id?"Éditer la carte":"Ajouter une carte"]}),(0,t.jsx)("button",{onClick:()=>k(null),className:"text-slate-400 hover:text-slate-600",children:(0,t.jsx)(r.X,{size:20})})]}),(0,t.jsxs)("div",{className:"p-6 space-y-4 overflow-y-auto",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Titre"}),(0,t.jsx)("input",{type:"text",value:N.title,onChange:e=>k({...N,title:e.target.value}),className:"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-bold text-slate-800",placeholder:"Titre de la tâche ou de l'idée...",autoFocus:!0})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Description"}),(0,t.jsx)("textarea",{value:N.description,onChange:e=>k({...N,description:e.target.value}),maxLength:500,className:"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none min-h-[120px] text-sm text-slate-600 leading-relaxed resize-none",placeholder:"Détails, notes, liens..."}),(0,t.jsxs)("div",{className:`text-right text-xs mt-1 transition-colors ${(N.description?.length||0)>=500?"text-red-500 font-bold":(N.description?.length||0)>450?"text-orange-500":"text-slate-400"}`,children:[N.description?.length||0," / ",500," caractères"]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Catégorie"}),(0,t.jsx)("select",{value:N.category,onChange:e=>k({...N,category:e.target.value}),className:"w-full p-2 bg-white border border-slate-300 rounded-lg text-sm outline-none focus:border-blue-500",children:Object.entries(p).map(([e,l])=>(0,t.jsx)("option",{value:e,children:l.label},e))})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Statut"}),(0,t.jsx)("select",{value:N.status,onChange:e=>k({...N,status:e.target.value}),className:"w-full p-2 bg-white border border-slate-300 rounded-lg text-sm outline-none focus:border-blue-500",children:Object.entries(h).map(([e,l])=>(0,t.jsx)("option",{value:e,children:l},e))})]})]})]}),(0,t.jsxs)("div",{className:"p-4 border-t border-slate-200 bg-[#eef2ff] flex justify-end gap-2 shrink-0",children:[N.id&&(0,t.jsx)("button",{onClick:()=>w(N.id),className:"mr-auto text-red-500 hover:text-red-700 text-sm font-medium px-3 py-2",children:"Supprimer"}),(0,t.jsx)("button",{onClick:()=>k(null),className:"px-4 py-2 text-slate-600 hover:bg-slate-200 rounded-lg text-sm font-medium",children:"Annuler"}),(0,t.jsxs)("button",{onClick:()=>{N&&N.title?.trim()&&(N.id?a(e.map(e=>e.id===N.id?{...e,...N}:e)):a([...e,{id:`idea-${Date.now()}`,title:N.title||"",description:N.description||"",category:N.category||"plot",status:N.status||"todo",createdAt:Date.now()}]),k(null))},disabled:!N.title?.trim(),className:"px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg text-sm font-medium shadow-sm disabled:opacity-50 flex items-center gap-2",children:[(0,t.jsx)(m.Save,{size:16})," Enregistrer"]})]})]})})]})};function f(e){let{project:l,updateProject:s}=e;return l?(0,t.jsx)(g,{ideas:l.ideas||[],onUpdate:e=>s?.({ideas:e})}):null}e.s(["default",()=>f],89250)}]); \ No newline at end of file +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54879,e=>{"use strict";let t=(0,e.i(78445).default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",()=>t],54879)},4915,e=>{"use strict";let t=(0,e.i(78445).default)("pen-line",[["path",{d:"M13 21h8",key:"1jsn5i"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]);e.s(["Edit3",()=>t],4915)},62200,e=>{"use strict";let t=(0,e.i(78445).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Clock",()=>t],62200)},89250,e=>{"use strict";var t=e.i(30064),s=e.i(59760),l=e.i(22508),r=e.i(59111),a=e.i(78445);let i=(0,a.default)("grip-vertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]),o=(0,a.default)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]),c=(0,a.default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var d=e.i(62200),n=e.i(36268);let x=(0,a.default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);var u=e.i(4917),b=e.i(4915),m=e.i(54879);let p={plot:{label:"Intrigue",color:"bg-rose-100 text-rose-800 border-rose-200",icon:n.Lightbulb},character:{label:"Personnage",color:"bg-blue-100 text-blue-800 border-blue-200",icon:x},research:{label:"Recherche",color:"bg-amber-100 text-amber-800 border-amber-200",icon:x},todo:{label:"À faire",color:"bg-slate-100 text-slate-800 border-slate-200",icon:o}},h={todo:"Idées / À faire",progress:"En cours",done:"Terminé / Validé"},g=({ideas:e,onUpdate:a})=>{let[x,g]=(0,s.useState)(""),[f,j]=(0,s.useState)("plot"),[v,y]=(0,s.useState)(null),[N,k]=(0,s.useState)(null),w=t=>{confirm("Supprimer cette carte ?")&&(a(e.filter(e=>e.id!==t)),N?.id===t&&k(null))},C=e=>{k({title:"",description:"",category:"plot",status:e})},z=e=>{k({...e})},D=e=>{e.preventDefault(),e.dataTransfer.dropEffect="move"},S=({title:s,status:r,icon:o})=>{let c=e.filter(e=>e.status===r);return(0,t.jsxs)("div",{className:"flex-1 bg-[#eef2ff] rounded-xl border border-indigo-100 flex flex-col h-full overflow-hidden transition-colors hover:border-blue-200",onDragOver:D,onDrop:t=>{t.preventDefault(),v&&(a(e.map(e=>e.id===v?{...e,status:r}:e)),y(null))},onDoubleClick:()=>C(r),title:"Double-cliquez dans le vide pour ajouter une carte ici",children:[(0,t.jsxs)("div",{className:`p-4 border-b border-indigo-200 flex justify-between items-center ${"todo"===r?"bg-[#eef2ff]":"progress"===r?"bg-indigo-50":"bg-green-50"}`,children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 font-bold text-slate-700",children:[(0,t.jsx)(o,{size:18}),s]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("button",{onClick:e=>{e.stopPropagation(),C(r)},className:"p-1 hover:bg-white rounded-full text-slate-400 hover:text-blue-600 transition-colors",children:(0,t.jsx)(l.Plus,{size:16})}),(0,t.jsx)("span",{className:"text-xs font-semibold bg-white px-2 py-1 rounded-full border border-indigo-100 text-slate-500",children:c.length})]})]}),(0,t.jsxs)("div",{className:"flex-1 overflow-y-auto p-3 space-y-3 custom-scrollbar",children:[c.map(e=>{let s=e.description.length>300?e.description.substring(0,300)+"...":e.description;return(0,t.jsxs)("div",{draggable:!0,onDragStart:t=>{y(e.id),t.dataTransfer.effectAllowed="move"},onDoubleClick:t=>{t.stopPropagation(),z(e)},className:"bg-white p-3 rounded-lg shadow-sm border border-slate-200 cursor-grab active:cursor-grabbing hover:shadow-md hover:border-blue-300 transition-all group relative animate-in zoom-in-95 duration-200",children:[(0,t.jsxs)("div",{className:"flex justify-between items-start mb-2",children:[(0,t.jsx)("span",{className:`text-[10px] uppercase font-bold px-2 py-0.5 rounded-full flex items-center gap-1 ${p[e.category].color}`,children:p[e.category].label}),(0,t.jsxs)("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,t.jsx)("button",{onClick:t=>{t.stopPropagation(),z(e)},className:"text-slate-300 hover:text-blue-500",children:(0,t.jsx)(b.Edit3,{size:14})}),(0,t.jsx)("button",{onClick:t=>{t.stopPropagation(),w(e.id)},className:"text-slate-300 hover:text-red-500",children:(0,t.jsx)(u.Trash2,{size:14})})]})]}),(0,t.jsxs)("div",{className:"mb-2",children:[(0,t.jsx)("h4",{className:"font-bold text-slate-800 text-sm mb-1 leading-tight",children:e.title}),e.description&&(0,t.jsx)("p",{className:"text-xs text-slate-500 line-clamp-3 leading-relaxed",title:e.description.length>300?"Description tronquée (voir détail)":void 0,children:s})]}),(0,t.jsxs)("div",{className:"flex justify-between items-center text-xs text-slate-400 border-t border-slate-50 pt-2 mt-2",children:[(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsx)(d.Clock,{size:10})," ",new Date(e.createdAt).toLocaleDateString()]}),(0,t.jsx)(i,{size:14,className:"opacity-20"})]})]},e.id)}),0===c.length&&(0,t.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-slate-300 text-sm italic border-2 border-dashed border-indigo-200 rounded-lg m-1",children:[(0,t.jsx)("span",{className:"mb-2",children:"Vide"}),(0,t.jsx)("span",{className:"text-xs opacity-70",children:"Double-cliquez pour ajouter"})]})]})]})};return(0,t.jsxs)("div",{className:"flex flex-col h-full bg-white p-6 gap-6 relative",children:[(0,t.jsxs)("div",{className:"flex flex-col md:flex-row justify-between items-start md:items-center gap-4 bg-white p-4 rounded-xl border border-slate-200 shadow-sm shrink-0",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("h2",{className:"text-2xl font-bold text-slate-800 flex items-center gap-2",children:[(0,t.jsx)(n.Lightbulb,{className:"text-yellow-500"})," Boîte à Idées"]}),(0,t.jsx)("p",{className:"text-slate-500 text-sm",children:"Organisez vos tâches, idées de scènes et recherches."})]}),(0,t.jsxs)("form",{onSubmit:t=>{t.preventDefault(),x.trim()&&(a([...e,{id:`idea-${Date.now()}`,title:x,description:"",category:f,status:"todo",createdAt:Date.now()}]),g(""))},className:"flex-1 w-full md:w-auto max-w-2xl flex gap-2",children:[(0,t.jsx)("select",{value:f,onChange:e=>j(e.target.value),className:"bg-[#eef2ff] border border-indigo-200 text-slate-700 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 outline-none",children:Object.entries(p).map(([e,s])=>(0,t.jsx)("option",{value:e,children:s.label},e))}),(0,t.jsx)("input",{type:"text",value:x,onChange:e=>g(e.target.value),placeholder:"Titre de la nouvelle idée...",className:"flex-1 bg-[#eef2ff] border border-indigo-200 text-slate-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 outline-none font-medium"}),(0,t.jsx)("button",{type:"submit",disabled:!x.trim(),className:"text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 disabled:opacity-50 transition-colors flex items-center gap-2",children:(0,t.jsx)(l.Plus,{size:18})})]})]}),(0,t.jsxs)("div",{className:"flex-1 grid grid-cols-1 md:grid-cols-3 gap-6 min-h-0",children:[(0,t.jsx)(S,{title:"Idées / À faire",status:"todo",icon:c}),(0,t.jsx)(S,{title:"En cours",status:"progress",icon:d.Clock}),(0,t.jsx)(S,{title:"Terminé",status:"done",icon:o})]}),N&&(0,t.jsx)("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black/40 backdrop-blur-sm p-4 animate-in fade-in duration-200",children:(0,t.jsxs)("div",{className:"bg-white rounded-xl shadow-2xl w-full max-w-lg overflow-hidden flex flex-col max-h-[90%]",children:[(0,t.jsxs)("div",{className:"bg-[#eef2ff] border-b border-indigo-100 p-4 flex justify-between items-center",children:[(0,t.jsxs)("h3",{className:"font-bold text-slate-700 flex items-center gap-2",children:[N.id?(0,t.jsx)(b.Edit3,{size:18}):(0,t.jsx)(l.Plus,{size:18}),N.id?"Éditer la carte":"Ajouter une carte"]}),(0,t.jsx)("button",{onClick:()=>k(null),className:"text-slate-400 hover:text-slate-600",children:(0,t.jsx)(r.X,{size:20})})]}),(0,t.jsxs)("div",{className:"p-6 space-y-4 overflow-y-auto",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Titre"}),(0,t.jsx)("input",{type:"text",value:N.title,onChange:e=>k({...N,title:e.target.value}),className:"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-bold text-slate-800",placeholder:"Titre de la tâche ou de l'idée...",autoFocus:!0})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Description"}),(0,t.jsx)("textarea",{value:N.description,onChange:e=>k({...N,description:e.target.value}),maxLength:500,className:"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none min-h-[120px] text-sm text-slate-600 leading-relaxed resize-none",placeholder:"Détails, notes, liens..."}),(0,t.jsxs)("div",{className:`text-right text-xs mt-1 transition-colors ${(N.description?.length||0)>=500?"text-red-500 font-bold":(N.description?.length||0)>450?"text-orange-500":"text-slate-400"}`,children:[N.description?.length||0," / ",500," caractères"]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Catégorie"}),(0,t.jsx)("select",{value:N.category,onChange:e=>k({...N,category:e.target.value}),className:"w-full p-2 bg-white border border-slate-300 rounded-lg text-sm outline-none focus:border-blue-500",children:Object.entries(p).map(([e,s])=>(0,t.jsx)("option",{value:e,children:s.label},e))})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-bold text-slate-500 uppercase mb-1",children:"Statut"}),(0,t.jsx)("select",{value:N.status,onChange:e=>k({...N,status:e.target.value}),className:"w-full p-2 bg-white border border-slate-300 rounded-lg text-sm outline-none focus:border-blue-500",children:Object.entries(h).map(([e,s])=>(0,t.jsx)("option",{value:e,children:s},e))})]})]})]}),(0,t.jsxs)("div",{className:"p-4 border-t border-slate-200 bg-[#eef2ff] flex justify-end gap-2 shrink-0",children:[N.id&&(0,t.jsx)("button",{onClick:()=>w(N.id),className:"mr-auto text-red-500 hover:text-red-700 text-sm font-medium px-3 py-2",children:"Supprimer"}),(0,t.jsx)("button",{onClick:()=>k(null),className:"px-4 py-2 text-slate-600 hover:bg-slate-200 rounded-lg text-sm font-medium",children:"Annuler"}),(0,t.jsxs)("button",{onClick:()=>{N&&N.title?.trim()&&(N.id?a(e.map(e=>e.id===N.id?{...e,...N}:e)):a([...e,{id:`idea-${Date.now()}`,title:N.title||"",description:N.description||"",category:N.category||"plot",status:N.status||"todo",createdAt:Date.now()}]),k(null))},disabled:!N.title?.trim(),className:"px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg text-sm font-medium shadow-sm disabled:opacity-50 flex items-center gap-2",children:[(0,t.jsx)(m.Save,{size:16})," Enregistrer"]})]})]})})]})};var f=e.i(24224);function j(){let{project:e,updateProject:s}=(0,f.useProjectContext)();return(0,t.jsx)(g,{ideas:e.ideas||[],onUpdate:e=>s({ideas:e})})}e.s(["default",()=>j],89250)}]); \ No newline at end of file diff --git a/.next/static/chunks/c76d6f03f693a63d.js b/.next/static/chunks/c76d6f03f693a63d.js new file mode 100644 index 0000000..42d13de --- /dev/null +++ b/.next/static/chunks/c76d6f03f693a63d.js @@ -0,0 +1 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,44026,e=>{"use strict";let t=(0,e.i(78445).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["Loader2",()=>t],44026)},78445,e=>{"use strict";var t=e.i(59760);let a=(...e)=>e.filter((e,t,a)=>!!e&&""!==e.trim()&&a.indexOf(e)===t).join(" ").trim(),r=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,a)=>a?a.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var i={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let s=(0,t.forwardRef)(({color:e="currentColor",size:r=24,strokeWidth:s=2,absoluteStrokeWidth:o,className:l="",children:d,iconNode:c,...n},u)=>(0,t.createElement)("svg",{ref:u,...i,width:r,height:r,stroke:e,strokeWidth:o?24*Number(s)/Number(r):s,className:a("lucide",l),...!d&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(n)&&{"aria-hidden":"true"},...n},[...c.map(([e,a])=>(0,t.createElement)(e,a)),...Array.isArray(d)?d:[d]])),o=(e,i)=>{let o=(0,t.forwardRef)(({className:o,...l},d)=>(0,t.createElement)(s,{ref:d,iconNode:i,className:a(`lucide-${r(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,o),...l}));return o.displayName=r(e),o};e.s(["default",()=>o],78445)},12856,(e,t,a)=>{t.exports=e.r(96479)},62746,e=>{"use strict";let t=(0,e.i(78445).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);e.s(["BookOpen",()=>t],62746)},46202,e=>{"use strict";let t=(0,e.i(78445).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);e.s(["Sparkles",()=>t],46202)},59111,e=>{"use strict";let t=(0,e.i(78445).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",()=>t],59111)},46553,e=>{"use strict";let t=(0,e.i(78445).default)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["Settings",()=>t],46553)},50147,e=>{"use strict";let t=(0,e.i(78445).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);e.s(["User",()=>t],50147)},98867,e=>{"use strict";let t=(0,e.i(78445).default)("panels-top-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]]);e.s(["Layout",()=>t],98867)},74080,97794,e=>{"use strict";var t=e.i(78445);let a=(0,t.default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",()=>a],74080);let r=(0,t.default)("mouse-pointer-click",[["path",{d:"M14 4.1 12 6",key:"ita8i4"}],["path",{d:"m5.1 8-2.9-.8",key:"1go3kf"}],["path",{d:"m6 12-1.9 2",key:"mnht97"}],["path",{d:"M7.2 2.2 8 5.1",key:"1cfko1"}],["path",{d:"M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z",key:"s0h3yz"}]]);e.s(["MousePointerClick",()=>r],97794)},36268,e=>{"use strict";let t=(0,e.i(78445).default)("lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);e.s(["Lightbulb",()=>t],36268)},12155,12100,e=>{"use strict";var t=e.i(78445);let a=(0,t.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);e.s(["Globe",()=>a],12155);let r=(0,t.default)("git-graph",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M5 9v6",key:"158jrl"}],["circle",{cx:"5",cy:"18",r:"3",key:"104gr9"}],["path",{d:"M12 3v18",key:"108xh3"}],["circle",{cx:"19",cy:"6",r:"3",key:"108a5v"}],["path",{d:"M16 15.7A9 9 0 0 0 19 9",key:"1e3vqb"}]]);e.s(["GitGraph",()=>r],12100)},33907,e=>{"use strict";var t,a=((t={}).CHARACTER="Personnage",t.LOCATION="Lieu",t.OBJECT="Objet",t.NOTE="Note",t);e.s(["EntityType",()=>a])},22508,e=>{"use strict";let t=(0,e.i(78445).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",()=>t],22508)},24224,e=>{"use strict";var t=e.i(30064),a=e.i(59760);let r=(0,a.createContext)(null);function i({value:e,children:a}){return(0,t.jsx)(r.Provider,{value:e,children:a})}function s(){let e=(0,a.useContext)(r);if(!e)throw Error("useProjectContext must be used within ProjectProvider");return e}e.s(["ProjectProvider",()=>i,"useProjectContext",()=>s])},4917,e=>{"use strict";let t=(0,e.i(78445).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);e.s(["Trash2",()=>t],4917)},30914,e=>{"use strict";let t=(0,e.i(78445).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);e.s(["Zap",()=>t],30914)},15536,e=>{"use strict";let t=(0,e.i(78445).default)("message-circle",[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}]]);e.s(["MessageCircle",()=>t],15536)},43331,e=>{"use strict";let t=(0,e.i(78445).default)("book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]]);e.s(["Book",()=>t],43331)},8011,71143,e=>{"use strict";var t=e.i(59760),a=e.i(4301),r=e.i(33907);let i="Nouveau Roman",s="Auteur Inconnu",o={id:"chap-1",title:"Chapitre 1",content:"

Il était une fois...

",summary:"Début de l'histoire."},l={[r.EntityType.CHARACTER]:"👤",[r.EntityType.LOCATION]:"🏰",[r.EntityType.OBJECT]:"🗝️",[r.EntityType.NOTE]:"📝"},d={[r.EntityType.CHARACTER]:"bg-blue-100 text-blue-800 border-blue-200",[r.EntityType.LOCATION]:"bg-green-100 text-green-800 border-green-200",[r.EntityType.OBJECT]:"bg-amber-100 text-amber-800 border-amber-200",[r.EntityType.NOTE]:"bg-gray-100 text-gray-800 border-gray-200"};e.s(["ARCHETYPES",0,["Le Héros","L'Ombre / Le Méchant","Le Mentor","Le Gardien du Seuil","Le Shapeshifter (Changeforme)","Le Trickster (Farceur)","L'Allié","L'Élu","Le Rebelle","Le Séducteur","Le Sage","Le Guerrier","L'Innocent"],"DEFAULT_AUTHOR",0,s,"DEFAULT_BOOK_TITLE",0,i,"ENTITY_COLORS",0,d,"ENTITY_ICONS",0,l,"EYE_COLORS",0,["Marron","Bleu","Vert","Noisette","Gris","Noir","Vairons","Ambre"],"GENRES",0,["Fantasy","Science-Fiction","Thriller / Polar","Romance","Historique","Horreur","Aventure","Contemporain","Jeunesse / Young Adult","Dystopie"],"HAIR_COLORS",0,["Brun","Noir","Blond","Roux","Auburn","Gris","Blanc","Châtain","Chauve","Teinture (Bleu/Rose/Etc)"],"INITIAL_CHAPTER",0,o,"POV_OPTIONS",0,["1ère personne (Je)","3ème personne (Limitée au protagoniste)","3ème personne (Omnisciente)","Multi-points de vue (Alterné)"],"TENSE_OPTIONS",0,["Passé (Passé simple / Imparfait)","Présent de narration"],"TONES",0,["Sombre & Sérieux","Léger & Humoristique","Épique & Grandiose","Mélancolique","Mystérieux","Optimiste","Cynique","Romantique"]],71143),e.s(["useProjects",0,e=>{let[r,l]=(0,t.useState)([]),[d,c]=(0,t.useState)(null),[n,u]=(0,t.useState)(!1);(0,t.useEffect)(()=>{e?(async()=>{u(!0);try{let e=(await a.default.projects.list()||[]).map(e=>({id:e.id,title:e.title,author:e.author,lastModified:new Date(e.updatedAt).getTime(),chapters:[],entities:[],ideas:[],settings:e.settings||void 0}));l(e)}catch(e){console.error("Failed to load projects",e)}finally{u(!1)}})():l([])},[e]),(0,t.useEffect)(()=>{d&&(async()=>{try{let e=await a.default.projects.get(d),t={id:e.id,title:e.title,author:e.author,lastModified:new Date(e.updatedAt).getTime(),settings:e.settings||void 0,styleGuide:e.styleGuide||void 0,chapters:(e.chapters||[]).map(e=>({id:e.id,title:e.title,content:e.content,summary:e.summary})),entities:(e.entities||[]).map(e=>({id:e.id,type:e.type,name:e.name,description:e.description,details:e.details,storyContext:e.storyContext,attributes:e.attributes,customValues:e.customValues})),ideas:(e.ideas||[]).map(e=>({id:e.id,title:e.title,description:e.description,status:e.status,category:e.category,createdAt:new Date(e.createdAt).getTime()})),workflow:{nodes:(e.plotNodes||[]).map(e=>({id:e.id,x:e.x,y:e.y,title:e.title,description:e.description,color:e.color,type:e.type})),connections:(e.plotConnections||[]).map(e=>({id:e.id,source:e.source,target:e.target}))}};l(e=>e.map(e=>e.id===d?t:e))}catch(e){console.error("Failed to load project details",e)}})()},[d]);let p=async(e,t)=>{try{let r=await a.default.chapters.create({projectId:e,title:t.title||"New Chapter",content:t.content||"",summary:t.summary||void 0});return l(t=>t.map(t=>t.id!==e?t:{...t,chapters:[...t.chapters,{id:r.id,title:r.title,content:r.content,summary:r.summary}]})),r.id}catch(e){return console.error("Failed to add chapter",e),null}};return{projects:r,currentProjectId:d,setCurrentProjectId:c,createProject:async()=>{if(e)try{let t=await a.default.projects.create({title:i,author:e.name||s,settings:{genre:"Fantasy",targetAudience:"Adult",tone:"Epic"}}),r={id:t.id,title:t.title,author:t.author,lastModified:Date.now(),chapters:[],entities:[],ideas:[],settings:t.settings};return l(e=>[...e,r]),await p(t.id,o),t.id}catch(e){console.error("Failed to create project",e)}},updateProject:async(e,t)=>{l(a=>a.map(a=>a.id===e?{...a,...t}:a));try{let r={};void 0!==t.title&&(r.title=t.title),void 0!==t.author&&(r.author=t.author),void 0!==t.settings&&(r.settings=t.settings),void 0!==t.styleGuide&&(r.styleGuide=t.styleGuide),await a.default.projects.update(e,r)}catch(e){console.error("Failed to update project",e)}},addChapter:p,updateChapter:async(e,t,r)=>{l(a=>a.map(a=>a.id!==e?a:{...a,chapters:a.chapters.map(e=>e.id===t?{...e,...r}:e)}));try{await a.default.chapters.update(t,r)}catch(e){console.error("Failed to update chapter",e)}},createEntity:async(e,t,r)=>{try{let i=await a.default.entities.create({projectId:e,type:t,name:r?.name||`Nouveau ${t}`,description:r?.description||"",details:r?.details||"",attributes:r?.attributes||void 0,customValues:r?.customValues||void 0});return l(t=>t.map(t=>t.id!==e?t:{...t,entities:[...t.entities,{id:i.id,type:i.type,name:i.name,description:i.description,details:i.details,attributes:i.attributes,customValues:i.customValues||{}}]})),i.id}catch(e){throw console.error("Failed to create entity",e),e}},updateEntity:async(e,t,r)=>{l(a=>a.map(a=>a.id!==e?a:{...a,entities:a.entities.map(e=>e.id===t?{...e,...r}:e)}));try{await a.default.entities.update(t,r)}catch(e){console.error("Failed to update entity",e)}},deleteEntity:async(e,t)=>{l(a=>a.map(a=>a.id!==e?a:{...a,entities:a.entities.filter(e=>e.id!==t)}));try{await a.default.entities.delete(t)}catch(e){console.error("Failed to delete entity",e)}},deleteProject:async e=>{try{await a.default.projects.delete(e),l(t=>t.filter(t=>t.id!==e)),d===e&&c(null)}catch(e){console.error("Failed to delete project",e)}}}}],8011)},30103,86180,e=>{"use strict";var t=e.i(78445);let a=(0,t.default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",()=>a],30103);let r=(0,t.default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);e.s(["LogOut",()=>r],86180)}]); \ No newline at end of file diff --git a/.next/static/chunks/a56b0a8519201145.js b/.next/static/chunks/ca1ac45dcb58cc08.js similarity index 96% rename from .next/static/chunks/a56b0a8519201145.js rename to .next/static/chunks/ca1ac45dcb58cc08.js index 881af0d..01a9fd0 100644 --- a/.next/static/chunks/a56b0a8519201145.js +++ b/.next/static/chunks/ca1ac45dcb58cc08.js @@ -1 +1 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54956,e=>{"use strict";let s=(0,e.i(78445).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);e.s(["Target",()=>s],54956)},62200,e=>{"use strict";let s=(0,e.i(78445).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Clock",()=>s],62200)},82546,e=>{"use strict";let s=(0,e.i(78445).default)("feather",[["path",{d:"M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z",key:"18jl4k"}],["path",{d:"M16 8 2 22",key:"vp34q"}],["path",{d:"M17.5 15H9",key:"1oz8nu"}]]);e.s(["Feather",()=>s],82546)},78424,e=>{"use strict";var s=e.i(30064),t=e.i(59760),l=e.i(71143),r=e.i(46553),a=e.i(43331),n=e.i(82546),i=e.i(78445);let o=(0,i.default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);var d=e.i(62200),c=e.i(54956);let u=(0,i.default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]),x={genre:"",subGenre:"",targetAudience:"",tone:"",pov:"",tense:"",synopsis:"",themes:""},b=({project:e,onUpdate:i,onDeleteProject:b})=>{let[g,m]=(0,t.useState)(e.settings||x),[h,p]=(0,t.useState)(!1);(0,t.useEffect)(()=>{e.settings&&m(e.settings)},[e.settings]);let f=(s,t)=>{let l={...g,[s]:t};m(l),i({...e,settings:l})};return(0,s.jsx)("div",{className:"h-full bg-[#eef2ff] p-8 overflow-y-auto",children:(0,s.jsxs)("div",{className:"max-w-4xl mx-auto bg-white rounded-xl shadow-lg border border-slate-200 overflow-hidden",children:[(0,s.jsxs)("div",{className:"bg-slate-900 text-white p-6 border-b border-slate-800 flex items-center gap-4",children:[(0,s.jsx)("div",{className:"bg-blue-600 p-3 rounded-lg",children:(0,s.jsx)(r.Settings,{size:24})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h2",{className:"text-2xl font-bold",children:"Paramètres Généraux du Roman"}),(0,s.jsx)("p",{className:"text-slate-400 text-sm",children:"Définissez l'identité, le ton et les règles de votre œuvre pour guider l'IA."})]})]}),(0,s.jsxs)("div",{className:"p-8 space-y-8",children:[(0,s.jsxs)("section",{className:"space-y-4",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2",children:[(0,s.jsx)(a.Book,{size:18,className:"text-blue-600"})," Informations de Base"]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Titre du Roman"}),(0,s.jsx)("input",{type:"text",value:e.title,onChange:s=>i({...e,title:s.target.value}),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-serif font-bold text-lg"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Nom d'Auteur"}),(0,s.jsx)("input",{type:"text",value:e.author,onChange:s=>i({...e,author:s.target.value}),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none"})]})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Synopsis Global"}),(0,s.jsx)("textarea",{value:g.synopsis,onChange:e=>f("synopsis",e.target.value),className:"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none h-24 text-sm bg-[#eef2ff]",placeholder:"De quoi parle votre histoire dans les grandes lignes ?"})]})]}),(0,s.jsxs)("section",{className:"space-y-4",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2",children:[(0,s.jsx)(c.Target,{size:18,className:"text-red-500"})," Genre & Public"]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Genre Principal"}),(0,s.jsx)("input",{type:"text",list:"genre-suggestions",value:g.genre,onChange:e=>f("genre",e.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Fantasy"}),(0,s.jsx)("datalist",{id:"genre-suggestions",children:l.GENRES.map(e=>(0,s.jsx)("option",{value:e},e))})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Sous-Genre"}),(0,s.jsx)("input",{type:"text",value:g.subGenre||"",onChange:e=>f("subGenre",e.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Dark Fantasy"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Public Cible"}),(0,s.jsx)("input",{type:"text",value:g.targetAudience,onChange:e=>f("targetAudience",e.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Jeune Adulte, Adulte..."})]})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Thèmes Clés"}),(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(u,{size:14,className:"absolute left-3 top-3 text-slate-400"}),(0,s.jsx)("input",{type:"text",value:g.themes,onChange:e=>f("themes",e.target.value),className:"w-full pl-9 p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Vengeance, Rédemption, Voyage initiatique..."})]})]})]}),(0,s.jsxs)("section",{className:"space-y-4",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2",children:[(0,s.jsx)(n.Feather,{size:18,className:"text-purple-600"})," Narration & Style"]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[(0,s.jsxs)("div",{children:[(0,s.jsxs)("label",{className:"block text-sm font-semibold text-slate-600 mb-1 flex items-center gap-1",children:[(0,s.jsx)(o,{size:14})," Point de Vue (POV)"]}),(0,s.jsxs)("select",{value:g.pov,onChange:e=>f("pov",e.target.value),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none",children:[(0,s.jsx)("option",{value:"",children:"Sélectionner..."}),l.POV_OPTIONS.map(e=>(0,s.jsx)("option",{value:e,children:e},e))]})]}),(0,s.jsxs)("div",{children:[(0,s.jsxs)("label",{className:"block text-sm font-semibold text-slate-600 mb-1 flex items-center gap-1",children:[(0,s.jsx)(d.Clock,{size:14})," Temps du récit"]}),(0,s.jsxs)("select",{value:g.tense,onChange:e=>f("tense",e.target.value),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none",children:[(0,s.jsx)("option",{value:"",children:"Sélectionner..."}),l.TENSE_OPTIONS.map(e=>(0,s.jsx)("option",{value:e,children:e},e))]})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Ton Général"}),(0,s.jsx)("input",{type:"text",list:"tone-suggestions",value:g.tone,onChange:e=>f("tone",e.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Sombre, Ironique..."}),(0,s.jsx)("datalist",{id:"tone-suggestions",children:l.TONES.map(e=>(0,s.jsx)("option",{value:e},e))})]})]}),(0,s.jsxs)("div",{className:"mt-4",children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Guide de Style & Instructions IA (Prompt Système)"}),(0,s.jsx)("p",{className:"text-xs text-slate-400 mb-2",children:'Ces instructions seront envoyées à l\'IA à chaque génération. Décrivez ici le style d\'écriture désiré (ex: "phrases courtes", "vocabulaire soutenu", "beaucoup de métaphores").'}),(0,s.jsx)("textarea",{value:e.styleGuide||"",onChange:s=>{var t;return t=s.target.value,void i({...e,styleGuide:t})},className:"w-full p-3 border border-indigo-100 bg-[#eef2ff] rounded-lg focus:ring-2 focus:ring-indigo-500 outline-none h-32 text-sm font-mono text-slate-700",placeholder:"Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique."})]})]}),(0,s.jsxs)("section",{className:"space-y-4 pt-8 border-t border-red-200",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-red-600 flex items-center gap-2 pb-2",children:[(0,s.jsx)("span",{className:"bg-red-100 p-1 rounded",children:"⚠️"})," Zone de Danger"]}),(0,s.jsxs)("div",{className:"bg-red-50 border border-red-200 rounded-lg p-6",children:[(0,s.jsx)("h4",{className:"font-bold text-red-900 mb-2",children:"Supprimer le projet"}),(0,s.jsx)("p",{className:"text-sm text-red-700 mb-4",children:"Cette action est irréversible. Toutes les données associées à ce projet (chapitres, entités, idées) seront définitivement effacées."}),h?(0,s.jsxs)("div",{className:"flex items-center gap-4 bg-white p-4 rounded border border-red-200",children:[(0,s.jsx)("span",{className:"text-sm font-bold text-slate-700",children:"Êtes-vous sûr ?"}),(0,s.jsx)("button",{onClick:b,className:"px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700 text-sm font-bold",children:"Oui, supprimer définitivement"}),(0,s.jsx)("button",{onClick:()=>p(!1),className:"px-4 py-2 bg-slate-200 text-slate-700 rounded hover:bg-slate-300 text-sm",children:"Annuler"})]}):(0,s.jsx)("button",{onClick:()=>p(!0),className:"px-4 py-2 bg-white border border-red-300 text-red-600 rounded hover:bg-red-50 text-sm font-bold",children:"Supprimer ce projet"})]})]})]})]})})};var g=e.i(12856),m=e.i(18404),h=e.i(8011);function p(e){let{project:t,updateProject:l}=e,r=(0,g.useParams)(),a=(0,g.useRouter)(),n=r.id,{user:i}=(0,m.useAuthContext)(),{deleteProject:o}=(0,h.useProjects)(i);return t?(0,s.jsx)(b,{project:t,onUpdate:e=>l?.(e),onDeleteProject:async()=>{await o(n),a.push("/dashboard")}}):null}e.s(["default",()=>p],78424)}]); \ No newline at end of file +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54956,e=>{"use strict";let s=(0,e.i(78445).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);e.s(["Target",()=>s],54956)},62200,e=>{"use strict";let s=(0,e.i(78445).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Clock",()=>s],62200)},82546,e=>{"use strict";let s=(0,e.i(78445).default)("feather",[["path",{d:"M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z",key:"18jl4k"}],["path",{d:"M16 8 2 22",key:"vp34q"}],["path",{d:"M17.5 15H9",key:"1oz8nu"}]]);e.s(["Feather",()=>s],82546)},78424,e=>{"use strict";var s=e.i(30064),t=e.i(59760),l=e.i(71143),r=e.i(46553),a=e.i(43331),n=e.i(82546),i=e.i(78445);let o=(0,i.default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);var d=e.i(62200),c=e.i(54956);let u=(0,i.default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]),x={genre:"",subGenre:"",targetAudience:"",tone:"",pov:"",tense:"",synopsis:"",themes:""},b=({project:e,onUpdate:i,onDeleteProject:b})=>{let[g,m]=(0,t.useState)(e.settings||x),[h,p]=(0,t.useState)(!1);(0,t.useEffect)(()=>{e.settings&&m(e.settings)},[e.settings]);let f=(s,t)=>{let l={...g,[s]:t};m(l),i({...e,settings:l})};return(0,s.jsx)("div",{className:"h-full bg-[#eef2ff] p-8 overflow-y-auto",children:(0,s.jsxs)("div",{className:"max-w-4xl mx-auto bg-white rounded-xl shadow-lg border border-slate-200 overflow-hidden",children:[(0,s.jsxs)("div",{className:"bg-slate-900 text-white p-6 border-b border-slate-800 flex items-center gap-4",children:[(0,s.jsx)("div",{className:"bg-blue-600 p-3 rounded-lg",children:(0,s.jsx)(r.Settings,{size:24})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h2",{className:"text-2xl font-bold",children:"Paramètres Généraux du Roman"}),(0,s.jsx)("p",{className:"text-slate-400 text-sm",children:"Définissez l'identité, le ton et les règles de votre œuvre pour guider l'IA."})]})]}),(0,s.jsxs)("div",{className:"p-8 space-y-8",children:[(0,s.jsxs)("section",{className:"space-y-4",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2",children:[(0,s.jsx)(a.Book,{size:18,className:"text-blue-600"})," Informations de Base"]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Titre du Roman"}),(0,s.jsx)("input",{type:"text",value:e.title,onChange:s=>i({...e,title:s.target.value}),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-serif font-bold text-lg"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Nom d'Auteur"}),(0,s.jsx)("input",{type:"text",value:e.author,onChange:s=>i({...e,author:s.target.value}),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none"})]})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Synopsis Global"}),(0,s.jsx)("textarea",{value:g.synopsis,onChange:e=>f("synopsis",e.target.value),className:"w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none h-24 text-sm bg-[#eef2ff]",placeholder:"De quoi parle votre histoire dans les grandes lignes ?"})]})]}),(0,s.jsxs)("section",{className:"space-y-4",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2",children:[(0,s.jsx)(c.Target,{size:18,className:"text-red-500"})," Genre & Public"]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Genre Principal"}),(0,s.jsx)("input",{type:"text",list:"genre-suggestions",value:g.genre,onChange:e=>f("genre",e.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Fantasy"}),(0,s.jsx)("datalist",{id:"genre-suggestions",children:l.GENRES.map(e=>(0,s.jsx)("option",{value:e},e))})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Sous-Genre"}),(0,s.jsx)("input",{type:"text",value:g.subGenre||"",onChange:e=>f("subGenre",e.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Dark Fantasy"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Public Cible"}),(0,s.jsx)("input",{type:"text",value:g.targetAudience,onChange:e=>f("targetAudience",e.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Jeune Adulte, Adulte..."})]})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Thèmes Clés"}),(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(u,{size:14,className:"absolute left-3 top-3 text-slate-400"}),(0,s.jsx)("input",{type:"text",value:g.themes,onChange:e=>f("themes",e.target.value),className:"w-full pl-9 p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Vengeance, Rédemption, Voyage initiatique..."})]})]})]}),(0,s.jsxs)("section",{className:"space-y-4",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2",children:[(0,s.jsx)(n.Feather,{size:18,className:"text-purple-600"})," Narration & Style"]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[(0,s.jsxs)("div",{children:[(0,s.jsxs)("label",{className:"block text-sm font-semibold text-slate-600 mb-1 flex items-center gap-1",children:[(0,s.jsx)(o,{size:14})," Point de Vue (POV)"]}),(0,s.jsxs)("select",{value:g.pov,onChange:e=>f("pov",e.target.value),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none",children:[(0,s.jsx)("option",{value:"",children:"Sélectionner..."}),l.POV_OPTIONS.map(e=>(0,s.jsx)("option",{value:e,children:e},e))]})]}),(0,s.jsxs)("div",{children:[(0,s.jsxs)("label",{className:"block text-sm font-semibold text-slate-600 mb-1 flex items-center gap-1",children:[(0,s.jsx)(d.Clock,{size:14})," Temps du récit"]}),(0,s.jsxs)("select",{value:g.tense,onChange:e=>f("tense",e.target.value),className:"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none",children:[(0,s.jsx)("option",{value:"",children:"Sélectionner..."}),l.TENSE_OPTIONS.map(e=>(0,s.jsx)("option",{value:e,children:e},e))]})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Ton Général"}),(0,s.jsx)("input",{type:"text",list:"tone-suggestions",value:g.tone,onChange:e=>f("tone",e.target.value),className:"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]",placeholder:"Ex: Sombre, Ironique..."}),(0,s.jsx)("datalist",{id:"tone-suggestions",children:l.TONES.map(e=>(0,s.jsx)("option",{value:e},e))})]})]}),(0,s.jsxs)("div",{className:"mt-4",children:[(0,s.jsx)("label",{className:"block text-sm font-semibold text-slate-600 mb-1",children:"Guide de Style & Instructions IA (Prompt Système)"}),(0,s.jsx)("p",{className:"text-xs text-slate-400 mb-2",children:'Ces instructions seront envoyées à l\'IA à chaque génération. Décrivez ici le style d\'écriture désiré (ex: "phrases courtes", "vocabulaire soutenu", "beaucoup de métaphores").'}),(0,s.jsx)("textarea",{value:e.styleGuide||"",onChange:s=>{var t;return t=s.target.value,void i({...e,styleGuide:t})},className:"w-full p-3 border border-indigo-100 bg-[#eef2ff] rounded-lg focus:ring-2 focus:ring-indigo-500 outline-none h-32 text-sm font-mono text-slate-700",placeholder:"Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique."})]})]}),(0,s.jsxs)("section",{className:"space-y-4 pt-8 border-t border-red-200",children:[(0,s.jsxs)("h3",{className:"text-lg font-bold text-red-600 flex items-center gap-2 pb-2",children:[(0,s.jsx)("span",{className:"bg-red-100 p-1 rounded",children:"⚠️"})," Zone de Danger"]}),(0,s.jsxs)("div",{className:"bg-red-50 border border-red-200 rounded-lg p-6",children:[(0,s.jsx)("h4",{className:"font-bold text-red-900 mb-2",children:"Supprimer le projet"}),(0,s.jsx)("p",{className:"text-sm text-red-700 mb-4",children:"Cette action est irréversible. Toutes les données associées à ce projet (chapitres, entités, idées) seront définitivement effacées."}),h?(0,s.jsxs)("div",{className:"flex items-center gap-4 bg-white p-4 rounded border border-red-200",children:[(0,s.jsx)("span",{className:"text-sm font-bold text-slate-700",children:"Êtes-vous sûr ?"}),(0,s.jsx)("button",{onClick:b,className:"px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700 text-sm font-bold",children:"Oui, supprimer définitivement"}),(0,s.jsx)("button",{onClick:()=>p(!1),className:"px-4 py-2 bg-slate-200 text-slate-700 rounded hover:bg-slate-300 text-sm",children:"Annuler"})]}):(0,s.jsx)("button",{onClick:()=>p(!0),className:"px-4 py-2 bg-white border border-red-300 text-red-600 rounded hover:bg-red-50 text-sm font-bold",children:"Supprimer ce projet"})]})]})]})]})})};var g=e.i(24224),m=e.i(18404),h=e.i(8011),p=e.i(12856);function f(){let{project:e,projectId:t,updateProject:l}=(0,g.useProjectContext)(),{user:r}=(0,m.useAuthContext)(),{deleteProject:a}=(0,h.useProjects)(r),n=(0,p.useRouter)();return(0,s.jsx)(b,{project:e,onUpdate:e=>l(e),onDeleteProject:async()=>{await a(t),n.push("/dashboard")}})}e.s(["default",()=>f],78424)}]); \ No newline at end of file diff --git a/.next/static/chunks/baf4bf5c18ffa192.js b/.next/static/chunks/d1fde94eaf7c0d4d.js similarity index 95% rename from .next/static/chunks/baf4bf5c18ffa192.js rename to .next/static/chunks/d1fde94eaf7c0d4d.js index 58911af..2d0807f 100644 --- a/.next/static/chunks/baf4bf5c18ffa192.js +++ b/.next/static/chunks/d1fde94eaf7c0d4d.js @@ -1,8 +1,8 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,41498,e=>{"use strict";let t=(0,e.i(78445).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",()=>t],41498)},96922,e=>{"use strict";let t=(0,e.i(78445).default)("list",[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]);e.s(["List",()=>t],96922)},81350,e=>{"use strict";var t=e.i(30064),n=e.i(59760),s=e.i(78445);let a=(0,s.default)("bold",[["path",{d:"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8",key:"mg9rjx"}]]),i=(0,s.default)("italic",[["line",{x1:"19",x2:"10",y1:"4",y2:"4",key:"15jd3p"}],["line",{x1:"14",x2:"5",y1:"20",y2:"20",key:"bu0au3"}],["line",{x1:"15",x2:"9",y1:"4",y2:"20",key:"uljnxc"}]]),l=(0,s.default)("underline",[["path",{d:"M6 4v6a6 6 0 0 0 12 0V4",key:"9kb039"}],["line",{x1:"4",x2:"20",y1:"20",y2:"20",key:"nun2al"}]]),r=(0,s.default)("text-align-start",[["path",{d:"M21 5H3",key:"1fi0y6"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M17 19H3",key:"z6ezky"}]]),o=(0,s.default)("text-align-center",[["path",{d:"M21 5H3",key:"1fi0y6"}],["path",{d:"M17 12H7",key:"16if0g"}],["path",{d:"M19 19H5",key:"vjpgq2"}]]),d=(0,s.default)("text-align-end",[["path",{d:"M21 5H3",key:"1fi0y6"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M21 19H7",key:"4cu937"}]]);var c=e.i(96922);let u=(0,s.default)("heading-1",[["path",{d:"M4 12h8",key:"17cfdx"}],["path",{d:"M4 18V6",key:"1rz3zl"}],["path",{d:"M12 18V6",key:"zqpxq5"}],["path",{d:"m17 12 3-2v8",key:"1hhhft"}]]),x=(0,s.default)("heading-2",[["path",{d:"M4 12h8",key:"17cfdx"}],["path",{d:"M4 18V6",key:"1rz3zl"}],["path",{d:"M12 18V6",key:"zqpxq5"}],["path",{d:"M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1",key:"9jr5yi"}]]),p=(0,s.default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]),h=(0,s.default)("wand-sparkles",[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",key:"ul74o6"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]]);var m=e.i(41498),g=e.i(74080);let f=(0,s.default)("maximize-2",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]]);var y=e.i(44026),v=e.i(97794);let b=(0,s.default)("history",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]),j=(0,s.default)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]),k=(0,s.default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]),w=(0,s.default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]),M=(0,s.default)("layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]),N=(0,n.forwardRef)(({initialContent:e,onChange:s,onSave:N,onSelectionChange:C,onAiTransform:z},R)=>{let S=(0,n.useRef)(null),H=(0,n.useRef)(null),[L,A]=(0,n.useState)(!1),[T,q]=(0,n.useState)("saved"),D=(0,n.useRef)(null),[I,$]=(0,n.useState)(null),[O,V]=(0,n.useState)(!1),[B,E]=(0,n.useState)([]),[F,U]=(0,n.useState)(!0),[P,K]=(0,n.useState)(new Set),W=(0,n.useRef)(null),X=(0,n.useRef)(null),Y=(0,n.useMemo)(()=>{let e=[...B].sort((e,t)=>t.timestamp-e.timestamp),t=[];return e.forEach(e=>{let n=t.find(t=>60>Math.abs(t.topOffset-e.topOffset));n?(n.versions.push(e),n.versions.sort((e,t)=>t.timestamp-e.timestamp)):t.push({id:`group-${e.id}`,topOffset:e.topOffset,versions:[e]})}),t},[B]),G=(e,t)=>{if(!S.current)return;let n=(()=>{let e=window.getSelection();if(e&&e.rangeCount>0&&S.current){let t=e.getRangeAt(0).getBoundingClientRect(),n=S.current.getBoundingClientRect();return t.top-n.top}return 0})(),s={id:Date.now().toString(),timestamp:Date.now(),type:e,content:S.current.innerHTML,snippet:t.substring(0,80)+(t.length>80?"...":""),topOffset:n};E(e=>[s,...e]),U(!0)},J=e=>{S.current&&confirm("Restaurer cette version ? Le contenu actuel sera remplacé.")&&(S.current.innerHTML=e.content,Q())};(0,n.useImperativeHandle)(R,()=>({insertHtml:e=>{G("Insertion Chat","Insertion depuis le panneau IA"),S.current?.focus();let t=window.getSelection();if(X.current)t?.removeAllRanges(),t?.addRange(X.current);else if(S.current){let e=document.createRange();e.selectNodeContents(S.current),e.collapse(!1),t?.removeAllRanges(),t?.addRange(e)}let n=e.includes("<")?e:e.replace(/\n/g,"
");document.execCommand("insertHTML",!1,n),Q()}})),(0,n.useEffect)(()=>{S.current&&S.current.innerHTML!==e&&!L&&Math.abs(S.current.innerHTML.length-e.length)>5&&(S.current.innerHTML=e)},[e,L]);let Q=()=>{S.current&&(s&&s(S.current.innerHTML),N&&(q("unsaved"),D.current&&clearTimeout(D.current),D.current=setTimeout(async()=>{q("saving"),await N(S.current?.innerHTML||""),q("saved")},2e3)))},Z=()=>{let e=window.getSelection();e&&e.rangeCount>0&&S.current?.contains(e.anchorNode)&&(X.current=e.getRangeAt(0).cloneRange())},_=()=>{let e=window.getSelection();Z(),e&&e.toString().length>0&&C?C(e.toString()):C&&C("")},ee=async e=>{if(!z)return;let t=W.current,n=t?.toString()||"";if(n||"continue"===e){G({correct:"Correction",rewrite:"Reformulation",expand:"Développement",continue:"Continuation"}[e],n||"Position curseur"),V(!0);try{let s=await z(n,e);if(s){S.current?.focus();let n=window.getSelection();n?.removeAllRanges(),t&&n?.addRange(t),"continue"===e?(n?.collapseToEnd(),document.execCommand("insertText",!1," "+s)):document.execCommand("insertText",!1,s),Q()}}catch(e){console.error("AI Action failed",e)}finally{V(!1),$(null)}}},et=({icon:e,cmd:n,arg:s,label:a,onClick:i,isActive:l})=>(0,t.jsx)("button",{onMouseDown:e=>{if(i)e.preventDefault(),i();else e.preventDefault(),document.execCommand(n,!1,s),Q(),S.current?.focus()},className:`p-1.5 rounded transition-colors ${l?"bg-indigo-100 text-indigo-700":"text-slate-500 hover:text-slate-800 hover:bg-slate-200"}`,title:a,children:(0,t.jsx)(e,{size:18})}),en=W.current&&!W.current.collapsed;return(0,t.jsxs)("div",{className:"flex flex-col h-full bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden relative",children:[(0,t.jsx)("style",{children:` +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,41498,e=>{"use strict";let t=(0,e.i(78445).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",()=>t],41498)},96922,e=>{"use strict";let t=(0,e.i(78445).default)("list",[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]);e.s(["List",()=>t],96922)},81350,e=>{"use strict";var t=e.i(30064),n=e.i(59760),s=e.i(78445);let a=(0,s.default)("bold",[["path",{d:"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8",key:"mg9rjx"}]]),i=(0,s.default)("italic",[["line",{x1:"19",x2:"10",y1:"4",y2:"4",key:"15jd3p"}],["line",{x1:"14",x2:"5",y1:"20",y2:"20",key:"bu0au3"}],["line",{x1:"15",x2:"9",y1:"4",y2:"20",key:"uljnxc"}]]),l=(0,s.default)("underline",[["path",{d:"M6 4v6a6 6 0 0 0 12 0V4",key:"9kb039"}],["line",{x1:"4",x2:"20",y1:"20",y2:"20",key:"nun2al"}]]),r=(0,s.default)("text-align-start",[["path",{d:"M21 5H3",key:"1fi0y6"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M17 19H3",key:"z6ezky"}]]),o=(0,s.default)("text-align-center",[["path",{d:"M21 5H3",key:"1fi0y6"}],["path",{d:"M17 12H7",key:"16if0g"}],["path",{d:"M19 19H5",key:"vjpgq2"}]]),d=(0,s.default)("text-align-end",[["path",{d:"M21 5H3",key:"1fi0y6"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M21 19H7",key:"4cu937"}]]);var c=e.i(96922);let u=(0,s.default)("heading-1",[["path",{d:"M4 12h8",key:"17cfdx"}],["path",{d:"M4 18V6",key:"1rz3zl"}],["path",{d:"M12 18V6",key:"zqpxq5"}],["path",{d:"m17 12 3-2v8",key:"1hhhft"}]]),x=(0,s.default)("heading-2",[["path",{d:"M4 12h8",key:"17cfdx"}],["path",{d:"M4 18V6",key:"1rz3zl"}],["path",{d:"M12 18V6",key:"zqpxq5"}],["path",{d:"M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1",key:"9jr5yi"}]]),p=(0,s.default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]),h=(0,s.default)("wand-sparkles",[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",key:"ul74o6"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]]);var m=e.i(41498),g=e.i(74080);let f=(0,s.default)("maximize-2",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]]);var y=e.i(44026),v=e.i(97794);let b=(0,s.default)("history",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]),j=(0,s.default)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]),k=(0,s.default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]),w=(0,s.default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]),M=(0,s.default)("layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]),N=(0,n.forwardRef)(({initialContent:e,onChange:s,onSave:N,onSelectionChange:C,onAiTransform:z},R)=>{let S=(0,n.useRef)(null),H=(0,n.useRef)(null),[L,A]=(0,n.useState)(!1),[T,q]=(0,n.useState)("saved"),D=(0,n.useRef)(null),[I,$]=(0,n.useState)(null),[O,V]=(0,n.useState)(!1),[B,E]=(0,n.useState)([]),[F,P]=(0,n.useState)(!0),[U,K]=(0,n.useState)(new Set),W=(0,n.useRef)(null),X=(0,n.useRef)(null),Y=(0,n.useMemo)(()=>{let e=[...B].sort((e,t)=>t.timestamp-e.timestamp),t=[];return e.forEach(e=>{let n=t.find(t=>60>Math.abs(t.topOffset-e.topOffset));n?(n.versions.push(e),n.versions.sort((e,t)=>t.timestamp-e.timestamp)):t.push({id:`group-${e.id}`,topOffset:e.topOffset,versions:[e]})}),t},[B]),G=(e,t)=>{if(!S.current)return;let n=(()=>{let e=window.getSelection();if(e&&e.rangeCount>0&&S.current){let t=e.getRangeAt(0).getBoundingClientRect(),n=S.current.getBoundingClientRect();return t.top-n.top}return 0})(),s={id:Date.now().toString(),timestamp:Date.now(),type:e,content:S.current.innerHTML,snippet:t.substring(0,80)+(t.length>80?"...":""),topOffset:n};E(e=>[s,...e]),P(!0)},J=e=>{S.current&&confirm("Restaurer cette version ? Le contenu actuel sera remplacé.")&&(S.current.innerHTML=e.content,Q())};(0,n.useImperativeHandle)(R,()=>({insertHtml:e=>{G("Insertion Chat","Insertion depuis le panneau IA"),S.current?.focus();let t=window.getSelection();if(X.current)t?.removeAllRanges(),t?.addRange(X.current);else if(S.current){let e=document.createRange();e.selectNodeContents(S.current),e.collapse(!1),t?.removeAllRanges(),t?.addRange(e)}let n=e.includes("<")?e:e.replace(/\n/g,"
");document.execCommand("insertHTML",!1,n),Q()}})),(0,n.useEffect)(()=>{S.current&&S.current.innerHTML!==e&&!L&&Math.abs(S.current.innerHTML.length-e.length)>5&&(S.current.innerHTML=e)},[e,L]);let Q=()=>{S.current&&(s&&s(S.current.innerHTML),N&&(q("unsaved"),D.current&&clearTimeout(D.current),D.current=setTimeout(async()=>{q("saving"),await N(S.current?.innerHTML||""),q("saved")},2e3)))},Z=()=>{let e=window.getSelection();e&&e.rangeCount>0&&S.current?.contains(e.anchorNode)&&(X.current=e.getRangeAt(0).cloneRange())},_=()=>{let e=window.getSelection();Z(),e&&e.toString().length>0&&C?C(e.toString()):C&&C("")},ee=async e=>{if(!z)return;let t=W.current,n=t?.toString()||"";if(n||"continue"===e){G({correct:"Correction",rewrite:"Reformulation",expand:"Développement",continue:"Continuation"}[e],n||"Position curseur"),V(!0);try{let s=await z(n,e);if(s){S.current?.focus();let n=window.getSelection();n?.removeAllRanges(),t&&n?.addRange(t),"continue"===e?(n?.collapseToEnd(),document.execCommand("insertText",!1," "+s)):document.execCommand("insertText",!1,s),Q()}}catch(e){console.error("AI Action failed",e)}finally{V(!1),$(null)}}},et=({icon:e,cmd:n,arg:s,label:a,onClick:i,isActive:l})=>(0,t.jsx)("button",{onMouseDown:e=>{if(i)e.preventDefault(),i();else e.preventDefault(),document.execCommand(n,!1,s),Q(),S.current?.focus()},className:`p-1.5 rounded transition-colors ${l?"bg-indigo-100 text-indigo-700":"text-slate-500 hover:text-slate-800 hover:bg-slate-200"}`,title:a,children:(0,t.jsx)(e,{size:18})}),en=W.current&&!W.current.collapsed;return(0,t.jsxs)("div",{className:"flex flex-col h-full bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden relative",children:[(0,t.jsx)("style",{children:` .editor-content:empty::before { content: attr(data-placeholder); color: #cbd5e1; font-style: italic; cursor: text; } - `}),(0,t.jsxs)("div",{className:"flex items-center gap-1 p-2 bg-slate-50 border-b border-slate-200 flex-wrap relative z-20 shadow-sm",children:[(0,t.jsx)(et,{icon:a,cmd:"bold",label:"Gras"}),(0,t.jsx)(et,{icon:i,cmd:"italic",label:"Italique"}),(0,t.jsx)(et,{icon:l,cmd:"underline",label:"Souligné"}),(0,t.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,t.jsx)(et,{icon:u,cmd:"formatBlock",arg:"H1",label:"Titre 1"}),(0,t.jsx)(et,{icon:x,cmd:"formatBlock",arg:"H2",label:"Titre 2"}),(0,t.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,t.jsx)(et,{icon:r,cmd:"justifyLeft",label:"Aligner à gauche"}),(0,t.jsx)(et,{icon:o,cmd:"justifyCenter",label:"Centrer"}),(0,t.jsx)(et,{icon:d,cmd:"justifyRight",label:"Aligner à droite"}),(0,t.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,t.jsx)(et,{icon:c.List,cmd:"insertUnorderedList",label:"Liste"}),(0,t.jsx)("div",{className:"flex-1"}),(0,t.jsxs)("div",{className:"flex items-center gap-2 mr-4 text-xs font-medium text-slate-400",children:["saving"===T&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(y.Loader2,{size:12,className:"animate-spin"})," Sauvegarde..."]}),"saved"===T&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(m.Check,{size:12,className:"text-green-500"})," Sauvegardé"]}),"unsaved"===T&&(0,t.jsx)("span",{className:"text-amber-500",children:"Modifications non enregistrées..."})]}),(0,t.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,t.jsx)(et,{icon:b,label:"Marge d'historique",onClick:()=>U(!F),isActive:F})]}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto relative bg-slate-100",ref:H,children:(0,t.jsxs)("div",{className:"flex justify-center relative min-h-full py-8",children:[(0,t.jsx)("div",{ref:S,contentEditable:!0,suppressContentEditableWarning:!0,className:"bg-white shadow-sm w-[800px] min-h-[1000px] p-12 outline-none font-serif text-lg leading-relaxed text-slate-900 editor-content",onInput:Q,onBlur:()=>{A(!1),Z()},onFocus:()=>A(!0),onKeyUp:Z,onMouseUp:Z,onSelect:_,onClick:()=>S.current?.focus(),onContextMenu:e=>{e.preventDefault();let t=window.getSelection();if(t&&t.rangeCount>0){let n=t.getRangeAt(0);if(S.current?.contains(n.commonAncestorContainer)){W.current=n.cloneRange(),$({x:e.clientX,y:e.clientY});return}}W.current=null,$({x:e.clientX,y:e.clientY})},"data-placeholder":"Commencez à écrire votre chef-d'œuvre... (Clic droit pour outils IA)"}),F&&(0,t.jsxs)("div",{className:"absolute left-[calc(50%+420px)] top-0 bottom-0 w-80 pt-8 pointer-events-none",children:[0===Y.length&&(0,t.jsxs)("div",{className:"sticky top-10 text-center text-slate-300 p-4",children:[(0,t.jsx)(b,{size:48,className:"mx-auto mb-2 opacity-20"}),(0,t.jsx)("p",{className:"text-xs",children:"L'historique des modifications IA apparaîtra ici, aligné avec votre texte."})]}),Y.map(e=>{let n=P.has(e.id),s=e.versions.length>1,a=e.versions[0];return(0,t.jsx)("div",{className:"absolute w-72 pointer-events-auto transition-all duration-300 ease-in-out",style:{top:`${e.topOffset+32}px`},children:(0,t.jsxs)("div",{className:`relative bg-white rounded-lg border shadow-sm transition-all duration-200 ${s&&!n?"border-indigo-200 shadow-md translate-x-1 translate-y-1":"border-slate-200"}`,children:[s&&!n&&(0,t.jsx)("div",{className:"absolute inset-0 bg-white border border-indigo-100 rounded-lg transform -translate-x-1 -translate-y-1 -z-10 shadow-sm"}),(0,t.jsxs)("div",{className:"p-2 border-b border-slate-100 flex justify-between items-center bg-slate-50 rounded-t-lg cursor-pointer hover:bg-slate-100",onClick:()=>{var t;let n;return s&&(t=e.id,void((n=new Set(P)).has(t)?n.delete(t):n.add(t),K(n)))},children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[s&&(0,t.jsx)(M,{size:14,className:"text-indigo-500"}),(0,t.jsx)("span",{className:`text-[10px] font-bold px-1.5 py-0.5 rounded uppercase tracking-wide ${a.type.includes("Correction")?"bg-green-100 text-green-700":a.type.includes("Insertion")?"bg-blue-100 text-blue-700":"bg-purple-100 text-purple-700"}`,children:a.type})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)("span",{className:"text-[10px] text-slate-400",children:new Date(a.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}),s&&(n?(0,t.jsx)(w,{size:14,className:"text-slate-400"}):(0,t.jsx)(k,{size:14,className:"text-slate-400"}))]})]}),!n&&(0,t.jsxs)("div",{className:"p-2",children:[(0,t.jsxs)("div",{className:"text-xs text-slate-500 italic line-clamp-2",children:['"',a.snippet,'"']}),(0,t.jsxs)("button",{onClick:()=>J(a),className:"mt-2 w-full flex items-center justify-center gap-1 text-[10px] bg-slate-50 hover:bg-indigo-50 text-slate-600 hover:text-indigo-700 py-1 rounded transition-colors",children:[(0,t.jsx)(j,{size:10})," Restaurer"]})]}),n&&(0,t.jsx)("div",{className:"divide-y divide-slate-100 max-h-64 overflow-y-auto",children:e.versions.map((e,n)=>(0,t.jsxs)("div",{className:"p-2 bg-white hover:bg-slate-50 transition-colors",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-1",children:[(0,t.jsx)("span",{className:"text-[10px] font-semibold text-slate-600",children:0===n?"Dernière version":`Version -${n}`}),(0,t.jsx)("span",{className:"text-[9px] text-slate-400",children:new Date(e.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})})]}),(0,t.jsxs)("div",{className:"text-xs text-slate-500 italic bg-slate-50 p-1.5 rounded mb-2 border border-slate-100",children:['"',e.snippet,'"']}),(0,t.jsxs)("button",{onClick:()=>J(e),className:"w-full flex items-center justify-center gap-1 text-[10px] bg-white border border-slate-200 text-slate-600 hover:text-indigo-600 hover:border-indigo-200 py-1 rounded transition-colors",children:[(0,t.jsx)(j,{size:10})," Restaurer cette version"]})]},e.id))})]})},e.id)})]})]})}),I&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"fixed inset-0 z-40 bg-transparent",onClick:()=>$(null),onContextMenu:e=>{e.preventDefault(),$(null)}}),(0,t.jsx)("div",{className:"fixed z-50 bg-white border border-slate-200 rounded-lg shadow-xl py-1 w-56 animate-in fade-in zoom-in-95 duration-100 flex flex-col",style:{top:Math.min(I.y,window.innerHeight-200),left:Math.min(I.x,window.innerWidth-224)},children:O?(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center py-4 text-indigo-600 gap-2",children:[(0,t.jsx)(y.Loader2,{className:"animate-spin",size:24}),(0,t.jsx)("span",{className:"text-xs font-medium",children:"L'IA travaille..."})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"px-3 py-1 text-[10px] font-bold text-slate-400 uppercase tracking-wider",children:"Outils IA"}),(0,t.jsxs)("button",{onClick:()=>ee("correct"),disabled:!en,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!en?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-indigo-50 hover:text-indigo-700"}`,children:[(0,t.jsx)(m.Check,{size:14})," Corriger l'orthographe"]}),(0,t.jsxs)("button",{onClick:()=>ee("rewrite"),disabled:!en,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!en?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-indigo-50 hover:text-indigo-700"}`,children:[(0,t.jsx)(g.RefreshCw,{size:14})," Reformuler"]}),(0,t.jsxs)("button",{onClick:()=>ee("expand"),disabled:!en,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!en?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-indigo-50 hover:text-indigo-700"}`,children:[(0,t.jsx)(f,{size:14})," Développer"]}),(0,t.jsxs)("button",{onClick:()=>ee("continue"),className:"flex items-center gap-2 px-3 py-2 text-sm text-slate-700 hover:bg-indigo-50 hover:text-indigo-700 text-left transition-colors",children:[(0,t.jsx)(h,{size:14})," Continuer l'écriture"]}),(0,t.jsx)("div",{className:"h-px bg-slate-100 my-1"}),(0,t.jsx)("div",{className:"px-3 py-1 text-[10px] font-bold text-slate-400 uppercase tracking-wider",children:"Édition"}),(0,t.jsxs)("button",{onClick:()=>{if(W.current){let e=window.getSelection();e?.removeAllRanges(),e?.addRange(W.current),document.execCommand("copy")}$(null)},disabled:!en,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!en?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-slate-50"}`,children:[(0,t.jsx)(p,{size:14})," Copier"]}),(0,t.jsxs)("button",{onClick:()=>{S.current?.focus(),document.execCommand("selectAll"),_(),$(null)},className:"flex items-center gap-2 px-3 py-2 text-sm text-slate-700 hover:bg-slate-50 text-left transition-colors",children:[(0,t.jsx)(v.MousePointerClick,{size:14})," Tout sélectionner"]})]})})]})]})});var C=e.i(4301);function z(e){let s=(0,n.useRef)(null),{project:a,user:i,currentChapterId:l,updateChapter:r,incrementUsage:o}=e;if(!a||!l)return null;let d=a.chapters?.find(e=>e.id===l);return(0,t.jsx)(N,{ref:s,initialContent:d?.content||"",onSave:e=>r?.(l,{content:e}),onAiTransform:async(e,t)=>{let n=await C.default.ai.transform(e,t,d?.content||"",i);return o?.(),n}})}e.s(["default",()=>z],81350)}]); \ No newline at end of file + `}),(0,t.jsxs)("div",{className:"flex items-center gap-1 p-2 bg-slate-50 border-b border-slate-200 flex-wrap relative z-20 shadow-sm",children:[(0,t.jsx)(et,{icon:a,cmd:"bold",label:"Gras"}),(0,t.jsx)(et,{icon:i,cmd:"italic",label:"Italique"}),(0,t.jsx)(et,{icon:l,cmd:"underline",label:"Souligné"}),(0,t.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,t.jsx)(et,{icon:u,cmd:"formatBlock",arg:"H1",label:"Titre 1"}),(0,t.jsx)(et,{icon:x,cmd:"formatBlock",arg:"H2",label:"Titre 2"}),(0,t.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,t.jsx)(et,{icon:r,cmd:"justifyLeft",label:"Aligner à gauche"}),(0,t.jsx)(et,{icon:o,cmd:"justifyCenter",label:"Centrer"}),(0,t.jsx)(et,{icon:d,cmd:"justifyRight",label:"Aligner à droite"}),(0,t.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,t.jsx)(et,{icon:c.List,cmd:"insertUnorderedList",label:"Liste"}),(0,t.jsx)("div",{className:"flex-1"}),(0,t.jsxs)("div",{className:"flex items-center gap-2 mr-4 text-xs font-medium text-slate-400",children:["saving"===T&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(y.Loader2,{size:12,className:"animate-spin"})," Sauvegarde..."]}),"saved"===T&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(m.Check,{size:12,className:"text-green-500"})," Sauvegardé"]}),"unsaved"===T&&(0,t.jsx)("span",{className:"text-amber-500",children:"Modifications non enregistrées..."})]}),(0,t.jsx)("div",{className:"w-px h-6 bg-slate-300 mx-1"}),(0,t.jsx)(et,{icon:b,label:"Marge d'historique",onClick:()=>P(!F),isActive:F})]}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto relative bg-slate-100",ref:H,children:(0,t.jsxs)("div",{className:"flex justify-center relative min-h-full py-8",children:[(0,t.jsx)("div",{ref:S,contentEditable:!0,suppressContentEditableWarning:!0,className:"bg-white shadow-sm w-[800px] min-h-[1000px] p-12 outline-none font-serif text-lg leading-relaxed text-slate-900 editor-content",onInput:Q,onBlur:()=>{A(!1),Z()},onFocus:()=>A(!0),onKeyUp:Z,onMouseUp:Z,onSelect:_,onClick:()=>S.current?.focus(),onContextMenu:e=>{e.preventDefault();let t=window.getSelection();if(t&&t.rangeCount>0){let n=t.getRangeAt(0);if(S.current?.contains(n.commonAncestorContainer)){W.current=n.cloneRange(),$({x:e.clientX,y:e.clientY});return}}W.current=null,$({x:e.clientX,y:e.clientY})},"data-placeholder":"Commencez à écrire votre chef-d'œuvre... (Clic droit pour outils IA)"}),F&&(0,t.jsxs)("div",{className:"absolute left-[calc(50%+420px)] top-0 bottom-0 w-80 pt-8 pointer-events-none",children:[0===Y.length&&(0,t.jsxs)("div",{className:"sticky top-10 text-center text-slate-300 p-4",children:[(0,t.jsx)(b,{size:48,className:"mx-auto mb-2 opacity-20"}),(0,t.jsx)("p",{className:"text-xs",children:"L'historique des modifications IA apparaîtra ici, aligné avec votre texte."})]}),Y.map(e=>{let n=U.has(e.id),s=e.versions.length>1,a=e.versions[0];return(0,t.jsx)("div",{className:"absolute w-72 pointer-events-auto transition-all duration-300 ease-in-out",style:{top:`${e.topOffset+32}px`},children:(0,t.jsxs)("div",{className:`relative bg-white rounded-lg border shadow-sm transition-all duration-200 ${s&&!n?"border-indigo-200 shadow-md translate-x-1 translate-y-1":"border-slate-200"}`,children:[s&&!n&&(0,t.jsx)("div",{className:"absolute inset-0 bg-white border border-indigo-100 rounded-lg transform -translate-x-1 -translate-y-1 -z-10 shadow-sm"}),(0,t.jsxs)("div",{className:"p-2 border-b border-slate-100 flex justify-between items-center bg-slate-50 rounded-t-lg cursor-pointer hover:bg-slate-100",onClick:()=>{var t;let n;return s&&(t=e.id,void((n=new Set(U)).has(t)?n.delete(t):n.add(t),K(n)))},children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[s&&(0,t.jsx)(M,{size:14,className:"text-indigo-500"}),(0,t.jsx)("span",{className:`text-[10px] font-bold px-1.5 py-0.5 rounded uppercase tracking-wide ${a.type.includes("Correction")?"bg-green-100 text-green-700":a.type.includes("Insertion")?"bg-blue-100 text-blue-700":"bg-purple-100 text-purple-700"}`,children:a.type})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)("span",{className:"text-[10px] text-slate-400",children:new Date(a.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}),s&&(n?(0,t.jsx)(w,{size:14,className:"text-slate-400"}):(0,t.jsx)(k,{size:14,className:"text-slate-400"}))]})]}),!n&&(0,t.jsxs)("div",{className:"p-2",children:[(0,t.jsxs)("div",{className:"text-xs text-slate-500 italic line-clamp-2",children:['"',a.snippet,'"']}),(0,t.jsxs)("button",{onClick:()=>J(a),className:"mt-2 w-full flex items-center justify-center gap-1 text-[10px] bg-slate-50 hover:bg-indigo-50 text-slate-600 hover:text-indigo-700 py-1 rounded transition-colors",children:[(0,t.jsx)(j,{size:10})," Restaurer"]})]}),n&&(0,t.jsx)("div",{className:"divide-y divide-slate-100 max-h-64 overflow-y-auto",children:e.versions.map((e,n)=>(0,t.jsxs)("div",{className:"p-2 bg-white hover:bg-slate-50 transition-colors",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-1",children:[(0,t.jsx)("span",{className:"text-[10px] font-semibold text-slate-600",children:0===n?"Dernière version":`Version -${n}`}),(0,t.jsx)("span",{className:"text-[9px] text-slate-400",children:new Date(e.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})})]}),(0,t.jsxs)("div",{className:"text-xs text-slate-500 italic bg-slate-50 p-1.5 rounded mb-2 border border-slate-100",children:['"',e.snippet,'"']}),(0,t.jsxs)("button",{onClick:()=>J(e),className:"w-full flex items-center justify-center gap-1 text-[10px] bg-white border border-slate-200 text-slate-600 hover:text-indigo-600 hover:border-indigo-200 py-1 rounded transition-colors",children:[(0,t.jsx)(j,{size:10})," Restaurer cette version"]})]},e.id))})]})},e.id)})]})]})}),I&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"fixed inset-0 z-40 bg-transparent",onClick:()=>$(null),onContextMenu:e=>{e.preventDefault(),$(null)}}),(0,t.jsx)("div",{className:"fixed z-50 bg-white border border-slate-200 rounded-lg shadow-xl py-1 w-56 animate-in fade-in zoom-in-95 duration-100 flex flex-col",style:{top:Math.min(I.y,window.innerHeight-200),left:Math.min(I.x,window.innerWidth-224)},children:O?(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center py-4 text-indigo-600 gap-2",children:[(0,t.jsx)(y.Loader2,{className:"animate-spin",size:24}),(0,t.jsx)("span",{className:"text-xs font-medium",children:"L'IA travaille..."})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"px-3 py-1 text-[10px] font-bold text-slate-400 uppercase tracking-wider",children:"Outils IA"}),(0,t.jsxs)("button",{onClick:()=>ee("correct"),disabled:!en,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!en?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-indigo-50 hover:text-indigo-700"}`,children:[(0,t.jsx)(m.Check,{size:14})," Corriger l'orthographe"]}),(0,t.jsxs)("button",{onClick:()=>ee("rewrite"),disabled:!en,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!en?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-indigo-50 hover:text-indigo-700"}`,children:[(0,t.jsx)(g.RefreshCw,{size:14})," Reformuler"]}),(0,t.jsxs)("button",{onClick:()=>ee("expand"),disabled:!en,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!en?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-indigo-50 hover:text-indigo-700"}`,children:[(0,t.jsx)(f,{size:14})," Développer"]}),(0,t.jsxs)("button",{onClick:()=>ee("continue"),className:"flex items-center gap-2 px-3 py-2 text-sm text-slate-700 hover:bg-indigo-50 hover:text-indigo-700 text-left transition-colors",children:[(0,t.jsx)(h,{size:14})," Continuer l'écriture"]}),(0,t.jsx)("div",{className:"h-px bg-slate-100 my-1"}),(0,t.jsx)("div",{className:"px-3 py-1 text-[10px] font-bold text-slate-400 uppercase tracking-wider",children:"Édition"}),(0,t.jsxs)("button",{onClick:()=>{if(W.current){let e=window.getSelection();e?.removeAllRanges(),e?.addRange(W.current),document.execCommand("copy")}$(null)},disabled:!en,className:`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!en?"text-slate-300 cursor-not-allowed":"text-slate-700 hover:bg-slate-50"}`,children:[(0,t.jsx)(p,{size:14})," Copier"]}),(0,t.jsxs)("button",{onClick:()=>{S.current?.focus(),document.execCommand("selectAll"),_(),$(null)},className:"flex items-center gap-2 px-3 py-2 text-sm text-slate-700 hover:bg-slate-50 text-left transition-colors",children:[(0,t.jsx)(v.MousePointerClick,{size:14})," Tout sélectionner"]})]})})]})]})});var C=e.i(24224),z=e.i(4301);function R(){let e=(0,n.useRef)(null),{project:s,user:a,currentChapterId:i,updateChapter:l,incrementUsage:r}=(0,C.useProjectContext)();if(!i)return null;let o=s.chapters?.find(e=>e.id===i);return(0,t.jsx)(N,{ref:e,initialContent:o?.content||"",onSave:e=>l(i,{content:e}),onAiTransform:async(e,t)=>{let n=await z.default.ai.transform(e,t,o?.content||"",a);return r(),n}})}e.s(["default",()=>R],81350)}]); \ No newline at end of file diff --git a/.next/static/chunks/6eddc7a29ea4b1ec.js b/.next/static/chunks/d999d746f562d355.js similarity index 85% rename from .next/static/chunks/6eddc7a29ea4b1ec.js rename to .next/static/chunks/d999d746f562d355.js index b17ae39..906d833 100644 --- a/.next/static/chunks/6eddc7a29ea4b1ec.js +++ b/.next/static/chunks/d999d746f562d355.js @@ -1 +1 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54879,e=>{"use strict";let t=(0,e.i(78445).default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",()=>t],54879)},78445,e=>{"use strict";var t=e.i(59760);let s=(...e)=>e.filter((e,t,s)=>!!e&&""!==e.trim()&&s.indexOf(e)===t).join(" ").trim(),a=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,s)=>s?s.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var l={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let r=(0,t.forwardRef)(({color:e="currentColor",size:a=24,strokeWidth:r=2,absoluteStrokeWidth:i,className:o="",children:n,iconNode:c,...d},x)=>(0,t.createElement)("svg",{ref:x,...l,width:a,height:a,stroke:e,strokeWidth:i?24*Number(r)/Number(a):r,className:s("lucide",o),...!n&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(d)&&{"aria-hidden":"true"},...d},[...c.map(([e,s])=>(0,t.createElement)(e,s)),...Array.isArray(n)?n:[n]])),i=(e,l)=>{let i=(0,t.forwardRef)(({className:i,...o},n)=>(0,t.createElement)(r,{ref:n,iconNode:l,className:s(`lucide-${a(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,i),...o}));return i.displayName=a(e),i};e.s(["default",()=>i],78445)},12856,(e,t,s)=>{t.exports=e.r(96479)},50147,e=>{"use strict";let t=(0,e.i(78445).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);e.s(["User",()=>t],50147)},98867,e=>{"use strict";let t=(0,e.i(78445).default)("panels-top-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]]);e.s(["Layout",()=>t],98867)},19809,e=>{"use strict";let t=(0,e.i(78445).default)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);e.s(["Shield",()=>t],19809)},54956,e=>{"use strict";let t=(0,e.i(78445).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);e.s(["Target",()=>t],54956)},49491,e=>{"use strict";let t=(0,e.i(78445).default)("flame",[["path",{d:"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4",key:"1slcih"}]]);e.s(["Flame",()=>t],49491)},4248,e=>{"use strict";var t=e.i(30064),s=e.i(12856),a=e.i(18404),l=e.i(59760),r=e.i(50147),i=e.i(19809),o=e.i(54879);let n=(0,e.i(78445).default)("camera",[["path",{d:"M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",key:"18u6gg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]]);var c=e.i(54956),d=e.i(49491),x=e.i(98867);let u=({user:e,onUpdate:s,onBack:a})=>{console.log("[UserProfileSettings DEBUG] PROPS RECEIVED:",{user:e,userId:e?.id,hasOnUpdate:!!s,hasOnBack:!!a});let[u,m]=(0,l.useState)("profile"),[h,p]=(0,l.useState)({name:e.name,bio:e.bio||"",email:e.email,theme:e.preferences.theme,dailyWordGoal:e.preferences.dailyWordGoal});return(0,t.jsx)("div",{className:"h-full bg-slate-50 overflow-y-auto p-8 font-sans",children:(0,t.jsxs)("div",{className:"max-w-4xl mx-auto",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-10",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-3xl font-black text-slate-900",children:"Mon Compte"}),(0,t.jsx)("p",{className:"text-slate-500",children:"Gérez vos informations personnelles et préférences d'écriture."})]}),(0,t.jsx)("button",{onClick:a,className:"bg-white border border-slate-200 px-4 py-2 rounded-lg text-sm font-bold hover:bg-slate-50 transition-colors",children:"Fermer"})]}),(0,t.jsxs)("div",{className:"flex flex-col md:flex-row gap-8",children:[(0,t.jsxs)("div",{className:"w-full md:w-64 space-y-1",children:[(0,t.jsxs)("button",{onClick:()=>m("profile"),className:`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${"profile"===u?"bg-slate-900 text-white shadow-lg":"text-slate-500 hover:bg-white hover:text-slate-900"}`,children:[(0,t.jsx)(r.User,{size:18})," Profil Public"]}),(0,t.jsxs)("button",{onClick:()=>m("preferences"),className:`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${"preferences"===u?"bg-slate-900 text-white shadow-lg":"text-slate-500 hover:bg-white hover:text-slate-900"}`,children:[(0,t.jsx)(x.Layout,{size:18})," Interface & Écriture"]}),(0,t.jsxs)("button",{onClick:()=>m("account"),className:`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${"account"===u?"bg-slate-900 text-white shadow-lg":"text-slate-500 hover:bg-white hover:text-slate-900"}`,children:[(0,t.jsx)(i.Shield,{size:18})," Sécurité & Plan"]})]}),(0,t.jsxs)("div",{className:"flex-1 bg-white rounded-2xl shadow-sm border border-slate-200 p-8",children:["profile"===u&&(0,t.jsxs)("div",{className:"space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300",children:[(0,t.jsxs)("div",{className:"flex items-center gap-6 pb-8 border-b border-slate-100",children:[(0,t.jsxs)("div",{className:"relative group",children:[(0,t.jsx)("img",{src:e.avatar,className:"w-24 h-24 rounded-full object-cover border-4 border-slate-50 shadow-md",alt:"Avatar"}),(0,t.jsx)("button",{className:"absolute inset-0 bg-black/40 text-white rounded-full opacity-0 group-hover:opacity-100 flex items-center justify-center transition-opacity",children:(0,t.jsx)(n,{size:20})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"font-bold text-slate-900 text-lg",children:e.name}),(0,t.jsx)("p",{className:"text-slate-400 text-sm",children:"Membre depuis Janvier 2024"}),(0,t.jsx)("div",{className:"mt-2 flex gap-4",children:(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-bold text-orange-500",children:[(0,t.jsx)(d.Flame,{size:14,fill:"currentColor"})," ",e.stats.writingStreak," jours de streak"]})})]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-6",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest",children:"Nom affiché"}),(0,t.jsx)("input",{type:"text",value:h.name,onChange:e=>p({...h,name:e.target.value}),className:"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500"})]}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest",children:"Bio / Citation inspirante"}),(0,t.jsx)("textarea",{value:h.bio,onChange:e=>p({...h,bio:e.target.value}),className:"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 h-24 resize-none",placeholder:"Partagez quelques mots sur votre style..."})]})]})]}),"preferences"===u&&(0,t.jsx)("div",{className:"space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300",children:(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-8",children:[(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest flex items-center gap-2",children:[(0,t.jsx)(c.Target,{size:14})," Objectif quotidien de mots"]}),(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)("input",{type:"range",min:"0",max:"5000",step:"100",value:h.dailyWordGoal,onChange:e=>p({...h,dailyWordGoal:parseInt(e.target.value)}),className:"flex-1 accent-blue-600"}),(0,t.jsx)("span",{className:"font-mono font-bold text-blue-600 bg-blue-50 px-3 py-1 rounded-lg",children:h.dailyWordGoal})]})]}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest flex items-center gap-2",children:"Thème de l'éditeur"}),(0,t.jsx)("div",{className:"grid grid-cols-3 gap-3",children:["light","sepia","dark"].map(e=>(0,t.jsxs)("button",{onClick:()=>p({...h,theme:e}),className:`p-4 rounded-xl border-2 transition-all flex flex-col items-center gap-2 ${h.theme===e?"border-blue-500 bg-blue-50 text-blue-700":"border-slate-100 hover:border-slate-200 text-slate-500"}`,children:[(0,t.jsx)("div",{className:`w-8 h-8 rounded-full border border-slate-200 ${"light"===e?"bg-white":"sepia"===e?"bg-[#f4ecd8]":"bg-slate-900"}`}),(0,t.jsx)("span",{className:"text-[10px] font-bold uppercase",children:e})]},e))})]})]})}),"account"===u&&(0,t.jsxs)("div",{className:"space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300",children:[(0,t.jsxs)("div",{className:"p-4 bg-blue-50 border border-blue-100 rounded-xl flex justify-between items-center",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("h4",{className:"font-bold text-blue-900",children:["Plan ",e.subscription.plan.toUpperCase()]}),(0,t.jsx)("p",{className:"text-xs text-blue-700",children:"Prochaine facturation le 15 Mars 2024"})]}),(0,t.jsx)("button",{className:"bg-blue-600 text-white px-4 py-2 rounded-lg text-xs font-bold hover:bg-blue-700 shadow-md shadow-blue-200",children:"Gérer"})]}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest",children:"Email du compte"}),(0,t.jsx)("input",{type:"email",value:h.email,onChange:e=>p({...h,email:e.target.value}),className:"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500"})]}),(0,t.jsx)("div",{className:"pt-4",children:(0,t.jsx)("button",{className:"text-red-500 text-sm font-bold hover:underline",children:"Supprimer mon compte définitivement"})})]}),(0,t.jsx)("div",{className:"mt-12 pt-8 border-t border-slate-100 flex justify-end",children:(0,t.jsxs)("button",{onClick:()=>{s({name:h.name,bio:h.bio,email:h.email,preferences:{...e.preferences,theme:h.theme,dailyWordGoal:h.dailyWordGoal}}),alert("Profil mis à jour !")},className:"bg-slate-900 text-white px-8 py-3 rounded-xl font-bold flex items-center gap-2 hover:bg-blue-600 transition-all shadow-xl hover:shadow-blue-200",children:[(0,t.jsx)(o.Save,{size:18})," Sauvegarder les modifications"]})})]})]})]})})};function m(){let e=(0,s.useRouter)(),{user:r,loading:i}=(0,a.useAuthContext)();return((0,l.useEffect)(()=>{i||r||e.replace("/login")},[r,i,e]),i||!r)?null:(0,t.jsx)(u,{user:r,onUpdate:e=>console.log("Profile update:",e),onBack:()=>e.push("/dashboard")})}e.s(["default",()=>m],4248)}]); \ No newline at end of file +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,78445,e=>{"use strict";var t=e.i(59760);let s=(...e)=>e.filter((e,t,s)=>!!e&&""!==e.trim()&&s.indexOf(e)===t).join(" ").trim(),a=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,s)=>s?s.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var l={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let r=(0,t.forwardRef)(({color:e="currentColor",size:a=24,strokeWidth:r=2,absoluteStrokeWidth:i,className:o="",children:n,iconNode:c,...d},x)=>(0,t.createElement)("svg",{ref:x,...l,width:a,height:a,stroke:e,strokeWidth:i?24*Number(r)/Number(a):r,className:s("lucide",o),...!n&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(d)&&{"aria-hidden":"true"},...d},[...c.map(([e,s])=>(0,t.createElement)(e,s)),...Array.isArray(n)?n:[n]])),i=(e,l)=>{let i=(0,t.forwardRef)(({className:i,...o},n)=>(0,t.createElement)(r,{ref:n,iconNode:l,className:s(`lucide-${a(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,i),...o}));return i.displayName=a(e),i};e.s(["default",()=>i],78445)},12856,(e,t,s)=>{t.exports=e.r(96479)},54879,e=>{"use strict";let t=(0,e.i(78445).default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",()=>t],54879)},50147,e=>{"use strict";let t=(0,e.i(78445).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);e.s(["User",()=>t],50147)},98867,e=>{"use strict";let t=(0,e.i(78445).default)("panels-top-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]]);e.s(["Layout",()=>t],98867)},19809,e=>{"use strict";let t=(0,e.i(78445).default)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);e.s(["Shield",()=>t],19809)},54956,e=>{"use strict";let t=(0,e.i(78445).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);e.s(["Target",()=>t],54956)},49491,e=>{"use strict";let t=(0,e.i(78445).default)("flame",[["path",{d:"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4",key:"1slcih"}]]);e.s(["Flame",()=>t],49491)},4248,e=>{"use strict";var t=e.i(30064),s=e.i(12856),a=e.i(18404),l=e.i(59760),r=e.i(50147),i=e.i(19809),o=e.i(54879);let n=(0,e.i(78445).default)("camera",[["path",{d:"M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",key:"18u6gg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]]);var c=e.i(54956),d=e.i(49491),x=e.i(98867);let u=({user:e,onUpdate:s,onBack:a})=>{console.log("[UserProfileSettings DEBUG] PROPS RECEIVED:",{user:e,userId:e?.id,hasOnUpdate:!!s,hasOnBack:!!a});let[u,m]=(0,l.useState)("profile"),[h,p]=(0,l.useState)({name:e.name,bio:e.bio||"",email:e.email,theme:e.preferences.theme,dailyWordGoal:e.preferences.dailyWordGoal});return(0,t.jsx)("div",{className:"h-full bg-slate-50 overflow-y-auto p-8 font-sans",children:(0,t.jsxs)("div",{className:"max-w-4xl mx-auto",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-10",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-3xl font-black text-slate-900",children:"Mon Compte"}),(0,t.jsx)("p",{className:"text-slate-500",children:"Gérez vos informations personnelles et préférences d'écriture."})]}),(0,t.jsx)("button",{onClick:a,className:"bg-white border border-slate-200 px-4 py-2 rounded-lg text-sm font-bold hover:bg-slate-50 transition-colors",children:"Fermer"})]}),(0,t.jsxs)("div",{className:"flex flex-col md:flex-row gap-8",children:[(0,t.jsxs)("div",{className:"w-full md:w-64 space-y-1",children:[(0,t.jsxs)("button",{onClick:()=>m("profile"),className:`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${"profile"===u?"bg-slate-900 text-white shadow-lg":"text-slate-500 hover:bg-white hover:text-slate-900"}`,children:[(0,t.jsx)(r.User,{size:18})," Profil Public"]}),(0,t.jsxs)("button",{onClick:()=>m("preferences"),className:`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${"preferences"===u?"bg-slate-900 text-white shadow-lg":"text-slate-500 hover:bg-white hover:text-slate-900"}`,children:[(0,t.jsx)(x.Layout,{size:18})," Interface & Écriture"]}),(0,t.jsxs)("button",{onClick:()=>m("account"),className:`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${"account"===u?"bg-slate-900 text-white shadow-lg":"text-slate-500 hover:bg-white hover:text-slate-900"}`,children:[(0,t.jsx)(i.Shield,{size:18})," Sécurité & Plan"]})]}),(0,t.jsxs)("div",{className:"flex-1 bg-white rounded-2xl shadow-sm border border-slate-200 p-8",children:["profile"===u&&(0,t.jsxs)("div",{className:"space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300",children:[(0,t.jsxs)("div",{className:"flex items-center gap-6 pb-8 border-b border-slate-100",children:[(0,t.jsxs)("div",{className:"relative group",children:[(0,t.jsx)("img",{src:e.avatar,className:"w-24 h-24 rounded-full object-cover border-4 border-slate-50 shadow-md",alt:"Avatar"}),(0,t.jsx)("button",{className:"absolute inset-0 bg-black/40 text-white rounded-full opacity-0 group-hover:opacity-100 flex items-center justify-center transition-opacity",children:(0,t.jsx)(n,{size:20})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"font-bold text-slate-900 text-lg",children:e.name}),(0,t.jsx)("p",{className:"text-slate-400 text-sm",children:"Membre depuis Janvier 2024"}),(0,t.jsx)("div",{className:"mt-2 flex gap-4",children:(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-bold text-orange-500",children:[(0,t.jsx)(d.Flame,{size:14,fill:"currentColor"})," ",e.stats.writingStreak," jours de streak"]})})]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-6",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest",children:"Nom affiché"}),(0,t.jsx)("input",{type:"text",value:h.name,onChange:e=>p({...h,name:e.target.value}),className:"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500"})]}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest",children:"Bio / Citation inspirante"}),(0,t.jsx)("textarea",{value:h.bio,onChange:e=>p({...h,bio:e.target.value}),className:"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 h-24 resize-none",placeholder:"Partagez quelques mots sur votre style..."})]})]})]}),"preferences"===u&&(0,t.jsx)("div",{className:"space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300",children:(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-8",children:[(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest flex items-center gap-2",children:[(0,t.jsx)(c.Target,{size:14})," Objectif quotidien de mots"]}),(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)("input",{type:"range",min:"0",max:"5000",step:"100",value:h.dailyWordGoal,onChange:e=>p({...h,dailyWordGoal:parseInt(e.target.value)}),className:"flex-1 accent-blue-600"}),(0,t.jsx)("span",{className:"font-mono font-bold text-blue-600 bg-blue-50 px-3 py-1 rounded-lg",children:h.dailyWordGoal})]})]}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest flex items-center gap-2",children:"Thème de l'éditeur"}),(0,t.jsx)("div",{className:"grid grid-cols-3 gap-3",children:["light","sepia","dark"].map(e=>(0,t.jsxs)("button",{onClick:()=>p({...h,theme:e}),className:`p-4 rounded-xl border-2 transition-all flex flex-col items-center gap-2 ${h.theme===e?"border-blue-500 bg-blue-50 text-blue-700":"border-slate-100 hover:border-slate-200 text-slate-500"}`,children:[(0,t.jsx)("div",{className:`w-8 h-8 rounded-full border border-slate-200 ${"light"===e?"bg-white":"sepia"===e?"bg-[#f4ecd8]":"bg-slate-900"}`}),(0,t.jsx)("span",{className:"text-[10px] font-bold uppercase",children:e})]},e))})]})]})}),"account"===u&&(0,t.jsxs)("div",{className:"space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300",children:[(0,t.jsxs)("div",{className:"p-4 bg-blue-50 border border-blue-100 rounded-xl flex justify-between items-center",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("h4",{className:"font-bold text-blue-900",children:["Plan ",e.subscription.plan.toUpperCase()]}),(0,t.jsx)("p",{className:"text-xs text-blue-700",children:"Prochaine facturation le 15 Mars 2024"})]}),(0,t.jsx)("button",{className:"bg-blue-600 text-white px-4 py-2 rounded-lg text-xs font-bold hover:bg-blue-700 shadow-md shadow-blue-200",children:"Gérer"})]}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("label",{className:"text-xs font-black text-slate-400 uppercase tracking-widest",children:"Email du compte"}),(0,t.jsx)("input",{type:"email",value:h.email,onChange:e=>p({...h,email:e.target.value}),className:"w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500"})]}),(0,t.jsx)("div",{className:"pt-4",children:(0,t.jsx)("button",{className:"text-red-500 text-sm font-bold hover:underline",children:"Supprimer mon compte définitivement"})})]}),(0,t.jsx)("div",{className:"mt-12 pt-8 border-t border-slate-100 flex justify-end",children:(0,t.jsxs)("button",{onClick:()=>{s({name:h.name,bio:h.bio,email:h.email,preferences:{...e.preferences,theme:h.theme,dailyWordGoal:h.dailyWordGoal}}),alert("Profil mis à jour !")},className:"bg-slate-900 text-white px-8 py-3 rounded-xl font-bold flex items-center gap-2 hover:bg-blue-600 transition-all shadow-xl hover:shadow-blue-200",children:[(0,t.jsx)(o.Save,{size:18})," Sauvegarder les modifications"]})})]})]})]})})};function m(){let e=(0,s.useRouter)(),{user:r,loading:i}=(0,a.useAuthContext)();return((0,l.useEffect)(()=>{i||r||e.replace("/login")},[r,i,e]),i||!r)?null:(0,t.jsx)(u,{user:r,onUpdate:e=>console.log("Profile update:",e),onBack:()=>e.push("/dashboard")})}e.s(["default",()=>m],4248)}]); \ No newline at end of file diff --git a/.next/static/chunks/342f8c662a90d061.js b/.next/static/chunks/db791929fb045c25.js similarity index 94% rename from .next/static/chunks/342f8c662a90d061.js rename to .next/static/chunks/db791929fb045c25.js index 4494975..21b93a9 100644 --- a/.next/static/chunks/342f8c662a90d061.js +++ b/.next/static/chunks/db791929fb045c25.js @@ -1 +1 @@ -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54879,e=>{"use strict";let t=(0,e.i(78445).default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",()=>t],54879)},96922,e=>{"use strict";let t=(0,e.i(78445).default)("list",[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]);e.s(["List",()=>t],96922)},52724,e=>{"use strict";var t=e.i(30064),s=e.i(59760),a=e.i(33907),l=e.i(22508),i=e.i(4917),r=e.i(54879),n=e.i(59111),o=e.i(46202),d=e.i(50147),c=e.i(78445);let x=(0,c.default)("brain",[["path",{d:"M12 18V5",key:"adv99a"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4",key:"1e3is1"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5",key:"1gqd8o"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77",key:"iwvgf7"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464",key:"efp6ie"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517",key:"1gq6am"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464",key:"k1g0md"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77",key:"q97ue3"}]]),u=(0,c.default)("ruler",[["path",{d:"M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.41 2.41 0 0 1 0-3.4l2.6-2.6a2.41 2.41 0 0 1 3.4 0Z",key:"icamh8"}],["path",{d:"m14.5 12.5 2-2",key:"inckbg"}],["path",{d:"m11.5 9.5 2-2",key:"fmmyf7"}],["path",{d:"m8.5 6.5 2-2",key:"vc6u1g"}],["path",{d:"m17.5 15.5 2-2",key:"wo5hmg"}]]);var p=e.i(46553),m=e.i(98867),h=e.i(96922),b=e.i(71143);let g={age:30,height:175,hair:"Brun",eyes:"Marron",archetype:"Le Héros",role:"support",personality:{spectrumIntrovertExtravert:50,spectrumEmotionalRational:50,spectrumChaoticLawful:50},physicalQuirk:"",behavioralQuirk:""},f=({entities:e,onCreate:c,onUpdate:f,onDelete:v,templates:j,onUpdateTemplates:y,initialSelectedId:N})=>{let C,[k,w]=(0,s.useState)(null),[T,E]=(0,s.useState)(null),[A,R]=(0,s.useState)("entities"),[M,S]=(0,s.useState)(a.EntityType.CHARACTER);(0,s.useEffect)(()=>{if(N){let t=e.find(e=>e.id===N);t&&(I(t),R("entities"))}},[N,e]);let z=(0,s.useMemo)(()=>{let t=e.filter(e=>e.type===a.EntityType.CHARACTER&&e.attributes?.archetype).map(e=>e.attributes.archetype);return Array.from(new Set([...b.ARCHETYPES,...t])).sort()},[e]),I=e=>{let t={...e};e.type!==a.EntityType.CHARACTER||e.attributes||(t.attributes={...g}),e.customValues||(t.customValues={}),E(t),w(e.id)},L=async()=>{if(T&&T.name){if("NEW"===k){let{id:e,...t}=T;await c(t)}else f(T.id,T);w(null),E(null)}},O=(e,t)=>{T&&T.attributes&&E({...T,attributes:{...T.attributes,[e]:t}})},H=(e,t)=>{T&&T.attributes&&E({...T,attributes:{...T.attributes,personality:{...T.attributes.personality,[e]:t}}})},P=(e,t)=>{T&&E({...T,customValues:{...T.customValues,[e]:t}})},V=(e,t,s)=>{y(j.map(a=>a.entityType!==e?a:{...a,fields:a.fields.map(e=>e.id===t?{...e,...s}:e)}))},q=t=>e.filter(e=>e.type===t);if("templates"===A){let e;return(0,t.jsxs)("div",{className:"flex h-full gap-6 p-6 bg-[#eef2ff]",children:[(0,t.jsx)("div",{className:"w-1/3 opacity-50 pointer-events-none filter blur-[1px]",children:(0,t.jsxs)("div",{className:"bg-white rounded-lg p-6 shadow-sm border border-slate-200",children:[(0,t.jsx)("h3",{className:"font-bold text-slate-700 mb-4",children:"Aperçu Fiches"}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("div",{className:"h-10 bg-indigo-50 rounded"}),(0,t.jsx)("div",{className:"h-10 bg-indigo-50 rounded"}),(0,t.jsx)("div",{className:"h-10 bg-indigo-50 rounded"})]})]})}),(e=j.find(e=>e.entityType===M)||{entityType:M,fields:[]},(0,t.jsxs)("div",{className:"flex-1 bg-white rounded-xl shadow-lg border border-slate-200 p-8 overflow-y-auto",children:[(0,t.jsxs)("div",{className:"flex justify-between items-start mb-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("h2",{className:"text-2xl font-bold text-slate-800 flex items-center gap-2",children:[(0,t.jsx)(m.Layout,{size:24,className:"text-indigo-600"})," Éditeur de Modèles"]}),(0,t.jsx)("p",{className:"text-slate-500 text-sm mt-1",children:"Configurez les champs personnalisés pour chaque type de fiche."})]}),(0,t.jsx)("button",{onClick:()=>R("entities"),className:"p-2 text-slate-500 hover:bg-slate-100 rounded-full",children:(0,t.jsx)(n.X,{size:20})})]}),(0,t.jsx)("div",{className:"flex gap-2 mb-8 border-b border-slate-200 pb-1",children:Object.values(a.EntityType).map(e=>(0,t.jsx)("button",{onClick:()=>S(e),className:`px-4 py-2 text-sm font-medium rounded-t-lg transition-colors ${M===e?"bg-indigo-50 text-indigo-700 border-b-2 border-indigo-600":"text-slate-500 hover:text-slate-800 hover:bg-slate-50"}`,children:e},e))}),(0,t.jsxs)("div",{className:"space-y-4",children:[e.fields.map((e,s)=>(0,t.jsxs)("div",{className:"bg-[#eef2ff] border border-indigo-100 rounded-lg p-4 flex gap-4 items-start group",children:[(0,t.jsxs)("div",{className:"flex-1 grid grid-cols-2 gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Nom du champ"}),(0,t.jsx)("input",{type:"text",value:e.label,onChange:t=>V(M,e.id,{label:t.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Type"}),(0,t.jsxs)("select",{value:e.type,onChange:t=>V(M,e.id,{type:t.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",children:[(0,t.jsx)("option",{value:"text",children:"Texte court"}),(0,t.jsx)("option",{value:"textarea",children:"Texte long"}),(0,t.jsx)("option",{value:"number",children:"Nombre"}),(0,t.jsx)("option",{value:"boolean",children:"Case à cocher"}),(0,t.jsx)("option",{value:"select",children:"Liste déroulante"})]})]}),"select"===e.type&&(0,t.jsxs)("div",{className:"col-span-2",children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Options (séparées par des virgules)"}),(0,t.jsx)("input",{type:"text",value:e.options?.join(",")||"",onChange:t=>V(M,e.id,{options:t.target.value.split(",").map(e=>e.trim())}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",placeholder:"Option A, Option B, Option C"})]})]}),(0,t.jsx)("button",{onClick:()=>{var t;return t=e.id,void y(j.map(e=>e.entityType!==M?e:{...e,fields:e.fields.filter(e=>e.id!==t)}))},className:"p-2 text-slate-400 hover:text-red-600 hover:bg-red-50 rounded mt-5",children:(0,t.jsx)(i.Trash2,{size:16})})]},e.id)),(0,t.jsxs)("button",{onClick:()=>{let e,t;return e={id:`field-${Date.now()}`,label:"Nouveau Champ",type:"text",placeholder:""},void(!(t=j.map(t=>t.entityType===M?{...t,fields:[...t.fields,e]}:t)).some(e=>e.entityType===M)&&t.push({entityType:M,fields:[e]}),y(t))},className:"w-full py-3 border-2 border-dashed border-slate-300 rounded-lg text-slate-500 hover:border-indigo-400 hover:text-indigo-600 hover:bg-indigo-50 transition-all flex items-center justify-center gap-2",children:[(0,t.jsx)(l.Plus,{size:20})," Ajouter un champ"]})]})]}))]})}return(0,t.jsxs)("div",{className:"flex h-full gap-6 p-6 bg-[#eef2ff]",children:[(0,t.jsxs)("div",{className:"w-1/3 flex flex-col gap-4",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center px-1",children:[(0,t.jsx)("h2",{className:"text-lg font-bold text-slate-700",children:"Explorateur"}),(0,t.jsxs)("button",{onClick:()=>R("templates"),className:"flex items-center gap-1.5 px-3 py-1.5 bg-indigo-100 text-indigo-700 hover:bg-indigo-200 rounded text-xs font-medium transition-colors",title:"Gérer les modèles de fiches",children:[(0,t.jsx)(p.Settings,{size:14})," Modèles"]})]}),(0,t.jsx)("div",{className:"space-y-6 overflow-y-auto pr-2 pb-4 flex-1",children:Object.values(a.EntityType).map(e=>(0,t.jsxs)("div",{className:"bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden",children:[(0,t.jsxs)("div",{className:"bg-indigo-50 p-3 border-b border-indigo-100 flex justify-between items-center",children:[(0,t.jsxs)("h3",{className:"font-semibold text-slate-700 flex items-center gap-2",children:[(0,t.jsx)("span",{children:b.ENTITY_ICONS[e]})," ",e,"s"]}),(0,t.jsx)("button",{onClick:()=>{E({id:Date.now().toString(),type:e,name:"",description:"",details:"",storyContext:"",attributes:e===a.EntityType.CHARACTER?{...g}:void 0,customValues:{}}),w("NEW")},className:"p-1 hover:bg-indigo-100 rounded text-indigo-600 transition-colors",children:(0,t.jsx)(l.Plus,{size:16})})]}),(0,t.jsxs)("div",{className:"divide-y divide-slate-100",children:[0===q(e).length&&(0,t.jsx)("p",{className:"p-4 text-sm text-slate-400 italic text-center",children:"Aucun élément"}),q(e).map(e=>(0,t.jsxs)("div",{onClick:()=>I(e),className:`p-3 cursor-pointer hover:bg-blue-50 transition-colors flex justify-between group ${k===e.id?"bg-blue-50 border-l-4 border-blue-500":""}`,children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"font-medium text-slate-800",children:e.name}),(0,t.jsx)("div",{className:"text-xs text-slate-500 truncate",children:e.description})]}),(0,t.jsx)("button",{onClick:t=>{var s;t.stopPropagation(),s=e.id,confirm("Supprimer cet élément ?")&&(v(s),k===s&&(w(null),E(null)))},className:"opacity-0 group-hover:opacity-100 text-red-400 hover:text-red-600 transition-opacity",children:(0,t.jsx)(i.Trash2,{size:14})})]},e.id))]})]},e))})]}),(0,t.jsx)("div",{className:"flex-1 bg-white rounded-xl shadow-lg border border-slate-200 p-8 overflow-y-auto",children:k&&T?(0,t.jsxs)("div",{className:"space-y-6 animate-in fade-in duration-200",children:[(0,t.jsxs)("div",{className:"flex justify-between items-start",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("span",{className:`inline-block px-2 py-1 rounded text-xs font-bold uppercase tracking-wider ${b.ENTITY_COLORS[T.type]}`,children:T.type}),(0,t.jsx)("h2",{className:"text-2xl font-bold text-slate-800",children:T.type===a.EntityType.CHARACTER?"Fiche Personnage":"Édition de la fiche"})]}),(0,t.jsx)("div",{className:"flex gap-2",children:(0,t.jsx)("button",{onClick:()=>w(null),className:"p-2 text-slate-500 hover:bg-slate-100 rounded-full",children:(0,t.jsx)(n.X,{size:20})})})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-slate-700 mb-1",children:"Nom"}),(0,t.jsx)("input",{type:"text",value:T.name,onChange:e=>E({...T,name:e.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none font-serif text-lg",placeholder:"Ex: Gandalf le Gris"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-slate-700 mb-1",children:"Description Courte (pour l'IA)"}),(0,t.jsx)("textarea",{value:T.description,onChange:e=>E({...T,description:e.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-20",placeholder:"Un magicien puissant qui guide la communauté..."})]}),T.type===a.EntityType.CHARACTER&&(()=>{if(!T?.attributes)return null;let e=T.attributes;return(0,t.jsxs)("div",{className:"space-y-8 border-t border-slate-100 pt-6 mt-4",children:[(0,t.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100",children:[(0,t.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,t.jsx)(d.User,{size:16})," Identité Narrative"]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-2",children:"Archétype"}),(0,t.jsx)("input",{type:"text",list:"archetype-suggestions",value:e.archetype,onChange:e=>O("archetype",e.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-blue-500",placeholder:"Ex: Le Héros, Le Sage..."}),(0,t.jsx)("datalist",{id:"archetype-suggestions",children:z.map(e=>(0,t.jsx)("option",{value:e},e))})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-2",children:"Rôle dans l'histoire"}),(0,t.jsx)("div",{className:"flex gap-2 flex-wrap",children:[{val:"protagonist",label:"Protagoniste"},{val:"antagonist",label:"Antagoniste"},{val:"support",label:"Secondaire"},{val:"extra",label:"Figurant"}].map(s=>(0,t.jsxs)("label",{className:`cursor-pointer px-3 py-1.5 rounded text-xs border transition-colors ${e.role===s.val?"bg-indigo-100 border-indigo-300 text-indigo-700 font-bold":"bg-[#eef2ff] border-slate-200 text-slate-600 hover:bg-slate-100"}`,children:[(0,t.jsx)("input",{type:"radio",name:"role",value:s.val,checked:e.role===s.val,onChange:()=>O("role",s.val),className:"hidden"}),s.label]},s.val))})]})]})]}),(0,t.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100",children:[(0,t.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,t.jsx)(u,{size:16})," Apparence Physique"]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"flex justify-between text-xs mb-1",children:(0,t.jsx)("label",{className:"font-semibold text-slate-600",children:"Âge (ans)"})}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("input",{type:"range",min:"1",max:"100",value:Math.min(e.age,100),onChange:e=>O("age",parseInt(e.target.value)),className:"flex-1 h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"}),(0,t.jsx)("input",{type:"number",value:e.age,onChange:e=>O("age",parseInt(e.target.value)),className:"w-20 p-1 text-right text-sm border border-slate-300 rounded font-mono text-indigo-700 bg-[#eef2ff] focus:border-indigo-500 outline-none"})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"flex justify-between text-xs mb-1",children:(0,t.jsx)("label",{className:"font-semibold text-slate-600",children:"Taille (cm)"})}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("input",{type:"range",min:"50",max:"250",value:Math.min(e.height,250),onChange:e=>O("height",parseInt(e.target.value)),className:"flex-1 h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"}),(0,t.jsx)("input",{type:"number",value:e.height,onChange:e=>O("height",parseInt(e.target.value)),className:"w-20 p-1 text-right text-sm border border-slate-300 rounded font-mono text-indigo-700 bg-[#eef2ff] focus:border-indigo-500 outline-none"})]})]})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Cheveux"}),(0,t.jsx)("select",{value:e.hair,onChange:e=>O("hair",e.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",children:b.HAIR_COLORS.map(e=>(0,t.jsx)("option",{value:e,children:e},e))})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Yeux"}),(0,t.jsx)("select",{value:e.eyes,onChange:e=>O("eyes",e.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",children:b.EYE_COLORS.map(e=>(0,t.jsx)("option",{value:e,children:e},e))})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Signe distinctif"}),(0,t.jsx)("input",{type:"text",value:e.physicalQuirk,onChange:e=>O("physicalQuirk",e.target.value),placeholder:"Cicatrice, tatouage...",className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400"})]})]})]})]}),(0,t.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100",children:[(0,t.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,t.jsx)(x,{size:16})," Psychologie & Comportement"]}),(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{className:"space-y-4 px-2",children:[(0,t.jsxs)("div",{className:"relative pt-1",children:[(0,t.jsxs)("div",{className:"flex justify-between text-[10px] uppercase font-bold text-slate-500 mb-1",children:[(0,t.jsx)("span",{children:"Introverti"}),(0,t.jsx)("span",{children:"Extraverti"})]}),(0,t.jsx)("input",{type:"range",min:"0",max:"100",value:e.personality.spectrumIntrovertExtravert,onChange:e=>H("spectrumIntrovertExtravert",parseInt(e.target.value)),className:"w-full h-2 bg-gradient-to-r from-slate-300 via-indigo-200 to-slate-300 rounded-lg appearance-none cursor-pointer accent-indigo-600"})]}),(0,t.jsxs)("div",{className:"relative pt-1",children:[(0,t.jsxs)("div",{className:"flex justify-between text-[10px] uppercase font-bold text-slate-500 mb-1",children:[(0,t.jsx)("span",{children:"Émotionnel"}),(0,t.jsx)("span",{children:"Rationnel"})]}),(0,t.jsx)("input",{type:"range",min:"0",max:"100",value:e.personality.spectrumEmotionalRational,onChange:e=>H("spectrumEmotionalRational",parseInt(e.target.value)),className:"w-full h-2 bg-gradient-to-r from-red-200 via-purple-200 to-blue-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"})]}),(0,t.jsxs)("div",{className:"relative pt-1",children:[(0,t.jsxs)("div",{className:"flex justify-between text-[10px] uppercase font-bold text-slate-500 mb-1",children:[(0,t.jsx)("span",{children:"Chaotique"}),(0,t.jsx)("span",{children:"Loyal"})]}),(0,t.jsx)("input",{type:"range",min:"0",max:"100",value:e.personality.spectrumChaoticLawful,onChange:e=>H("spectrumChaoticLawful",parseInt(e.target.value)),className:"w-full h-2 bg-gradient-to-r from-orange-200 via-yellow-100 to-green-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"})]})]}),(0,t.jsxs)("div",{className:"border-t border-slate-200 pt-4",children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Toc ou habitude comportementale"}),(0,t.jsx)("input",{type:"text",value:e.behavioralQuirk,onChange:e=>O("behavioralQuirk",e.target.value),placeholder:"Joue avec sa bague, bégaie quand il ment...",className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400"})]})]})]})]})})(),(C=j.find(e=>e.entityType===T?.type))&&0!==C.fields.length?(0,t.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100 mt-6",children:[(0,t.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,t.jsx)(h.List,{size:16})," Champs Personnalisés"]}),(0,t.jsx)("div",{className:"grid grid-cols-1 gap-4",children:C.fields.map(e=>{let s=T?.customValues?.[e.id]??"";return(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:e.label}),"textarea"===e.type?(0,t.jsx)("textarea",{value:s,onChange:t=>P(e.id,t.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400",placeholder:e.placeholder}):"select"===e.type?(0,t.jsxs)("select",{value:s,onChange:t=>P(e.id,t.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400",children:[(0,t.jsx)("option",{value:"",children:"Sélectionner..."}),e.options?.map(e=>(0,t.jsx)("option",{value:e,children:e},e))]}):"boolean"===e.type?(0,t.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",checked:!!s,onChange:t=>P(e.id,t.target.checked),className:"w-4 h-4 text-indigo-600 rounded border-slate-300 focus:ring-indigo-500"}),(0,t.jsx)("span",{className:"text-sm text-slate-700",children:"Activé / Oui"})]}):(0,t.jsx)("input",{type:"number"===e.type?"number":"text",value:s,onChange:t=>P(e.id,t.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400",placeholder:e.placeholder})]},e.id)})})]}):null,(0,t.jsxs)("div",{className:"mt-6 border-t border-slate-100 pt-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{className:"block text-sm font-medium text-indigo-700 mb-1 flex items-center gap-2",children:[(0,t.jsx)(o.Sparkles,{size:14})," Contexte Narratif (Auto-généré)"]}),(0,t.jsx)("textarea",{value:T.storyContext||"",onChange:e=>E({...T,storyContext:e.target.value}),className:"w-full p-2 border border-indigo-200 bg-indigo-50 rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-24 italic text-slate-600",placeholder:"Les événements vécus par ce personnage apparaîtront ici..."})]}),(0,t.jsxs)("div",{className:"mt-4",children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-slate-700 mb-1",children:"Notes & Biographie Complète"}),(0,t.jsx)("textarea",{value:T.details,onChange:e=>E({...T,details:e.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none h-48 font-serif",placeholder:"Histoire détaillée, secrets, origines..."})]})]}),(0,t.jsx)("div",{className:"pt-4 flex justify-end",children:(0,t.jsxs)("button",{onClick:L,className:"bg-blue-600 hover:bg-blue-700 text-white px-6 py-2 rounded-lg flex items-center gap-2 transition-colors shadow-md",children:[(0,t.jsx)(r.Save,{size:18}),"Enregistrer la fiche"]})})]})]}):(0,t.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-slate-400",children:[(0,t.jsx)("div",{className:"text-6xl mb-4 opacity-20",children:"🌍"}),(0,t.jsx)("p",{className:"text-lg",children:"Sélectionnez ou créez une fiche pour commencer."}),(0,t.jsx)("p",{className:"text-sm",children:"Ces informations aideront l'IA à rester cohérente."})]})})]})};var v=e.i(18404),j=e.i(8011),y=e.i(12856);function N(e){let{project:s,updateProject:a}=e,l=(0,y.useParams)();(0,y.useRouter)();let i=l.id,{user:r}=(0,v.useAuthContext)(),{createEntity:n,updateEntity:o,deleteEntity:d}=(0,j.useProjects)(r);return s?(0,t.jsx)(f,{entities:s.entities||[],onCreate:async e=>await n(i,e.type,e),onUpdate:(e,t)=>o(i,e,t),onDelete:e=>d(i,e),templates:s.templates||[],onUpdateTemplates:e=>a?.({templates:e}),initialSelectedId:null}):null}e.s(["default",()=>N],52724)}]); \ No newline at end of file +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54879,e=>{"use strict";let t=(0,e.i(78445).default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",()=>t],54879)},96922,e=>{"use strict";let t=(0,e.i(78445).default)("list",[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]);e.s(["List",()=>t],96922)},52724,e=>{"use strict";var t=e.i(30064),s=e.i(59760),a=e.i(33907),l=e.i(22508),i=e.i(4917),r=e.i(54879),n=e.i(59111),o=e.i(46202),d=e.i(50147),c=e.i(78445);let x=(0,c.default)("brain",[["path",{d:"M12 18V5",key:"adv99a"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4",key:"1e3is1"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5",key:"1gqd8o"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77",key:"iwvgf7"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464",key:"efp6ie"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517",key:"1gq6am"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464",key:"k1g0md"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77",key:"q97ue3"}]]),u=(0,c.default)("ruler",[["path",{d:"M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.41 2.41 0 0 1 0-3.4l2.6-2.6a2.41 2.41 0 0 1 3.4 0Z",key:"icamh8"}],["path",{d:"m14.5 12.5 2-2",key:"inckbg"}],["path",{d:"m11.5 9.5 2-2",key:"fmmyf7"}],["path",{d:"m8.5 6.5 2-2",key:"vc6u1g"}],["path",{d:"m17.5 15.5 2-2",key:"wo5hmg"}]]);var p=e.i(46553),m=e.i(98867),h=e.i(96922),b=e.i(71143);let g={age:30,height:175,hair:"Brun",eyes:"Marron",archetype:"Le Héros",role:"support",personality:{spectrumIntrovertExtravert:50,spectrumEmotionalRational:50,spectrumChaoticLawful:50},physicalQuirk:"",behavioralQuirk:""},f=({entities:e,onCreate:c,onUpdate:f,onDelete:v,templates:j,onUpdateTemplates:y,initialSelectedId:N})=>{let C,[k,w]=(0,s.useState)(null),[T,E]=(0,s.useState)(null),[A,M]=(0,s.useState)("entities"),[R,S]=(0,s.useState)(a.EntityType.CHARACTER);(0,s.useEffect)(()=>{if(N){let t=e.find(e=>e.id===N);t&&(I(t),M("entities"))}},[N,e]);let z=(0,s.useMemo)(()=>{let t=e.filter(e=>e.type===a.EntityType.CHARACTER&&e.attributes?.archetype).map(e=>e.attributes.archetype);return Array.from(new Set([...b.ARCHETYPES,...t])).sort()},[e]),I=e=>{let t={...e};e.type!==a.EntityType.CHARACTER||e.attributes||(t.attributes={...g}),e.customValues||(t.customValues={}),E(t),w(e.id)},L=async()=>{if(T&&T.name){if("NEW"===k){let{id:e,...t}=T;await c(t)}else f(T.id,T);w(null),E(null)}},O=(e,t)=>{T&&T.attributes&&E({...T,attributes:{...T.attributes,[e]:t}})},H=(e,t)=>{T&&T.attributes&&E({...T,attributes:{...T.attributes,personality:{...T.attributes.personality,[e]:t}}})},P=(e,t)=>{T&&E({...T,customValues:{...T.customValues,[e]:t}})},V=(e,t,s)=>{y(j.map(a=>a.entityType!==e?a:{...a,fields:a.fields.map(e=>e.id===t?{...e,...s}:e)}))},q=t=>e.filter(e=>e.type===t);if("templates"===A){let e;return(0,t.jsxs)("div",{className:"flex h-full gap-6 p-6 bg-[#eef2ff]",children:[(0,t.jsx)("div",{className:"w-1/3 opacity-50 pointer-events-none filter blur-[1px]",children:(0,t.jsxs)("div",{className:"bg-white rounded-lg p-6 shadow-sm border border-slate-200",children:[(0,t.jsx)("h3",{className:"font-bold text-slate-700 mb-4",children:"Aperçu Fiches"}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("div",{className:"h-10 bg-indigo-50 rounded"}),(0,t.jsx)("div",{className:"h-10 bg-indigo-50 rounded"}),(0,t.jsx)("div",{className:"h-10 bg-indigo-50 rounded"})]})]})}),(e=j.find(e=>e.entityType===R)||{entityType:R,fields:[]},(0,t.jsxs)("div",{className:"flex-1 bg-white rounded-xl shadow-lg border border-slate-200 p-8 overflow-y-auto",children:[(0,t.jsxs)("div",{className:"flex justify-between items-start mb-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("h2",{className:"text-2xl font-bold text-slate-800 flex items-center gap-2",children:[(0,t.jsx)(m.Layout,{size:24,className:"text-indigo-600"})," Éditeur de Modèles"]}),(0,t.jsx)("p",{className:"text-slate-500 text-sm mt-1",children:"Configurez les champs personnalisés pour chaque type de fiche."})]}),(0,t.jsx)("button",{onClick:()=>M("entities"),className:"p-2 text-slate-500 hover:bg-slate-100 rounded-full",children:(0,t.jsx)(n.X,{size:20})})]}),(0,t.jsx)("div",{className:"flex gap-2 mb-8 border-b border-slate-200 pb-1",children:Object.values(a.EntityType).map(e=>(0,t.jsx)("button",{onClick:()=>S(e),className:`px-4 py-2 text-sm font-medium rounded-t-lg transition-colors ${R===e?"bg-indigo-50 text-indigo-700 border-b-2 border-indigo-600":"text-slate-500 hover:text-slate-800 hover:bg-slate-50"}`,children:e},e))}),(0,t.jsxs)("div",{className:"space-y-4",children:[e.fields.map((e,s)=>(0,t.jsxs)("div",{className:"bg-[#eef2ff] border border-indigo-100 rounded-lg p-4 flex gap-4 items-start group",children:[(0,t.jsxs)("div",{className:"flex-1 grid grid-cols-2 gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Nom du champ"}),(0,t.jsx)("input",{type:"text",value:e.label,onChange:t=>V(R,e.id,{label:t.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Type"}),(0,t.jsxs)("select",{value:e.type,onChange:t=>V(R,e.id,{type:t.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",children:[(0,t.jsx)("option",{value:"text",children:"Texte court"}),(0,t.jsx)("option",{value:"textarea",children:"Texte long"}),(0,t.jsx)("option",{value:"number",children:"Nombre"}),(0,t.jsx)("option",{value:"boolean",children:"Case à cocher"}),(0,t.jsx)("option",{value:"select",children:"Liste déroulante"})]})]}),"select"===e.type&&(0,t.jsxs)("div",{className:"col-span-2",children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Options (séparées par des virgules)"}),(0,t.jsx)("input",{type:"text",value:e.options?.join(",")||"",onChange:t=>V(R,e.id,{options:t.target.value.split(",").map(e=>e.trim())}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",placeholder:"Option A, Option B, Option C"})]})]}),(0,t.jsx)("button",{onClick:()=>{var t;return t=e.id,void y(j.map(e=>e.entityType!==R?e:{...e,fields:e.fields.filter(e=>e.id!==t)}))},className:"p-2 text-slate-400 hover:text-red-600 hover:bg-red-50 rounded mt-5",children:(0,t.jsx)(i.Trash2,{size:16})})]},e.id)),(0,t.jsxs)("button",{onClick:()=>{let e,t;return e={id:`field-${Date.now()}`,label:"Nouveau Champ",type:"text",placeholder:""},void(!(t=j.map(t=>t.entityType===R?{...t,fields:[...t.fields,e]}:t)).some(e=>e.entityType===R)&&t.push({entityType:R,fields:[e]}),y(t))},className:"w-full py-3 border-2 border-dashed border-slate-300 rounded-lg text-slate-500 hover:border-indigo-400 hover:text-indigo-600 hover:bg-indigo-50 transition-all flex items-center justify-center gap-2",children:[(0,t.jsx)(l.Plus,{size:20})," Ajouter un champ"]})]})]}))]})}return(0,t.jsxs)("div",{className:"flex h-full gap-6 p-6 bg-[#eef2ff]",children:[(0,t.jsxs)("div",{className:"w-1/3 flex flex-col gap-4",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center px-1",children:[(0,t.jsx)("h2",{className:"text-lg font-bold text-slate-700",children:"Explorateur"}),(0,t.jsxs)("button",{onClick:()=>M("templates"),className:"flex items-center gap-1.5 px-3 py-1.5 bg-indigo-100 text-indigo-700 hover:bg-indigo-200 rounded text-xs font-medium transition-colors",title:"Gérer les modèles de fiches",children:[(0,t.jsx)(p.Settings,{size:14})," Modèles"]})]}),(0,t.jsx)("div",{className:"space-y-6 overflow-y-auto pr-2 pb-4 flex-1",children:Object.values(a.EntityType).map(e=>(0,t.jsxs)("div",{className:"bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden",children:[(0,t.jsxs)("div",{className:"bg-indigo-50 p-3 border-b border-indigo-100 flex justify-between items-center",children:[(0,t.jsxs)("h3",{className:"font-semibold text-slate-700 flex items-center gap-2",children:[(0,t.jsx)("span",{children:b.ENTITY_ICONS[e]})," ",e,"s"]}),(0,t.jsx)("button",{onClick:()=>{E({id:Date.now().toString(),type:e,name:"",description:"",details:"",storyContext:"",attributes:e===a.EntityType.CHARACTER?{...g}:void 0,customValues:{}}),w("NEW")},className:"p-1 hover:bg-indigo-100 rounded text-indigo-600 transition-colors",children:(0,t.jsx)(l.Plus,{size:16})})]}),(0,t.jsxs)("div",{className:"divide-y divide-slate-100",children:[0===q(e).length&&(0,t.jsx)("p",{className:"p-4 text-sm text-slate-400 italic text-center",children:"Aucun élément"}),q(e).map(e=>(0,t.jsxs)("div",{onClick:()=>I(e),className:`p-3 cursor-pointer hover:bg-blue-50 transition-colors flex justify-between group ${k===e.id?"bg-blue-50 border-l-4 border-blue-500":""}`,children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"font-medium text-slate-800",children:e.name}),(0,t.jsx)("div",{className:"text-xs text-slate-500 truncate",children:e.description})]}),(0,t.jsx)("button",{onClick:t=>{var s;t.stopPropagation(),s=e.id,confirm("Supprimer cet élément ?")&&(v(s),k===s&&(w(null),E(null)))},className:"opacity-0 group-hover:opacity-100 text-red-400 hover:text-red-600 transition-opacity",children:(0,t.jsx)(i.Trash2,{size:14})})]},e.id))]})]},e))})]}),(0,t.jsx)("div",{className:"flex-1 bg-white rounded-xl shadow-lg border border-slate-200 p-8 overflow-y-auto",children:k&&T?(0,t.jsxs)("div",{className:"space-y-6 animate-in fade-in duration-200",children:[(0,t.jsxs)("div",{className:"flex justify-between items-start",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("span",{className:`inline-block px-2 py-1 rounded text-xs font-bold uppercase tracking-wider ${b.ENTITY_COLORS[T.type]}`,children:T.type}),(0,t.jsx)("h2",{className:"text-2xl font-bold text-slate-800",children:T.type===a.EntityType.CHARACTER?"Fiche Personnage":"Édition de la fiche"})]}),(0,t.jsx)("div",{className:"flex gap-2",children:(0,t.jsx)("button",{onClick:()=>w(null),className:"p-2 text-slate-500 hover:bg-slate-100 rounded-full",children:(0,t.jsx)(n.X,{size:20})})})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-slate-700 mb-1",children:"Nom"}),(0,t.jsx)("input",{type:"text",value:T.name,onChange:e=>E({...T,name:e.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none font-serif text-lg",placeholder:"Ex: Gandalf le Gris"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-slate-700 mb-1",children:"Description Courte (pour l'IA)"}),(0,t.jsx)("textarea",{value:T.description,onChange:e=>E({...T,description:e.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-20",placeholder:"Un magicien puissant qui guide la communauté..."})]}),T.type===a.EntityType.CHARACTER&&(()=>{if(!T?.attributes)return null;let e=T.attributes;return(0,t.jsxs)("div",{className:"space-y-8 border-t border-slate-100 pt-6 mt-4",children:[(0,t.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100",children:[(0,t.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,t.jsx)(d.User,{size:16})," Identité Narrative"]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-2",children:"Archétype"}),(0,t.jsx)("input",{type:"text",list:"archetype-suggestions",value:e.archetype,onChange:e=>O("archetype",e.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-blue-500",placeholder:"Ex: Le Héros, Le Sage..."}),(0,t.jsx)("datalist",{id:"archetype-suggestions",children:z.map(e=>(0,t.jsx)("option",{value:e},e))})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-2",children:"Rôle dans l'histoire"}),(0,t.jsx)("div",{className:"flex gap-2 flex-wrap",children:[{val:"protagonist",label:"Protagoniste"},{val:"antagonist",label:"Antagoniste"},{val:"support",label:"Secondaire"},{val:"extra",label:"Figurant"}].map(s=>(0,t.jsxs)("label",{className:`cursor-pointer px-3 py-1.5 rounded text-xs border transition-colors ${e.role===s.val?"bg-indigo-100 border-indigo-300 text-indigo-700 font-bold":"bg-[#eef2ff] border-slate-200 text-slate-600 hover:bg-slate-100"}`,children:[(0,t.jsx)("input",{type:"radio",name:"role",value:s.val,checked:e.role===s.val,onChange:()=>O("role",s.val),className:"hidden"}),s.label]},s.val))})]})]})]}),(0,t.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100",children:[(0,t.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,t.jsx)(u,{size:16})," Apparence Physique"]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"flex justify-between text-xs mb-1",children:(0,t.jsx)("label",{className:"font-semibold text-slate-600",children:"Âge (ans)"})}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("input",{type:"range",min:"1",max:"100",value:Math.min(e.age,100),onChange:e=>O("age",parseInt(e.target.value)),className:"flex-1 h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"}),(0,t.jsx)("input",{type:"number",value:e.age,onChange:e=>O("age",parseInt(e.target.value)),className:"w-20 p-1 text-right text-sm border border-slate-300 rounded font-mono text-indigo-700 bg-[#eef2ff] focus:border-indigo-500 outline-none"})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"flex justify-between text-xs mb-1",children:(0,t.jsx)("label",{className:"font-semibold text-slate-600",children:"Taille (cm)"})}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("input",{type:"range",min:"50",max:"250",value:Math.min(e.height,250),onChange:e=>O("height",parseInt(e.target.value)),className:"flex-1 h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"}),(0,t.jsx)("input",{type:"number",value:e.height,onChange:e=>O("height",parseInt(e.target.value)),className:"w-20 p-1 text-right text-sm border border-slate-300 rounded font-mono text-indigo-700 bg-[#eef2ff] focus:border-indigo-500 outline-none"})]})]})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Cheveux"}),(0,t.jsx)("select",{value:e.hair,onChange:e=>O("hair",e.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",children:b.HAIR_COLORS.map(e=>(0,t.jsx)("option",{value:e,children:e},e))})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Yeux"}),(0,t.jsx)("select",{value:e.eyes,onChange:e=>O("eyes",e.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm",children:b.EYE_COLORS.map(e=>(0,t.jsx)("option",{value:e,children:e},e))})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Signe distinctif"}),(0,t.jsx)("input",{type:"text",value:e.physicalQuirk,onChange:e=>O("physicalQuirk",e.target.value),placeholder:"Cicatrice, tatouage...",className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400"})]})]})]})]}),(0,t.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100",children:[(0,t.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,t.jsx)(x,{size:16})," Psychologie & Comportement"]}),(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{className:"space-y-4 px-2",children:[(0,t.jsxs)("div",{className:"relative pt-1",children:[(0,t.jsxs)("div",{className:"flex justify-between text-[10px] uppercase font-bold text-slate-500 mb-1",children:[(0,t.jsx)("span",{children:"Introverti"}),(0,t.jsx)("span",{children:"Extraverti"})]}),(0,t.jsx)("input",{type:"range",min:"0",max:"100",value:e.personality.spectrumIntrovertExtravert,onChange:e=>H("spectrumIntrovertExtravert",parseInt(e.target.value)),className:"w-full h-2 bg-gradient-to-r from-slate-300 via-indigo-200 to-slate-300 rounded-lg appearance-none cursor-pointer accent-indigo-600"})]}),(0,t.jsxs)("div",{className:"relative pt-1",children:[(0,t.jsxs)("div",{className:"flex justify-between text-[10px] uppercase font-bold text-slate-500 mb-1",children:[(0,t.jsx)("span",{children:"Émotionnel"}),(0,t.jsx)("span",{children:"Rationnel"})]}),(0,t.jsx)("input",{type:"range",min:"0",max:"100",value:e.personality.spectrumEmotionalRational,onChange:e=>H("spectrumEmotionalRational",parseInt(e.target.value)),className:"w-full h-2 bg-gradient-to-r from-red-200 via-purple-200 to-blue-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"})]}),(0,t.jsxs)("div",{className:"relative pt-1",children:[(0,t.jsxs)("div",{className:"flex justify-between text-[10px] uppercase font-bold text-slate-500 mb-1",children:[(0,t.jsx)("span",{children:"Chaotique"}),(0,t.jsx)("span",{children:"Loyal"})]}),(0,t.jsx)("input",{type:"range",min:"0",max:"100",value:e.personality.spectrumChaoticLawful,onChange:e=>H("spectrumChaoticLawful",parseInt(e.target.value)),className:"w-full h-2 bg-gradient-to-r from-orange-200 via-yellow-100 to-green-200 rounded-lg appearance-none cursor-pointer accent-indigo-600"})]})]}),(0,t.jsxs)("div",{className:"border-t border-slate-200 pt-4",children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:"Toc ou habitude comportementale"}),(0,t.jsx)("input",{type:"text",value:e.behavioralQuirk,onChange:e=>O("behavioralQuirk",e.target.value),placeholder:"Joue avec sa bague, bégaie quand il ment...",className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400"})]})]})]})]})})(),(C=j.find(e=>e.entityType===T?.type))&&0!==C.fields.length?(0,t.jsxs)("div",{className:"bg-[#eef2ff] p-4 rounded-lg border border-indigo-100 mt-6",children:[(0,t.jsxs)("h3",{className:"text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2",children:[(0,t.jsx)(h.List,{size:16})," Champs Personnalisés"]}),(0,t.jsx)("div",{className:"grid grid-cols-1 gap-4",children:C.fields.map(e=>{let s=T?.customValues?.[e.id]??"";return(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-500 mb-1",children:e.label}),"textarea"===e.type?(0,t.jsx)("textarea",{value:s,onChange:t=>P(e.id,t.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400",placeholder:e.placeholder}):"select"===e.type?(0,t.jsxs)("select",{value:s,onChange:t=>P(e.id,t.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400",children:[(0,t.jsx)("option",{value:"",children:"Sélectionner..."}),e.options?.map(e=>(0,t.jsx)("option",{value:e,children:e},e))]}):"boolean"===e.type?(0,t.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",checked:!!s,onChange:t=>P(e.id,t.target.checked),className:"w-4 h-4 text-indigo-600 rounded border-slate-300 focus:ring-indigo-500"}),(0,t.jsx)("span",{className:"text-sm text-slate-700",children:"Activé / Oui"})]}):(0,t.jsx)("input",{type:"number"===e.type?"number":"text",value:s,onChange:t=>P(e.id,t.target.value),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400",placeholder:e.placeholder})]},e.id)})})]}):null,(0,t.jsxs)("div",{className:"mt-6 border-t border-slate-100 pt-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{className:"block text-sm font-medium text-indigo-700 mb-1 flex items-center gap-2",children:[(0,t.jsx)(o.Sparkles,{size:14})," Contexte Narratif (Auto-généré)"]}),(0,t.jsx)("textarea",{value:T.storyContext||"",onChange:e=>E({...T,storyContext:e.target.value}),className:"w-full p-2 border border-indigo-200 bg-indigo-50 rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-24 italic text-slate-600",placeholder:"Les événements vécus par ce personnage apparaîtront ici..."})]}),(0,t.jsxs)("div",{className:"mt-4",children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-slate-700 mb-1",children:"Notes & Biographie Complète"}),(0,t.jsx)("textarea",{value:T.details,onChange:e=>E({...T,details:e.target.value}),className:"w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none h-48 font-serif",placeholder:"Histoire détaillée, secrets, origines..."})]})]}),(0,t.jsx)("div",{className:"pt-4 flex justify-end",children:(0,t.jsxs)("button",{onClick:L,className:"bg-blue-600 hover:bg-blue-700 text-white px-6 py-2 rounded-lg flex items-center gap-2 transition-colors shadow-md",children:[(0,t.jsx)(r.Save,{size:18}),"Enregistrer la fiche"]})})]})]}):(0,t.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-slate-400",children:[(0,t.jsx)("div",{className:"text-6xl mb-4 opacity-20",children:"🌍"}),(0,t.jsx)("p",{className:"text-lg",children:"Sélectionnez ou créez une fiche pour commencer."}),(0,t.jsx)("p",{className:"text-sm",children:"Ces informations aideront l'IA à rester cohérente."})]})})]})};var v=e.i(24224),j=e.i(8011),y=e.i(18404);function N(){let{project:e,projectId:s,updateProject:a}=(0,v.useProjectContext)(),{user:l}=(0,y.useAuthContext)(),{createEntity:i,updateEntity:r,deleteEntity:n}=(0,j.useProjects)(l);return(0,t.jsx)(f,{entities:e.entities||[],onCreate:async e=>await i(s,e.type,e),onUpdate:(e,t)=>r(s,e,t),onDelete:e=>n(s,e),templates:e.templates||[],onUpdateTemplates:e=>a({templates:e}),initialSelectedId:null})}e.s(["default",()=>N],52724)}]); \ No newline at end of file diff --git a/.next/trace b/.next/trace index 676eb39..ff74e88 100644 --- a/.next/trace +++ b/.next/trace @@ -1 +1 @@ -[{"name":"generate-buildid","duration":164,"timestamp":392515958478,"id":4,"parentId":1,"tags":{},"startTime":1772139060991,"traceId":"ffa2c70e35cab175"},{"name":"load-custom-routes","duration":189,"timestamp":392515958700,"id":5,"parentId":1,"tags":{},"startTime":1772139060991,"traceId":"ffa2c70e35cab175"},{"name":"create-dist-dir","duration":335,"timestamp":392515958903,"id":6,"parentId":1,"tags":{},"startTime":1772139060991,"traceId":"ffa2c70e35cab175"},{"name":"clean","duration":37289,"timestamp":392515959754,"id":7,"parentId":1,"tags":{},"startTime":1772139060992,"traceId":"ffa2c70e35cab175"},{"name":"create-pages-mapping","duration":144,"timestamp":392516009877,"id":8,"parentId":1,"tags":{},"startTime":1772139061042,"traceId":"ffa2c70e35cab175"},{"name":"collect-app-files","duration":1357,"timestamp":392516010046,"id":9,"parentId":1,"tags":{},"startTime":1772139061042,"traceId":"ffa2c70e35cab175"},{"name":"create-app-mapping","duration":1141,"timestamp":392516011423,"id":10,"parentId":1,"tags":{},"startTime":1772139061044,"traceId":"ffa2c70e35cab175"},{"name":"create-app-layouts","duration":305,"timestamp":392516012584,"id":11,"parentId":1,"tags":{},"startTime":1772139061045,"traceId":"ffa2c70e35cab175"},{"name":"collect-default-files","duration":644,"timestamp":392516014489,"id":13,"parentId":1,"tags":{},"startTime":1772139061047,"traceId":"ffa2c70e35cab175"},{"name":"generate-route-types","duration":11070,"timestamp":392516013931,"id":12,"parentId":1,"tags":{},"startTime":1772139061046,"traceId":"ffa2c70e35cab175"},{"name":"public-dir-conflict-check","duration":60,"timestamp":392516025063,"id":14,"parentId":1,"tags":{},"startTime":1772139061057,"traceId":"ffa2c70e35cab175"},{"name":"generate-routes-manifest","duration":1498,"timestamp":392516025168,"id":15,"parentId":1,"tags":{},"startTime":1772139061058,"traceId":"ffa2c70e35cab175"},{"name":"run-turbopack","duration":1673358,"timestamp":392516029992,"id":17,"parentId":1,"tags":{},"startTime":1772139061062,"traceId":"ffa2c70e35cab175"},{"name":"run-typescript","duration":65699,"timestamp":392517712386,"id":19,"parentId":1,"tags":{},"startTime":1772139062745,"traceId":"ffa2c70e35cab175"},{"name":"generate-required-server-files","duration":393,"timestamp":392517778158,"id":21,"parentId":1,"tags":{},"startTime":1772139062811,"traceId":"ffa2c70e35cab175"},{"name":"check-static-error-page","duration":3125,"timestamp":392517891928,"id":23,"parentId":22,"tags":{},"startTime":1772139062924,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":387663,"timestamp":392517897312,"id":51,"parentId":25,"tags":{},"startTime":1772139062930,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":391831,"timestamp":392517893289,"id":25,"parentId":22,"tags":{"page":"/_global-error"},"startTime":1772139062926,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":464741,"timestamp":392517898837,"id":52,"parentId":24,"tags":{},"startTime":1772139062931,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":470932,"timestamp":392517892687,"id":24,"parentId":22,"tags":{"page":"/_not-found"},"startTime":1772139062925,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":484157,"timestamp":392517906632,"id":65,"parentId":38,"tags":{},"startTime":1772139062939,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":496945,"timestamp":392517893884,"id":38,"parentId":22,"tags":{"page":"/checkout"},"startTime":1772139062926,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":485104,"timestamp":392517906753,"id":67,"parentId":39,"tags":{},"startTime":1772139062939,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":497556,"timestamp":392517894331,"id":39,"parentId":22,"tags":{"page":"/dashboard"},"startTime":1772139062927,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":489480,"timestamp":392517902737,"id":54,"parentId":28,"tags":{},"startTime":1772139062935,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":498782,"timestamp":392517893466,"id":28,"parentId":22,"tags":{"page":"/api/auth/[...nextauth]"},"startTime":1772139062926,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":489481,"timestamp":392517906859,"id":70,"parentId":42,"tags":{},"startTime":1772139062939,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":501843,"timestamp":392517894531,"id":42,"parentId":22,"tags":{"page":"/"},"startTime":1772139062927,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":498139,"timestamp":392517907688,"id":75,"parentId":49,"tags":{},"startTime":1772139062940,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":510972,"timestamp":392517894894,"id":49,"parentId":22,"tags":{"page":"/project/[id]/world"},"startTime":1772139062927,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":505881,"timestamp":392517906917,"id":72,"parentId":50,"tags":{},"startTime":1772139062939,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":517835,"timestamp":392517895000,"id":50,"parentId":22,"tags":{"page":"/signup"},"startTime":1772139062927,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":509066,"timestamp":392517907791,"id":77,"parentId":46,"tags":{},"startTime":1772139062940,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":522156,"timestamp":392517894738,"id":46,"parentId":22,"tags":{"page":"/project/[id]"},"startTime":1772139062927,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":510181,"timestamp":392517906793,"id":68,"parentId":41,"tags":{},"startTime":1772139062939,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":522509,"timestamp":392517894477,"id":41,"parentId":22,"tags":{"page":"/login"},"startTime":1772139062927,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":510687,"timestamp":392517906819,"id":69,"parentId":43,"tags":{},"startTime":1772139062939,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":522951,"timestamp":392517894581,"id":43,"parentId":22,"tags":{"page":"/pricing"},"startTime":1772139062927,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":511213,"timestamp":392517907742,"id":76,"parentId":48,"tags":{},"startTime":1772139062940,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":524141,"timestamp":392517894840,"id":48,"parentId":22,"tags":{"page":"/project/[id]/workflow"},"startTime":1772139062927,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":514169,"timestamp":392517907527,"id":73,"parentId":45,"tags":{},"startTime":1772139062940,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":527045,"timestamp":392517894685,"id":45,"parentId":22,"tags":{"page":"/project/[id]/ideas"},"startTime":1772139062927,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":514153,"timestamp":392517907627,"id":74,"parentId":47,"tags":{},"startTime":1772139062940,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":526997,"timestamp":392517894789,"id":47,"parentId":22,"tags":{"page":"/project/[id]/settings"},"startTime":1772139062927,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":520188,"timestamp":392517902949,"id":55,"parentId":26,"tags":{},"startTime":1772139062935,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":529791,"timestamp":392517893385,"id":26,"parentId":22,"tags":{"page":"/api/ai/generate"},"startTime":1772139062926,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":519545,"timestamp":392517906884,"id":71,"parentId":44,"tags":{},"startTime":1772139062939,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":531830,"timestamp":392517894634,"id":44,"parentId":22,"tags":{"page":"/profile"},"startTime":1772139062927,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":519893,"timestamp":392517906707,"id":66,"parentId":40,"tags":{},"startTime":1772139062939,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":532210,"timestamp":392517894409,"id":40,"parentId":22,"tags":{"page":"/features"},"startTime":1772139062927,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":536265,"timestamp":392517902445,"id":53,"parentId":27,"tags":{},"startTime":1772139062935,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":545312,"timestamp":392517893433,"id":27,"parentId":22,"tags":{"page":"/api/ai/transform"},"startTime":1772139062926,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":551927,"timestamp":392517903543,"id":57,"parentId":29,"tags":{},"startTime":1772139062936,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":562000,"timestamp":392517893495,"id":29,"parentId":22,"tags":{"page":"/api/auth/register"},"startTime":1772139062926,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":558275,"timestamp":392517904615,"id":62,"parentId":32,"tags":{},"startTime":1772139062937,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":569344,"timestamp":392517893574,"id":32,"parentId":22,"tags":{"page":"/api/entities/[id]"},"startTime":1772139062926,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":561735,"timestamp":392517904791,"id":63,"parentId":37,"tags":{},"startTime":1772139062937,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":572827,"timestamp":392517893728,"id":37,"parentId":22,"tags":{"page":"/api/projects"},"startTime":1772139062926,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":564077,"timestamp":392517904326,"id":61,"parentId":34,"tags":{},"startTime":1772139062937,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":574776,"timestamp":392517893641,"id":34,"parentId":22,"tags":{"page":"/api/ideas/[id]"},"startTime":1772139062926,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":567225,"timestamp":392517903271,"id":56,"parentId":30,"tags":{},"startTime":1772139062936,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":576998,"timestamp":392517893522,"id":30,"parentId":22,"tags":{"page":"/api/chapters/[id]"},"startTime":1772139062926,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":567299,"timestamp":392517903729,"id":58,"parentId":33,"tags":{},"startTime":1772139062936,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":577433,"timestamp":392517893607,"id":33,"parentId":22,"tags":{"page":"/api/entities"},"startTime":1772139062926,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":567784,"timestamp":392517905097,"id":64,"parentId":36,"tags":{},"startTime":1772139062937,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":579190,"timestamp":392517893703,"id":36,"parentId":22,"tags":{"page":"/api/projects/[id]"},"startTime":1772139062926,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":575362,"timestamp":392517904057,"id":60,"parentId":35,"tags":{},"startTime":1772139062936,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":585770,"timestamp":392517893670,"id":35,"parentId":22,"tags":{"page":"/api/ideas"},"startTime":1772139062926,"traceId":"ffa2c70e35cab175"},{"name":"is-page-static","duration":575770,"timestamp":392517903888,"id":59,"parentId":31,"tags":{},"startTime":1772139062936,"traceId":"ffa2c70e35cab175"},{"name":"check-page","duration":586126,"timestamp":392517893549,"id":31,"parentId":22,"tags":{"page":"/api/chapters"},"startTime":1772139062926,"traceId":"ffa2c70e35cab175"},{"name":"static-check","duration":588053,"timestamp":392517891640,"id":22,"parentId":1,"tags":{},"startTime":1772139062924,"traceId":"ffa2c70e35cab175"},{"name":"write-routes-manifest","duration":429,"timestamp":392518480217,"id":79,"parentId":1,"tags":{},"startTime":1772139063513,"traceId":"ffa2c70e35cab175"},{"name":"load-dotenv","duration":16,"timestamp":392518487289,"id":82,"parentId":81,"tags":{},"startTime":1772139063520,"traceId":"ffa2c70e35cab175"},{"name":"run-export-path-map","duration":215,"timestamp":392518489806,"id":83,"parentId":81,"tags":{},"startTime":1772139063522,"traceId":"ffa2c70e35cab175"},{"name":"next-export","duration":378326,"timestamp":392518486705,"id":81,"parentId":1,"tags":{},"startTime":1772139063519,"traceId":"ffa2c70e35cab175"},{"name":"move-exported-app-not-found-","duration":1095,"timestamp":392518866203,"id":84,"parentId":80,"tags":{},"startTime":1772139063899,"traceId":"ffa2c70e35cab175"},{"name":"move-exported-app-global-error-","duration":2279,"timestamp":392518867355,"id":85,"parentId":80,"tags":{},"startTime":1772139063900,"traceId":"ffa2c70e35cab175"},{"name":"static-generation","duration":389145,"timestamp":392518482739,"id":80,"parentId":1,"tags":{},"startTime":1772139063515,"traceId":"ffa2c70e35cab175"},{"name":"write-routes-manifest","duration":423,"timestamp":392518872045,"id":86,"parentId":1,"tags":{},"startTime":1772139063904,"traceId":"ffa2c70e35cab175"},{"name":"print-tree-view","duration":1900,"timestamp":392518879463,"id":87,"parentId":1,"tags":{},"startTime":1772139063912,"traceId":"ffa2c70e35cab175"},{"name":"telemetry-flush","duration":177849,"timestamp":392518881372,"id":88,"parentId":1,"tags":{},"startTime":1772139063914,"traceId":"ffa2c70e35cab175"},{"name":"next-build","duration":3247049,"timestamp":392515812184,"id":1,"tags":{"buildMode":"default","version":"16.1.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1772139060845,"traceId":"ffa2c70e35cab175"}] +[{"name":"generate-buildid","duration":122,"timestamp":392972887678,"id":4,"parentId":1,"tags":{},"startTime":1772139517920,"traceId":"2d66356e61ef2cf9"},{"name":"load-custom-routes","duration":192,"timestamp":392972887853,"id":5,"parentId":1,"tags":{},"startTime":1772139517920,"traceId":"2d66356e61ef2cf9"},{"name":"create-dist-dir","duration":228,"timestamp":392972888060,"id":6,"parentId":1,"tags":{},"startTime":1772139517920,"traceId":"2d66356e61ef2cf9"},{"name":"clean","duration":68178,"timestamp":392972888775,"id":7,"parentId":1,"tags":{},"startTime":1772139517921,"traceId":"2d66356e61ef2cf9"},{"name":"create-pages-mapping","duration":139,"timestamp":392972970927,"id":8,"parentId":1,"tags":{},"startTime":1772139518003,"traceId":"2d66356e61ef2cf9"},{"name":"collect-app-files","duration":1380,"timestamp":392972971090,"id":9,"parentId":1,"tags":{},"startTime":1772139518003,"traceId":"2d66356e61ef2cf9"},{"name":"create-app-mapping","duration":1221,"timestamp":392972972489,"id":10,"parentId":1,"tags":{},"startTime":1772139518005,"traceId":"2d66356e61ef2cf9"},{"name":"create-app-layouts","duration":91,"timestamp":392972973733,"id":11,"parentId":1,"tags":{},"startTime":1772139518006,"traceId":"2d66356e61ef2cf9"},{"name":"collect-default-files","duration":714,"timestamp":392972975506,"id":13,"parentId":1,"tags":{},"startTime":1772139518008,"traceId":"2d66356e61ef2cf9"},{"name":"generate-route-types","duration":10975,"timestamp":392972974966,"id":12,"parentId":1,"tags":{},"startTime":1772139518007,"traceId":"2d66356e61ef2cf9"},{"name":"public-dir-conflict-check","duration":86,"timestamp":392972986006,"id":14,"parentId":1,"tags":{},"startTime":1772139518018,"traceId":"2d66356e61ef2cf9"},{"name":"generate-routes-manifest","duration":1535,"timestamp":392972986149,"id":15,"parentId":1,"tags":{},"startTime":1772139518018,"traceId":"2d66356e61ef2cf9"},{"name":"run-turbopack","duration":1681705,"timestamp":392972992199,"id":17,"parentId":1,"tags":{},"startTime":1772139518024,"traceId":"2d66356e61ef2cf9"},{"name":"run-typescript","duration":67318,"timestamp":392974682630,"id":19,"parentId":1,"tags":{},"startTime":1772139519715,"traceId":"2d66356e61ef2cf9"},{"name":"generate-required-server-files","duration":381,"timestamp":392974750020,"id":21,"parentId":1,"tags":{},"startTime":1772139519782,"traceId":"2d66356e61ef2cf9"},{"name":"check-static-error-page","duration":3601,"timestamp":392974875372,"id":23,"parentId":22,"tags":{},"startTime":1772139519908,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":471084,"timestamp":392974881941,"id":52,"parentId":25,"tags":{},"startTime":1772139519914,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":475544,"timestamp":392974877655,"id":25,"parentId":22,"tags":{"page":"/_global-error"},"startTime":1772139519910,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":556119,"timestamp":392974888737,"id":55,"parentId":27,"tags":{},"startTime":1772139519921,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":567097,"timestamp":392974877802,"id":27,"parentId":22,"tags":{"page":"/api/ai/transform"},"startTime":1772139519910,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":555302,"timestamp":392974892629,"id":65,"parentId":38,"tags":{},"startTime":1772139519925,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":569800,"timestamp":392974878167,"id":38,"parentId":22,"tags":{"page":"/checkout"},"startTime":1772139519910,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":577662,"timestamp":392974881348,"id":51,"parentId":24,"tags":{},"startTime":1772139519914,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":582139,"timestamp":392974876914,"id":24,"parentId":22,"tags":{"page":"/_not-found"},"startTime":1772139519909,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":569241,"timestamp":392974892779,"id":69,"parentId":41,"tags":{},"startTime":1772139519925,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":583673,"timestamp":392974878386,"id":41,"parentId":22,"tags":{"page":"/login"},"startTime":1772139519911,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":578648,"timestamp":392974892693,"id":66,"parentId":39,"tags":{},"startTime":1772139519925,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":593061,"timestamp":392974878327,"id":39,"parentId":22,"tags":{"page":"/dashboard"},"startTime":1772139519911,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":579295,"timestamp":392974893691,"id":75,"parentId":48,"tags":{},"startTime":1772139519926,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":594132,"timestamp":392974878893,"id":48,"parentId":22,"tags":{"page":"/project/[id]/workflow"},"startTime":1772139519911,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":583235,"timestamp":392974892762,"id":68,"parentId":42,"tags":{},"startTime":1772139519925,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":597574,"timestamp":392974878462,"id":42,"parentId":22,"tags":{"page":"/"},"startTime":1772139519911,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":585627,"timestamp":392974893443,"id":73,"parentId":47,"tags":{},"startTime":1772139519926,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":600240,"timestamp":392974878865,"id":47,"parentId":22,"tags":{"page":"/project/[id]/settings"},"startTime":1772139519911,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":586021,"timestamp":392974893592,"id":74,"parentId":45,"tags":{},"startTime":1772139519926,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":600873,"timestamp":392974878776,"id":45,"parentId":22,"tags":{"page":"/project/[id]/ideas"},"startTime":1772139519911,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":588491,"timestamp":392974892796,"id":70,"parentId":44,"tags":{},"startTime":1772139519925,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":602873,"timestamp":392974878510,"id":44,"parentId":22,"tags":{"page":"/profile"},"startTime":1772139519911,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":598890,"timestamp":392974892737,"id":67,"parentId":40,"tags":{},"startTime":1772139519925,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":613303,"timestamp":392974878361,"id":40,"parentId":22,"tags":{"page":"/features"},"startTime":1772139519911,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":604135,"timestamp":392974888486,"id":54,"parentId":26,"tags":{},"startTime":1772139519921,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":614892,"timestamp":392974877757,"id":26,"parentId":22,"tags":{"page":"/api/ai/generate"},"startTime":1772139519910,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":600847,"timestamp":392974892811,"id":71,"parentId":50,"tags":{},"startTime":1772139519925,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":614743,"timestamp":392974878943,"id":50,"parentId":22,"tags":{"page":"/signup"},"startTime":1772139519911,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":601779,"timestamp":392974892828,"id":72,"parentId":43,"tags":{},"startTime":1772139519925,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":616143,"timestamp":392974878488,"id":43,"parentId":22,"tags":{"page":"/pricing"},"startTime":1772139519911,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":603391,"timestamp":392974893780,"id":76,"parentId":46,"tags":{},"startTime":1772139519926,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":618367,"timestamp":392974878836,"id":46,"parentId":22,"tags":{"page":"/project/[id]"},"startTime":1772139519911,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":603370,"timestamp":392974893883,"id":77,"parentId":49,"tags":{},"startTime":1772139519926,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":618347,"timestamp":392974878918,"id":49,"parentId":22,"tags":{"page":"/project/[id]/world"},"startTime":1772139519911,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":615702,"timestamp":392974887866,"id":53,"parentId":28,"tags":{},"startTime":1772139519920,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":625781,"timestamp":392974877835,"id":28,"parentId":22,"tags":{"page":"/api/auth/[...nextauth]"},"startTime":1772139519910,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":625208,"timestamp":392974889879,"id":60,"parentId":33,"tags":{},"startTime":1772139519922,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":637149,"timestamp":392974877979,"id":33,"parentId":22,"tags":{"page":"/api/entities"},"startTime":1772139519910,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":630245,"timestamp":392974888929,"id":56,"parentId":29,"tags":{},"startTime":1772139519921,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":641351,"timestamp":392974877864,"id":29,"parentId":22,"tags":{"page":"/api/auth/register"},"startTime":1772139519910,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":635024,"timestamp":392974889327,"id":57,"parentId":30,"tags":{},"startTime":1772139519922,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":646504,"timestamp":392974877891,"id":30,"parentId":22,"tags":{"page":"/api/chapters/[id]"},"startTime":1772139519910,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":645149,"timestamp":392974890968,"id":63,"parentId":36,"tags":{},"startTime":1772139519923,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":658070,"timestamp":392974878075,"id":36,"parentId":22,"tags":{"page":"/api/projects/[id]"},"startTime":1772139519910,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":656201,"timestamp":392974890525,"id":62,"parentId":34,"tags":{},"startTime":1772139519923,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":668745,"timestamp":392974878018,"id":34,"parentId":22,"tags":{"page":"/api/ideas/[id]"},"startTime":1772139519910,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":657460,"timestamp":392974889693,"id":59,"parentId":35,"tags":{},"startTime":1772139519922,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":669124,"timestamp":392974878048,"id":35,"parentId":22,"tags":{"page":"/api/ideas"},"startTime":1772139519910,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":660614,"timestamp":392974891254,"id":64,"parentId":37,"tags":{},"startTime":1772139519924,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":673788,"timestamp":392974878102,"id":37,"parentId":22,"tags":{"page":"/api/projects"},"startTime":1772139519910,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":662589,"timestamp":392974889517,"id":58,"parentId":31,"tags":{},"startTime":1772139519922,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":674201,"timestamp":392974877918,"id":31,"parentId":22,"tags":{"page":"/api/chapters"},"startTime":1772139519910,"traceId":"2d66356e61ef2cf9"},{"name":"is-page-static","duration":663357,"timestamp":392974890245,"id":61,"parentId":32,"tags":{},"startTime":1772139519923,"traceId":"2d66356e61ef2cf9"},{"name":"check-page","duration":675669,"timestamp":392974877945,"id":32,"parentId":22,"tags":{"page":"/api/entities/[id]"},"startTime":1772139519910,"traceId":"2d66356e61ef2cf9"},{"name":"static-check","duration":678555,"timestamp":392974875076,"id":22,"parentId":1,"tags":{},"startTime":1772139519907,"traceId":"2d66356e61ef2cf9"},{"name":"write-routes-manifest","duration":523,"timestamp":392975554417,"id":79,"parentId":1,"tags":{},"startTime":1772139520587,"traceId":"2d66356e61ef2cf9"},{"name":"load-dotenv","duration":15,"timestamp":392975562385,"id":82,"parentId":81,"tags":{},"startTime":1772139520595,"traceId":"2d66356e61ef2cf9"},{"name":"run-export-path-map","duration":379,"timestamp":392975566299,"id":83,"parentId":81,"tags":{},"startTime":1772139520599,"traceId":"2d66356e61ef2cf9"},{"name":"next-export","duration":377934,"timestamp":392975561770,"id":81,"parentId":1,"tags":{},"startTime":1772139520594,"traceId":"2d66356e61ef2cf9"},{"name":"move-exported-app-not-found-","duration":1138,"timestamp":392975940734,"id":84,"parentId":80,"tags":{},"startTime":1772139520973,"traceId":"2d66356e61ef2cf9"},{"name":"move-exported-app-global-error-","duration":788,"timestamp":392975941926,"id":85,"parentId":80,"tags":{},"startTime":1772139520974,"traceId":"2d66356e61ef2cf9"},{"name":"static-generation","duration":386826,"timestamp":392975557504,"id":80,"parentId":1,"tags":{},"startTime":1772139520590,"traceId":"2d66356e61ef2cf9"},{"name":"write-routes-manifest","duration":375,"timestamp":392975944499,"id":86,"parentId":1,"tags":{},"startTime":1772139520977,"traceId":"2d66356e61ef2cf9"},{"name":"print-tree-view","duration":1632,"timestamp":392975951198,"id":87,"parentId":1,"tags":{},"startTime":1772139520983,"traceId":"2d66356e61ef2cf9"},{"name":"telemetry-flush","duration":163173,"timestamp":392975952840,"id":88,"parentId":1,"tags":{},"startTime":1772139520985,"traceId":"2d66356e61ef2cf9"},{"name":"next-build","duration":3374114,"timestamp":392972741914,"id":1,"tags":{"buildMode":"default","version":"16.1.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1772139517774,"traceId":"2d66356e61ef2cf9"}] diff --git a/.next/trace-build b/.next/trace-build index be65791..82cfb22 100644 --- a/.next/trace-build +++ b/.next/trace-build @@ -1 +1 @@ -[{"name":"run-turbopack","duration":1673358,"timestamp":392516029992,"id":17,"parentId":1,"tags":{},"startTime":1772139061062,"traceId":"ffa2c70e35cab175"},{"name":"run-typescript","duration":65699,"timestamp":392517712386,"id":19,"parentId":1,"tags":{},"startTime":1772139062745,"traceId":"ffa2c70e35cab175"},{"name":"static-check","duration":588053,"timestamp":392517891640,"id":22,"parentId":1,"tags":{},"startTime":1772139062924,"traceId":"ffa2c70e35cab175"},{"name":"static-generation","duration":389145,"timestamp":392518482739,"id":80,"parentId":1,"tags":{},"startTime":1772139063515,"traceId":"ffa2c70e35cab175"},{"name":"telemetry-flush","duration":177849,"timestamp":392518881372,"id":88,"parentId":1,"tags":{},"startTime":1772139063914,"traceId":"ffa2c70e35cab175"},{"name":"next-build","duration":3247049,"timestamp":392515812184,"id":1,"tags":{"buildMode":"default","version":"16.1.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1772139060845,"traceId":"ffa2c70e35cab175"}] +[{"name":"run-turbopack","duration":1681705,"timestamp":392972992199,"id":17,"parentId":1,"tags":{},"startTime":1772139518024,"traceId":"2d66356e61ef2cf9"},{"name":"run-typescript","duration":67318,"timestamp":392974682630,"id":19,"parentId":1,"tags":{},"startTime":1772139519715,"traceId":"2d66356e61ef2cf9"},{"name":"static-check","duration":678555,"timestamp":392974875076,"id":22,"parentId":1,"tags":{},"startTime":1772139519907,"traceId":"2d66356e61ef2cf9"},{"name":"static-generation","duration":386826,"timestamp":392975557504,"id":80,"parentId":1,"tags":{},"startTime":1772139520590,"traceId":"2d66356e61ef2cf9"},{"name":"telemetry-flush","duration":163173,"timestamp":392975952840,"id":88,"parentId":1,"tags":{},"startTime":1772139520985,"traceId":"2d66356e61ef2cf9"},{"name":"next-build","duration":3374114,"timestamp":392972741914,"id":1,"tags":{"buildMode":"default","version":"16.1.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1772139517774,"traceId":"2d66356e61ef2cf9"}] diff --git a/next-env.d.ts b/next-env.d.ts index c4b7818..9edff1c 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -import "./.next/dev/types/routes.d.ts"; +import "./.next/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/src/app/api/projects/[id]/workflow/route.ts b/src/app/api/projects/[id]/workflow/route.ts new file mode 100644 index 0000000..61a4e97 --- /dev/null +++ b/src/app/api/projects/[id]/workflow/route.ts @@ -0,0 +1,66 @@ +export const dynamic = 'force-dynamic'; + +import { NextRequest, NextResponse } from 'next/server'; +import { auth } from '@/lib/auth'; +import getDB from '@/lib/prisma'; + +// PUT /api/projects/[id]/workflow — Sync workflow (nodes + connections) +export async function PUT( + request: NextRequest, + { params }: { params: Promise<{ id: string }> } +) { + const session = await auth(); + if (!session?.user?.id) { + return NextResponse.json({ error: 'Non autorisé' }, { status: 401 }); + } + + const { id } = await params; + const prisma = getDB(); + + // Verify ownership + const project = await prisma.project.findFirst({ + where: { id, userId: session.user.id }, + }); + if (!project) { + return NextResponse.json({ error: 'Projet non trouvé' }, { status: 404 }); + } + + const { nodes, connections } = await request.json(); + + // Replace all nodes and connections in a transaction + await prisma.$transaction(async (tx) => { + // Delete existing + await tx.plotConnection.deleteMany({ where: { projectId: id } }); + await tx.plotNode.deleteMany({ where: { projectId: id } }); + + // Create new nodes + if (nodes && nodes.length > 0) { + await tx.plotNode.createMany({ + data: nodes.map((n: any) => ({ + id: n.id, + projectId: id, + x: n.x, + y: n.y, + title: n.title || '', + description: n.description || '', + color: n.color || '#ffffff', + type: n.type || 'story', + })), + }); + } + + // Create new connections + if (connections && connections.length > 0) { + await tx.plotConnection.createMany({ + data: connections.map((c: any) => ({ + id: c.id, + projectId: id, + source: c.source, + target: c.target, + })), + }); + } + }); + + return NextResponse.json({ success: true }); +} diff --git a/src/components/StoryWorkflow.tsx b/src/components/StoryWorkflow.tsx index b143d5d..25123a8 100644 --- a/src/components/StoryWorkflow.tsx +++ b/src/components/StoryWorkflow.tsx @@ -6,33 +6,33 @@ import { WorkflowData, PlotNode, PlotConnection, PlotNodeType, Entity, EntityTyp import { Plus, Trash2, ArrowRight, BookOpen, MessageCircle, Zap, Palette, Save, Link2 } from 'lucide-react'; interface StoryWorkflowProps { - data: WorkflowData; - onUpdate: (data: WorkflowData) => void; - entities: Entity[]; - onNavigateToEntity: (entityId: string) => void; + data: WorkflowData; + onUpdate: (data: WorkflowData) => void; + entities: Entity[]; + onNavigateToEntity: (entityId: string) => void; } const CARD_WIDTH = 260; const CARD_HEIGHT = 220; const INITIAL_COLORS = [ - '#ffffff', // White - '#dbeafe', // Blue - '#dcfce7', // Green - '#fef9c3', // Yellow - '#fee2e2', // Red - '#f3e8ff', // Purple + '#ffffff', // White + '#dbeafe', // Blue + '#dcfce7', // Green + '#fef9c3', // Yellow + '#fee2e2', // Red + '#f3e8ff', // Purple ]; const renderTextWithLinks = (text: string, entities: Entity[], onNavigate: (id: string) => void) => { if (!text) return Description...; - + const parts: (string | React.ReactNode)[] = [text]; - + entities.forEach(entity => { if (!entity.name) return; const regex = new RegExp(`(${entity.name})`, 'gi'); - + for (let i = 0; i < parts.length; i++) { const part = parts[i]; if (typeof part === 'string') { @@ -41,11 +41,11 @@ const renderTextWithLinks = (text: string, entities: Entity[], onNavigate: (id: const newParts = split.map((s, idx) => { if (s.toLowerCase() === entity.name.toLowerCase()) { return ( - { e.stopPropagation(); onNavigate(entity.id); }} - className="text-indigo-600 hover:text-indigo-800 underline decoration-indigo-300 hover:decoration-indigo-600 cursor-pointer font-medium bg-indigo-50 px-0.5 rounded transition-all" - title={`Voir la fiche de ${entity.name}`} + { e.stopPropagation(); onNavigate(entity.id); }} + className="text-indigo-600 hover:text-indigo-800 underline decoration-indigo-300 hover:decoration-indigo-600 cursor-pointer font-medium bg-indigo-50 px-0.5 rounded transition-all" + title={`Voir la fiche de ${entity.name}`} > {s} @@ -64,31 +64,32 @@ const renderTextWithLinks = (text: string, entities: Entity[], onNavigate: (id: }; interface StoryNodeProps { - node: PlotNode; - isSelected: boolean; - isEditing: boolean; - activeColorPickerId: string | null; - entities: Entity[]; - savedColors: string[]; - - onMouseDown: (e: React.MouseEvent, id: string) => void; - onMouseUp: (e: React.MouseEvent, id: string) => void; - onStartConnection: (e: React.MouseEvent, id: string) => void; - onUpdate: (id: string, updates: Partial) => void; - onSetEditing: (id: string | null) => void; - onToggleColorPicker: (id: string) => void; - onSaveColor: (color: string) => void; - onNavigateToEntity: (id: string) => void; - - onInputFocus: (e: React.FocusEvent) => void; - onInputCheckAutocomplete: (e: React.ChangeEvent, id: string, field: 'title'|'description') => void; - onKeyDownInInput: (e: React.KeyboardEvent, id: string) => void; + node: PlotNode; + isSelected: boolean; + isEditing: boolean; + isDragging: boolean; + activeColorPickerId: string | null; + entities: Entity[]; + savedColors: string[]; + + onMouseDown: (e: React.MouseEvent, id: string) => void; + onMouseUp: (e: React.MouseEvent, id: string) => void; + onStartConnection: (e: React.MouseEvent, id: string) => void; + onUpdate: (id: string, updates: Partial) => void; + onSetEditing: (id: string | null) => void; + onToggleColorPicker: (id: string) => void; + onSaveColor: (color: string) => void; + onNavigateToEntity: (id: string) => void; + + onInputFocus: (e: React.FocusEvent) => void; + onInputCheckAutocomplete: (e: React.ChangeEvent, id: string, field: 'title' | 'description') => void; + onKeyDownInInput: (e: React.KeyboardEvent, id: string) => void; } -const StoryNode = React.memo(({ - node, isSelected, isEditing, activeColorPickerId, entities, savedColors, - onMouseDown, onMouseUp, onStartConnection, onUpdate, onSetEditing, - onToggleColorPicker, onSaveColor, onNavigateToEntity, +const StoryNode = React.memo(({ + node, isSelected, isEditing, isDragging, activeColorPickerId, entities, savedColors, + onMouseDown, onMouseUp, onStartConnection, onUpdate, onSetEditing, + onToggleColorPicker, onSaveColor, onNavigateToEntity, onInputFocus, onInputCheckAutocomplete, onKeyDownInInput }: StoryNodeProps) => { @@ -100,18 +101,20 @@ const StoryNode = React.memo(({ return (
onMouseDown(e, node.id)} onMouseUp={(e) => onMouseUp(e, node.id)} + onDoubleClick={(e) => e.stopPropagation()} onMouseLeave={() => setShowTypePicker(false)} >
@@ -127,7 +130,7 @@ const StoryNode = React.memo(({ autoFocus /> ) : ( -
onSetEditing(node.id)} > @@ -135,7 +138,7 @@ const StoryNode = React.memo(({
)} -
- onUpdate(node.id, { color: e.target.value })} + onUpdate(node.id, { color: e.target.value })} />
-
@@ -186,7 +189,7 @@ const StoryNode = React.memo(({ onBlur={() => onSetEditing(null)} /> ) : ( -
onSetEditing(node.id)} > @@ -243,9 +246,10 @@ const StoryNode = React.memo(({ ); }, (prev, next) => { return ( - prev.node === next.node && + prev.node === next.node && prev.isSelected === next.isSelected && prev.isEditing === next.isEditing && + prev.isDragging === next.isDragging && prev.activeColorPickerId === next.activeColorPickerId && prev.entities === next.entities ); @@ -263,420 +267,458 @@ interface SuggestionState { } const StoryWorkflow: React.FC = ({ data, onUpdate, entities, onNavigateToEntity }) => { - const containerRef = useRef(null); - const rafRef = useRef(null); - - const [internalNodes, setInternalNodes] = useState(data.nodes); - const internalNodesRef = useRef(internalNodes); - useEffect(() => { internalNodesRef.current = internalNodes; }, [internalNodes]); + const containerRef = useRef(null); + const rafRef = useRef(null); - useEffect(() => { - setInternalNodes(data.nodes); - }, [data.nodes]); + const [internalNodes, setInternalNodes] = useState(data.nodes); + const internalNodesRef = useRef(internalNodes); + useEffect(() => { internalNodesRef.current = internalNodes; }, [internalNodes]); - useEffect(() => { - return () => { - if (rafRef.current) cancelAnimationFrame(rafRef.current); - }; - }, []); + useEffect(() => { + setInternalNodes(data.nodes); + }, [data.nodes]); - const [activeSuggestion, setActiveSuggestion] = useState(null); - const [selectedNodeIds, setSelectedNodeIds] = useState>(new Set()); - const [savedColors, setSavedColors] = useState(INITIAL_COLORS); - const [activeColorPickerId, setActiveColorPickerId] = useState(null); - const [editingNodeId, setEditingNodeId] = useState(null); - const [history, setHistory] = useState([]); - - const [isDragging, setIsDragging] = useState(false); - const [dragStartPositions, setDragStartPositions] = useState>(new Map()); - const [dragStartMouse, setDragStartMouse] = useState({ x: 0, y: 0 }); + useEffect(() => { + return () => { + if (rafRef.current) cancelAnimationFrame(rafRef.current); + }; + }, []); - const [connectingNodeId, setConnectingNodeId] = useState(null); - const [mousePos, setMousePos] = useState({ x: 0, y: 0 }); + const [activeSuggestion, setActiveSuggestion] = useState(null); + const [selectedNodeIds, setSelectedNodeIds] = useState>(new Set()); + const [savedColors, setSavedColors] = useState(INITIAL_COLORS); + const [activeColorPickerId, setActiveColorPickerId] = useState(null); + const [editingNodeId, setEditingNodeId] = useState(null); + const [history, setHistory] = useState([]); - const [isPanning, setIsPanning] = useState(false); - const [panStart, setPanStart] = useState({ x: 0, y: 0 }); - const [scrollStart, setScrollStart] = useState({ x: 0, y: 0 }); + const [isDragging, setIsDragging] = useState(false); + const [dragStartPositions, setDragStartPositions] = useState>(new Map()); + const [dragStartMouse, setDragStartMouse] = useState({ x: 0, y: 0 }); - const pushHistory = useCallback(() => { - setHistory(prev => { - const newHistory = [...prev, data]; - if (newHistory.length > 20) return newHistory.slice(newHistory.length - 20); - return newHistory; - }); - }, [data]); + const [connectingNodeId, setConnectingNodeId] = useState(null); + const [mousePos, setMousePos] = useState({ x: 0, y: 0 }); - const updateNode = useCallback((id: string, updates: Partial) => { - const currentNodes = internalNodesRef.current; - onUpdate({ - ...data, - nodes: currentNodes.map(n => n.id === id ? { ...n, ...updates } : n) - }); - }, [data, onUpdate]); + const [isPanning, setIsPanning] = useState(false); + const [panStart, setPanStart] = useState({ x: 0, y: 0 }); + const [scrollStart, setScrollStart] = useState({ x: 0, y: 0 }); - const handleInputFocus = useCallback((e: React.FocusEvent) => { - e.stopPropagation(); - }, []); + const pushHistory = useCallback(() => { + setHistory(prev => { + const newHistory = [...prev, data]; + if (newHistory.length > 20) return newHistory.slice(newHistory.length - 20); + return newHistory; + }); + }, [data]); - const handleInputWithAutocomplete = useCallback(( - e: React.ChangeEvent, - nodeId: string, - field: 'title' | 'description' - ) => { - const val = e.target.value; - updateNode(nodeId, { [field]: val }); - - const cursor = e.target.selectionStart || 0; - const textBeforeCursor = val.slice(0, cursor); - const match = textBeforeCursor.match(/([@#^])([^@#^\s]*)$/); + const updateNode = useCallback((id: string, updates: Partial) => { + const currentNodes = internalNodesRef.current; + onUpdate({ + ...data, + nodes: currentNodes.map(n => n.id === id ? { ...n, ...updates } : n) + }); + }, [data, onUpdate]); - if (match) { - const trigger = match[1]; - const query = match[2].toLowerCase(); - const targetType = trigger === '@' ? EntityType.CHARACTER : trigger === '#' ? EntityType.LOCATION : EntityType.OBJECT; - const filtered = entities.filter(ent => - ent.type === targetType && - ent.name.toLowerCase().includes(query) - ); + const handleInputFocus = useCallback((e: React.FocusEvent) => { + e.stopPropagation(); + }, []); - setActiveSuggestion({ - active: true, - trigger, - query, - nodeId, - field, - cursorIndex: cursor, - selectedIndex: 0, - filteredEntities: filtered - }); - } else { - setActiveSuggestion(null); - } - }, [updateNode, entities]); + const handleInputWithAutocomplete = useCallback(( + e: React.ChangeEvent, + nodeId: string, + field: 'title' | 'description' + ) => { + const val = e.target.value; + updateNode(nodeId, { [field]: val }); - const insertEntity = (entity: Entity) => { - if (!activeSuggestion) return; - const { nodeId, field, trigger, query } = activeSuggestion; - const node = internalNodesRef.current.find(n => n.id === nodeId); - if (!node) return; - const currentText = node[field] as string; - const cursor = activeSuggestion.cursorIndex; - const insertionLength = trigger.length + query.length; - const startIdx = cursor - insertionLength; - if (startIdx < 0) return; - const before = currentText.slice(0, startIdx); - const after = currentText.slice(cursor); - const isDialogue = node.type === 'dialogue' && activeSuggestion.trigger === '@'; - const suffix = isDialogue ? ": " : " "; - updateNode(nodeId, { [field]: before + entity.name + suffix + after }); - setActiveSuggestion(null); - }; + const cursor = e.target.selectionStart || 0; + const textBeforeCursor = val.slice(0, cursor); + const match = textBeforeCursor.match(/([@#^])([^@#^\s]*)$/); - const handleKeyDownInInput = useCallback((e: React.KeyboardEvent, nodeId: string) => { - if (activeSuggestion && activeSuggestion.nodeId === nodeId) { - if (e.key === 'ArrowDown') { - e.preventDefault(); - setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex + 1) % prev.filteredEntities.length } : null); - return; - } else if (e.key === 'ArrowUp') { - e.preventDefault(); - setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex - 1 + prev.filteredEntities.length) % prev.filteredEntities.length } : null); - return; - } else if (e.key === 'Tab' || e.key === 'Enter') { - e.preventDefault(); - if (activeSuggestion.filteredEntities.length > 0) { - insertEntity(activeSuggestion.filteredEntities[activeSuggestion.selectedIndex]); - } else { - setActiveSuggestion(null); - } - return; - } else if (e.key === 'Escape') { - setActiveSuggestion(null); - return; - } - } - }, [activeSuggestion, entities, updateNode]); + if (match) { + const trigger = match[1]; + const query = match[2].toLowerCase(); + const targetType = trigger === '@' ? EntityType.CHARACTER : trigger === '#' ? EntityType.LOCATION : EntityType.OBJECT; + const filtered = entities.filter(ent => + ent.type === targetType && + ent.name.toLowerCase().includes(query) + ); - const handleNodeMouseDown = useCallback((e: React.MouseEvent, nodeId: string) => { - e.stopPropagation(); - setActiveColorPickerId(null); - - setSelectedNodeIds(prevSelected => { - const newSelection = new Set(prevSelected); - if (e.ctrlKey) { - if (newSelection.has(nodeId)) newSelection.delete(nodeId); - else newSelection.add(nodeId); + setActiveSuggestion({ + active: true, + trigger, + query, + nodeId, + field, + cursorIndex: cursor, + selectedIndex: 0, + filteredEntities: filtered + }); } else { - if (!newSelection.has(nodeId)) { - newSelection.clear(); - newSelection.add(nodeId); + setActiveSuggestion(null); + } + }, [updateNode, entities]); + + const insertEntity = (entity: Entity) => { + if (!activeSuggestion) return; + const { nodeId, field, trigger, query } = activeSuggestion; + const node = internalNodesRef.current.find(n => n.id === nodeId); + if (!node) return; + const currentText = node[field] as string; + const cursor = activeSuggestion.cursorIndex; + const insertionLength = trigger.length + query.length; + const startIdx = cursor - insertionLength; + if (startIdx < 0) return; + const before = currentText.slice(0, startIdx); + const after = currentText.slice(cursor); + const isDialogue = node.type === 'dialogue' && activeSuggestion.trigger === '@'; + const suffix = isDialogue ? ": " : " "; + updateNode(nodeId, { [field]: before + entity.name + suffix + after }); + setActiveSuggestion(null); + }; + + const handleKeyDownInInput = useCallback((e: React.KeyboardEvent, nodeId: string) => { + if (activeSuggestion && activeSuggestion.nodeId === nodeId) { + if (e.key === 'ArrowDown') { + e.preventDefault(); + setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex + 1) % prev.filteredEntities.length } : null); + return; + } else if (e.key === 'ArrowUp') { + e.preventDefault(); + setActiveSuggestion(prev => prev ? { ...prev, selectedIndex: (prev.selectedIndex - 1 + prev.filteredEntities.length) % prev.filteredEntities.length } : null); + return; + } else if (e.key === 'Tab' || e.key === 'Enter') { + e.preventDefault(); + if (activeSuggestion.filteredEntities.length > 0) { + insertEntity(activeSuggestion.filteredEntities[activeSuggestion.selectedIndex]); + } else { + setActiveSuggestion(null); + } + return; + } else if (e.key === 'Escape') { + setActiveSuggestion(null); + return; } } - const finalDragIds = e.ctrlKey ? newSelection : (newSelection.has(nodeId) ? newSelection : new Set([nodeId])); - const startPositions = new Map(); - internalNodesRef.current.forEach(n => { - if (finalDragIds.has(n.id)) { - startPositions.set(n.id, { x: n.x, y: n.y }); + }, [activeSuggestion, entities, updateNode]); + + const handleNodeMouseDown = useCallback((e: React.MouseEvent, nodeId: string) => { + e.stopPropagation(); + setActiveColorPickerId(null); + + setSelectedNodeIds(prevSelected => { + const newSelection = new Set(prevSelected); + if (e.ctrlKey) { + if (newSelection.has(nodeId)) newSelection.delete(nodeId); + else newSelection.add(nodeId); + } else { + if (!newSelection.has(nodeId)) { + newSelection.clear(); + newSelection.add(nodeId); + } } + const finalDragIds = e.ctrlKey ? newSelection : (newSelection.has(nodeId) ? newSelection : new Set([nodeId])); + const startPositions = new Map(); + internalNodesRef.current.forEach(n => { + if (finalDragIds.has(n.id)) { + startPositions.set(n.id, { x: n.x, y: n.y }); + } + }); + setDragStartPositions(startPositions); + return newSelection; }); - setDragStartPositions(startPositions); - return newSelection; - }); - setIsDragging(true); - setDragStartMouse({ x: e.clientX, y: e.clientY }); - pushHistory(); - }, [pushHistory]); + setIsDragging(true); + setDragStartMouse({ x: e.clientX, y: e.clientY }); + pushHistory(); + }, [pushHistory]); - const startConnection = useCallback((e: React.MouseEvent, nodeId: string) => { - e.stopPropagation(); - pushHistory(); - setConnectingNodeId(nodeId); - }, [pushHistory]); + const startConnection = useCallback((e: React.MouseEvent, nodeId: string) => { + e.stopPropagation(); + pushHistory(); + setConnectingNodeId(nodeId); + }, [pushHistory]); - const finishConnection = useCallback((e: React.MouseEvent, targetId: string) => { - if (connectingNodeId && connectingNodeId !== targetId) { - const exists = data.connections.some(c => c.source === connectingNodeId && c.target === targetId); - if (!exists) { + const finishConnection = useCallback((e: React.MouseEvent, targetId: string) => { + if (connectingNodeId && connectingNodeId !== targetId) { + const exists = data.connections.some(c => c.source === connectingNodeId && c.target === targetId); + if (!exists) { const newConn: PlotConnection = { - id: `conn-${Date.now()}`, - source: connectingNodeId, - target: targetId - }; - onUpdate({ - ...data, - nodes: internalNodesRef.current, - connections: [...data.connections, newConn] + id: `conn-${Date.now()}`, + source: connectingNodeId, + target: targetId + }; + onUpdate({ + ...data, + nodes: internalNodesRef.current, + connections: [...data.connections, newConn] + }); + } + } + setConnectingNodeId(null); + }, [data, onUpdate, connectingNodeId]); + + const handleToggleColorPicker = useCallback((id: string) => { + setActiveColorPickerId(prev => prev === id ? null : id); + }, []); + + const handleSaveColor = useCallback((color: string) => { + setSavedColors(prev => !prev.includes(color) ? [...prev, color] : prev); + }, []); + + const handleMouseMove = (e: React.MouseEvent) => { + const rect = containerRef.current?.getBoundingClientRect(); + if (!rect) return; + const clientX = e.clientX; + const clientY = e.clientY; + + if (isPanning && containerRef.current) { + const dx = clientX - panStart.x; + const dy = clientY - panStart.y; + containerRef.current.scrollLeft = scrollStart.x - dx; + containerRef.current.scrollTop = scrollStart.y - dy; + return; + } + + // Only update mousePos when connecting (drawing a line), not during node drag + if (connectingNodeId) { + const scrollLeft = containerRef.current?.scrollLeft || 0; + const scrollTop = containerRef.current?.scrollTop || 0; + setMousePos({ x: clientX - rect.left + scrollLeft, y: clientY - rect.top + scrollTop }); + } + + if (isDragging) { + if (rafRef.current) return; + rafRef.current = requestAnimationFrame(() => { + const dx = clientX - dragStartMouse.x; + const dy = clientY - dragStartMouse.y; + setInternalNodes(prevNodes => prevNodes.map(node => { + const startPos = dragStartPositions.get(node.id); + if (startPos) return { ...node, x: startPos.x + dx, y: startPos.y + dy }; + return node; + })); + rafRef.current = null; }); } - } - setConnectingNodeId(null); - }, [data, onUpdate, connectingNodeId]); - - const handleToggleColorPicker = useCallback((id: string) => { - setActiveColorPickerId(prev => prev === id ? null : id); - }, []); - - const handleSaveColor = useCallback((color: string) => { - setSavedColors(prev => !prev.includes(color) ? [...prev, color] : prev); - }, []); - - const handleMouseMove = (e: React.MouseEvent) => { - const rect = containerRef.current?.getBoundingClientRect(); - if (!rect) return; - const clientX = e.clientX; - const clientY = e.clientY; - - if (isPanning && containerRef.current) { - const dx = clientX - panStart.x; - const dy = clientY - panStart.y; - containerRef.current.scrollLeft = scrollStart.x - dx; - containerRef.current.scrollTop = scrollStart.y - dy; - return; - } - - const scrollLeft = containerRef.current?.scrollLeft || 0; - const scrollTop = containerRef.current?.scrollTop || 0; - setMousePos({ x: clientX - rect.left + scrollLeft, y: clientY - rect.top + scrollTop }); - - if (isDragging) { - if (rafRef.current) return; - rafRef.current = requestAnimationFrame(() => { - const dx = clientX - dragStartMouse.x; - const dy = clientY - dragStartMouse.y; - setInternalNodes(prevNodes => prevNodes.map(node => { - const startPos = dragStartPositions.get(node.id); - if (startPos) return { ...node, x: startPos.x + dx, y: startPos.y + dy }; - return node; - })); - rafRef.current = null; - }); - } - }; - - const handleMouseUp = () => { - if (rafRef.current) { - cancelAnimationFrame(rafRef.current); - rafRef.current = null; - } - if (isDragging) onUpdate({ ...data, nodes: internalNodesRef.current }); - setIsDragging(false); - setIsPanning(false); - setConnectingNodeId(null); - }; - - const handleCanvasMouseDown = (e: React.MouseEvent) => { - if (!e.ctrlKey) setSelectedNodeIds(new Set()); - setActiveSuggestion(null); - setActiveColorPickerId(null); - setEditingNodeId(null); - setIsPanning(true); - setPanStart({ x: e.clientX, y: e.clientY }); - if (containerRef.current) { - setScrollStart({ x: containerRef.current.scrollLeft, y: containerRef.current.scrollTop }); - } - }; - - const handleCanvasDoubleClick = (e: React.MouseEvent) => { - e.preventDefault(); - const rect = containerRef.current?.getBoundingClientRect(); - if (!rect) return; - const x = e.clientX - rect.left + (containerRef.current?.scrollLeft || 0) - CARD_WIDTH / 2; - const y = e.clientY - rect.top + (containerRef.current?.scrollTop || 0) - CARD_HEIGHT / 2; - pushHistory(); - const newNode: PlotNode = { - id: `node-${Date.now()}`, - x, - y, - title: 'Nouvel événement', - description: '', - color: INITIAL_COLORS[0], - type: 'story' }; - onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] }); - setSelectedNodeIds(new Set([newNode.id])); - setEditingNodeId(newNode.id); - }; - const handleDeleteSelected = () => { - if (selectedNodeIds.size === 0) return; - pushHistory(); - const newNodes = internalNodes.filter(n => !selectedNodeIds.has(n.id)); - const newConnections = data.connections.filter(c => !selectedNodeIds.has(c.source) && !selectedNodeIds.has(c.target)); - onUpdate({ nodes: newNodes, connections: newConnections }); - setSelectedNodeIds(new Set()); - }; + const handleMouseUp = (e: React.MouseEvent) => { + if (rafRef.current) { + cancelAnimationFrame(rafRef.current); + rafRef.current = null; + } + if (isDragging) onUpdate({ ...data, nodes: internalNodesRef.current }); - const handleAddNodeCenter = () => { - pushHistory(); - const scrollLeft = containerRef.current?.scrollLeft || 0; - const scrollTop = containerRef.current?.scrollTop || 0; - const clientWidth = containerRef.current?.clientWidth || 800; - const clientHeight = containerRef.current?.clientHeight || 600; - const newNode: PlotNode = { - id: `node-${Date.now()}`, - x: scrollLeft + clientWidth / 2 - CARD_WIDTH / 2, - y: scrollTop + clientHeight / 2 - CARD_HEIGHT / 2, - title: 'Nouveau point d\'intrigue', - description: '', - color: INITIAL_COLORS[0], - type: 'story' - }; - onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] }); - setSelectedNodeIds(new Set([newNode.id])); - setEditingNodeId(newNode.id); - }; + // Hit-test: if connecting, check if mouse is over any node + if (connectingNodeId && containerRef.current) { + const rect = containerRef.current.getBoundingClientRect(); + const scrollLeft = containerRef.current.scrollLeft; + const scrollTop = containerRef.current.scrollTop; + const mx = e.clientX - rect.left + scrollLeft; + const my = e.clientY - rect.top + scrollTop; - return ( -
-
-
- -
-
- {selectedNodeIds.size > 0 ? `${selectedNodeIds.size} SÉLECTIONNÉ(S)` : 'Double-cliquez sur le canvas pour créer'} -
-
-
- -
-
+ const targetNode = internalNodesRef.current.find(n => + n.id !== connectingNodeId && + mx >= n.x && mx <= n.x + CARD_WIDTH && + my >= n.y && my <= n.y + CARD_HEIGHT + ); -
- - {data.connections.map(conn => { - const source = internalNodes.find(n => n.id === conn.source); - const target = internalNodes.find(n => n.id === conn.target); - if (!source || !target) return null; - const startX = source.x + CARD_WIDTH / 2; - const startY = source.y + CARD_HEIGHT / 2; - const endX = target.x + CARD_WIDTH / 2; - const endY = target.y + CARD_HEIGHT / 2; - return ( - + if (targetNode) { + const exists = data.connections.some( + c => c.source === connectingNodeId && c.target === targetNode.id ); - })} - {connectingNodeId && ( - n.id === connectingNodeId)?.x || 0) + CARD_WIDTH/2} - y1={(internalNodes.find(n => n.id === connectingNodeId)?.y || 0) + CARD_HEIGHT/2} - x2={mousePos.x} y2={mousePos.y} - stroke="#6366f1" strokeWidth="2" strokeDasharray="5,5" markerEnd="url(#arrowhead-blue)" - /> + if (!exists) { + const newConn: PlotConnection = { + id: `conn-${Date.now()}`, + source: connectingNodeId, + target: targetNode.id, + }; + onUpdate({ + ...data, + nodes: internalNodesRef.current, + connections: [...data.connections, newConn], + }); + } + } + } + + setIsDragging(false); + setIsPanning(false); + setConnectingNodeId(null); + }; + + const handleCanvasMouseDown = (e: React.MouseEvent) => { + if (!e.ctrlKey) setSelectedNodeIds(new Set()); + setActiveSuggestion(null); + setActiveColorPickerId(null); + setEditingNodeId(null); + setIsPanning(true); + setPanStart({ x: e.clientX, y: e.clientY }); + if (containerRef.current) { + setScrollStart({ x: containerRef.current.scrollLeft, y: containerRef.current.scrollTop }); + } + }; + + const handleCanvasDoubleClick = (e: React.MouseEvent) => { + e.preventDefault(); + const rect = containerRef.current?.getBoundingClientRect(); + if (!rect) return; + const x = e.clientX - rect.left + (containerRef.current?.scrollLeft || 0) - CARD_WIDTH / 2; + const y = e.clientY - rect.top + (containerRef.current?.scrollTop || 0) - CARD_HEIGHT / 2; + pushHistory(); + const newNode: PlotNode = { + id: `node-${Date.now()}`, + x, + y, + title: 'Nouvel événement', + description: '', + color: INITIAL_COLORS[0], + type: 'story' + }; + onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] }); + setSelectedNodeIds(new Set([newNode.id])); + setEditingNodeId(newNode.id); + }; + + const handleDeleteSelected = () => { + if (selectedNodeIds.size === 0) return; + pushHistory(); + const newNodes = internalNodes.filter(n => !selectedNodeIds.has(n.id)); + const newConnections = data.connections.filter(c => !selectedNodeIds.has(c.source) && !selectedNodeIds.has(c.target)); + onUpdate({ nodes: newNodes, connections: newConnections }); + setSelectedNodeIds(new Set()); + }; + + const handleAddNodeCenter = () => { + pushHistory(); + const scrollLeft = containerRef.current?.scrollLeft || 0; + const scrollTop = containerRef.current?.scrollTop || 0; + const clientWidth = containerRef.current?.clientWidth || 800; + const clientHeight = containerRef.current?.clientHeight || 600; + const newNode: PlotNode = { + id: `node-${Date.now()}`, + x: scrollLeft + clientWidth / 2 - CARD_WIDTH / 2, + y: scrollTop + clientHeight / 2 - CARD_HEIGHT / 2, + title: 'Nouveau point d\'intrigue', + description: '', + color: INITIAL_COLORS[0], + type: 'story' + }; + onUpdate({ ...data, nodes: [...internalNodesRef.current, newNode] }); + setSelectedNodeIds(new Set([newNode.id])); + setEditingNodeId(newNode.id); + }; + + return ( +
+
+
+ +
+
+ {selectedNodeIds.size > 0 ? `${selectedNodeIds.size} SÉLECTIONNÉ(S)` : 'Double-cliquez sur le canvas pour créer'} +
+
+
+ +
+
+ +
+ + {data.connections.map(conn => { + const source = internalNodes.find(n => n.id === conn.source); + const target = internalNodes.find(n => n.id === conn.target); + if (!source || !target) return null; + const startX = source.x + CARD_WIDTH / 2; + const startY = source.y + CARD_HEIGHT / 2; + const endX = target.x + CARD_WIDTH / 2; + const endY = target.y + CARD_HEIGHT / 2; + return ( + + ); + })} + {connectingNodeId && ( + n.id === connectingNodeId)?.x || 0) + CARD_WIDTH / 2} + y1={(internalNodes.find(n => n.id === connectingNodeId)?.y || 0) + CARD_HEIGHT / 2} + x2={mousePos.x} y2={mousePos.y} + stroke="#6366f1" strokeWidth="2" strokeDasharray="5,5" markerEnd="url(#arrowhead-blue)" + /> + )} + + + + + + + + + + + {internalNodes.map(node => ( + + ))} +
+ + {activeSuggestion && ( +
+
+ Insérer {activeSuggestion.trigger === '@' ? 'Personnage' : activeSuggestion.trigger === '#' ? 'Lieu' : 'Objet'} +
+
+ {activeSuggestion.filteredEntities.length > 0 ? ( + activeSuggestion.filteredEntities.map((ent, idx) => ( + + )) + ) : ( +
Aucun résultat
+ )} +
+
)} - - - - - - - - - - - {internalNodes.map(node => ( - - ))} -
- - {activeSuggestion && ( -
-
- Insérer {activeSuggestion.trigger === '@' ? 'Personnage' : activeSuggestion.trigger === '#' ? 'Lieu' : 'Objet'} -
-
- {activeSuggestion.filteredEntities.length > 0 ? ( - activeSuggestion.filteredEntities.map((ent, idx) => ( - - )) - ) : ( -
Aucun résultat
- )} -
-
- )} -
- ); +
+ ); }; export default StoryWorkflow; diff --git a/src/hooks/useProjects.ts b/src/hooks/useProjects.ts index 4694d9a..3b1dff7 100644 --- a/src/hooks/useProjects.ts +++ b/src/hooks/useProjects.ts @@ -146,12 +146,23 @@ export const useProjects = (user: UserProfile | null) => { setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p)); try { + // Persist project fields const payload: any = {}; if (data.title !== undefined) payload.title = data.title; if (data.author !== undefined) payload.author = data.author; if (data.settings !== undefined) payload.settings = data.settings; if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide; - await api.projects.update(id, payload); + if (Object.keys(payload).length > 0) { + await api.projects.update(id, payload); + } + + // Persist workflow (nodes + connections) separately + if (data.workflow) { + await api.projects.syncWorkflow(id, { + nodes: data.workflow.nodes || [], + connections: data.workflow.connections || [], + }); + } } catch (err) { console.error("Failed to update project", err); } diff --git a/src/lib/api.ts b/src/lib/api.ts index 20b1cb8..418b6d9 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -73,6 +73,13 @@ const api = { method: 'DELETE', }); }, + + async syncWorkflow(id: string, data: { nodes: any[]; connections: any[] }) { + return api.request(`/projects/${id}/workflow`, { + method: 'PUT', + body: JSON.stringify(data), + }); + }, }, // --- CHAPTERS ---