diff --git a/src/Attribution.tsx b/src/Attribution.tsx new file mode 100644 index 0000000..076f67a --- /dev/null +++ b/src/Attribution.tsx @@ -0,0 +1,16 @@ +import {Center, Text} from "@mantine/core"; + +export default function Attribution() { + return
+ + + + + Technical University of Munich
+
+ Bachelor's Thesis in Informatics for the course Compiler Construction at the chair I2
+
+ By Michael Spiss, advised by Dr. Michael Petter +
+
+} \ No newline at end of file diff --git a/src/features/analyze_regex/presentation/screens/RegexInputScreen.tsx b/src/features/analyze_regex/presentation/screens/RegexInputScreen.tsx index 17e7c18..43e87ee 100644 --- a/src/features/analyze_regex/presentation/screens/RegexInputScreen.tsx +++ b/src/features/analyze_regex/presentation/screens/RegexInputScreen.tsx @@ -1,4 +1,4 @@ -import {Button, Center, Group, Paper, Text, Title, useMantineTheme} from "@mantine/core"; +import {ActionIcon, Button, Center, Group, Modal, Paper, Text, Title, useMantineTheme} from "@mantine/core"; import LectureConventions from "@/layout/presentation/LectureConventions"; import {useEventListener} from "@mantine/hooks"; import {useState} from "react"; @@ -7,6 +7,8 @@ import RegexError from "@/analyze_regex/domain/models/regexError"; import useAppStateStore from "@/layout/stores/appStateStore"; import RegexInput from "@/analyze_regex/presentation/RegexInput"; import DefaultError from "@/layout/presentation/DefaultError"; +import Attribution from "../../../../Attribution"; +import {IconInfoCircle} from "@tabler/icons"; const RegexExample = (props: { regex: string }) => { return { export default function RegexInputScreen() { const theme = useMantineTheme(); const [isLoading, setIsLoading] = useState(false); + const [showAttribution, setShowAttribution] = useState(false); const [error, setError] = useState(null); const formRef = useEventListener('submit', (event) => { @@ -60,43 +63,51 @@ export default function RegexInputScreen() { } }); - return
- -
- Input regular expression - - { - if (error !== null && error?.position !== -1) { - setError(new RegexError(error!.title, error!.message, -1)) - } - }} - onEnter={() => { - formRef.current.dispatchEvent(new Event("submit", {cancelable: true})); - }}/> - - + return <> +
+ + + setShowAttribution(true)}> - Or try one of the lecture examples: , , , , - - {!error ? null : } - - -
+
+ Input regular expression + + { + if (error !== null && error?.position !== -1) { + setError(new RegexError(error!.title, error!.message, -1)) + } + }} + onEnter={() => { + formRef.current.dispatchEvent(new Event("submit", {cancelable: true})); + }}/> + + + + Or try one of the lecture examples: , , , , +
+ {!error ? null : } + +
+
+ setShowAttribution(false)}> + } diff --git a/src/features/tree_builder/presentation/CompletionModal.tsx b/src/features/tree_builder/presentation/CompletionModal.tsx index cafa3e0..752e25d 100644 --- a/src/features/tree_builder/presentation/CompletionModal.tsx +++ b/src/features/tree_builder/presentation/CompletionModal.tsx @@ -1,17 +1,15 @@ -import {ActionIcon, Box, Button, Divider, Flex, Group, Modal, Text, useMantineTheme} from "@mantine/core"; +import {Box, Button, Flex, Group, Modal, useMantineTheme} from "@mantine/core"; import useAppStateStore from "@/layout/stores/appStateStore"; import backToHome from "../../../backToHome"; import AutomatonPreview from "@/automaton_builder/presentation/AutomatonPreview"; import InteractiveTreeBuilder from "@/tree_builder/presentation/InteractiveTreeBuilder"; import RegexHighlighter from "@/analyze_regex/presentation/RegexHighlighter"; -import {IconCircleCheck, IconInfoCircle} from "@tabler/icons"; -import {useState} from "react"; +import {IconCircleCheck} from "@tabler/icons"; export default function CompletionModal() { const isOpen = useAppStateStore(state => state.isDone); const regex = useAppStateStore(state => state.regex); const theme = useMantineTheme(); - const [displayCredits, setDisplayCredits] = useState(false); return useAppStateStore.setState({isDone: false})} @@ -21,48 +19,33 @@ export default function CompletionModal() { overlayBlur={5} overlayColor={theme.colors.gray[5]} overlayOpacity={.5} - size={displayCredits ? "75%" : "50%"} - styles={{modal: { - minWidth: 450 - }}} + size={"50%"} + styles={{ + modal: { + minWidth: 450 + } + }} > - + - Well done! You completed the Berry-Sethi construction for the regular expression + Well done! You completed the Berry-Sethi construction for the regular + expression
- +
- {displayCredits ? : null} - {displayCredits ? - - - - - Technical University of Munich
-
- Bachelor's Thesis in Informatics
- For the Course Compiler Construction
- At the chair I2
-
- By Michael Spiss
- Advised by Dr. Michael Petter -
-
: null}
- - - - - - setDisplayCredits(!displayCredits)}> + + +
}