@@ -143,75 +143,90 @@ function visitComponentMetadata(
143
143
switch ( node . name . text ) {
144
144
case 'templateUrl' :
145
145
// Only analyze string literals
146
- if (
147
- ! ts . isStringLiteral ( node . initializer ) &&
148
- ! ts . isNoSubstitutionTemplateLiteral ( node . initializer )
149
- ) {
146
+ if ( ! ts . isStringLiteralLike ( node . initializer ) ) {
150
147
return node ;
151
148
}
152
149
153
- const url = node . initializer . text ;
154
- if ( ! url ) {
155
- return node ;
156
- }
157
-
158
- return nodeFactory . updatePropertyAssignment (
159
- node ,
160
- nodeFactory . createIdentifier ( 'template' ) ,
161
- createResourceImport (
162
- nodeFactory ,
163
- generateJitFileUri ( url , 'template' ) ,
164
- resourceImportDeclarations ,
165
- ) ,
166
- ) ;
150
+ return node . initializer . text . length === 0
151
+ ? node
152
+ : nodeFactory . updatePropertyAssignment (
153
+ node ,
154
+ nodeFactory . createIdentifier ( 'template' ) ,
155
+ createResourceImport (
156
+ nodeFactory ,
157
+ generateJitFileUri ( node . initializer . text , 'template' ) ,
158
+ resourceImportDeclarations ,
159
+ ) ,
160
+ ) ;
167
161
case 'styles' :
168
- if ( ! ts . isArrayLiteralExpression ( node . initializer ) ) {
169
- return node ;
162
+ if ( ts . isStringLiteralLike ( node . initializer ) ) {
163
+ styleReplacements . unshift (
164
+ createResourceImport (
165
+ nodeFactory ,
166
+ generateJitInlineUri ( node . initializer . text , 'style' ) ,
167
+ resourceImportDeclarations ,
168
+ ) ,
169
+ ) ;
170
+
171
+ return undefined ;
170
172
}
171
173
172
- const inlineStyles = ts . visitNodes ( node . initializer . elements , ( node ) => {
173
- if ( ! ts . isStringLiteral ( node ) && ! ts . isNoSubstitutionTemplateLiteral ( node ) ) {
174
- return node ;
175
- }
174
+ if ( ts . isArrayLiteralExpression ( node . initializer ) ) {
175
+ const inlineStyles = ts . visitNodes ( node . initializer . elements , ( node ) => {
176
+ if ( ! ts . isStringLiteralLike ( node ) ) {
177
+ return node ;
178
+ }
179
+
180
+ return node . text . length === 0
181
+ ? undefined // An empty inline style is equivalent to not having a style element
182
+ : createResourceImport (
183
+ nodeFactory ,
184
+ generateJitInlineUri ( node . text , 'style' ) ,
185
+ resourceImportDeclarations ,
186
+ ) ;
187
+ } ) as ts . NodeArray < ts . Expression > ;
188
+
189
+ // Inline styles should be placed first
190
+ styleReplacements . unshift ( ...inlineStyles ) ;
191
+
192
+ // The inline styles will be added afterwards in combination with any external styles
193
+ return undefined ;
194
+ }
176
195
177
- const contents = node . text ;
178
- if ( ! contents ) {
179
- // An empty inline style is equivalent to not having a style element
180
- return undefined ;
181
- }
196
+ return node ;
182
197
183
- return createResourceImport (
184
- nodeFactory ,
185
- generateJitInlineUri ( contents , 'style' ) ,
186
- resourceImportDeclarations ,
198
+ case 'styleUrl' :
199
+ if ( ts . isStringLiteralLike ( node . initializer ) ) {
200
+ styleReplacements . push (
201
+ createResourceImport (
202
+ nodeFactory ,
203
+ generateJitFileUri ( node . initializer . text , 'style' ) ,
204
+ resourceImportDeclarations ,
205
+ ) ,
187
206
) ;
188
- } ) as ts . NodeArray < ts . Expression > ;
189
207
190
- // Inline styles should be placed first
191
- styleReplacements . unshift ( ...inlineStyles ) ;
208
+ return undefined ;
209
+ }
210
+
211
+ return node ;
192
212
193
- // The inline styles will be added afterwards in combination with any external styles
194
- return undefined ;
195
213
case 'styleUrls' :
196
214
if ( ! ts . isArrayLiteralExpression ( node . initializer ) ) {
197
215
return node ;
198
216
}
199
217
200
218
const externalStyles = ts . visitNodes ( node . initializer . elements , ( node ) => {
201
- if ( ! ts . isStringLiteral ( node ) && ! ts . isNoSubstitutionTemplateLiteral ( node ) ) {
202
- return node ;
203
- }
204
-
205
- const url = node . text ;
206
- if ( ! url ) {
219
+ if ( ! ts . isStringLiteralLike ( node ) ) {
207
220
return node ;
208
221
}
209
222
210
- return createResourceImport (
211
- nodeFactory ,
212
- generateJitFileUri ( url , 'style' ) ,
213
- resourceImportDeclarations ,
214
- ) ;
223
+ return node . text
224
+ ? createResourceImport (
225
+ nodeFactory ,
226
+ generateJitFileUri ( node . text , 'style' ) ,
227
+ resourceImportDeclarations ,
228
+ )
229
+ : undefined ;
215
230
} ) as ts . NodeArray < ts . Expression > ;
216
231
217
232
// External styles are applied after any inline styles
0 commit comments