├── .gitignore ├── src ├── leader2.jpg ├── leaderboard.jpg ├── index.js ├── score.js ├── index.html └── style.css ├── docs ├── 166e34fca7c9fc5b5742.jpg ├── index.html └── main.js ├── .hintrc ├── .eslintrc.json ├── .stylelintrc.json ├── webpack.config.js ├── README.md ├── package.json └── .github └── workflows └── linters.yml /.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore 2 | node_modules/ -------------------------------------------------------------------------------- /src/leader2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Basir-Mohammadi/Leaderboard/HEAD/src/leader2.jpg -------------------------------------------------------------------------------- /src/leaderboard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Basir-Mohammadi/Leaderboard/HEAD/src/leaderboard.jpg -------------------------------------------------------------------------------- /docs/166e34fca7c9fc5b5742.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Basir-Mohammadi/Leaderboard/HEAD/docs/166e34fca7c9fc5b5742.jpg -------------------------------------------------------------------------------- /.hintrc: -------------------------------------------------------------------------------- 1 | { 2 | "connector": { 3 | "name": "local", 4 | "options": { 5 | "pattern": ["**", "!.git/**", "!node_modules/**"] 6 | } 7 | }, 8 | "extends": ["development"], 9 | "formatters": ["stylish"], 10 | "hints": [ 11 | "button-type", 12 | "disown-opener", 13 | "html-checker", 14 | "meta-charset-utf-8", 15 | "meta-viewport", 16 | "no-inline-styles:error" 17 | ] 18 | } -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | // import _ from 'lodash'; 2 | import './style.css'; 3 | 4 | import { addScore, refreshScores } from './score.js'; 5 | 6 | const form = document.querySelector('.text-input-score'); 7 | const refresh = document.querySelector('.refresh-btn'); 8 | 9 | form.addEventListener('submit', (e) => { 10 | e.preventDefault(); 11 | addScore(e); 12 | form.reset(); 13 | }); 14 | 15 | refresh.addEventListener('click', () => { 16 | refreshScores(); 17 | }); 18 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true, 5 | "jest": true 6 | }, 7 | "parser": "babel-eslint", 8 | "parserOptions": { 9 | "ecmaVersion": 2018, 10 | "sourceType": "module" 11 | }, 12 | "extends": ["airbnb-base"], 13 | "rules": { 14 | "no-shadow": "off", 15 | "no-param-reassign": "off", 16 | "eol-last": "off", 17 | "import/extensions": [ 1, { 18 | "js": "always", "json": "always" 19 | }] 20 | }, 21 | "ignorePatterns": [ 22 | "dist/", 23 | "build/" 24 | ] 25 | } -------------------------------------------------------------------------------- /.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["stylelint-config-standard"], 3 | "plugins": ["stylelint-scss", "stylelint-csstree-validator"], 4 | "rules": { 5 | "at-rule-no-unknown": [ 6 | true, 7 | { 8 | "ignoreAtRules": ["tailwind", "apply", "variants", "responsive", "screen"] 9 | } 10 | ], 11 | "scss/at-rule-no-unknown": [ 12 | true, 13 | { 14 | "ignoreAtRules": ["tailwind", "apply", "variants", "responsive", "screen"] 15 | } 16 | ], 17 | "csstree/validator": true 18 | }, 19 | "ignoreFiles": ["build/**", "dist/**", "**/reset*.css", "**/bootstrap*.css", "**/*.js", "**/*.jsx"] 20 | } -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const HtmlWebpackPlugin = require('html-webpack-plugin'); 3 | 4 | module.exports = { 5 | mode: 'development', 6 | entry: './src/index.js', 7 | devServer: { 8 | static: './docs', 9 | }, 10 | plugins: [ 11 | new HtmlWebpackPlugin({ 12 | title: 'Output Management', 13 | template: './src/index.html', 14 | }), 15 | ], 16 | output: { 17 | filename: 'main.js', 18 | path: path.resolve(__dirname, 'docs'), 19 | }, 20 | module: { 21 | rules: [ 22 | { 23 | test: /\.css$/i, 24 | use: ['style-loader', 'css-loader'], 25 | }, 26 | ], 27 | }, 28 | }; -------------------------------------------------------------------------------- /src/score.js: -------------------------------------------------------------------------------- 1 | export const refreshScores = async () => { 2 | const scoresContainer = document.querySelector('.recent-score-body'); 3 | scoresContainer.innerHTML = ''; 4 | const response = await fetch( 5 | 'https://us-central1-js-capstone-backend.cloudfunctions.net/api/games/U89UpEn5EXu1MQahYhm3/scores/', 6 | ); 7 | const json = await response.json(); 8 | 9 | json.result.forEach((score) => { 10 | scoresContainer.innerHTML += ` 11 |
${score.user} :${score.score}
12 | `; 13 | }); 14 | }; 15 | 16 | export const addScore = async (e) => { 17 | const response = await fetch( 18 | 'https://us-central1-js-capstone-backend.cloudfunctions.net/api/games/U89UpEn5EXu1MQahYhm3/scores/', 19 | { 20 | method: 'POST', 21 | body: JSON.stringify({ 22 | name: 'My awesome new game', 23 | user: `${e.target.name.value}`, 24 | score: `${e.target.score.value}`, 25 | }), 26 | headers: { 27 | 'Content-type': 'application/json; charset=UTF-8', 28 | }, 29 | }, 30 | ); 31 | return response; 32 | }; 33 | 34 | window.addEventListener('load', refreshScores); 35 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Leaderboard 2 | 3 | 4 | ![](https://img.shields.io/badge/Microverse-blueviolet) 5 | 6 | > This is a leaderboard game that allows users to play the game by adding their name and score. This project is build using JavaScript objects and arrays API. 7 | 8 | 9 | ## Built With 10 | 11 | - HTML 12 | - CSS 13 | - Javascript 14 | - webpack 15 | - API 16 | 17 | ## Getting Started 18 | 19 | To get a local copy up and running follow these simple example steps. 20 | 21 | - Clone repository in your local machine 22 | - cd Portfolio 23 | - open `index.html` in your browser. 24 | - You can use live server. 25 | 26 | ## Live Demo 27 | 28 | [Leaderboard Live](https://basirking.github.io/Leaderboard/) 29 | 30 | ## Author 31 | 32 | 👤 **Basir Mohammadi** 33 | 34 | - GitHub: [@basirking](https://github.com/basirking) 35 | - LinkedIn: [Basir Mohammadi](https://www.linkedin.com/in/basir-mohammadi-1296b3157/) 36 | 37 | 38 | 39 | ## 🤝 Contributing 40 | 41 | Contributions, issues, and feature requests are welcome! 42 | 43 | 44 | ## Show your support 45 | 46 | Give a ⭐️ to if you like this project! 47 | 48 | 49 | ## Acknowledgments 50 | 51 | - Microverse 52 | - Coding partner 53 | - Code reviewer 54 | 55 | ## 📝 License 56 | 57 | This project is [MIT](./MIT.md) licensed. 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Leaderboard 7 | 8 | 9 |
10 |

Leaderboard

11 |
12 |
13 |
14 | Recent Scores 15 | 16 |
17 |
18 | 19 |
20 |
21 |
22 |
23 | Add your score 24 |
25 |
26 | 27 | 28 | 29 |
30 |
31 |
32 |
33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Leaderboard 7 | 8 | 9 |
10 |

Leaderboard

11 |
12 |
13 |
14 | Recent Scores 15 | 16 |
17 |
18 | 19 |
20 |
21 |
22 |
23 | Add your score 24 |
25 |
26 | 27 | 28 | 29 |
30 |
31 |
32 |
33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "leaderboard", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "private": true, 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1", 9 | "watch": "webpack --watch", 10 | "start": "webpack serve --open", 11 | "build": "webpack", 12 | "predeploy": "npm run build", 13 | "deploy": "gh-pages -d dist" 14 | }, 15 | "repository": { 16 | "type": "git", 17 | "url": "git+https://github.com/basirking/Leaderboard.git" 18 | }, 19 | "author": "", 20 | "license": "ISC", 21 | "bugs": { 22 | "url": "https://github.com/basirking/Leaderboard/issues" 23 | }, 24 | "homepage": "https://github.com/basirking/Leaderboard#readme", 25 | "devDependencies": { 26 | "babel-eslint": "^10.1.0", 27 | "css-loader": "^6.7.1", 28 | "eslint": "^7.32.0", 29 | "eslint-config-airbnb-base": "^14.2.1", 30 | "eslint-plugin-import": "^2.26.0", 31 | "gh-pages": "^4.0.0", 32 | "hint": "^6.2.0", 33 | "html-webpack-plugin": "^5.5.0", 34 | "style-loader": "^3.3.1", 35 | "stylelint": "^13.13.1", 36 | "stylelint-config-standard": "^21.0.0", 37 | "stylelint-csstree-validator": "^1.9.0", 38 | "stylelint-scss": "^3.21.0", 39 | "webpack": "^5.73.0", 40 | "webpack-cli": "^4.10.0", 41 | "webpack-dev-server": "^4.9.2" 42 | }, 43 | "dependencies": { 44 | "lodash": "^4.17.21", 45 | "gh-pages": "^1.1.0" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /.github/workflows/linters.yml: -------------------------------------------------------------------------------- 1 | name: Linters 2 | 3 | on: pull_request 4 | 5 | env: 6 | FORCE_COLOR: 1 7 | 8 | jobs: 9 | eslint: 10 | name: ESLint 11 | runs-on: ubuntu-18.04 12 | steps: 13 | - uses: actions/checkout@v2 14 | - uses: actions/setup-node@v1 15 | with: 16 | node-version: "12.x" 17 | - name: Setup ESLint 18 | run: | 19 | npm install --save-dev eslint@7.x eslint-config-airbnb-base@14.x eslint-plugin-import@2.x babel-eslint@10.x 20 | [ -f .eslintrc.json ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/javascript/.eslintrc.json 21 | - name: ESLint Report 22 | run: npx eslint . 23 | stylelint: 24 | name: Stylelint 25 | runs-on: ubuntu-18.04 26 | steps: 27 | - uses: actions/checkout@v2 28 | - uses: actions/setup-node@v1 29 | with: 30 | node-version: "12.x" 31 | - name: Setup Stylelint 32 | run: | 33 | npm install --save-dev stylelint@13.x stylelint-scss@3.x stylelint-config-standard@21.x stylelint-csstree-validator@1.x 34 | [ -f .stylelintrc.json ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/javascript/.stylelintrc.json 35 | - name: Stylelint Report 36 | run: npx stylelint "**/*.{css,scss}" 37 | nodechecker: 38 | name: node_modules checker 39 | runs-on: ubuntu-18.04 40 | steps: 41 | - uses: actions/checkout@v2 42 | - name: Check node_modules existence 43 | run: | 44 | if [ -d "node_modules/" ]; then echo -e "\e[1;31mThe node_modules/ folder was pushed to the repo. Please remove it from the GitHub repository and try again."; echo -e "\e[1;32mYou can set up a .gitignore file with this folder included on it to prevent this from happening in the future." && exit 1; fi -------------------------------------------------------------------------------- /src/style.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Roboto:wght@700&display=swap'); 2 | 3 | * { 4 | list-style: none; 5 | } 6 | 7 | body { 8 | padding: 0; 9 | margin: 0; 10 | box-sizing: border-box; 11 | font-family: 'Roboto', sans-serif; 12 | background-image: url('leader2.jpg'); 13 | background-repeat: no-repeat; 14 | background-size: cover; 15 | } 16 | 17 | .section { 18 | padding: 1.5rem; 19 | margin: 4rem 15rem; 20 | } 21 | 22 | .section .leaderboard-title { 23 | font-size: 45px; 24 | color: rgb(241, 244, 245); 25 | } 26 | 27 | .leaderboard-title span { 28 | color: rgb(5, 5, 5); 29 | text-shadow: 1px 3px; 30 | } 31 | 32 | .main-page { 33 | display: flex; 34 | justify-content: space-between; 35 | margin-left: 45px; 36 | } 37 | 38 | .section .recent-score-bar { 39 | margin-bottom: 1.5rem; 40 | } 41 | 42 | .recent-score-bar .score-text { 43 | margin-right: 28px; 44 | font-size: 25px; 45 | color: white; 46 | } 47 | 48 | .refresh-btn { 49 | padding: 5px 10px; 50 | box-shadow: 3px 2px grey; 51 | } 52 | 53 | .refresh-btn:hover { 54 | background: rgb(26, 25, 25); 55 | color: white; 56 | cursor: pointer; 57 | } 58 | 59 | .recent-score-body { 60 | border: 2px solid rgb(107, 106, 106); 61 | border-radius: 5px; 62 | } 63 | 64 | .recent-score-body div { 65 | margin-bottom: 2px; 66 | } 67 | 68 | .recent-score-body div:nth-child(odd) { 69 | background: rgb(192, 143, 143); 70 | padding: 10px 5px; 71 | } 72 | 73 | .recent-score-body div:nth-child(even) { 74 | background: rgb(152, 175, 125); 75 | padding: 10px 5px; 76 | } 77 | 78 | .add-score-bar { 79 | margin-right: 5rem; 80 | font-size: 24px; 81 | } 82 | 83 | .add-score-text { 84 | margin-bottom: 1.5rem; 85 | color: white; 86 | } 87 | 88 | .text-input-score { 89 | display: flex; 90 | flex-direction: column; 91 | } 92 | 93 | .text-input-score input { 94 | border: 2px solid grey; 95 | padding: 7px; 96 | border-radius: 5px; 97 | } 98 | 99 | .text-input-score .name { 100 | margin-bottom: 1rem; 101 | } 102 | 103 | .submit-btn { 104 | float: right; 105 | margin-top: 10px; 106 | padding: 10px 8px; 107 | box-shadow: 3px 2px grey; 108 | } 109 | 110 | .submit-btn:hover { 111 | background: rgb(26, 25, 25); 112 | color: white; 113 | cursor: pointer; 114 | } 115 | -------------------------------------------------------------------------------- /docs/main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). 3 | * This devtool is neither made for production nor for readable output files. 4 | * It uses "eval()" calls to create a separate source file in the browser devtools. 5 | * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) 6 | * or disable the default devtool with "devtool: false". 7 | * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). 8 | */ 9 | /******/ (() => { // webpackBootstrap 10 | /******/ "use strict"; 11 | /******/ var __webpack_modules__ = ({ 12 | 13 | /***/ "./node_modules/css-loader/dist/cjs.js!./src/style.css": 14 | /*!*************************************************************!*\ 15 | !*** ./node_modules/css-loader/dist/cjs.js!./src/style.css ***! 16 | \*************************************************************/ 17 | /***/ ((module, __webpack_exports__, __webpack_require__) => { 18 | 19 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! leader2.jpg */ \"./src/leader2.jpg\"), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n___CSS_LOADER_EXPORT___.push([module.id, \"@import url(https://fonts.googleapis.com/css2?family=Roboto:wght@700&display=swap);\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"* {\\n list-style: none;\\n}\\n\\nbody {\\n padding: 0;\\n margin: 0;\\n box-sizing: border-box;\\n font-family: 'Roboto', sans-serif;\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n background-repeat: no-repeat;\\n background-size: cover;\\n}\\n\\n.section {\\n padding: 1.5rem;\\n margin: 4rem 15rem;\\n}\\n\\n.section .leaderboard-title {\\n font-size: 45px;\\n color: rgb(241, 244, 245);\\n}\\n\\n.leaderboard-title span {\\n color: rgb(5, 5, 5);\\n text-shadow: 1px 3px;\\n}\\n\\n.main-page {\\n display: flex;\\n justify-content: space-between;\\n margin-left: 45px;\\n}\\n\\n.section .recent-score-bar {\\n margin-bottom: 1.5rem;\\n}\\n\\n.recent-score-bar .score-text {\\n margin-right: 28px;\\n font-size: 25px;\\n color: white;\\n}\\n\\n.refresh-btn {\\n padding: 5px 10px;\\n box-shadow: 3px 2px grey;\\n}\\n\\n.refresh-btn:hover {\\n background: rgb(26, 25, 25);\\n color: white;\\n cursor: pointer;\\n}\\n\\n.recent-score-body {\\n border: 2px solid rgb(107, 106, 106);\\n border-radius: 5px;\\n}\\n\\n.recent-score-body div {\\n margin-bottom: 2px;\\n}\\n\\n.recent-score-body div:nth-child(odd) {\\n background: rgb(192, 143, 143);\\n padding: 10px 5px;\\n}\\n\\n.recent-score-body div:nth-child(even) {\\n background: rgb(152, 175, 125);\\n padding: 10px 5px;\\n}\\n\\n.add-score-bar {\\n margin-right: 5rem;\\n font-size: 24px;\\n}\\n\\n.add-score-text {\\n margin-bottom: 1.5rem;\\n color: white;\\n}\\n\\n.text-input-score {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.text-input-score input {\\n border: 2px solid grey;\\n padding: 7px;\\n border-radius: 5px;\\n}\\n\\n.text-input-score .name {\\n margin-bottom: 1rem;\\n}\\n\\n.submit-btn {\\n float: right;\\n margin-top: 10px;\\n padding: 10px 8px;\\n box-shadow: 3px 2px grey;\\n}\\n\\n.submit-btn:hover {\\n background: rgb(26, 25, 25);\\n color: white;\\n cursor: pointer;\\n}\\n\", \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://leaderboard/./src/style.css?./node_modules/css-loader/dist/cjs.js"); 20 | 21 | /***/ }), 22 | 23 | /***/ "./node_modules/css-loader/dist/runtime/api.js": 24 | /*!*****************************************************!*\ 25 | !*** ./node_modules/css-loader/dist/runtime/api.js ***! 26 | \*****************************************************/ 27 | /***/ ((module) => { 28 | 29 | eval("\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n\n content += cssWithMappingToString(item);\n\n if (needLayer) {\n content += \"}\";\n }\n\n if (item[2]) {\n content += \"}\";\n }\n\n if (item[4]) {\n content += \"}\";\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n\n\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\n//# sourceURL=webpack://leaderboard/./node_modules/css-loader/dist/runtime/api.js?"); 30 | 31 | /***/ }), 32 | 33 | /***/ "./node_modules/css-loader/dist/runtime/getUrl.js": 34 | /*!********************************************************!*\ 35 | !*** ./node_modules/css-loader/dist/runtime/getUrl.js ***! 36 | \********************************************************/ 37 | /***/ ((module) => { 38 | 39 | eval("\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n\n if (!url) {\n return url;\n }\n\n url = String(url.__esModule ? url.default : url); // If url is already wrapped in quotes, remove them\n\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n\n return url;\n};\n\n//# sourceURL=webpack://leaderboard/./node_modules/css-loader/dist/runtime/getUrl.js?"); 40 | 41 | /***/ }), 42 | 43 | /***/ "./node_modules/css-loader/dist/runtime/noSourceMaps.js": 44 | /*!**************************************************************!*\ 45 | !*** ./node_modules/css-loader/dist/runtime/noSourceMaps.js ***! 46 | \**************************************************************/ 47 | /***/ ((module) => { 48 | 49 | eval("\n\nmodule.exports = function (i) {\n return i[1];\n};\n\n//# sourceURL=webpack://leaderboard/./node_modules/css-loader/dist/runtime/noSourceMaps.js?"); 50 | 51 | /***/ }), 52 | 53 | /***/ "./src/style.css": 54 | /*!***********************!*\ 55 | !*** ./src/style.css ***! 56 | \***********************/ 57 | /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58 | 59 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleDomAPI.js */ \"./node_modules/style-loader/dist/runtime/styleDomAPI.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertBySelector.js */ \"./node_modules/style-loader/dist/runtime/insertBySelector.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ \"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertStyleElement.js */ \"./node_modules/style-loader/dist/runtime/insertStyleElement.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleTagTransform.js */ \"./node_modules/style-loader/dist/runtime/styleTagTransform.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_style_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!./style.css */ \"./node_modules/css-loader/dist/cjs.js!./src/style.css\");\n\n \n \n \n \n \n \n \n \n \n\nvar options = {};\n\noptions.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, \"head\");\n \noptions.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_style_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"], options);\n\n\n\n\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_style_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"] && _node_modules_css_loader_dist_cjs_js_style_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals ? _node_modules_css_loader_dist_cjs_js_style_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals : undefined);\n\n\n//# sourceURL=webpack://leaderboard/./src/style.css?"); 60 | 61 | /***/ }), 62 | 63 | /***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": 64 | /*!****************************************************************************!*\ 65 | !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! 66 | \****************************************************************************/ 67 | /***/ ((module) => { 68 | 69 | eval("\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n//# sourceURL=webpack://leaderboard/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js?"); 70 | 71 | /***/ }), 72 | 73 | /***/ "./node_modules/style-loader/dist/runtime/insertBySelector.js": 74 | /*!********************************************************************!*\ 75 | !*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***! 76 | \********************************************************************/ 77 | /***/ ((module) => { 78 | 79 | eval("\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;\n\n//# sourceURL=webpack://leaderboard/./node_modules/style-loader/dist/runtime/insertBySelector.js?"); 80 | 81 | /***/ }), 82 | 83 | /***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js": 84 | /*!**********************************************************************!*\ 85 | !*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***! 86 | \**********************************************************************/ 87 | /***/ ((module) => { 88 | 89 | eval("\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;\n\n//# sourceURL=webpack://leaderboard/./node_modules/style-loader/dist/runtime/insertStyleElement.js?"); 90 | 91 | /***/ }), 92 | 93 | /***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js": 94 | /*!**********************************************************************************!*\ 95 | !*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***! 96 | \**********************************************************************************/ 97 | /***/ ((module, __unused_webpack_exports, __webpack_require__) => { 98 | 99 | eval("\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = true ? __webpack_require__.nc : 0;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;\n\n//# sourceURL=webpack://leaderboard/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js?"); 100 | 101 | /***/ }), 102 | 103 | /***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js": 104 | /*!***************************************************************!*\ 105 | !*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***! 106 | \***************************************************************/ 107 | /***/ ((module) => { 108 | 109 | eval("\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;\n\n//# sourceURL=webpack://leaderboard/./node_modules/style-loader/dist/runtime/styleDomAPI.js?"); 110 | 111 | /***/ }), 112 | 113 | /***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js": 114 | /*!*********************************************************************!*\ 115 | !*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***! 116 | \*********************************************************************/ 117 | /***/ ((module) => { 118 | 119 | eval("\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;\n\n//# sourceURL=webpack://leaderboard/./node_modules/style-loader/dist/runtime/styleTagTransform.js?"); 120 | 121 | /***/ }), 122 | 123 | /***/ "./src/index.js": 124 | /*!**********************!*\ 125 | !*** ./src/index.js ***! 126 | \**********************/ 127 | /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 128 | 129 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _style_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./style.css */ \"./src/style.css\");\n/* harmony import */ var _score_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./score.js */ \"./src/score.js\");\n// import _ from 'lodash';\n\n\n\n\nconst form = document.querySelector('.text-input-score');\nconst refresh = document.querySelector('.refresh-btn');\n\nform.addEventListener('submit', (e) => {\n e.preventDefault();\n (0,_score_js__WEBPACK_IMPORTED_MODULE_1__.addScore)(e);\n form.reset();\n});\n\nrefresh.addEventListener('click', () => {\n (0,_score_js__WEBPACK_IMPORTED_MODULE_1__.refreshScores)();\n});\n\n\n//# sourceURL=webpack://leaderboard/./src/index.js?"); 130 | 131 | /***/ }), 132 | 133 | /***/ "./src/score.js": 134 | /*!**********************!*\ 135 | !*** ./src/score.js ***! 136 | \**********************/ 137 | /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 138 | 139 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"addScore\": () => (/* binding */ addScore),\n/* harmony export */ \"refreshScores\": () => (/* binding */ refreshScores)\n/* harmony export */ });\nconst refreshScores = async () => {\n const scoresContainer = document.querySelector('.recent-score-body');\n scoresContainer.innerHTML = '';\n const response = await fetch(\n 'https://us-central1-js-capstone-backend.cloudfunctions.net/api/games/U89UpEn5EXu1MQahYhm3/scores/',\n );\n const json = await response.json();\n\n json.result.forEach((score) => {\n scoresContainer.innerHTML += `\n
${score.user} :${score.score}
\n `;\n });\n};\n\nconst addScore = async (e) => {\n const response = await fetch(\n 'https://us-central1-js-capstone-backend.cloudfunctions.net/api/games/U89UpEn5EXu1MQahYhm3/scores/',\n {\n method: 'POST',\n body: JSON.stringify({\n name: 'My awesome new game',\n user: `${e.target.name.value}`,\n score: `${e.target.score.value}`,\n }),\n headers: {\n 'Content-type': 'application/json; charset=UTF-8',\n },\n },\n );\n return response;\n};\n\nwindow.addEventListener('load', refreshScores);\n\n\n//# sourceURL=webpack://leaderboard/./src/score.js?"); 140 | 141 | /***/ }), 142 | 143 | /***/ "./src/leader2.jpg": 144 | /*!*************************!*\ 145 | !*** ./src/leader2.jpg ***! 146 | \*************************/ 147 | /***/ ((module, __unused_webpack_exports, __webpack_require__) => { 148 | 149 | eval("module.exports = __webpack_require__.p + \"166e34fca7c9fc5b5742.jpg\";\n\n//# sourceURL=webpack://leaderboard/./src/leader2.jpg?"); 150 | 151 | /***/ }) 152 | 153 | /******/ }); 154 | /************************************************************************/ 155 | /******/ // The module cache 156 | /******/ var __webpack_module_cache__ = {}; 157 | /******/ 158 | /******/ // The require function 159 | /******/ function __webpack_require__(moduleId) { 160 | /******/ // Check if module is in cache 161 | /******/ var cachedModule = __webpack_module_cache__[moduleId]; 162 | /******/ if (cachedModule !== undefined) { 163 | /******/ return cachedModule.exports; 164 | /******/ } 165 | /******/ // Create a new module (and put it into the cache) 166 | /******/ var module = __webpack_module_cache__[moduleId] = { 167 | /******/ id: moduleId, 168 | /******/ // no module.loaded needed 169 | /******/ exports: {} 170 | /******/ }; 171 | /******/ 172 | /******/ // Execute the module function 173 | /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); 174 | /******/ 175 | /******/ // Return the exports of the module 176 | /******/ return module.exports; 177 | /******/ } 178 | /******/ 179 | /******/ // expose the modules object (__webpack_modules__) 180 | /******/ __webpack_require__.m = __webpack_modules__; 181 | /******/ 182 | /************************************************************************/ 183 | /******/ /* webpack/runtime/compat get default export */ 184 | /******/ (() => { 185 | /******/ // getDefaultExport function for compatibility with non-harmony modules 186 | /******/ __webpack_require__.n = (module) => { 187 | /******/ var getter = module && module.__esModule ? 188 | /******/ () => (module['default']) : 189 | /******/ () => (module); 190 | /******/ __webpack_require__.d(getter, { a: getter }); 191 | /******/ return getter; 192 | /******/ }; 193 | /******/ })(); 194 | /******/ 195 | /******/ /* webpack/runtime/define property getters */ 196 | /******/ (() => { 197 | /******/ // define getter functions for harmony exports 198 | /******/ __webpack_require__.d = (exports, definition) => { 199 | /******/ for(var key in definition) { 200 | /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 201 | /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 202 | /******/ } 203 | /******/ } 204 | /******/ }; 205 | /******/ })(); 206 | /******/ 207 | /******/ /* webpack/runtime/global */ 208 | /******/ (() => { 209 | /******/ __webpack_require__.g = (function() { 210 | /******/ if (typeof globalThis === 'object') return globalThis; 211 | /******/ try { 212 | /******/ return this || new Function('return this')(); 213 | /******/ } catch (e) { 214 | /******/ if (typeof window === 'object') return window; 215 | /******/ } 216 | /******/ })(); 217 | /******/ })(); 218 | /******/ 219 | /******/ /* webpack/runtime/hasOwnProperty shorthand */ 220 | /******/ (() => { 221 | /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) 222 | /******/ })(); 223 | /******/ 224 | /******/ /* webpack/runtime/make namespace object */ 225 | /******/ (() => { 226 | /******/ // define __esModule on exports 227 | /******/ __webpack_require__.r = (exports) => { 228 | /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 229 | /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 230 | /******/ } 231 | /******/ Object.defineProperty(exports, '__esModule', { value: true }); 232 | /******/ }; 233 | /******/ })(); 234 | /******/ 235 | /******/ /* webpack/runtime/publicPath */ 236 | /******/ (() => { 237 | /******/ var scriptUrl; 238 | /******/ if (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + ""; 239 | /******/ var document = __webpack_require__.g.document; 240 | /******/ if (!scriptUrl && document) { 241 | /******/ if (document.currentScript) 242 | /******/ scriptUrl = document.currentScript.src 243 | /******/ if (!scriptUrl) { 244 | /******/ var scripts = document.getElementsByTagName("script"); 245 | /******/ if(scripts.length) scriptUrl = scripts[scripts.length - 1].src 246 | /******/ } 247 | /******/ } 248 | /******/ // When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration 249 | /******/ // or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic. 250 | /******/ if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser"); 251 | /******/ scriptUrl = scriptUrl.replace(/#.*$/, "").replace(/\?.*$/, "").replace(/\/[^\/]+$/, "/"); 252 | /******/ __webpack_require__.p = scriptUrl; 253 | /******/ })(); 254 | /******/ 255 | /******/ /* webpack/runtime/jsonp chunk loading */ 256 | /******/ (() => { 257 | /******/ __webpack_require__.b = document.baseURI || self.location.href; 258 | /******/ 259 | /******/ // object to store loaded and loading chunks 260 | /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched 261 | /******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded 262 | /******/ var installedChunks = { 263 | /******/ "main": 0 264 | /******/ }; 265 | /******/ 266 | /******/ // no chunk on demand loading 267 | /******/ 268 | /******/ // no prefetching 269 | /******/ 270 | /******/ // no preloaded 271 | /******/ 272 | /******/ // no HMR 273 | /******/ 274 | /******/ // no HMR manifest 275 | /******/ 276 | /******/ // no on chunks loaded 277 | /******/ 278 | /******/ // no jsonp function 279 | /******/ })(); 280 | /******/ 281 | /******/ /* webpack/runtime/nonce */ 282 | /******/ (() => { 283 | /******/ __webpack_require__.nc = undefined; 284 | /******/ })(); 285 | /******/ 286 | /************************************************************************/ 287 | /******/ 288 | /******/ // startup 289 | /******/ // Load entry module and return exports 290 | /******/ // This entry module can't be inlined because the eval devtool is used. 291 | /******/ var __webpack_exports__ = __webpack_require__("./src/index.js"); 292 | /******/ 293 | /******/ })() 294 | ; --------------------------------------------------------------------------------