fix(compiler): Don't strip /*# sourceURL ... */
(#16088)
Currently, `shimCssText` only keep `/*# sourceMappingUrl ... */` comments and strip `/*# sourceURL ... */` comments. So, Chrome can't find the source maps for component style(that's created in new `style` tags) PR Close #16088
This commit is contained in:
parent
c7c5214029
commit
5f681f9745
@ -146,10 +146,12 @@ export class ShadowCss {
|
|||||||
* - hostSelector is the attribute added to the host itself.
|
* - hostSelector is the attribute added to the host itself.
|
||||||
*/
|
*/
|
||||||
shimCssText(cssText: string, selector: string, hostSelector: string = ''): string {
|
shimCssText(cssText: string, selector: string, hostSelector: string = ''): string {
|
||||||
const sourceMappingUrl: string = extractSourceMappingUrl(cssText);
|
const commentsWithHash = extractCommentsWithHash(cssText);
|
||||||
cssText = stripComments(cssText);
|
cssText = stripComments(cssText);
|
||||||
cssText = this._insertDirectives(cssText);
|
cssText = this._insertDirectives(cssText);
|
||||||
return this._scopeCssText(cssText, selector, hostSelector) + sourceMappingUrl;
|
|
||||||
|
const scopedCssText = this._scopeCssText(cssText, selector, hostSelector);
|
||||||
|
return [scopedCssText, ...commentsWithHash].join('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
private _insertDirectives(cssText: string): string {
|
private _insertDirectives(cssText: string): string {
|
||||||
@ -544,12 +546,10 @@ function stripComments(input: string): string {
|
|||||||
return input.replace(_commentRe, '');
|
return input.replace(_commentRe, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
// all comments except inline source mapping
|
const _commentWithHashRe = /\/\*\s*#\s*source(Mapping)?URL=[\s\S]+?\*\//g;
|
||||||
const _sourceMappingUrlRe = /\/\*\s*#\s*sourceMappingURL=[\s\S]+?\*\//;
|
|
||||||
|
|
||||||
function extractSourceMappingUrl(input: string): string {
|
function extractCommentsWithHash(input: string): string[] {
|
||||||
const matcher = input.match(_sourceMappingUrlRe);
|
return input.match(_commentWithHashRe) || [];
|
||||||
return matcher ? matcher[0] : '';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const _ruleRe = /(\s*)([^;\{\}]+?)(\s*)((?:{%BLOCK%}?\s*;?)|(?:\s*;))/g;
|
const _ruleRe = /(\s*)([^;\{\}]+?)(\s*)((?:{%BLOCK%}?\s*;?)|(?:\s*;))/g;
|
||||||
|
@ -300,6 +300,11 @@ import {normalizeCSS} from '@angular/platform-browser/testing/src/browser_util';
|
|||||||
expect(s('b {c}/* #sourceMappingURL=data:x */', 'contenta'))
|
expect(s('b {c}/* #sourceMappingURL=data:x */', 'contenta'))
|
||||||
.toEqual('b[contenta] {c}/* #sourceMappingURL=data:x */');
|
.toEqual('b[contenta] {c}/* #sourceMappingURL=data:x */');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should keep sourceURL comments', () => {
|
||||||
|
expect(s('/*# sourceMappingURL=data:x */b {c}/*# sourceURL=xxx */', 'contenta'))
|
||||||
|
.toEqual('b[contenta] {c}/*# sourceMappingURL=data:x *//*# sourceURL=xxx */');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('processRules', () => {
|
describe('processRules', () => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user