diff --git a/.pnp.cjs b/.pnp.cjs index 9ad838076..45ac1369c 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -41,6 +41,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@mui/system", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:5.12.3"],\ ["@mui/x-data-grid", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:6.19.6"],\ ["@next/eslint-plugin-next", "npm:12.3.4"],\ + ["@react-pdf/types", "npm:2.5.0"],\ ["@svgr/webpack", "npm:6.2.1"],\ ["@swc/cli", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:0.1.62"],\ ["@swc/core", "npm:1.2.205"],\ @@ -144,6 +145,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["query-string", "npm:7.1.3"],\ ["react", "npm:17.0.2"],\ ["react-dom", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:17.0.2"],\ + ["react-pdf", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:8.0.0"],\ ["react-player", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:2.12.0"],\ ["react-query", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:3.39.3"],\ ["resize-observer-polyfill", "npm:1.5.1"],\ @@ -189,6 +191,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@mui/system", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:5.12.3"],\ ["@mui/x-data-grid", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:6.19.6"],\ ["@next/eslint-plugin-next", "npm:12.3.4"],\ + ["@react-pdf/types", "npm:2.5.0"],\ ["@svgr/webpack", "npm:6.2.1"],\ ["@swc/cli", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:0.1.62"],\ ["@swc/core", "npm:1.2.205"],\ @@ -292,6 +295,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["query-string", "npm:7.1.3"],\ ["react", "npm:17.0.2"],\ ["react-dom", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:17.0.2"],\ + ["react-pdf", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:8.0.0"],\ ["react-player", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:2.12.0"],\ ["react-query", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:3.39.3"],\ ["resize-observer-polyfill", "npm:1.5.1"],\ @@ -4611,6 +4615,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["@react-pdf/types", [\ + ["npm:2.5.0", {\ + "packageLocation": "./.yarn/cache/@react-pdf-types-npm-2.5.0-93b879680b-0ddcfd1af2.zip/node_modules/@react-pdf/types/",\ + "packageDependencies": [\ + ["@react-pdf/types", "npm:2.5.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@sinclair/typebox", [\ ["npm:0.24.51", {\ "packageLocation": "./.yarn/cache/@sinclair-typebox-npm-0.24.51-cdde4a266f-fd0d855e74.zip/node_modules/@sinclair/typebox/",\ @@ -8069,6 +8082,19 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["canvas", [\ + ["npm:2.11.2", {\ + "packageLocation": "./.yarn/unplugged/canvas-npm-2.11.2-824d893a31/node_modules/canvas/",\ + "packageDependencies": [\ + ["canvas", "npm:2.11.2"],\ + ["@mapbox/node-pre-gyp", "npm:1.0.10"],\ + ["nan", "npm:2.19.0"],\ + ["node-gyp", "npm:9.4.0"],\ + ["simple-get", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["canvg", [\ ["npm:3.0.10", {\ "packageLocation": "./.yarn/cache/canvg-npm-3.0.10-3145155265-2cfd86bcb9.zip/node_modules/canvg/",\ @@ -9118,6 +9144,14 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ + ["npm:4.2.1", {\ + "packageLocation": "./.yarn/cache/decompress-response-npm-4.2.1-abe5b4ebe4-4e783ca4df.zip/node_modules/decompress-response/",\ + "packageDependencies": [\ + ["decompress-response", "npm:4.2.1"],\ + ["mimic-response", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:6.0.0", {\ "packageLocation": "./.yarn/cache/decompress-response-npm-6.0.0-359de2878c-d377cf47e0.zip/node_modules/decompress-response/",\ "packageDependencies": [\ @@ -9263,6 +9297,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["dequal", [\ + ["npm:2.0.3", {\ + "packageLocation": "./.yarn/cache/dequal-npm-2.0.3-53a630c60e-8679b850e1.zip/node_modules/dequal/",\ + "packageDependencies": [\ + ["dequal", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["destroy", [\ ["npm:1.2.0", {\ "packageLocation": "./.yarn/cache/destroy-npm-1.2.0-6a511802e2-0acb300b74.zip/node_modules/destroy/",\ @@ -14049,6 +14092,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["make-cancellable-promise", [\ + ["npm:1.3.2", {\ + "packageLocation": "./.yarn/cache/make-cancellable-promise-npm-1.3.2-6612d27c4e-d4dcad8211.zip/node_modules/make-cancellable-promise/",\ + "packageDependencies": [\ + ["make-cancellable-promise", "npm:1.3.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["make-dir", [\ ["npm:3.1.0", {\ "packageLocation": "./.yarn/cache/make-dir-npm-3.1.0-d1d7505142-484200020a.zip/node_modules/make-dir/",\ @@ -14068,6 +14120,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["make-event-props", [\ + ["npm:1.6.2", {\ + "packageLocation": "./.yarn/cache/make-event-props-npm-1.6.2-89d60d5202-ded823d8b7.zip/node_modules/make-event-props/",\ + "packageDependencies": [\ + ["make-event-props", "npm:1.6.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["make-fetch-happen", [\ ["npm:11.1.1", {\ "packageLocation": "./.yarn/cache/make-fetch-happen-npm-11.1.1-f32b79aaaa-7268bf274a.zip/node_modules/make-fetch-happen/",\ @@ -14253,6 +14314,26 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["merge-refs", [\ + ["npm:1.3.0", {\ + "packageLocation": "./.yarn/cache/merge-refs-npm-1.3.0-3b965c4c45-8400f716a7.zip/node_modules/merge-refs/",\ + "packageDependencies": [\ + ["merge-refs", "npm:1.3.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:c8fa855e0b65419bf970e31fe2d80ab76daacad338680ff6d57b2c9b8fecca05dfc1d6c8d5535baee8ba2e5bc0c75170bd2c6bf2bfadd96845544c1d5a5756e7#npm:1.3.0", {\ + "packageLocation": "./.yarn/__virtual__/merge-refs-virtual-b9a0aa28cd/0/cache/merge-refs-npm-1.3.0-3b965c4c45-8400f716a7.zip/node_modules/merge-refs/",\ + "packageDependencies": [\ + ["merge-refs", "virtual:c8fa855e0b65419bf970e31fe2d80ab76daacad338680ff6d57b2c9b8fecca05dfc1d6c8d5535baee8ba2e5bc0c75170bd2c6bf2bfadd96845544c1d5a5756e7#npm:1.3.0"],\ + ["@types/react", "npm:17.0.47"]\ + ],\ + "packagePeers": [\ + "@types/react"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["merge-stream", [\ ["npm:2.0.0", {\ "packageLocation": "./.yarn/cache/merge-stream-npm-2.0.0-2ac83efea5-6fa4dcc8d8.zip/node_modules/merge-stream/",\ @@ -14392,6 +14473,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ + ["npm:2.1.0", {\ + "packageLocation": "./.yarn/cache/mimic-response-npm-2.1.0-037463e454-014fad6ab9.zip/node_modules/mimic-response/",\ + "packageDependencies": [\ + ["mimic-response", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:3.1.0", {\ "packageLocation": "./.yarn/cache/mimic-response-npm-3.1.0-a4a24b4e96-25739fee32.zip/node_modules/mimic-response/",\ "packageDependencies": [\ @@ -14707,6 +14795,14 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["node-gyp", "npm:9.4.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:2.19.0", {\ + "packageLocation": "./.yarn/unplugged/nan-npm-2.19.0-2f5da4a528/node_modules/nan/",\ + "packageDependencies": [\ + ["nan", "npm:2.19.0"],\ + ["node-gyp", "npm:9.4.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["nano-time", [\ @@ -15666,6 +15762,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["path2d-polyfill", [\ + ["npm:2.0.1", {\ + "packageLocation": "./.yarn/cache/path2d-polyfill-npm-2.0.1-cca87dc638-e38a4f920b.zip/node_modules/path2d-polyfill/",\ + "packageDependencies": [\ + ["path2d-polyfill", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["pbf", [\ ["npm:3.2.1", {\ "packageLocation": "./.yarn/cache/pbf-npm-3.2.1-d33be8e429-8033f5e21f.zip/node_modules/pbf/",\ @@ -15677,6 +15782,17 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["pdfjs-dist", [\ + ["npm:3.11.174", {\ + "packageLocation": "./.yarn/cache/pdfjs-dist-npm-3.11.174-67f2fee6d6-62f5a64ca0.zip/node_modules/pdfjs-dist/",\ + "packageDependencies": [\ + ["pdfjs-dist", "npm:3.11.174"],\ + ["canvas", "npm:2.11.2"],\ + ["path2d-polyfill", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["peek-readable", [\ ["npm:5.0.0", {\ "packageLocation": "./.yarn/cache/peek-readable-npm-5.0.0-c469f805e3-bef5ceb505.zip/node_modules/peek-readable/",\ @@ -16280,6 +16396,40 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["react-pdf", [\ + ["npm:8.0.0", {\ + "packageLocation": "./.yarn/cache/react-pdf-npm-8.0.0-0b66f5c0a9-493b9292fe.zip/node_modules/react-pdf/",\ + "packageDependencies": [\ + ["react-pdf", "npm:8.0.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:8.0.0", {\ + "packageLocation": "./.yarn/__virtual__/react-pdf-virtual-c8fa855e0b/0/cache/react-pdf-npm-8.0.0-0b66f5c0a9-493b9292fe.zip/node_modules/react-pdf/",\ + "packageDependencies": [\ + ["react-pdf", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:8.0.0"],\ + ["@types/react", "npm:17.0.47"],\ + ["@types/react-dom", "npm:17.0.17"],\ + ["clsx", "npm:2.1.0"],\ + ["dequal", "npm:2.0.3"],\ + ["make-cancellable-promise", "npm:1.3.2"],\ + ["make-event-props", "npm:1.6.2"],\ + ["merge-refs", "virtual:c8fa855e0b65419bf970e31fe2d80ab76daacad338680ff6d57b2c9b8fecca05dfc1d6c8d5535baee8ba2e5bc0c75170bd2c6bf2bfadd96845544c1d5a5756e7#npm:1.3.0"],\ + ["pdfjs-dist", "npm:3.11.174"],\ + ["react", "npm:17.0.2"],\ + ["react-dom", "virtual:f84dba857fa10247bbb4af28a825f1d91a188c858b2b2b1b4a2d3cfedf850e14647ec99dabfb1535752c99ec0ff164e2ec4fb4c32c822be66b30b3cfa4630990#npm:17.0.2"],\ + ["tiny-invariant", "npm:1.3.3"],\ + ["warning", "npm:4.0.3"]\ + ],\ + "packagePeers": [\ + "@types/react-dom",\ + "@types/react",\ + "react-dom",\ + "react"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["react-player", [\ ["npm:2.12.0", {\ "packageLocation": "./.yarn/cache/react-player-npm-2.12.0-9b493fb807-77d3e55ed6.zip/node_modules/react-player/",\ @@ -17222,6 +17372,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["simple-get", [\ + ["npm:3.1.1", {\ + "packageLocation": "./.yarn/cache/simple-get-npm-3.1.1-dce5923dba-80195e70bf.zip/node_modules/simple-get/",\ + "packageDependencies": [\ + ["simple-get", "npm:3.1.1"],\ + ["decompress-response", "npm:4.2.1"],\ + ["once", "npm:1.4.0"],\ + ["simple-concat", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:4.0.1", {\ "packageLocation": "./.yarn/cache/simple-get-npm-4.0.1-fa2a97645d-e4132fd27c.zip/node_modules/simple-get/",\ "packageDependencies": [\ @@ -18240,6 +18400,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["tiny-invariant", [\ + ["npm:1.3.3", {\ + "packageLocation": "./.yarn/cache/tiny-invariant-npm-1.3.3-e622f1447c-5e185c8cc2.zip/node_modules/tiny-invariant/",\ + "packageDependencies": [\ + ["tiny-invariant", "npm:1.3.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["tinylogic", [\ ["npm:2.0.0", {\ "packageLocation": "./.yarn/cache/tinylogic-npm-2.0.0-700fcc2fe0-b966cbb412.zip/node_modules/tinylogic/",\ @@ -19300,6 +19469,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["warning", [\ + ["npm:4.0.3", {\ + "packageLocation": "./.yarn/cache/warning-npm-4.0.3-291e921d6d-4f2cb6a957.zip/node_modules/warning/",\ + "packageDependencies": [\ + ["warning", "npm:4.0.3"],\ + ["loose-envify", "npm:1.4.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["watchpack", [\ ["npm:2.4.0", {\ "packageLocation": "./.yarn/cache/watchpack-npm-2.4.0-7ec4b9cc65-23d4bc5863.zip/node_modules/watchpack/",\ diff --git a/.yarn/cache/@react-pdf-types-npm-2.5.0-93b879680b-0ddcfd1af2.zip b/.yarn/cache/@react-pdf-types-npm-2.5.0-93b879680b-0ddcfd1af2.zip new file mode 100644 index 000000000..c411a0650 Binary files /dev/null and b/.yarn/cache/@react-pdf-types-npm-2.5.0-93b879680b-0ddcfd1af2.zip differ diff --git a/.yarn/cache/canvas-npm-2.11.2-824d893a31-61e554aef8.zip b/.yarn/cache/canvas-npm-2.11.2-824d893a31-61e554aef8.zip new file mode 100644 index 000000000..29f29f340 Binary files /dev/null and b/.yarn/cache/canvas-npm-2.11.2-824d893a31-61e554aef8.zip differ diff --git a/.yarn/cache/decompress-response-npm-4.2.1-abe5b4ebe4-4e783ca4df.zip b/.yarn/cache/decompress-response-npm-4.2.1-abe5b4ebe4-4e783ca4df.zip new file mode 100644 index 000000000..d9f9f70e0 Binary files /dev/null and b/.yarn/cache/decompress-response-npm-4.2.1-abe5b4ebe4-4e783ca4df.zip differ diff --git a/.yarn/cache/dequal-npm-2.0.3-53a630c60e-8679b850e1.zip b/.yarn/cache/dequal-npm-2.0.3-53a630c60e-8679b850e1.zip new file mode 100644 index 000000000..77213918f Binary files /dev/null and b/.yarn/cache/dequal-npm-2.0.3-53a630c60e-8679b850e1.zip differ diff --git a/.yarn/cache/make-cancellable-promise-npm-1.3.2-6612d27c4e-d4dcad8211.zip b/.yarn/cache/make-cancellable-promise-npm-1.3.2-6612d27c4e-d4dcad8211.zip new file mode 100644 index 000000000..f2ff308ea Binary files /dev/null and b/.yarn/cache/make-cancellable-promise-npm-1.3.2-6612d27c4e-d4dcad8211.zip differ diff --git a/.yarn/cache/make-event-props-npm-1.6.2-89d60d5202-ded823d8b7.zip b/.yarn/cache/make-event-props-npm-1.6.2-89d60d5202-ded823d8b7.zip new file mode 100644 index 000000000..4ad173ff3 Binary files /dev/null and b/.yarn/cache/make-event-props-npm-1.6.2-89d60d5202-ded823d8b7.zip differ diff --git a/.yarn/cache/merge-refs-npm-1.3.0-3b965c4c45-8400f716a7.zip b/.yarn/cache/merge-refs-npm-1.3.0-3b965c4c45-8400f716a7.zip new file mode 100644 index 000000000..3d6a23b02 Binary files /dev/null and b/.yarn/cache/merge-refs-npm-1.3.0-3b965c4c45-8400f716a7.zip differ diff --git a/.yarn/cache/mimic-response-npm-2.1.0-037463e454-014fad6ab9.zip b/.yarn/cache/mimic-response-npm-2.1.0-037463e454-014fad6ab9.zip new file mode 100644 index 000000000..39add2017 Binary files /dev/null and b/.yarn/cache/mimic-response-npm-2.1.0-037463e454-014fad6ab9.zip differ diff --git a/.yarn/cache/nan-npm-2.19.0-2f5da4a528-29a894a003.zip b/.yarn/cache/nan-npm-2.19.0-2f5da4a528-29a894a003.zip new file mode 100644 index 000000000..9ccf08001 Binary files /dev/null and b/.yarn/cache/nan-npm-2.19.0-2f5da4a528-29a894a003.zip differ diff --git a/.yarn/cache/path2d-polyfill-npm-2.0.1-cca87dc638-e38a4f920b.zip b/.yarn/cache/path2d-polyfill-npm-2.0.1-cca87dc638-e38a4f920b.zip new file mode 100644 index 000000000..b05cb5d76 Binary files /dev/null and b/.yarn/cache/path2d-polyfill-npm-2.0.1-cca87dc638-e38a4f920b.zip differ diff --git a/.yarn/cache/pdfjs-dist-npm-3.11.174-67f2fee6d6-62f5a64ca0.zip b/.yarn/cache/pdfjs-dist-npm-3.11.174-67f2fee6d6-62f5a64ca0.zip new file mode 100644 index 000000000..59ebc70c9 Binary files /dev/null and b/.yarn/cache/pdfjs-dist-npm-3.11.174-67f2fee6d6-62f5a64ca0.zip differ diff --git a/.yarn/cache/react-pdf-npm-8.0.0-0b66f5c0a9-493b9292fe.zip b/.yarn/cache/react-pdf-npm-8.0.0-0b66f5c0a9-493b9292fe.zip new file mode 100644 index 000000000..aa50e3eac Binary files /dev/null and b/.yarn/cache/react-pdf-npm-8.0.0-0b66f5c0a9-493b9292fe.zip differ diff --git a/.yarn/cache/simple-get-npm-3.1.1-dce5923dba-80195e70bf.zip b/.yarn/cache/simple-get-npm-3.1.1-dce5923dba-80195e70bf.zip new file mode 100644 index 000000000..27c45759e Binary files /dev/null and b/.yarn/cache/simple-get-npm-3.1.1-dce5923dba-80195e70bf.zip differ diff --git a/.yarn/cache/tiny-invariant-npm-1.3.3-e622f1447c-5e185c8cc2.zip b/.yarn/cache/tiny-invariant-npm-1.3.3-e622f1447c-5e185c8cc2.zip new file mode 100644 index 000000000..39f53235c Binary files /dev/null and b/.yarn/cache/tiny-invariant-npm-1.3.3-e622f1447c-5e185c8cc2.zip differ diff --git a/.yarn/cache/warning-npm-4.0.3-291e921d6d-4f2cb6a957.zip b/.yarn/cache/warning-npm-4.0.3-291e921d6d-4f2cb6a957.zip new file mode 100644 index 000000000..6c48c284d Binary files /dev/null and b/.yarn/cache/warning-npm-4.0.3-291e921d6d-4f2cb6a957.zip differ diff --git a/next.config.js b/next.config.js index a9b57e513..dc9852f14 100644 --- a/next.config.js +++ b/next.config.js @@ -10,6 +10,7 @@ module.exports = { issuer: /\.[jt]sx?$/, use: ['@svgr/webpack'], }); + config.resolve.alias.canvas = false; return config; }, experimental: { esmExternals: false }, diff --git a/package.json b/package.json index fe59e9571..f75eddc6d 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ }, "devDependencies": { "@next/eslint-plugin-next": "^12.1.6", + "@react-pdf/types": "^2.5.0", "@svgr/webpack": "6.2.1", "@swc/cli": "^0.1.57", "@swc/core": "1.2.205", @@ -179,6 +180,7 @@ "query-string": "^7.1.1", "react": "^17.0.2", "react-dom": "^17.0.2", + "react-pdf": "^8.0.0", "react-player": "^2.10.1", "react-query": "^3.39.2", "resize-observer-polyfill": "^1.5.1", diff --git a/server/controllers/activity.ts b/server/controllers/activity.ts index 04a9412bc..92aa11dec 100644 --- a/server/controllers/activity.ts +++ b/server/controllers/activity.ts @@ -160,7 +160,7 @@ const CREATE_SCHEMA: JSONSchemaType = { type: 'object', properties: { id: { type: 'number', nullable: false }, - type: { type: 'string', nullable: false, enum: ['text', 'video', 'image', 'h5p', 'sound'] }, + type: { type: 'string', nullable: false, enum: ['text', 'video', 'image', 'h5p', 'sound', 'document'] }, value: { type: 'string', nullable: false }, }, required: ['type', 'value'], @@ -275,7 +275,7 @@ const UPDATE_A_SCHEMA: JSONSchemaType = { type: 'object', properties: { id: { type: 'number', nullable: false }, - type: { type: 'string', nullable: false, enum: ['text', 'video', 'image', 'h5p', 'sound'] }, + type: { type: 'string', nullable: false, enum: ['text', 'video', 'image', 'h5p', 'sound', 'document'] }, value: { type: 'string', nullable: false }, }, required: ['type', 'value'], diff --git a/server/controllers/controller.ts b/server/controllers/controller.ts index 7c611cdee..d04b5d067 100644 --- a/server/controllers/controller.ts +++ b/server/controllers/controller.ts @@ -7,7 +7,7 @@ import path from 'path'; import type { UserType } from '../entities/user'; import { authenticate } from '../middlewares/authenticate'; import { handleErrors } from '../middlewares/handleErrors'; -import { diskStorage } from './multer'; +import { diskStorage } from '../middlewares/multer'; type RouteOptions = { path: string; diff --git a/server/controllers/filesController.ts b/server/controllers/filesController.ts index faeb61b22..3773e984f 100644 --- a/server/controllers/filesController.ts +++ b/server/controllers/filesController.ts @@ -1,4 +1,7 @@ import type { Request, Response } from 'express'; +import fs from 'fs'; +import path from 'path'; +import { v4 } from 'uuid'; import { uploadFile } from '../fileUpload'; import { AppError, ErrorCode } from '../middlewares/handleErrors'; @@ -14,14 +17,20 @@ export async function uploadFiles(req: Request, res: Response) { throw new AppError('Files are missing', ErrorCode.UNKNOWN); } const promises: Promise[] = []; + + const folderPath = path.join(__dirname, `../fileUpload/images/${user.id}`); + fs.mkdirSync(folderPath, { recursive: true }); for (const file of files as Express.Multer.File[]) { // making the filename being the path here is a trick to use // upload function... - const filename = `images/${user.id}/${file.filename}`; - const promise = uploadFile(filename, file.mimetype); + const ext = file.originalname.split('.').pop(); + const filename = `${v4()}.${ext}`; + fs.writeFileSync(`${folderPath}/${filename}`, file.buffer); + const promise = uploadFile(`images/${user.id}/${filename}`, file.mimetype); promises.push(promise); } const results = await Promise.all(promises); + fs.rmSync(folderPath, { recursive: true, force: true }); res.status(200).json(results); } catch (error) { if (error instanceof AppError) { diff --git a/server/fileUpload/s3.ts b/server/fileUpload/s3.ts index 8dc17763a..bbf86759c 100644 --- a/server/fileUpload/s3.ts +++ b/server/fileUpload/s3.ts @@ -180,7 +180,6 @@ export class AwsS3 { // local dir const fileStream = fs.createReadStream(path.join(__dirname, filename)); let key = ''; - // upload image on stockage server try { key = await this.uploadS3File(filename, fileStream, contentType); diff --git a/server/controllers/multer.ts b/server/middlewares/multer.ts similarity index 94% rename from server/controllers/multer.ts rename to server/middlewares/multer.ts index 60bb07db9..a5ceed6ea 100644 --- a/server/controllers/multer.ts +++ b/server/middlewares/multer.ts @@ -35,8 +35,8 @@ const whitelist = [ 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', ]; -export const fileUplad = multer({ - storage: diskStorageToImages, +export const fileUpladInMemory = multer({ + storage: multer.memoryStorage(), fileFilter: (_req, file, cb) => { if (!whitelist.includes(file.mimetype)) { return cb(new Error('file is not allowed')); diff --git a/server/routes/filesRouter.ts b/server/routes/filesRouter.ts index d2cc94b25..26d4a99b0 100644 --- a/server/routes/filesRouter.ts +++ b/server/routes/filesRouter.ts @@ -2,10 +2,9 @@ import { Router } from 'express'; import { UserType } from '../../types/user.type'; import { uploadFiles } from '../controllers/filesController'; -import { fileUplad } from '../controllers/multer'; import { authenticate } from '../middlewares/authenticate'; import { handleErrors } from '../middlewares/handleErrors'; +import { fileUpladInMemory } from '../middlewares/multer'; export const filesRouter = Router(); - -filesRouter.post('/', fileUplad.array('files'), handleErrors(authenticate(UserType.ADMIN)), uploadFiles); +filesRouter.post('/', fileUpladInMemory.array('files'), handleErrors(authenticate(UserType.ADMIN)), uploadFiles); diff --git a/src/api/files/uploadFiles.post.ts b/src/api/files/uploadFiles.post.ts new file mode 100644 index 000000000..60a8dd01a --- /dev/null +++ b/src/api/files/uploadFiles.post.ts @@ -0,0 +1,30 @@ +import { useMutation } from 'react-query'; + +import { axiosRequest } from 'src/utils/axiosRequest'; + +async function uploadFiles(params: { files: File[] }): Promise { + const { files } = params; + const formData = new FormData(); + for (const file of files) { + formData.append('files', file); + } + return ( + await axiosRequest({ + method: 'POST', + baseURL: '/api', + url: `/files`, + headers: { + 'Content-Type': 'multipart/form-data', + }, + data: formData, + }) + ).data as Promise; +} + +export const useUploadFiles = () => { + return useMutation({ + mutationFn: (files: File[]) => { + return uploadFiles({ files }); + }, + }); +}; diff --git a/src/components/activities/ActivityCard/activity-admin/ActivityCardAdmin.tsx b/src/components/activities/ActivityCard/activity-admin/ActivityCardAdmin.tsx index 0067e3de2..78b18644b 100644 --- a/src/components/activities/ActivityCard/activity-admin/ActivityCardAdmin.tsx +++ b/src/components/activities/ActivityCard/activity-admin/ActivityCardAdmin.tsx @@ -13,8 +13,8 @@ export default function ActivityCard(activity: Pick e.type === 'image')?.value; + const imageUrl: string = isImageUrl ? isImageUrl : 'https://placehold.co/600x400?text=No Picture'; const content: string = activity.content.reduce((acc, curr) => { if (curr.type === 'text') { acc += curr.value; diff --git a/src/components/activities/content/AddContentCard.tsx b/src/components/activities/content/AddContentCard.tsx index 0ceffd3c3..418eb30b4 100644 --- a/src/components/activities/content/AddContentCard.tsx +++ b/src/components/activities/content/AddContentCard.tsx @@ -4,6 +4,7 @@ import AppsIcon from '@mui/icons-material/Apps'; import { ButtonBase, Card } from '@mui/material'; import { UserContext } from 'src/contexts/userContext'; +import DocumentIcon from 'src/svg/editor/document_icon.svg'; import ImageIcon from 'src/svg/editor/image_icon.svg'; import SoundIcon from 'src/svg/editor/sound_icon.svg'; import TextIcon from 'src/svg/editor/text_icon.svg'; @@ -25,7 +26,6 @@ export const AddContentCard = ({ addContent = () => {} }: AddContentCardProps) = Ajouter à votre description : - {/* */} {} }: AddContentCardProps) = Image + { + addContent('document'); + }} + > + + + Document + + ); } + if (p.type === 'document') { + return ( + { + deleteContent(index); + }} + /> + ); + } if (p.type === 'h5p') { return ( { if (p.type === 'image') { return ; } + if (p.type === 'document') { + return ; + } if (p.type === 'video') { return ; } diff --git a/src/components/activities/content/editors/DocumentEditor/DocumentEditor.tsx b/src/components/activities/content/editors/DocumentEditor/DocumentEditor.tsx new file mode 100644 index 000000000..d490e7fa1 --- /dev/null +++ b/src/components/activities/content/editors/DocumentEditor/DocumentEditor.tsx @@ -0,0 +1,56 @@ +import React, { useState } from 'react'; + +import { Button } from '@mui/material'; + +import { EditorContainer } from '../EditorContainer'; +import DocumentModal from './DocumentModal'; +import PdfDisplay from './PdfDisplay'; +import { primaryColor } from 'src/styles/variables.const'; + +interface DocumentEditorProps { + id: number; + onDeleteEditor: () => void; + onChange(newValue: string): void; + value?: string; +} + +export const DocumentEditor = ({ id, value, onChange, onDeleteEditor }: DocumentEditorProps) => { + const [isModalOpen, setIsModalOpen] = useState(value === ''); + + return ( + +
+
+ {value && } +
+
+ +
+
+ onDeleteEditor()} /> +
+ ); +}; diff --git a/src/components/activities/content/editors/DocumentEditor/DocumentModal.tsx b/src/components/activities/content/editors/DocumentEditor/DocumentModal.tsx new file mode 100644 index 000000000..7ee082cea --- /dev/null +++ b/src/components/activities/content/editors/DocumentEditor/DocumentModal.tsx @@ -0,0 +1,90 @@ +import React, { useState } from 'react'; + +import CloudUploadIcon from '@mui/icons-material/CloudUpload'; +import { Button } from '@mui/material'; + +import PdfDisplay from './PdfDisplay'; +import { useUploadFiles } from 'src/api/files/uploadFiles.post'; +import { Modal } from 'src/components/Modal'; +import { bgPage } from 'src/styles/variables.const'; + +interface DocumentEditorProps { + id: number; + isModalOpen: boolean; + setIsModalOpen: (val: boolean) => void; + onDeleteEditor: () => void; + onChange(newValue: string): void; +} + +export default function DocumentModal({ id, isModalOpen, setIsModalOpen, onDeleteEditor, onChange }: DocumentEditorProps) { + const uploadFiles = useUploadFiles(); + const [urls, setUrls] = useState([]); + + async function handleUploadFiles(e: React.ChangeEvent) { + if (e.target.files) { + const files = Array.from(e.target.files); + const urls = await uploadFiles.mutateAsync(files); + setUrls(urls); + } + } + return ( + { + setIsModalOpen(false); + onChange(urls[0]); + }} + onClose={() => { + setIsModalOpen(false); + onDeleteEditor(); + }} + ariaLabelledBy={`document-edit-${id}`} + ariaDescribedBy={`document-edit-${id}-desc`} + > +
+
+
+ +
+
+
+
+
+ Aperçu +
+ + {urls.length ? ( +
+ +
+ ) : ( + '' + )} +
+
+
+
+ ); +} diff --git a/src/components/activities/content/editors/DocumentEditor/PdfDisplay.tsx b/src/components/activities/content/editors/DocumentEditor/PdfDisplay.tsx new file mode 100644 index 000000000..a361fdfd1 --- /dev/null +++ b/src/components/activities/content/editors/DocumentEditor/PdfDisplay.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { Document, Page, pdfjs } from 'react-pdf'; + +pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`; + +export default function PdfDisplay({ url }: { url: string }) { + return ( + + + + ); +} diff --git a/src/components/activities/content/views/DocumentView.tsx b/src/components/activities/content/views/DocumentView.tsx new file mode 100644 index 000000000..64523bc94 --- /dev/null +++ b/src/components/activities/content/views/DocumentView.tsx @@ -0,0 +1,12 @@ +import React from 'react'; + +import type { ViewProps } from '../content.types'; +import PdfDisplay from '../editors/DocumentEditor/PdfDisplay'; + +export const DocumentView = ({ value = '' }: ViewProps) => { + return ( +
+ +
+ ); +}; diff --git a/src/pages/admin/newportal/contenulibre/1/index.tsx b/src/pages/admin/newportal/contenulibre/1/index.tsx index 0cc8cf0f9..64f0147da 100644 --- a/src/pages/admin/newportal/contenulibre/1/index.tsx +++ b/src/pages/admin/newportal/contenulibre/1/index.tsx @@ -7,11 +7,11 @@ import { Base } from 'src/components/Base'; import { StepsButton } from 'src/components/StepsButtons'; import StepsNavigation from 'src/components/activities/StepsNavigation'; import { ContentEditor } from 'src/components/activities/content'; -import { useActivity } from 'src/hooks/useActivity'; +import { ActivityContext } from 'src/contexts/activityContext'; import type { ActivityContent } from 'types/activity.type'; const ContenuLibreStep1: React.FC = () => { - const { activity, updateActivity, addContent, deleteContent, save } = useActivity(); + const { activity, updateActivity, addContent, deleteContent, save } = React.useContext(ActivityContext); const router = useRouter(); useEffect(() => { diff --git a/src/pages/lancer-un-defi/ecologique/2.tsx b/src/pages/lancer-un-defi/ecologique/2.tsx index b84798595..24710471a 100644 --- a/src/pages/lancer-un-defi/ecologique/2.tsx +++ b/src/pages/lancer-un-defi/ecologique/2.tsx @@ -7,7 +7,7 @@ import type { EcoDefiData } from 'src/activity-types/defi.types'; import { Base } from 'src/components/Base'; import { Steps } from 'src/components/Steps'; import { StepsButton } from 'src/components/StepsButtons'; -import { ContentEditor } from 'src/components/activities/content'; +import { ContentEditor } from 'src/components/activities/content/'; import { getErrorSteps } from 'src/components/activities/defiEcologieChecks'; import { ActivityContext } from 'src/contexts/activityContext'; import type { ActivityContent } from 'types/activity.type'; diff --git a/src/svg/editor/document_icon.svg b/src/svg/editor/document_icon.svg new file mode 100644 index 000000000..4d9f1709a --- /dev/null +++ b/src/svg/editor/document_icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/types/activity.type.ts b/types/activity.type.ts index 6b68d7304..02e952cad 100644 --- a/types/activity.type.ts +++ b/types/activity.type.ts @@ -1,4 +1,4 @@ -export type ActivityContentType = 'text' | 'video' | 'image' | 'h5p' | 'sound'; +export type ActivityContentType = 'text' | 'video' | 'image' | 'h5p' | 'sound' | 'document'; export interface ActivityContent { id: number; // needed to sort content. type: ActivityContentType; diff --git a/yarn.lock b/yarn.lock index 1ef8bc9f7..b9013aee7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22,6 +22,7 @@ __metadata: "@mui/system": ^5.8.5 "@mui/x-data-grid": ^6.19.6 "@next/eslint-plugin-next": ^12.1.6 + "@react-pdf/types": ^2.5.0 "@svgr/webpack": 6.2.1 "@swc/cli": ^0.1.57 "@swc/core": 1.2.205 @@ -125,6 +126,7 @@ __metadata: query-string: ^7.1.1 react: ^17.0.2 react-dom: ^17.0.2 + react-pdf: ^8.0.0 react-player: ^2.10.1 react-query: ^3.39.2 resize-observer-polyfill: ^1.5.1 @@ -2885,6 +2887,13 @@ __metadata: languageName: node linkType: hard +"@react-pdf/types@npm:^2.5.0": + version: 2.5.0 + resolution: "@react-pdf/types@npm:2.5.0" + checksum: 0ddcfd1af2c22dacdb741a15ab0f9c54c7be05ef11900866f8454abf704afa55f184d6815f120d869a86ddf395bdf3ab6373b09ab4aa6fd926993bebf08676db + languageName: node + linkType: hard + "@sinclair/typebox@npm:^0.24.1": version: 0.24.51 resolution: "@sinclair/typebox@npm:0.24.51" @@ -5656,6 +5665,18 @@ __metadata: languageName: node linkType: hard +"canvas@npm:^2.11.2": + version: 2.11.2 + resolution: "canvas@npm:2.11.2" + dependencies: + "@mapbox/node-pre-gyp": ^1.0.0 + nan: ^2.17.0 + node-gyp: latest + simple-get: ^3.0.3 + checksum: 61e554aef80022841dc836964534082ec21435928498032562089dfb7736215f039c7d99ee546b0cf10780232d9bf310950f8b4d489dc394e0fb6f6adfc97994 + languageName: node + linkType: hard + "canvg@npm:^3.0.6": version: 3.0.10 resolution: "canvg@npm:3.0.10" @@ -6548,6 +6569,15 @@ __metadata: languageName: node linkType: hard +"decompress-response@npm:^4.2.0": + version: 4.2.1 + resolution: "decompress-response@npm:4.2.1" + dependencies: + mimic-response: ^2.0.0 + checksum: 4e783ca4dfe9417354d61349750fe05236f565a4415a6ca20983a311be2371debaedd9104c0b0e7b36e5f167aeaae04f84f1a0b3f8be4162f1d7d15598b8fdba + languageName: node + linkType: hard + "decompress-response@npm:^6.0.0": version: 6.0.0 resolution: "decompress-response@npm:6.0.0" @@ -6674,6 +6704,13 @@ __metadata: languageName: node linkType: hard +"dequal@npm:^2.0.3": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90 + languageName: node + linkType: hard + "destroy@npm:1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" @@ -10806,6 +10843,13 @@ __metadata: languageName: node linkType: hard +"make-cancellable-promise@npm:^1.3.1": + version: 1.3.2 + resolution: "make-cancellable-promise@npm:1.3.2" + checksum: d4dcad8211272a4d6ef979747a3d7085cdefb92cf50e096ab6a3ea8295e7578b82edaac261c7c4e3d656eadfac285f05b98856b3cf1fd14390ec2708328a9b35 + languageName: node + linkType: hard + "make-dir@npm:^3.0.0, make-dir@npm:^3.1.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" @@ -10822,6 +10866,13 @@ __metadata: languageName: node linkType: hard +"make-event-props@npm:^1.6.0": + version: 1.6.2 + resolution: "make-event-props@npm:1.6.2" + checksum: ded823d8b73926d94513416c75585be2cea9d9408b085eed31c20a1005147661a50852f869e1779990ddd04c8e07e1f24c766453cc9b4870bcef8d79c533a5fc + languageName: node + linkType: hard + "make-fetch-happen@npm:^11.0.3": version: 11.1.1 resolution: "make-fetch-happen@npm:11.1.1" @@ -10981,6 +11032,18 @@ __metadata: languageName: node linkType: hard +"merge-refs@npm:^1.2.1": + version: 1.3.0 + resolution: "merge-refs@npm:1.3.0" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 8400f716a77857dac6b5d49cd5ef69cec7bff6c5555785c5e91a5142fbb5f3e6fe81282bc5be1f01c0c0843ed29f5b4169bfa9838ec69c459b4538f3fef3e79c + languageName: node + linkType: hard + "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -11116,6 +11179,13 @@ __metadata: languageName: node linkType: hard +"mimic-response@npm:^2.0.0": + version: 2.1.0 + resolution: "mimic-response@npm:2.1.0" + checksum: 014fad6ab936657e5f2f48bd87af62a8e928ebe84472aaf9e14fec4fcb31257a5edff77324d8ac13ddc6685ba5135cf16e381efac324e5f174fb4ddbf902bf07 + languageName: node + linkType: hard + "mimic-response@npm:^3.1.0": version: 3.1.0 resolution: "mimic-response@npm:3.1.0" @@ -11420,6 +11490,15 @@ __metadata: languageName: node linkType: hard +"nan@npm:^2.17.0": + version: 2.19.0 + resolution: "nan@npm:2.19.0" + dependencies: + node-gyp: latest + checksum: 29a894a003c1954c250d690768c30e69cd91017e2e5eb21b294380f7cace425559508f5ffe3e329a751307140b0bd02f83af040740fa4def1a3869be6af39600 + languageName: node + linkType: hard + "nano-time@npm:1.0.0": version: 1.0.0 resolution: "nano-time@npm:1.0.0" @@ -12292,6 +12371,13 @@ __metadata: languageName: node linkType: hard +"path2d-polyfill@npm:^2.0.1": + version: 2.0.1 + resolution: "path2d-polyfill@npm:2.0.1" + checksum: e38a4f920be3550e8334b899cc56f4fca0a976ca69404ee10d656a45d422996b7e27e294e2cf0aac2e410ce59d6977cde9f95586e62a24e6c904716695e059f8 + languageName: node + linkType: hard + "pbf@npm:^3.2.1": version: 3.2.1 resolution: "pbf@npm:3.2.1" @@ -12304,6 +12390,21 @@ __metadata: languageName: node linkType: hard +"pdfjs-dist@npm:3.11.174": + version: 3.11.174 + resolution: "pdfjs-dist@npm:3.11.174" + dependencies: + canvas: ^2.11.2 + path2d-polyfill: ^2.0.1 + dependenciesMeta: + canvas: + optional: true + path2d-polyfill: + optional: true + checksum: 62f5a64ca0b2dbc855701ebf9a65c3e48c3c9aa5d64c50eb42bb9ff50a326f3eddab7f2a134ef0398398b1ccff9d842935b9f31358c9103bdc71406632d1a7fa + languageName: node + linkType: hard + "peek-readable@npm:^5.0.0": version: 5.0.0 resolution: "peek-readable@npm:5.0.0" @@ -12790,6 +12891,29 @@ __metadata: languageName: node linkType: hard +"react-pdf@npm:^8.0.0": + version: 8.0.0 + resolution: "react-pdf@npm:8.0.0" + dependencies: + clsx: ^2.0.0 + dequal: ^2.0.3 + make-cancellable-promise: ^1.3.1 + make-event-props: ^1.6.0 + merge-refs: ^1.2.1 + pdfjs-dist: 3.11.174 + tiny-invariant: ^1.0.0 + warning: ^4.0.0 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 493b9292fe488d7a5ab7d3507bfaec76cfbd2a6dafc4b54a7bec520fc1f8ae140bb32865a463cffe68ac35574a4104eb2eaf37118569aa0241e87a2c08ee6084 + languageName: node + linkType: hard + "react-player@npm:^2.10.1": version: 2.12.0 resolution: "react-player@npm:2.12.0" @@ -13651,6 +13775,17 @@ __metadata: languageName: node linkType: hard +"simple-get@npm:^3.0.3": + version: 3.1.1 + resolution: "simple-get@npm:3.1.1" + dependencies: + decompress-response: ^4.2.0 + once: ^1.3.1 + simple-concat: ^1.0.0 + checksum: 80195e70bf171486e75c31e28e5485468195cc42f85940f8b45c4a68472160144d223eb4d07bc82ef80cb974b7c401db021a540deb2d34ac4b3b8883da2d6401 + languageName: node + linkType: hard + "simple-get@npm:^4.0.0, simple-get@npm:^4.0.1": version: 4.0.1 resolution: "simple-get@npm:4.0.1" @@ -14526,6 +14661,13 @@ __metadata: languageName: node linkType: hard +"tiny-invariant@npm:^1.0.0": + version: 1.3.3 + resolution: "tiny-invariant@npm:1.3.3" + checksum: 5e185c8cc2266967984ce3b352a4e57cb89dad5a8abb0dea21468a6ecaa67cd5bb47a3b7a85d08041008644af4f667fb8b6575ba38ba5fb00b3b5068306e59fe + languageName: node + linkType: hard + "tinylogic@npm:^2.0.0": version: 2.0.0 resolution: "tinylogic@npm:2.0.0" @@ -15402,6 +15544,15 @@ __metadata: languageName: node linkType: hard +"warning@npm:^4.0.0": + version: 4.0.3 + resolution: "warning@npm:4.0.3" + dependencies: + loose-envify: ^1.0.0 + checksum: 4f2cb6a9575e4faf71ddad9ad1ae7a00d0a75d24521c193fa464f30e6b04027bd97aa5d9546b0e13d3a150ab402eda216d59c1d0f2d6ca60124d96cd40dfa35c + languageName: node + linkType: hard + "watchpack@npm:^2.3.1": version: 2.4.0 resolution: "watchpack@npm:2.4.0"