2-SAT Implication Graph

author(s): Paweł Fus

by nim_a101

HTML

<link rel="stylesheet" href="style.css">
    <script type="text/javascript" src="https://unpkg.com/vis-network/standalone/umd/vis-network.min.js"></script>
    <script type="text/javascript" src="script.js" defer></script>
    <script src="https://use.fontawesome.com/c3ef28c600.js"></script>

<button id="genGraph"><span class="fa fa-play fa-large"></span></button>

<!-- Div to display the graph -->
<div id="network"></div>

CSS

#network {
    width: 88%;
    height: 800px;
    border: 3px solid lightgray;
    margin-top: 10px;
}

h3 {
    text-align: center;
}

#satInput {
    width: 40%;
    padding: 8px;
    margin-bottom: 10px;
}

button {
    padding: 8px 12px;
    font-size: 13px;
}

JavaScript

// Hardcoded DOT content from pydeps (replace this with your real deps.dot)
const DOT_SOURCE = `

digraph G {
    concentrate = true;

    rankdir = TB;
    node [style=filled,fillcolor="#ffffff",fontcolor="#000000",fontname=Helvetica,fontsize=10];

    discord_modules_ads [fillcolor="#f91010",fontcolor="#ffffff",label="discord\.\nmodules\.\nads"];
    discord_modules_ads_conftest [fillcolor="#a13535",fontcolor="#ffffff",label="discord\.\nmodules\.\nads\.\nconftest"];
    discord_modules_ads_definition [fillcolor="#9f5656",fontcolor="#ffffff",label="discord\.\nmodules\.\nads\.\ndefinition"];
    discord_modules_ads_lib [fillcolor="blue",fontcolor="white",label="discord\.\nmodules\.\nads\.\nlib",shape="box"];
    discord_modules_ads_models [fillcolor="blue",fontcolor="white",label="discord\.\nmodules\.\nads\.\nmodels",shape="box"];
    discord_modules_ads_response_models [fillcolor="blue",fontcolor="white",label="discord\.\nmodules\.\nads\.\nresponse_models",shape="box"];
    discord_modules_ads_scripts [fillcolor="#9f5656",fontcolor="#ffffff",label="discord\.\nmodules\.\nads\.\nscripts"];
    discord_modules_ads_views [fillcolor="#822b2b",fontcolor="#ffffff",label="discord\.\nmodules\.\nads\.\nviews"];
    discord_modules_quests [fillcolor="#f91010",fontcolor="#ffffff",label="discord\.\nmodules\.\nquests"];
    discord_modules_quests_conftest [fillcolor="#8b4b4b",fontcolor="#ffffff",label="discord\.\nmodules\.\nquests\.\nconftest"];
    discord_modules_quests_definition [fillcolor="#9f5656",fontcolor="#ffffff",label="discord\.\nmodules\.\nquests\.\ndefinition"];
    discord_modules_quests_lib [fillcolor="blue",fontcolor="white",label="discord\.\nmodules\.\nquests\.\nlib",shape="box"];
    discord_modules_quests_models [fillcolor="blue",fontcolor="white",label="discord\.\nmodules\.\nquests\.\nmodels",shape="box"];
    discord_modules_quests_response_models...