From 9a089526bca520679f3dd1779307c0fccc16d03c Mon Sep 17 00:00:00 2001 From: Vince Au Date: Wed, 24 Jan 2024 15:55:27 +1100 Subject: [PATCH] Introduce StyleX for styling (#411) * wip * remove declaration override * append stylex styles * fix things * fix bottom margin * remove dev runtime * revert thing * revert * use stylex for keyframe animations * pass logo url via function * update stylex version * Fix generated CSS containing a bunch of `:not(#\#)`s. See [this issue](https://github.com/facebook/stylex/issues/370) for more info. * add eslint plugin to validate stylex styles * use numbers that default to px * use numbers more --- .babelrc | 6 - .erb/configs/webpack.config.renderer.dev.ts | 15 +- .erb/configs/webpack.config.renderer.prod.ts | 15 +- .eslintrc.js | 3 +- babel.config.js | 29 ++ package.json | 3 + .../bouncing_slippi_logo.stories.tsx | 2 +- .../bouncing_slippi_logo.tsx | 76 +++--- .../news_feed/news_article/news_article.tsx | 61 ++--- yarn.lock | 249 +++++++++++++++++- 10 files changed, 373 insertions(+), 86 deletions(-) delete mode 100644 .babelrc create mode 100644 babel.config.js diff --git a/.babelrc b/.babelrc deleted file mode 100644 index c0993b53f..000000000 --- a/.babelrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "presets": [ - "@babel/preset-env", - "@babel/preset-typescript" - ] -} diff --git a/.erb/configs/webpack.config.renderer.dev.ts b/.erb/configs/webpack.config.renderer.dev.ts index a99702321..0d3ef1d68 100644 --- a/.erb/configs/webpack.config.renderer.dev.ts +++ b/.erb/configs/webpack.config.renderer.dev.ts @@ -1,6 +1,7 @@ import "webpack-dev-server"; import ReactRefreshWebpackPlugin from "@pmmmwh/react-refresh-webpack-plugin"; +import StylexPlugin from "@stylexjs/webpack-plugin"; import chalk from "chalk"; import { execSync, spawn } from "child_process"; import fs from "fs"; @@ -14,9 +15,11 @@ import baseConfig from "./webpack.config.base"; import polyfills from "./webpack.config.renderer.polyfills"; import webpackPaths from "./webpack.paths"; +const isDevelopment = process.env.NODE_ENV !== "production"; + // When an ESLint server is running, we can't set the NODE_ENV so we'll check if it's // at the dev webpack config is not accidentally run in a production environment -if (process.env.NODE_ENV === "production") { +if (!isDevelopment) { checkNodeEnv("development"); } @@ -187,9 +190,17 @@ export default (env?: Record, _argv?: any) => { }, isBrowser: false, env: process.env.NODE_ENV, - isDevelopment: process.env.NODE_ENV !== "production", + isDevelopment, nodeModules: webpackPaths.appNodeModulesPath, }), + + new StylexPlugin({ + dev: isDevelopment, + unstable_moduleResolution: { + type: "commonJS", + rootDir: webpackPaths.rootPath, + }, + }), ], node: { diff --git a/.erb/configs/webpack.config.renderer.prod.ts b/.erb/configs/webpack.config.renderer.prod.ts index 1eb63e048..ab3160e12 100644 --- a/.erb/configs/webpack.config.renderer.prod.ts +++ b/.erb/configs/webpack.config.renderer.prod.ts @@ -2,6 +2,7 @@ * Build config for electron renderer process */ +import StylexPlugin from "@stylexjs/webpack-plugin"; import CssMinimizerPlugin from "css-minimizer-webpack-plugin"; import HtmlWebpackPlugin from "html-webpack-plugin"; import MiniCssExtractPlugin from "mini-css-extract-plugin"; @@ -20,6 +21,8 @@ import webpackPaths from "./webpack.paths"; checkNodeEnv("production"); deleteSourceMaps(); +const isDevelopment = process.env.NODE_ENV !== "production"; + const devtoolsConfig = process.env.DEBUG_PROD === "true" ? { @@ -115,6 +118,16 @@ const configuration: webpack.Configuration = { filename: "style.css", }), + new StylexPlugin({ + dev: isDevelopment, + unstable_moduleResolution: { + type: "commonJS", + rootDir: webpackPaths.rootPath, + }, + useCSSLayers: true, + appendTo: "style.css", + }), + new BundleAnalyzerPlugin({ analyzerMode: process.env.ANALYZE === "true" ? "server" : "disabled", }), @@ -128,7 +141,7 @@ const configuration: webpack.Configuration = { removeComments: true, }, isBrowser: false, - isDevelopment: process.env.NODE_ENV !== "production", + isDevelopment, }), new webpack.IgnorePlugin({ resourceRegExp: /^\.\/locale$/, contextRegExp: /moment$/ }), diff --git a/.eslintrc.js b/.eslintrc.js index d4bef7d42..aba45d9ec 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -7,7 +7,7 @@ module.exports = { tsconfigRootDir: __dirname, createDefaultProgram: true, }, - plugins: ["simple-import-sort", "strict-booleans", "react-hooks", "prettier"], + plugins: ["simple-import-sort", "strict-booleans", "react-hooks", "prettier", "@stylexjs"], extends: [ "plugin:react/recommended", "eslint:recommended", @@ -100,6 +100,7 @@ module.exports = { "react/react-in-jsx-scope": "off", "react/jsx-boolean-value": ["error", "always"], "react/no-unstable-nested-components": "error", + "@stylexjs/valid-styles": "error", }, ignorePatterns: ["/*.js", "node_modules"], }; diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 000000000..d4431173a --- /dev/null +++ b/babel.config.js @@ -0,0 +1,29 @@ +import styleXPlugin from '@stylexjs/babel-plugin'; + +const config = { + // presets: [ + // "@babel/preset-env", + // "@babel/preset-typescript" + // ], + plugins: [ + [ + styleXPlugin, + { + dev: true, + // Set this to true for snapshot testing + // default: false + test: false, + // Required for CSS variable support + unstable_moduleResolution: { + // type: 'commonJS' | 'haste' + // default: 'commonJS' + type: 'commonJS', + // The absolute path to the root directory of your project + rootDir: __dirname, + }, + }, + ], + ], +}; + +export default config; \ No newline at end of file diff --git a/package.json b/package.json index fe546499c..85ac1fccb 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,8 @@ "@storybook/preset-scss": "^1.0.3", "@storybook/react": "^6.5.10", "@storybook/testing-library": "^0.0.13", + "@stylexjs/eslint-plugin": "^0.4.1", + "@stylexjs/webpack-plugin": "^0.4.1", "@svgr/webpack": "^6.1.2", "@teamsupercell/typings-for-css-modules-loader": "^2.5.1", "@testing-library/jest-dom": "^5.16.1", @@ -161,6 +163,7 @@ "@mui/lab": "^5.0.0-alpha.127", "@mui/material": "^5.12.1", "@slippi/slippi-js": "^6.7.0", + "@stylexjs/stylex": "^0.4.1", "@xmcl/nat-api": "^0.4.1", "async-mutex": "^0.4.0", "compare-func": "^2.0.0", diff --git a/src/renderer/components/bouncing_slippi_logo/bouncing_slippi_logo.stories.tsx b/src/renderer/components/bouncing_slippi_logo/bouncing_slippi_logo.stories.tsx index bd6cd5398..48e40ba6d 100644 --- a/src/renderer/components/bouncing_slippi_logo/bouncing_slippi_logo.stories.tsx +++ b/src/renderer/components/bouncing_slippi_logo/bouncing_slippi_logo.stories.tsx @@ -11,7 +11,7 @@ export default { } as ComponentMeta; // More on component templates: https://storybook.js.org/docs/react/writing-stories/introduction#using-args -const Template: ComponentStory = (args) => ; +const Template: ComponentStory = () => ; export const Primary = Template.bind({}); // More on args: https://storybook.js.org/docs/react/writing-stories/args diff --git a/src/renderer/components/bouncing_slippi_logo/bouncing_slippi_logo.tsx b/src/renderer/components/bouncing_slippi_logo/bouncing_slippi_logo.tsx index a9ab87c16..5b97fe03a 100644 --- a/src/renderer/components/bouncing_slippi_logo/bouncing_slippi_logo.tsx +++ b/src/renderer/components/bouncing_slippi_logo/bouncing_slippi_logo.tsx @@ -1,28 +1,45 @@ -import { css, keyframes } from "@emotion/react"; +import * as stylex from "@stylexjs/stylex"; import React from "react"; import slippiLogo from "@/styles/images/slippi_logo.svg"; -const bounceAnimation = keyframes` - 0% { bottom: 0px; } - 100% { bottom: 25px; } -`; +const bounceAnimation = stylex.keyframes({ + "0%": { bottom: 0 }, + "100%": { bottom: 25 }, +}); -const barrelRollAnimation = keyframes` - 0% { transform: rotate(0); } - 100% { transform: rotate(720deg); } -`; +const barrelRollAnimation = stylex.keyframes({ + "0%": { transform: "rotate(0)" }, + "100%": { transform: "rotate(720deg)" }, +}); -const onlyBounce = css` - animation: ${bounceAnimation} 0.6s infinite alternate; -`; +const styles = stylex.create({ + container: { + display: "flex", + position: "relative", + paddingTop: 20, + height: 80, + width: 80, + }, + logo: (logoUrl: string) => ({ + backgroundImage: `url("${logoUrl}")`, + backgroundSize: "contain", + backgroundRepeat: "no-repeat", + position: "absolute", + height: 60, + width: 80, + }), + onlyBounce: { + // eslint-disable-next-line @stylexjs/valid-styles + animation: `${bounceAnimation} 0.6s infinite alternate`, + }, + bouncePlusSpin: { + // eslint-disable-next-line @stylexjs/valid-styles + animation: `${bounceAnimation} 0.6s infinite alternate, ${barrelRollAnimation} 1s cubic-bezier(0.68, -0.55, 0.265, 1.55) alternate forwards`, + }, +}); -const bouncePlusSpin = css` - animation: ${bounceAnimation} 0.6s infinite alternate, - ${barrelRollAnimation} 1s cubic-bezier(0.68, -0.55, 0.265, 1.55) alternate forwards; -`; - -export const BouncingSlippiLogo = ({ size = "80px" }: { size?: string }) => { +export const BouncingSlippiLogo = () => { const ref = React.createRef(); const [animationState, setAnimationState] = React.useState<"running" | "ready">("ready"); @@ -46,25 +63,12 @@ export const BouncingSlippiLogo = ({ size = "80px" }: { size?: string }) => { }, [animationState, setAnimationState]); return ( -
+
diff --git a/src/renderer/pages/home/news_feed/news_article/news_article.tsx b/src/renderer/pages/home/news_feed/news_article/news_article.tsx index d5425ce52..c3e94c026 100644 --- a/src/renderer/pages/home/news_feed/news_article/news_article.tsx +++ b/src/renderer/pages/home/news_feed/news_article/news_article.tsx @@ -1,6 +1,4 @@ import type { NewsItem } from "@common/types"; -import { css } from "@emotion/react"; -import styled from "@emotion/styled"; import Button from "@mui/material/Button"; import Card from "@mui/material/Card"; import CardActions from "@mui/material/CardActions"; @@ -8,6 +6,7 @@ import CardContent from "@mui/material/CardContent"; import CardMedia from "@mui/material/CardMedia"; import Tooltip from "@mui/material/Tooltip"; import Typography from "@mui/material/Typography"; +import stylex from "@stylexjs/stylex"; import moment from "moment"; import React from "react"; import TimeAgo from "react-timeago"; @@ -15,22 +14,33 @@ import TimeAgo from "react-timeago"; import { ExternalLink } from "@/components/external_link"; import { MarkdownContent } from "@/components/markdown_content"; +const styles = stylex.create({ + container: { + marginBottom: 20, + }, + dateInfo: { + marginRight: "auto", + marginLeft: 5, + opacity: 0.6, + fontSize: 15, + }, + fixedCardHeight: { + height: 200, + }, + markdownContainer: { + color: "#ccc", + maxWidth: 700, + }, +}); + export const NewsArticle = React.memo(function NewsArticle({ item }: { item: NewsItem }) { const { imageUrl, title, subtitle, permalink, body, publishedAt } = item; const localDateString = moment(publishedAt).format("LLL"); return ( - +
- {imageUrl && ( - - )} + {imageUrl && } {title} @@ -40,38 +50,19 @@ export const NewsArticle = React.memo(function NewsArticle({ item }: { item: New {subtitle} )} - {body && ( - - )} + {body && } - +
Posted - +
- +
); }); - -const Outer = styled.div` - margin-bottom: 20px; -`; - -const DateInfo = styled.div` - margin-right: auto; - margin-left: 5px; - opacity: 0.6; - font-size: 15px; -`; diff --git a/yarn.lock b/yarn.lock index e5599654f..3ab228d12 100644 --- a/yarn.lock +++ b/yarn.lock @@ -78,6 +78,14 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" +"@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" @@ -88,6 +96,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== +"@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== + "@babel/core@7.12.9": version "7.12.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" @@ -194,6 +207,27 @@ json5 "^2.2.1" semver "^6.3.0" +"@babel/core@^7.23.6": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.7.tgz#4d8016e06a14b5f92530a13ed0561730b5c6483f" + integrity sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.7" + "@babel/parser" "^7.23.6" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.7" + "@babel/types" "^7.23.6" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.17.7", "@babel/generator@^7.18.10", "@babel/generator@^7.7.2": version "7.18.12" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.12.tgz#fa58daa303757bd6f5e4bbca91b342040463d9f4" @@ -233,6 +267,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== + dependencies: + "@babel/types" "^7.23.6" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -280,6 +324,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz#d802ee16a64a9e824fcbf0a2ffc92f19d58550ce" @@ -543,6 +598,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" @@ -578,6 +638,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + "@babel/helper-wrap-function@^7.18.9": version "7.18.11" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz#bff23ace436e3f6aefb61f85ffae2291c80ed1fb" @@ -615,6 +680,15 @@ "@babel/traverse" "^7.23.2" "@babel/types" "^7.23.0" +"@babel/helpers@^7.23.7": + version "7.23.8" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.8.tgz#fc6b2d65b16847fd50adddbd4232c76378959e34" + integrity sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.7" + "@babel/types" "^7.23.6" + "@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7": version "7.16.10" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" @@ -651,6 +725,15 @@ chalk "^2.4.2" js-tokens "^4.0.0" +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.17.8", "@babel/parser@^7.18.10": version "7.18.11" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9" @@ -671,6 +754,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.3.tgz#0ce0be31a4ca4f1884b5786057cadcb6c3be58f9" integrity sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw== +"@babel/parser@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" + integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -907,6 +995,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-syntax-flow@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz#084564e0f3cc21ea6c70c44cff984a1c0509729a" + integrity sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-import-assertions@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz#cd6190500a4fa2fe31990a963ffab4b63e4505e4" @@ -949,7 +1044,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-syntax-jsx@^7.7.2": +"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.7.2": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== @@ -1019,6 +1114,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-syntax-typescript@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" + integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" @@ -1572,6 +1674,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.23.6", "@babel/traverse@^7.23.7": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.7.tgz#9a7bf285c928cb99b5ead19c3b1ce5b310c9c305" + integrity sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.6" + "@babel/types" "^7.23.6" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.12.11", "@babel/types@^7.12.7", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.17.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" @@ -1616,6 +1734,15 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" + integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@base2/pretty-print-object@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" @@ -4048,6 +4175,54 @@ regenerator-runtime "^0.13.7" resolve-from "^5.0.0" +"@stylexjs/babel-plugin@0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@stylexjs/babel-plugin/-/babel-plugin-0.4.1.tgz#4ec4f3851a93d3b1f686a92a502c1b439ec07d27" + integrity sha512-usG7HFvq04ELD44BAukQlTzKwmw3B0isOgsYzO97iGTkHMi7CJN4hniag7Fj96hrTob8Kq6MBbbQkLeKzbjqIg== + dependencies: + "@babel/core" "^7.23.6" + "@babel/helper-module-imports" "^7.22.15" + "@babel/traverse" "^7.23.6" + "@babel/types" "^7.23.6" + "@stylexjs/shared" "0.4.1" + "@stylexjs/stylex" "0.4.1" + +"@stylexjs/eslint-plugin@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@stylexjs/eslint-plugin/-/eslint-plugin-0.4.1.tgz#29667f6bec7f34b53c8be9cb471f6bd2d3132af2" + integrity sha512-T3XrZOAhLoGb+x3L68MH/T5+WEd7CzXPIqhkJPPBdJBT56QKcB5TNMUtM0v8bLFHV+wIYSQEmtwSxG2zjWf0BQ== + dependencies: + micromatch "^4.0.5" + +"@stylexjs/shared@0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@stylexjs/shared/-/shared-0.4.1.tgz#bd181c627c6b682f3c14b7639dd237efedd70234" + integrity sha512-4h1rVuwE9iPN0yor0kvtHhMo7XjWrG3DdPYWZI9c6V4AquAbh53KxN6v6X9woM2HKUbt0GzjyCsEjc6Ci6Lo4w== + dependencies: + postcss-value-parser "^4.1.0" + +"@stylexjs/stylex@0.4.1", "@stylexjs/stylex@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@stylexjs/stylex/-/stylex-0.4.1.tgz#6048571a93a9440131b25c3e9957d4e1933562a6" + integrity sha512-xc3hjEtqpluoZ1RcJZ1c59bdMITMHPh0FmCNi/01amaPhEw040WqgR/KGFHIqxIer9wt5mOeED3iM9tSrljeaQ== + dependencies: + css-mediaquery "^0.1.2" + invariant "^2.2.4" + styleq "0.1.3" + utility-types "^3.10.0" + +"@stylexjs/webpack-plugin@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@stylexjs/webpack-plugin/-/webpack-plugin-0.4.1.tgz#28669c4706621dee10d1f0cf31bb72712462492c" + integrity sha512-71nkdZ1w9zZcQYqKesuI8UmQrhE6D388WZIHl1nW/SQ9MEFSWl3XGcUpxXyMgwGYg+cMNxRMuEkT263mImG28g== + dependencies: + "@babel/core" "^7.23.6" + "@babel/plugin-syntax-flow" "^7.23.3" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/plugin-syntax-typescript" "^7.23.3" + "@stylexjs/babel-plugin" "0.4.1" + webpack "^5.88.2" + "@svgr/babel-plugin-add-jsx-attribute@^6.3.1": version "6.3.1" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.3.1.tgz#b9a5d84902be75a05ede92e70b338d28ab63fa74" @@ -6630,6 +6805,16 @@ browserslist@^4.21.9: node-releases "^2.0.13" update-browserslist-db "^1.0.11" +browserslist@^4.22.2: + version "4.22.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" + integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== + dependencies: + caniuse-lite "^1.0.30001565" + electron-to-chromium "^1.4.601" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -6975,6 +7160,11 @@ caniuse-lite@^1.0.30001517: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001522.tgz#44b87a406c901269adcdb834713e23582dd71856" integrity sha512-TKiyTVZxJGhsTszLuzb+6vUZSjVOAhClszBr2Ta2k9IwtNBT/4dzmL6aywt0HCgEZlmwJzXJd8yNiob6HgwTRg== +caniuse-lite@^1.0.30001565: + version "1.0.30001579" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz#45c065216110f46d6274311a4b3fcf6278e0852a" + integrity sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA== + canvas-renderer@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/canvas-renderer/-/canvas-renderer-2.2.0.tgz#512151f5494aaac5270802fba22599785114716d" @@ -7794,6 +7984,11 @@ css-loader@^6.7.1: postcss-value-parser "^4.2.0" semver "^7.3.5" +css-mediaquery@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/css-mediaquery/-/css-mediaquery-0.1.2.tgz#6a2c37344928618631c54bd33cedd301da18bea0" + integrity sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q== + css-minimizer-webpack-plugin@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" @@ -8584,6 +8779,11 @@ electron-to-chromium@^1.4.477: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.500.tgz#7dd05fdfbe02ed34b9f6099cfe01407b473d5af7" integrity sha512-P38NO8eOuWOKY1sQk5yE0crNtrjgjJj6r3NrbIKtG18KzCHmHE2Bt+aQA7/y0w3uYsHWxDa6icOohzjLJ4vJ4A== +electron-to-chromium@^1.4.601: + version "1.4.641" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.641.tgz#7439993ee3df558bbb78d5459c15cfbde5bf6d60" + integrity sha512-JetAF3M5Lr9hwzDe3oMmWFOydlclqt2loEljxc0AAP5NYM170sSW+F5/cn5ROBfjx5LdmzeeAgWnyAU9cjPhmA== + electron-updater@^5.2.4: version "5.3.0" resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-5.3.0.tgz#3ba0d20407911a2edc5a68bee45c5aa2023e9ff8" @@ -10591,7 +10791,7 @@ html-webpack-plugin@^4.0.0: tapable "^1.1.3" util.promisify "1.0.0" -html-webpack-plugin@^5.0.0, html-webpack-plugin@^5.5.0: +html-webpack-plugin@^5.0.0: version "5.5.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== @@ -10602,6 +10802,17 @@ html-webpack-plugin@^5.0.0, html-webpack-plugin@^5.5.0: pretty-error "^4.0.0" tapable "^2.0.0" +html-webpack-plugin@^5.5.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" + integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + htmlparser2@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" @@ -10929,6 +11140,13 @@ interpret@^3.1.1: resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + ip-regex@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-5.0.0.tgz#cd313b2ae9c80c07bd3851e12bf4fa4dc5480632" @@ -12615,7 +12833,7 @@ long@^5.0.0: resolved "https://registry.yarnpkg.com/long/-/long-5.2.0.tgz#2696dadf4b4da2ce3f6f6b89186085d94d52fd61" integrity sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w== -loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -12999,7 +13217,7 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: +micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -13488,6 +13706,11 @@ node-releases@^2.0.13: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + node-releases@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" @@ -16838,6 +17061,11 @@ stylehacks@^5.1.0: browserslist "^4.16.6" postcss-selector-parser "^6.0.4" +styleq@0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/styleq/-/styleq-0.1.3.tgz#8efb2892debd51ce7b31dc09c227ad920decab71" + integrity sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA== + stylis@4.0.13: version "4.0.13" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" @@ -17738,6 +17966,14 @@ update-browserslist-db@^1.0.11: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + update-browserslist-db@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" @@ -17849,6 +18085,11 @@ utila@~0.4: resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== +utility-types@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" + integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"