@@ -7,7 +7,7 @@ var writeFile = utils.writeFile;
77var withTmpDir = utils . withTmpDir ;
88var assertKeysPresent = utils . assertKeysPresent ;
99
10- var requiredOptions = [ "stylesheetModule" , "stylesheetFunction" ] ;
10+ var requiredOptions = [ "stylesheetModule" , "stylesheetFunction" , "mode" ] ;
1111
1212function 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+
5767function compile ( src , options ) {
5868 return new Promise ( function ( resolve , reject ) {
5969 compileElm ( src , options ) . on ( "close" , function ( exitCode ) {
0 commit comments