diff --git a/asset-manifest.json b/asset-manifest.json new file mode 100644 index 00000000..9dd52f9d --- /dev/null +++ b/asset-manifest.json @@ -0,0 +1,13 @@ +{ + "files": { + "main.css": "/solver/static/css/main.02c2b3e4.css", + "main.js": "/solver/static/js/main.697d5ba5.js", + "index.html": "/solver/index.html", + "main.02c2b3e4.css.map": "/solver/static/css/main.02c2b3e4.css.map", + "main.697d5ba5.js.map": "/solver/static/js/main.697d5ba5.js.map" + }, + "entrypoints": [ + "static/css/main.02c2b3e4.css", + "static/js/main.697d5ba5.js" + ] +} \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 00000000..a11777cc Binary files /dev/null and b/favicon.ico differ diff --git a/index.html b/index.html new file mode 100644 index 00000000..0f1210d2 --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +Sudoku solver
\ No newline at end of file diff --git a/logo192.png b/logo192.png new file mode 100644 index 00000000..fc44b0a3 Binary files /dev/null and b/logo192.png differ diff --git a/logo512.png b/logo512.png new file mode 100644 index 00000000..a4e47a65 Binary files /dev/null and b/logo512.png differ diff --git a/manifest.json b/manifest.json new file mode 100644 index 00000000..3823d9f9 --- /dev/null +++ b/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "Sudoku solver", + "name": "Yet another sudoku solver", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#49515f", + "background_color": "#3e4451" +} diff --git a/robots.txt b/robots.txt new file mode 100644 index 00000000..e9e57dc4 --- /dev/null +++ b/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/static/css/main.02c2b3e4.css b/static/css/main.02c2b3e4.css new file mode 100644 index 00000000..68ead8dc --- /dev/null +++ b/static/css/main.02c2b3e4.css @@ -0,0 +1,2 @@ +*,:after,:before{background-repeat:no-repeat;box-sizing:border-box}:after,:before{text-decoration:inherit;vertical-align:inherit}:where(:root){-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;cursor:default;line-height:1.5;overflow-wrap:break-word;tab-size:4}:where(body){margin:0}:where(h1){font-size:2em;margin:.67em 0}:where(dl,ol,ul) :where(dl,ol,ul){margin:0}:where(hr){color:inherit;height:0}:where(nav) :where(ol,ul){list-style-type:none;padding:0}:where(nav li):before{content:"\200B";float:left}:where(pre){font-family:monospace,monospace;font-size:1em;overflow:auto}:where(abbr[title]){text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}:where(b,strong){font-weight:bolder}:where(code,kbd,samp){font-family:monospace,monospace;font-size:1em}:where(small){font-size:80%}:where(audio,canvas,iframe,img,svg,video){vertical-align:middle}:where(iframe){border-style:none}:where(svg:not([fill])){fill:currentColor}:where(table){border-collapse:collapse;border-color:inherit;text-indent:0}:where(button,input,select){margin:0}:where(button,[type=button i],[type=reset i],[type=submit i]){-webkit-appearance:button}:where(fieldset){border:1px solid #a0a0a0}:where(progress){vertical-align:initial}:where(textarea){margin:0;resize:vertical}:where([type=search i]){-webkit-appearance:textfield;outline-offset:-2px}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}:where(dialog){background-color:#fff;border:solid;color:#000;height:-moz-fit-content;height:fit-content;left:0;margin:auto;padding:1em;position:absolute;right:0;width:-moz-fit-content;width:fit-content}:where(dialog:not([open])){display:none}:where(details>summary:first-of-type){display:list-item}:where([aria-busy=true i]){cursor:progress}:where([aria-controls]){cursor:pointer}:where([aria-disabled=true i],[disabled]){cursor:not-allowed}:where([aria-hidden=false i][hidden]){display:initial}:where([aria-hidden=false i][hidden]:not(:focus)){clip:rect(0,0,0,0);position:absolute}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}.monospace,code{font-family:var(--monospace)}:root{--monospace:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace;color-scheme:dark;font-size:calc(.5em + 1vmin)}@media print{:root{--text-color:#000;--background-color:#fff;--link-color:#00e;--link-active-color:red;--link-visited-color:#551a8b}}:root{--relative-pixel:0.04ch;--regular-border:calc(var(--relative-pixel)*2);--larger-border:calc(var(--regular-border)*8);--large-border:calc(var(--larger-border)/3);--sudokucell-length:4rem;--cell-fontsize:2.5rem;--candidate-fontsize:0.9rem;--background-color:#282c34;--link-color:#61dafb;--link-visited-color:#d7a1e8;--link-active-color:tomato;--text-color:#f5f5f5;--border-color:#fff;--maroon:maroon;--red:#ec3e31;--orange:orange;--blue-gray:#8cadf3;--lighter-green:#8ea;--light-green:#0c0;--green:green;--purple:#639}.App{grid-gap:1rem;--app-main-height:calc(var(--sudokucell-length)*9 + var(--regular-border)*7*2 + var(--regular-border)*2*1 + var(--regular-border)*16/3);align-content:space-between;background-color:var(--background-color);color:var(--text-color);display:grid;gap:1rem;margin:0;min-height:100vh;min-width:100vw;position:relative;width:-moz-fit-content;width:fit-content}@media (min-width:900px){.App{gap:0 0;grid-template-areas:"Header Header Header Header Header" ". Main . Aside ." ". . . . .";grid-template-columns:250fr 1432fr 150fr 1314fr 250fr;grid-template-rows:auto var(--app-main-height) .3fr}.App-aside{--font-size:1rem}}@media (max-width:900px){.App{grid-template-areas:". Header ." ". Main ." ". Aside .";grid-template-columns:250fr 2745fr 250fr;grid-template-rows:auto var(--app-main-height) auto;justify-content:center}.App-aside{--font-size:calc(1rem + 1vh);font-size:var(--font-size);margin:1.5rem 0 25vh}}.App-header{font-size:calc(10px + 2vmin);grid-area:Header;height:-moz-fit-content;height:fit-content;padding:2vh 0}.App-header>h1.Title{display:inline;font-size:1em;margin:0;padding:0 2vw}.App-header>.Version{color:silver;font-size:.7em}.App.error{border:.5rem solid var(--red)}.App.error>.App-header:before{color:var(--red);content:"Error! "}.App-link{color:var(--link-color)}.App-link:visited{color:var(--link-visited-color)}.App-link:active{color:var(--link-active-color)}.App-aside{grid-area:Aside}.App-main{--sudoku-length:calc(var(--sudokucell-length)*9 + var(--regular-border)*7*2 + var(--regular-border)*2*1 + var(--large-border)*2);align-content:center;display:flex;grid-area:Main;justify-content:center}.App-main,.Sudoku{height:var(--sudoku-length)}.Sudoku{width:var(--sudoku-length);z-index:3}table.Sudoku{--cell-height:11.11111%;border:var(--larger-border) solid var(--border-color);border-collapse:collapse;border-spacing:0;cursor:pointer;font-family:var(--monospace);table-layout:fixed;text-align:center;vertical-align:middle}tr.Row{height:var(--cell-height)}tr.Row:nth-child(3n):not(:last-child)>td.Cell{border-bottom:var(--large-border) solid var(--border-color)}td.Cell{border:var(--regular-border) solid var(--border-color);border-spacing:0;font-size:var(--cell-fontsize);height:var(--cell-height);max-height:var(--cell-height);max-width:var(--cell-height);padding:0;text-align:center;vertical-align:middle;width:var(--cell-height)}td.Cell:nth-child(3n):not(:last-child){border-right:var(--large-border) solid var(--border-color)}[dir=rtl] td.Cell:nth-child(3n):not(:last-child),td.Cell:nth-child(3n):not(:last-child):dir(rtl){border-left:var(--large-border) solid var(--border-color);border-right:initial}div.Cell{background-color:initial;border:none;height:100%;padding:0;width:100%}div.Cell>*{height:var(--cell-height);overflow:hidden;text-overflow:clip}div.Cell>span.ugh.tables{align-items:center;display:inline-flex;height:100%}div.Cell[data-error=true]{background-color:var(--maroon)}div.Cell[data-active=true]{background-color:#555}div.Cell[data-active=false]{background:repeating-linear-gradient(-45deg,#d35e5e,#44476b,#333)}.Cell>.Loading{font-size:var(--candidate-fontsize);text-overflow:ellipsis}p.Candidates{display:grid;font-size:1rem;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);height:100%;margin:0;padding:2pt;width:100%}span.Candidate{color:inherit;font-size:var(--candidate-fontsize);line-height:normal;overflow:hidden;padding:0;text-align:center;text-overflow:clip}.Candidate.eliminated{background-color:#ff0}.Candidate.added{background-color:green}.Candidate.solved{color:#90ee90}.Candidate.blue,.Cell.blue{background-color:var(--blue-gray);color:#000}.Candidate.green,.Cell.green{background-color:#90ee90;color:#000}.Candidate.orange{background-color:orange;color:#000}.Cell.orange{background-color:#f0c575;color:#000}.Cell.salmon{background-color:salmon;color:#000}.Cell.orange.salmon{background-color:#f5a675;color:#000}.Candidate.blue.green,.Cell.blue.green{background-color:#8ecec2}.App-aside{border:inset;height:-moz-fit-content;height:fit-content}.StrategyList{margin-bottom:0;margin-left:1rem;margin-top:0;min-width:-moz-fit-content;min-width:fit-content}.StrategyItem.isCurrent{border-right:5px solid #b7c1c2}@supports selector(:dir(rtl)){.StrategyItem.isCurrent:dir(rtl){border-left:5px solid #b7c1c2;border-right:initial}}@supports not selector(:dir(rtl)){.StrategyItem.isCurrent[dir=rtl]{border-left:5px solid #b7c1c2;border-right:initial}}.StrategyItem:nth-child(odd){background-color:#1f2329}.StrategyItem:nth-child(2n){background-color:#31353f}.StrategyItem.disabled{--link-color:#abb8e8;--link-visited-color:#c1b6c9;--link-active-color:#df8367;color:#bbb}.StrategyItem.disabled:nth-child(odd){background-color:#282b31}.StrategyItem.disabled:nth-child(2n){background-color:#31353c}.StrategyList{--item-height:var(--font-size);max-width:none;padding-left:calc(2rem + var(--item-height));position:relative}.StrategyItem{--label-width:80%;--status-width:20%;--padding:1.5rem;line-height:calc(var(--item-height) + .1rem);max-width:calc(100% - var(--padding));min-width:calc(var(--label-width) + var(--status-width));padding-left:var(--padding)}.StrategyToggler{height:var(--item-height);left:-1rem;line-height:inherit;margin:0;position:absolute;text-align:center;width:var(--item-height)}@supports selector(:dir(rtl)){.StrategyList:dir(rtl){padding-left:0;padding-right:calc(2rem + var(--item-height))}.StrategyItem:dir(rtl){padding-left:0;padding-right:var(--padding)}.StrategyToggler:dir(rtl){left:auto;right:0}}@supports not selector(:dir(rtl)){[dir=rtl] .StrategyList{padding-left:0;padding-right:calc(2rem + var(--item-height))}[dir=rtl] .StrategyItem{padding-left:0;padding-right:var(--padding)}[dir=rtl] .StrategyToggler{left:auto;right:0}}.StrategyLabel{display:inline-grid;width:var(--label-width)}.StrategyTogglerLabel{color:#0000;height:var(--item-height);overflow:hidden;position:absolute;right:0;text-overflow:clip;-webkit-user-select:none;user-select:none;width:100%}a[href]+label>.StrategyTogglerLabel{width:20%}.StrategyResult{grid-area:status}.StrategyResult.success{color:var(--light-green)}.StrategyResult.fail{color:var(--orange)}.StrategyResult.error{color:var(--red)}.StrategyDetails{border:1px solid #a0a0a0;margin-inline-end:2px;margin-inline-start:2px;padding:.5em}.StrategyDetails>p{margin:0;white-space:pre-wrap;word-break:break-word}.Tabs{display:grid;grid-template-columns:repeat(2,1fr)}.Tab.selected{background-color:var(--background-color);border:none}.Tab.unselected{background-color:#505050;border-style:outset}.Tab.unselected:hover{background-color:#767676}.Tab.unselected:active{background-color:#373737;border-style:inset}.AlertNotice{word-wrap:break-word;background-color:#444;border-style:solid;border-width:var(--regular-border);bottom:2vh;display:flex;flex-direction:column;justify-content:space-between;max-width:calc(100% - 4rem);padding:0 1rem 1rem;position:fixed;right:2vw;width:-moz-fit-content;width:fit-content;word-break:break-all;z-index:4}.AlertNotice,.AlertNotice>p{height:-moz-fit-content;height:fit-content}.AlertNotice>p{font-size:1rem}.AlertNotice>button{font-size:2rem}.AlertNotice>*{position:sticky}.AlertNotice.info{border-color:var(--blue-gray)}.AlertNotice.warning{border-color:var(--orange)}.AlertNotice.error{border-color:var(--red)}.PromptWindow{background-color:#7777;display:flex;height:100vh;position:fixed;width:100vw;z-index:4}.PromptNotice{word-wrap:break-word;align-content:center;align-self:center;background-color:var(--background-color);display:inline-flex;flex-direction:column;height:-moz-fit-content;height:fit-content;justify-content:center;margin:0 auto;padding:1rem;position:relative;text-align:center;width:-moz-fit-content;width:fit-content;word-break:break-all;z-index:4}.PromptNotice>label{font-size:1.5rem}.PromptNotice>button{font-size:1.5rem;width:100%}.PromptNotice>label>p{margin-bottom:1rem;margin-top:0}.PromptNotice>label>textarea{width:100%}.github-corner{border:0;color:var(--text-color);position:absolute;right:0;top:0}.github-corner>svg{fill:#151513}.octo-arm{transform-origin:130px 106px}@keyframes octocat-wave{0%,to{transform:rotate(0deg)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (prefers-reduced-motion:no-preference){.github-corner:hover .octo-arm{animation:octocat-wave .56s ease-in-out}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave .56s ease-in-out}}}@media (prefers-reduced-motion:reduce){.github-corner:hover .octo-arm{animation:octocat-wave 7s ease-in-out}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 7s ease-in-out}}}.ErrorNotice{border:3px solid var(--red);font-family:var(--monospace);height:-moz-fit-content;height:fit-content;padding:1.5rem;white-space:pre;width:-moz-fit-content;width:fit-content} +/*# sourceMappingURL=main.02c2b3e4.css.map*/ \ No newline at end of file diff --git a/static/css/main.02c2b3e4.css.map b/static/css/main.02c2b3e4.css.map new file mode 100644 index 00000000..b2461547 --- /dev/null +++ b/static/css/main.02c2b3e4.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/main.02c2b3e4.css","mappings":"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","sources":["../node_modules/sanitize.css/sanitize.css","index.css","App.css","Elems/Main.css","Elems/MainElems/Sudoku.css","Elems/MainElems/Candidates.css","Elems/MainElems/Candidate.css","Elems/Aside.css","Elems/AsideElems/StrategyList.css","Elems/AsideElems/StrategyItem.css","Elems/AsideElems/StrategyDetails.css","Elems/AsideElems/Tabs.css","Elems/NoticeElems/AlertNotice.css","Elems/NoticeElems/PromptWindow.css","Elems/GithubCorner.css","ErrorNotice.css"],"sourcesContent":["/* Document\n * ========================================================================== */\n\n/**\n * 1. Add border box sizing in all browsers (opinionated).\n * 2. Backgrounds do not repeat by default (opinionated).\n */\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n background-repeat: no-repeat; /* 2 */\n}\n\n/**\n * 1. Add text decoration inheritance in all browsers (opinionated).\n * 2. Add vertical alignment inheritance in all browsers (opinionated).\n */\n\n::before,\n::after {\n text-decoration: inherit; /* 1 */\n vertical-align: inherit; /* 2 */\n}\n\n/**\n * 1. Use the default cursor in all browsers (opinionated).\n * 2. Change the line height in all browsers (opinionated).\n * 3. Breaks words to prevent overflow in all browsers (opinionated).\n * 4. Use a 4-space tab width in all browsers (opinionated).\n * 5. Remove the grey highlight on links in iOS (opinionated).\n * 6. Prevent adjustments of font size after orientation changes in iOS.\n */\n\n:where(:root) {\n cursor: default; /* 1 */\n line-height: 1.5; /* 2 */\n overflow-wrap: break-word; /* 3 */\n -moz-tab-size: 4; /* 4 */\n tab-size: 4; /* 4 */\n -webkit-tap-highlight-color: transparent; /* 5 */\n -webkit-text-size-adjust: 100%; /* 6 */\n}\n\n/* Sections\n * ========================================================================== */\n\n/**\n * Remove the margin in all browsers (opinionated).\n */\n\n:where(body) {\n margin: 0;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Edge, Firefox, and Safari.\n */\n\n:where(h1) {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n * ========================================================================== */\n\n/**\n * Remove the margin on nested lists in Chrome, Edge, and Safari.\n */\n\n:where(dl, ol, ul) :where(dl, ol, ul) {\n margin: 0;\n}\n\n/**\n * 1. Correct the inheritance of border color in Firefox.\n * 2. Add the correct box sizing in Firefox.\n */\n\n:where(hr) {\n color: inherit; /* 1 */\n height: 0; /* 2 */\n}\n\n/**\n * Remove the list style on navigation lists in all browsers (opinionated).\n */\n\n:where(nav) :where(ol, ul) {\n list-style-type: none;\n padding: 0;\n}\n\n/**\n * Prevent VoiceOver from ignoring list semantics in Safari (opinionated).\n */\n\n:where(nav li)::before {\n content: \"\\200B\";\n float: left;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n * 3. Prevent overflow of the container in all browsers (opinionated).\n */\n\n:where(pre) {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n overflow: auto; /* 3 */\n}\n\n/* Text-level semantics\n * ========================================================================== */\n\n/**\n * Add the correct text decoration in Safari.\n */\n\n:where(abbr[title]) {\n text-decoration: underline;\n text-decoration: underline dotted;\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\n:where(b, strong) {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\n:where(code, kbd, samp) {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\n:where(small) {\n font-size: 80%;\n}\n\n/* Embedded content\n * ========================================================================== */\n\n/*\n * Change the alignment on media elements in all browsers (opinionated).\n */\n\n:where(audio, canvas, iframe, img, svg, video) {\n vertical-align: middle;\n}\n\n/**\n * Remove the border on iframes in all browsers (opinionated).\n */\n\n:where(iframe) {\n border-style: none;\n}\n\n/**\n * Change the fill color to match the text color in all browsers (opinionated).\n */\n\n:where(svg:not([fill])) {\n fill: currentColor;\n}\n\n/* Tabular data\n * ========================================================================== */\n\n/**\n * 1. Collapse border spacing in all browsers (opinionated).\n * 2. Correct table border color inheritance in all Chrome, Edge, and Safari.\n * 3. Remove text indentation from table contents in Chrome, Edge, and Safari.\n */\n\n:where(table) {\n border-collapse: collapse; /* 1 */\n border-color: inherit; /* 2 */\n text-indent: 0; /* 3 */\n}\n\n/* Forms\n * ========================================================================== */\n\n/**\n * Remove the margin on controls in Safari.\n */\n\n:where(button, input, select) {\n margin: 0;\n}\n\n/**\n * Correct the inability to style buttons in iOS and Safari.\n */\n\n:where(button, [type=\"button\" i], [type=\"reset\" i], [type=\"submit\" i]) {\n -webkit-appearance: button;\n}\n\n/**\n * Change the inconsistent appearance in all browsers (opinionated).\n */\n\n:where(fieldset) {\n border: 1px solid #a0a0a0;\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Edge, and Firefox.\n */\n\n:where(progress) {\n vertical-align: baseline;\n}\n\n/**\n * 1. Remove the margin in Firefox and Safari.\n * 3. Change the resize direction in all browsers (opinionated).\n */\n\n:where(textarea) {\n margin: 0; /* 1 */\n resize: vertical; /* 3 */\n}\n\n/**\n * 1. Correct the odd appearance in Chrome, Edge, and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n:where([type=\"search\" i]) {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Safari.\n */\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * Correct the text style of placeholders in Chrome, Edge, and Safari.\n */\n\n::-webkit-input-placeholder {\n color: inherit;\n opacity: 0.54;\n}\n\n/**\n * Remove the inner padding in Chrome, Edge, and Safari on macOS.\n */\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style upload buttons in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n * ========================================================================== */\n\n/*\n * Add the correct styles in Safari.\n */\n\n:where(dialog) {\n background-color: white;\n border: solid;\n color: black;\n height: -moz-fit-content;\n height: fit-content;\n left: 0;\n margin: auto;\n padding: 1em;\n position: absolute;\n right: 0;\n width: -moz-fit-content;\n width: fit-content;\n}\n\n:where(dialog:not([open])) {\n display: none;\n}\n\n/*\n * Add the correct display in Safari.\n */\n\n:where(details > summary:first-of-type) {\n display: list-item;\n}\n\n/* Accessibility\n * ========================================================================== */\n\n/**\n * Change the cursor on busy elements in all browsers (opinionated).\n */\n\n:where([aria-busy=\"true\" i]) {\n cursor: progress;\n}\n\n/*\n * Change the cursor on control elements in all browsers (opinionated).\n */\n\n:where([aria-controls]) {\n cursor: pointer;\n}\n\n/*\n * Change the cursor on disabled, not-editable, or otherwise\n * inoperable elements in all browsers (opinionated).\n */\n\n:where([aria-disabled=\"true\" i], [disabled]) {\n cursor: not-allowed;\n}\n\n/*\n * Change the display on visually hidden accessible elements\n * in all browsers (opinionated).\n */\n\n:where([aria-hidden=\"false\" i][hidden]) {\n display: initial;\n}\n\n:where([aria-hidden=\"false\" i][hidden]:not(:focus)) {\n clip: rect(0, 0, 0, 0);\n position: absolute;\n}\n","@import url(sanitize.css);\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.monospace,\ncode {\n font-family: var(--monospace);\n}\n\n:root {\n --monospace: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;\n\n /* Make font-size relative to screen size */\n font-size: calc(0.5em + 1vmin);\n\n /* Only supports dark-mode for now */\n color-scheme: dark;\n}\n\n@media print {\n :root {\n --text-color: black;\n --background-color: white;\n --link-color: rgb(0, 0, 238);\n --link-active-color: red;\n --link-visited-color: rgb(85, 26, 139);\n }\n}\n","\n/* root variables */\n:root {\n --relative-pixel: calc(1ch / 25);\n\n /* Border variables to make it look like a sudoku */\n --regular-border: calc(2 * var(--relative-pixel));\n --larger-border: calc(8 * var(--regular-border));\n --large-border: calc(var(--larger-border) / 3);\n\n --sudokucell-length: 4rem;\n --cell-fontsize: 2.5rem; /* fontsize of a solved digit */\n --candidate-fontsize: 0.9rem;\n\n /* colors */\n --background-color: #282c34; /* dark mode */\n --link-color: #61dafb;\n --link-visited-color: #d7a1e8;\n --link-active-color: tomato;\n --text-color: whitesmoke;\n --border-color: white;\n --maroon: maroon; /* rgb(139, 0, 0)? */\n --red: #ec3e31;\n --orange: orange;\n --blue-gray: #8cadf3;\n --lighter-green: #8ea;\n --light-green: #0c0;\n --green: green;\n --purple: rebeccapurple;\n}\n\n.App {\n background-color: var(--background-color);\n color: var(--text-color);\n\n /* For the github-corner */\n position: relative;\n\n min-height: 100vh;\n min-width: 100vw;\n width: fit-content;\n margin: 0;\n\n display: grid;\n gap: 1rem;\n align-content: space-between;\n /* default moved to min-width media querys */\n\n /* See app.main */\n --app-main-height: calc(\n calc( /* --sudoku-length */\n 9 * var(--sudokucell-length) +\n calc(7 * var(--regular-border) * 2) +\n calc(2 * var(--regular-border) * 1) +\n calc(2 * 8 * var(--regular-border) / 3)\n )\n );\n}\n\n/* width >= 900px, 2 column layout*/\n@media (min-width: 900px) {\n .App {\n grid-template-columns: 250fr 1432fr 150fr 1314fr 250fr; /* ~ (8%, 44%, 40%, 8%) */\n grid-template-rows: auto var(--app-main-height) 0.3fr; /* prev ~ (7%, 7%, 2rem, 72%, 7%) */\n gap: 0 0;\n grid-template-areas:\n \"Header Header Header Header Header\"\n \". Main . Aside .\"\n \". . . . .\";\n }\n\n /* Declares variable for consistency (see below) */\n .App-aside {\n --font-size: 1rem;\n }\n}\n\n/* width <= 900px, 1 column layout */\n@media (max-width: 900px) {\n .App {\n grid-template-columns: 250fr 2745fr 250fr; /* ~ (8%, 84%, 8%) */\n grid-template-rows: auto var(--app-main-height) auto;\n grid-template-areas:\n \". Header .\"\n \". Main .\"\n \". Aside .\";\n\n justify-content: center;\n }\n\n /**\n * Bigger text (aside)\n * Variable exists because of the strategyItem shenanigans\n * Margin: Gap + Allow scrolling past the aside in one column mode\n */\n .App-aside {\n --font-size: calc(1rem + 1vh);\n font-size: var(--font-size);\n margin: 1.5rem 0 25vh 0;\n }\n}\n\n/*\n@keyframes App-logo-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.App-logo {\n height: 40vmin;\n pointer-events: none;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .App-logo {\n animation: App-logo-spin infinite 20s linear;\n }\n}\n*/\n\n.App-header {\n grid-area: Header;\n padding: 2vh 0;\n height: fit-content;\n font-size: calc(10px + 2vmin);\n}\n\n.App-header > h1.Title {\n display: inline;\n font-size: 1em;\n padding: 0 2vw;\n margin: 0;\n}\n\n.App-header > .Version {\n font-size: 0.7em;\n color: silver;\n}\n\n/* TODO: Fix layout when error */\n.App.error {\n border: 0.5rem solid var(--red);\n}\n\n.App.error > .App-header::before {\n content: \"Error! \";\n color: var(--red);\n}\n\n\n.App-link {\n color: var(--link-color);\n}\n\n.App-link:visited {\n color: var(--link-visited-color);\n}\n\n.App-link:active {\n color: var(--link-active-color);\n}\n\n.App-aside { grid-area: Aside; }\n.App-main { grid-area: Main; }\n\n\n\n",".App-main {\n /* variables (inherited by children) */\n --sudoku-length: calc(\n 9 * var(--sudokucell-length) +\n calc(7 * var(--regular-border) * 2) +\n calc(2 * var(--regular-border) * 1) +\n calc(2 * var(--large-border))\n ); /*\n Length = Row width (border doesn't count because of box-sizing: border-box)\n\n Row width = 9 cells\n 7 cells = width + 2regular-border\n 2 cells = width + 1regular-border + 1large-border\n\n total = 9 * width +\n (7 * 2 * regular) +\n (2 * 1 * regular) +\n (2 * large)\n */\n\n display: flex;\n height: var(--sudoku-length);\n justify-content: center;\n align-content: center;\n}\n\n.Sudoku {\n width: var(--sudoku-length);\n height: var(--sudoku-length);\n\n z-index: 3;\n}\n","\n/*\n References:\n [1]: https://stackoverflow.com/questions/4457506\n [2]: https://stackoverflow.com/questions/13667941\n*/\n\ntable.Sudoku {\n border: var(--larger-border) solid var(--border-color);\n border-collapse: collapse;\n border-spacing: 0;\n\n text-align: center;\n font-family: var(--monospace);\n\n /* [ref 1] - height and width are set in Main.css */\n table-layout: fixed;\n\n /* Also --cell-width */\n --cell-height: calc(100% / 9);\n\n /* The following variables are inherited by :root\n --cell-fontsize: 2.5rem;\n --candidate-fontsize: 0.9rem;\n */\n\n vertical-align: middle;\n cursor: pointer;\n}\n\ntr.Row {\n height: var(--cell-height);\n}\n\ntr.Row:nth-child(3n):not(:last-child) > td.Cell {\n border-bottom: var(--large-border) solid var(--border-color);\n}\n\ntd.Cell {\n width: var(--cell-height);\n height: var(--cell-height); /* part of trying @[ref 1] */\n max-width: var(--cell-height);\n max-height: var(--cell-height);\n border: var(--regular-border) solid var(--border-color);\n border-spacing: 0;\n font-size: var(--cell-fontsize);\n\n padding: 0;\n\n text-align: center;\n vertical-align: middle;\n}\n\ntd.Cell:nth-child(3n):not(:last-child) {\n border-right: var(--large-border) solid var(--border-color);\n}\n\n[dir=rtl] td.Cell:nth-child(3n):not(:last-child),\ntd.Cell:nth-child(3n):not(:last-child):dir(rtl) {\n border-right: initial;\n border-left: var(--large-border) solid var(--border-color);\n}\n\ndiv.Cell {\n border: none;\n width: 100%;\n height: 100%;\n padding: 0;\n background-color: transparent;\n}\n\ndiv.Cell > * {\n /* [ref 2] */\n height: var(--cell-height);\n\n /* & [ref 1] */\n overflow: hidden;\n text-overflow: clip;\n}\n\n/* This selector was made before I needed to use it\n * This is for vertically aligning the big digits\n */\ndiv.Cell > span.ugh.tables {\n display: inline-flex;\n height: 100%;\n align-items: center;\n}\n\ndiv.Cell[data-error=\"true\"] {\n background-color: var(--maroon);\n}\n\ndiv.Cell[data-active=\"true\"] {\n background-color: #555;\n}\n\ndiv.Cell[data-active=\"false\"] {\n background: repeating-linear-gradient(-45deg, #d35e5e, #44476b, #333);\n}\n\n/* Section moved to Candidates.css */\n\n/* For the lazy loaded props */\n.Cell > .Loading {\n font-size: var(--candidate-fontsize);\n text-overflow: ellipsis;\n}\n\n","\n/* Moved from Sudoku.css */\n\np.Candidates {\n margin: 0;\n padding: 2pt;\n width: 100%;\n height: 100%;\n\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n grid-template-rows: repeat(3, 1fr);\n font-size: 1rem;\n}\n\nspan.Candidate {\n padding: 0;\n line-height: normal;\n\n font-size: var(--candidate-fontsize);\n text-align: center;\n color: inherit;\n\n /* [ref 1] */\n overflow: hidden;\n text-overflow: clip;\n}\n","\n.Candidate.eliminated {\n background-color: yellow;\n}\n\n.Candidate.added {\n background-color: green;\n}\n\n.Candidate.solved {\n color: lightgreen;\n}\n\n.Cell.blue,\n.Candidate.blue {\n background-color: var(--blue-gray);\n color: black;\n}\n\n.Cell.green,\n.Candidate.green {\n background-color: lightgreen;\n color: black;\n}\n\n.Candidate.orange {\n background-color: orange;\n color: black;\n}\n\n/* More like tan instead of orange, but at least my eyes don't hurt from the contrast */\n.Cell.orange {\n background-color: hsl(39, 80%, 70%); /* orange - 20 sat + 20 lig */\n color: black;\n}\n\n.Cell.salmon {\n background-color: salmon;\n color: black;\n}\n\n.Cell.orange.salmon {\n background-color: hsl(23, 87%, 71%);\n color: black;\n}\n\n/* Halfway between the styles in blue and green */\n.Cell.blue.green,\n.Candidate.blue.green {\n background-color: #8ecec2;\n}\n",".App-aside {\n height: fit-content;\n border: inset;\n}\n\n.StrategyList {\n margin-left: 1rem;\n margin-top: 0;\n margin-bottom: 0;\n}\n","\n/* Overflow */\n.StrategyList {\n min-width: fit-content;\n}\n\n/* The current strategy item */\n.StrategyItem.isCurrent {\n border-right: 5px solid rgb(183, 193, 194);\n}\n\n@supports selector(:dir(rtl)) {\n .StrategyItem.isCurrent:dir(rtl) {\n border-right: initial;\n border-left: 5px solid rgb(183, 193, 194);\n }\n}\n\n@supports not selector(:dir(rtl)) {\n .StrategyItem.isCurrent[dir=rtl] {\n border-right: initial;\n border-left: 5px solid rgb(183, 193, 194);\n }\n}\n\n/* Alternating colors - note that the markers are not in color */\n.StrategyItem:nth-child(odd) {\n background-color: #1f2329;\n}\n\n.StrategyItem:nth-child(even) {\n background-color: #31353f;\n}\n\n/* Disabled strategy item */\n.StrategyItem.disabled {\n color: #bbb;\n --link-color: #abb8e8;\n --link-visited-color: #c1b6c9;\n --link-active-color: #df8367;\n}\n\n.StrategyItem.disabled:nth-child(odd) {\n background-color: #282b31;\n}\n\n.StrategyItem.disabled:nth-child(even) {\n background-color: #31353c;\n}\n","\n /* Checkbox positioning */\n.StrategyList {\n /*\n These variables were moved from .StrategyItem\n\n The checkbox needs to be --item-height\n This impacts the strategy list, since the padding-left must account for the checkbox\n */\n --item-height: var(--font-size); /* see App.css */\n\n position: relative;\n max-width: initial;\n padding-left: calc(2rem + var(--item-height));\n}\n\n/* Sidenote discovery: Google Chrome doesn't know that 0 is a valid when using max() */\n.StrategyItem {\n --label-width: 80%; /* For status */\n --status-width: 20%; /* For status */\n --padding: 1.5rem;\n\n padding-left: var(--padding);\n\n /* But this is for list item positioning */\n line-height: calc(var(--item-height) + 0.1rem);\n\n /* Making room for status */\n min-width: calc(var(--label-width) + var(--status-width));\n max-width: calc(100% - var(--padding));\n}\n\n.StrategyToggler {\n position: absolute;\n left: -1rem;\n margin: 0; /* Now sanitize.css works! */\n text-align: center;\n line-height: inherit;\n\n width: var(--item-height);\n height: var(--item-height);\n}\n\n@supports selector(:dir(rtl)) {\n .StrategyList:dir(rtl) {\n padding-left: initial;\n padding-right: calc(2rem + var(--item-height));\n }\n\n .StrategyItem:dir(rtl) {\n padding-left: initial;\n padding-right: var(--padding);\n }\n\n .StrategyToggler:dir(rtl) {\n left: initial;\n right: 0;\n }\n}\n\n@supports not selector(:dir(rtl)) {\n [dir=rtl] .StrategyList {\n padding-left: initial;\n padding-right: calc(2rem + var(--item-height));\n }\n\n [dir=rtl] .StrategyItem {\n padding-left: initial;\n padding-right: var(--padding);\n }\n\n [dir=rtl] .StrategyToggler {\n left: initial;\n right: 0;\n }\n}\n\n/* Label structure: Name Status */\n.StrategyLabel {\n width: var(--label-width);\n display: inline-grid; /* Still inline but behaves like a block element */\n\n /*\n Right now this doesn't do anything, (besides display)\n since the StrategyLabel doesn't contain a tooltip anymore.\n\n This would make more sense in a parent \"StrategyItemContent\" span\n As of right now, the \"StrategyStatus\" are aligned by the constant width.\n\n align-content: center;\n display: inline-grid;\n grid-template-columns: 3fr 1fr;\n grid-template-areas:\n 'name status';\n */\n}\n\n.StrategyTogglerLabel {\n position: absolute;\n color: transparent;\n user-select: none;\n overflow: hidden;\n text-overflow: clip;\n\n /* Tap size */\n height: var(--item-height);\n width: 100%;\n right: 0;\n}\n\n/* If there's a link don't block it */\n/* (a[href] + label) selects label */\na[href] + label > .StrategyTogglerLabel {\n width: 20%;\n}\n\n/* Result */\n.StrategyResult {\n grid-area: status;\n}\n\n.StrategyResult.success {\n color: var(--light-green);\n}\n\n.StrategyResult.fail {\n color: var(--orange);\n}\n\n.StrategyResult.error {\n color: var(--red);\n}\n",".StrategyDetails {\n margin-inline-start: 2px;\n margin-inline-end: 2px;\n border: 1px solid #a0a0a0;\n padding: 0.5em;\n}\n\n.StrategyDetails > p {\n margin: 0;\n white-space: pre-wrap;\n word-break: break-word;\n}\n","\n.Tabs {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n}\n\n.Tab.selected {\n border: none;\n background-color: var(--background-color);\n}\n\n.Tab.unselected {\n border-style: outset;\n background-color: rgb(80, 80, 80);\n}\n\n.Tab.unselected:hover {\n background-color: rgb(118, 118, 118);\n}\n\n.Tab.unselected:active {\n background-color: rgb(55, 55, 55);\n border-style: inset;\n}\n","\n.AlertNotice {\n position: fixed;\n bottom: 2vh;\n right: 2vw;\n height: fit-content;\n width: fit-content;\n max-width: calc(100% - 4rem);\n\n background-color: #444;\n z-index: 4;\n\n display: flex;\n padding: 0 1rem 1rem 1rem;\n justify-content: space-between;\n flex-direction: column;\n\n border-width: var(--regular-border);\n border-style: solid;\n\n word-wrap: break-word;\n word-break: break-all;\n}\n\n/** Positioning */\n.AlertNotice > p {\n height: fit-content;\n font-size: 1rem;\n}\n\n.AlertNotice > button {\n font-size: 2rem;\n}\n\n.AlertNotice > * {\n position: sticky;\n}\n\n\n/** Types of alert notices */\n.AlertNotice.info {\n border-color: var(--blue-gray);\n}\n\n.AlertNotice.warning {\n border-color: var(--orange);\n}\n\n.AlertNotice.error {\n border-color: var(--red);\n}\n","\n.PromptWindow {\n position: fixed; /** prevent escape! Note that aria-modal is implicitly true */\n width: 100vw;\n height: 100vh;\n background-color: #7777;\n display: flex;\n z-index: 4;\n}\n\n.PromptNotice {\n position: relative;\n height: fit-content;\n width: fit-content;\n\n background-color: var(--background-color);\n z-index: 4;\n\n /* Everything here is just for centering */\n display: inline flex;\n margin: 0 auto;\n padding: 1rem;\n flex-direction: column;\n text-align: center;\n align-self: center;\n align-content: center;\n justify-content: center;\n word-wrap: break-word;\n word-break: break-all;\n}\n\n.PromptNotice > label {\n font-size: 1.5rem;\n}\n\n.PromptNotice > button {\n font-size: 1.5rem;\n width: 100%;\n}\n\n.PromptNotice > label > p {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\n.PromptNotice > label > textarea {\n width: 100%;\n}\n\n\n","\n.github-corner {\n color: var(--text-color);\n position: absolute;\n top: 0;\n border: 0;\n right: 0;\n}\n\n.github-corner > svg {\n fill: #151513;\n}\n\n.octo-arm {\n transform-origin: 130px 106px;\n}\n\n@keyframes octocat-wave {\n 0%, 100% {\n transform: rotate(0deg);\n }\n\n 20%, 60% {\n transform: rotate(-25deg);\n }\n\n 40%, 80% {\n transform: rotate(10deg);\n }\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .github-corner:hover .octo-arm {\n animation: octocat-wave 560ms ease-in-out;\n }\n\n @media (max-width: 500px) {\n .github-corner:hover .octo-arm {\n animation: none;\n }\n\n .github-corner .octo-arm {\n animation: octocat-wave 560ms ease-in-out;\n }\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .github-corner:hover .octo-arm {\n animation: octocat-wave 7s ease-in-out;\n }\n\n @media (max-width: 500px) {\n .github-corner:hover .octo-arm {\n animation: none;\n }\n\n .github-corner .octo-arm {\n animation: octocat-wave 7s ease-in-out;\n }\n }\n}\n","\n.ErrorNotice {\n font-family: var(--monospace);\n white-space: pre;\n padding: 1.5rem;\n border: 3px solid var(--red);\n height: fit-content;\n width: fit-content;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.697d5ba5.js b/static/js/main.697d5ba5.js new file mode 100644 index 00000000..e9960671 --- /dev/null +++ b/static/js/main.697d5ba5.js @@ -0,0 +1,3 @@ +/*! For license information please see main.697d5ba5.js.LICENSE.txt */ +(()=>{"use strict";var e={123:e=>{var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function o(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}()?Object.assign:function(e,l){for(var s,i,a=o(e),u=1;u{var r=n(43),o=n(123),l=n(853);function s(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n