Skip to content

Commit 687fec0

Browse files
committed
Use CSS module for Console component
Transfers Console styles into companion CSS module. Uses `css-loader` and `style-loader`; currently nothing fancy to extract the styles into an external stylesheet, but that will come. Also no `react-css-modules`; I don’t find referencing a `styles` object particularly onerous, and explicit is better than implicit.
1 parent bd82241 commit 687fec0

File tree

7 files changed

+180
-42
lines changed

7 files changed

+180
-42
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,7 @@
308308
"check-dependencies": "^1.0.1",
309309
"circular-dependency-plugin": "^5.0.2",
310310
"cloudflare": "^2.1.1",
311+
"css-loader": "^2.1.1",
311312
"cssnano": "^3.10.0",
312313
"doctoc": "^1.2.0",
313314
"eslint": "^5.6.0",
@@ -356,6 +357,7 @@
356357
"source-map-loader": "^0.2.2",
357358
"stats-webpack-plugin": "^0.6.2",
358359
"string-replace-loader": "^2.1.1",
360+
"style-loader": "^0.23.1",
359361
"stylelint-selector-bem-pattern": "^2.0.0",
360362
"substitute-loader": "^1.0.0",
361363
"svg-react-loader": "^0.4.4",

src/components/Console.jsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {t} from 'i18next';
1212

1313
import {EditorLocation} from '../records';
1414

15+
import styles from './Console.module.css';
1516
import ConsoleEntry from './ConsoleEntry';
1617
import ConsoleInput from './ConsoleInput';
1718

