Skip to content

Commit acfcb95

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 eeffafe commit acfcb95

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
@@ -302,6 +302,7 @@
302302
"check-dependencies": "^1.0.1",
303303
"circular-dependency-plugin": "^5.0.2",
304304
"cloudflare": "^2.1.1",
305+
"css-loader": "^2.1.1",
305306
"cssnano": "^3.10.0",
306307
"doctoc": "^1.2.0",
307308
"eslint": "^5.6.0",
@@ -350,6 +351,7 @@
350351
"source-map-loader": "^0.2.2",
351352
"stats-webpack-plugin": "^0.6.2",
352353
"string-replace-loader": "^2.1.1",
354+
"style-loader": "^0.23.1",
353355
"stylelint-selector-bem-pattern": "^2.0.0",
354356
"substitute-loader": "^1.0.0",
355357
"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
import CollapsedComponent from './CollapsedComponent';
@@ -48,12 +49,13 @@ export default function Console({
4849

4950
const console = (
5051
<div
51-
className="console__scroll-container output__item"
52+
className={styles.scrollContainer}
5253
onClick={onConsoleClicked}
5354
>
5455
<div
5556
className={
56-
classnames('console__repl', {console__repl_zoomed: isTextSizeLarge})
57+
classnames(styles.repl, {[styles.zoomed]: isTextSizeLarge})
58+
5759
}
5860
>
5961
<ConsoleInput
@@ -81,12 +83,12 @@ export default function Console({
8183
return (
8284
<div
8385
className={classnames(
84-
'console',
86+
styles.console,
8587
{u__hidden: isHidden},
8688
)}
8789
>
8890
<div
89-
className="label console__label"
91+
className={styles.label}
9092
onClick={partial(onToggleVisible, currentProjectKey)}
9193
>
9294
<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
@@ -612,35 +612,6 @@ body {
612612

613613
/** @define console */
614614

615-
.console {
616-
flex: none;
617-
}
618-
619-
.console__label {
620-
display: flex;
621-
justify-content: space-between;
622-
cursor: pointer;
623-
background-color: var(--color-low-contrast-gray);
624-
}
625-
626-
.console__scroll-container {
627-
height: 40vh;
628-
padding: 0.5em;
629-
}
630-
631-
.console__repl {
632-
display: flex;
633-
flex-direction: column-reverse;
634-
font-family: 'Inconsolata', monospace;
635-
font-size: 14px;
636-
max-height: 100%;
637-
overflow: auto;
638-
}
639-
640-
.console__repl_zoomed {
641-
font-size: 20px;
642-
}
643-
644615
.console__row {
645616
padding-left: 1em;
646617
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
@@ -186,6 +186,13 @@ module.exports = (env = process.env.NODE_ENV || 'development') => {
186186
use: ['source-map-loader'],
187187
enforce: 'pre',
188188
},
189+
{
190+
test: /\.module\.css$/u,
191+
use: [
192+
'style-loader',
193+
{loader: 'css-loader', query: {modules: true}},
194+
],
195+
},
189196
{
190197
include: [
191198
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"
@@ -3341,10 +3351,10 @@ camelcase@^4.0.0, camelcase@^4.1.0:
33413351
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
33423352
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
33433353

3344-
camelcase@^5.0.0:
3345-
version "5.0.0"
3346-
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42"
3347-
integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==
3354+
camelcase@^5.0.0, camelcase@^5.2.0:
3355+
version "5.3.1"
3356+
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
3357+
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
33483358

33493359
caniuse-api@^1.5.2:
33503360
version "1.6.1"
@@ -4181,6 +4191,23 @@ css-in-js-utils@^2.0.0:
41814191
hyphenate-style-name "^1.0.2"
41824192
isobject "^3.0.1"
41834193

4194+
css-loader@^2.1.1:
4195+
version "2.1.1"
4196+
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea"
4197+
integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==
4198+
dependencies:
4199+
camelcase "^5.2.0"
4200+
icss-utils "^4.1.0"
4201+
loader-utils "^1.2.3"
4202+
normalize-path "^3.0.0"
4203+
postcss "^7.0.14"
4204+
postcss-modules-extract-imports "^2.0.0"
4205+
postcss-modules-local-by-default "^2.0.6"
4206+
postcss-modules-scope "^2.1.0"
4207+
postcss-modules-values "^2.0.0"
4208+
postcss-value-parser "^3.3.0"
4209+
schema-utils "^1.0.0"
4210+
41844211
css-select-base-adapter@~0.1.0:
41854212
version "0.1.1"
41864213
resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
@@ -4262,6 +4289,11 @@ cssesc@^1.0.1:
42624289
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-1.0.1.tgz#ef7bd8d0229ed6a3a7051ff7771265fe7330e0a8"
42634290
integrity sha512-S2hzrpWvE6G/rW7i7IxJfWBYn27QWfOIncUW++8Rbo1VB5zsJDSVPcnI+Q8z7rhxT6/yZeLOCja4cZnghJrNGA==
42644291

4292+
cssesc@^3.0.0:
4293+
version "3.0.0"
4294+
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
4295+
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
4296+
42654297
cssnano@^3.10.0:
42664298
version "3.10.0"
42674299
resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
@@ -7174,6 +7206,18 @@ [email protected], iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@^0.4.5:
71747206
dependencies:
71757207
safer-buffer ">= 2.1.2 < 3"
71767208

7209+
icss-replace-symbols@^1.1.0:
7210+
version "1.1.0"
7211+
resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
7212+
integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
7213+
7214+
icss-utils@^4.1.0:
7215+
version "4.1.0"
7216+
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.0.tgz#339dbbffb9f8729a243b701e1c29d4cc58c52f0e"
7217+
integrity sha512-3DEun4VOeMvSczifM3F2cKQrDQ5Pj6WKhkOq6HD4QTnDUAq8MQRxy5TX6Sy1iY6WPBe4gQ3p5vTECjbIkglkkQ==
7218+
dependencies:
7219+
postcss "^7.0.14"
7220+
71777221
ieee754@^1.1.11, ieee754@^1.1.4:
71787222
version "1.1.12"
71797223
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
@@ -8548,6 +8592,13 @@ json5@^0.5.0, json5@^0.5.1:
85488592
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
85498593
integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
85508594

8595+
json5@^1.0.1:
8596+
version "1.0.1"
8597+
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
8598+
integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
8599+
dependencies:
8600+
minimist "^1.2.0"
8601+
85518602
json5@^2.1.0:
85528603
version "2.1.0"
85538604
resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850"
@@ -8903,7 +8954,7 @@ [email protected], loader-utils@^0.2.11, loader-utils@^0.2.16, loader-utils@~0.
89038954
json5 "^0.5.0"
89048955
object-assign "^4.0.1"
89058956

8906-
[email protected], loader-utils@^1.0.0, loader-utils@^1.0.2, loader-utils@^1.0.3, loader-utils@^1.1.0:
8957+
89078958
version "1.1.0"
89088959
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
89098960
integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=
@@ -8912,6 +8963,15 @@ [email protected], loader-utils@^1.0.0, loader-utils@^1.0.2, loader-utils@^1.0.
89128963
emojis-list "^2.0.0"
89138964
json5 "^0.5.0"
89148965

8966+
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:
8967+
version "1.2.3"
8968+
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
8969+
integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
8970+
dependencies:
8971+
big.js "^5.2.2"
8972+
emojis-list "^2.0.0"
8973+
json5 "^1.0.1"
8974+
89158975
loadjs@^3.5.4:
89168976
version "3.5.4"
89178977
resolved "https://registry.yarnpkg.com/loadjs/-/loadjs-3.5.4.tgz#ef0f4eb5a6ac2b86c7597a3d4de97b83816e36b8"
@@ -11354,6 +11414,38 @@ postcss-minify-selectors@^2.0.4:
1135411414
postcss "^5.0.14"
1135511415
postcss-selector-parser "^2.0.0"
1135611416

11417+
postcss-modules-extract-imports@^2.0.0:
11418+
version "2.0.0"
11419+
resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e"
11420+
integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==
11421+
dependencies:
11422+
postcss "^7.0.5"
11423+
11424+
postcss-modules-local-by-default@^2.0.6:
11425+
version "2.0.6"
11426+
resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63"
11427+
integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==
11428+
dependencies:
11429+
postcss "^7.0.6"
11430+
postcss-selector-parser "^6.0.0"
11431+
postcss-value-parser "^3.3.1"
11432+
11433+
postcss-modules-scope@^2.1.0:
11434+
version "2.1.0"
11435+
resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb"
11436+
integrity sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A==
11437+
dependencies:
11438+
postcss "^7.0.6"
11439+
postcss-selector-parser "^6.0.0"
11440+
11441+
postcss-modules-values@^2.0.0:
11442+
version "2.0.0"
11443+
resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64"
11444+
integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==
11445+
dependencies:
11446+
icss-replace-symbols "^1.1.0"
11447+
postcss "^7.0.6"
11448+
1135711449
postcss-nesting@^6.0.0:
1135811450
version "6.0.0"
1135911451
resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-6.0.0.tgz#4c45276a065765ec063efe1e4daf75c131518991"
@@ -11566,6 +11658,15 @@ postcss-selector-parser@^4.0.0:
1156611658
indexes-of "^1.0.1"
1156711659
uniq "^1.0.1"
1156811660

11661+
postcss-selector-parser@^6.0.0:
11662+
version "6.0.2"
11663+
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
11664+
integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==
11665+
dependencies:
11666+
cssesc "^3.0.0"
11667+
indexes-of "^1.0.1"
11668+
uniq "^1.0.1"
11669+
1156911670
postcss-styled@>=0.33.0, postcss-styled@^0.33.0:
1157011671
version "0.33.0"
1157111672
resolved "https://registry.yarnpkg.com/postcss-styled/-/postcss-styled-0.33.0.tgz#69be377584105a582fda7e4f76888e5b97eed737"
@@ -11637,10 +11738,10 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0
1163711738
source-map "^0.5.6"
1163811739
supports-color "^3.2.3"
1163911740

11640-
postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2:
11641-
version "7.0.14"
11642-
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5"
11643-
integrity sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==
11741+
postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6:
11742+
version "7.0.16"
11743+
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.16.tgz#48f64f1b4b558cb8b52c88987724359acb010da2"
11744+
integrity sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA==
1164411745
dependencies:
1164511746
chalk "^2.4.2"
1164611747
source-map "^0.6.1"
@@ -13133,6 +13234,15 @@ schema-utils@^0.4.4, schema-utils@^0.4.5:
1313313234
ajv "^6.1.0"
1313413235
ajv-keywords "^3.1.0"
1313513236

13237+
schema-utils@^1.0.0:
13238+
version "1.0.0"
13239+
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
13240+
integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
13241+
dependencies:
13242+
ajv "^6.1.0"
13243+
ajv-errors "^1.0.0"
13244+
ajv-keywords "^3.1.0"
13245+
1313613246
scope-analyzer@^2.0.1:
1313713247
version "2.0.5"
1313813248
resolved "https://registry.yarnpkg.com/scope-analyzer/-/scope-analyzer-2.0.5.tgz#72c9c6770c3e66984f84c7d3c7045998a1a7db8a"
@@ -14035,6 +14145,14 @@ structured-source@^3.0.2:
1403514145
dependencies:
1403614146
boundary "^1.0.1"
1403714147

14148+
style-loader@^0.23.1:
14149+
version "0.23.1"
14150+
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925"
14151+
integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==
14152+
dependencies:
14153+
loader-utils "^1.1.0"
14154+
schema-utils "^1.0.0"
14155+
1403814156
style-search@^0.1.0:
1403914157
version "0.1.0"
1404014158
resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902"

0 commit comments

Comments
 (0)