Skip to content

Commit

Permalink
tmp
Browse files Browse the repository at this point in the history
  • Loading branch information
ClanEver committed Jan 6, 2025
1 parent e11a5c1 commit 0164b24
Show file tree
Hide file tree
Showing 9 changed files with 233 additions and 114 deletions.
14 changes: 6 additions & 8 deletions app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import { useState } from 'react'
import { useRouter } from 'next/navigation'
import SettingPanel from '@/components/SettingPanel'

export default function Home() {
const [roomId, setRoomId] = useState('')
Expand All @@ -15,23 +16,20 @@ export default function Home() {

return (
<main className="flex min-h-screen flex-col items-center justify-center p-24">
<h1 className="text-4xl font-bold mb-8">Collaborative Editor</h1>
<h1 className="text-4xl font-bold mb-8">co-coding</h1>
<div className="flex flex-col items-center space-y-4">
<input
type="text"
value={roomId}
onChange={(e) => setRoomId(e.target.value)}
placeholder="Enter room number"
className="p-2 border rounded w-64"
placeholder="Enter room id"
className="input input-bordered w-64"
/>
<button
onClick={handleJoinRoom}
className="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600 w-64"
>
<SettingPanel />
<button onClick={handleJoinRoom} className="btn btn-primary">
Join Room
</button>
</div>
</main>
)
}

3 changes: 1 addition & 2 deletions app/room/[roomId]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import CollaborativeEditor from '@/components/CollaborativeEditor/CollaborativeEditor'
import CollaborativeEditor from '@/components/CollaborativeEditor'

export default async function Room({
params,
Expand All @@ -13,4 +13,3 @@ export default async function Room({
</main>
)
}

Empty file added common/game_rules.ts
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,16 @@

import { useEffect, useRef, useState } from 'react'
import { io, Socket } from 'socket.io-client'
import CodeMirror, { EditorView, Extension, keymap, ReactCodeMirrorRef, ViewUpdate, } from '@uiw/react-codemirror'
import CodeMirror, {
EditorView,
Extension,
keymap,
ReactCodeMirrorRef,
ViewUpdate,
} from '@uiw/react-codemirror'
import { StreamLanguage } from '@codemirror/language'
// import { vscodeDark } from '@uiw/codemirror-theme-vscode'
import { insertNewlineAndIndent } from '@codemirror/commands'
import './CollaborativeEditor.css'

const BACKEND_URL =
process.env.NEXT_PUBLIC_BACKEND_URL || 'http://localhost:3001'
Expand Down
3 changes: 0 additions & 3 deletions components/CollaborativeEditor/CollaborativeEditor.css

This file was deleted.

82 changes: 82 additions & 0 deletions components/SettingPanel.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import { Select, Card } from 'react-daisyui'
import React from 'react'
import { create } from 'zustand'

interface Settings {
language: string
theme: string
}

interface SettingsStore {
settings: Settings
updateSettings: (settings: Settings) => void
}

export const useSettingsStore = create<SettingsStore>((set) => ({
settings: { language: 'javascript', theme: 'light' },
updateSettings: (newSettings) => set({ settings: newSettings }),
}))

interface SettingPanelProps {
onSettingChange?: (settings: Settings) => void
}

export default function SettingPanel({
onSettingChange = () => {},
}: SettingPanelProps) {
const { settings, updateSettings } = useSettingsStore()

const handleSettingChange = (key: 'language' | 'theme', value: string) => {
const newSettings = { ...settings, [key]: value }
updateSettings(newSettings)
onSettingChange(newSettings)
}

return (
<Card className="bg-base-200 shadow-xl p-6">
<Card.Body className="space-y-4">
<div className="form-control">
<label className="label">
<span className="label-text">编程语言</span>
</label>
<Select
value={settings.language}
onChange={(e: React.ChangeEvent<HTMLSelectElement>) =>
handleSettingChange('language', e.target.value)
}
className="w-full max-w-xs"
>
<Select.Option value="javascript">
JavaScript
</Select.Option>
<Select.Option value="typescript">
TypeScript
</Select.Option>
<Select.Option value="python">Python</Select.Option>
<Select.Option value="java">Java</Select.Option>
</Select>
</div>

<div className="form-control">
<label className="label">
<span className="label-text">主题</span>
</label>
<Select
value={settings.theme}
onChange={(e) =>
handleSettingChange('theme', e.target.value)
}
className="w-full max-w-xs"
>
<Select.Option value="light">Light</Select.Option>
<Select.Option value="dark">Dark</Select.Option>
<Select.Option value="cupcake">Cupcake</Select.Option>
<Select.Option value="dracula">Dracula</Select.Option>
<Select.Option value="night">Night</Select.Option>
<Select.Option value="coffee">Coffee</Select.Option>
</Select>
</div>
</Card.Body>
</Card>
)
}
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,19 @@
"codemirror-lang-elixir": "^4.0.0",
"next": "15.1.2",
"react": "^19.0.0",
"react-daisyui": "^5.0.5",
"react-dom": "^19.0.0",
"socket.io": "^4.8.1",
"socket.io-client": "^4.8.1",
"ts-node": "^10.9.2"
"ts-node": "^10.9.2",
"zustand": "^5.0.2"
},
"devDependencies": {
"@eslint/eslintrc": "^3",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"daisyui": "^4.12.23",
"eslint": "^9",
"eslint-config-next": "15.1.2",
"postcss": "^8",
Expand Down
Loading

0 comments on commit 0164b24

Please sign in to comment.