MCPcopy Index your code
hub / github.com/SplootCode/splootcode / ProjectEditor

Function ProjectEditor

src/pages/project_editor.tsx:21–137  ·  view source on GitHub ↗
(props: ProjectEditorProps)

Source from the content-addressed store, hash-verified

19}
20
21export const ProjectEditor = (props: ProjectEditorProps) => {
22 const { projectLoader } = props
23 const { projectID, ownerID } = useParams() as { ownerID: string; projectID: string }
24 const [loadedProject, setLoadedProject] = useState<Project>(null)
25 const [saveProjectModalState, setSaveProjectModalState] = useState({ open: false, clonedFrom: null })
26 const [editorState, setEditorState] = useState<EditorState>(null)
27 const [exportTextModalOpen, setExportTextModalOpen] = useState(false)
28
29 const history = useHistory()
30
31 useEffect(() => {
32 if (loadedProject) {
33 const editorState = new EditorState(loadedProject, hostingConfig, projectLoader)
34 editorState.loadDefaultFile().then(() => {
35 setEditorState(editorState)
36 })
37
38 return () => {
39 editorState.cleanup()
40 }
41 }
42 }, [loadedProject])
43
44 const loadProjectFromStorage = () => {
45 setLoadedProject(null)
46 if (ownerID === 'examples') {
47 loadExampleProject(projectID).then((proj) => {
48 setLoadedProject(proj)
49 setEditorState(null)
50 })
51 } else if (ownerID === 'local') {
52 projectLoader.loadProject(ownerID, projectID).then((proj) => {
53 setLoadedProject(proj)
54 setEditorState(null)
55 })
56 }
57 }
58
59 useEffect(() => {
60 loadProjectFromStorage()
61 }, [projectID, ownerID])
62
63 const menuItems: MainMenuItem[] = [
64 {
65 name: 'New Project',
66 onClick: () => {
67 setSaveProjectModalState({ open: true, clonedFrom: null })
68 },
69 },
70 {
71 name: 'Save As...',
72 onClick: () => {
73 setSaveProjectModalState({ open: true, clonedFrom: loadedProject })
74 },
75 },
76 {
77 name: 'Export Project',
78 onClick: async () => {

Callers

nothing calls this directly

Calls 5

loadDefaultFileMethod · 0.95
cleanupMethod · 0.95
exportProjectToFolderFunction · 0.90
loadProjectFromFolderFunction · 0.90
loadProjectFromStorageFunction · 0.85

Tested by

no test coverage detected