<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>GraphViz WASM</title>

    <script>
        const dot = `
        digraph G {
            node [shape=rect];

            subgraph cluster_0 {
                style=filled;
                color=lightgrey;
                node [style=filled,color=white];
                a0 -> a1 -> a2 -> a3;
                label = "process #1";
            }

            subgraph cluster_1 {
                node [style=filled];
                b0 -> b1 -> b2 -> b3;
                label = "process #2";
                color=blue
            }

            start -> a0;
            start -> b0;
            a1 -> b3;
            b2 -> a3;
            a3 -> a0;
            a3 -> end;
            b3 -> end;

            start [shape=Mdiamond, label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" >
                <TR>
                    <TD COLSPAN="3" BGCOLOR="azure3"><b><FONT FACE="Times-Roman" POINT-SIZE="12.0" >one obj</FONT></b></TD>
                </TR>
                <TR>
                    <TD PORT="in1" BGCOLOR="white">in1<br/>:In1</TD>
                    <TD ROWSPAN="2" BGCOLOR="azure3"> some text </TD>
                    <TD PORT="out1"  BGCOLOR="0.5 0.5 0.5">out1<br/>:Out1</TD>
                </TR>
                <TR>
                    <TD PORT="in2"   HREF="somepage.html" BGCOLOR="0.45 0.5 0.75">in2<br/>:In2</TD>
                    <TD PORT="out2"  HREF="somepage.html" BGCOLOR="0.8 0.5 1">out2<br/>:Out2</TD>
                </TR>
            </TABLE>>];
            end [shape=Msquare];
        }
    `;
    </script>
</head>

<body>
    <h3>ESM</h3>
    <div id="ESM"></div>
    <script type="module">
        import { Graphviz } from "https://cdn.jsdelivr.net/npm/@hpcc-js/wasm/dist/index.js";
        // import { Graphviz } from "./packages/wasm/dist/index.js";
        if (Graphviz) {
            const graphviz = await Graphviz.load();
            const svg = graphviz.layout(dot, "svg", "dot");
            document.getElementById("ESM").innerHTML = svg;
        } 
    </script>
    <hr>
    <h3>UMD 1</h3>
    <div id="UMD1"></div>
    <script src="https://cdn.jsdelivr.net/npm/@hpcc-js/wasm/dist/graphviz.umd.js"></script>
    <!-- <script src="./packages/wasm/dist/graphviz.umd.js"></script> -->
    <script>
        var hpccWasm = window["@hpcc-js/wasm"];
        hpccWasm.Graphviz.load().then(graphviz => {
            var svg = graphviz.layout(dot, "svg", "dot");
            document.getElementById("UMD1").innerHTML = svg;
        }).catch(e => console.log(e.message));
    </script>
    <hr>
    <h3>UMD 2</h3>
    <div id="UMD2"></div>
    <script src="https://cdn.jsdelivr.net/npm/@hpcc-js/wasm/dist/index.umd.js"></script>
    <!-- <script src="./packages/wasm/dist/index.umd.js"></script> -->
    <script>
        var hpccWasm = window["@hpcc-js/wasm"];
        hpccWasm.Graphviz.load().then(graphviz => {
            var svg = graphviz.layout(dot, "svg", "dot");
            document.getElementById("UMD2").innerHTML = svg;
        }).catch(e => console.log(e.message));
    </script>
    <hr>
    <h3>Web Worker</h3>
    <div id="worker"></div>
    <script type="module">
        const myWorker = new Worker("./index-worker.js", { type: 'module' });
        myWorker.onmessage = (e) => {
            document.getElementById("worker").innerHTML = e.data;
        }
        myWorker.postMessage(dot);
    </script>
    <hr>
    <h3>Image</h3>
    <div id="image"></div>
    <script type="module">
        import { Graphviz } from "https://cdn.jsdelivr.net/npm/@hpcc-js/wasm/dist/index.js";
        // import { Graphviz } from "./dist/index.js";
        if (Graphviz) {
            const graphviz = await Graphviz.load();
            const svg = graphviz.neato('digraph { a[image="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"]; }', "svg", { images: [{ path: "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png", width: "272px", height: "92px" }] });
            document.getElementById("image").innerHTML = svg;
        } 
    </script>
    <hr>
    <h3>Image 2</h3>
    <div id="image2"></div>
    <script type="module">
        import { Graphviz } from "https://cdn.jsdelivr.net/npm/@hpcc-js/wasm/dist/index.js";
        // import { Graphviz } from "./dist/index.js";
        if (Graphviz) {
            const graphviz = await Graphviz.load();
            const svg = graphviz.neato('digraph { a[image="./resources/hpcc-logo.png"]; }', "svg", { images: [{ path: "./resources/hpcc-logo.png", width: "272px", height: "92px" }] });
            document.getElementById("image2").innerHTML = svg;
        } 
    </script>
</body>

</html>