blob: c37252b5a6328a764c1a4b8a50eb963ef0472965 [file] [log] [blame]
{"version":3,"file":"flex-layout-server.umd.min.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/lib/server/server-provider.ts","../../src/lib/server/server-match-media.ts","../../src/lib/server/module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {InjectionToken} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {BEFORE_APP_SERIALIZED} from '@angular/platform-server';\nimport {\n BREAKPOINTS,\n CLASS_NAME,\n SERVER_TOKEN,\n BreakPoint,\n ɵMatchMedia as MatchMedia,\n StylesheetMap,\n sortAscendingPriority,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n} from '@angular/flex-layout/core';\n\nimport {ServerMatchMedia} from './server-match-media';\n\n/**\n * Activate all of the registered breakpoints in sequence, and then\n * retrieve the associated stylings from the virtual stylesheet\n * @param serverSheet the virtual stylesheet that stores styles for each\n * element\n * @param mediaController the MatchMedia service to activate/deactivate breakpoints\n * @param breakpoints the registered breakpoints to activate/deactivate\n * @param layoutConfig the library config, and specifically the breakpoints to activate\n */\nexport function generateStaticFlexLayoutStyles(serverSheet: StylesheetMap,\n mediaController: ServerMatchMedia,\n breakpoints: BreakPoint[],\n layoutConfig: LayoutConfigOptions) {\n // Store the custom classes in the following map, that way only\n // one class gets allocated per HTMLElement, and each class can\n // be referenced in the static media queries\n const classMap = new Map<HTMLElement, string>();\n\n // Get the initial stylings for all of the directives,\n // and initialize the fallback block of stylings\n const defaultStyles = new Map(serverSheet.stylesheet);\n let styleText = generateCss(defaultStyles, 'all', classMap);\n\n [...breakpoints].sort(sortAscendingPriority).forEach((bp, i) => {\n serverSheet.clearStyles();\n mediaController.activateBreakpoint(bp);\n const stylesheet = new Map(serverSheet.stylesheet);\n if (stylesheet.size > 0) {\n styleText += generateCss(stylesheet, bp.mediaQuery, classMap);\n }\n mediaController.deactivateBreakpoint(breakpoints[i]);\n });\n\n const serverBps = layoutConfig.ssrObserveBreakpoints;\n if (serverBps) {\n serverBps\n .reduce((acc: BreakPoint[], serverBp: string) => {\n const foundBp = breakpoints.find(bp => serverBp === bp.alias);\n if (!foundBp) {\n console.warn(`FlexLayoutServerModule: unknown breakpoint alias \"${serverBp}\"`);\n } else {\n acc.push(foundBp);\n }\n return acc;\n }, [])\n .forEach(mediaController.activateBreakpoint);\n }\n\n return styleText;\n}\n\n/**\n * Create a style tag populated with the dynamic stylings from Flex\n * components and attach it to the head of the DOM\n */\nexport function FLEX_SSR_SERIALIZER_FACTORY(serverSheet: StylesheetMap,\n mediaController: ServerMatchMedia,\n _document: Document,\n breakpoints: BreakPoint[],\n layoutConfig: LayoutConfigOptions) {\n return () => {\n // This is the style tag that gets inserted into the head of the DOM,\n // populated with the manual media queries\n const styleTag = _document.createElement('style');\n const styleText = generateStaticFlexLayoutStyles(serverSheet, mediaController, breakpoints,\n layoutConfig);\n styleTag.classList.add(`${CLASS_NAME}ssr`);\n styleTag.textContent = styleText;\n _document.head!.appendChild(styleTag);\n };\n}\n\n/**\n * Provider to set static styles on the server\n */\nexport const SERVER_PROVIDERS = [\n {\n provide: <InjectionToken<() => void>>BEFORE_APP_SERIALIZED,\n useFactory: FLEX_SSR_SERIALIZER_FACTORY,\n deps: [\n StylesheetMap,\n MatchMedia,\n DOCUMENT,\n BREAKPOINTS,\n LAYOUT_CONFIG,\n ],\n multi: true\n },\n {\n provide: SERVER_TOKEN,\n useValue: true\n },\n {\n provide: MatchMedia,\n useClass: ServerMatchMedia\n }\n];\n\n\nlet nextId = 0;\nconst IS_DEBUG_MODE = false;\n\nexport type StyleSheet = Map<HTMLElement, Map<string, string|number>>;\nexport type ClassMap = Map<HTMLElement, string>;\n\n/**\n * create @media queries based on a virtual stylesheet\n * * Adds a unique class to each element and stores it\n * in a shared classMap for later reuse\n * @param stylesheet the virtual stylesheet that stores styles for each\n * element\n * @param mediaQuery the given @media CSS selector for the current breakpoint\n * @param classMap the map of HTML elements to class names to avoid duplications\n */\nfunction generateCss(stylesheet: StyleSheet, mediaQuery: string, classMap: ClassMap) {\n let css = '';\n stylesheet.forEach((styles, el) => {\n let keyVals = '';\n let className = getClassName(el, classMap);\n\n styles.forEach((v, k) => {\n keyVals += v ? format(`${k}:${v};`) : '';\n });\n\n // Build list of CSS styles; each with a className\n css += format(`.${className} {`, keyVals, '}');\n });\n\n // Group 1 or more styles (each with className) in a specific mediaQuery\n return format(`@media ${mediaQuery} {`, css, '}');\n}\n\n/**\n * For debugging purposes, prefix css segment with linefeed(s) for easy\n * debugging purposes.\n */\nfunction format(...list: string[]): string {\n let result = '';\n list.forEach((css, i) => {\n result += IS_DEBUG_MODE ? formatSegment(css, i !== 0) : css;\n });\n return result;\n}\n\nfunction formatSegment(css: string, asPrefix: boolean = true): string {\n return asPrefix ? `\\n${css}` : `${css}\\n`;\n}\n\n/**\n * Get className associated with CSS styling\n * If not found, generate global className and set\n * association.\n */\nfunction getClassName(element: HTMLElement, classMap: Map<HTMLElement, string>) {\n let className = classMap.get(element);\n if (!className) {\n className = `${CLASS_NAME}${nextId++}`;\n classMap.set(element, className);\n }\n element.classList.add(className);\n\n return className;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, NgZone, PLATFORM_ID} from '@angular/core';\nimport {BreakPoint, ɵMatchMedia as MatchMedia} from '@angular/flex-layout/core';\n\n/**\n * Special server-only class to simulate a MediaQueryList and\n * - supports manual activation to simulate mediaQuery matching\n * - manages listeners\n */\nexport class ServerMediaQueryList implements MediaQueryList {\n private _isActive = false;\n private _listeners: MediaQueryListListener[] = [];\n\n get matches(): boolean {\n return this._isActive;\n }\n\n get media(): string {\n return this._mediaQuery;\n }\n\n constructor(private _mediaQuery: string) {}\n\n /**\n * Destroy the current list by deactivating the\n * listeners and clearing the internal list\n */\n destroy() {\n this.deactivate();\n this._listeners = [];\n }\n\n /** Notify all listeners that 'matches === TRUE' */\n activate(): ServerMediaQueryList {\n if (!this._isActive) {\n this._isActive = true;\n this._listeners.forEach((callback) => {\n const cb: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) = callback!;\n cb.call(null, this);\n });\n }\n return this;\n }\n\n /** Notify all listeners that 'matches === false' */\n deactivate(): ServerMediaQueryList {\n if (this._isActive) {\n this._isActive = false;\n this._listeners.forEach((callback) => {\n const cb: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) = callback!;\n cb.call(null, this);\n });\n }\n return this;\n }\n\n /** Add a listener to our internal list to activate later */\n addListener(listener: MediaQueryListListener) {\n if (this._listeners.indexOf(listener) === -1) {\n this._listeners.push(listener);\n }\n if (this._isActive) {\n const cb: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) = listener!;\n cb.call(null, this);\n }\n }\n\n /** Don't need to remove listeners in the server environment */\n removeListener(_: MediaQueryListListener | null) {\n }\n\n addEventListener<K extends keyof\n MediaQueryListEventMap>(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | AddEventListenerOptions): void;\n addEventListener(_: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | AddEventListenerOptions) {\n }\n\n removeEventListener<K extends keyof\n MediaQueryListEventMap>(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | EventListenerOptions): void;\n removeEventListener(_: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | EventListenerOptions) {\n }\n\n dispatchEvent(_: Event): boolean {\n return false;\n }\n\n onchange: MediaQueryListListener = null;\n}\n\n/**\n * Special server-only implementation of MatchMedia that uses the above\n * ServerMediaQueryList as its internal representation\n *\n * Also contains methods to activate and deactivate breakpoints\n */\n@Injectable()\nexport class ServerMatchMedia extends MatchMedia {\n constructor(protected _zone: NgZone,\n @Inject(PLATFORM_ID) protected _platformId: Object,\n @Inject(DOCUMENT) protected _document: any) {\n super(_zone, _platformId, _document);\n }\n\n /** Activate the specified breakpoint if we're on the server, no-op otherwise */\n activateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this.registry.get(bp.mediaQuery) as ServerMediaQueryList;\n if (lookupBreakpoint) {\n lookupBreakpoint.activate();\n }\n }\n\n /** Deactivate the specified breakpoint if we're on the server, no-op otherwise */\n deactivateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this.registry.get(bp.mediaQuery) as ServerMediaQueryList;\n if (lookupBreakpoint) {\n lookupBreakpoint.deactivate();\n }\n }\n\n /**\n * Call window.matchMedia() to build a MediaQueryList; which\n * supports 0..n listeners for activation/deactivation\n */\n protected buildMQL(query: string): ServerMediaQueryList {\n return new ServerMediaQueryList(query);\n }\n}\n\ntype MediaQueryListListener = ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null;\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\n\nimport {SERVER_PROVIDERS} from './server-provider';\n\n@NgModule({\n providers: [SERVER_PROVIDERS]\n})\nexport class FlexLayoutServerModule {}\n"],"names":["__extends","d","b","__","this","constructor","extendStatics","prototype","Object","create","generateStaticFlexLayoutStyles","serverSheet","mediaController","breakpoints","layoutConfig","classMap","Map","defaultStyles","stylesheet","styleText","generateCss","slice","sort","sortAscendingPriority","forEach","bp","i","clearStyles","activateBreakpoint","size","mediaQuery","deactivateBreakpoint","serverBps","ssrObserveBreakpoints","reduce","acc","serverBp","foundBp","find","alias","push","console","warn","FLEX_SSR_SERIALIZER_FACTORY","_document","styleTag","createElement","classList","add","CLASS_NAME","textContent","appendChild","css","styles","el","keyVals","className","getClassName","v","k","format","list","_i","arguments","length","result","IS_DEBUG_MODE","formatSegment","asPrefix","element","get","nextId","set","setPrototypeOf","__proto__","Array","p","hasOwnProperty","ServerMediaQueryList","_mediaQuery","_isActive","_listeners","onchange","defineProperty","destroy","deactivate","activate","_this","callback","call","addListener","listener","indexOf","removeListener","_","addEventListener","___","removeEventListener","dispatchEvent","ServerMatchMedia","_super","_zone","_platformId","tslib_1.__extends","lookupBreakpoint","registry","buildMQL","query","type","Injectable","NgZone","decorators","Inject","args","PLATFORM_ID","undefined","DOCUMENT","MatchMedia","SERVER_PROVIDERS","provide","BEFORE_APP_SERIALIZED","useFactory","deps","StylesheetMap","BREAKPOINTS","LAYOUT_CONFIG","multi","SERVER_TOKEN","useValue","useClass","FlexLayoutServerModule","NgModule","providers"],"mappings":"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"}