UNPKG

angular2

Version:

Angular 2 - a web framework for modern web apps

1 lines 11.2 kB
{"version":3,"sources":["style_inliner.js"],"names":[],"mappings":"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","file":"angular2/src/render/dom/shadow_dom/style_inliner.js","sourcesContent":["import {Injectable} from 'angular2/di';\nimport {XHR} from 'angular2/src/services/xhr';\nimport {ListWrapper} from 'angular2/src/facade/collection';\n\nimport {UrlResolver} from 'angular2/src/services/url_resolver';\nimport {StyleUrlResolver} from './style_url_resolver';\n\nimport {\n isBlank,\n isPresent,\n RegExp,\n RegExpWrapper,\n StringWrapper,\n normalizeBlank,\n} from 'angular2/src/facade/lang';\nimport {\n Promise,\n PromiseWrapper,\n} from 'angular2/src/facade/async';\n\n/**\n * Inline @import rules in the given CSS.\n *\n * When an @import rules is inlined, it's url are rewritten.\n */\n@Injectable()\nexport class StyleInliner {\n _xhr: XHR;\n _urlResolver: UrlResolver;\n _styleUrlResolver: StyleUrlResolver;\n\n constructor(xhr: XHR, styleUrlResolver: StyleUrlResolver, urlResolver: UrlResolver) {\n this._xhr = xhr;\n this._urlResolver = urlResolver;\n this._styleUrlResolver = styleUrlResolver;\n }\n\n /**\n * Inline the @imports rules in the given CSS text.\n *\n * The baseUrl is required to rewrite URLs in the inlined content.\n *\n * @param {string} cssText\n * @param {string} baseUrl\n * @returns {*} a Promise<string> when @import rules are present, a string otherwise\n */\n // TODO(vicb): Union types: returns either a Promise<string> or a string\n // TODO(vicb): commented out @import rules should not be inlined\n inlineImports(cssText: string, baseUrl: string) {\n return this._inlineImports(cssText, baseUrl, []);\n }\n\n _inlineImports(cssText: string, baseUrl: string, inlinedUrls: List<string>) {\n var partIndex = 0;\n var parts = StringWrapper.split(cssText, _importRe);\n\n if (parts.length === 1) {\n // no @import rule found, return the original css\n return cssText;\n }\n\n var promises = [];\n\n while (partIndex < parts.length - 1) {\n // prefix is the content before the @import rule\n var prefix = parts[partIndex];\n // rule is the parameter of the @import rule\n var rule = parts[partIndex + 1];\n var url = _extractUrl(rule);\n if (isPresent(url)) {\n url = this._urlResolver.resolve(baseUrl, url);\n }\n var mediaQuery = _extractMediaQuery(rule);\n var promise;\n\n if (isBlank(url)) {\n promise = PromiseWrapper.resolve(`/* Invalid import rule: \"@import ${rule};\" */`);\n } else if (ListWrapper.contains(inlinedUrls, url)) {\n // The current import rule has already been inlined, return the prefix only\n // Importing again might cause a circular dependency\n promise = PromiseWrapper.resolve(prefix);\n } else {\n ListWrapper.push(inlinedUrls, url);\n promise = PromiseWrapper.then(\n this._xhr.get(url),\n (css) => {\n // resolve nested @import rules\n css = this._inlineImports(css, url, inlinedUrls);\n if (PromiseWrapper.isPromise(css)) {\n // wait until nested @import are inlined\n return css.then((css) => {\n return prefix + this._transformImportedCss(css, mediaQuery, url) + '\\n'\n }) ;\n } else {\n // there are no nested @import, return the css\n return prefix + this._transformImportedCss(css, mediaQuery, url) + '\\n';\n }\n },\n (error) => `/* failed to import ${url} */\\n`\n );\n }\n ListWrapper.push(promises, promise);\n partIndex += 2;\n }\n\n return PromiseWrapper.all(promises).then(function (cssParts) {\n var cssText = cssParts.join('');\n if (partIndex < parts.length) {\n // append then content located after the last @import rule\n cssText += parts[partIndex];\n }\n return cssText;\n });\n }\n\n _transformImportedCss(css: string, mediaQuery: string, url: string): string {\n css = this._styleUrlResolver.resolveUrls(css, url);\n return _wrapInMediaRule(css, mediaQuery);\n }\n}\n\n// Extracts the url from an import rule, supported formats:\n// - 'url' / \"url\",\n// - url(url) / url('url') / url(\"url\")\nfunction _extractUrl(importRule: string): string {\n var match = RegExpWrapper.firstMatch(_urlRe, importRule);\n if (isBlank(match)) return null;\n return isPresent(match[1]) ? match[1] : match[2];\n}\n\n// Extracts the media query from an import rule.\n// Returns null when there is no media query.\nfunction _extractMediaQuery(importRule: string): string {\n var match = RegExpWrapper.firstMatch(_mediaQueryRe, importRule);\n if (isBlank(match)) return null;\n var mediaQuery = match[1].trim();\n return (mediaQuery.length > 0) ? mediaQuery: null;\n}\n\n// Wraps the css in a media rule when the media query is not null\nfunction _wrapInMediaRule(css: string, query: string): string {\n return (isBlank(query)) ? css : `@media ${query} {\\n${css}\\n}`;\n}\n\nvar _importRe = RegExpWrapper.create('@import\\\\s+([^;]+);');\nvar _urlRe = RegExpWrapper.create(\n 'url\\\\(\\\\s*?[\\'\"]?([^\\'\")]+)[\\'\"]?|' + // url(url) or url('url') or url(\"url\")\n '[\\'\"]([^\\'\")]+)[\\'\"]' // \"url\" or 'url'\n);\nvar _mediaQueryRe = RegExpWrapper.create('[\\'\"][^\\'\"]+[\\'\"]\\\\s*\\\\)?\\\\s*(.*)');\n"]}