@@ -81,15 +81,19 @@ export async function compileSass(
8181 ) ;
8282 const quartoDefaults = bundles . map ( ( bundle ) => bundle . quarto ?. defaults || "" ) ;
8383 const quartoRules = bundles . map ( ( bundle ) => bundle . quarto ?. rules || "" ) ;
84-
8584 const quartoMixins = bundles . map ( ( bundle ) => bundle . quarto ?. mixins || "" ) ;
8685
86+ const userLayers = mergeLayers (
87+ ...bundles . map ( ( bundle ) => bundle . user || [ ] ) . flat ( ) ,
88+ ) ;
89+ console . log ( "userLayers" , userLayers ) ;
90+
8791 // Gather sasslayer for the user
88- const userUses = bundles . map ( ( bundle ) => bundle . user ?. uses || "" ) ;
89- const userFunctions = bundles . map ( ( bundle ) => bundle . user ?. functions || "" ) ;
90- const userDefaults = bundles . map ( ( bundle ) => bundle . user ?. defaults || "" ) ;
91- const userRules = bundles . map ( ( bundle ) => bundle . user ?. rules || "" ) ;
92- const userMixins = bundles . map ( ( bundle ) => bundle . user ?. mixins || "" ) ;
92+ const userUses = userLayers . uses ; // bundles.map((bundle) => bundle.user?.uses || "");
93+ const userFunctions = userLayers . functions ; // bundles.map((bundle) => bundle.user?.functions || "");
94+ const userDefaults = userLayers . defaults ; // bundles.map((bundle) => bundle.user?.defaults || "");
95+ const userRules = userLayers . rules ; // bundles.map((bundle) => bundle.user?.rules || "");
96+ const userMixins = userLayers . mixins ; // bundles.map((bundle) => bundle.user?.mixins || "");
9397
9498 // Set any load paths used to resolve imports
9599 const loadPaths : string [ ] = [ ] ;
@@ -114,15 +118,15 @@ export async function compileSass(
114118 '// quarto-scss-analysis-annotation { "origin": "\'use\' section from Quarto" }' ,
115119 ...quartoUses ,
116120 '// quarto-scss-analysis-annotation { "origin": "\'use\' section from user-defined SCSS" }' ,
117- ... userUses ,
121+ userUses ,
118122 '// quarto-scss-analysis-annotation { "origin": "\'functions\' section from format" }' ,
119123 ...frameworkFunctions ,
120124 '// quarto-scss-analysis-annotation { "origin": "\'functions\' section from Quarto" }' ,
121125 ...quartoFunctions ,
122126 '// quarto-scss-analysis-annotation { "origin": "\'functions\' section from user-defined SCSS" }' ,
123- ... userFunctions ,
127+ userFunctions ,
124128 '// quarto-scss-analysis-annotation { "origin": "Defaults from user-defined SCSS" }' ,
125- ... userDefaults . reverse ( ) ,
129+ userDefaults ,
126130 '// quarto-scss-analysis-annotation { "origin": "Defaults from Quarto\'s SCSS" }' ,
127131 ...quartoDefaults . reverse ( ) ,
128132 '// quarto-scss-analysis-annotation { "origin": "Defaults from the format SCSS" }' ,
@@ -138,7 +142,7 @@ export async function compileSass(
138142 '// quarto-scss-analysis-annotation { "origin": "\'rules\' section from Quarto" }' ,
139143 ...quartoRules ,
140144 '// quarto-scss-analysis-annotation { "origin": "\'rules\' section from user-defined SCSS" }' ,
141- ... userRules ,
145+ userRules ,
142146 '// quarto-scss-analysis-annotation { "origin": null }' ,
143147 ] . join ( "\n\n" ) ;
144148
@@ -191,7 +195,7 @@ const layoutBoundary =
191195const kLayerBoundaryLine = RegExp ( layoutBoundary ) ;
192196const kLayerBoundaryTest = RegExp ( layoutBoundary , "m" ) ;
193197
194- export function mergeLayers ( ...layers : SassLayer [ ] ) {
198+ export function mergeLayers ( ...layers : SassLayer [ ] ) : SassLayer {
195199 const themeUses : string [ ] = [ ] ;
196200 const themeDefaults : string [ ] = [ ] ;
197201 const themeRules : string [ ] = [ ] ;
@@ -202,10 +206,7 @@ export function mergeLayers(...layers: SassLayer[]) {
202206 themeUses . push ( theme . uses ) ;
203207 }
204208 if ( theme . defaults ) {
205- // We need to reverse the order of defaults
206- // since defaults override one another by being
207- // set first
208- themeDefaults . unshift ( theme . defaults ) ;
209+ themeDefaults . push ( theme . defaults ) ;
209210 }
210211
211212 if ( theme . rules ) {
@@ -223,7 +224,10 @@ export function mergeLayers(...layers: SassLayer[]) {
223224
224225 return {
225226 uses : themeUses . join ( "\n" ) ,
226- defaults : themeDefaults . join ( "\n" ) ,
227+ // We need to reverse the order of defaults
228+ // since defaults override one another by being
229+ // set first
230+ defaults : themeDefaults . reverse ( ) . join ( "\n" ) ,
227231 functions : themeFunctions . join ( "\n" ) ,
228232 mixins : themeMixins . join ( "\n" ) ,
229233 rules : themeRules . join ( "\n" ) ,
0 commit comments