Skip to content

Commit 091afcd

Browse files
committed
Include css normalize in style output
1 parent 0480034 commit 091afcd

3 files changed

Lines changed: 43 additions & 10 deletions

File tree

bin/style-elements.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ var pkg = require("../package.json");
55
var program = require("commander");
66
var fs = require("fs");
77
var chalk = require("chalk");
8-
var requiredOptions = ["stylesheetModule", "stylesheetFunction", "output"];
8+
var requiredOptions = ["stylesheetModule", "stylesheetFunction", "mode", "output"];
99
var utils = require("../js/utils");
1010
var writeFile = utils.writeFile;
1111
var assertKeysPresent = utils.assertKeysPresent;
@@ -14,7 +14,8 @@ var options = getOptions(process.argv, program);
1414

1515
styleElements({
1616
stylesheetModule: options.stylesheetModule,
17-
stylesheetFunction: options.stylesheetFunction
17+
stylesheetFunction: options.stylesheetFunction,
18+
mode: options.mode
1819
})
1920
.then(result => writeFile(options.output, result))
2021
.then(() => {
@@ -32,12 +33,18 @@ function getOptions(argv, program) {
3233
"(optional) file to write the CSS to",
3334
"out.css"
3435
)
36+
.option(
37+
"-m, --mode [layout/viewport]",
38+
"(optional) whether to render stylesheet for 'layout' or 'viewport'",
39+
"layout"
40+
)
3541
.parse(argv);
3642

3743
var options = {
3844
stylesheetModule: program.args[0],
3945
stylesheetFunction: program.args[1],
40-
output: program.output
46+
output: program.output,
47+
mode: program.mode
4148
};
4249

4350
assertKeysPresent(options, requiredOptions, _missingOptions => {

index.js

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ var writeFile = utils.writeFile;
77
var withTmpDir = utils.withTmpDir;
88
var assertKeysPresent = utils.assertKeysPresent;
99

10-
var requiredOptions = ["stylesheetModule", "stylesheetFunction"];
10+
var requiredOptions = ["stylesheetModule", "stylesheetFunction", "mode"];
1111

1212
function generateCss(opts) {
1313
assertKeysPresent(opts, requiredOptions, missingOptions => {
@@ -19,7 +19,8 @@ function generateCss(opts) {
1919
var emitterWorkerFile = path.join(tmpDirPath, "style-elements-emitter.js");
2020
var emitterTemplate = buildEmitterTemplate(
2121
opts.stylesheetModule,
22-
opts.stylesheetFunction
22+
opts.stylesheetFunction,
23+
opts.mode
2324
);
2425

2526
return writeFile(emitterSourceFile, emitterTemplate)
@@ -28,32 +29,41 @@ function generateCss(opts) {
2829
});
2930
}
3031

31-
function buildEmitterTemplate(stylesheetModule, stylesheetFunction) {
32+
function buildEmitterTemplate(stylesheetModule, stylesheetFunction, mode) {
3233
return unindent(
3334
`
3435
port module StyleElementsEmitter exposing (..)
3536
3637
import ${stylesheetModule}
38+
import Element
3739
3840
3941
port result : String -> Cmd msg
4042
4143
42-
stylesheet =
43-
${stylesheetModule}.${stylesheetFunction}
44+
styles =
45+
Element.${renderFunction(mode)} ${stylesheetModule}.${stylesheetFunction}
4446
4547
4648
main : Program Never () Never
4749
main =
4850
Platform.program
49-
{ init = ( (), result stylesheet.css )
51+
{ init = ( (), result styles )
5052
, update = \\_ _ -> ( (), Cmd.none )
5153
, subscriptions = \\_ -> Sub.none
5254
}
5355
`
5456
);
5557
}
5658

59+
function renderFunction(mode) {
60+
switch (mode) {
61+
case "viewport": return "toViewportCss";
62+
case "layout": return "toLayoutCss";
63+
default: throw new Error(`Invalid mode: ${mode}, must be either 'layout' or 'viewport'`);
64+
}
65+
}
66+
5767
function compile(src, options) {
5868
return new Promise(function(resolve, reject) {
5969
compileElm(src, options).on("close", function(exitCode) {

src/Element.elm

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ module Element
6262
, layout
6363
, viewport
6464
, toHtml
65+
, toLayoutCss
66+
, toViewportCss
6567
, embedStylesheet
6668
, Device
6769
, classifyDevice
@@ -196,7 +198,7 @@ Some convient elements for working with forms.
196198
197199
## Advanced Rendering
198200
199-
@docs toHtml, embedStylesheet
201+
@docs toHtml, embedStylesheet, toLayoutCss, toViewportCss
200202
201203
202204
### Deprecated
@@ -1252,6 +1254,20 @@ toHtml stylesheet el =
12521254
(Render.render stylesheet el)
12531255

12541256

1257+
{-| Renders the stylesheet used by 'layout' to css
1258+
-}
1259+
toLayoutCss : StyleSheet style variation -> String
1260+
toLayoutCss stylesheet =
1261+
Render.normalize ++ stylesheet.css
1262+
1263+
1264+
{-| Renders the stylesheet used by 'viewport' to css
1265+
-}
1266+
toViewportCss : StyleSheet style variation -> String
1267+
toViewportCss stylesheet =
1268+
Render.normalizeFull () ++ stylesheet.css
1269+
1270+
12551271
{-| Embed a stylesheet.
12561272
-}
12571273
embedStylesheet : StyleSheet style variation -> Html msg

0 commit comments

Comments
 (0)