Skip to content

Commit 5003f52

Browse files
use react-ansi instead of ansi-to-react (#56)
* use react-ansi instead of ansi-to-react * feat: auto scroll logger Co-authored-by: Priyanshu Dangi <[email protected]>
1 parent ebec916 commit 5003f52

File tree

5 files changed

+84
-23
lines changed

5 files changed

+84
-23
lines changed

Diff for: package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@
3636
"@types/grecaptcha": "^3.0.3",
3737
"@types/react-syntax-highlighter": "^13.5.2",
3838
"ace-builds": "^1.4.14",
39-
"ansi-to-react": "^6.1.6",
4039
"bootstrap": "5.1.3",
4140
"lit": "^2.1.1",
4241
"phaser": "^3.55.2",
4342
"phaser3-rex-plugins": "^1.1.66",
4443
"react": "^17.0.2",
4544
"react-ace": "^9.5.0",
45+
"react-ansi": "^3.0.2",
4646
"react-bootstrap": "^2.1.2",
4747
"react-dom": "^17.0.2",
4848
"react-flags-select": "^2.1.2",
@@ -151,5 +151,8 @@
151151
"prettier --write"
152152
]
153153
},
154+
"resolutions": {
155+
"react-virtualized": "git+https://[email protected]/remorses/react-virtualized-fixed-import.git#9.22.3"
156+
},
154157
"packageManager": "[email protected]"
155158
}

