Strilanc/Quirk

View on GitHub
html/quirk.template.html

Summary

Maintainability
Test Coverage
<!DOCTYPE html>
<html>
    <head lang="en">
        <meta charset="UTF-8">
        <meta name="keywords" content="quantum,circuit,simulator,quirk">
        <meta name="description" content="Quirk is an open-source drag-and-drop quantum circuit simulator for exploring and understanding small quantum circuits.">
        <title>Quirk: Quantum Circuit Simulator</title>
        <link rel="shortcut icon" href="data:image/png;base64,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">

        <!-- Whatever is between these start/end analytic tags is stripped by the 'downloading offline copy' code. -->
        <!-- Start Analytics -->
        <!-- End Analytics -->
    </head>
    <body style="margin: 0">
        <!-- Primary content -->
        <div id="inspectorDiv" style="display: none">
            <!-- Buttons -->
            <div style="margin: 5px;">
                <button id="menu-button" style="min-width: 50px; min-height: 30px;">Menu</button>
                &nbsp;
                &nbsp;
                <button id="export-button" style="min-width: 50px; min-height: 30px;">Export</button>
                &nbsp;
                &nbsp;
                <button id="clear-circuit-button" style="min-width: 50px; min-height: 30px;">Clear Circuit</button>
                <button id="clear-all-button" style="min-width: 50px; min-height: 30px;">Clear ALL</button>
                &nbsp;
                &nbsp;
                <button id="undo-button" style="min-width: 50px; min-height: 30px;">Undo</button>
                <button id="redo-button" style="min-width: 50px; min-height: 30px;">Redo</button>
                &nbsp;
                &nbsp;
                <button id="gate-forge-button" style="min-width: 50px; min-height: 30px;">Make Gate</button>
                &nbsp;
                &nbsp;
                &nbsp;
                &nbsp;
                <span style="color:#BBB">Version 2.3</span>
            </div>

            <!-- Circuit drawing area -->
            <div id="canvasDiv" style="width: 100%; touch-action: manipulation; tab-index: 0; position: relative;">
                <canvas id="drawCanvas"></canvas>
            </div>

            <!-- INCLUDE EXPORT PART -->

            <!-- INCLUDE FORGE PART -->
        </div>

        <!-- INCLUDE MENU PART -->

        <!-- INCLUDE ERROR PART -->

        <!-- Javascript detection -->
        <div id="noscript-div" class="noscript-warning" style="
                        animation-duration: 3.0s;
                   -moz-animation-duration: 3.0s;
                -webkit-animation-duration: 3.0s;
                     -o-animation-duration: 3.0s;
                        animation-name: delay-showing-before-hide-script-can-run-but-then-jump-in;
                   -moz-animation-name: delay-showing-before-hide-script-can-run-but-then-jump-in;
                -webkit-animation-name: delay-showing-before-hide-script-can-run-but-then-jump-in;
                     -o-animation-name: delay-showing-before-hide-script-can-run-but-then-jump-in;
                      background-color: white;
                                border: 1px solid red;
                               padding: 10px;">
            <style scoped>
                @keyframes delay-showing-before-hide-script-can-run-but-then-jump-in {
                    from { opacity: 0; }
                    95% { opacity: 0; }
                    to { opacity: 1; }
                }
                @-webkit-keyframes delay-showing-before-hide-script-can-run-but-then-jump-in {
                    from { opacity: 0; }
                    95% { opacity: 0; }
                    to { opacity: 1; }
                }
                @-moz-keyframes delay-showing-before-hide-script-can-run-but-then-jump-in {
                    from { opacity: 0; }
                    95% { opacity: 0; }
                    to { opacity: 1; }
                }
                @-o-keyframes delay-showing-before-hide-script-can-run-but-then-jump-in {
                    from { opacity: 0; }
                    95% { opacity: 0; }
                    to { opacity: 1; }
                }

                .noscript-warning {
                    color: red;
                    font-size: 24px;
                    position: absolute;
                    top: 25%;
                    left: 50%;
                    transform: translate(-50%, -50%);
                }
            </style>
            You appear to have JavaScript blocked. And Quirk is made out of JavaScript... :(
        </div>
        <script>
          document.getElementById('noscript-div').style.display = 'none';
        </script>

        <script>
          document.getElementById('noscript-div').style.display = 'block';
          //noinspection InnerHTMLJS
          document.QUIRK_QUINE_ALL_HTML_ORIGINAL = '<!'+'DOCTYPE html>\n<'+'html>\n    ' +
                  document.documentElement.innerHTML + '\n<' + '/html>';
          document.getElementById('noscript-div').style.display = 'none';
//DEFAULT_CIRCUIT_START
document.DEFAULT_CIRCUIT = undefined;
//DEFAULT_CIRCUIT_END

// UN-MINIFIED SOURCE IS AVAILABLE FROM github.com/Strilanc/Quirk

<!-- INCLUDE SOURCE PART -->

        </script>
    </body>
</html>