11import { css } from "@microsoft/fast-element" ;
2- import type { CSSDirective , ElementStyles } from "@microsoft/fast-element" ;
3- import { CSSDesignToken } from "@microsoft/fast-foundation" ;
2+ import { CSSDirective , ElementStyles } from "@microsoft/fast-element" ;
3+ import { CSSDesignToken , MatchMediaStyleSheetBehavior } from "@microsoft/fast-foundation" ;
44import type { StyleProperty } from "../modules/types.js" ;
5- import type { InteractiveTokenSet } from "../types.js" ;
5+ import type { InteractiveSet } from "../types.js" ;
66import { makeSelector } from "./selector.js" ;
77import type { FocusSelector , StyleModuleEvaluateParameters } from "./types.js" ;
88import { stylePropertyToCssProperty } from "./css.js" ;
@@ -18,9 +18,9 @@ function propertySingle<T = string>(
1818 css `${ makeSelector ( params ) } { ${ property } : ${ value } ; } ` ;
1919}
2020
21- function propertyInteractive < T = string > (
21+ function propertyInteractive (
2222 property : string ,
23- values : InteractiveTokenSet < T > ,
23+ values : InteractiveSet < string | CSSDesignToken < any > > ,
2424 focusSelector : FocusSelector = "focus-visible" ,
2525) : StyleModuleEvaluate {
2626 return ( params : StyleModuleEvaluateParameters ) : ElementStyles => css `
@@ -51,16 +51,17 @@ function createElementStyleModules(styles: Styles): StyleModuleEvaluate[] {
5151 } else if ( value && typeof ( value as any ) . createCSS === "function" ) {
5252 return propertySingle ( property , value as CSSDirective ) ;
5353 } else {
54- return propertyInteractive ( property , value as InteractiveTokenSet < any > ) ;
54+ return propertyInteractive ( property , value as InteractiveSet < any > ) ;
5555 }
5656 } ) ;
5757 return modules ;
5858}
5959
60- function createElementStyles ( modules : StyleModuleEvaluate [ ] , params : StyleModuleEvaluateParameters ) : ElementStyles [ ] {
61- return modules . map ( ( module ) =>
60+ function createElementStyles ( modules : StyleModuleEvaluate [ ] , params : StyleModuleEvaluateParameters ) : ElementStyles {
61+ const styles = modules . map ( ( module ) =>
6262 module ( params )
6363 ) ;
64+ return new ElementStyles ( styles ) ;
6465}
6566
6667/**
@@ -72,6 +73,15 @@ function createElementStyles(modules: StyleModuleEvaluate[], params: StyleModule
7273 *
7374 * @public
7475 */
75- export function renderElementStyles ( styles : Styles , params : StyleModuleEvaluateParameters ) : ElementStyles [ ] {
76- return createElementStyles ( createElementStyleModules ( styles ) , params ) ;
76+ export function renderElementStyles ( styles : Styles , params : StyleModuleEvaluateParameters ) : ElementStyles {
77+ const elementStyles = createElementStyles ( createElementStyleModules ( styles ) , params ) ;
78+
79+ styles . getMediaQueryStyles ( ) ?. forEach ( ( queryStyles , query ) => {
80+ const queryElementStyles = createElementStyles ( createElementStyleModules ( queryStyles ) , params ) ;
81+ elementStyles . withBehaviors (
82+ MatchMediaStyleSheetBehavior . with (
83+ window . matchMedia ( query ) ) ( queryElementStyles ) )
84+ } ) ;
85+
86+ return elementStyles ;
7787}
0 commit comments