diff --git a/app/api/db/schema.prisma b/app/api/db/schema.prisma
index d91dda8..3bc72bf 100644
--- a/app/api/db/schema.prisma
+++ b/app/api/db/schema.prisma
@@ -5,7 +5,7 @@ datasource db {
generator client {
provider = "prisma-client-js"
- binaryTargets = "native"
+ binaryTargets = ["native", "darwin-arm64", "darwin"]
}
// sqlLight does not suport enums so we can't use enums until we set up postgresql in dev mode
diff --git a/app/web/src/Routes.js b/app/web/src/Routes.js
index a2f053b..58578bc 100644
--- a/app/web/src/Routes.js
+++ b/app/web/src/Routes.js
@@ -56,6 +56,7 @@ const Routes = () => {
+
diff --git a/app/web/src/components/EmbedProjectCell/EmbedProjectCell.mock.ts b/app/web/src/components/EmbedProjectCell/EmbedProjectCell.mock.ts
new file mode 100644
index 0000000..2e297e0
--- /dev/null
+++ b/app/web/src/components/EmbedProjectCell/EmbedProjectCell.mock.ts
@@ -0,0 +1,6 @@
+// Define your own mock data here:
+export const standard = (/* vars, { ctx, req } */) => ({
+ ideProject: {
+ id: 42,
+ },
+})
diff --git a/app/web/src/components/EmbedProjectCell/EmbedProjectCell.stories.tsx b/app/web/src/components/EmbedProjectCell/EmbedProjectCell.stories.tsx
new file mode 100644
index 0000000..8a20e23
--- /dev/null
+++ b/app/web/src/components/EmbedProjectCell/EmbedProjectCell.stories.tsx
@@ -0,0 +1,16 @@
+import { Loading, Empty, Success } from './EmbedProjectCell'
+import { standard } from './EmbedProjectCell.mock'
+
+export const loading = () => {
+ return Loading ? : null
+}
+
+export const empty = () => {
+ return Empty ? : null
+}
+
+export const success = () => {
+ return Success ? : null
+}
+
+export default { title: 'Cells/EmbedProjectCell' }
diff --git a/app/web/src/components/EmbedProjectCell/EmbedProjectCell.test.tsx b/app/web/src/components/EmbedProjectCell/EmbedProjectCell.test.tsx
new file mode 100644
index 0000000..58efd22
--- /dev/null
+++ b/app/web/src/components/EmbedProjectCell/EmbedProjectCell.test.tsx
@@ -0,0 +1,21 @@
+import { render, screen } from '@redwoodjs/testing'
+import { Loading, Empty, Success } from './EmbedProjectCell'
+import { standard } from './EmbedProjectCell.mock'
+
+describe('EmbedProjectCell', () => {
+ test('Loading renders successfully', () => {
+ render()
+ // Use screen.debug() to see output
+ expect(screen.getByText('Loading...')).toBeInTheDocument()
+ })
+
+ test('Empty renders successfully', async () => {
+ render()
+ expect(screen.getByText('Empty')).toBeInTheDocument()
+ })
+
+ test('Success renders successfully', async () => {
+ render()
+ expect(screen.getByText(/42/i)).toBeInTheDocument()
+ })
+})
diff --git a/app/web/src/components/EmbedProjectCell/EmbedProjectCell.tsx b/app/web/src/components/EmbedProjectCell/EmbedProjectCell.tsx
new file mode 100644
index 0000000..fdda356
--- /dev/null
+++ b/app/web/src/components/EmbedProjectCell/EmbedProjectCell.tsx
@@ -0,0 +1,71 @@
+import useUser from 'src/helpers/hooks/useUser'
+import EmbedViewer from 'src/components/EmbedViewer/EmbedViewer'
+import { useIdeState } from 'src/helpers/hooks/useIdeState'
+import { IdeContext } from 'src/helpers/hooks/useIdeContext'
+
+export const QUERY = gql`
+ query FIND_PROJECT_BY_USENAME_TITLE(
+ $projectTitle: String!
+ $userName: String!
+ ) {
+ project: projectByUserAndTitle(
+ projectTitle: $projectTitle
+ userName: $userName
+ ) {
+ id
+ title
+ description
+ code
+ mainImage
+ createdAt
+ cadPackage
+ user {
+ id
+ userName
+ image
+ }
+ }
+ }
+`
+
+export interface Project {
+ id: string
+ title: string
+ code: string
+ description: string
+ mainImage: string
+ createdAt: string
+ cadPackage: 'openscad' | 'cadquery'
+ user: {
+ id: string
+ userName: string
+ image: string
+ }
+}
+
+export const Loading = () => Loading...
+
+export const Empty = () => Project not found
+
+interface SaveCodeArgs {
+ input: any
+ id: string
+ isFork: boolean
+}
+
+export const Success = ({
+ project,
+ refetch,
+}: {
+ project: Project
+ refetch: any
+}) => {
+ const [state, thunkDispatch] = useIdeState()
+
+
+ return (
+
+
+
+ )
+}
diff --git a/app/web/src/components/EmbedViewer/EmbedViewer.tsx b/app/web/src/components/EmbedViewer/EmbedViewer.tsx
new file mode 100644
index 0000000..6d28e98
--- /dev/null
+++ b/app/web/src/components/EmbedViewer/EmbedViewer.tsx
@@ -0,0 +1,19 @@
+import { useIdeInit } from 'src/components/EncodedUrl/helpers'
+import { useIdeContext } from 'src/helpers/hooks/useIdeContext'
+import IdeViewer from 'src/components/IdeViewer/IdeViewer'
+import { use3dViewerResize } from 'src/helpers/hooks/use3dViewerResize'
+
+function EmbedViewer() {
+ const { state, project } = useIdeContext()
+ console.log('from EmbedViewer', { cadPackage: project.cadPackage, code: project.code })
+ useIdeInit(project?.cadPackage, project?.code || state?.code, "viewer")
+ const { viewerDomRef } = use3dViewerResize()
+
+ return (
+
+
+
+ )
+}
+
+export default EmbedViewer
\ No newline at end of file
diff --git a/app/web/src/components/IdeViewer/IdeViewer.tsx b/app/web/src/components/IdeViewer/IdeViewer.tsx
index 51ea4a4..d1af0d7 100644
--- a/app/web/src/components/IdeViewer/IdeViewer.tsx
+++ b/app/web/src/components/IdeViewer/IdeViewer.tsx
@@ -4,8 +4,10 @@ import { PureIdeViewer } from './PureIdeViewer'
const IdeViewer = ({
handleOwnCamera = false,
+ isMinimal = false,
}: {
- handleOwnCamera?: boolean
+ handleOwnCamera?: boolean,
+ isMinimal?: boolean,
}) => {
const { state, thunkDispatch } = useIdeContext()
const dataType = state.objectData?.type
@@ -35,7 +37,7 @@ const IdeViewer = ({
}
})
}
-
+
return (
)
}
diff --git a/app/web/src/components/ProjectProfile/ProjectProfile.tsx b/app/web/src/components/ProjectProfile/ProjectProfile.tsx
index cb0fb36..02d4700 100644
--- a/app/web/src/components/ProjectProfile/ProjectProfile.tsx
+++ b/app/web/src/components/ProjectProfile/ProjectProfile.tsx
@@ -52,6 +52,7 @@ const ProjectProfile = ({
})
)
}, [currentUser, project?.title, userProject.userName])
+ console.log('from ProjectProfile', { cadPackage: project.cadPackage, code: project.code })
useIdeInit(project?.cadPackage, project?.code, 'viewer')
const [newDescription, setNewDescription] = useState(project?.description)
const onDescriptionChange = (description) => setNewDescription(description())
diff --git a/app/web/src/pages/EmbedProjectPage/EmbedProjectPage.tsx b/app/web/src/pages/EmbedProjectPage/EmbedProjectPage.tsx
new file mode 100644
index 0000000..bca9257
--- /dev/null
+++ b/app/web/src/pages/EmbedProjectPage/EmbedProjectPage.tsx
@@ -0,0 +1,11 @@
+import EmbedProjectCell from 'src/components/EmbedProjectCell'
+
+const EmbedProjectPage = ({ userName, projectTitle }) => {
+ return (
+ <>
+
+ >
+ )
+}
+
+export default EmbedProjectPage