{"version":3,"file":"grid-list.es5.js","sources":["../../packages/material/esm5/grid-list/grid-list-measure.js","../../packages/material/esm5/grid-list/grid-tile.js","../../packages/material/esm5/grid-list/tile-coordinator.js","../../packages/material/esm5/grid-list/tile-styler.js","../../packages/material/esm5/grid-list/grid-list.js","../../packages/material/esm5/grid-list/grid-list-module.js","../../packages/material/esm5/grid-list/index.js"],"sourcesContent":["/**\n * Converts values into strings. Falsy values become empty strings.\n * \\@docs-private\n * @param {?} value\n * @return {?}\n */\nexport function coerceToString(value) {\n return \"\" + (value || '');\n}\n/**\n * Converts a value that might be a string into a number.\n * \\@docs-private\n * @param {?} value\n * @return {?}\n */\nexport function coerceToNumber(value) {\n return typeof value === 'string' ? parseInt(value, 10) : value;\n}\n//# sourceMappingURL=grid-list-measure.js.map","/**\n * @license\n * Copyright Google Inc. 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 { Component, ViewEncapsulation, Renderer2, ElementRef, Input, ContentChildren, Directive, ChangeDetectionStrategy, } from '@angular/core';\nimport { MatLine, MatLineSetter } from '@angular/material/core';\nimport { coerceToNumber } from './grid-list-measure';\nvar MatGridTile = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _element\n */\n function MatGridTile(_renderer, _element) {\n this._renderer = _renderer;\n this._element = _element;\n this._rowspan = 1;\n this._colspan = 1;\n }\n Object.defineProperty(MatGridTile.prototype, \"rowspan\", {\n /**\n * Amount of rows that the grid tile takes up.\n * @return {?}\n */\n get: function () { return this._rowspan; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._rowspan = coerceToNumber(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatGridTile.prototype, \"colspan\", {\n /**\n * Amount of columns that the grid tile takes up.\n * @return {?}\n */\n get: function () { return this._colspan; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._colspan = coerceToNumber(value); },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the style of the grid-tile element. Needs to be set manually to avoid\n * \"Changed after checked\" errors that would occur with HostBinding.\n * @param {?} property\n * @param {?} value\n * @return {?}\n */\n MatGridTile.prototype._setStyle = function (property, value) {\n this._renderer.setStyle(this._element.nativeElement, property, value);\n };\n MatGridTile.decorators = [\n { type: Component, args: [{selector: 'mat-grid-tile',\n exportAs: 'matGridTile',\n host: {\n 'class': 'mat-grid-tile',\n },\n template: \"
\",\n styles: [\".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-figure{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}.mat-grid-tile .mat-grid-tile-footer,.mat-grid-tile .mat-grid-tile-header{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-footer>*,.mat-grid-tile .mat-grid-tile-header>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-grid-tile .mat-grid-tile-footer.mat-2-line,.mat-grid-tile .mat-grid-tile-header.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridTile.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n ]; };\n MatGridTile.propDecorators = {\n 'rowspan': [{ type: Input },],\n 'colspan': [{ type: Input },],\n };\n return MatGridTile;\n}());\nexport { MatGridTile };\nfunction MatGridTile_tsickle_Closure_declarations() {\n /** @type {?} */\n MatGridTile.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatGridTile.ctorParameters;\n /** @type {?} */\n MatGridTile.propDecorators;\n /** @type {?} */\n MatGridTile.prototype._rowspan;\n /** @type {?} */\n MatGridTile.prototype._colspan;\n /** @type {?} */\n MatGridTile.prototype._renderer;\n /** @type {?} */\n MatGridTile.prototype._element;\n}\nvar MatGridTileText = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _element\n */\n function MatGridTileText(_renderer, _element) {\n this._renderer = _renderer;\n this._element = _element;\n }\n /**\n * @return {?}\n */\n MatGridTileText.prototype.ngAfterContentInit = function () {\n this._lineSetter = new MatLineSetter(this._lines, this._renderer, this._element);\n };\n MatGridTileText.decorators = [\n { type: Component, args: [{selector: 'mat-grid-tile-header, mat-grid-tile-footer',\n template: \"
\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridTileText.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n ]; };\n MatGridTileText.propDecorators = {\n '_lines': [{ type: ContentChildren, args: [MatLine,] },],\n };\n return MatGridTileText;\n}());\nexport { MatGridTileText };\nfunction MatGridTileText_tsickle_Closure_declarations() {\n /** @type {?} */\n MatGridTileText.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatGridTileText.ctorParameters;\n /** @type {?} */\n MatGridTileText.propDecorators;\n /**\n * Helper that watches the number of lines in a text area and sets\n * a class on the host element that matches the line count.\n * @type {?}\n */\n MatGridTileText.prototype._lineSetter;\n /** @type {?} */\n MatGridTileText.prototype._lines;\n /** @type {?} */\n MatGridTileText.prototype._renderer;\n /** @type {?} */\n MatGridTileText.prototype._element;\n}\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatGridAvatarCssMatStyler = (function () {\n function MatGridAvatarCssMatStyler() {\n }\n MatGridAvatarCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: '[mat-grid-avatar], [matGridAvatar]',\n host: { 'class': 'mat-grid-avatar' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridAvatarCssMatStyler.ctorParameters = function () { return []; };\n return MatGridAvatarCssMatStyler;\n}());\nexport { MatGridAvatarCssMatStyler };\nfunction MatGridAvatarCssMatStyler_tsickle_Closure_declarations() {\n /** @type {?} */\n MatGridAvatarCssMatStyler.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatGridAvatarCssMatStyler.ctorParameters;\n}\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatGridTileHeaderCssMatStyler = (function () {\n function MatGridTileHeaderCssMatStyler() {\n }\n MatGridTileHeaderCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'mat-grid-tile-header',\n host: { 'class': 'mat-grid-tile-header' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridTileHeaderCssMatStyler.ctorParameters = function () { return []; };\n return MatGridTileHeaderCssMatStyler;\n}());\nexport { MatGridTileHeaderCssMatStyler };\nfunction MatGridTileHeaderCssMatStyler_tsickle_Closure_declarations() {\n /** @type {?} */\n MatGridTileHeaderCssMatStyler.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatGridTileHeaderCssMatStyler.ctorParameters;\n}\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatGridTileFooterCssMatStyler = (function () {\n function MatGridTileFooterCssMatStyler() {\n }\n MatGridTileFooterCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'mat-grid-tile-footer',\n host: { 'class': 'mat-grid-tile-footer' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridTileFooterCssMatStyler.ctorParameters = function () { return []; };\n return MatGridTileFooterCssMatStyler;\n}());\nexport { MatGridTileFooterCssMatStyler };\nfunction MatGridTileFooterCssMatStyler_tsickle_Closure_declarations() {\n /** @type {?} */\n MatGridTileFooterCssMatStyler.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatGridTileFooterCssMatStyler.ctorParameters;\n}\n//# sourceMappingURL=grid-tile.js.map","/**\n * @license\n * Copyright Google Inc. 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 */\n/**\n * Class for determining, from a list of tiles, the (row, col) position of each of those tiles\n * in the grid. This is necessary (rather than just rendering the tiles in normal document flow)\n * because the tiles can have a rowspan.\n *\n * The positioning algorithm greedily places each tile as soon as it encounters a gap in the grid\n * large enough to accommodate it so that the tiles still render in the same order in which they\n * are given.\n *\n * The basis of the algorithm is the use of an array to track the already placed tiles. Each\n * element of the array corresponds to a column, and the value indicates how many cells in that\n * column are already occupied; zero indicates an empty cell. Moving \"down\" to the next row\n * decrements each value in the tracking array (indicating that the column is one cell closer to\n * being free).\n *\n * \\@docs-private\n */\nvar TileCoordinator = (function () {\n /**\n * @param {?} numColumns\n * @param {?} tiles\n */\n function TileCoordinator(numColumns, tiles) {\n var _this = this;\n /**\n * Index at which the search for the next gap will start.\n */\n this.columnIndex = 0;\n /**\n * The current row index.\n */\n this.rowIndex = 0;\n this.tracker = new Array(numColumns);\n this.tracker.fill(0, 0, this.tracker.length);\n this.positions = tiles.map(function (tile) { return _this._trackTile(tile); });\n }\n Object.defineProperty(TileCoordinator.prototype, \"rowCount\", {\n /**\n * Gets the total number of rows occupied by tiles\n * @return {?}\n */\n get: function () { return this.rowIndex + 1; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TileCoordinator.prototype, \"rowspan\", {\n /**\n * Gets the total span of rows occupied by tiles.\n * Ex: A list with 1 row that contains a tile with rowspan 2 will have a total rowspan of 2.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ lastRowMax = Math.max.apply(Math, this.tracker);\n // if any of the tiles has a rowspan that pushes it beyond the total row count,\n // add the difference to the rowcount\n return lastRowMax > 1 ? this.rowCount + lastRowMax - 1 : this.rowCount;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Calculates the row and col position of a tile.\n * @param {?} tile\n * @return {?}\n */\n TileCoordinator.prototype._trackTile = function (tile) {\n // Find a gap large enough for this tile.\n var /** @type {?} */ gapStartIndex = this._findMatchingGap(tile.colspan);\n // Place tile in the resulting gap.\n this._markTilePosition(gapStartIndex, tile);\n // The next time we look for a gap, the search will start at columnIndex, which should be\n // immediately after the tile that has just been placed.\n this.columnIndex = gapStartIndex + tile.colspan;\n return new TilePosition(this.rowIndex, gapStartIndex);\n };\n /**\n * Finds the next available space large enough to fit the tile.\n * @param {?} tileCols\n * @return {?}\n */\n TileCoordinator.prototype._findMatchingGap = function (tileCols) {\n if (tileCols > this.tracker.length) {\n throw Error(\"mat-grid-list: tile with colspan \" + tileCols + \" is wider than \" +\n (\"grid with cols=\\\"\" + this.tracker.length + \"\\\".\"));\n }\n // Start index is inclusive, end index is exclusive.\n var /** @type {?} */ gapStartIndex = -1;\n var /** @type {?} */ gapEndIndex = -1;\n // Look for a gap large enough to fit the given tile. Empty spaces are marked with a zero.\n do {\n // If we've reached the end of the row, go to the next row.\n if (this.columnIndex + tileCols > this.tracker.length) {\n this._nextRow();\n continue;\n }\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n // If there are no more empty spaces in this row at all, move on to the next row.\n if (gapStartIndex == -1) {\n this._nextRow();\n continue;\n }\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n // If a gap large enough isn't found, we want to start looking immediately after the current\n // gap on the next iteration.\n this.columnIndex = gapStartIndex + 1;\n // Continue iterating until we find a gap wide enough for this tile.\n } while (gapEndIndex - gapStartIndex < tileCols);\n return gapStartIndex;\n };\n /**\n * Move \"down\" to the next row.\n * @return {?}\n */\n TileCoordinator.prototype._nextRow = function () {\n this.columnIndex = 0;\n this.rowIndex++;\n // Decrement all spaces by one to reflect moving down one row.\n for (var /** @type {?} */ i = 0; i < this.tracker.length; i++) {\n this.tracker[i] = Math.max(0, this.tracker[i] - 1);\n }\n };\n /**\n * Finds the end index (exclusive) of a gap given the index from which to start looking.\n * The gap ends when a non-zero value is found.\n * @param {?} gapStartIndex\n * @return {?}\n */\n TileCoordinator.prototype._findGapEndIndex = function (gapStartIndex) {\n for (var /** @type {?} */ i = gapStartIndex + 1; i < this.tracker.length; i++) {\n if (this.tracker[i] != 0) {\n return i;\n }\n }\n // The gap ends with the end of the row.\n return this.tracker.length;\n };\n /**\n * Update the tile tracker to account for the given tile in the given space.\n * @param {?} start\n * @param {?} tile\n * @return {?}\n */\n TileCoordinator.prototype._markTilePosition = function (start, tile) {\n for (var /** @type {?} */ i = 0; i < tile.colspan; i++) {\n this.tracker[start + i] = tile.rowspan;\n }\n };\n return TileCoordinator;\n}());\nexport { TileCoordinator };\nfunction TileCoordinator_tsickle_Closure_declarations() {\n /**\n * Tracking array (see class description).\n * @type {?}\n */\n TileCoordinator.prototype.tracker;\n /**\n * Index at which the search for the next gap will start.\n * @type {?}\n */\n TileCoordinator.prototype.columnIndex;\n /**\n * The current row index.\n * @type {?}\n */\n TileCoordinator.prototype.rowIndex;\n /**\n * The computed (row, col) position of each tile (the output).\n * @type {?}\n */\n TileCoordinator.prototype.positions;\n}\n/**\n * Simple data structure for tile position (row, col).\n * \\@docs-private\n */\nvar TilePosition = (function () {\n /**\n * @param {?} row\n * @param {?} col\n */\n function TilePosition(row, col) {\n this.row = row;\n this.col = col;\n }\n return TilePosition;\n}());\nexport { TilePosition };\nfunction TilePosition_tsickle_Closure_declarations() {\n /** @type {?} */\n TilePosition.prototype.row;\n /** @type {?} */\n TilePosition.prototype.col;\n}\n//# sourceMappingURL=tile-coordinator.js.map","/**\n * @license\n * Copyright Google Inc. 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 * as tslib_1 from \"tslib\";\n/**\n * Sets the style properties for an individual tile, given the position calculated by the\n * Tile Coordinator.\n * \\@docs-private\n * @abstract\n */\nvar TileStyler = (function () {\n function TileStyler() {\n this._rows = 0;\n this._rowspan = 0;\n }\n /**\n * Adds grid-list layout info once it is available. Cannot be processed in the constructor\n * because these properties haven't been calculated by that point.\n *\n * @param {?} gutterSize Size of the grid's gutter.\n * @param {?} tracker Instance of the TileCoordinator.\n * @param {?} cols Amount of columns in the grid.\n * @param {?} direction Layout direction of the grid.\n * @return {?}\n */\n TileStyler.prototype.init = function (gutterSize, tracker, cols, direction) {\n this._gutterSize = normalizeUnits(gutterSize);\n this._rows = tracker.rowCount;\n this._rowspan = tracker.rowspan;\n this._cols = cols;\n this._direction = direction;\n };\n /**\n * Computes the amount of space a single 1x1 tile would take up (width or height).\n * Used as a basis for other calculations.\n * @param {?} sizePercent Percent of the total grid-list space that one 1x1 tile would take up.\n * @param {?} gutterFraction Fraction of the gutter size taken up by one 1x1 tile.\n * @return {?} The size of a 1x1 tile as an expression that can be evaluated via CSS calc().\n */\n TileStyler.prototype.getBaseTileSize = function (sizePercent, gutterFraction) {\n // Take the base size percent (as would be if evenly dividing the size between cells),\n // and then subtracting the size of one gutter. However, since there are no gutters on the\n // edges, each tile only uses a fraction (gutterShare = numGutters / numCells) of the gutter\n // size. (Imagine having one gutter per tile, and then breaking up the extra gutter on the\n // edge evenly among the cells).\n return \"(\" + sizePercent + \"% - (\" + this._gutterSize + \" * \" + gutterFraction + \"))\";\n };\n /**\n * Gets The horizontal or vertical position of a tile, e.g., the 'top' or 'left' property value.\n * @param {?} baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @param {?} offset Number of tiles that have already been rendered in the row/column.\n * @return {?} Position of the tile as a CSS calc() expression.\n */\n TileStyler.prototype.getTilePosition = function (baseSize, offset) {\n // The position comes the size of a 1x1 tile plus gutter for each previous tile in the\n // row/column (offset).\n return offset === 0 ? '0' : calc(\"(\" + baseSize + \" + \" + this._gutterSize + \") * \" + offset);\n };\n /**\n * Gets the actual size of a tile, e.g., width or height, taking rowspan or colspan into account.\n * @param {?} baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @param {?} span The tile's rowspan or colspan.\n * @return {?} Size of the tile as a CSS calc() expression.\n */\n TileStyler.prototype.getTileSize = function (baseSize, span) {\n return \"(\" + baseSize + \" * \" + span + \") + (\" + (span - 1) + \" * \" + this._gutterSize + \")\";\n };\n /**\n * Sets the style properties to be applied to a tile for the given row and column index.\n * @param {?} tile Tile to which to apply the styling.\n * @param {?} rowIndex Index of the tile's row.\n * @param {?} colIndex Index of the tile's column.\n * @return {?}\n */\n TileStyler.prototype.setStyle = function (tile, rowIndex, colIndex) {\n // Percent of the available horizontal space that one column takes up.\n var /** @type {?} */ percentWidthPerTile = 100 / this._cols;\n // Fraction of the vertical gutter size that each column takes up.\n // For example, if there are 5 columns, each column uses 4/5 = 0.8 times the gutter width.\n var /** @type {?} */ gutterWidthFractionPerTile = (this._cols - 1) / this._cols;\n this.setColStyles(tile, colIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n this.setRowStyles(tile, rowIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n };\n /**\n * Sets the horizontal placement of the tile in the list.\n * @param {?} tile\n * @param {?} colIndex\n * @param {?} percentWidth\n * @param {?} gutterWidth\n * @return {?}\n */\n TileStyler.prototype.setColStyles = function (tile, colIndex, percentWidth, gutterWidth) {\n // Base horizontal size of a column.\n var /** @type {?} */ baseTileWidth = this.getBaseTileSize(percentWidth, gutterWidth);\n // The width and horizontal position of each tile is always calculated the same way, but the\n // height and vertical position depends on the rowMode.\n var /** @type {?} */ side = this._direction === 'ltr' ? 'left' : 'right';\n tile._setStyle(side, this.getTilePosition(baseTileWidth, colIndex));\n tile._setStyle('width', calc(this.getTileSize(baseTileWidth, tile.colspan)));\n };\n /**\n * Calculates the total size taken up by gutters across one axis of a list.\n * @return {?}\n */\n TileStyler.prototype.getGutterSpan = function () {\n return this._gutterSize + \" * (\" + this._rowspan + \" - 1)\";\n };\n /**\n * Calculates the total size taken up by tiles across one axis of a list.\n * @param {?} tileHeight Height of the tile.\n * @return {?}\n */\n TileStyler.prototype.getTileSpan = function (tileHeight) {\n return this._rowspan + \" * \" + this.getTileSize(tileHeight, 1);\n };\n /**\n * Sets the vertical placement of the tile in the list.\n * This method will be implemented by each type of TileStyler.\n * \\@docs-private\n * @abstract\n * @param {?} tile\n * @param {?} rowIndex\n * @param {?} percentWidth\n * @param {?} gutterWidth\n * @return {?}\n */\n TileStyler.prototype.setRowStyles = function (tile, rowIndex, percentWidth, gutterWidth) { };\n /**\n * Calculates the computed height and returns the correct style property to set.\n * This method can be implemented by each type of TileStyler.\n * \\@docs-private\n * @return {?}\n */\n TileStyler.prototype.getComputedHeight = function () { return null; };\n /**\n * Called when the tile styler is swapped out with a different one. To be used for cleanup.\n * \\@docs-private\n * @abstract\n * @param {?} list Grid list that the styler was attached to.\n * @return {?}\n */\n TileStyler.prototype.reset = function (list) { };\n return TileStyler;\n}());\nexport { TileStyler };\nfunction TileStyler_tsickle_Closure_declarations() {\n /** @type {?} */\n TileStyler.prototype._gutterSize;\n /** @type {?} */\n TileStyler.prototype._rows;\n /** @type {?} */\n TileStyler.prototype._rowspan;\n /** @type {?} */\n TileStyler.prototype._cols;\n /** @type {?} */\n TileStyler.prototype._direction;\n}\n/**\n * This type of styler is instantiated when the user passes in a fixed row height.\n * Example \n * \\@docs-private\n */\nvar FixedTileStyler = (function (_super) {\n tslib_1.__extends(FixedTileStyler, _super);\n /**\n * @param {?} fixedRowHeight\n */\n function FixedTileStyler(fixedRowHeight) {\n var _this = _super.call(this) || this;\n _this.fixedRowHeight = fixedRowHeight;\n return _this;\n }\n /**\n * @param {?} gutterSize\n * @param {?} tracker\n * @param {?} cols\n * @param {?} direction\n * @return {?}\n */\n FixedTileStyler.prototype.init = function (gutterSize, tracker, cols, direction) {\n _super.prototype.init.call(this, gutterSize, tracker, cols, direction);\n this.fixedRowHeight = normalizeUnits(this.fixedRowHeight);\n };\n /**\n * @param {?} tile\n * @param {?} rowIndex\n * @return {?}\n */\n FixedTileStyler.prototype.setRowStyles = function (tile, rowIndex) {\n tile._setStyle('top', this.getTilePosition(this.fixedRowHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(this.fixedRowHeight, tile.rowspan)));\n };\n /**\n * @return {?}\n */\n FixedTileStyler.prototype.getComputedHeight = function () {\n return [\n 'height', calc(this.getTileSpan(this.fixedRowHeight) + \" + \" + this.getGutterSpan())\n ];\n };\n /**\n * @param {?} list\n * @return {?}\n */\n FixedTileStyler.prototype.reset = function (list) {\n list._setListStyle(['height', null]);\n list._tiles.forEach(function (tile) {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n };\n return FixedTileStyler;\n}(TileStyler));\nexport { FixedTileStyler };\nfunction FixedTileStyler_tsickle_Closure_declarations() {\n /** @type {?} */\n FixedTileStyler.prototype.fixedRowHeight;\n}\n/**\n * This type of styler is instantiated when the user passes in a width:height ratio\n * for the row height. Example \n * \\@docs-private\n */\nvar RatioTileStyler = (function (_super) {\n tslib_1.__extends(RatioTileStyler, _super);\n /**\n * @param {?} value\n */\n function RatioTileStyler(value) {\n var _this = _super.call(this) || this;\n _this._parseRatio(value);\n return _this;\n }\n /**\n * @param {?} tile\n * @param {?} rowIndex\n * @param {?} percentWidth\n * @param {?} gutterWidth\n * @return {?}\n */\n RatioTileStyler.prototype.setRowStyles = function (tile, rowIndex, percentWidth, gutterWidth) {\n var /** @type {?} */ percentHeightPerTile = percentWidth / this.rowHeightRatio;\n this.baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterWidth);\n // Use padding-top and margin-top to maintain the given aspect ratio, as\n // a percentage-based value for these properties is applied versus the *width* of the\n // containing block. See http://www.w3.org/TR/CSS2/box.html#margin-properties\n tile._setStyle('margin-top', this.getTilePosition(this.baseTileHeight, rowIndex));\n tile._setStyle('padding-top', calc(this.getTileSize(this.baseTileHeight, tile.rowspan)));\n };\n /**\n * @return {?}\n */\n RatioTileStyler.prototype.getComputedHeight = function () {\n return [\n 'padding-bottom', calc(this.getTileSpan(this.baseTileHeight) + \" + \" + this.getGutterSpan())\n ];\n };\n /**\n * @param {?} list\n * @return {?}\n */\n RatioTileStyler.prototype.reset = function (list) {\n list._setListStyle(['padding-bottom', null]);\n list._tiles.forEach(function (tile) {\n tile._setStyle('margin-top', null);\n tile._setStyle('padding-top', null);\n });\n };\n /**\n * @param {?} value\n * @return {?}\n */\n RatioTileStyler.prototype._parseRatio = function (value) {\n var /** @type {?} */ ratioParts = value.split(':');\n if (ratioParts.length !== 2) {\n throw Error(\"mat-grid-list: invalid ratio given for row-height: \\\"\" + value + \"\\\"\");\n }\n this.rowHeightRatio = parseFloat(ratioParts[0]) / parseFloat(ratioParts[1]);\n };\n return RatioTileStyler;\n}(TileStyler));\nexport { RatioTileStyler };\nfunction RatioTileStyler_tsickle_Closure_declarations() {\n /**\n * Ratio width:height given by user to determine row height.\n * @type {?}\n */\n RatioTileStyler.prototype.rowHeightRatio;\n /** @type {?} */\n RatioTileStyler.prototype.baseTileHeight;\n}\n/**\n * This type of styler is instantiated when the user selects a \"fit\" row height mode.\n * In other words, the row height will reflect the total height of the container divided\n * by the number of rows. Example \n *\n * \\@docs-private\n */\nvar FitTileStyler = (function (_super) {\n tslib_1.__extends(FitTileStyler, _super);\n function FitTileStyler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} tile\n * @param {?} rowIndex\n * @return {?}\n */\n FitTileStyler.prototype.setRowStyles = function (tile, rowIndex) {\n // Percent of the available vertical space that one row takes up.\n var /** @type {?} */ percentHeightPerTile = 100 / this._rowspan;\n // Fraction of the horizontal gutter size that each column takes up.\n var /** @type {?} */ gutterHeightPerTile = (this._rows - 1) / this._rows;\n // Base vertical size of a column.\n var /** @type {?} */ baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterHeightPerTile);\n tile._setStyle('top', this.getTilePosition(baseTileHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(baseTileHeight, tile.rowspan)));\n };\n /**\n * @param {?} list\n * @return {?}\n */\n FitTileStyler.prototype.reset = function (list) {\n list._tiles.forEach(function (tile) {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n };\n return FitTileStyler;\n}(TileStyler));\nexport { FitTileStyler };\n/**\n * Wraps a CSS string in a calc function\n * @param {?} exp\n * @return {?}\n */\nfunction calc(exp) { return \"calc(\" + exp + \")\"; }\n/**\n * Appends pixels to a CSS string if no units are given.\n * @param {?} value\n * @return {?}\n */\nfunction normalizeUnits(value) {\n return (value.match(/px|em|rem/)) ? value : value + 'px';\n}\n//# sourceMappingURL=tile-styler.js.map","/**\n * @license\n * Copyright Google Inc. 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 { Component, ViewEncapsulation, Input, ContentChildren, Renderer2, ElementRef, Optional, ChangeDetectionStrategy, } from '@angular/core';\nimport { MatGridTile } from './grid-tile';\nimport { TileCoordinator } from './tile-coordinator';\nimport { FitTileStyler, RatioTileStyler, FixedTileStyler } from './tile-styler';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceToString, coerceToNumber, } from './grid-list-measure';\n// TODO(kara): Conditional (responsive) column count / row size.\n// TODO(kara): Re-layout on window resize / media change (debounced).\n// TODO(kara): gridTileHeader and gridTileFooter.\nvar /** @type {?} */ MAT_FIT_MODE = 'fit';\nvar MatGridList = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _element\n * @param {?} _dir\n */\n function MatGridList(_renderer, _element, _dir) {\n this._renderer = _renderer;\n this._element = _element;\n this._dir = _dir;\n /**\n * The amount of space between tiles. This will be something like '5px' or '2em'.\n */\n this._gutter = '1px';\n }\n Object.defineProperty(MatGridList.prototype, \"cols\", {\n /**\n * Amount of columns in the grid list.\n * @return {?}\n */\n get: function () { return this._cols; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._cols = coerceToNumber(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatGridList.prototype, \"gutterSize\", {\n /**\n * Size of the grid list's gutter in pixels.\n * @return {?}\n */\n get: function () { return this._gutter; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._gutter = coerceToString(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatGridList.prototype, \"rowHeight\", {\n /**\n * Set internal representation of row height from the user-provided value.\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ newValue = coerceToString(value);\n if (newValue !== this._rowHeight) {\n this._rowHeight = newValue;\n this._setTileStyler(this._rowHeight);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatGridList.prototype.ngOnInit = function () {\n this._checkCols();\n this._checkRowHeight();\n };\n /**\n * The layout calculation is fairly cheap if nothing changes, so there's little cost\n * to run it frequently.\n * @return {?}\n */\n MatGridList.prototype.ngAfterContentChecked = function () {\n this._layoutTiles();\n };\n /**\n * Throw a friendly error if cols property is missing\n * @return {?}\n */\n MatGridList.prototype._checkCols = function () {\n if (!this.cols) {\n throw Error(\"mat-grid-list: must pass in number of columns. \" +\n \"Example: \");\n }\n };\n /**\n * Default to equal width:height if rowHeight property is missing\n * @return {?}\n */\n MatGridList.prototype._checkRowHeight = function () {\n if (!this._rowHeight) {\n this._setTileStyler('1:1');\n }\n };\n /**\n * Creates correct Tile Styler subtype based on rowHeight passed in by user\n * @param {?} rowHeight\n * @return {?}\n */\n MatGridList.prototype._setTileStyler = function (rowHeight) {\n if (this._tileStyler) {\n this._tileStyler.reset(this);\n }\n if (rowHeight === MAT_FIT_MODE) {\n this._tileStyler = new FitTileStyler();\n }\n else if (rowHeight && rowHeight.indexOf(':') > -1) {\n this._tileStyler = new RatioTileStyler(rowHeight);\n }\n else {\n this._tileStyler = new FixedTileStyler(rowHeight);\n }\n };\n /**\n * Computes and applies the size and position for all children grid tiles.\n * @return {?}\n */\n MatGridList.prototype._layoutTiles = function () {\n var _this = this;\n var /** @type {?} */ tracker = new TileCoordinator(this.cols, this._tiles);\n var /** @type {?} */ direction = this._dir ? this._dir.value : 'ltr';\n this._tileStyler.init(this.gutterSize, tracker, this.cols, direction);\n this._tiles.forEach(function (tile, index) {\n var /** @type {?} */ pos = tracker.positions[index];\n _this._tileStyler.setStyle(tile, pos.row, pos.col);\n });\n this._setListStyle(this._tileStyler.getComputedHeight());\n };\n /**\n * Sets style on the main grid-list element, given the style name and value.\n * @param {?} style\n * @return {?}\n */\n MatGridList.prototype._setListStyle = function (style) {\n if (style) {\n this._renderer.setStyle(this._element.nativeElement, style[0], style[1]);\n }\n };\n MatGridList.decorators = [\n { type: Component, args: [{selector: 'mat-grid-list',\n exportAs: 'matGridList',\n template: \"
\",\n styles: [\".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-figure{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}.mat-grid-tile .mat-grid-tile-footer,.mat-grid-tile .mat-grid-tile-header{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-footer>*,.mat-grid-tile .mat-grid-tile-header>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-grid-tile .mat-grid-tile-footer.mat-2-line,.mat-grid-tile .mat-grid-tile-header.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}\"],\n host: {\n 'class': 'mat-grid-list',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridList.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatGridList.propDecorators = {\n '_tiles': [{ type: ContentChildren, args: [MatGridTile,] },],\n 'cols': [{ type: Input },],\n 'gutterSize': [{ type: Input },],\n 'rowHeight': [{ type: Input },],\n };\n return MatGridList;\n}());\nexport { MatGridList };\nfunction MatGridList_tsickle_Closure_declarations() {\n /** @type {?} */\n MatGridList.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatGridList.ctorParameters;\n /** @type {?} */\n MatGridList.propDecorators;\n /**\n * Number of columns being rendered.\n * @type {?}\n */\n MatGridList.prototype._cols;\n /**\n * Row height value passed in by user. This can be one of three types:\n * - Number value (ex: \"100px\"): sets a fixed row height to that value\n * - Ratio value (ex: \"4:3\"): sets the row height based on width:height ratio\n * - \"Fit\" mode (ex: \"fit\"): sets the row height to total height divided by number of rows\n * @type {?}\n */\n MatGridList.prototype._rowHeight;\n /**\n * The amount of space between tiles. This will be something like '5px' or '2em'.\n * @type {?}\n */\n MatGridList.prototype._gutter;\n /**\n * Sets position and size styles for a tile\n * @type {?}\n */\n MatGridList.prototype._tileStyler;\n /**\n * Query list of tiles that are being rendered.\n * @type {?}\n */\n MatGridList.prototype._tiles;\n /** @type {?} */\n MatGridList.prototype._renderer;\n /** @type {?} */\n MatGridList.prototype._element;\n /** @type {?} */\n MatGridList.prototype._dir;\n}\n//# sourceMappingURL=grid-list.js.map","/**\n * @license\n * Copyright Google Inc. 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';\nimport { MatLineModule, MatCommonModule } from '@angular/material/core';\nimport { MatGridTile, MatGridTileText, MatGridTileFooterCssMatStyler, MatGridTileHeaderCssMatStyler, MatGridAvatarCssMatStyler } from './grid-tile';\nimport { MatGridList } from './grid-list';\nvar MatGridListModule = (function () {\n function MatGridListModule() {\n }\n MatGridListModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatLineModule, MatCommonModule],\n exports: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatLineModule,\n MatCommonModule,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler\n ],\n declarations: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridListModule.ctorParameters = function () { return []; };\n return MatGridListModule;\n}());\nexport { MatGridListModule };\nfunction MatGridListModule_tsickle_Closure_declarations() {\n /** @type {?} */\n MatGridListModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatGridListModule.ctorParameters;\n}\n//# sourceMappingURL=grid-list-module.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { MatGridTile, MatGridListModule, MatGridList } from './public-api';\nexport { MatGridAvatarCssMatStyler as ɵb13, MatGridTileFooterCssMatStyler as ɵd13, MatGridTileHeaderCssMatStyler as ɵc13, MatGridTileText as ɵa13 } from './grid-tile';\n//# sourceMappingURL=index.js.map"],"names":["tslib_1.__extends"],"mappings":"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"}