From 6d85b2e5dd14d6e627c208c8b36bcabd902bfd56 Mon Sep 17 00:00:00 2001
From: nils <48135649+Nilstrieb@users.noreply.github.com>
Date: Wed, 8 Feb 2023 21:52:51 +0100
Subject: [PATCH] get rid of react
---
.gitignore | 1 +
README.md | 2 +-
index.html | 19 +
package.json | 34 +-
public/favicon.ico | Bin 3870 -> 0 bytes
public/index.html | 43 -
public/logo192.png | Bin 5347 -> 0 bytes
public/logo512.png | Bin 9664 -> 0 bytes
public/manifest.json | 25 -
public/robots.txt | 3 -
src/App.tsx | 31 -
src/MainDraw.ts | 75 +
src/Particles.ts | 116 +
src/Shapes.ts | 39 +
src/classes/Particle.ts | 100 +
src/classes/SimObject.ts | 7 +
src/classes/Vector.ts | 42 +
src/draw/MainDraw.ts | 46 -
src/draw/Particles.ts | 94 -
src/draw/Shapes.ts | 20 -
src/draw/classes/Particle.ts | 85 -
src/draw/classes/SimObject.ts | 7 -
src/draw/classes/Vector.ts | 42 -
src/draw/ui/MouseChargeButton.ts | 76 -
src/draw/ui/PauseButton.ts | 5 -
src/draw/ui/main/Button.ts | 24 -
src/draw/ui/main/UI.ts | 57 -
src/draw/ui/main/UIComponent.ts | 53 -
src/draw/ui/toolbar/Toolbar.ts | 130 -
src/index.tsx | 10 -
src/react-app-env.d.ts | 1 -
src/ui/MouseChargeButton.ts | 95 +
src/ui/PauseButton.ts | 3 +
src/ui/main/Button.ts | 31 +
src/ui/main/UI.ts | 62 +
src/ui/main/UIComponent.ts | 54 +
src/ui/toolbar/Toolbar.ts | 151 +
tsconfig.json | 13 +-
yarn.lock | 10701 +----------------------------
39 files changed, 806 insertions(+), 11491 deletions(-)
create mode 100644 index.html
delete mode 100644 public/favicon.ico
delete mode 100644 public/index.html
delete mode 100644 public/logo192.png
delete mode 100644 public/logo512.png
delete mode 100644 public/manifest.json
delete mode 100644 public/robots.txt
delete mode 100644 src/App.tsx
create mode 100644 src/MainDraw.ts
create mode 100644 src/Particles.ts
create mode 100644 src/Shapes.ts
create mode 100644 src/classes/Particle.ts
create mode 100644 src/classes/SimObject.ts
create mode 100644 src/classes/Vector.ts
delete mode 100644 src/draw/MainDraw.ts
delete mode 100644 src/draw/Particles.ts
delete mode 100644 src/draw/Shapes.ts
delete mode 100644 src/draw/classes/Particle.ts
delete mode 100644 src/draw/classes/SimObject.ts
delete mode 100644 src/draw/classes/Vector.ts
delete mode 100644 src/draw/ui/MouseChargeButton.ts
delete mode 100644 src/draw/ui/PauseButton.ts
delete mode 100644 src/draw/ui/main/Button.ts
delete mode 100644 src/draw/ui/main/UI.ts
delete mode 100644 src/draw/ui/main/UIComponent.ts
delete mode 100644 src/draw/ui/toolbar/Toolbar.ts
delete mode 100644 src/index.tsx
delete mode 100644 src/react-app-env.d.ts
create mode 100644 src/ui/MouseChargeButton.ts
create mode 100644 src/ui/PauseButton.ts
create mode 100644 src/ui/main/Button.ts
create mode 100644 src/ui/main/UI.ts
create mode 100644 src/ui/main/UIComponent.ts
create mode 100644 src/ui/toolbar/Toolbar.ts
diff --git a/.gitignore b/.gitignore
index ff7c608..bd74902 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,7 @@
# production
/build
+/out
# misc
.DS_Store
diff --git a/README.md b/README.md
index 459a659..322af83 100644
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
-it's react because I'm soo lazy to use vanilla ts
\ No newline at end of file
+it's react because I'm soo lazy to use vanilla ts
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..dd13dad
--- /dev/null
+++ b/index.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+ Redox
+
+
+
+
+
+
+
+
diff --git a/package.json b/package.json
index 162a1c7..9564d04 100644
--- a/package.json
+++ b/package.json
@@ -2,42 +2,14 @@
"name": "redox",
"version": "0.1.0",
"private": true,
- "dependencies": {
- "@testing-library/jest-dom": "^5.16.5",
- "@testing-library/react": "^13.4.0",
- "@testing-library/user-event": "^14.4.3",
- "@types/jest": "^29.4.0",
- "@types/node": "^18.13.0",
- "@types/react": "^18.0.27",
- "@types/react-dom": "^18.0.10",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-scripts": "5.0.1",
- "typescript": "^4.9.5",
- "web-vitals": "^3.1.1"
+ "devDependencies": {
+ "prettier": "^2.8.4",
+ "typescript": "^4.9.5"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
- },
- "eslintConfig": {
- "extends": [
- "react-app",
- "react-app/jest"
- ]
- },
- "browserslist": {
- "production": [
- ">0.2%",
- "not dead",
- "not op_mini all"
- ],
- "development": [
- "last 1 chrome version",
- "last 1 firefox version",
- "last 1 safari version"
- ]
}
}
diff --git a/public/favicon.ico b/public/favicon.ico
deleted file mode 100644
index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 3870
zcmZQzU}Run5D);-3Ji}K85rCc7#JiZAbcKX1_n(g1_lKM2;Y*Kfx(oOfx*E6!r#Eg
zz>vqmz|a}s=g!L|#l^tD!0YMZ62!p3AOOM~%nS?+8oK4KBa+ObQ@v-d^PaWd&^OdFz1TQ7#&hy=tMn3e17nBk
z?y#L#LbjZDtnCfkea)e=(<~;*$7h=vb?jYCLgQ4mb$u6X^PaIzRa?i%KSJBa(Pz#kWi>UIwi&8A
zdY)5PmVF8N#=yY9S`y?J?D_1u*OSx(smmA`7*=|^IEGX(`u1&&a&_cs`G0dW=eu{R
zK?~pCe;5*yaooLix6Z+JM{SumiCwCHm-{yDZEjxLB*$qgkJ{}NnU|&S`r?tkcY^Ev
z{yST1nK;?*?*7}pYfrX7itw-H>%H;?r_VfR{LDwmYv+R5XRiJUY*%^o{Ky{pw6v`{
zFB?oVEtw?G%wO-ZLPkH=iK(r<{Op}_YZu-d+GoAfPsO5!PC{xWt~$(6P75J0HqXg6klI?_7npHV=DG2hQzs1P?X=IonF&c
z8wW*uO<$vFY8iR(o`H9;Nq9ow>LWgLHmPds8h8b1nps(;mpC^~R#H~BFKY|ke$l?X
z%_gr}O;qP;|zU6jYDFijz037ygXw69k=dzx=!u^D-M`Nr|LMknntDg
zFW;~0zjVv}_!FCLPKzzOTPBm*`-*K-@8?7@Gcm_=`+CG#ewQt(W_LKp&fu!f
za4&_y^Qz)=nR#!e6c|1@Prnk<&HXQ(L59KbkgLXdR*{dvfyGjfGI@{mw?_TnE*8eN
zlbeC*g67L~#m-e3=Y9$>m9W0trJGqhW2@j+o2&Ms+xl~yq7sj6F{yUB{HSMle5%FL
z%Hxe|56BzO)11H5enXnIh2CSCB_(HUpIY;AT0J&3N~`yddQ+bx^mE0HS!XTv<|#K{
zVsboKc;?q_F*f;ii^KjmCfG7FtE@R>AHQwiI@T+NzRxG$bLDW#0y;EP~&2-&pHlfBB35_oj&am8ifAm9?e2VF$zL~S_
z&!r|s?Z4NNsdxL?OdbKrH-+a~v<){f)*k9H{mH=a{&~s@_o?T95XcJ(3=9kk;Jo0n
zr0W<11EV7-FEB7LKoUPz(kLh@Y}d8;D_=slU$iZ1P|?s-H!_Vq_tv?2s)0|iO@3{}
zfjbfVZyR_8+7{Hgv`n+fs}9?B)wO-5MM{4BmCvpnv)sDpc}!etnNkpc^{dB(C7zR4
zxb@68i%w0r_C4YH51+Z4_1%5rFMkT%aarBKC}8D5P-aL*N!fRgJpTCWhMk_e`VZy=7H1U>w;Sg}BoJRqZ!5x)y`bzuD|lYw@ni6&GtNzu
zb?ltAENmhU-c7vqJMrdE-}zg$Z5$JC{)#woM_E-hWa|Z=d0T7?>+MQgyk~Dnxc1Gl
zw%2F&MvIhu+oA?lZ5@Zoj<^f&gEyVlG_|xXYzSC+Fm(GRC1sU>Rfl3uy)f_!3|w_s
zNm)5``$c6nwfHMv>`I#KiW?Jd{D{Bu*)%fQ&_CQXD#g$*OxxDU&^J`u+CkslH|ESM
zEo*z@;22E{8>678_^V&FZ5?CJzteGW({XTB)73Zd4mMBB@n5#jGNr&GG1sZC-?d{_
zz={KYi*~9T7#WAe#-4j?U(s$H8t2?R)hs4GbjM{iJp-4PY3A{nL2HkBOkCg{Cqp)$HSh^`
z>z-?wTIkv_+qH9!WqPq&*Iei3DavZGx3Z)g^i=F~XRvAQQ{-SOD7Z!}EI
zRdw{Vtn9QbZ7tJ^tkO%&<1$0HU9c~2i#q-!V*l;9iys2l9`%^8SkufZZ08kq17nlW
zIM?=>dagctZob|#*Ev*m1z(rpV_;yA1eX|Eeb;|nW1I4K2Iua*Q?>u}|NMMqg3gU!
zUk=!Y^)oQA@IXqCC8xJCIx8};TzKC#t=+liKkMULtZ|h=u~&U>KlG2if92|31HThS
zXHUP~uOuzGYSkhQgD}y@8V4d(16)FM>ojuLd{%tq&2ukuv1r|vsee2#rB!dfEr0J}
zV*Q@w%fA>;zv^G0Hbv&blFo$;6@A~8=Vz_`a%)>|Z|=)a$(pgbOD46S)I7F4J?*(j
zM)szU=PoUHmY%-s_{>>vBrj-3G#q_Znpw#jc74_M?A04K#YF$H(z(H5cH>UgkxjhT
zyOnlZZ@3=u^B?2ww1W=?kDvYhcXIH#bLY=n*xt+EXZ`HO1r3Sj?r)cuI%Qu;{e4z6
zMw->UKs)!{yNCb$ZrL2@4gA32f9csz)-Rj4R5qpW7A+~c@LD>5>fgPK=f4U2z_|O;
zlVYa7f7Z|$6h=+8~?D^FX`gL
zro%g)vocKe=yTG#b!nNxTptaFIGc}$8=HL0*bBV&1xz`~v9xdHB2}fyK{`(?Sx=-I
zrv{x)G@PKpwdj7~af_RMTe@<+PjAdUwk`MepY4^IiZA%it%^Kf`g*~E^YI7X+h>07
z_^bVizw3yjV2#+%>WMS9*za$QcgYB^cS}G8sFU4!(C2Tosq3L!P*R3Ym$4%PRGM9##++td|?t&P{`nIy-G^+>cI&&Aj
zaB|-LPGuX%uCqViHMT#T<{Mz#mA
zgun6plj!%zn`ajP%p>+6E^qCz?Mt0grk^~0W6x!SWHE#9MyFm|br_fh>6TtPvNk60
z%(f>_w(Qwz7NpF3%x%_Yvr8Yh7hP>!`=)fpv)~I
z{wZx_;Ql;+4{vH_<
z?G;szXFfU>oR_<%`qr-U#G5VW=Ms-hZyQV`(fzc)M>C!uReqQYZug&Zs83!0Xl#6!^?iW@>Pl*U
ZtMWJ#1p_C
-
-
-
-
-
-
-
-
-
-
-
- React App
-
-
-
-
-
-
-
diff --git a/public/logo192.png b/public/logo192.png
deleted file mode 100644
index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 5347
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
uP5*)qO`iX0%5s~hn*Noig8yazB;NWBL2>v0
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
Q-2sVvy85}Sb4q9e0RM_kJ^%m!
diff --git a/public/manifest.json b/public/manifest.json
deleted file mode 100644
index 080d6c7..0000000
--- a/public/manifest.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "short_name": "React App",
- "name": "Create React App Sample",
- "icons": [
- {
- "src": "favicon.ico",
- "sizes": "64x64 32x32 24x24 16x16",
- "type": "image/x-icon"
- },
- {
- "src": "logo192.png",
- "type": "image/png",
- "sizes": "192x192"
- },
- {
- "src": "logo512.png",
- "type": "image/png",
- "sizes": "512x512"
- }
- ],
- "start_url": ".",
- "display": "standalone",
- "theme_color": "#000000",
- "background_color": "#ffffff"
-}
diff --git a/public/robots.txt b/public/robots.txt
deleted file mode 100644
index e9e57dc..0000000
--- a/public/robots.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# https://www.robotstxt.org/robotstxt.html
-User-agent: *
-Disallow:
diff --git a/src/App.tsx b/src/App.tsx
deleted file mode 100644
index 523180c..0000000
--- a/src/App.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import React, {useEffect, useRef} from 'react';
-import {canvasClick, draw, init, update, canvasMouseMove} from "./draw/MainDraw";
-
-let CANVAS_WIDTH = 1500;
-let CANVAS_HEIGHT = 900;
-
-function App() {
- const canvasRef = useRef(null);
-
- useEffect(() => {
- const canvas = canvasRef.current;
- if (!canvas) {
- return;
- }
- const context = canvasRef.current!.getContext("2d")!;
- init();
- const interval = setInterval(() => {
- update();
- }, 1000 / 60);
- draw(context);
- return () => clearInterval(interval);
- }, [canvasRef]);
-
- return (
-