Spaces:
Sleeping
Sleeping
fixing layout issue and rendering issues
Browse files- app/components/Desktop.tsx +52 -18
- app/components/FlutterRunner.tsx +8 -21
- app/components/LaTeXEditor.tsx +5 -1
- app/components/QuizApp.tsx +3 -1
app/components/Desktop.tsx
CHANGED
|
@@ -136,7 +136,7 @@ export function Desktop() {
|
|
| 136 |
setCurrentPath(path)
|
| 137 |
setFileManagerOpen(true)
|
| 138 |
setFileManagerMinimized(false)
|
| 139 |
-
|
| 140 |
}
|
| 141 |
|
| 142 |
const closeFileManager = () => {
|
|
@@ -148,7 +148,7 @@ export function Desktop() {
|
|
| 148 |
console.log('Opening Calendar')
|
| 149 |
setCalendarOpen(true)
|
| 150 |
setCalendarMinimized(false)
|
| 151 |
-
|
| 152 |
}
|
| 153 |
|
| 154 |
const closeCalendar = () => {
|
|
@@ -159,7 +159,7 @@ export function Desktop() {
|
|
| 159 |
const openClock = () => {
|
| 160 |
setClockOpen(true)
|
| 161 |
setClockMinimized(false)
|
| 162 |
-
|
| 163 |
}
|
| 164 |
|
| 165 |
const closeClock = () => {
|
|
@@ -170,7 +170,7 @@ export function Desktop() {
|
|
| 170 |
const openMessages = () => {
|
| 171 |
setMessagesOpen(true)
|
| 172 |
setMessagesMinimized(false)
|
| 173 |
-
|
| 174 |
}
|
| 175 |
|
| 176 |
const closeMessages = () => {
|
|
@@ -182,7 +182,7 @@ export function Desktop() {
|
|
| 182 |
console.log('Opening Gemini Chat')
|
| 183 |
setGeminiChatOpen(true)
|
| 184 |
setGeminiChatMinimized(false)
|
| 185 |
-
|
| 186 |
}
|
| 187 |
|
| 188 |
const closeGeminiChat = () => {
|
|
@@ -198,7 +198,7 @@ export function Desktop() {
|
|
| 198 |
setActiveFlutterApp(appFile)
|
| 199 |
setFlutterRunnerOpen(true)
|
| 200 |
setFlutterRunnerMinimized(false)
|
| 201 |
-
|
| 202 |
}
|
| 203 |
|
| 204 |
const closeFlutterRunner = () => {
|
|
@@ -220,7 +220,7 @@ export function Desktop() {
|
|
| 220 |
}
|
| 221 |
setFlutterCodeEditorOpen(true)
|
| 222 |
setFlutterCodeEditorMinimized(false)
|
| 223 |
-
|
| 224 |
}
|
| 225 |
|
| 226 |
const closeFlutterCodeEditor = () => {
|
|
@@ -239,7 +239,7 @@ export function Desktop() {
|
|
| 239 |
}
|
| 240 |
setLaTeXEditorOpen(true)
|
| 241 |
setLaTeXEditorMinimized(false)
|
| 242 |
-
|
| 243 |
}
|
| 244 |
|
| 245 |
const closeLaTeXEditor = () => {
|
|
@@ -250,7 +250,7 @@ export function Desktop() {
|
|
| 250 |
const openQuizApp = () => {
|
| 251 |
setQuizAppOpen(true)
|
| 252 |
setQuizAppMinimized(false)
|
| 253 |
-
|
| 254 |
}
|
| 255 |
|
| 256 |
const closeQuizApp = () => {
|
|
@@ -400,7 +400,10 @@ export function Desktop() {
|
|
| 400 |
<Folder size={20} weight="regular" className="text-blue-900" />
|
| 401 |
</div>
|
| 402 |
),
|
| 403 |
-
onRestore: () =>
|
|
|
|
|
|
|
|
|
|
| 404 |
})
|
| 405 |
}
|
| 406 |
|
|
@@ -413,7 +416,10 @@ export function Desktop() {
|
|
| 413 |
<CalendarIcon size={20} weight="regular" className="text-white" />
|
| 414 |
</div>
|
| 415 |
),
|
| 416 |
-
onRestore: () =>
|
|
|
|
|
|
|
|
|
|
| 417 |
})
|
| 418 |
}
|
| 419 |
|
|
@@ -426,7 +432,10 @@ export function Desktop() {
|
|
| 426 |
<ClockIcon size={20} weight="regular" className="text-white" />
|
| 427 |
</div>
|
| 428 |
),
|
| 429 |
-
onRestore: () =>
|
|
|
|
|
|
|
|
|
|
| 430 |
})
|
| 431 |
}
|
| 432 |
|
|
@@ -440,7 +449,10 @@ export function Desktop() {
|
|
| 440 |
<ChatCircleDots size={20} weight="fill" className="text-white relative z-10 drop-shadow-md" />
|
| 441 |
</div>
|
| 442 |
),
|
| 443 |
-
onRestore: () =>
|
|
|
|
|
|
|
|
|
|
| 444 |
})
|
| 445 |
}
|
| 446 |
|
|
@@ -453,7 +465,10 @@ export function Desktop() {
|
|
| 453 |
<Sparkle size={20} weight="fill" className="text-blue-500" />
|
| 454 |
</div>
|
| 455 |
),
|
| 456 |
-
onRestore: () =>
|
|
|
|
|
|
|
|
|
|
| 457 |
})
|
| 458 |
}
|
| 459 |
|
|
@@ -474,7 +489,10 @@ export function Desktop() {
|
|
| 474 |
</div>
|
| 475 |
</div>
|
| 476 |
),
|
| 477 |
-
onRestore: () =>
|
|
|
|
|
|
|
|
|
|
| 478 |
})
|
| 479 |
}
|
| 480 |
|
|
@@ -493,7 +511,10 @@ export function Desktop() {
|
|
| 493 |
</div>
|
| 494 |
</div>
|
| 495 |
),
|
| 496 |
-
onRestore: () =>
|
|
|
|
|
|
|
|
|
|
| 497 |
})
|
| 498 |
}
|
| 499 |
|
|
@@ -510,7 +531,10 @@ export function Desktop() {
|
|
| 510 |
</div>
|
| 511 |
</div>
|
| 512 |
),
|
| 513 |
-
onRestore: () =>
|
|
|
|
|
|
|
|
|
|
| 514 |
})
|
| 515 |
}
|
| 516 |
|
|
@@ -524,7 +548,10 @@ export function Desktop() {
|
|
| 524 |
<Brain size={20} weight="fill" className="text-white relative z-10 drop-shadow-md" />
|
| 525 |
</div>
|
| 526 |
),
|
| 527 |
-
onRestore: () =>
|
|
|
|
|
|
|
|
|
|
| 528 |
})
|
| 529 |
}
|
| 530 |
|
|
@@ -850,6 +877,8 @@ export function Desktop() {
|
|
| 850 |
setActiveFlutterApp(null)
|
| 851 |
}}
|
| 852 |
onMinimize={() => setFlutterRunnerMinimized(true)}
|
|
|
|
|
|
|
| 853 |
/>
|
| 854 |
</motion.div>
|
| 855 |
)}
|
|
@@ -874,6 +903,8 @@ export function Desktop() {
|
|
| 874 |
initialCode={activeFlutterApp?.dartCode}
|
| 875 |
onClose={closeFlutterCodeEditor}
|
| 876 |
onMinimize={() => setFlutterCodeEditorMinimized(true)}
|
|
|
|
|
|
|
| 877 |
/>
|
| 878 |
</motion.div>
|
| 879 |
)}
|
|
@@ -901,6 +932,8 @@ export function Desktop() {
|
|
| 901 |
setActiveLaTeXApp(null)
|
| 902 |
}}
|
| 903 |
onMinimize={() => setLaTeXEditorMinimized(true)}
|
|
|
|
|
|
|
| 904 |
/>
|
| 905 |
</motion.div>
|
| 906 |
)}
|
|
@@ -924,6 +957,7 @@ export function Desktop() {
|
|
| 924 |
<QuizApp
|
| 925 |
onClose={closeQuizApp}
|
| 926 |
onMinimize={() => setQuizAppMinimized(true)}
|
|
|
|
| 927 |
zIndex={windowZIndices.quizApp || 1000}
|
| 928 |
/>
|
| 929 |
</motion.div>
|
|
|
|
| 136 |
setCurrentPath(path)
|
| 137 |
setFileManagerOpen(true)
|
| 138 |
setFileManagerMinimized(false)
|
| 139 |
+
bringWindowToFront('fileManager')
|
| 140 |
}
|
| 141 |
|
| 142 |
const closeFileManager = () => {
|
|
|
|
| 148 |
console.log('Opening Calendar')
|
| 149 |
setCalendarOpen(true)
|
| 150 |
setCalendarMinimized(false)
|
| 151 |
+
bringWindowToFront('calendar')
|
| 152 |
}
|
| 153 |
|
| 154 |
const closeCalendar = () => {
|
|
|
|
| 159 |
const openClock = () => {
|
| 160 |
setClockOpen(true)
|
| 161 |
setClockMinimized(false)
|
| 162 |
+
bringWindowToFront('clock')
|
| 163 |
}
|
| 164 |
|
| 165 |
const closeClock = () => {
|
|
|
|
| 170 |
const openMessages = () => {
|
| 171 |
setMessagesOpen(true)
|
| 172 |
setMessagesMinimized(false)
|
| 173 |
+
bringWindowToFront('messages')
|
| 174 |
}
|
| 175 |
|
| 176 |
const closeMessages = () => {
|
|
|
|
| 182 |
console.log('Opening Gemini Chat')
|
| 183 |
setGeminiChatOpen(true)
|
| 184 |
setGeminiChatMinimized(false)
|
| 185 |
+
bringWindowToFront('gemini')
|
| 186 |
}
|
| 187 |
|
| 188 |
const closeGeminiChat = () => {
|
|
|
|
| 198 |
setActiveFlutterApp(appFile)
|
| 199 |
setFlutterRunnerOpen(true)
|
| 200 |
setFlutterRunnerMinimized(false)
|
| 201 |
+
bringWindowToFront('flutterRunner')
|
| 202 |
}
|
| 203 |
|
| 204 |
const closeFlutterRunner = () => {
|
|
|
|
| 220 |
}
|
| 221 |
setFlutterCodeEditorOpen(true)
|
| 222 |
setFlutterCodeEditorMinimized(false)
|
| 223 |
+
bringWindowToFront('flutterCodeEditor')
|
| 224 |
}
|
| 225 |
|
| 226 |
const closeFlutterCodeEditor = () => {
|
|
|
|
| 239 |
}
|
| 240 |
setLaTeXEditorOpen(true)
|
| 241 |
setLaTeXEditorMinimized(false)
|
| 242 |
+
bringWindowToFront('latexEditor')
|
| 243 |
}
|
| 244 |
|
| 245 |
const closeLaTeXEditor = () => {
|
|
|
|
| 250 |
const openQuizApp = () => {
|
| 251 |
setQuizAppOpen(true)
|
| 252 |
setQuizAppMinimized(false)
|
| 253 |
+
bringWindowToFront('quizApp')
|
| 254 |
}
|
| 255 |
|
| 256 |
const closeQuizApp = () => {
|
|
|
|
| 400 |
<Folder size={20} weight="regular" className="text-blue-900" />
|
| 401 |
</div>
|
| 402 |
),
|
| 403 |
+
onRestore: () => {
|
| 404 |
+
setFileManagerMinimized(false)
|
| 405 |
+
bringWindowToFront('fileManager')
|
| 406 |
+
}
|
| 407 |
})
|
| 408 |
}
|
| 409 |
|
|
|
|
| 416 |
<CalendarIcon size={20} weight="regular" className="text-white" />
|
| 417 |
</div>
|
| 418 |
),
|
| 419 |
+
onRestore: () => {
|
| 420 |
+
setCalendarMinimized(false)
|
| 421 |
+
bringWindowToFront('calendar')
|
| 422 |
+
}
|
| 423 |
})
|
| 424 |
}
|
| 425 |
|
|
|
|
| 432 |
<ClockIcon size={20} weight="regular" className="text-white" />
|
| 433 |
</div>
|
| 434 |
),
|
| 435 |
+
onRestore: () => {
|
| 436 |
+
setClockMinimized(false)
|
| 437 |
+
bringWindowToFront('clock')
|
| 438 |
+
}
|
| 439 |
})
|
| 440 |
}
|
| 441 |
|
|
|
|
| 449 |
<ChatCircleDots size={20} weight="fill" className="text-white relative z-10 drop-shadow-md" />
|
| 450 |
</div>
|
| 451 |
),
|
| 452 |
+
onRestore: () => {
|
| 453 |
+
setMessagesMinimized(false)
|
| 454 |
+
bringWindowToFront('messages')
|
| 455 |
+
}
|
| 456 |
})
|
| 457 |
}
|
| 458 |
|
|
|
|
| 465 |
<Sparkle size={20} weight="fill" className="text-blue-500" />
|
| 466 |
</div>
|
| 467 |
),
|
| 468 |
+
onRestore: () => {
|
| 469 |
+
setGeminiChatMinimized(false)
|
| 470 |
+
bringWindowToFront('gemini')
|
| 471 |
+
}
|
| 472 |
})
|
| 473 |
}
|
| 474 |
|
|
|
|
| 489 |
</div>
|
| 490 |
</div>
|
| 491 |
),
|
| 492 |
+
onRestore: () => {
|
| 493 |
+
setFlutterRunnerMinimized(false)
|
| 494 |
+
bringWindowToFront('flutterRunner')
|
| 495 |
+
}
|
| 496 |
})
|
| 497 |
}
|
| 498 |
|
|
|
|
| 511 |
</div>
|
| 512 |
</div>
|
| 513 |
),
|
| 514 |
+
onRestore: () => {
|
| 515 |
+
setFlutterCodeEditorMinimized(false)
|
| 516 |
+
bringWindowToFront('flutterCodeEditor')
|
| 517 |
+
}
|
| 518 |
})
|
| 519 |
}
|
| 520 |
|
|
|
|
| 531 |
</div>
|
| 532 |
</div>
|
| 533 |
),
|
| 534 |
+
onRestore: () => {
|
| 535 |
+
setLaTeXEditorMinimized(false)
|
| 536 |
+
bringWindowToFront('latexEditor')
|
| 537 |
+
}
|
| 538 |
})
|
| 539 |
}
|
| 540 |
|
|
|
|
| 548 |
<Brain size={20} weight="fill" className="text-white relative z-10 drop-shadow-md" />
|
| 549 |
</div>
|
| 550 |
),
|
| 551 |
+
onRestore: () => {
|
| 552 |
+
setQuizAppMinimized(false)
|
| 553 |
+
bringWindowToFront('quizApp')
|
| 554 |
+
}
|
| 555 |
})
|
| 556 |
}
|
| 557 |
|
|
|
|
| 877 |
setActiveFlutterApp(null)
|
| 878 |
}}
|
| 879 |
onMinimize={() => setFlutterRunnerMinimized(true)}
|
| 880 |
+
onFocus={() => bringWindowToFront('flutterRunner')}
|
| 881 |
+
zIndex={windowZIndices.flutterRunner || 1000}
|
| 882 |
/>
|
| 883 |
</motion.div>
|
| 884 |
)}
|
|
|
|
| 903 |
initialCode={activeFlutterApp?.dartCode}
|
| 904 |
onClose={closeFlutterCodeEditor}
|
| 905 |
onMinimize={() => setFlutterCodeEditorMinimized(true)}
|
| 906 |
+
onFocus={() => bringWindowToFront('flutterCodeEditor')}
|
| 907 |
+
zIndex={windowZIndices.flutterCodeEditor || 1000}
|
| 908 |
/>
|
| 909 |
</motion.div>
|
| 910 |
)}
|
|
|
|
| 932 |
setActiveLaTeXApp(null)
|
| 933 |
}}
|
| 934 |
onMinimize={() => setLaTeXEditorMinimized(true)}
|
| 935 |
+
onFocus={() => bringWindowToFront('latexEditor')}
|
| 936 |
+
zIndex={windowZIndices.latexEditor || 1000}
|
| 937 |
/>
|
| 938 |
</motion.div>
|
| 939 |
)}
|
|
|
|
| 957 |
<QuizApp
|
| 958 |
onClose={closeQuizApp}
|
| 959 |
onMinimize={() => setQuizAppMinimized(true)}
|
| 960 |
+
onFocus={() => bringWindowToFront('quizApp')}
|
| 961 |
zIndex={windowZIndices.quizApp || 1000}
|
| 962 |
/>
|
| 963 |
</motion.div>
|
app/components/FlutterRunner.tsx
CHANGED
|
@@ -6,9 +6,7 @@ import {
|
|
| 6 |
Download,
|
| 7 |
SidebarSimple,
|
| 8 |
FileCode,
|
| 9 |
-
CaretDown
|
| 10 |
-
Copy
|
| 11 |
-
|
| 12 |
} from '@phosphor-icons/react'
|
| 13 |
import Window from './Window'
|
| 14 |
|
|
@@ -16,6 +14,8 @@ interface FlutterRunnerProps {
|
|
| 16 |
onClose: () => void
|
| 17 |
onMinimize?: () => void
|
| 18 |
onMaximize?: () => void
|
|
|
|
|
|
|
| 19 |
initialCode?: string
|
| 20 |
}
|
| 21 |
|
|
@@ -97,7 +97,7 @@ class _MyHomePageState extends State<MyHomePage> {
|
|
| 97 |
}
|
| 98 |
}`
|
| 99 |
|
| 100 |
-
export function FlutterRunner({ onClose, onMinimize, onMaximize, initialCode }: FlutterRunnerProps) {
|
| 101 |
const [code, setCode] = useState(initialCode || DEFAULT_FLUTTER_CODE)
|
| 102 |
const [showEditor, setShowEditor] = useState(true)
|
| 103 |
const [showFiles, setShowFiles] = useState(true)
|
|
@@ -246,13 +246,6 @@ export function FlutterRunner({ onClose, onMinimize, onMaximize, initialCode }:
|
|
| 246 |
URL.revokeObjectURL(url)
|
| 247 |
}
|
| 248 |
|
| 249 |
-
const handleCopyCode = () => {
|
| 250 |
-
navigator.clipboard.writeText(code).then(() => {
|
| 251 |
-
console.log("Code copied to clipboard!")
|
| 252 |
-
}).catch(err => {
|
| 253 |
-
console.error("Failed to copy:", err)
|
| 254 |
-
})
|
| 255 |
-
}
|
| 256 |
|
| 257 |
return (
|
| 258 |
<Window
|
|
@@ -262,6 +255,8 @@ export function FlutterRunner({ onClose, onMinimize, onMaximize, initialCode }:
|
|
| 262 |
onClose={onClose}
|
| 263 |
onMinimize={onMinimize}
|
| 264 |
onMaximize={onMaximize}
|
|
|
|
|
|
|
| 265 |
width={1400}
|
| 266 |
height={800}
|
| 267 |
x={40}
|
|
@@ -319,14 +314,6 @@ export function FlutterRunner({ onClose, onMinimize, onMaximize, initialCode }:
|
|
| 319 |
</div>
|
| 320 |
|
| 321 |
<div className="flex items-center gap-2">
|
| 322 |
-
<button
|
| 323 |
-
onClick={handleCopyCode}
|
| 324 |
-
className="flex items-center gap-1 px-3 py-1.5 bg-green-600 hover:bg-green-700 text-white rounded text-xs font-medium transition-colors"
|
| 325 |
-
title="Copy Code to Clipboard"
|
| 326 |
-
>
|
| 327 |
-
<Copy size={14} weight="bold" />
|
| 328 |
-
Copy Code
|
| 329 |
-
</button>
|
| 330 |
<button
|
| 331 |
onClick={handleDownload}
|
| 332 |
className="p-1.5 text-gray-400 hover:text-white hover:bg-[#3e3e42] rounded transition-colors"
|
|
@@ -384,8 +371,8 @@ export function FlutterRunner({ onClose, onMinimize, onMaximize, initialCode }:
|
|
| 384 |
<div className="w-24" /> {/* Spacer for centering */}
|
| 385 |
</div>
|
| 386 |
<div className="flex-1 bg-[#1e1e1e] relative overflow-hidden">
|
| 387 |
-
<div className="absolute top-0 left-0 right-0 bg-
|
| 388 |
-
<p className="text-
|
| 389 |
</div>
|
| 390 |
<iframe
|
| 391 |
|
|
|
|
| 6 |
Download,
|
| 7 |
SidebarSimple,
|
| 8 |
FileCode,
|
| 9 |
+
CaretDown
|
|
|
|
|
|
|
| 10 |
} from '@phosphor-icons/react'
|
| 11 |
import Window from './Window'
|
| 12 |
|
|
|
|
| 14 |
onClose: () => void
|
| 15 |
onMinimize?: () => void
|
| 16 |
onMaximize?: () => void
|
| 17 |
+
onFocus?: () => void
|
| 18 |
+
zIndex?: number
|
| 19 |
initialCode?: string
|
| 20 |
}
|
| 21 |
|
|
|
|
| 97 |
}
|
| 98 |
}`
|
| 99 |
|
| 100 |
+
export function FlutterRunner({ onClose, onMinimize, onMaximize, onFocus, zIndex, initialCode }: FlutterRunnerProps) {
|
| 101 |
const [code, setCode] = useState(initialCode || DEFAULT_FLUTTER_CODE)
|
| 102 |
const [showEditor, setShowEditor] = useState(true)
|
| 103 |
const [showFiles, setShowFiles] = useState(true)
|
|
|
|
| 246 |
URL.revokeObjectURL(url)
|
| 247 |
}
|
| 248 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 249 |
|
| 250 |
return (
|
| 251 |
<Window
|
|
|
|
| 255 |
onClose={onClose}
|
| 256 |
onMinimize={onMinimize}
|
| 257 |
onMaximize={onMaximize}
|
| 258 |
+
onFocus={onFocus}
|
| 259 |
+
zIndex={zIndex}
|
| 260 |
width={1400}
|
| 261 |
height={800}
|
| 262 |
x={40}
|
|
|
|
| 314 |
</div>
|
| 315 |
|
| 316 |
<div className="flex items-center gap-2">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 317 |
<button
|
| 318 |
onClick={handleDownload}
|
| 319 |
className="p-1.5 text-gray-400 hover:text-white hover:bg-[#3e3e42] rounded transition-colors"
|
|
|
|
| 371 |
<div className="w-24" /> {/* Spacer for centering */}
|
| 372 |
</div>
|
| 373 |
<div className="flex-1 bg-[#1e1e1e] relative overflow-hidden">
|
| 374 |
+
<div className="absolute top-0 left-0 right-0 bg-gray-900/95 backdrop-blur-sm px-4 py-2 z-10 border-b border-gray-700">
|
| 375 |
+
<p className="text-red-500 text-sm font-bold">Copy the code from editor to DartPad</p>
|
| 376 |
</div>
|
| 377 |
<iframe
|
| 378 |
|
app/components/LaTeXEditor.tsx
CHANGED
|
@@ -24,6 +24,8 @@ interface LaTeXEditorProps {
|
|
| 24 |
onClose: () => void
|
| 25 |
onMinimize?: () => void
|
| 26 |
onMaximize?: () => void
|
|
|
|
|
|
|
| 27 |
initialContent?: string
|
| 28 |
}
|
| 29 |
|
|
@@ -55,7 +57,7 @@ Here is an equation:
|
|
| 55 |
|
| 56 |
\\end{document}`
|
| 57 |
|
| 58 |
-
export function LaTeXEditor({ onClose, onMinimize, onMaximize, initialContent }: LaTeXEditorProps) {
|
| 59 |
const [code, setCode] = useState(initialContent || DEFAULT_LATEX)
|
| 60 |
const [showSidebar, setShowSidebar] = useState(true)
|
| 61 |
const [files, setFiles] = useState<FileNode[]>([])
|
|
@@ -339,6 +341,8 @@ export function LaTeXEditor({ onClose, onMinimize, onMaximize, initialContent }:
|
|
| 339 |
onClose={onClose}
|
| 340 |
onMinimize={onMinimize}
|
| 341 |
onMaximize={onMaximize}
|
|
|
|
|
|
|
| 342 |
width={1200}
|
| 343 |
height={800}
|
| 344 |
x={60}
|
|
|
|
| 24 |
onClose: () => void
|
| 25 |
onMinimize?: () => void
|
| 26 |
onMaximize?: () => void
|
| 27 |
+
onFocus?: () => void
|
| 28 |
+
zIndex?: number
|
| 29 |
initialContent?: string
|
| 30 |
}
|
| 31 |
|
|
|
|
| 57 |
|
| 58 |
\\end{document}`
|
| 59 |
|
| 60 |
+
export function LaTeXEditor({ onClose, onMinimize, onMaximize, onFocus, zIndex, initialContent }: LaTeXEditorProps) {
|
| 61 |
const [code, setCode] = useState(initialContent || DEFAULT_LATEX)
|
| 62 |
const [showSidebar, setShowSidebar] = useState(true)
|
| 63 |
const [files, setFiles] = useState<FileNode[]>([])
|
|
|
|
| 341 |
onClose={onClose}
|
| 342 |
onMinimize={onMinimize}
|
| 343 |
onMaximize={onMaximize}
|
| 344 |
+
onFocus={onFocus}
|
| 345 |
+
zIndex={zIndex}
|
| 346 |
width={1200}
|
| 347 |
height={800}
|
| 348 |
x={60}
|
app/components/QuizApp.tsx
CHANGED
|
@@ -27,10 +27,11 @@ interface QuizQuestion {
|
|
| 27 |
interface QuizAppProps {
|
| 28 |
onClose: () => void
|
| 29 |
onMinimize: () => void
|
|
|
|
| 30 |
zIndex: number
|
| 31 |
}
|
| 32 |
|
| 33 |
-
export function QuizApp({ onClose, onMinimize, zIndex }: QuizAppProps) {
|
| 34 |
const [windowSize, setWindowSize] = useState({ width: 800, height: 600 })
|
| 35 |
const [passkey, setPasskey] = useState('')
|
| 36 |
const [tempPasskey, setTempPasskey] = useState('')
|
|
@@ -259,6 +260,7 @@ export function QuizApp({ onClose, onMinimize, zIndex }: QuizAppProps) {
|
|
| 259 |
isOpen={true}
|
| 260 |
onClose={onClose}
|
| 261 |
onMinimize={onMinimize}
|
|
|
|
| 262 |
zIndex={zIndex}
|
| 263 |
width={windowSize.width}
|
| 264 |
height={windowSize.height}
|
|
|
|
| 27 |
interface QuizAppProps {
|
| 28 |
onClose: () => void
|
| 29 |
onMinimize: () => void
|
| 30 |
+
onFocus?: () => void
|
| 31 |
zIndex: number
|
| 32 |
}
|
| 33 |
|
| 34 |
+
export function QuizApp({ onClose, onMinimize, onFocus, zIndex }: QuizAppProps) {
|
| 35 |
const [windowSize, setWindowSize] = useState({ width: 800, height: 600 })
|
| 36 |
const [passkey, setPasskey] = useState('')
|
| 37 |
const [tempPasskey, setTempPasskey] = useState('')
|
|
|
|
| 260 |
isOpen={true}
|
| 261 |
onClose={onClose}
|
| 262 |
onMinimize={onMinimize}
|
| 263 |
+
onFocus={onFocus}
|
| 264 |
zIndex={zIndex}
|
| 265 |
width={windowSize.width}
|
| 266 |
height={windowSize.height}
|