@@ -143,75 +143,90 @@ function visitComponentMetadata(
143143 switch ( node . name . text ) {
144144 case 'templateUrl' :
145145 // Only analyze string literals
146- if (
147- ! ts . isStringLiteral ( node . initializer ) &&
148- ! ts . isNoSubstitutionTemplateLiteral ( node . initializer )
149- ) {
146+ if ( ! ts . isStringLiteralLike ( node . initializer ) ) {
150147 return node ;
151148 }
152149
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+ ) ;
167161 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 ;
170172 }
171173
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+ }
176195
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 ;
182197
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+ ) ,
187206 ) ;
188- } ) as ts . NodeArray < ts . Expression > ;
189207
190- // Inline styles should be placed first
191- styleReplacements . unshift ( ...inlineStyles ) ;
208+ return undefined ;
209+ }
210+
211+ return node ;
192212
193- // The inline styles will be added afterwards in combination with any external styles
194- return undefined ;
195213 case 'styleUrls' :
196214 if ( ! ts . isArrayLiteralExpression ( node . initializer ) ) {
197215 return node ;
198216 }
199217
200218 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 ) ) {
207220 return node ;
208221 }
209222
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 ;
215230 } ) as ts . NodeArray < ts . Expression > ;
216231
217232 // External styles are applied after any inline styles
0 commit comments