@@ -39,12 +40,13 @@ export default function Console({
3940

4041
const console = (
4142
<div
42-
className="console__scroll-container output__item"
43+
className={styles.scrollContainer}
4344
onClick={onConsoleClicked}
4445
>
4546
<div
4647
className={
47-
classnames('console__repl', {console__repl_zoomed: isTextSizeLarge})
48+
classnames(styles.repl, {[styles.zoomed]: isTextSizeLarge})
49+
4850
}
4951
>
5052
<ConsoleInput
@@ -72,12 +74,12 @@ export default function Console({
7274
return (
7375
<div
7476
className={classnames(
75-
'console',
77+
styles.console,
7678
{u__hidden: isHidden},
7779
)}
7880
>
7981
<div
80-
className="label console__label"
82+
className={styles.label}
8183
onClick={partial(onToggleVisible, currentProjectKey)}
8284
>
8385
<div>

src/components/Console.module.css

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
.console {
2+
flex: none;
3+
}
4+
5+
.repl {
6+
display: flex;
7+
flex-direction: column-reverse;
8+
font-family: 'Inconsolata', monospace;
9+
font-size: 14px;
10+
max-height: 100%;
11+
overflow: auto;
12+
}
13+
14+
.repl.zoomed {
15+
font-size: 20px;
16+
}
17+
18+
.scrollContainer {
19+
height: 40vh;
20+
padding: 0.5em;
21+
}
22+
23+
.label {
24+
composes: label from '../css/label.module.css';
25+
display: flex;
26+
justify-content: space-between;
27+
cursor: pointer;
28+
background-color: var(--color-low-contrast-gray);
29+
}

src/css/application.css

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -620,35 +620,6 @@ body {
620620

621621
/** @define console */
622622

623-
.console {
624-
flex: none;
625-
}
626-
627-
.console__label {
628-
display: flex;
629-
justify-content: space-between;
630-
cursor: pointer;
631-
background-color: var(--color-low-contrast-gray);
632-
}
633-
634-
.console__scroll-container {
635-
height: 40vh;
636-
padding: 0.5em;
637-
}
638-
639-
.console__repl {
640-
display: flex;
641-
flex-direction: column-reverse;
642-
font-family: 'Inconsolata', monospace;
643-
font-size: 14px;
644-
max-height: 100%;
645-
overflow: auto;
646-
}
647-
648-
.console__repl_zoomed {
649-
font-size: 20px;
650-
}
651-
652623
.console__row {
653624
padding-left: 1em;
654625
position: relative;

src/css/label.module.css

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.label {
2+
background-color: var(--color-chrome);
3+
color: var(--color-dark-gray);
4+
cursor: pointer;
5+
font-family: 'Roboto';
6+
font-size: var(--font-size-menu);
7+
padding: 0.5em 1em;
8+
user-select: none;
9+
}

webpack.config.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,13 @@ module.exports = (env = process.env.NODE_ENV || 'development') => {
193193
use: ['source-map-loader'],
194194
enforce: 'pre',
195195
},
196+
{
197+
test: /\.module\.css$/u,
198+
use: [
199+
'style-loader',
200+
{loader: 'css-loader', query: {modules: true}},
201+
],
202+
},
196203
{
197204
include: [
198205
path.resolve(__dirname, 'bower_components'),

yarn.lock

Lines changed: 127 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1436,6 +1436,11 @@ agent-base@4, agent-base@^4.1.0, agent-base@^4.2.0, agent-base@~4.2.0:
14361436
dependencies:
14371437
es6-promisify "^5.0.0"
14381438

1439+
ajv-errors@^1.0.0:
1440+
version "1.0.1"
1441+
resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
1442+
integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
1443+
14391444
ajv-keywords@^3.0.0, ajv-keywords@^3.1.0:
14401445
version "3.4.0"
14411446
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d"
@@ -2748,6 +2753,11 @@ big.js@^3.1.3:
27482753
resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
27492754
integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==
27502755

2756+
big.js@^5.2.2:
2757+
version "5.2.2"
2758+
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
2759+
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
2760+
27512761
binary-extensions@^1.0.0:
27522762
version "1.13.0"
27532763
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.0.tgz#9523e001306a32444b907423f1de2164222f6ab1"
@@ -3336,10 +3346,10 @@ camelcase@^4.0.0, camelcase@^4.1.0:
33363346
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
33373347
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
33383348

3339-
camelcase@^5.0.0:
3340-
version "5.0.0"
3341-
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42"
3342-
integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==
3349+
camelcase@^5.0.0, camelcase@^5.2.0:
3350+
version "5.3.1"
3351+
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
3352+
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
33433353

33443354
caniuse-api@^1.5.2:
33453355
version "1.6.1"
@@ -4186,6 +4196,23 @@ css-in-js-utils@^2.0.0:
41864196
hyphenate-style-name "^1.0.2"
41874197
isobject "^3.0.1"
41884198

4199+
css-loader@^2.1.1:
4200+
version "2.1.1"
4201+
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea"
4202+
integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==
4203+
dependencies:
4204+
camelcase "^5.2.0"
4205+
icss-utils "^4.1.0"
4206+
loader-utils "^1.2.3"
4207+
normalize-path "^3.0.0"
4208+
postcss "^7.0.14"
4209+
postcss-modules-extract-imports "^2.0.0"
4210+
postcss-modules-local-by-default "^2.0.6"
4211+
postcss-modules-scope "^2.1.0"
4212+
postcss-modules-values "^2.0.0"
4213+
postcss-value-parser "^3.3.0"
4214+
schema-utils "^1.0.0"
4215+
41894216
css-select-base-adapter@~0.1.0:
41904217
version "0.1.1"
41914218
resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
@@ -4267,6 +4294,11 @@ cssesc@^1.0.1:
42674294
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-1.0.1.tgz#ef7bd8d0229ed6a3a7051ff7771265fe7330e0a8"
42684295
integrity sha512-S2hzrpWvE6G/rW7i7IxJfWBYn27QWfOIncUW++8Rbo1VB5zsJDSVPcnI+Q8z7rhxT6/yZeLOCja4cZnghJrNGA==
42694296

4297+
cssesc@^3.0.0:
4298+
version "3.0.0"
4299+
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
4300+
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
4301+
42704302
cssnano@^3.10.0:
42714303
version "3.10.0"
42724304
resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
@@ -7179,6 +7211,18 @@ [email protected], iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@^0.4.5:
71797211
dependencies:
71807212
safer-buffer ">= 2.1.2 < 3"
71817213

7214+
icss-replace-symbols@^1.1.0:
7215+
version "1.1.0"
7216+
resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
7217+
integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
7218+
7219+
icss-utils@^4.1.0:
7220+
version "4.1.0"
7221+
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.0.tgz#339dbbffb9f8729a243b701e1c29d4cc58c52f0e"
7222+
integrity sha512-3DEun4VOeMvSczifM3F2cKQrDQ5Pj6WKhkOq6HD4QTnDUAq8MQRxy5TX6Sy1iY6WPBe4gQ3p5vTECjbIkglkkQ==
7223+
dependencies:
7224+
postcss "^7.0.14"
7225+
71827226
ieee754@^1.1.11, ieee754@^1.1.4:
71837227
version "1.1.12"
71847228
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
@@ -8552,6 +8596,13 @@ json5@^0.5.0, json5@^0.5.1:
85528596
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
85538597
integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
85548598

8599+
json5@^1.0.1:
8600+
version "1.0.1"
8601+
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
8602+
integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
8603+
dependencies:
8604+
minimist "^1.2.0"
8605+
85558606
json5@^2.1.0:
85568607
version "2.1.0"
85578608
resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850"
@@ -8907,7 +8958,7 @@ [email protected], loader-utils@^0.2.11, loader-utils@^0.2.16, loader-utils@~0.
89078958
json5 "^0.5.0"
89088959
object-assign "^4.0.1"
89098960

8910-
[email protected], loader-utils@^1.0.0, loader-utils@^1.0.2, loader-utils@^1.0.3, loader-utils@^1.1.0:
8961+
89118962
version "1.1.0"
89128963
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
89138964
integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=
@@ -8916,6 +8967,15 @@ [email protected], loader-utils@^1.0.0, loader-utils@^1.0.2, loader-utils@^1.0.
89168967
emojis-list "^2.0.0"
89178968
json5 "^0.5.0"
89188969

8970+
loader-utils@^1.0.0, loader-utils@^1.0.2, loader-utils@^1.0.3, loader-utils@^1.1.0, loader-utils@^1.2.3:
8971+
version "1.2.3"
8972+
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
8973+
integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
8974+
dependencies:
8975+
big.js "^5.2.2"
8976+
emojis-list "^2.0.0"
8977+
json5 "^1.0.1"
8978+
89198979
loadjs@^3.5.4:
89208980
version "3.5.4"
89218981
resolved "https://registry.yarnpkg.com/loadjs/-/loadjs-3.5.4.tgz#ef0f4eb5a6ac2b86c7597a3d4de97b83816e36b8"
@@ -11363,6 +11423,38 @@ postcss-minify-selectors@^2.0.4:
1136311423
postcss "^5.0.14"
1136411424
postcss-selector-parser "^2.0.0"
1136511425

11426+
postcss-modules-extract-imports@^2.0.0:
11427+
version "2.0.0"
11428+
resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e"
11429+
integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==
11430+
dependencies:
11431+
postcss "^7.0.5"
11432+
11433+
postcss-modules-local-by-default@^2.0.6:
11434+
version "2.0.6"
11435+
resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63"
11436+
integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==
11437+
dependencies:
11438+
postcss "^7.0.6"
11439+
postcss-selector-parser "^6.0.0"
11440+
postcss-value-parser "^3.3.1"
11441+
11442+
postcss-modules-scope@^2.1.0:
11443+
version "2.1.0"
11444+
resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb"
11445+
integrity sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A==
11446+
dependencies:
11447+
postcss "^7.0.6"
11448+
postcss-selector-parser "^6.0.0"
11449+
11450+
postcss-modules-values@^2.0.0:
11451+
version "2.0.0"
11452+
resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64"
11453+
integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==
11454+
dependencies:
11455+
icss-replace-symbols "^1.1.0"
11456+
postcss "^7.0.6"
11457+
1136611458
postcss-nesting@^6.0.0:
1136711459
version "6.0.0"
1136811460
resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-6.0.0.tgz#4c45276a065765ec063efe1e4daf75c131518991"
@@ -11575,6 +11667,15 @@ postcss-selector-parser@^4.0.0:
1157511667
indexes-of "^1.0.1"
1157611668
uniq "^1.0.1"
1157711669

11670+
postcss-selector-parser@^6.0.0:
11671+
version "6.0.2"
11672+
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
11673+
integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==
11674+
dependencies:
11675+
cssesc "^3.0.0"
11676+
indexes-of "^1.0.1"
11677+
uniq "^1.0.1"
11678+
1157811679
postcss-styled@>=0.33.0, postcss-styled@^0.33.0:
1157911680
version "0.33.0"
1158011681
resolved "https://registry.yarnpkg.com/postcss-styled/-/postcss-styled-0.33.0.tgz#69be377584105a582fda7e4f76888e5b97eed737"
@@ -11646,10 +11747,10 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0
1164611747
source-map "^0.5.6"
1164711748
supports-color "^3.2.3"
1164811749

11649-
postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2:
11650-
version "7.0.14"
11651-
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5"
11652-
integrity sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==
11750+
postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6:
11751+
version "7.0.16"
11752+
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.16.tgz#48f64f1b4b558cb8b52c88987724359acb010da2"
11753+
integrity sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA==
1165311754
dependencies:
1165411755
chalk "^2.4.2"
1165511756
source-map "^0.6.1"
@@ -13142,6 +13243,15 @@ schema-utils@^0.4.4, schema-utils@^0.4.5:
1314213243
ajv "^6.1.0"
1314313244
ajv-keywords "^3.1.0"
1314413245

13246+
schema-utils@^1.0.0:
13247+
version "1.0.0"
13248+
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
13249+
integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
13250+
dependencies:
13251+
ajv "^6.1.0"
13252+
ajv-errors "^1.0.0"
13253+
ajv-keywords "^3.1.0"
13254+
1314513255
scope-analyzer@^2.0.1:
1314613256
version "2.0.5"
1314713257
resolved "https://registry.yarnpkg.com/scope-analyzer/-/scope-analyzer-2.0.5.tgz#72c9c6770c3e66984f84c7d3c7045998a1a7db8a"
@@ -14044,6 +14154,14 @@ structured-source@^3.0.2:
1404414154
dependencies:
1404514155
boundary "^1.0.1"
1404614156

14157+
style-loader@^0.23.1:
14158+
version "0.23.1"
14159+
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925"
14160+
integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==
14161+
dependencies:
14162+
loader-utils "^1.1.0"
14163+
schema-utils "^1.0.0"
14164+
1404714165
style-search@^0.1.0:
1404814166
version "0.1.0"
1404914167
resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902"

0 commit comments

Comments
 (0)