Diff for: packages/renderer/src/scenes/TileMap.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ export class TileMap extends Phaser.Scene {
376376
}, Parameters.timePerTurn) as unknown as number;
377377
break;
378378
} else if (instruction instanceof Instructions.Print) {
379-
DebugLog.log += instruction.message + '\n';
379+
DebugLog.log += `${instruction.message}\n`;
380380
DebugLog.updateLogCallback(DebugLog.log);
381381
} else if (instruction instanceof Instructions.End) {
382382
return;

Diff for: src/components/Terminal/Terminal.tsx

+26-5
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,44 @@
1-
import Ansi from 'ansi-to-react';
2-
import { useState } from 'react';
1+
import { useEffect, useRef, useState } from 'react';
32
import { RendererUtils } from '@codecharacter-2022/renderer';
3+
import ReactAnsi from 'react-ansi';
44

55
export default function Terminal(): JSX.Element {
66
const [log, setLog] = useState('');
7+
const ref = useRef<HTMLDivElement>(null);
78

89
RendererUtils.setUpdateLogCallback((log: string) => {
910
setLog(log);
1011
});
1112

13+
useEffect(() => {
14+
const element = document.querySelector('#log > div:nth-child(1) > div');
15+
if (
16+
element &&
17+
element?.scrollTop + element?.clientHeight + 50 > element?.scrollHeight
18+
) {
19+
element?.scrollTo(0, element.scrollHeight);
20+
}
21+
}, [log]);
22+
1223
return (
1324
<div
25+
ref={ref}
1426
style={{
15-
width: '100%',
1627
height: '100%',
17-
backgroundColor: '#000',
28+
width: '100%',
1829
}}
1930
>
20-
<Ansi>{log}</Ansi>
31+
<ReactAnsi
32+
style={{
33+
height: '100%',
34+
width: '100%',
35+
}}
36+
log={log}
37+
bodyStyle={{ height: '100%', overflowY: 'auto' }}
38+
logStyle={{ height: '100%' }}
39+
autoScroll={true}
40+
virtual
41+
/>
2142
</div>
2243
);
2344
}

Diff for: src/store/rendererLogs/logSlice.ts

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { RendererUtils } from '@codecharacter-2022/renderer';
12
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
23
import { RootState } from '../store';
34
import { getLogs } from './logAPI';
@@ -11,6 +12,9 @@ export const getLogAction = createAsyncThunk(
1112
async (id: string) => {
1213
try {
1314
const logs = await getLogs(id);
15+
setTimeout(() => {
16+
RendererUtils.loadLog(logs);
17+
}, 2000);
1418
return logs;
1519
} catch (error) {
1620
throw error;

Diff for: yarn.lock

+49-16
Original file line numberDiff line numberDiff line change
@@ -1698,7 +1698,6 @@ __metadata:
16981698
"@typescript-eslint/parser": ^4.33.0
16991699
"@vitejs/plugin-react": ^1.0.7
17001700
ace-builds: ^1.4.14
1701-
ansi-to-react: ^6.1.6
17021701
babel-loader: ^8.2.3
17031702
bootstrap: 5.1.3
17041703
concurrently: ^5.3.0
@@ -1718,6 +1717,7 @@ __metadata:
17181717
prettier: ^2.4.1
17191718
react: ^17.0.2
17201719
react-ace: ^9.5.0
1720+
react-ansi: ^3.0.2
17211721
react-bootstrap: ^2.1.2
17221722
react-dom: ^17.0.2
17231723
react-flags-select: ^2.1.2
@@ -4743,7 +4743,7 @@ __metadata:
47434743
languageName: node
47444744
linkType: hard
47454745

4746-
"anser@npm:^1.4.1":
4746+
"anser@npm:^1.4.8":
47474747
version: 1.4.10
47484748
resolution: "anser@npm:1.4.10"
47494749
checksum: 3823c64f8930d3d97f36e56cdf646fa6351f1227e25eee70c3a17697447cae4238fc3a309bb3bc2003cf930687fa72aed71426dbcf3c0a15565e120a7fee5507
@@ -4848,19 +4848,6 @@ __metadata:
48484848
languageName: node
48494849
linkType: hard
48504850

4851-
"ansi-to-react@npm:^6.1.6":
4852-
version: 6.1.6
4853-
resolution: "ansi-to-react@npm:6.1.6"
4854-
dependencies:
4855-
anser: ^1.4.1
4856-
escape-carriage: ^1.3.0
4857-
peerDependencies:
4858-
react: ^16.3.2 || ^17.0.0
4859-
react-dom: ^16.3.2 || ^17.0.0
4860-
checksum: c626cd36d4f53e98c2305f5d6c1ac6b32f59a9286a11458a64e05ff93e8248ca5b5785401b6ee4c6cd0af1a4a0bc94315c37696480c1906fb905e14a043f4652
4861-
languageName: node
4862-
linkType: hard
4863-
48644851
"anymatch@npm:^2.0.0":
48654852
version: 2.0.0
48664853
resolution: "anymatch@npm:2.0.0"
@@ -6260,6 +6247,13 @@ __metadata:
62606247
languageName: node
62616248
linkType: hard
62626249

6250+
"clsx@npm:^1.0.4":
6251+
version: 1.1.1
6252+
resolution: "clsx@npm:1.1.1"
6253+
checksum: ff052650329773b9b245177305fc4c4dc3129f7b2be84af4f58dc5defa99538c61d4207be7419405a5f8f3d92007c954f4daba5a7b74e563d5de71c28c830063
6254+
languageName: node
6255+
linkType: hard
6256+
62636257
"co@npm:^4.6.0":
62646258
version: 4.6.0
62656259
resolution: "co@npm:4.6.0"
@@ -7216,7 +7210,7 @@ __metadata:
72167210
languageName: node
72177211
linkType: hard
72187212

7219-
"dom-helpers@npm:^5.0.1, dom-helpers@npm:^5.2.0, dom-helpers@npm:^5.2.1":
7213+
"dom-helpers@npm:^5.0.1, dom-helpers@npm:^5.1.3, dom-helpers@npm:^5.2.0, dom-helpers@npm:^5.2.1":
72207214
version: 5.2.1
72217215
resolution: "dom-helpers@npm:5.2.1"
72227216
dependencies:
@@ -9941,6 +9935,13 @@ __metadata:
99419935
languageName: node
99429936
linkType: hard
99439937

9938+
"immer@npm:^7.0.8":
9939+
version: 7.0.15
9940+
resolution: "immer@npm:7.0.15"
9941+
checksum: d79deb76f8bce71fff95bfbfa6a614bf55dd1f500eea189d3dcc587d94ed911b048e875c810b4e1214b3a6a7c8db148628e0c62e6fd8a649e84002cba0053e34
9942+
languageName: node
9943+
linkType: hard
9944+
99449945
"immer@npm:^9.0.7":
99459946
version: 9.0.12
99469947
resolution: "immer@npm:9.0.12"
@@ -13997,6 +13998,21 @@ __metadata:
1399713998
languageName: node
1399813999
linkType: hard
1399914000

14001+
"react-ansi@npm:^3.0.2":
14002+
version: 3.0.2
14003+
resolution: "react-ansi@npm:3.0.2"
14004+
dependencies:
14005+
anser: ^1.4.8
14006+
escape-carriage: ^1.3.0
14007+
immer: ^7.0.8
14008+
react-virtualized: ^9.22.3
14009+
peerDependencies:
14010+
react: ^15.0.0 || ^16.0.0 || ^17.0.0
14011+
react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0
14012+
checksum: 9448a41a9e570ba57a5bc026952582343fb455ed82b744441096d1f72de96e70cfe5715b155c296f2c7e37513db441483d60b87a939fae14f7a5eae256a1a8bd
14013+
languageName: node
14014+
linkType: hard
14015+
1400014016
"react-async-script@npm:^1.1.1":
1400114017
version: 1.2.0
1400214018
resolution: "react-async-script@npm:1.2.0"
@@ -14374,6 +14390,23 @@ __metadata:
1437414390
languageName: node
1437514391
linkType: hard
1437614392

14393+
"react-virtualized@git+https://[email protected]/remorses/react-virtualized-fixed-import.git#9.22.3":
14394+
version: 9.22.3
14395+
resolution: "react-virtualized@https://[email protected]/remorses/react-virtualized-fixed-import.git#commit=6e416ee8aa6ac2087cecc68f68371d8fe561d9a4"
14396+
dependencies:
14397+
"@babel/runtime": ^7.7.2
14398+
clsx: ^1.0.4
14399+
dom-helpers: ^5.1.3
14400+
loose-envify: ^1.4.0
14401+
prop-types: ^15.7.2
14402+
react-lifecycles-compat: ^3.0.4
14403+
peerDependencies:
14404+
react: ^15.3.0 || ^16.0.0-alpha
14405+
react-dom: ^15.3.0 || ^16.0.0-alpha
14406+
checksum: 57ebda833ec4424779288735b5753ae1cf2cf8765e1cee9821b4ef1051eb1ad70f8a954121368baf0cf8a95f8dce2f045be9b44898c87bf1df859bdf6274c48f
14407+
languageName: node
14408+
linkType: hard
14409+
1437714410
"react@npm:^17.0.2":
1437814411
version: 17.0.2
1437914412
resolution: "react@npm:17.0.2"

0 commit comments

Comments
 (0)