From eaac2a09b356888bcb367c2c394d908b168bb67d Mon Sep 17 00:00:00 2001 From: Prakash Chakraborty Date: Wed, 23 Jun 2021 19:32:07 +0530 Subject: [PATCH] Basic Moves list added --- build/asset-manifest.json | 12 ++++----- build/index.html | 2 +- build/static/css/main.59381dfd.chunk.css | 4 --- build/static/css/main.59381dfd.chunk.css.map | 1 - build/static/css/main.98bc103f.chunk.css | 4 +++ build/static/css/main.98bc103f.chunk.css.map | 1 + build/static/js/main.7216620f.chunk.js | 2 ++ build/static/js/main.7216620f.chunk.js.map | 1 + build/static/js/main.ed6f6be7.chunk.js | 2 -- build/static/js/main.ed6f6be7.chunk.js.map | 1 - src/index.js | 28 ++++++++++++-------- 11 files changed, 32 insertions(+), 26 deletions(-) delete mode 100644 build/static/css/main.59381dfd.chunk.css delete mode 100644 build/static/css/main.59381dfd.chunk.css.map create mode 100644 build/static/css/main.98bc103f.chunk.css create mode 100644 build/static/css/main.98bc103f.chunk.css.map create mode 100644 build/static/js/main.7216620f.chunk.js create mode 100644 build/static/js/main.7216620f.chunk.js.map delete mode 100644 build/static/js/main.ed6f6be7.chunk.js delete mode 100644 build/static/js/main.ed6f6be7.chunk.js.map diff --git a/build/asset-manifest.json b/build/asset-manifest.json index f7909e0..34f5e23 100644 --- a/build/asset-manifest.json +++ b/build/asset-manifest.json @@ -1,21 +1,21 @@ { "files": { - "main.css": "/Tic-Tac-Toe/static/css/main.59381dfd.chunk.css", - "main.js": "/Tic-Tac-Toe/static/js/main.ed6f6be7.chunk.js", - "main.js.map": "/Tic-Tac-Toe/static/js/main.ed6f6be7.chunk.js.map", + "main.css": "/Tic-Tac-Toe/static/css/main.98bc103f.chunk.css", + "main.js": "/Tic-Tac-Toe/static/js/main.7216620f.chunk.js", + "main.js.map": "/Tic-Tac-Toe/static/js/main.7216620f.chunk.js.map", "runtime-main.js": "/Tic-Tac-Toe/static/js/runtime-main.a74bc3ef.js", "runtime-main.js.map": "/Tic-Tac-Toe/static/js/runtime-main.a74bc3ef.js.map", "static/js/2.6deb76ea.chunk.js": "/Tic-Tac-Toe/static/js/2.6deb76ea.chunk.js", "static/js/2.6deb76ea.chunk.js.map": "/Tic-Tac-Toe/static/js/2.6deb76ea.chunk.js.map", "index.html": "/Tic-Tac-Toe/index.html", - "static/css/main.59381dfd.chunk.css.map": "/Tic-Tac-Toe/static/css/main.59381dfd.chunk.css.map", + "static/css/main.98bc103f.chunk.css.map": "/Tic-Tac-Toe/static/css/main.98bc103f.chunk.css.map", "static/js/2.6deb76ea.chunk.js.LICENSE.txt": "/Tic-Tac-Toe/static/js/2.6deb76ea.chunk.js.LICENSE.txt", "static/media/logo.0a64b44e.jpg": "/Tic-Tac-Toe/static/media/logo.0a64b44e.jpg" }, "entrypoints": [ "static/js/runtime-main.a74bc3ef.js", "static/js/2.6deb76ea.chunk.js", - "static/css/main.59381dfd.chunk.css", - "static/js/main.ed6f6be7.chunk.js" + "static/css/main.98bc103f.chunk.css", + "static/js/main.7216620f.chunk.js" ] } \ No newline at end of file diff --git a/build/index.html b/build/index.html index 65f5f19..5c0b12c 100644 --- a/build/index.html +++ b/build/index.html @@ -1 +1 @@ -Tic Tac Toe
\ No newline at end of file +Tic Tac Toe
\ No newline at end of file diff --git a/build/static/css/main.59381dfd.chunk.css b/build/static/css/main.59381dfd.chunk.css deleted file mode 100644 index bca46c2..0000000 --- a/build/static/css/main.59381dfd.chunk.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! tailwindcss v2.2.2 | MIT License | https://tailwindcss.com */ - -/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */html{-moz-tab-size:4;tab-size:4;line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}*,:after,:before{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.float-right{float:right}.float-left{float:left}.m-2{margin:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.flex{display:-webkit-flex;display:flex}.table{display:table}.grid{display:grid}.h-12{height:3rem}.min-h-screen{min-height:100vh}.w-full{width:100%}.max-w-md{max-width:28rem}.transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;-webkit-transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-skew-y-6{--tw-skew-y:-6deg}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.cursor-pointer{cursor:pointer}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.flex-col{-webkit-flex-direction:column;flex-direction:column}.justify-center{-webkit-justify-content:center;justify-content:center}.gap-4{gap:1rem}.overflow-hidden{overflow:hidden}.rounded-lg{border-radius:.5rem}.rounded-2xl{border-radius:1rem}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.bg-green-200{--tw-bg-opacity:1;background-color:rgba(167,243,208,var(--tw-bg-opacity))}.bg-cyan-100{--tw-bg-opacity:1;background-color:rgba(207,250,254,var(--tw-bg-opacity))}.bg-cyan-500{--tw-bg-opacity:1;background-color:rgba(6,182,212,var(--tw-bg-opacity))}.hover\:bg-cyan-600:hover{--tw-bg-opacity:1;background-color:rgba(8,145,178,var(--tw-bg-opacity))}.bg-gradient-to-r{background-image:linear-gradient(90deg,var(--tw-gradient-stops))}.from-cyan-400{--tw-gradient-from:#22d3ee;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to,rgba(34,211,238,0))}.to-sky-500{--tw-gradient-to:#0ea5e9}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.text-center{text-align:center}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-2xl{font-size:1.5rem;line-height:2rem}.font-semibold{font-weight:600}.font-bold{font-weight:700}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}*,:after,:before{--tw-shadow:0 0 transparent}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}*,:after,:before{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.focus\:ring-cyan-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(34,211,238,var(--tw-ring-opacity))}.focus\:ring-opacity-75:focus{--tw-ring-opacity:0.75}@media (min-width:640px){.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:max-w-xl{max-width:36rem}.sm\:-rotate-6{--tw-rotate:-6deg}.sm\:skew-y-0{--tw-skew-y:0deg}.sm\:rounded-3xl{border-radius:1.5rem}.sm\:p-20{padding:5rem}.sm\:py-12{padding-top:3rem;padding-bottom:3rem}}@media (min-width:768px){.md\:p-6{padding:1.5rem}} -/*# sourceMappingURL=main.59381dfd.chunk.css.map */ \ No newline at end of file diff --git a/build/static/css/main.59381dfd.chunk.css.map b/build/static/css/main.59381dfd.chunk.css.map deleted file mode 100644 index e8981f7..0000000 --- a/build/static/css/main.59381dfd.chunk.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://src/tailwind.css","","main.59381dfd.chunk.css"],"names":[],"mappings":"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","file":"main.59381dfd.chunk.css","sourcesContent":["@tailwind base;\r\n@tailwind components;\r\n@tailwind utilities;",null,"/*! tailwindcss v2.2.2 | MIT License | https://tailwindcss.com */\n\n/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */\n\n/*\nDocument\n========\n*/\n\n/**\nUse a better box model (opinionated).\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box;\n}\n\n/**\nUse a more readable tab size (opinionated).\n*/\n\nhtml {\n -moz-tab-size: 4;\n tab-size: 4;\n}\n\n/**\n1. Correct the line height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n*/\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/*\nSections\n========\n*/\n\n/**\nRemove the margin in all browsers.\n*/\n\nbody {\n margin: 0;\n}\n\n/**\nImprove consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n*/\n\nbody {\n font-family:\n\t\tsystem-ui,\n\t\t-apple-system, /* Firefox supports this but not yet `system-ui` */\n\t\t'Segoe UI',\n\t\tRoboto,\n\t\tHelvetica,\n\t\tArial,\n\t\tsans-serif,\n\t\t'Apple Color Emoji',\n\t\t'Segoe UI Emoji';\n}\n\n/*\nGrouping content\n================\n*/\n\n/**\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n}\n\n/*\nText-level semantics\n====================\n*/\n\n/**\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr[title] {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/**\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n2. Correct the odd 'em' font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family:\n\t\tui-monospace,\n\t\tSFMono-Regular,\n\t\tConsolas,\n\t\t'Liberation Mono',\n\t\tMenlo,\n\t\tmonospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/**\nPrevent 'sub' and 'sup' elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\nTabular data\n============\n*/\n\n/**\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n}\n\n/*\nForms\n=====\n*/\n\n/**\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\nRemove the inheritance of text transform in Edge and Firefox.\n1. Remove the inheritance of text transform in Firefox.\n*/\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\nCorrect the inability to style clickable types in iOS and Safari.\n*/\n\nbutton {\n -webkit-appearance: button;\n}\n\n/**\nRemove the inner border and padding in Firefox.\n*/\n\n/**\nRestore the focus styles unset by the previous rule.\n*/\n\n/**\nRemove the additional ':invalid' styles in Firefox.\nSee: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\n*/\n\n/**\nRemove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\n*/\n\nlegend {\n padding: 0;\n}\n\n/**\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n/**\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n/**\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n/**\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to 'inherit' in Safari.\n*/\n\n/*\nInteractive\n===========\n*/\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/**\n * Manually forked from SUIT CSS Base: https://github.com/suitcss/base\n * A thin layer on top of normalize.css that provides a starting point more\n * suitable for web applications.\n */\n\n/**\n * Removes the default spacing and border for appropriate elements.\n */\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nbutton {\n background-color: transparent;\n background-image: none;\n}\n\n/**\n * Work around a Firefox/IE bug where the transparent `button` background\n * results in a loss of the default `button` focus styles.\n */\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nol,\nul {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/**\n * Tailwind custom reset styles\n */\n\n/**\n * 1. Use the user's configured `sans` font-family (with Tailwind's default\n * sans-serif font stack as a fallback) as a sane default.\n * 2. Use Tailwind's default \"normal\" line-height so the user isn't forced\n * to override it to ensure consistency even when using the default theme.\n */\n\nhtml {\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 1 */\n line-height: 1.5; /* 2 */\n}\n\n/**\n * Inherit font-family and line-height from `html` so users can set them as\n * a class directly on the `html` element.\n */\n\nbody {\n font-family: inherit;\n line-height: inherit;\n}\n\n/**\n * 1. Prevent padding and border from affecting element width.\n *\n * We used to set this in the html element and inherit from\n * the parent element for everything else. This caused issues\n * in shadow-dom-enhanced elements like
where the content\n * is wrapped by a div with box-sizing set to `content-box`.\n *\n * https://github.com/mozdevs/cssremedy/issues/4\n *\n *\n * 2. Allow adding a border to an element by just adding a border-width.\n *\n * By default, the way the browser specifies that an element should have no\n * border is by setting it's border-style to `none` in the user-agent\n * stylesheet.\n *\n * In order to easily add borders to elements by just setting the `border-width`\n * property, we change the default border-style for all elements to `solid`, and\n * use border-width to hide them instead. This way our `border` utilities only\n * need to set the `border-width` property instead of the entire `border`\n * shorthand, making our border utilities much more straightforward to compose.\n *\n * https://github.com/tailwindcss/tailwindcss/pull/116\n */\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: currentColor; /* 2 */\n}\n\n/*\n * Ensure horizontal rules are visible by default\n */\n\nhr {\n border-top-width: 1px;\n}\n\n/**\n * Undo the `border-style: none` reset that Normalize applies to images so that\n * our `border-{width}` utilities have the expected effect.\n *\n * The Normalize reset is unnecessary for us since we default the border-width\n * to 0 on all elements.\n *\n * https://github.com/tailwindcss/tailwindcss/issues/362\n */\n\nimg {\n border-style: solid;\n}\n\ntextarea {\n resize: vertical;\n}\n\ninput::-webkit-input-placeholder, textarea::-webkit-input-placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n\ninput:-ms-input-placeholder, textarea:-ms-input-placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n\nbutton {\n cursor: pointer;\n}\n\ntable {\n border-collapse: collapse;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/**\n * Reset links to optimize for opt-in styling instead of\n * opt-out.\n */\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/**\n * Reset form element properties that are easy to forget to\n * style explicitly so you don't inadvertently introduce\n * styles that deviate from your design system. These styles\n * supplement a partial reset that is already applied by\n * normalize.css.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n padding: 0;\n line-height: inherit;\n color: inherit;\n}\n\n/**\n * Use the configured 'mono' font family for elements that\n * are expected to be rendered with a monospace font, falling\n * back to the system monospace stack if there is no configured\n * 'mono' font family.\n */\n\npre,\ncode,\nkbd,\nsamp {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n/**\n * 1. Make replaced elements `display: block` by default as that's\n * the behavior you want almost all of the time. Inspired by\n * CSS Remedy, with `svg` added as well.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n * \n * 2. Add `vertical-align: middle` to align replaced elements more\n * sensibly by default when overriding `display` by adding a\n * utility like `inline`.\n *\n * This can trigger a poorly considered linting error in some\n * tools but is included by design.\n * \n * https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210\n */\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/**\n * Constrain images and videos to the parent width and preserve\n * their intrinsic aspect ratio.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n*, ::before, ::after {\n --tw-border-opacity: 1;\n border-color: rgba(229, 231, 235, var(--tw-border-opacity));\n}\n\n.absolute {\n position: absolute;\n}\n\n.relative {\n position: relative;\n}\n\n.inset-0 {\n top: 0px;\n right: 0px;\n bottom: 0px;\n left: 0px;\n}\n\n.float-right {\n float: right;\n}\n\n.float-left {\n float: left;\n}\n\n.m-2 {\n margin: 0.5rem;\n}\n\n.mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n.my-4 {\n margin-top: 1rem;\n margin-bottom: 1rem;\n}\n\n.my-10 {\n margin-top: 2.5rem;\n margin-bottom: 2.5rem;\n}\n\n.flex {\n display: -webkit-flex;\n display: flex;\n}\n\n.table {\n display: table;\n}\n\n.grid {\n display: grid;\n}\n\n.h-12 {\n height: 3rem;\n}\n\n.min-h-screen {\n min-height: 100vh;\n}\n\n.w-full {\n width: 100%;\n}\n\n.max-w-md {\n max-width: 28rem;\n}\n\n.transform {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n -webkit-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.-skew-y-6 {\n --tw-skew-y: -6deg;\n}\n\n@-webkit-keyframes spin {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes spin {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@-webkit-keyframes ping {\n 75%, 100% {\n -webkit-transform: scale(2);\n transform: scale(2);\n opacity: 0;\n }\n}\n\n@keyframes ping {\n 75%, 100% {\n -webkit-transform: scale(2);\n transform: scale(2);\n opacity: 0;\n }\n}\n\n@-webkit-keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n@keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n@-webkit-keyframes bounce {\n 0%, 100% {\n -webkit-transform: translateY(-25%);\n transform: translateY(-25%);\n -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);\n animation-timing-function: cubic-bezier(0.8,0,1,1);\n }\n\n 50% {\n -webkit-transform: none;\n transform: none;\n -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);\n animation-timing-function: cubic-bezier(0,0,0.2,1);\n }\n}\n\n@keyframes bounce {\n 0%, 100% {\n -webkit-transform: translateY(-25%);\n transform: translateY(-25%);\n -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);\n animation-timing-function: cubic-bezier(0.8,0,1,1);\n }\n\n 50% {\n -webkit-transform: none;\n transform: none;\n -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);\n animation-timing-function: cubic-bezier(0,0,0.2,1);\n }\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n\n.grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n}\n\n.flex-col {\n -webkit-flex-direction: column;\n flex-direction: column;\n}\n\n.justify-center {\n -webkit-justify-content: center;\n justify-content: center;\n}\n\n.gap-4 {\n gap: 1rem;\n}\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.rounded-lg {\n border-radius: 0.5rem;\n}\n\n.rounded-2xl {\n border-radius: 1rem;\n}\n\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgba(255, 255, 255, var(--tw-bg-opacity));\n}\n\n.bg-gray-100 {\n --tw-bg-opacity: 1;\n background-color: rgba(243, 244, 246, var(--tw-bg-opacity));\n}\n\n.bg-green-200 {\n --tw-bg-opacity: 1;\n background-color: rgba(167, 243, 208, var(--tw-bg-opacity));\n}\n\n.bg-cyan-100 {\n --tw-bg-opacity: 1;\n background-color: rgba(207, 250, 254, var(--tw-bg-opacity));\n}\n\n.bg-cyan-500 {\n --tw-bg-opacity: 1;\n background-color: rgba(6, 182, 212, var(--tw-bg-opacity));\n}\n\n.hover\\:bg-cyan-600:hover {\n --tw-bg-opacity: 1;\n background-color: rgba(8, 145, 178, var(--tw-bg-opacity));\n}\n\n.bg-gradient-to-r {\n background-image: linear-gradient(to right, var(--tw-gradient-stops));\n}\n\n.from-cyan-400 {\n --tw-gradient-from: #22d3ee;\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgba(34, 211, 238, 0));\n}\n\n.to-sky-500 {\n --tw-gradient-to: #0ea5e9;\n}\n\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n\n.py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n\n.py-10 {\n padding-top: 2.5rem;\n padding-bottom: 2.5rem;\n}\n\n.text-center {\n text-align: center;\n}\n\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n\n.font-semibold {\n font-weight: 600;\n}\n\n.font-bold {\n font-weight: 700;\n}\n\n.text-white {\n --tw-text-opacity: 1;\n color: rgba(255, 255, 255, var(--tw-text-opacity));\n}\n\n*, ::before, ::after {\n --tw-shadow: 0 0 #0000;\n}\n\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n*, ::before, ::after {\n --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgba(59, 130, 246, 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n}\n\n.focus\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus\\:ring-cyan-400:focus {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgba(34, 211, 238, var(--tw-ring-opacity));\n}\n\n.focus\\:ring-opacity-75:focus {\n --tw-ring-opacity: 0.75;\n}\n\n@media (min-width: 640px) {\n .sm\\:mx-auto {\n margin-left: auto;\n margin-right: auto;\n }\n\n .sm\\:max-w-xl {\n max-width: 36rem;\n }\n\n .sm\\:-rotate-6 {\n --tw-rotate: -6deg;\n }\n\n .sm\\:skew-y-0 {\n --tw-skew-y: 0deg;\n }\n\n .sm\\:rounded-3xl {\n border-radius: 1.5rem;\n }\n\n .sm\\:p-20 {\n padding: 5rem;\n }\n\n .sm\\:py-12 {\n padding-top: 3rem;\n padding-bottom: 3rem;\n }\n}\n\n@media (min-width: 768px) {\n .md\\:p-6 {\n padding: 1.5rem;\n }\n}\n\n@media (min-width: 1024px) {\n}\n\n@media (min-width: 1280px) {\n}\n\n@media (min-width: 1536px) {\n}\n"]} \ No newline at end of file diff --git a/build/static/css/main.98bc103f.chunk.css b/build/static/css/main.98bc103f.chunk.css new file mode 100644 index 0000000..3cf482b --- /dev/null +++ b/build/static/css/main.98bc103f.chunk.css @@ -0,0 +1,4 @@ +/*! tailwindcss v2.2.2 | MIT License | https://tailwindcss.com */ + +/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */html{-moz-tab-size:4;tab-size:4;line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}*,:after,:before{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.bottom-5{bottom:1.25rem}.float-right{float:right}.m-2{margin:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.flex{display:-webkit-flex;display:flex}.table{display:table}.grid{display:grid}.h-12{height:3rem}.min-h-screen{min-height:100vh}.w-full{width:100%}.max-w-md{max-width:28rem}.transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;-webkit-transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-skew-y-6{--tw-skew-y:-6deg}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.list-inside{list-style-position:inside}.list-none{list-style-type:none}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.flex-col{-webkit-flex-direction:column;flex-direction:column}.justify-center{-webkit-justify-content:center;justify-content:center}.gap-4{gap:1rem}.overflow-hidden{overflow:hidden}.rounded-lg{border-radius:.5rem}.rounded-2xl{border-radius:1rem}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.bg-green-200{--tw-bg-opacity:1;background-color:rgba(167,243,208,var(--tw-bg-opacity))}.bg-cyan-100{--tw-bg-opacity:1;background-color:rgba(207,250,254,var(--tw-bg-opacity))}.bg-cyan-500{--tw-bg-opacity:1;background-color:rgba(6,182,212,var(--tw-bg-opacity))}.hover\:bg-cyan-600:hover{--tw-bg-opacity:1;background-color:rgba(8,145,178,var(--tw-bg-opacity))}.bg-gradient-to-r{background-image:linear-gradient(90deg,var(--tw-gradient-stops))}.from-cyan-400{--tw-gradient-from:#22d3ee;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to,rgba(34,211,238,0))}.to-sky-500{--tw-gradient-to:#0ea5e9}.px-0{padding-left:0;padding-right:0}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.text-center{text-align:center}.text-xs{font-size:.75rem;line-height:1rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-2xl{font-size:1.5rem;line-height:2rem}.font-semibold{font-weight:600}.font-bold{font-weight:700}.text-black{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-sky-900{--tw-text-opacity:1;color:rgba(12,74,110,var(--tw-text-opacity))}*,:after,:before{--tw-shadow:0 0 transparent}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}*,:after,:before{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.focus\:ring-cyan-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(34,211,238,var(--tw-ring-opacity))}.focus\:ring-opacity-75:focus{--tw-ring-opacity:0.75}@media (min-width:640px){.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:max-w-xl{max-width:36rem}.sm\:-rotate-6{--tw-rotate:-6deg}.sm\:skew-y-0{--tw-skew-y:0deg}.sm\:rounded-3xl{border-radius:1.5rem}.sm\:p-20{padding:5rem}.sm\:py-12{padding-top:3rem;padding-bottom:3rem}}@media (min-width:768px){.md\:p-6{padding:1.5rem}} +/*# sourceMappingURL=main.98bc103f.chunk.css.map */ \ No newline at end of file diff --git a/build/static/css/main.98bc103f.chunk.css.map b/build/static/css/main.98bc103f.chunk.css.map new file mode 100644 index 0000000..b0fb520 --- /dev/null +++ b/build/static/css/main.98bc103f.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://src/tailwind.css","","main.98bc103f.chunk.css"],"names":[],"mappings":"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","file":"main.98bc103f.chunk.css","sourcesContent":["@tailwind base;\r\n@tailwind components;\r\n@tailwind utilities;",null,"/*! tailwindcss v2.2.2 | MIT License | https://tailwindcss.com */\n\n/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */\n\n/*\nDocument\n========\n*/\n\n/**\nUse a better box model (opinionated).\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box;\n}\n\n/**\nUse a more readable tab size (opinionated).\n*/\n\nhtml {\n -moz-tab-size: 4;\n tab-size: 4;\n}\n\n/**\n1. Correct the line height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n*/\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/*\nSections\n========\n*/\n\n/**\nRemove the margin in all browsers.\n*/\n\nbody {\n margin: 0;\n}\n\n/**\nImprove consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n*/\n\nbody {\n font-family:\n\t\tsystem-ui,\n\t\t-apple-system, /* Firefox supports this but not yet `system-ui` */\n\t\t'Segoe UI',\n\t\tRoboto,\n\t\tHelvetica,\n\t\tArial,\n\t\tsans-serif,\n\t\t'Apple Color Emoji',\n\t\t'Segoe UI Emoji';\n}\n\n/*\nGrouping content\n================\n*/\n\n/**\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n}\n\n/*\nText-level semantics\n====================\n*/\n\n/**\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr[title] {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/**\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n2. Correct the odd 'em' font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family:\n\t\tui-monospace,\n\t\tSFMono-Regular,\n\t\tConsolas,\n\t\t'Liberation Mono',\n\t\tMenlo,\n\t\tmonospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/**\nPrevent 'sub' and 'sup' elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\nTabular data\n============\n*/\n\n/**\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n}\n\n/*\nForms\n=====\n*/\n\n/**\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\nRemove the inheritance of text transform in Edge and Firefox.\n1. Remove the inheritance of text transform in Firefox.\n*/\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\nCorrect the inability to style clickable types in iOS and Safari.\n*/\n\nbutton {\n -webkit-appearance: button;\n}\n\n/**\nRemove the inner border and padding in Firefox.\n*/\n\n/**\nRestore the focus styles unset by the previous rule.\n*/\n\n/**\nRemove the additional ':invalid' styles in Firefox.\nSee: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\n*/\n\n/**\nRemove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\n*/\n\nlegend {\n padding: 0;\n}\n\n/**\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n/**\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n/**\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n/**\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to 'inherit' in Safari.\n*/\n\n/*\nInteractive\n===========\n*/\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/**\n * Manually forked from SUIT CSS Base: https://github.com/suitcss/base\n * A thin layer on top of normalize.css that provides a starting point more\n * suitable for web applications.\n */\n\n/**\n * Removes the default spacing and border for appropriate elements.\n */\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nbutton {\n background-color: transparent;\n background-image: none;\n}\n\n/**\n * Work around a Firefox/IE bug where the transparent `button` background\n * results in a loss of the default `button` focus styles.\n */\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nol,\nul {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/**\n * Tailwind custom reset styles\n */\n\n/**\n * 1. Use the user's configured `sans` font-family (with Tailwind's default\n * sans-serif font stack as a fallback) as a sane default.\n * 2. Use Tailwind's default \"normal\" line-height so the user isn't forced\n * to override it to ensure consistency even when using the default theme.\n */\n\nhtml {\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 1 */\n line-height: 1.5; /* 2 */\n}\n\n/**\n * Inherit font-family and line-height from `html` so users can set them as\n * a class directly on the `html` element.\n */\n\nbody {\n font-family: inherit;\n line-height: inherit;\n}\n\n/**\n * 1. Prevent padding and border from affecting element width.\n *\n * We used to set this in the html element and inherit from\n * the parent element for everything else. This caused issues\n * in shadow-dom-enhanced elements like
where the content\n * is wrapped by a div with box-sizing set to `content-box`.\n *\n * https://github.com/mozdevs/cssremedy/issues/4\n *\n *\n * 2. Allow adding a border to an element by just adding a border-width.\n *\n * By default, the way the browser specifies that an element should have no\n * border is by setting it's border-style to `none` in the user-agent\n * stylesheet.\n *\n * In order to easily add borders to elements by just setting the `border-width`\n * property, we change the default border-style for all elements to `solid`, and\n * use border-width to hide them instead. This way our `border` utilities only\n * need to set the `border-width` property instead of the entire `border`\n * shorthand, making our border utilities much more straightforward to compose.\n *\n * https://github.com/tailwindcss/tailwindcss/pull/116\n */\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: currentColor; /* 2 */\n}\n\n/*\n * Ensure horizontal rules are visible by default\n */\n\nhr {\n border-top-width: 1px;\n}\n\n/**\n * Undo the `border-style: none` reset that Normalize applies to images so that\n * our `border-{width}` utilities have the expected effect.\n *\n * The Normalize reset is unnecessary for us since we default the border-width\n * to 0 on all elements.\n *\n * https://github.com/tailwindcss/tailwindcss/issues/362\n */\n\nimg {\n border-style: solid;\n}\n\ntextarea {\n resize: vertical;\n}\n\ninput::-webkit-input-placeholder, textarea::-webkit-input-placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n\ninput:-ms-input-placeholder, textarea:-ms-input-placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n\nbutton {\n cursor: pointer;\n}\n\ntable {\n border-collapse: collapse;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/**\n * Reset links to optimize for opt-in styling instead of\n * opt-out.\n */\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/**\n * Reset form element properties that are easy to forget to\n * style explicitly so you don't inadvertently introduce\n * styles that deviate from your design system. These styles\n * supplement a partial reset that is already applied by\n * normalize.css.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n padding: 0;\n line-height: inherit;\n color: inherit;\n}\n\n/**\n * Use the configured 'mono' font family for elements that\n * are expected to be rendered with a monospace font, falling\n * back to the system monospace stack if there is no configured\n * 'mono' font family.\n */\n\npre,\ncode,\nkbd,\nsamp {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n/**\n * 1. Make replaced elements `display: block` by default as that's\n * the behavior you want almost all of the time. Inspired by\n * CSS Remedy, with `svg` added as well.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n * \n * 2. Add `vertical-align: middle` to align replaced elements more\n * sensibly by default when overriding `display` by adding a\n * utility like `inline`.\n *\n * This can trigger a poorly considered linting error in some\n * tools but is included by design.\n * \n * https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210\n */\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/**\n * Constrain images and videos to the parent width and preserve\n * their intrinsic aspect ratio.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n*, ::before, ::after {\n --tw-border-opacity: 1;\n border-color: rgba(229, 231, 235, var(--tw-border-opacity));\n}\n\n.absolute {\n position: absolute;\n}\n\n.relative {\n position: relative;\n}\n\n.inset-0 {\n top: 0px;\n right: 0px;\n bottom: 0px;\n left: 0px;\n}\n\n.bottom-5 {\n bottom: 1.25rem;\n}\n\n.float-right {\n float: right;\n}\n\n.m-2 {\n margin: 0.5rem;\n}\n\n.mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n.my-0 {\n margin-top: 0px;\n margin-bottom: 0px;\n}\n\n.my-3 {\n margin-top: 0.75rem;\n margin-bottom: 0.75rem;\n}\n\n.my-10 {\n margin-top: 2.5rem;\n margin-bottom: 2.5rem;\n}\n\n.flex {\n display: -webkit-flex;\n display: flex;\n}\n\n.table {\n display: table;\n}\n\n.grid {\n display: grid;\n}\n\n.h-12 {\n height: 3rem;\n}\n\n.min-h-screen {\n min-height: 100vh;\n}\n\n.w-full {\n width: 100%;\n}\n\n.max-w-md {\n max-width: 28rem;\n}\n\n.transform {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n -webkit-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.-skew-y-6 {\n --tw-skew-y: -6deg;\n}\n\n@-webkit-keyframes spin {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes spin {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@-webkit-keyframes ping {\n 75%, 100% {\n -webkit-transform: scale(2);\n transform: scale(2);\n opacity: 0;\n }\n}\n\n@keyframes ping {\n 75%, 100% {\n -webkit-transform: scale(2);\n transform: scale(2);\n opacity: 0;\n }\n}\n\n@-webkit-keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n@keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n@-webkit-keyframes bounce {\n 0%, 100% {\n -webkit-transform: translateY(-25%);\n transform: translateY(-25%);\n -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);\n animation-timing-function: cubic-bezier(0.8,0,1,1);\n }\n\n 50% {\n -webkit-transform: none;\n transform: none;\n -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);\n animation-timing-function: cubic-bezier(0,0,0.2,1);\n }\n}\n\n@keyframes bounce {\n 0%, 100% {\n -webkit-transform: translateY(-25%);\n transform: translateY(-25%);\n -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);\n animation-timing-function: cubic-bezier(0.8,0,1,1);\n }\n\n 50% {\n -webkit-transform: none;\n transform: none;\n -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);\n animation-timing-function: cubic-bezier(0,0,0.2,1);\n }\n}\n\n.cursor-default {\n cursor: default;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.list-inside {\n list-style-position: inside;\n}\n\n.list-none {\n list-style-type: none;\n}\n\n.grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n\n.grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n}\n\n.flex-col {\n -webkit-flex-direction: column;\n flex-direction: column;\n}\n\n.justify-center {\n -webkit-justify-content: center;\n justify-content: center;\n}\n\n.gap-4 {\n gap: 1rem;\n}\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.rounded-lg {\n border-radius: 0.5rem;\n}\n\n.rounded-2xl {\n border-radius: 1rem;\n}\n\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgba(255, 255, 255, var(--tw-bg-opacity));\n}\n\n.bg-gray-100 {\n --tw-bg-opacity: 1;\n background-color: rgba(243, 244, 246, var(--tw-bg-opacity));\n}\n\n.bg-green-200 {\n --tw-bg-opacity: 1;\n background-color: rgba(167, 243, 208, var(--tw-bg-opacity));\n}\n\n.bg-cyan-100 {\n --tw-bg-opacity: 1;\n background-color: rgba(207, 250, 254, var(--tw-bg-opacity));\n}\n\n.bg-cyan-500 {\n --tw-bg-opacity: 1;\n background-color: rgba(6, 182, 212, var(--tw-bg-opacity));\n}\n\n.hover\\:bg-cyan-600:hover {\n --tw-bg-opacity: 1;\n background-color: rgba(8, 145, 178, var(--tw-bg-opacity));\n}\n\n.bg-gradient-to-r {\n background-image: linear-gradient(to right, var(--tw-gradient-stops));\n}\n\n.from-cyan-400 {\n --tw-gradient-from: #22d3ee;\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgba(34, 211, 238, 0));\n}\n\n.to-sky-500 {\n --tw-gradient-to: #0ea5e9;\n}\n\n.px-0 {\n padding-left: 0px;\n padding-right: 0px;\n}\n\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n\n.py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n\n.py-10 {\n padding-top: 2.5rem;\n padding-bottom: 2.5rem;\n}\n\n.text-center {\n text-align: center;\n}\n\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n\n.font-semibold {\n font-weight: 600;\n}\n\n.font-bold {\n font-weight: 700;\n}\n\n.text-black {\n --tw-text-opacity: 1;\n color: rgba(0, 0, 0, var(--tw-text-opacity));\n}\n\n.text-white {\n --tw-text-opacity: 1;\n color: rgba(255, 255, 255, var(--tw-text-opacity));\n}\n\n.text-sky-900 {\n --tw-text-opacity: 1;\n color: rgba(12, 74, 110, var(--tw-text-opacity));\n}\n\n*, ::before, ::after {\n --tw-shadow: 0 0 #0000;\n}\n\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n*, ::before, ::after {\n --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgba(59, 130, 246, 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n}\n\n.focus\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus\\:ring-cyan-400:focus {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgba(34, 211, 238, var(--tw-ring-opacity));\n}\n\n.focus\\:ring-opacity-75:focus {\n --tw-ring-opacity: 0.75;\n}\n\n@media (min-width: 640px) {\n .sm\\:mx-auto {\n margin-left: auto;\n margin-right: auto;\n }\n\n .sm\\:max-w-xl {\n max-width: 36rem;\n }\n\n .sm\\:-rotate-6 {\n --tw-rotate: -6deg;\n }\n\n .sm\\:skew-y-0 {\n --tw-skew-y: 0deg;\n }\n\n .sm\\:rounded-3xl {\n border-radius: 1.5rem;\n }\n\n .sm\\:p-20 {\n padding: 5rem;\n }\n\n .sm\\:py-12 {\n padding-top: 3rem;\n padding-bottom: 3rem;\n }\n}\n\n@media (min-width: 768px) {\n .md\\:p-6 {\n padding: 1.5rem;\n }\n}\n\n@media (min-width: 1024px) {\n}\n\n@media (min-width: 1280px) {\n}\n\n@media (min-width: 1536px) {\n}\n"]} \ No newline at end of file diff --git a/build/static/js/main.7216620f.chunk.js b/build/static/js/main.7216620f.chunk.js new file mode 100644 index 0000000..d3906dc --- /dev/null +++ b/build/static/js/main.7216620f.chunk.js @@ -0,0 +1,2 @@ +(this["webpackJsonpmy-app"]=this["webpackJsonpmy-app"]||[]).push([[0],{13:function(e,t,s){},15:function(e,t,s){"use strict";s.r(t);var n=s(5),i=s(3),r=s(4),a=s(7),c=s(6),l=s(1),o=s.n(l),u=s(8),h=s.n(u),d=(s(13),s.p+"static/media/logo.0a64b44e.jpg"),x=s(0);function m(e){var t="bg-cyan-100 rounded-2xl md:p-6 text-2xl cursor-pointer";e.iswinningTile&&(t="bg-green-200 rounded-2xl md:p-6 text-2xl cursor-pointer");var s=null===e.value?"\u270e":e.value;return Object(x.jsx)("div",{className:t,onClick:e.onClick,children:Object(x.jsx)("span",{className:"font-bold",children:s})})}var j=function(e){Object(a.a)(s,e);var t=Object(c.a)(s);function s(){return Object(i.a)(this,s),t.apply(this,arguments)}return Object(r.a)(s,[{key:"renderSquare",value:function(e,t){var s=this;return Object(x.jsx)(m,{value:this.props.squares[e],iswinningTile:t,onClick:function(){return s.props.onClick(e)}},e)}},{key:"render",value:function(){for(var e=[],t=0;t<9;t++)this.props.winningTiles.includes(t)?e.push(this.renderSquare(t,!0)):e.push(this.renderSquare(t,!1));return Object(x.jsx)("div",{className:"grid grid-rows-3 grid-cols-3 gap-4",children:e})}}]),s}(o.a.Component),b=function(e){Object(a.a)(s,e);var t=Object(c.a)(s);function s(e){var n;return Object(i.a)(this,s),(n=t.call(this,e)).state={history:[{squares:Array(9).fill(null),clickPosition:Array(9).fill(null)}],stepNumber:0,xIsNext:!0,lastStepClicked:-1,sortAsc:!0},n}return Object(r.a)(s,[{key:"jumpTo",value:function(e){this.setState({stepNumber:e,xIsNext:e%2===0,lastStepClicked:e})}},{key:"handleClick",value:function(e){var t=this.state.history.slice(0,this.state.stepNumber+1),s=t[t.length-1].squares.slice();this.calculateWinner(s)||s[e]||(s[e]=this.state.xIsNext?"X":"O",this.setState({history:t.concat([{squares:s,clickPosition:e}]),stepNumber:t.length,xIsNext:!this.state.xIsNext,lastStepClicked:-1}))}},{key:"handleToggleClick",value:function(){this.setState({sortAsc:!this.state.sortAsc})}},{key:"calculateWinner",value:function(e){for(var t=[[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]],s=0;s\r\n {datatoShow}\r\n \r\n );\r\n}\r\n \r\nclass Board extends React.Component {\r\n renderSquare(i,iswinningTile) {\r\n return (this.props.onClick(i)}\r\n />);\r\n }\r\n \r\n render() {\r\n let squares =[];\r\n //let count=0;\r\n // for(let i=0;i<3;i++){\r\n // let children=[];\r\n // for(let j=0;j<3;j++){\r\n // if(this.props.winningTiles.includes(count)){\r\n // children.push(this.renderSquare(count,true));\r\n // }else{\r\n // children.push(this.renderSquare(count,false));\r\n // }\r\n \r\n // count++;\r\n // }\r\n // squares.push(
{children}
);\r\n // }\r\n for(let i=0;i<9;i++){\r\n if(this.props.winningTiles.includes(i)){\r\n squares.push(this.renderSquare(i,true));\r\n }else{\r\n squares.push(this.renderSquare(i,false));\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {squares}\r\n
\r\n );\r\n }\r\n}\r\n \r\n class Game extends React.Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n history:[{\r\n squares:Array(9).fill(null),\r\n clickPosition:Array(9).fill(null)\r\n }],\r\n stepNumber:0,\r\n xIsNext:true,\r\n lastStepClicked:-1,\r\n sortAsc: true\r\n }\r\n }\r\n jumpTo(step){\r\n this.setState({\r\n stepNumber: step,\r\n xIsNext: (step % 2) === 0,\r\n lastStepClicked:step\r\n })\r\n }\r\n handleClick(i){\r\n const history = this.state.history.slice(0, this.state.stepNumber + 1);\r\n const current = history[history.length-1];\r\n const squares = current.squares.slice();\r\n if(this.calculateWinner(squares) || squares[i]){\r\n return;\r\n }\r\n squares[i] = this.state.xIsNext?'X':'O';\r\n //const clickPosition = current.clickPosition.slice();\r\n this.setState({\r\n history: history.concat([{\r\n squares:squares,\r\n clickPosition:i\r\n }]),\r\n stepNumber: history.length,\r\n xIsNext: !this.state.xIsNext,\r\n lastStepClicked:-1\r\n })\r\n }\r\n handleToggleClick(){\r\n this.setState({\r\n sortAsc: !this.state.sortAsc,\r\n })\r\n }\r\n calculateWinner(squares) {\r\n const lines = [\r\n [0, 1, 2],\r\n [3, 4, 5],\r\n [6, 7, 8],\r\n [0, 3, 6],\r\n [1, 4, 7],\r\n [2, 5, 8],\r\n [0, 4, 8],\r\n [2, 4, 6],\r\n ];\r\n for (let i = 0; i < lines.length; i++) {\r\n const [a, b, c] = lines[i];\r\n if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {\r\n return squares[a];\r\n }\r\n }\r\n return null;\r\n }\r\n isDraw(squares){\r\n if(this.calculateWinner(squares)===null && !squares.includes(null)){\r\n return true;\r\n }\r\n return false;\r\n }\r\n getWinningTiles(squares) {\r\n const lines = [\r\n [0, 1, 2],\r\n [3, 4, 5],\r\n [6, 7, 8],\r\n [0, 3, 6],\r\n [1, 4, 7],\r\n [2, 5, 8],\r\n [0, 4, 8],\r\n [2, 4, 6],\r\n ];\r\n for (let i = 0; i < lines.length; i++) {\r\n const [a, b, c] = lines[i];\r\n if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) { \r\n return lines[i];\r\n }\r\n }\r\n return [-1,-1,-1]\r\n }\r\n render() {\r\n const history = this.state.history;\r\n const current = history[this.state.stepNumber];\r\n const winner = this.calculateWinner(current.squares);\r\n let sort = \"Sort Desc ↓\";\r\n const moves = history.map((step,move)=>{\r\n const clickPosition = this.state.history[move].clickPosition;\r\n const row = Math.floor(clickPosition / 3);\r\n const col = clickPosition % 3;\r\n const desc = move?\r\n move===this.state.lastStepClicked?\r\n [Selected] Step #{move}. Position: ({row},{col}):\r\n Step #{move}. Position: ({row},{col}):''\r\n return (
  • \r\n this.jumpTo(move)}>{desc}\r\n
  • )\r\n });\r\n if(!this.state.sortAsc){\r\n sort = \"Sort Asc ↑\";\r\n moves.reverse();\r\n }\r\n\r\n let status;\r\n let winningTiles = [-1,-1,-1];\r\n if (winner) {\r\n status = \"Winner: \" + winner;\r\n winningTiles = this.getWinningTiles(current.squares);\r\n } else if (this.isDraw(current.squares)) {\r\n status = \"Match Draw\";\r\n } else {\r\n status = \"Next Turn: \" + (this.state.xIsNext ? \"X\" : \"O\");\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"logo\"\r\n
    \r\n
    \r\n

    {status}

    \r\n this.handleClick(i)}\r\n />\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
      {moves}
    \r\n {/* */}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n }\r\n \r\n // ========================================\r\n \r\n ReactDOM.render(\r\n ,\r\n document.getElementById('root')\r\n );"],"sourceRoot":""} \ No newline at end of file diff --git a/build/static/js/main.ed6f6be7.chunk.js b/build/static/js/main.ed6f6be7.chunk.js deleted file mode 100644 index 1fe2e23..0000000 --- a/build/static/js/main.ed6f6be7.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(this["webpackJsonpmy-app"]=this["webpackJsonpmy-app"]||[]).push([[0],{13:function(e,t,s){},15:function(e,t,s){"use strict";s.r(t);var n=s(5),i=s(3),r=s(4),a=s(7),c=s(6),l=s(1),o=s.n(l),u=s(8),d=s.n(u),h=(s(13),s.p+"static/media/logo.0a64b44e.jpg"),m=s(0);function x(e){var t="bg-cyan-100 rounded-2xl md:p-6 text-2xl cursor-pointer";e.iswinningTile&&(t="bg-green-200 rounded-2xl md:p-6 text-2xl cursor-pointer");var s=null===e.value?"\u270e":e.value;return Object(m.jsx)("div",{className:t,onClick:e.onClick,children:Object(m.jsx)("span",{className:"font-bold",children:s})})}var p=function(e){Object(a.a)(s,e);var t=Object(c.a)(s);function s(){return Object(i.a)(this,s),t.apply(this,arguments)}return Object(r.a)(s,[{key:"renderSquare",value:function(e,t){var s=this;return Object(m.jsx)(x,{value:this.props.squares[e],iswinningTile:t,onClick:function(){return s.props.onClick(e)}},e)}},{key:"render",value:function(){for(var e=[],t=0;t<9;t++)this.props.winningTiles.includes(t)?e.push(this.renderSquare(t,!0)):e.push(this.renderSquare(t,!1));return Object(m.jsx)("div",{className:"grid grid-rows-3 grid-cols-3 gap-4",children:e})}}]),s}(o.a.Component),j=function(e){Object(a.a)(s,e);var t=Object(c.a)(s);function s(e){var n;return Object(i.a)(this,s),(n=t.call(this,e)).state={history:[{squares:Array(9).fill(null),clickPosition:Array(9).fill(null)}],stepNumber:0,xIsNext:!0,lastStepClicked:-1,sortAsc:!0},n}return Object(r.a)(s,[{key:"jumpTo",value:function(e){this.setState({stepNumber:e,xIsNext:e%2===0,lastStepClicked:e})}},{key:"handleClick",value:function(e){var t=this.state.history.slice(0,this.state.stepNumber+1),s=t[t.length-1].squares.slice();this.calculateWinner(s)||s[e]||(s[e]=this.state.xIsNext?"X":"O",this.setState({history:t.concat([{squares:s,clickPosition:e}]),stepNumber:t.length,xIsNext:!this.state.xIsNext,lastStepClicked:-1}))}},{key:"handleToggleClick",value:function(){this.setState({sortAsc:!this.state.sortAsc})}},{key:"calculateWinner",value:function(e){for(var t=[[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]],s=0;s\r\n {datatoShow}\r\n \r\n );\r\n}\r\n \r\nclass Board extends React.Component {\r\n renderSquare(i,iswinningTile) {\r\n return (this.props.onClick(i)}\r\n />);\r\n }\r\n \r\n render() {\r\n let squares =[];\r\n //let count=0;\r\n // for(let i=0;i<3;i++){\r\n // let children=[];\r\n // for(let j=0;j<3;j++){\r\n // if(this.props.winningTiles.includes(count)){\r\n // children.push(this.renderSquare(count,true));\r\n // }else{\r\n // children.push(this.renderSquare(count,false));\r\n // }\r\n \r\n // count++;\r\n // }\r\n // squares.push(
    {children}
    );\r\n // }\r\n for(let i=0;i<9;i++){\r\n if(this.props.winningTiles.includes(i)){\r\n squares.push(this.renderSquare(i,true));\r\n }else{\r\n squares.push(this.renderSquare(i,false));\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n {squares}\r\n
    \r\n );\r\n }\r\n}\r\n \r\n class Game extends React.Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n history:[{\r\n squares:Array(9).fill(null),\r\n clickPosition:Array(9).fill(null)\r\n }],\r\n stepNumber:0,\r\n xIsNext:true,\r\n lastStepClicked:-1,\r\n sortAsc: true\r\n }\r\n }\r\n jumpTo(step){\r\n this.setState({\r\n stepNumber: step,\r\n xIsNext: (step % 2) === 0,\r\n lastStepClicked:step\r\n })\r\n }\r\n handleClick(i){\r\n const history = this.state.history.slice(0, this.state.stepNumber + 1);\r\n const current = history[history.length-1];\r\n const squares = current.squares.slice();\r\n if(this.calculateWinner(squares) || squares[i]){\r\n return;\r\n }\r\n squares[i] = this.state.xIsNext?'X':'O';\r\n //const clickPosition = current.clickPosition.slice();\r\n this.setState({\r\n history: history.concat([{\r\n squares:squares,\r\n clickPosition:i\r\n }]),\r\n stepNumber: history.length,\r\n xIsNext: !this.state.xIsNext,\r\n lastStepClicked:-1\r\n })\r\n }\r\n handleToggleClick(){\r\n this.setState({\r\n sortAsc: !this.state.sortAsc,\r\n })\r\n }\r\n calculateWinner(squares) {\r\n const lines = [\r\n [0, 1, 2],\r\n [3, 4, 5],\r\n [6, 7, 8],\r\n [0, 3, 6],\r\n [1, 4, 7],\r\n [2, 5, 8],\r\n [0, 4, 8],\r\n [2, 4, 6],\r\n ];\r\n for (let i = 0; i < lines.length; i++) {\r\n const [a, b, c] = lines[i];\r\n if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {\r\n return squares[a];\r\n }\r\n }\r\n return null;\r\n }\r\n isDraw(squares){\r\n if(this.calculateWinner(squares)===null && !squares.includes(null)){\r\n return true;\r\n }\r\n return false;\r\n }\r\n getWinningTiles(squares) {\r\n const lines = [\r\n [0, 1, 2],\r\n [3, 4, 5],\r\n [6, 7, 8],\r\n [0, 3, 6],\r\n [1, 4, 7],\r\n [2, 5, 8],\r\n [0, 4, 8],\r\n [2, 4, 6],\r\n ];\r\n for (let i = 0; i < lines.length; i++) {\r\n const [a, b, c] = lines[i];\r\n if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) { \r\n return lines[i];\r\n }\r\n }\r\n return [-1,-1,-1]\r\n }\r\n render() {\r\n const history = this.state.history;\r\n const current = history[this.state.stepNumber];\r\n const winner = this.calculateWinner(current.squares);\r\n let sort = \"Sort Desc ↓\";\r\n const moves = history.map((step,move)=>{\r\n const clickPosition = this.state.history[move].clickPosition;\r\n const row = Math.floor(clickPosition / 3);\r\n const col = clickPosition % 3;\r\n const desc = move?\r\n move===this.state.lastStepClicked?\r\n Go to step #{move}. Position: ({row},{col}):\r\n Go to step #{move}. Position: ({row},{col}):\r\n 'Go to game start';\r\n return (
  • \r\n \r\n
  • )\r\n });\r\n if(!this.state.sortAsc){\r\n sort = \"Sort Asc ↑\";\r\n moves.reverse();\r\n }\r\n\r\n let status;\r\n let winningTiles = [-1,-1,-1];\r\n if (winner) {\r\n status = \"Winner: \" + winner;\r\n winningTiles = this.getWinningTiles(current.squares);\r\n } else if (this.isDraw(current.squares)) {\r\n status = \"Match Draw\";\r\n } else {\r\n status = \"Next Turn: \" + (this.state.xIsNext ? \"X\" : \"O\");\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"logo\"\r\n
    \r\n
    \r\n

    {status}

    \r\n this.handleClick(i)}\r\n />\r\n
    \r\n
    \r\n \r\n \r\n {/*
      {moves}
    */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n \r\n // ========================================\r\n \r\n ReactDOM.render(\r\n ,\r\n document.getElementById('root')\r\n );"],"sourceRoot":""} \ No newline at end of file diff --git a/src/index.js b/src/index.js index 2f38cea..68f585a 100644 --- a/src/index.js +++ b/src/index.js @@ -157,11 +157,10 @@ class Board extends React.Component { const col = clickPosition % 3; const desc = move? move===this.state.lastStepClicked? - Go to step #{move}. Position: ({row},{col}): - Go to step #{move}. Position: ({row},{col}): - 'Go to game start'; - return (
  • - + [Selected] Step #{move}. Position: ({row},{col}): + Step #{move}. Position: ({row},{col}):'' + return (
  • + this.jumpTo(move)}>{desc}
  • ) }); if(!this.state.sortAsc){ @@ -187,23 +186,30 @@ class Board extends React.Component {
    - logo + logo
    -

    {status}

    +

    {status}

    this.handleClick(i)} />
    -
    - - - {/*
      {moves}
    */} +
    + + +
    +
    +
      {moves}
    + {/* */}
    + +
    + );