UNPKG

5.33 kBJavaScriptView Raw
1/**
2 * @license
3 * Copyright Google LLC All Rights Reserved.
4 *
5 * Use of this source code is governed by an MIT-style license that can be
6 * found in the LICENSE file at https://angular.io/license
7 */
8import { APP_BOOTSTRAP_LISTENER, PLATFORM_ID } from '@angular/core';
9import { DOCUMENT, isPlatformBrowser } from '@angular/common';
10/**
11 * Find all of the server-generated stylings, if any, and remove them
12 * This will be in the form of inline classes and the style block in the
13 * head of the DOM
14 */
15export function removeStyles(_document, platformId) {
16 return () => {
17 if (isPlatformBrowser(platformId)) {
18 const elements = Array.from(_document.querySelectorAll(`[class*=${CLASS_NAME}]`));
19 // RegExp constructor should only be used if passing a variable to the constructor.
20 // When using static regular expression it is more performant to use reg exp literal.
21 // This is also needed to provide Safari 9 compatibility, please see
22 // https://stackoverflow.com/questions/37919802 for more discussion.
23 const classRegex = /\bflex-layout-.+?\b/g;
24 elements.forEach(el => {
25 el.classList.contains(`${CLASS_NAME}ssr`) && el.parentNode ?
26 el.parentNode.removeChild(el) : el.className.replace(classRegex, '');
27 });
28 }
29 };
30}
31/**
32 * Provider to remove SSR styles on the browser
33 */
34export const BROWSER_PROVIDER = {
35 provide: APP_BOOTSTRAP_LISTENER,
36 useFactory: removeStyles,
37 deps: [DOCUMENT, PLATFORM_ID],
38 multi: true
39};
40export const CLASS_NAME = 'flex-layout-';
41//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYnMvZmxleC1sYXlvdXQvY29yZS9icm93c2VyLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxXQUFXLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU1RDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxTQUFtQixFQUFFLFVBQWtCO0lBQ2xFLE9BQU8sR0FBRyxFQUFFO1FBQ1YsSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNqQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUVsRixtRkFBbUY7WUFDbkYscUZBQXFGO1lBQ3JGLG9FQUFvRTtZQUNwRSxvRUFBb0U7WUFDcEUsTUFBTSxVQUFVLEdBQUcsc0JBQXNCLENBQUM7WUFDMUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDcEIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxVQUFVLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN6RSxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsT0FBTyxFQUFrQyxzQkFBc0I7SUFDL0QsVUFBVSxFQUFFLFlBQVk7SUFDeEIsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQztJQUM3QixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0FQUF9CT09UU1RSQVBfTElTVEVORVIsIFBMQVRGT1JNX0lELCBJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3Nlcn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBGaW5kIGFsbCBvZiB0aGUgc2VydmVyLWdlbmVyYXRlZCBzdHlsaW5ncywgaWYgYW55LCBhbmQgcmVtb3ZlIHRoZW1cbiAqIFRoaXMgd2lsbCBiZSBpbiB0aGUgZm9ybSBvZiBpbmxpbmUgY2xhc3NlcyBhbmQgdGhlIHN0eWxlIGJsb2NrIGluIHRoZVxuICogaGVhZCBvZiB0aGUgRE9NXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVTdHlsZXMoX2RvY3VtZW50OiBEb2N1bWVudCwgcGxhdGZvcm1JZDogT2JqZWN0KSB7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpKSB7XG4gICAgICBjb25zdCBlbGVtZW50cyA9IEFycmF5LmZyb20oX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtjbGFzcyo9JHtDTEFTU19OQU1FfV1gKSk7XG5cbiAgICAgIC8vIFJlZ0V4cCBjb25zdHJ1Y3RvciBzaG91bGQgb25seSBiZSB1c2VkIGlmIHBhc3NpbmcgYSB2YXJpYWJsZSB0byB0aGUgY29uc3RydWN0b3IuXG4gICAgICAvLyBXaGVuIHVzaW5nIHN0YXRpYyByZWd1bGFyIGV4cHJlc3Npb24gaXQgaXMgbW9yZSBwZXJmb3JtYW50IHRvIHVzZSByZWcgZXhwIGxpdGVyYWwuXG4gICAgICAvLyBUaGlzIGlzIGFsc28gbmVlZGVkIHRvIHByb3ZpZGUgU2FmYXJpIDkgY29tcGF0aWJpbGl0eSwgcGxlYXNlIHNlZVxuICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzc5MTk4MDIgZm9yIG1vcmUgZGlzY3Vzc2lvbi5cbiAgICAgIGNvbnN0IGNsYXNzUmVnZXggPSAvXFxiZmxleC1sYXlvdXQtLis/XFxiL2c7XG4gICAgICBlbGVtZW50cy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgZWwuY2xhc3NMaXN0LmNvbnRhaW5zKGAke0NMQVNTX05BTUV9c3NyYCkgJiYgZWwucGFyZW50Tm9kZSA/XG4gICAgICAgICAgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCkgOiBlbC5jbGFzc05hbWUucmVwbGFjZShjbGFzc1JlZ2V4LCAnJyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogIFByb3ZpZGVyIHRvIHJlbW92ZSBTU1Igc3R5bGVzIG9uIHRoZSBicm93c2VyXG4gKi9cbmV4cG9ydCBjb25zdCBCUk9XU0VSX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiA8SW5qZWN0aW9uVG9rZW48KCgpID0+IHZvaWQpW10+PkFQUF9CT09UU1RSQVBfTElTVEVORVIsXG4gIHVzZUZhY3Rvcnk6IHJlbW92ZVN0eWxlcyxcbiAgZGVwczogW0RPQ1VNRU5ULCBQTEFURk9STV9JRF0sXG4gIG11bHRpOiB0cnVlXG59O1xuXG5leHBvcnQgY29uc3QgQ0xBU1NfTkFNRSA9ICdmbGV4LWxheW91dC0nO1xuIl19
\No newline at end of file