{w}
)}\r\ndiff --git a/asset-manifest.json b/asset-manifest.json index 4d17b22..25f72ed 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,16 +1,16 @@ { "files": { "main.css": "/syntax-sprint/static/css/main.b522f55d.css", - "main.js": "/syntax-sprint/static/js/main.fea929c3.js", + "main.js": "/syntax-sprint/static/js/main.c435fa51.js", "static/js/453.56edb618.chunk.js": "/syntax-sprint/static/js/453.56edb618.chunk.js", "static/media/logo.svg": "/syntax-sprint/static/media/logo.f69a4bba555b0c2bbb76059aea848e69.svg", "index.html": "/syntax-sprint/index.html", "main.b522f55d.css.map": "/syntax-sprint/static/css/main.b522f55d.css.map", - "main.fea929c3.js.map": "/syntax-sprint/static/js/main.fea929c3.js.map", + "main.c435fa51.js.map": "/syntax-sprint/static/js/main.c435fa51.js.map", "453.56edb618.chunk.js.map": "/syntax-sprint/static/js/453.56edb618.chunk.js.map" }, "entrypoints": [ "static/css/main.b522f55d.css", - "static/js/main.fea929c3.js" + "static/js/main.c435fa51.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 4f1ca73..a9fb36d 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -
a||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"56edb618\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"syntax-sprint:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/syntax-sprint/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksyntax_sprint\"] = self[\"webpackChunksyntax_sprint\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgLogo(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 1024,\n height: 1024,\n viewBox: \"0 0 1024 1024\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 639.746 616.395 C 637.011 618.471, 635.734 623.170, 637 626.500 C 638.628 630.783, 640.866 631.933, 647.639 631.968 C 655.926 632.011, 658.500 630.004, 658.500 623.500 C 658.500 616.996, 655.926 614.989, 647.639 615.032 C 644.120 615.050, 640.751 615.632, 639.746 616.395 M 773 631 L 773 641 764.500 641 L 756 641 756 649 L 756 657 764.500 657 L 773 657 773 672.057 C 773 689.335, 773.946 694.266, 778.268 699.508 C 783.333 705.653, 787.505 706.953, 802.250 706.978 L 815 707 815 699 L 815 691 805.057 691 C 791.779 691, 792 691.325, 792 671.777 L 792 657 804.500 657 L 817 657 817 649 L 817 641 804.500 641 L 792 641 792 631 L 792 621 782.500 621 L 773 621 773 631 M 499.021 641.116 C 495.306 642.598, 492.923 645.053, 490.881 649.500 L 489.044 653.500 489.022 647.250 L 489 641 480 641 L 471 641 471 684 L 471 727 480.500 727 L 490 727 490.017 712.750 L 490.034 698.500 492.020 701.599 C 495.035 706.306, 500.460 708.313, 508.880 707.837 C 518.180 707.311, 523.264 703.973, 527.416 695.664 C 530.064 690.366, 530.375 688.661, 530.789 677.164 C 531.519 656.911, 528.023 647.381, 517.980 642.250 C 513.215 639.815, 503.706 639.247, 499.021 641.116 M 572.500 641.412 C 568.775 643.067, 565.580 646.568, 564.206 650.500 C 563.259 653.210, 563.150 652.897, 563.079 647.250 L 563 641 554 641 L 545 641 545 674 L 545 707 554.500 707 L 564 707 564 685.968 C 564 662.310, 564.629 659.225, 569.894 657.044 C 577.591 653.856, 585 658.520, 585 666.556 L 585 671 595 671 L 605 671 605 664.626 C 605 653.532, 601.031 646.148, 592.790 641.908 C 588.362 639.631, 577.125 639.356, 572.500 641.412 M 714.021 641.116 C 710.522 642.512, 707.942 645.013, 706.403 648.500 C 705.088 651.478, 705.078 651.461, 705.039 646.250 L 705 641 696 641 L 687 641 687 674 L 687 707 696.500 707 L 706 707 706 684.423 L 706 661.846 708.923 658.923 C 712.038 655.808, 715.739 655.190, 720.483 656.994 C 725.245 658.804, 726 662.769, 726 685.968 L 726 707 735.500 707 L 745 707 745 685.136 C 745 673.112, 744.547 660.849, 743.993 657.886 C 741.885 646.612, 733.859 639.945, 722.538 640.063 C 719.217 640.098, 715.384 640.572, 714.021 641.116 M 996.763 641.565 C 989.040 645.756, 989.168 659.450, 996.967 663.483 C 1003.396 666.807, 1012.608 664.593, 1015.483 659.033 C 1018.700 652.812, 1016.556 644.373, 1011.033 641.517 C 1007.333 639.604, 1000.334 639.627, 996.763 641.565 M 620 649 L 620 657 630 657 L 640 657 640 674 L 640 691 628.500 691 L 617 691 617 699 L 617 707 646.500 707 L 676 707 676 699 L 676 691 667 691 L 658 691 658 666 L 658 641 639 641 L 620 641 620 649 M 495.110 657.396 C 491.032 659.656, 490.074 662.735, 490.035 673.703 C 489.996 685.062, 491.019 688.442, 495.145 690.575 C 499.706 692.933, 504.540 692.383, 508.234 689.084 C 511.482 686.184, 511.502 686.108, 511.843 675.516 C 512.232 663.427, 511.207 659.676, 506.909 657.453 C 503.443 655.661, 498.285 655.636, 495.110 657.396 M 992.908 694.250 C 992.265 696.587, 990.079 704.929, 988.050 712.786 L 984.362 727.073 992.737 726.786 L 1001.112 726.500 1008.066 710 C 1011.890 700.925, 1015.271 692.712, 1015.577 691.750 C 1016.085 690.155, 1015.155 690, 1005.106 690 L 994.077 690 992.908 694.250\",\n stroke: \"none\",\n fill: \"#fc7b04\",\n fillRule: \"evenodd\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 193.445 188.505 C 127.948 196.038, 76.755 223.532, 44.498 268.500 C 18.243 305.101, 8.929 357.216, 19.465 408.569 C 32.518 472.186, 77.612 522.694, 153.220 558.385 C 167.161 564.965, 172.312 567.112, 204 579.543 C 265.823 603.795, 302.048 631.491, 312.107 662.194 C 315.356 672.112, 315.370 691.396, 312.138 703.500 C 305.459 728.509, 289.994 744.060, 262.986 752.926 C 235.345 762.001, 185.536 761.475, 155 751.787 C 120.649 740.888, 100.046 720.433, 90.653 687.900 C 86.744 674.362, 85.675 663.263, 86.262 642.318 C 86.792 623.414, 88.582 609.893, 93.041 591.100 C 94.137 586.480, 94.826 582.493, 94.573 582.240 C 94.320 581.986, 75.247 585.931, 52.189 591.006 L 10.266 600.232 9.660 606.866 C 8.122 623.716, 7.849 641.429, 8.936 653.965 C 11.222 680.341, 15.973 698.324, 25.986 718.500 C 50.270 767.430, 100.341 796.153, 178 805.702 C 189.530 807.120, 199.975 807.481, 229 807.465 C 269.219 807.444, 279.538 806.447, 305.500 800.075 C 364.771 785.528, 411.638 750.565, 434.957 703.500 C 445.886 681.442, 451.069 661.773, 453.173 634.368 C 455.758 600.699, 449.528 568.585, 434.828 539.812 C 405.314 482.044, 341.842 436.490, 241 400.699 C 180.505 379.228, 148.659 359.600, 133.507 334.442 C 127.945 325.209, 125.863 317.243, 125.896 305.320 C 125.982 273.772, 141.365 252.979, 172.248 242.665 C 189.488 236.908, 214.208 234.489, 240.020 236.033 C 266.912 237.643, 284.466 241.629, 301.500 249.994 C 320.837 259.491, 332.376 270.731, 341.028 288.500 C 351.861 310.745, 354.382 336.044, 348.884 367.319 C 347.741 373.820, 347.044 379.377, 347.336 379.669 C 347.627 379.961, 365.783 376.892, 387.683 372.850 L 427.500 365.500 427.827 358.500 C 428.631 341.312, 424.367 313.263, 417.945 293.476 C 410.314 269.969, 400.168 253.155, 383.520 236.428 C 355.792 208.567, 318.136 193.255, 264.576 188.060 C 250.024 186.648, 207.263 186.916, 193.445 188.505 M 716.495 257.081 C 712.092 259.241, 704.217 262.532, 698.995 264.395 L 689.500 267.782 689.211 276.391 L 688.922 285 682.961 285 L 677 285 677 290.500 L 677 296 683 296 L 689 296 689.006 330.250 C 689.011 366.464, 689.383 370.097, 693.656 375.759 C 697.857 381.326, 703.101 383.335, 714.660 383.806 C 726.872 384.304, 733.381 382.553, 738.556 377.377 C 741.546 374.387, 743.946 369.503, 742.870 368.594 C 742.667 368.422, 740.346 368, 737.713 367.655 C 733.725 367.133, 732.820 367.318, 732.286 368.764 C 731.357 371.282, 729.859 371.995, 727.804 370.895 C 726.115 369.991, 726 367.567, 726 332.965 L 726 296 734 296 L 742 296 742 290.500 L 742 285 734 285 L 726 285 726 269 C 726 260.200, 725.663 253.035, 725.250 253.078 C 724.837 253.121, 720.898 254.922, 716.495 257.081 M 599.500 283.038 C 596.200 283.448, 589.112 283.832, 583.750 283.891 L 574 284 574 333.500 L 574 383 591.926 383 L 609.853 383 610.207 350.750 C 610.543 320.235, 610.681 318.201, 612.778 312.949 C 615.064 307.225, 619.906 301.699, 623.611 300.587 C 624.966 300.180, 626.576 300.646, 628.111 301.888 L 630.500 303.822 630.783 343.411 L 631.066 383 649.033 383 L 667 383 667 341.626 C 667 295.938, 666.835 294.520, 660.773 288.266 C 655.902 283.241, 650.610 281.674, 640.282 282.199 C 629.540 282.745, 623.279 285.591, 615.334 293.536 L 610 298.870 610 290.435 C 610 280.853, 611.065 281.604, 599.500 283.038 M 773.150 284.035 C 769.108 285.094, 764.260 286.912, 762.379 288.075 C 755.139 292.549, 751.869 300.171, 752.990 309.963 L 753.500 314.425 762 316.167 C 766.675 317.125, 770.793 317.929, 771.152 317.954 C 771.511 317.979, 771.143 315.863, 770.335 313.250 C 766.816 301.869, 770.734 293.945, 780.825 292.032 C 791.126 290.080, 798.250 293.716, 800.079 301.857 C 802.270 311.609, 795.639 317.849, 775.571 324.923 C 763.567 329.154, 757.539 332.581, 752.970 337.772 C 748.327 343.046, 746 349.472, 746 357.019 C 746 368.787, 750.475 377.105, 759.312 381.765 C 764.130 384.305, 765.356 384.500, 776.500 384.500 C 789.424 384.500, 792.641 383.539, 799.754 377.553 L 802.776 375.011 806.660 378.896 C 808.858 381.093, 812.272 383.260, 814.523 383.885 C 819.645 385.307, 833.215 385.273, 839 383.824 C 841.475 383.204, 847.398 382.799, 852.162 382.924 L 860.825 383.152 872.479 367.464 L 884.134 351.776 892.982 367.138 L 901.831 382.500 922.893 382.770 L 943.956 383.040 942.075 379.770 C 916.629 335.547, 910.822 324.515, 911.996 322.634 C 912.666 321.562, 919.015 312.870, 926.107 303.318 C 933.198 293.767, 939 285.737, 939 285.476 C 939 285.214, 935.856 285, 932.013 285 L 925.027 285 914.899 298.489 C 909.329 305.907, 904.409 311.753, 903.965 311.479 C 903.522 311.204, 899.883 305.135, 895.880 297.990 L 888.602 285 867.801 285 C 856.360 285, 847 285.181, 847 285.403 C 847 285.625, 853.761 297.809, 862.025 312.478 C 870.289 327.148, 877.151 339.487, 877.275 339.899 C 877.399 340.310, 871.433 348.852, 864.019 358.879 C 856.604 368.907, 850.352 376.524, 850.125 375.806 C 848.272 369.934, 848.186 369.855, 845.263 371.331 C 843.743 372.098, 841.825 372.511, 841 372.248 C 837.160 371.025, 837 369.560, 836.994 335.559 C 836.991 315.904, 836.570 300.992, 835.956 298.781 C 832.675 286.966, 820.501 281.999, 795 282.070 C 784.002 282.100, 778.725 282.575, 773.150 284.035 M 472.240 286.750 C 472.500 287.712, 481.337 310.843, 491.879 338.151 L 511.046 387.802 509.031 393.151 C 505.962 401.297, 503.319 404.969, 499.322 406.639 C 495.944 408.050, 495.505 408.021, 493.096 406.222 C 491.671 405.158, 490.013 402.535, 489.412 400.394 C 488.811 398.252, 488.135 396.505, 487.910 396.511 C 487.684 396.517, 484.704 398.483, 481.286 400.880 C 475.188 405.158, 475.098 405.289, 476.443 407.890 C 478.426 411.725, 483.007 416.072, 486.718 417.640 C 491.555 419.684, 501.343 419.376, 505.932 417.034 C 510.517 414.696, 515.707 408.880, 518.880 402.526 C 520.145 399.993, 531.460 372.626, 544.024 341.711 L 566.869 285.500 560.284 285.201 C 556.662 285.036, 553.372 285.261, 552.972 285.701 C 552.573 286.140, 547.579 298.534, 541.873 313.243 C 536.168 327.951, 531.237 339.989, 530.915 339.993 C 530.593 339.997, 526.093 327.626, 520.915 312.502 L 511.500 285.003 491.633 285.002 C 473.199 285, 471.801 285.126, 472.240 286.750 M 793.330 330.731 C 784.702 336.752, 782.519 341.417, 782.675 353.500 C 782.739 358.450, 783.269 363.714, 783.851 365.198 C 786.690 372.426, 794.332 372.078, 797.974 364.554 C 799.863 360.652, 800.024 358.755, 799.774 343.347 L 799.500 326.426 793.330 330.731 M 874.441 607.855 C 857.336 614.606, 846.043 627.423, 843.093 643.434 C 842.492 646.697, 842.008 656.147, 842.017 664.434 C 842.045 688.677, 845.003 697.929, 856.113 708.527 C 861.927 714.072, 873.209 720.316, 879.750 721.608 L 883 722.250 883 713.198 L 883 704.147 877.744 701.740 C 871.309 698.794, 866.354 693.988, 863.591 688.011 C 861.776 684.087, 861.461 681.194, 861.172 665.783 C 860.911 651.913, 861.178 646.899, 862.400 642.696 C 864.521 635.399, 870.415 628.848, 877.501 625.911 L 883 623.632 883 614.316 C 883 609.192, 882.663 605.015, 882.250 605.034 C 881.837 605.053, 878.324 606.323, 874.441 607.855 M 909 614.316 L 909 623.632 914.499 625.911 C 921.585 628.848, 927.479 635.399, 929.600 642.696 C 930.822 646.899, 931.089 651.913, 930.828 665.783 C 930.539 681.194, 930.224 684.087, 928.409 688.011 C 925.646 693.988, 920.691 698.794, 914.256 701.740 L 909 704.147 909 713.198 L 909 722.250 912.250 721.608 C 918.791 720.316, 930.073 714.072, 935.887 708.527 C 946.997 697.929, 949.955 688.677, 949.983 664.434 C 950.002 647.384, 948.910 639.823, 945.335 632.252 C 942.303 625.831, 934.608 617.240, 928.212 613.136 C 924.324 610.641, 911.334 605, 909.477 605 C 909.215 605, 909 609.192, 909 614.316\",\n stroke: \"none\",\n fill: \"#040404\",\n fillRule: \"evenodd\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo);\nexport default __webpack_public_path__ + \"static/media/logo.f69a4bba555b0c2bbb76059aea848e69.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport logo from '../static/img/logo.svg';\r\nimport \"../styles/main.css\";\r\nimport {FormEvent, useEffect, useMemo, useState} from \"react\";\r\n\r\ninterface TypeTesterParams {\r\n words: string[],\r\n}\r\n\r\nconst TypeTester = ({words}: TypeTesterParams) => {\r\n const [seconds, setSeconds] = useState(60);\r\n const [isOnTimer, setIsOnTimer] = useState(false);\r\n const [curIndex, setCurIndex] = useState(0);\r\n const [curInput, setCurInput] = useState(\"\");\r\n const [result, setResult] = useState(0);\r\n\r\n const getGeneratedWords = () => {\r\n const result = [];\r\n for (let i = 0; i < 100; i++) {\r\n const length = words.length * (i + 1) / 100\r\n let generatedWord = words[Math.floor(Math.random() * (length + 1))];\r\n while (!generatedWord) {\r\n generatedWord = words[Math.floor(Math.random() * (words.length + 1))];\r\n }\r\n result.push(generatedWord);\r\n }\r\n return result;\r\n }\r\n const wordsList = useMemo(() => getGeneratedWords(), []);\r\n\r\n useEffect(() => {\r\n if (!isOnTimer || !seconds) {\r\n setIsOnTimer(false);\r\n return;\r\n }\r\n\r\n const intervalId = setInterval(() => setSeconds(seconds - 1), 1000);\r\n\r\n return () => clearInterval(intervalId);\r\n }, [isOnTimer, seconds])\r\n\r\n const onChange = (event: FormEvent {w} \r\n Your result: {seconds ? Math.floor(result / seconds * 60) : result} programming WPM\r\n \r\n {`${Math.floor(seconds / 60)}:${(seconds % 60 < 10 ? \"0\" : \"\") + (seconds % 60).toString()}`}\r\n