From 9b682c8af5ab3cd547a878e15d73e92c0bde226b Mon Sep 17 00:00:00 2001 From: Philipinho <16838612+Philipinho@users.noreply.github.com> Date: Fri, 20 Oct 2023 17:12:08 +0100 Subject: [PATCH] vite * replace next with vite * disable strictmode (it interferes with collaboration in dev mode) --- client/.env.example | 2 + client/.eslintrc.cjs | 19 ++ client/.gitignore | 27 +++ client/README.md | 27 +++ client/index.html | 13 ++ {frontend => client}/package.json | 48 +++-- {frontend => client}/postcss.config.js | 0 client/public/vite.svg | 1 + client/src/App.tsx | 26 +++ client/src/assets/react.svg | 1 + client/src/components/layouts/layout.tsx | 14 ++ .../src/components/layouts}/shell.tsx | 3 - .../components/navbar/atoms/sidebar-atom.ts | 0 .../navbar/hooks/use-toggle-sidebar.ts | 0 .../src/components/navbar/navbar.module.css | 0 .../src/components/navbar/navbar.tsx | 8 +- .../components/navbar/user-button.module.css | 0 .../src/components/navbar/user-button.tsx | 2 - .../providers/tanstack-provider.tsx | 2 - .../src/components/theme-toggle.tsx | 2 - .../src/components/ui/custom-toaster.tsx | 4 +- .../features/auth/atoms/auth-tokens-atom.ts | 2 +- .../features/auth/components/login-form.tsx | 8 +- .../features/auth/components/sign-up-form.tsx | 10 +- .../src/features/auth/hooks/use-auth.ts | 8 +- .../features/auth/services/auth-service.ts | 0 .../src/features/auth/types/auth.types.ts | 0 client/src/features/editor/editor.tsx | 161 ++++++++++++++ .../editor/hooks/use-collaboration-url.ts | 6 +- client/src/features/editor/styles/editor.css | 199 ++++++++++++++++++ .../src/features/page/hooks/usePage.ts | 0 .../features/page/services/page-service.ts | 0 .../features/page/tree/atoms/tree-api-atom.ts | 0 .../page/tree/atoms/tree-data-atom.ts | 2 +- .../tree/atoms/workspace-page-order-atom.ts | 0 .../page/tree/components/fill-flex-parent.tsx | 5 +- .../page/tree/hooks/use-persistence.ts | 20 +- .../tree/hooks/use-workspace-page-order.ts | 0 .../src/features/page/tree/page-tree.tsx | 14 +- .../features/page/tree/styles/tree.module.css | 0 .../src/features/page/tree/types.ts | 0 .../src/features/page/types/page.types.ts | 0 .../src/features/search/search-spotlight.tsx | 0 .../account/settings/account-settings.tsx | 2 - .../settings/components/account-name-form.tsx | 2 - .../settings/components/change-email.tsx | 2 - .../settings/components/change-password.tsx | 2 - .../modal/atoms/settings-modal-atom.ts | 0 .../features/settings/modal/modal.module.css | 0 .../settings/modal/settings-modal.tsx | 2 - .../settings/modal/settings-sidebar.tsx | 2 - .../components/workspace-invite-form.tsx | 2 - .../components/workspace-invite-modal.tsx | 2 - .../components/workspace-invite-section.tsx | 2 - .../components/workspace-members-table.tsx | 2 - .../workspace/members/workspace-members.tsx | 2 - .../components/workspace-name-form.tsx | 2 - .../workspace/settings/workspace-settings.tsx | 2 - .../features/user/atoms/current-user-atom.ts | 0 .../features/user/hooks/use-current-user.ts | 0 .../features/user/services/user-service.ts | 0 .../src/features/user/types/user.types.ts | 0 .../src/features/user/user-provider.tsx | 2 - .../workspace/services/workspace-service.ts | 0 .../workspace/types/workspace.types.ts | 0 {frontend => client}/src/lib/api-client.ts | 2 +- {frontend => client}/src/lib/jotai-helper.ts | 0 {frontend => client}/src/lib/routes.ts | 0 client/src/main.tsx | 29 +++ .../src/pages/auth}/layout.tsx | 0 .../src/pages/auth/login.tsx | 2 - .../src/pages/auth/signup.tsx | 2 - .../src/pages/dashboard/home.tsx | 4 - client/src/pages/page/page.tsx | 8 + .../welcome => client/src/pages}/welcome.tsx | 2 +- {frontend/src/app => client/src}/theme.ts | 2 - client/src/vite-env.d.ts | 1 + client/tsconfig.json | 31 +++ client/tsconfig.node.json | 10 + client/vite.config.ts | 12 ++ frontend/.env.example | 2 - frontend/.eslintrc.json | 3 - frontend/.gitignore | 36 ---- frontend/README.md | 26 --- frontend/next.config.js | 4 - .../(dashboard)/(page)/p/[pageId]/page.tsx | 16 -- frontend/src/app/(dashboard)/layout.tsx | 21 -- frontend/src/app/favicon.ico | Bin 25931 -> 0 bytes frontend/src/app/layout.tsx | 41 ---- frontend/src/app/page.tsx | 6 - frontend/src/components/icons.tsx | 48 ----- frontend/src/features/editor/Editor.tsx | 110 ---------- .../src/features/editor/styles/editor.css | 26 --- .../page/tree/components/merge-refs.ts | 15 -- frontend/src/lib/utils.ts | 0 frontend/tsconfig.json | 29 --- 96 files changed, 645 insertions(+), 505 deletions(-) create mode 100644 client/.env.example create mode 100644 client/.eslintrc.cjs create mode 100644 client/.gitignore create mode 100644 client/README.md create mode 100644 client/index.html rename {frontend => client}/package.json (58%) rename {frontend => client}/postcss.config.js (100%) create mode 100644 client/public/vite.svg create mode 100644 client/src/App.tsx create mode 100644 client/src/assets/react.svg create mode 100644 client/src/components/layouts/layout.tsx rename {frontend/src/app/(dashboard) => client/src/components/layouts}/shell.tsx (98%) rename {frontend => client}/src/components/navbar/atoms/sidebar-atom.ts (100%) rename {frontend => client}/src/components/navbar/hooks/use-toggle-sidebar.ts (100%) rename {frontend => client}/src/components/navbar/navbar.module.css (100%) rename {frontend => client}/src/components/navbar/navbar.tsx (95%) rename {frontend => client}/src/components/navbar/user-button.module.css (100%) rename {frontend => client}/src/components/navbar/user-button.tsx (98%) rename {frontend => client}/src/components/providers/tanstack-provider.tsx (96%) rename {frontend => client}/src/components/theme-toggle.tsx (96%) rename {frontend => client}/src/components/ui/custom-toaster.tsx (96%) rename {frontend => client}/src/features/auth/atoms/auth-tokens-atom.ts (87%) rename {frontend => client}/src/features/auth/components/login-form.tsx (92%) rename {frontend => client}/src/features/auth/components/sign-up-form.tsx (94%) rename {frontend => client}/src/features/auth/hooks/use-auth.ts (91%) rename {frontend => client}/src/features/auth/services/auth-service.ts (100%) rename {frontend => client}/src/features/auth/types/auth.types.ts (100%) create mode 100644 client/src/features/editor/editor.tsx rename {frontend => client}/src/features/editor/hooks/use-collaboration-url.ts (65%) create mode 100644 client/src/features/editor/styles/editor.css rename {frontend => client}/src/features/page/hooks/usePage.ts (100%) rename {frontend => client}/src/features/page/services/page-service.ts (100%) rename {frontend => client}/src/features/page/tree/atoms/tree-api-atom.ts (100%) rename {frontend => client}/src/features/page/tree/atoms/tree-data-atom.ts (59%) rename {frontend => client}/src/features/page/tree/atoms/workspace-page-order-atom.ts (100%) rename {frontend => client}/src/features/page/tree/components/fill-flex-parent.tsx (79%) rename {frontend => client}/src/features/page/tree/hooks/use-persistence.ts (90%) rename {frontend => client}/src/features/page/tree/hooks/use-workspace-page-order.ts (100%) rename {frontend => client}/src/features/page/tree/page-tree.tsx (96%) rename {frontend => client}/src/features/page/tree/styles/tree.module.css (100%) rename {frontend => client}/src/features/page/tree/types.ts (100%) rename {frontend => client}/src/features/page/types/page.types.ts (100%) rename {frontend => client}/src/features/search/search-spotlight.tsx (100%) rename {frontend => client}/src/features/settings/account/settings/account-settings.tsx (97%) rename {frontend => client}/src/features/settings/account/settings/components/account-name-form.tsx (99%) rename {frontend => client}/src/features/settings/account/settings/components/change-email.tsx (99%) rename {frontend => client}/src/features/settings/account/settings/components/change-password.tsx (99%) rename {frontend => client}/src/features/settings/modal/atoms/settings-modal-atom.ts (100%) rename {frontend => client}/src/features/settings/modal/modal.module.css (100%) rename {frontend => client}/src/features/settings/modal/settings-modal.tsx (98%) rename {frontend => client}/src/features/settings/modal/settings-sidebar.tsx (99%) rename {frontend => client}/src/features/settings/workspace/members/components/workspace-invite-form.tsx (98%) rename {frontend => client}/src/features/settings/workspace/members/components/workspace-invite-modal.tsx (98%) rename {frontend => client}/src/features/settings/workspace/members/components/workspace-invite-section.tsx (98%) rename {frontend => client}/src/features/settings/workspace/members/components/workspace-members-table.tsx (99%) rename {frontend => client}/src/features/settings/workspace/members/workspace-members.tsx (98%) rename {frontend => client}/src/features/settings/workspace/settings/components/workspace-name-form.tsx (99%) rename {frontend => client}/src/features/settings/workspace/settings/workspace-settings.tsx (92%) rename {frontend => client}/src/features/user/atoms/current-user-atom.ts (100%) rename {frontend => client}/src/features/user/hooks/use-current-user.ts (100%) rename {frontend => client}/src/features/user/services/user-service.ts (100%) rename {frontend => client}/src/features/user/types/user.types.ts (100%) rename {frontend => client}/src/features/user/user-provider.tsx (97%) rename {frontend => client}/src/features/workspace/services/workspace-service.ts (100%) rename {frontend => client}/src/features/workspace/types/workspace.types.ts (100%) rename {frontend => client}/src/lib/api-client.ts (95%) rename {frontend => client}/src/lib/jotai-helper.ts (100%) rename {frontend => client}/src/lib/routes.ts (100%) create mode 100644 client/src/main.tsx rename {frontend/src/app/(auth) => client/src/pages/auth}/layout.tsx (100%) rename frontend/src/app/(auth)/login/page.tsx => client/src/pages/auth/login.tsx (89%) rename frontend/src/app/(auth)/signup/page.tsx => client/src/pages/auth/signup.tsx (90%) rename frontend/src/app/(dashboard)/home/page.tsx => client/src/pages/dashboard/home.tsx (80%) create mode 100644 client/src/pages/page/page.tsx rename {frontend/src/components/welcome => client/src/pages}/welcome.tsx (89%) rename {frontend/src/app => client/src}/theme.ts (85%) create mode 100644 client/src/vite-env.d.ts create mode 100644 client/tsconfig.json create mode 100644 client/tsconfig.node.json create mode 100644 client/vite.config.ts delete mode 100644 frontend/.env.example delete mode 100644 frontend/.eslintrc.json delete mode 100644 frontend/.gitignore delete mode 100644 frontend/README.md delete mode 100644 frontend/next.config.js delete mode 100644 frontend/src/app/(dashboard)/(page)/p/[pageId]/page.tsx delete mode 100644 frontend/src/app/(dashboard)/layout.tsx delete mode 100644 frontend/src/app/favicon.ico delete mode 100644 frontend/src/app/layout.tsx delete mode 100644 frontend/src/app/page.tsx delete mode 100644 frontend/src/components/icons.tsx delete mode 100644 frontend/src/features/editor/Editor.tsx delete mode 100644 frontend/src/features/editor/styles/editor.css delete mode 100644 frontend/src/features/page/tree/components/merge-refs.ts delete mode 100644 frontend/src/lib/utils.ts delete mode 100644 frontend/tsconfig.json diff --git a/client/.env.example b/client/.env.example new file mode 100644 index 00000000..e4a40632 --- /dev/null +++ b/client/.env.example @@ -0,0 +1,2 @@ +VITE_BACKEND_API_URL=http://localhost:3001 +VITE_COLLABORATION_URL= diff --git a/client/.eslintrc.cjs b/client/.eslintrc.cjs new file mode 100644 index 00000000..bb62692d --- /dev/null +++ b/client/.eslintrc.cjs @@ -0,0 +1,19 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + '@typescript-eslint/no-explicit-any': 'off', + }, +} diff --git a/client/.gitignore b/client/.gitignore new file mode 100644 index 00000000..44139841 --- /dev/null +++ b/client/.gitignore @@ -0,0 +1,27 @@ +.env +package-lock.json + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/client/README.md b/client/README.md new file mode 100644 index 00000000..1ebe379f --- /dev/null +++ b/client/README.md @@ -0,0 +1,27 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + project: ['./tsconfig.json', './tsconfig.node.json'], + tsconfigRootDir: __dirname, + }, +``` + +- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` +- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list diff --git a/client/index.html b/client/index.html new file mode 100644 index 00000000..e4b78eae --- /dev/null +++ b/client/index.html @@ -0,0 +1,13 @@ + + +
+ + + +dAMQaiH zm^r3v#$Q#2T=X>bsY#D%s!bhs^M9PMAcHbCc0FMHV{u-dwlL;a1eJ63v5U*?Q_8JO zT#50!RD619#j_Uf))0ooADz~*9&lN!bBDRUgE>Vud-i5ck%vT=r^yD*^?Mp@Q^v+V zG#-?gKlr}Eeqifb{|So?HM&g91P8|av8hQoCmQXkd?7wIJw b z_^v8bbg` SAn{I*4bH$u(RZ6*x UhuA~hc=8czK8SHEKTzSxgbwi~9(OqJB&gwb^l4+m`k*Q;_?>Y-APi1{k zAHQ)P)G)f|AyjSgcCFps)Fh6Bca*Xznq36!pV6Az&m{O8$wGFD? zY&O*3*J0;_EqM#jh6^gMQKpXV?#1?>$ml1xvh8nSN>-?H=V;nJIwB07YX$e6vLxH( zqYwQ>qxwR(i4f)DLd)-$P>T-no_c!LsN@)8`e;W@)-Hj0>nJ-}Kla4-ZdPJzI&Mce zv)V_j;(3ERN3_@I$N<^|4Lf`B;8n+bX@bHbcZTopEmDI*Jfl)-pFDvo6svPRoo@(x z);_{lY<;);XzT`dBFpRmGrr}z5u1=p C^ S-{ce6iXQlLGcItwJ^mZx{m$&DA_oEZ)B{_bYPq-HA zcH8WGoBG(aBU_j)vEy+_71T34@4dmSg!|M8Vf92Zj6WH7Q7t#OHQqWgFE3ARt+%!T z?oLovLVlnf?2c7pTc)~cc^($_8nyKwsN`RA-23ed3sdj(ys%pjjM+9JrctL;dy8a( z@en&CQmnV(()bu|Y%G1-4a(6x{aLytn$T-;(&{QIJB9vMox11U-1HpD@d(QkaJdEb zG{)+6Dos_L+O3NpWo^=gR?evp|CqEG?L&Ut#D*KLaRFOgOEK(Kq1@!EGcTfo+%A&I z=dLbB+d$u{sh?u)xP{PF8L%;YPPW53+@{>5W=Jt#wQpN;0_HYdw1{ksf_XhO4#2F= zyPx6Lx2<92L-;L5PD`zn6zwIH`Jk( $?Qw({erA$^bC;q33hv!d!>%wRhj# zal^hk+WGNg;rJtb-EB(?czvOM=H7dl=vblBwAv>}%1@{}mnpUznfq1cE^sgsL0*4I zJ##!*B?=vI_OEVis5o+_IwMIRrpQyT_Sq~ZU%oY7c5JMIADzpD!Upz9h@iWg_>>~j zOLS;wp^i$-E?4<_cp?RiS%Rd?i;f*mOz=~(&3lo<=@(nR!_Rqiprh@weZlL!t#NCc zO!QTcInq|%#>OVgobj{~ixEUec`E25zJ~*DofsQdzIa@5^nOXj2T;8O`l--(QyU ^$t?TGY^7#&FQ+2SS3B#qK*k3`ye?8jUYSajE5iBbJls75CCc(m3dk{t?- zopcER9{Z?TC)mk~gpi^kbbu>b-+a{m#8-y2^p$ka4n60w;Sc2}HMf<8JUvh CL0B&Btk)T`ctE$*qNW8L$`7!r^9T+>=<=2qaq-;ll2{`{Rg zc5a0ZUI$oG&j-qVOuKa=*v4aY#IsoM+1|c4Z)<}lEDvy;5huB@1RJPquU2U*U-;gu z=En2m+qjBzR#DEJDO`WU)hdd{Vj%^0V*KoyZ|5lzV87&g_j~NCjwv0uQVqXOb*QrQ zy|Qn`hxx(58c 70$E;L(X0uZZ72M1!6oeg)(cdKO ze0gDaTz+ohR-#d)NbAH4x{I(21yjwvBQfmpLu$)|m{XolbgF!pmsqJ#D}(ylp6uC> z{bqtcI#hT#HW=wl7>p!38sKsJ`r8}lt-q%Keqy%u(xk=yiIJiUw6|5IvkS+#?JTBl z8H5(Q?l#wzazujH!8o>1xtn8#_w+397* _cy8!pQGP%K(Ga3pAjsaTbbXJlQF_+m+-UpUUent@xM zg%jqLUExj~o^vQ3Gl*>wh=_gOr2*|U64_iXb+-111a H}$TjeajM+I20xw(((>fej-@CIz4S1pi$(#}P7`4({6QS2CaQS4NPENDp>sAqD z$bH4KGzXGffkJ7R>V>)>tC)uax{UsN*dbeNC*v}#8Y#OWYwL4t$ePR?VTyIs!wea+ z5Urmc)X|^`MG~*dS6pGSbU+gPJoq*^a=_>$n4|P^w$sMBBy@f*Z^Jg6?n5?oId6f{ z$LW4M|4m502z0t7g<#Bx%X;9<=)smFolV&(V^(7Cv2-sxbxopQ!)*#ZRhTBpx1)Fc zNm1T%bONzv6@#|dz(w02AH8OXe>kQ#1FMCzO}2J_mST)+ExmBr9cva-@?;wnmWMOk z{3_~EX_xadgJGv&H@zK_8{(x84`}+c?oSBX*Ge3VdfTt&F}yCpFP?CpW+BE^cWY0^ zb&uBN!Ja3UzYHK-CTyA5=L zEMW{l3Usky#ly=7px648W31UNV@K)&Ub&zP1c7%)`{);I4b0Q<)B}3;NMG2JH=X$U zfIW4)4n9ZM`-yRj67I)YSLDK)qfUJ_ij}a#aZN~9EXrh8eZY2&=uY%2N0UFF7<~%M zsB8=erOWZ>Ct_#^tHZ|*q`H;A)5;ycw*I cmVxi8_0Xk}aJA^ath+E;xg!x+As(M#0=)3!NJR6H&9+zd#iP(m0PIW8$ z1Y^VX`>jm`W!=WpF*{ioM?C9`yOR>@0q=u7o>BP-eSHqCgMDj!2anwH?s%i2p+Q7D zzszIf5XJpE)IG4;d_(La-xenmF(tgAxK`Y4sQ}BSJEPs6N_U2vI{8=0C_F?@7<(G; zo$~G=8p+076G;`}>{MQ>t>7cm=zGtfbdDXm6||jUU|?X?CaE?(<6bKDYKeHlz}DA8 zXT={X=yp_R;HfJ9h%?eWvQ!dRgz&Su*JfNt!Wu>|XfU &68iRikRrHRW|ZxzRR^`eIGt zIeiDgVS>IeExKVRWW8-= A= yA`}`)ZkWBrZD`hpWIxBGkh&f#ijr449~m`j6{4jiJ*C!oVA8ZC?$1RM#K(_b zL9TW)kN*Y4%^-qPpMP7d4)o?Nk#>aoYHT(*g)qmRUb?**F@pnNiy6Fv9rEiUqD(^O zzyS?nBrX63BTRYduaG(0VVG2yJRe%o&rVrLjbxTaAFTd8s;<<@Qs>u(<193R8>}2_ zuwp{7;H2a*X7_jryzriZXMg?bTuegABb^87@SsKkr2)0Gyiax8KQWstw^v #ix45EVrcEhr>!NMhprl $InQMzjSFH54x5k9qHc`@9uKQzvL4ihcq{^B zPrVR=o_ic%Y>6&rMN)hTZsI7I<3&`#(nl+3y3ys9A~ &^=4?PL&nd8)`OfG#n zwAMN$1&>K++c{^|7< 4P=2y(B{jJsQ0a#U;HTo4ZmWZYvI{+s;Td{Yzem%0*k#)vjpB zia;J&>}ICate44SFYY3vEelqStQWFihx%^vQ@Do(sOy7yR2@WNv7Y9I^yL=nZr3mb zXKV5t@=?-Sk|b{XMhA7ZGB@2hqsx}4xwCW!in#C zI@}sc Zlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7 zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S zb+ 9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2 `1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc- zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I zgg{b=Iz}WkhCGj1M =hu4#Aw173YxIVbISaoc z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S( O(a0e7oY=E( zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef LrJugUA?W`A8`#=m diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx deleted file mode 100644 index 4b9861ee..00000000 --- a/frontend/src/app/layout.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import '@mantine/core/styles.css'; -import '@mantine/spotlight/styles.css'; -import '@mantine/tiptap/styles.css'; - -import type { Metadata } from 'next'; -import { TanstackProvider } from '@/components/providers/tanstack-provider'; -import CustomToaster from '@/components/ui/custom-toaster'; -import { theme } from '@/app/theme'; -import { ColorSchemeScript, MantineProvider } from '@mantine/core'; - -export const metadata: Metadata = { - title: 'Create Next App', - description: 'Generated by create next app', - viewport: { - width: 'device-width', - initialScale: 1, - maximumScale: 1, - }, -}; - -export default function RootLayout({ - children, -}: { - children: React.ReactNode; -}) { - return ( - - - - - - - - - - ); -} diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx deleted file mode 100644 index be72b1a5..00000000 --- a/frontend/src/app/page.tsx +++ /dev/null @@ -1,6 +0,0 @@ -'use client' -import { Welcome } from '@/components/welcome/welcome'; - -export default function Home() { - return- {children} - -- ; -} diff --git a/frontend/src/components/icons.tsx b/frontend/src/components/icons.tsx deleted file mode 100644 index b489acab..00000000 --- a/frontend/src/components/icons.tsx +++ /dev/null @@ -1,48 +0,0 @@ -type IconProps = React.HTMLAttributes - -export const Icons = { - - logo: (props: IconProps) => ( - - ), - spinner: (props: IconProps) => ( - - ), -} diff --git a/frontend/src/features/editor/Editor.tsx b/frontend/src/features/editor/Editor.tsx deleted file mode 100644 index d3b28be7..00000000 --- a/frontend/src/features/editor/Editor.tsx +++ /dev/null @@ -1,110 +0,0 @@ -'use client'; - -import { HocuspocusProvider } from '@hocuspocus/provider'; -import * as Y from 'yjs'; -import { EditorContent, useEditor } from '@tiptap/react'; -import { StarterKit } from '@tiptap/starter-kit'; -import { Placeholder } from '@tiptap/extension-placeholder'; -import { Collaboration } from '@tiptap/extension-collaboration'; -import { CollaborationCursor } from '@tiptap/extension-collaboration-cursor'; -import { useEffect, useLayoutEffect, useState } from 'react'; -import { useAtom } from 'jotai/index'; -import { currentUserAtom } from '@/features/user/atoms/current-user-atom'; -import { authTokensAtom } from '@/features/auth/atoms/auth-tokens-atom'; -import useCollaborationUrl from '@/features/editor/hooks/use-collaboration-url'; -import '@/features/editor/styles/editor.css'; - -interface EditorProps{ - pageId: string, -} - -const colors = ['#958DF1', '#F98181', '#FBBC88', '#FAF594', '#70CFF8', '#94FADB', '#B9F18D'] -const getRandomElement = list => list[Math.floor(Math.random() * list.length)] -const getRandomColor = () => getRandomElement(colors) - -export default function Editor({ pageId }: EditorProps ) { - const [token] = useAtom(authTokensAtom); - const collaborationURL = useCollaborationUrl(); - const [provider, setProvider] = useState (); - const [doc, setDoc] = useState () - - useLayoutEffect(() => { - if (token) { - const ydoc = new Y.Doc(); - - const provider = new HocuspocusProvider({ - url: collaborationURL, - name: pageId, - document: ydoc, - token: token?.accessToken, - }); - - setDoc(ydoc); - setProvider(provider); - - return () => { - ydoc.destroy(); - provider.destroy(); - }; - } - }, [pageId, token]); - console.log(token) - - if(!doc || !provider){ - return null; - } - - console.log(doc) - - return ( - - ); -} - -interface TiptapEditorProps { - ydoc: Y.Doc, - provider: HocuspocusProvider -} - -function TiptapEditor({ ydoc, provider }: TiptapEditorProps) { - const [currentUser] = useAtom(currentUserAtom); - - const extensions = [ - StarterKit.configure({ - history: false, - }), - Placeholder.configure({ - placeholder: 'Write here', - }), - Collaboration.configure({ - document: ydoc, - }), - CollaborationCursor.configure({ - provider - }), - ]; - - const editor = useEditor({ - extensions: extensions, - }); - - useEffect(() => { - if (editor && currentUser.user){ - editor.chain().focus().updateUser({...currentUser.user, color: getRandomColor()}).run() - } - }, [editor, currentUser.user]) - - useEffect(() => { - provider.on('status', event => { - console.log(event) - }) - - }, [provider]) - - - return ( - <> - - > - ); -} diff --git a/frontend/src/features/editor/styles/editor.css b/frontend/src/features/editor/styles/editor.css deleted file mode 100644 index 759cff9a..00000000 --- a/frontend/src/features/editor/styles/editor.css +++ /dev/null @@ -1,26 +0,0 @@ -/* Give a remote user a caret */ -.collaboration-cursor__caret { - border-left: 1px solid #0d0d0d; - border-right: 1px solid #0d0d0d; - margin-left: -1px; - margin-right: -1px; - pointer-events: none; - position: relative; - word-break: normal; -} - -/* Render the username above the caret */ -.collaboration-cursor__label { - border-radius: 3px 3px 3px 0; - color: #0d0d0d; - font-size: 12px; - font-style: normal; - font-weight: 600; - left: -1px; - line-height: normal; - padding: 0.1rem 0.3rem; - position: absolute; - top: -1.4em; - user-select: none; - white-space: nowrap; -} diff --git a/frontend/src/features/page/tree/components/merge-refs.ts b/frontend/src/features/page/tree/components/merge-refs.ts deleted file mode 100644 index 1f974d23..00000000 --- a/frontend/src/features/page/tree/components/merge-refs.ts +++ /dev/null @@ -1,15 +0,0 @@ -import React from "react"; - -type AnyRef = React.MutableRefObject | React.RefCallback | null; - -export default function mergeRefs(...refs: AnyRef[]) { - return (instance: any) => { - refs.forEach((ref) => { - if (typeof ref === "function") { - ref(instance); - } else if (ref != null) { - ref.current = instance; - } - }); - }; -} \ No newline at end of file diff --git a/frontend/src/lib/utils.ts b/frontend/src/lib/utils.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json deleted file mode 100644 index f15c41a8..00000000 --- a/frontend/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": false, - "strictNullChecks": false, - "forceConsistentCasingInFileNames": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": ["./src/*"] - } - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] -}