diff --git a/package-lock.json b/package-lock.json index 3cd440e..adbf1a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,8 +40,9 @@ "@types/uuid": "^7.0.8", "gh-pages": "^2.2.0", "husky": "^3.1.0", - "prettier": "^1.19.1", - "pretty-quick": "^2.0.2", + "prettier": "^3.2.5", + "prettier-plugin-organize-imports": "^3.2.3", + "pretty-quick": "^4.0.0", "sass": "^1.71.0", "typescript": "^3.9.10" } @@ -4502,12 +4503,6 @@ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, "node_modules/@types/node": { "version": "12.20.55", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", @@ -5540,15 +5535,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -5696,15 +5682,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -6889,6 +6866,33 @@ "node": ">=10" } }, + "node_modules/css-loader/node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/css-loader/node_modules/semver": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", @@ -13266,31 +13270,6 @@ "multicast-dns": "cli.js" } }, - "node_modules/multimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", - "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", - "dev": true, - "dependencies": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/multimatch/node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -15293,15 +15272,38 @@ } }, "node_modules/prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=4" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-organize-imports": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.4.tgz", + "integrity": "sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog==", + "dev": true, + "peerDependencies": { + "@volar/vue-language-plugin-pug": "^1.0.4", + "@volar/vue-typescript": "^1.0.4", + "prettier": ">=2.0", + "typescript": ">=2.9" + }, + "peerDependenciesMeta": { + "@volar/vue-language-plugin-pug": { + "optional": true + }, + "@volar/vue-typescript": { + "optional": true + } } }, "node_modules/pretty-bytes": { @@ -15349,69 +15351,29 @@ } }, "node_modules/pretty-quick": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-2.0.2.tgz", - "integrity": "sha512-aLb6vtOTEfJDwi1w+MBTeE20GwPVUYyn6IqNg6TtGpiOB1W3y6vKcsGFjqGeaaEtQgMLSPXTWONqh33UBuwG8A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-4.0.0.tgz", + "integrity": "sha512-M+2MmeufXb/M7Xw3Afh1gxcYpj+sK0AxEfnfF958ktFeAyi5MsKY5brymVURQLgPLV1QaF5P4pb2oFJ54H3yzQ==", "dev": true, "dependencies": { - "chalk": "^2.4.2", - "execa": "^2.1.0", - "find-up": "^4.1.0", - "ignore": "^5.1.4", - "mri": "^1.1.4", - "multimatch": "^4.0.0" + "execa": "^5.1.1", + "find-up": "^5.0.0", + "ignore": "^5.3.0", + "mri": "^1.2.0", + "picocolors": "^1.0.0", + "picomatch": "^3.0.1", + "tslib": "^2.6.2" }, "bin": { - "pretty-quick": "bin/pretty-quick.js" + "pretty-quick": "lib/cli.mjs" }, "engines": { - "node": ">=8" + "node": ">=14" }, "peerDependencies": { - "prettier": ">=1.8.0" - } - }, - "node_modules/pretty-quick/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pretty-quick/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pretty-quick/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "prettier": "^3.0.0" } }, - "node_modules/pretty-quick/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, "node_modules/pretty-quick/node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -15426,57 +15388,55 @@ "node": ">= 8" } }, - "node_modules/pretty-quick/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/pretty-quick/node_modules/execa": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz", - "integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^3.0.0", - "onetime": "^5.1.0", - "p-finally": "^2.0.0", - "signal-exit": "^3.0.2", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" }, "engines": { - "node": "^8.12.0 || >=9.7.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/pretty-quick/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/pretty-quick/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "pump": "^3.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pretty-quick/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/pretty-quick/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pretty-quick/node_modules/is-stream": { @@ -15491,10 +15451,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pretty-quick/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pretty-quick/node_modules/npm-run-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz", - "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "dependencies": { "path-key": "^3.0.0" @@ -15503,13 +15478,34 @@ "node": ">=8" } }, - "node_modules/pretty-quick/node_modules/p-finally": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", - "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "node_modules/pretty-quick/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-quick/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pretty-quick/node_modules/path-key": { @@ -15521,6 +15517,18 @@ "node": ">=8" } }, + "node_modules/pretty-quick/node_modules/picomatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/pretty-quick/node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -15542,18 +15550,6 @@ "node": ">=8" } }, - "node_modules/pretty-quick/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/pretty-quick/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 33df5f7..338329c 100644 --- a/package.json +++ b/package.json @@ -45,8 +45,9 @@ "@types/uuid": "^7.0.8", "gh-pages": "^2.2.0", "husky": "^3.1.0", - "prettier": "^1.19.1", - "pretty-quick": "^2.0.2", + "prettier": "^3.2.5", + "prettier-plugin-organize-imports": "^3.2.3", + "pretty-quick": "^4.0.0", "sass": "^1.71.0", "typescript": "^3.9.10" }, @@ -64,7 +65,8 @@ "eject": "react-scripts eject", "predeploy": "npm run build", "deploy": "gh-pages -d build", - "pretty": "prettier --write \"src/**/*.js\" --write \"src/**/*.jsx\" --write \"src/**/*.ts\" --write \"src/**/*.tsx\"", + "prettier": "prettier --cache --write 'src/**/*.{ts,js,tsx,jsx,css,scss}'", + "prettier:nocache": "prettier --write 'src/**/*.{ts,js,tsx,jsx,css,scss}'", "pretty-quick": "pretty-quick" }, "eslintConfig": { diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000..2b57124 --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,7 @@ +// prettierrc.js + +module.exports = { + // ... + plugins: ["prettier-plugin-organize-imports"], + trailingComma: "es5", +}; diff --git a/src/App.scss b/src/App.scss index 9a64004..403fd65 100644 --- a/src/App.scss +++ b/src/App.scss @@ -2,7 +2,9 @@ @import "~bootstrap/scss/bootstrap"; .text-shadow { - text-shadow: 0 0 25px $dark, 0 0 5px $black; + text-shadow: + 0 0 25px $dark, + 0 0 5px $black; } .noselect { diff --git a/src/App.test.tsx b/src/App.test.tsx index 352d7b8..509bd93 100644 --- a/src/App.test.tsx +++ b/src/App.test.tsx @@ -1,5 +1,5 @@ -import React from "react"; import { render } from "@testing-library/react"; +import React from "react"; import App from "./App"; test("renders learn react link", () => { diff --git a/src/App.tsx b/src/App.tsx index fb8aabc..1e6b0d5 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,9 +1,7 @@ import React, { Component } from "react"; import { Helmet, HelmetProvider } from "react-helmet-async"; import { BrowserRouter, Route, Routes } from "react-router-dom"; - import "./App.scss"; - import { Home } from "./pages/home"; class App extends Component { @@ -13,12 +11,12 @@ class App extends Component { displayText: false, displayImages: false, devTools: false, - displayGatherer: false + displayGatherer: false, }; toggle = () => { this.setState({ - isOpen: !this.state.isOpen + isOpen: !this.state.isOpen, }); }; diff --git a/src/confirm/Confirm.tsx b/src/confirm/Confirm.tsx index effd20f..3a758f7 100644 --- a/src/confirm/Confirm.tsx +++ b/src/confirm/Confirm.tsx @@ -1,5 +1,4 @@ import React, { useState } from "react"; - import { Button, ButtonProps, Col, Modal } from "react-bootstrap"; export type ConfirmProps = { @@ -19,7 +18,7 @@ export const Confirm = ({ headerText = "Confirm?", bodyText, confirmText = "Save", - confirmVariant = "primary" + confirmVariant = "primary", }: ConfirmProps) => { const [open, setOpen] = useState(false); const close = (confirmed: boolean = false) => { diff --git a/src/index.tsx b/src/index.tsx index 4996ab2..47dbb13 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,7 +1,7 @@ import React from "react"; import { createRoot } from "react-dom/client"; -import "./index.css"; import App from "./App"; +import "./index.css"; import * as serviceWorkerRegistration from "./serviceWorkerRegistration"; const element = document.getElementById("root")!; diff --git a/src/pages/home/index.tsx b/src/pages/home/index.tsx index fc3e8a9..09bdf7d 100644 --- a/src/pages/home/index.tsx +++ b/src/pages/home/index.tsx @@ -1,5 +1,9 @@ +import { faEdit, faTimes, faTrash } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { cloneDeep, isFunction, last, orderBy, remove, some } from "lodash"; +import assign from "lodash/assign"; +import set from "lodash/set"; import React, { Component } from "react"; -import { Helmet } from "react-helmet-async"; import { Button, ButtonGroup, @@ -7,24 +11,13 @@ import { Form, InputGroup, Row, - Table + Table, } from "react-bootstrap"; -import { - assign, - set, - isFunction, - cloneDeep, - remove, - orderBy, - some, - last -} from "lodash"; +import { Helmet } from "react-helmet-async"; import store from "store/dist/store.modern"; import { v4 as uuidv4 } from "uuid"; -import { Size, Brew } from "../../models/brew"; import { Confirm } from "../../confirm/Confirm"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { faTrash, faEdit, faTimes } from "@fortawesome/free-solid-svg-icons"; +import { Brew, Size } from "../../models/brew"; const INITIAL_SIZE: Size = { id: uuidv4(), @@ -33,7 +26,7 @@ const INITIAL_SIZE: Size = { price: "", calculation: null, apv_calculation: null, - ppv_calculation: null + ppv_calculation: null, }; const INITIAL_BREW: Brew = { @@ -41,7 +34,7 @@ const INITIAL_BREW: Brew = { name: "", alcohol: "", alcohol_unit: "APV", - sizes: [cloneDeep(INITIAL_SIZE)] + sizes: [cloneDeep(INITIAL_SIZE)], }; const INITIAL_STATE: { @@ -49,7 +42,7 @@ const INITIAL_STATE: { brew: Brew; } = { stored: [], - brew: cloneDeep(INITIAL_BREW) + brew: cloneDeep(INITIAL_BREW), }; export class Home extends Component { @@ -81,7 +74,7 @@ export class Home extends Component { console.log(event, id); const { brew } = this.state; const { sizes } = this.state.brew; - sizes.map(v => { + sizes.map((v) => { if (v.id === id) { set(v, event.target.name, event.target.value); } @@ -101,7 +94,7 @@ export class Home extends Component { const { brew, stored } = this.state; brew.id = uuidv4(); - brew.sizes.forEach(size => { + brew.sizes.forEach((size) => { size.id = uuidv4(); stored.push(this.buildBrewSize(brew, size)); }); @@ -112,7 +105,7 @@ export class Home extends Component { stored, ["calculation", "apv_calculation", "ppv_calculation"], ["asc", "desc", "asc"] - ) + ), }) ); }; @@ -178,7 +171,7 @@ export class Home extends Component { assign(size, { calculation: localCalculation, apv_calculation: localAPVCalculation, - ppv_calculation: localPPVCalculation + ppv_calculation: localPPVCalculation, }); }); @@ -187,7 +180,7 @@ export class Home extends Component { reCalculateAll = () => { const { stored } = this.state; - stored.forEach(storedBrew => { + stored.forEach((storedBrew) => { assign(storedBrew, this.calculateCalculations(storedBrew)); }); this.persistState({ @@ -195,25 +188,25 @@ export class Home extends Component { stored, ["calculation", "apv_calculation", "ppv_calculation"], ["asc", "desc", "asc"] - ) + ), }); }; removeActiveBrewSize = (sizeId: string) => { const { brew } = this.state; - remove(brew.sizes, size => size.id === sizeId); + remove(brew.sizes, (size) => size.id === sizeId); this.persistState({ brew }); }; removeBrewSize = (id: string) => { const { stored } = this.state; - remove(stored, storedBrew => storedBrew.id === id); + remove(stored, (storedBrew) => storedBrew.id === id); this.persistState({ stored }); }; removeBrew = (id: string) => { const { stored } = this.state; - remove(stored, storedBrew => storedBrew.brewId === id); + remove(stored, (storedBrew) => storedBrew.brewId === id); this.persistState({ stored }); }; @@ -228,15 +221,15 @@ export class Home extends Component { rebuildBrew = (brewId: string): Brew => { const { stored } = this.state; - const sizes = stored.filter(brewSize => brewSize.brewId === brewId); + const sizes = stored.filter((brewSize) => brewSize.brewId === brewId); const brew: Brew = { id: brewId, name: sizes[0].name, alcohol: sizes[0].alcohol, alcohol_unit: sizes[0].alcohol_unit, - sizes + sizes, }; - sizes.forEach(s => { + sizes.forEach((s) => { delete s.name; delete s.alcohol; delete s.alcohol_unit; @@ -388,7 +381,7 @@ export class Home extends Component { name="volume" placeholder="Volume" value={v.volume} - onChange={e => this.handleVolumeChange(e, v.id)} + onChange={(e) => this.handleVolumeChange(e, v.id)} min={0} /> @@ -398,7 +391,7 @@ export class Home extends Component { value={v.volume_unit} className="form-select rounded-end" style={{ flexGrow: 0.15 }} - onChange={e => this.handleVolumeChange(e, v.id)} + onChange={(e) => this.handleVolumeChange(e, v.id)} > @@ -413,7 +406,7 @@ export class Home extends Component { name="price" placeholder="Price" value={v.price} - onChange={e => this.handleVolumeChange(e, v.id)} + onChange={(e) => this.handleVolumeChange(e, v.id)} min={0} step={0.01} /> @@ -509,7 +502,7 @@ export class Home extends Component { renderResults = () => { const { stored } = this.state; - const rows = stored.map(brewSize => { + const rows = stored.map((brewSize) => { return ( diff --git a/src/service-worker.ts b/src/service-worker.ts index 9ecda79..3167ab0 100644 --- a/src/service-worker.ts +++ b/src/service-worker.ts @@ -10,7 +10,7 @@ import { clientsClaim } from "workbox-core"; import { ExpirationPlugin } from "workbox-expiration"; -import { precacheAndRoute, createHandlerBoundToURL } from "workbox-precaching"; +import { createHandlerBoundToURL, precacheAndRoute } from "workbox-precaching"; import { registerRoute } from "workbox-routing"; import { StaleWhileRevalidate } from "workbox-strategies"; @@ -65,14 +65,14 @@ registerRoute( plugins: [ // Ensure that once this runtime cache reaches a maximum size the // least-recently used images are removed. - new ExpirationPlugin({ maxEntries: 50 }) - ] + new ExpirationPlugin({ maxEntries: 50 }), + ], }) ); // This allows the web app to trigger skipWaiting via // registration.waiting.postMessage({type: 'SKIP_WAITING'}) -self.addEventListener("message", event => { +self.addEventListener("message", (event) => { if (event.data && event.data.type === "SKIP_WAITING") { self.skipWaiting(); } diff --git a/src/serviceWorkerRegistration.ts b/src/serviceWorkerRegistration.ts index 0676bc1..6d59991 100644 --- a/src/serviceWorkerRegistration.ts +++ b/src/serviceWorkerRegistration.ts @@ -62,7 +62,7 @@ export function register(config?: Config) { function registerValidSW(swUrl: string, config?: Config) { navigator.serviceWorker .register(swUrl) - .then(registration => { + .then((registration) => { registration.onupdatefound = () => { const installingWorker = registration.installing; if (installingWorker == null) { @@ -98,7 +98,7 @@ function registerValidSW(swUrl: string, config?: Config) { }; }; }) - .catch(error => { + .catch((error) => { console.error("Error during service worker registration:", error); }); } @@ -106,9 +106,9 @@ function registerValidSW(swUrl: string, config?: Config) { function checkValidServiceWorker(swUrl: string, config?: Config) { // Check if the service worker can be found. If it can't reload the page. fetch(swUrl, { - headers: { "Service-Worker": "script" } + headers: { "Service-Worker": "script" }, }) - .then(response => { + .then((response) => { // Ensure service worker exists, and that we really are getting a JS file. const contentType = response.headers.get("content-type"); if ( @@ -116,7 +116,7 @@ function checkValidServiceWorker(swUrl: string, config?: Config) { (contentType != null && contentType.indexOf("javascript") === -1) ) { // No service worker found. Probably a different app. Reload the page. - navigator.serviceWorker.ready.then(registration => { + navigator.serviceWorker.ready.then((registration) => { registration.unregister().then(() => { window.location.reload(); }); @@ -136,10 +136,10 @@ function checkValidServiceWorker(swUrl: string, config?: Config) { export function unregister() { if ("serviceWorker" in navigator) { navigator.serviceWorker.ready - .then(registration => { + .then((registration) => { registration.unregister(); }) - .catch(error => { + .catch((error) => { console.error(error.message); }); }