Bläddra i källkod

add options to embed

AykutSarac 2 år sedan
förälder
incheckning
ba02b60e06
2 ändrade filer med 16 tillägg och 4 borttagningar
  1. 1 1
      src/containers/Home/index.tsx
  2. 15 3
      src/pages/Widget/index.tsx

+ 1 - 1
src/containers/Home/index.tsx

@@ -207,7 +207,7 @@ const EmbedSection = () => (
           setTimeout(() => {
           setTimeout(() => {
             frame?.postMessage({
             frame?.postMessage({
               json: defaultJson,
               json: defaultJson,
-            });
+            }, "*");
           }, 500);
           }, 500);
         }}
         }}
       ></Styles.StyledIframge>
       ></Styles.StyledIframge>

+ 15 - 3
src/pages/Widget/index.tsx

@@ -6,7 +6,8 @@ import { baseURL } from "src/constants/data";
 import { NodeModal } from "src/containers/Modals/NodeModal";
 import { NodeModal } from "src/containers/Modals/NodeModal";
 import useGraph from "src/store/useGraph";
 import useGraph from "src/store/useGraph";
 import { parser } from "src/utils/jsonParser";
 import { parser } from "src/utils/jsonParser";
-import styled from "styled-components";
+import styled, { ThemeProvider } from "styled-components";
+import { darkTheme, lightTheme } from "src/constants/theme";
 
 
 const Graph = dynamic<any>(() => import("src/components/Graph").then(c => c.Graph), {
 const Graph = dynamic<any>(() => import("src/components/Graph").then(c => c.Graph), {
   ssr: false,
   ssr: false,
@@ -62,6 +63,7 @@ const WidgetPage = () => {
 
 
   const [isModalVisible, setModalVisible] = React.useState(false);
   const [isModalVisible, setModalVisible] = React.useState(false);
   const [selectedNode, setSelectedNode] = React.useState<[string, string][]>([]);
   const [selectedNode, setSelectedNode] = React.useState<[string, string][]>([]);
+  const [theme, setTheme] = React.useState("dark");
 
 
   const collapsedNodes = useGraph(state => state.collapsedNodes);
   const collapsedNodes = useGraph(state => state.collapsedNodes);
   const collapsedEdges = useGraph(state => state.collapsedEdges);
   const collapsedEdges = useGraph(state => state.collapsedEdges);
@@ -88,12 +90,22 @@ const WidgetPage = () => {
     if (!inIframe()) push("/");
     if (!inIframe()) push("/");
   }, [collapsedNodes, collapsedEdges, loading, push]);
   }, [collapsedNodes, collapsedEdges, loading, push]);
 
 
+
   React.useEffect(() => {
   React.useEffect(() => {
     const handler = (event: EmbedMessage) => {
     const handler = (event: EmbedMessage) => {
       try {
       try {
         if (!event.data?.json) return;
         if (!event.data?.json) return;
+        
         const { nodes, edges } = parser(event.data.json);
         const { nodes, edges } = parser(event.data.json);
 
 
+        const options = {
+          direction: "RIGHT",
+          ...event.data.options
+        };
+
+        setGraphValue("direction", options.direction);
+        if (options.theme === "light" || options.theme === "dark") setTheme(options.theme);
+
         setGraphValue("nodes", nodes);
         setGraphValue("nodes", nodes);
         setGraphValue("edges", edges);
         setGraphValue("edges", edges);
       } catch (error) {
       } catch (error) {
@@ -118,7 +130,7 @@ const WidgetPage = () => {
     );
     );
 
 
   return (
   return (
-    <>
+    <ThemeProvider theme={theme === "dark" ? darkTheme : lightTheme}>
       <Graph openModal={openModal} setSelectedNode={setSelectedNode} isWidget />
       <Graph openModal={openModal} setSelectedNode={setSelectedNode} isWidget />
       <NodeModal
       <NodeModal
         selectedNode={selectedNode}
         selectedNode={selectedNode}
@@ -128,7 +140,7 @@ const WidgetPage = () => {
       <StyledAttribute href={`${baseURL}/editor`} target="_blank" rel="noreferrer">
       <StyledAttribute href={`${baseURL}/editor`} target="_blank" rel="noreferrer">
         jsoncrack.com
         jsoncrack.com
       </StyledAttribute>
       </StyledAttribute>
-    </>
+    </ThemeProvider>
   );
   );
 };
 };