@@ -84,7 +84,7 @@ export class LumoInjector {
84
84
this . #root = root ;
85
85
this . #cssPropertyObserver = new CSSPropertyObserver ( this . #root, 'vaadin-lumo-injector' , ( propertyName ) => {
86
86
const tagName = propertyName . slice ( 2 ) . replace ( '-lumo-inject' , '' ) ;
87
- this . #updateComponentStyleSheet ( tagName ) ;
87
+ this . #updateStyleSheet ( tagName ) ;
88
88
} ) ;
89
89
}
90
90
@@ -103,8 +103,15 @@ export class LumoInjector {
103
103
this . #componentsByTag. set ( tagName , this . #componentsByTag. get ( tagName ) ?? new Set ( ) ) ;
104
104
this . #componentsByTag. get ( tagName ) . add ( component ) ;
105
105
106
- this . #updateComponentStyleSheet( tagName ) ;
106
+ const stylesheet = this . #styleSheetsByTag. get ( tagName ) ;
107
+ if ( stylesheet ) {
108
+ if ( stylesheet . cssRules . length > 0 ) {
109
+ injectLumoStyleSheet ( component , stylesheet ) ;
110
+ }
111
+ return ;
112
+ }
107
113
114
+ this . #initStyleSheet( tagName ) ;
108
115
this . #cssPropertyObserver. observe ( lumoInjectPropName ) ;
109
116
}
110
117
@@ -121,17 +128,21 @@ export class LumoInjector {
121
128
removeLumoStyleSheet ( component ) ;
122
129
}
123
130
124
- #updateComponentStyleSheet( tagName ) {
131
+ #initStyleSheet( tagName ) {
132
+ this . #styleSheetsByTag. set ( tagName , new CSSStyleSheet ( ) ) ;
133
+ this . #updateStyleSheet( tagName ) ;
134
+ }
135
+
136
+ #updateStyleSheet( tagName ) {
125
137
const { tags, modules } = parseStyleSheets ( this . #rootStyleSheets) ;
126
138
127
139
const cssText = ( tags . get ( tagName ) ?? [ ] )
128
140
. flatMap ( ( moduleName ) => modules . get ( moduleName ) ?? [ ] )
129
141
. map ( ( rule ) => rule . cssText )
130
142
. join ( '\n' ) ;
131
143
132
- const stylesheet = this . #styleSheetsByTag. get ( tagName ) ?? new CSSStyleSheet ( ) ;
144
+ const stylesheet = this . #styleSheetsByTag. get ( tagName ) ;
133
145
stylesheet . replaceSync ( cssText ) ;
134
- this . #styleSheetsByTag. set ( tagName , stylesheet ) ;
135
146
136
147
this . #componentsByTag. get ( tagName ) ?. forEach ( ( component ) => {
137
148
if ( cssText ) {
0 commit comments