diff --git a/src/components/Editor/Project/Project.jsx b/src/components/Editor/Project/Project.jsx
index 4fa543b97..9baf1e198 100644
--- a/src/components/Editor/Project/Project.jsx
+++ b/src/components/Editor/Project/Project.jsx
@@ -25,6 +25,7 @@ const Project = (props) => {
} = props;
const saving = useSelector((state) => state.editor.saving);
const autosave = useSelector((state) => state.editor.lastSaveAutosave);
+ const project = useSelector((state) => state.editor.project);
useEffect(() => {
if (saving === "success" && autosave === false) {
@@ -52,6 +53,8 @@ const Project = (props) => {
setLoading(false);
}, []);
+ const iframeSrc = "https://scratch-editor.pages.dev/";
+
return (
{
{withProjectbar &&
}
{!loading && (
-
-
-
-
+ {project.project_type === "scratch" ? (
+
+ ) : (
+ <>
+
+
+
+
+ >
+ )}
)}
diff --git a/src/hooks/useProject.js b/src/hooks/useProject.js
index 3174735f2..a513b18bd 100644
--- a/src/hooks/useProject.js
+++ b/src/hooks/useProject.js
@@ -2,7 +2,7 @@
import { useRef, useEffect, useState } from "react";
import { useDispatch, useSelector } from "react-redux";
import { syncProject, setProject } from "../redux/EditorSlice";
-import { defaultPythonProject } from "../utils/defaultProjects";
+import { defaultScratchProject } from "../utils/defaultProjects";
import { useTranslation } from "react-i18next";
export const useProject = ({
@@ -87,7 +87,7 @@ export const useProject = ({
return;
}
- const data = defaultPythonProject;
+ const data = defaultScratchProject;
dispatch(setProject(data));
}
}, [
diff --git a/src/hooks/useProject.test.js b/src/hooks/useProject.test.js
index ed4b88d63..c3123dd59 100644
--- a/src/hooks/useProject.test.js
+++ b/src/hooks/useProject.test.js
@@ -4,7 +4,7 @@ import configureStore from "redux-mock-store";
import { useProject } from "./useProject";
import { syncProject, setProject } from "../redux/EditorSlice";
-import { defaultPythonProject } from "../utils/defaultProjects";
+import { defaultScratchProject } from "../utils/defaultProjects";
jest.mock("react-redux", () => ({
...jest.requireActual("react-redux"),
@@ -53,9 +53,9 @@ describe("When not embedded", () => {
wrapper = ({ children }) =>
{children};
});
- test("If no identifier uses default python project", () => {
+ test("If no identifier uses default Scratch project", () => {
renderHook(() => useProject({}), { wrapper });
- expect(setProject).toHaveBeenCalledWith(defaultPythonProject);
+ expect(setProject).toHaveBeenCalledWith(defaultScratchProject);
});
test("If cached project matches identifer uses cached project", () => {
diff --git a/src/utils/defaultProjects.js b/src/utils/defaultProjects.js
index abacf349f..bb1c6f32b 100644
--- a/src/utils/defaultProjects.js
+++ b/src/utils/defaultProjects.js
@@ -21,7 +21,14 @@ export const defaultHtmlProject = {
],
};
+export const defaultScratchProject = {
+ project_type: "scratch",
+ name: i18n.t("project.untitled"),
+ components: [{ extension: "sb3", name: "main", content: "" }],
+};
+
export const DEFAULT_PROJECTS = {
python: defaultPythonProject,
html: defaultHtmlProject,
+ scratch: defaultScratchProject,
};
diff --git a/webpack.config.js b/webpack.config.js
index 0666b78f8..62b15c29d 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -106,7 +106,7 @@ module.exports = {
"X-Requested-With, content-type, Authorization",
// Pyodide - required for input and code interruption - needed on the host app
"Cross-Origin-Opener-Policy": "same-origin",
- "Cross-Origin-Embedder-Policy": "require-corp",
+ "Cross-Origin-Embedder-Policy": "cross-origin"
},
setupMiddlewares: (middlewares, devServer) => {
devServer.app.use((req, res, next) => {