use composables.

This commit is contained in:
2023-04-17 11:24:35 +08:00
parent 46d3dcb171
commit 3ff7749395
8 changed files with 130 additions and 134 deletions

View File

@@ -1,29 +1,23 @@
<script lang="ts" setup>
import { SOURCES } from "utils/constants"
import { Problem } from "utils/types"
import { code } from "oj/composables/code"
import { isDesktop } from "~/shared/composables/breakpoints"
import Form from "./Form.vue"
import { problem } from "oj/composables/problem"
const Form = defineAsyncComponent(() => import("./Form.vue"))
const CodeEditor = defineAsyncComponent(() => import("~/shared/CodeEditor.vue"))
interface Props {
problem: Problem
}
const props = defineProps<Props>()
code.language = props.problem.languages[0] || "C"
code.value = props.problem.template[code.language] || SOURCES[code.language]
code.language = problem.value!.languages[0] || "C"
code.value = problem.value!.template[code.language] || SOURCES[code.language]
const editorHeight = computed(() =>
isDesktop.value ? "calc(100vh - 133px)" : "calc(100vh - 180px)"
isDesktop.value ? "calc(100vh - 133px)" : "calc(100vh - 172px)"
)
</script>
<template>
<n-space vertical>
<Form :problem="props.problem" />
<Form />
<CodeEditor
v-model="code.value"
:language="code.language"