From c89b109025417d9ca090323c785bb956c40069f9 Mon Sep 17 00:00:00 2001 From: Richard Dominick <34370238+RichDom2185@users.noreply.github.com> Date: Mon, 14 Jul 2025 23:52:46 +0800 Subject: [PATCH 01/16] Upgrade React ecosystem dependencies to v19 --- package.json | 14 ++-- yarn.lock | 195 +++++++++++++++++++++++++-------------------------- 2 files changed, 104 insertions(+), 105 deletions(-) diff --git a/package.json b/package.json index d7ef31c115..ed9746a4fe 100644 --- a/package.json +++ b/package.json @@ -72,16 +72,16 @@ "phaser": "~3.90.0", "query-string": "^9.0.0", "re-resizable": "^6.9.9", - "react": "^18.3.1", + "react": "^19.1.0", "react-ace": "^14.0.0", "react-copy-to-clipboard": "^5.1.0", "react-debounce-render": "^8.0.2", - "react-dom": "^18.3.1", + "react-dom": "^19.1.0", "react-drag-drop-files": "^3.0.0", "react-draggable": "^4.4.5", "react-dropzone": "^14.2.3", "react-i18next": "^15.0.0", - "react-konva": "^18.2.10", + "react-konva": "^19.0.7", "react-latex-next": "^3.0.0", "react-mde": "^11.5.0", "react-papaparse": "^4.0.2", @@ -138,12 +138,12 @@ "@types/js-cookie": "^3.0.6", "@types/js-yaml": "^4.0.5", "@types/lodash": "^4.14.195", - "@types/react": "^18.3.3", + "@types/react": "^19.1.8", "@types/react-copy-to-clipboard": "^5.0.4", - "@types/react-dom": "^18.3.0", + "@types/react-dom": "^19.1.6", "@types/react-redux": "^7.1.24", "@types/react-syntax-highlighter": "^15.5.7", - "@types/react-test-renderer": "^18.0.0", + "@types/react-test-renderer": "^19.1.0", "@types/redux-mock-store": "^1.0.3", "@types/showdown": "^2.0.1", "@types/xml2js": "^0.4.11", @@ -171,7 +171,7 @@ "prettier": "^3.3.3", "process": "^0.11.10", "react-error-overlay": "^6.0.11", - "react-test-renderer": "^18.2.0", + "react-test-renderer": "^19.1.0", "redux-saga-test-plan": "^4.0.6", "resize-observer-polyfill": "^1.5.1", "sass": "^1.63.6", diff --git a/yarn.lock b/yarn.lock index b5ad9e121a..2846bcdbdf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4278,21 +4278,30 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:^18.3.0": - version: 18.3.7 - resolution: "@types/react-dom@npm:18.3.7" +"@types/react-dom@npm:^19.1.6": + version: 19.1.6 + resolution: "@types/react-dom@npm:19.1.6" peerDependencies: - "@types/react": ^18.0.0 - checksum: 10c0/8bd309e2c3d1604a28a736a24f96cbadf6c05d5288cfef8883b74f4054c961b6b3a5e997fd5686e492be903c8f3380dba5ec017eff3906b1256529cd2d39603e + "@types/react": ^19.0.0 + checksum: 10c0/7ba74eee2919e3f225e898b65fdaa16e54952aaf9e3472a080ddc82ca54585e46e60b3c52018d21d4b7053f09d27b8293e9f468b85f9932ff452cd290cc131e8 languageName: node linkType: hard -"@types/react-reconciler@npm:^0.28.0, @types/react-reconciler@npm:^0.28.2": - version: 0.28.2 - resolution: "@types/react-reconciler@npm:0.28.2" - dependencies: - "@types/react": "npm:*" - checksum: 10c0/8b8819b492972f08b9975efdf59dec668094f9e9483408b84698659ac02f4966c9c082ba79e80fef723c4f46279c5c3b15a7de7fa70af00a20741a8a15890b82 +"@types/react-reconciler@npm:^0.28.9": + version: 0.28.9 + resolution: "@types/react-reconciler@npm:0.28.9" + peerDependencies: + "@types/react": "*" + checksum: 10c0/9fe71fa856aab2cd4742fe0416bdd4f5c82ecc05ef6451ee7fcb65a5efdf5fa588f5820fbe2a665b15371b0da3bfc4097f28bb6d450b9a834af2d0fc00f403bd + languageName: node + linkType: hard + +"@types/react-reconciler@npm:^0.32.0": + version: 0.32.0 + resolution: "@types/react-reconciler@npm:0.32.0" + peerDependencies: + "@types/react": "*" + checksum: 10c0/43bfbb0471811dc3aeb6e46a4724663b2bb26137a0169977f415e31c253037d53e549ed1b71d0f9bec9fe9dda5c22e7be9e55dcba564bf3eaf01ed19e950874e languageName: node linkType: hard @@ -4317,12 +4326,12 @@ __metadata: languageName: node linkType: hard -"@types/react-test-renderer@npm:^18.0.0": - version: 18.3.1 - resolution: "@types/react-test-renderer@npm:18.3.1" +"@types/react-test-renderer@npm:^19.1.0": + version: 19.1.0 + resolution: "@types/react-test-renderer@npm:19.1.0" dependencies: - "@types/react": "npm:^18" - checksum: 10c0/9fc8467ff1a3f14be6cc3498a75fc788d2c92c0fffa7bf21269ed5d9d82db9195bf2178ddc42ea16a0836995c1b77601c6be8abb27bd1864668c418c6d0e5a3b + "@types/react": "npm:*" + checksum: 10c0/799654e430df10aeaf267d71507fb64ec151359ead7e3774111bfd4abce7e0911dba461811195c06c22a6d17496ea92537d3185320ff4112fe29954cad1b9152 languageName: node linkType: hard @@ -4335,7 +4344,7 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:^18, @types/react@npm:^18.3.3": +"@types/react@npm:*": version: 18.3.23 resolution: "@types/react@npm:18.3.23" dependencies: @@ -4345,6 +4354,15 @@ __metadata: languageName: node linkType: hard +"@types/react@npm:^19.1.8": + version: 19.1.8 + resolution: "@types/react@npm:19.1.8" + dependencies: + csstype: "npm:^3.0.2" + checksum: 10c0/4908772be6dc941df276931efeb0e781777fa76e4d5d12ff9f75eb2dcc2db3065e0100efde16fde562c5bafa310cc8f50c1ee40a22640459e066e72cd342143e + languageName: node + linkType: hard + "@types/redux-mock-store@npm:^1.0.3": version: 1.5.0 resolution: "@types/redux-mock-store@npm:1.5.0" @@ -7783,12 +7801,12 @@ __metadata: "@types/js-cookie": "npm:^3.0.6" "@types/js-yaml": "npm:^4.0.5" "@types/lodash": "npm:^4.14.195" - "@types/react": "npm:^18.3.3" + "@types/react": "npm:^19.1.8" "@types/react-copy-to-clipboard": "npm:^5.0.4" - "@types/react-dom": "npm:^18.3.0" + "@types/react-dom": "npm:^19.1.6" "@types/react-redux": "npm:^7.1.24" "@types/react-syntax-highlighter": "npm:^15.5.7" - "@types/react-test-renderer": "npm:^18.0.0" + "@types/react-test-renderer": "npm:^19.1.0" "@types/redux-mock-store": "npm:^1.0.3" "@types/showdown": "npm:^2.0.1" "@types/xml2js": "npm:^0.4.11" @@ -7844,17 +7862,17 @@ __metadata: process: "npm:^0.11.10" query-string: "npm:^9.0.0" re-resizable: "npm:^6.9.9" - react: "npm:^18.3.1" + react: "npm:^19.1.0" react-ace: "npm:^14.0.0" react-copy-to-clipboard: "npm:^5.1.0" react-debounce-render: "npm:^8.0.2" - react-dom: "npm:^18.3.1" + react-dom: "npm:^19.1.0" react-drag-drop-files: "npm:^3.0.0" react-draggable: "npm:^4.4.5" react-dropzone: "npm:^14.2.3" react-error-overlay: "npm:^6.0.11" react-i18next: "npm:^15.0.0" - react-konva: "npm:^18.2.10" + react-konva: "npm:^19.0.7" react-latex-next: "npm:^3.0.0" react-mde: "npm:^11.5.0" react-papaparse: "npm:^4.0.2" @@ -7865,7 +7883,7 @@ __metadata: react-simple-keyboard: "npm:^3.6.27" react-sortable-hoc: "npm:^2.0.0" react-syntax-highlighter: "npm:^15.5.0" - react-test-renderer: "npm:^18.2.0" + react-test-renderer: "npm:^19.1.0" react-textarea-autosize: "npm:^8.5.2" redux-mock-store: "npm:^1.5.4" redux-saga: "npm:^1.2.3" @@ -9193,14 +9211,14 @@ __metadata: languageName: node linkType: hard -"its-fine@npm:^1.1.1": - version: 1.1.1 - resolution: "its-fine@npm:1.1.1" +"its-fine@npm:^2.0.0": + version: 2.0.0 + resolution: "its-fine@npm:2.0.0" dependencies: - "@types/react-reconciler": "npm:^0.28.0" + "@types/react-reconciler": "npm:^0.28.9" peerDependencies: - react: ">=18.0" - checksum: 10c0/66059a859720de19563a8abdb10f06eb6117df1897d984a54b0a71ab9dc02da3dc366428b1f0c5e085740962abb7d6ccc0b8c3e00725b0a2120c846f352adffc + react: ^19.0.0 + checksum: 10c0/1ff1ff3257c0c7eb115c9c26cf0506eb84162edc1a63d3136780d146f7c7833298b240d0fcb46888909773f1a7d16539e0c03f2482cff1a5a502d6436686fe21 languageName: node linkType: hard @@ -10186,7 +10204,7 @@ __metadata: languageName: node linkType: hard -"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": +"loose-envify@npm:^1.0.0, loose-envify@npm:^1.4.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" dependencies: @@ -11989,15 +12007,14 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:^18.3.1": - version: 18.3.1 - resolution: "react-dom@npm:18.3.1" +"react-dom@npm:^19.1.0": + version: 19.1.0 + resolution: "react-dom@npm:19.1.0" dependencies: - loose-envify: "npm:^1.1.0" - scheduler: "npm:^0.23.2" + scheduler: "npm:^0.26.0" peerDependencies: - react: ^18.3.1 - checksum: 10c0/a752496c1941f958f2e8ac56239172296fcddce1365ce45222d04a1947e0cc5547df3e8447f855a81d6d39f008d7c32eab43db3712077f09e3f67c4874973e85 + react: ^19.1.0 + checksum: 10c0/3e26e89bb6c67c9a6aa86cb888c7a7f8258f2e347a6d2a15299c17eb16e04c19194e3452bc3255bd34000a61e45e2cb51e46292392340432f133e5a5d2dfb5fc languageName: node linkType: hard @@ -12092,13 +12109,6 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0": - version: 18.2.0 - resolution: "react-is@npm:18.2.0" - checksum: 10c0/6eb5e4b28028c23e2bfcf73371e72cd4162e4ac7ab445ddae2afe24e347a37d6dc22fae6e1748632cd43c6d4f9b8f86dcf26bf9275e1874f436d129952528ae0 - languageName: node - linkType: hard - "react-is@npm:^17.0.1": version: 17.0.2 resolution: "react-is@npm:17.0.2" @@ -12106,26 +12116,33 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^18.3.1": - version: 18.3.1 - resolution: "react-is@npm:18.3.1" - checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 +"react-is@npm:^18.0.0": + version: 18.2.0 + resolution: "react-is@npm:18.2.0" + checksum: 10c0/6eb5e4b28028c23e2bfcf73371e72cd4162e4ac7ab445ddae2afe24e347a37d6dc22fae6e1748632cd43c6d4f9b8f86dcf26bf9275e1874f436d129952528ae0 + languageName: node + linkType: hard + +"react-is@npm:^19.1.0": + version: 19.1.0 + resolution: "react-is@npm:19.1.0" + checksum: 10c0/b6c6cadd172d5d39f66d493700d137a5545c294a62ce0f8ec793d59794c97d2bed6bad227626f16bd0e90004ed7fdc8ed662a004e6edcf5d2b7ecb6e3040ea6b languageName: node linkType: hard -"react-konva@npm:^18.2.10": - version: 18.2.12 - resolution: "react-konva@npm:18.2.12" +"react-konva@npm:^19.0.7": + version: 19.0.7 + resolution: "react-konva@npm:19.0.7" dependencies: - "@types/react-reconciler": "npm:^0.28.2" - its-fine: "npm:^1.1.1" - react-reconciler: "npm:~0.29.0" - scheduler: "npm:^0.23.0" + "@types/react-reconciler": "npm:^0.32.0" + its-fine: "npm:^2.0.0" + react-reconciler: "npm:0.32.0" + scheduler: "npm:0.26.0" peerDependencies: konva: ^8.0.1 || ^7.2.5 || ^9.0.0 - react: ">=18.0.0" - react-dom: ">=18.0.0" - checksum: 10c0/cc0d57496651c361addcb8acf3e92fec1d67555a44ecab52c3d1a8df4c4923b02059ad266869f3868b44e0faed5585fe31770a2978c312726a2634f9db3b9a73 + react: ^18.3.1 || ^19.0.0 + react-dom: ^18.3.1 || ^19.0.0 + checksum: 10c0/035e127be48518a6fd3a9d1fc83f10df229323ae2d71fd1dd74b3e0b10f067e8bcd80bafa4af40390d7404f5defe62db50a33d20867fd86f42c691be8a130c60 languageName: node linkType: hard @@ -12196,15 +12213,14 @@ __metadata: languageName: node linkType: hard -"react-reconciler@npm:~0.29.0": - version: 0.29.0 - resolution: "react-reconciler@npm:0.29.0" +"react-reconciler@npm:0.32.0": + version: 0.32.0 + resolution: "react-reconciler@npm:0.32.0" dependencies: - loose-envify: "npm:^1.1.0" - scheduler: "npm:^0.23.0" + scheduler: "npm:^0.26.0" peerDependencies: - react: ^18.2.0 - checksum: 10c0/637442f98ee816b8f86586f537712a0463b53e12c0f4dec716dfdde68dfa52cef1d10138acfad194d5571296cde8715c331aa3986e538087acdc1ef83187a9b0 + react: ^19.1.0 + checksum: 10c0/ace0562d2aa99685416ac62741354706dec6df334aa64acc7ad455bd8a6f6af0068b276ad2e5412c3875388022ab13807f0b7d688fda7b2835301c110247146b languageName: node linkType: hard @@ -12295,18 +12311,6 @@ __metadata: languageName: node linkType: hard -"react-shallow-renderer@npm:^16.15.0": - version: 16.15.0 - resolution: "react-shallow-renderer@npm:16.15.0" - dependencies: - object-assign: "npm:^4.1.1" - react-is: "npm:^16.12.0 || ^17.0.0 || ^18.0.0" - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - checksum: 10c0/c194d741792e86043a4ae272f7353c1cb9412bc649945c4220c6a101a6ea5410cceb3d65d5a4d750f11a24f7426e8eec7977e8a4e3ad5d3ee235ca2b18166fa8 - languageName: node - linkType: hard - "react-simple-keyboard@npm:^3.6.27": version: 3.8.93 resolution: "react-simple-keyboard@npm:3.8.93" @@ -12362,16 +12366,15 @@ __metadata: languageName: node linkType: hard -"react-test-renderer@npm:^18.2.0": - version: 18.3.1 - resolution: "react-test-renderer@npm:18.3.1" +"react-test-renderer@npm:^19.1.0": + version: 19.1.0 + resolution: "react-test-renderer@npm:19.1.0" dependencies: - react-is: "npm:^18.3.1" - react-shallow-renderer: "npm:^16.15.0" - scheduler: "npm:^0.23.2" + react-is: "npm:^19.1.0" + scheduler: "npm:^0.26.0" peerDependencies: - react: ^18.3.1 - checksum: 10c0/c633558ef9af33bc68f0c4dbb5163a004c4fb9eade7bd0a7cfc0355fb367f36bd9d96533c90b7e85a146be6c525113a15f58683d269e0177ad77e2b04d4fe51c + react: ^19.1.0 + checksum: 10c0/34ed4a37ba8b0beb96c048de6ff28574f018a18dd1042c24f8f46142d48eb5b27f82ff7c2823d082932fd3983c5a3529ab8cc8f15191d4306df0082f9f84678f languageName: node linkType: hard @@ -12443,12 +12446,10 @@ __metadata: languageName: node linkType: hard -"react@npm:^18.3.1": - version: 18.3.1 - resolution: "react@npm:18.3.1" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10c0/283e8c5efcf37802c9d1ce767f302dd569dd97a70d9bb8c7be79a789b9902451e0d16334b05d73299b20f048cbc3c7d288bbbde10b701fa194e2089c237dbea3 +"react@npm:^19.1.0": + version: 19.1.0 + resolution: "react@npm:19.1.0" + checksum: 10c0/530fb9a62237d54137a13d2cfb67a7db6a2156faed43eecc423f4713d9b20c6f2728b026b45e28fcd72e8eadb9e9ed4b089e99f5e295d2f0ad3134251bdd3698 languageName: node linkType: hard @@ -13218,12 +13219,10 @@ __metadata: languageName: node linkType: hard -"scheduler@npm:^0.23.0, scheduler@npm:^0.23.2": - version: 0.23.2 - resolution: "scheduler@npm:0.23.2" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78 +"scheduler@npm:0.26.0, scheduler@npm:^0.26.0": + version: 0.26.0 + resolution: "scheduler@npm:0.26.0" + checksum: 10c0/5b8d5bfddaae3513410eda54f2268e98a376a429931921a81b5c3a2873aab7ca4d775a8caac5498f8cbc7d0daeab947cf923dbd8e215d61671f9f4e392d34356 languageName: node linkType: hard From ad2e74332d67527cd9dfbdabb187650744aeb530 Mon Sep 17 00:00:00 2001 From: Richard Dominick <34370238+RichDom2185@users.noreply.github.com> Date: Tue, 15 Jul 2025 00:02:49 +0800 Subject: [PATCH 02/16] Fix some breaking changes --- src/features/cseMachine/components/Text.tsx | 2 +- .../components/values/ContValue.tsx | 2 +- .../cseMachine/components/values/FnValue.tsx | 2 +- .../components/values/GlobalFnValue.tsx | 2 +- src/features/sicp/parser/ParseJson.tsx | 25 ++++++++++++++++--- .../AssessmentConfigPanel.tsx | 2 +- .../StoriesUserConfigPanel.tsx | 12 ++++----- .../userConfigPanel/UserConfigPanel.tsx | 12 ++++----- src/pages/sicp/Sicp.tsx | 14 +++++++++-- .../sicp/subcomponents/chatbot/ChatBox.tsx | 2 +- 10 files changed, 49 insertions(+), 26 deletions(-) diff --git a/src/features/cseMachine/components/Text.tsx b/src/features/cseMachine/components/Text.tsx index d979391885..2629cb70de 100644 --- a/src/features/cseMachine/components/Text.tsx +++ b/src/features/cseMachine/components/Text.tsx @@ -49,7 +49,7 @@ export class Text extends Visible implements IHoverable { readonly fullStr: string; // full string representation of data readonly options: TextOptions = defaultOptions; - readonly labelRef: React.RefObject