{"version":3,"sources":["node_modules/@angular/material/fesm2022/grid-list.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { InjectionToken, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Inject, Input, ContentChildren, Directive, NgModule } from '@angular/core';\nimport { setLines, MatLine, MatLineModule, MatCommonModule } from '@angular/material/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/bidi';\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 */\nconst _c0 = [\"*\"];\nconst _c1 = [[[\"\", \"mat-grid-avatar\", \"\"], [\"\", \"matGridAvatar\", \"\"]], [[\"\", \"mat-line\", \"\"], [\"\", \"matLine\", \"\"]], \"*\"];\nconst _c2 = [\"[mat-grid-avatar], [matGridAvatar]\", \"[mat-line], [matLine]\", \"*\"];\nconst _c3 = \".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-grid-tile-header,.mat-grid-tile .mat-grid-tile-footer{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-header>*,.mat-grid-tile .mat-grid-tile-footer>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-tile-header.mat-2-line,.mat-grid-tile .mat-grid-tile-footer.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:normal;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}.mat-grid-tile-header{font-size:var(--mat-grid-list-tile-header-primary-text-size)}.mat-grid-tile-header .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-grid-tile-header .mat-line:nth-child(n+2){font-size:var(--mat-grid-list-tile-header-secondary-text-size)}.mat-grid-tile-footer{font-size:var(--mat-grid-list-tile-footer-primary-text-size)}.mat-grid-tile-footer .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-grid-tile-footer .mat-line:nth-child(n+2){font-size:var(--mat-grid-list-tile-footer-secondary-text-size)}.mat-grid-tile-content{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}\";\nclass TileCoordinator {\n constructor() {\n /** Index at which the search for the next gap will start. */\n this.columnIndex = 0;\n /** The current row index. */\n this.rowIndex = 0;\n }\n /** Gets the total number of rows occupied by tiles */\n get rowCount() {\n return this.rowIndex + 1;\n }\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 */\n get rowspan() {\n const lastRowMax = Math.max(...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 /**\n * Updates the tile positions.\n * @param numColumns Amount of columns in the grid.\n * @param tiles Tiles to be positioned.\n */\n update(numColumns, tiles) {\n this.columnIndex = 0;\n this.rowIndex = 0;\n this.tracker = new Array(numColumns);\n this.tracker.fill(0, 0, this.tracker.length);\n this.positions = tiles.map(tile => this._trackTile(tile));\n }\n /** Calculates the row and col position of a tile. */\n _trackTile(tile) {\n // Find a gap large enough for this tile.\n const 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 /** Finds the next available space large enough to fit the tile. */\n _findMatchingGap(tileCols) {\n if (tileCols > this.tracker.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`mat-grid-list: tile with colspan ${tileCols} is wider than ` + `grid with cols=\"${this.tracker.length}\".`);\n }\n // Start index is inclusive, end index is exclusive.\n let gapStartIndex = -1;\n let 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 gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\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 gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\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. Since gapEndIndex is\n // exclusive, gapEndIndex is 0 means we didn't find a gap and should continue.\n } while (gapEndIndex - gapStartIndex < tileCols || gapEndIndex == 0);\n // If we still didn't manage to find a gap, ensure that the index is\n // at least zero so the tile doesn't get pulled out of the grid.\n return Math.max(gapStartIndex, 0);\n }\n /** Move \"down\" to the next row. */\n _nextRow() {\n this.columnIndex = 0;\n this.rowIndex++;\n // Decrement all spaces by one to reflect moving down one row.\n for (let 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 */\n _findGapEndIndex(gapStartIndex) {\n for (let 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 /** Update the tile tracker to account for the given tile in the given space. */\n _markTilePosition(start, tile) {\n for (let i = 0; i < tile.colspan; i++) {\n this.tracker[start + i] = tile.rowspan;\n }\n }\n}\n/**\n * Simple data structure for tile position (row, col).\n * @docs-private\n */\nclass TilePosition {\n constructor(row, col) {\n this.row = row;\n this.col = col;\n }\n}\n\n/**\n * Injection token used to provide a grid list to a tile and to avoid circular imports.\n * @docs-private\n */\nconst MAT_GRID_LIST = /*#__PURE__*/new InjectionToken('MAT_GRID_LIST');\nlet MatGridTile = /*#__PURE__*/(() => {\n class MatGridTile {\n constructor(_element, _gridList) {\n this._element = _element;\n this._gridList = _gridList;\n this._rowspan = 1;\n this._colspan = 1;\n }\n /** Amount of rows that the grid tile takes up. */\n get rowspan() {\n return this._rowspan;\n }\n set rowspan(value) {\n this._rowspan = Math.round(coerceNumberProperty(value));\n }\n /** Amount of columns that the grid tile takes up. */\n get colspan() {\n return this._colspan;\n }\n set colspan(value) {\n this._colspan = Math.round(coerceNumberProperty(value));\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 */\n _setStyle(property, value) {\n this._element.nativeElement.style[property] = value;\n }\n static {\n this.ɵfac = function MatGridTile_Factory(t) {\n return new (t || MatGridTile)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(MAT_GRID_LIST, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatGridTile,\n selectors: [[\"mat-grid-tile\"]],\n hostAttrs: [1, \"mat-grid-tile\"],\n hostVars: 2,\n hostBindings: function MatGridTile_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"rowspan\", ctx.rowspan)(\"colspan\", ctx.colspan);\n }\n },\n inputs: {\n rowspan: \"rowspan\",\n colspan: \"colspan\"\n },\n exportAs: [\"matGridTile\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 2,\n vars: 0,\n consts: [[1, \"mat-grid-tile-content\"]],\n template: function MatGridTile_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementEnd();\n }\n },\n styles: [\".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-grid-tile-header,.mat-grid-tile .mat-grid-tile-footer{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-header>*,.mat-grid-tile .mat-grid-tile-footer>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-tile-header.mat-2-line,.mat-grid-tile .mat-grid-tile-footer.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:normal;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}.mat-grid-tile-header{font-size:var(--mat-grid-list-tile-header-primary-text-size)}.mat-grid-tile-header .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-grid-tile-header .mat-line:nth-child(n+2){font-size:var(--mat-grid-list-tile-header-secondary-text-size)}.mat-grid-tile-footer{font-size:var(--mat-grid-list-tile-footer-primary-text-size)}.mat-grid-tile-footer .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-grid-tile-footer .mat-line:nth-child(n+2){font-size:var(--mat-grid-list-tile-footer-secondary-text-size)}.mat-grid-tile-content{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatGridTile;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatGridTileText = /*#__PURE__*/(() => {\n class MatGridTileText {\n constructor(_element) {\n this._element = _element;\n }\n ngAfterContentInit() {\n setLines(this._lines, this._element);\n }\n static {\n this.ɵfac = function MatGridTileText_Factory(t) {\n return new (t || MatGridTileText)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatGridTileText,\n selectors: [[\"mat-grid-tile-header\"], [\"mat-grid-tile-footer\"]],\n contentQueries: function MatGridTileText_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatLine, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._lines = _t);\n }\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c2,\n decls: 4,\n vars: 0,\n consts: [[1, \"mat-grid-list-text\"]],\n template: function MatGridTileText_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵprojection(0);\n i0.ɵɵelementStart(1, \"div\", 0);\n i0.ɵɵprojection(2, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(3, 2);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatGridTileText;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\nlet MatGridAvatarCssMatStyler = /*#__PURE__*/(() => {\n class MatGridAvatarCssMatStyler {\n static {\n this.ɵfac = function MatGridAvatarCssMatStyler_Factory(t) {\n return new (t || MatGridAvatarCssMatStyler)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatGridAvatarCssMatStyler,\n selectors: [[\"\", \"mat-grid-avatar\", \"\"], [\"\", \"matGridAvatar\", \"\"]],\n hostAttrs: [1, \"mat-grid-avatar\"],\n standalone: true\n });\n }\n }\n return MatGridAvatarCssMatStyler;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\nlet MatGridTileHeaderCssMatStyler = /*#__PURE__*/(() => {\n class MatGridTileHeaderCssMatStyler {\n static {\n this.ɵfac = function MatGridTileHeaderCssMatStyler_Factory(t) {\n return new (t || MatGridTileHeaderCssMatStyler)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatGridTileHeaderCssMatStyler,\n selectors: [[\"mat-grid-tile-header\"]],\n hostAttrs: [1, \"mat-grid-tile-header\"],\n standalone: true\n });\n }\n }\n return MatGridTileHeaderCssMatStyler;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\nlet MatGridTileFooterCssMatStyler = /*#__PURE__*/(() => {\n class MatGridTileFooterCssMatStyler {\n static {\n this.ɵfac = function MatGridTileFooterCssMatStyler_Factory(t) {\n return new (t || MatGridTileFooterCssMatStyler)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatGridTileFooterCssMatStyler,\n selectors: [[\"mat-grid-tile-footer\"]],\n hostAttrs: [1, \"mat-grid-tile-footer\"],\n standalone: true\n });\n }\n }\n return MatGridTileFooterCssMatStyler;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * RegExp that can be used to check whether a value will\n * be allowed inside a CSS `calc()` expression.\n */\nconst cssCalcAllowedValue = /^-?\\d+((\\.\\d+)?[A-Za-z%$]?)+$/;\n/**\n * Sets the style properties for an individual tile, given the position calculated by the\n * Tile Coordinator.\n * @docs-private\n */\nclass TileStyler {\n constructor() {\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 */\n init(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 getBaseTileSize(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 offset Number of tiles that have already been rendered in the row/column.\n * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @return Position of the tile as a CSS calc() expression.\n */\n getTilePosition(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 getTileSize(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 */\n setStyle(tile, rowIndex, colIndex) {\n // Percent of the available horizontal space that one column takes up.\n let 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 let gutterWidthFractionPerTile = (this._cols - 1) / this._cols;\n this.setColStyles(tile, colIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n this.setRowStyles(tile, rowIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n }\n /** Sets the horizontal placement of the tile in the list. */\n setColStyles(tile, colIndex, percentWidth, gutterWidth) {\n // Base horizontal size of a column.\n let 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 let side = this._direction === 'rtl' ? 'right' : 'left';\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 */\n getGutterSpan() {\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 */\n getTileSpan(tileHeight) {\n return `${this._rowspan} * ${this.getTileSize(tileHeight, 1)}`;\n }\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 */\n getComputedHeight() {\n return null;\n }\n}\n/**\n * This type of styler is instantiated when the user passes in a fixed row height.\n * Example ``\n * @docs-private\n */\nclass FixedTileStyler extends TileStyler {\n constructor(fixedRowHeight) {\n super();\n this.fixedRowHeight = fixedRowHeight;\n }\n init(gutterSize, tracker, cols, direction) {\n super.init(gutterSize, tracker, cols, direction);\n this.fixedRowHeight = normalizeUnits(this.fixedRowHeight);\n if (!cssCalcAllowedValue.test(this.fixedRowHeight) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid value \"${this.fixedRowHeight}\" set as rowHeight.`);\n }\n }\n setRowStyles(tile, rowIndex) {\n tile._setStyle('top', this.getTilePosition(this.fixedRowHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(this.fixedRowHeight, tile.rowspan)));\n }\n getComputedHeight() {\n return ['height', calc(`${this.getTileSpan(this.fixedRowHeight)} + ${this.getGutterSpan()}`)];\n }\n reset(list) {\n list._setListStyle(['height', null]);\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\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 */\nclass RatioTileStyler extends TileStyler {\n constructor(value) {\n super();\n this._parseRatio(value);\n }\n setRowStyles(tile, rowIndex, percentWidth, gutterWidth) {\n let 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('marginTop', this.getTilePosition(this.baseTileHeight, rowIndex));\n tile._setStyle('paddingTop', calc(this.getTileSize(this.baseTileHeight, tile.rowspan)));\n }\n getComputedHeight() {\n return ['paddingBottom', calc(`${this.getTileSpan(this.baseTileHeight)} + ${this.getGutterSpan()}`)];\n }\n reset(list) {\n list._setListStyle(['paddingBottom', null]);\n list._tiles.forEach(tile => {\n tile._setStyle('marginTop', null);\n tile._setStyle('paddingTop', null);\n });\n }\n _parseRatio(value) {\n const ratioParts = value.split(':');\n if (ratioParts.length !== 2 && (typeof ngDevMode === 'undefined' || ngDevMode)) {\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}\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 */\nclass FitTileStyler extends TileStyler {\n setRowStyles(tile, rowIndex) {\n // Percent of the available vertical space that one row takes up.\n let percentHeightPerTile = 100 / this._rowspan;\n // Fraction of the horizontal gutter size that each column takes up.\n let gutterHeightPerTile = (this._rows - 1) / this._rows;\n // Base vertical size of a column.\n let 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 reset(list) {\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\n}\n/** Wraps a CSS string in a calc function */\nfunction calc(exp) {\n return `calc(${exp})`;\n}\n/** Appends pixels to a CSS string if no units are given. */\nfunction normalizeUnits(value) {\n return value.match(/([A-Za-z%]+)$/) ? value : `${value}px`;\n}\n\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.\nconst MAT_FIT_MODE = 'fit';\nlet MatGridList = /*#__PURE__*/(() => {\n class MatGridList {\n constructor(_element, _dir) {\n this._element = _element;\n this._dir = _dir;\n /** The amount of space between tiles. This will be something like '5px' or '2em'. */\n this._gutter = '1px';\n }\n /** Amount of columns in the grid list. */\n get cols() {\n return this._cols;\n }\n set cols(value) {\n this._cols = Math.max(1, Math.round(coerceNumberProperty(value)));\n }\n /** Size of the grid list's gutter in pixels. */\n get gutterSize() {\n return this._gutter;\n }\n set gutterSize(value) {\n this._gutter = `${value == null ? '' : value}`;\n }\n /** Set internal representation of row height from the user-provided value. */\n get rowHeight() {\n return this._rowHeight;\n }\n set rowHeight(value) {\n const newValue = `${value == null ? '' : value}`;\n if (newValue !== this._rowHeight) {\n this._rowHeight = newValue;\n this._setTileStyler(this._rowHeight);\n }\n }\n ngOnInit() {\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 */\n ngAfterContentChecked() {\n this._layoutTiles();\n }\n /** Throw a friendly error if cols property is missing */\n _checkCols() {\n if (!this.cols && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`mat-grid-list: must pass in number of columns. ` + `Example: `);\n }\n }\n /** Default to equal width:height if rowHeight property is missing */\n _checkRowHeight() {\n if (!this._rowHeight) {\n this._setTileStyler('1:1');\n }\n }\n /** Creates correct Tile Styler subtype based on rowHeight passed in by user */\n _setTileStyler(rowHeight) {\n if (this._tileStyler) {\n this._tileStyler.reset(this);\n }\n if (rowHeight === MAT_FIT_MODE) {\n this._tileStyler = new FitTileStyler();\n } else if (rowHeight && rowHeight.indexOf(':') > -1) {\n this._tileStyler = new RatioTileStyler(rowHeight);\n } else {\n this._tileStyler = new FixedTileStyler(rowHeight);\n }\n }\n /** Computes and applies the size and position for all children grid tiles. */\n _layoutTiles() {\n if (!this._tileCoordinator) {\n this._tileCoordinator = new TileCoordinator();\n }\n const tracker = this._tileCoordinator;\n const tiles = this._tiles.filter(tile => !tile._gridList || tile._gridList === this);\n const direction = this._dir ? this._dir.value : 'ltr';\n this._tileCoordinator.update(this.cols, tiles);\n this._tileStyler.init(this.gutterSize, tracker, this.cols, direction);\n tiles.forEach((tile, index) => {\n const pos = tracker.positions[index];\n this._tileStyler.setStyle(tile, pos.row, pos.col);\n });\n this._setListStyle(this._tileStyler.getComputedHeight());\n }\n /** Sets style on the main grid-list element, given the style name and value. */\n _setListStyle(style) {\n if (style) {\n this._element.nativeElement.style[style[0]] = style[1];\n }\n }\n static {\n this.ɵfac = function MatGridList_Factory(t) {\n return new (t || MatGridList)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Directionality, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatGridList,\n selectors: [[\"mat-grid-list\"]],\n contentQueries: function MatGridList_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatGridTile, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._tiles = _t);\n }\n },\n hostAttrs: [1, \"mat-grid-list\"],\n hostVars: 1,\n hostBindings: function MatGridList_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"cols\", ctx.cols);\n }\n },\n inputs: {\n cols: \"cols\",\n gutterSize: \"gutterSize\",\n rowHeight: \"rowHeight\"\n },\n exportAs: [\"matGridList\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_GRID_LIST,\n useExisting: MatGridList\n }]), i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 2,\n vars: 0,\n template: function MatGridList_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵprojection(1);\n i0.ɵɵelementEnd();\n }\n },\n styles: [_c3],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatGridList;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatGridListModule = /*#__PURE__*/(() => {\n class MatGridListModule {\n static {\n this.ɵfac = function MatGridListModule_Factory(t) {\n return new (t || MatGridListModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatGridListModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatLineModule, MatCommonModule, MatLineModule, MatCommonModule]\n });\n }\n }\n return MatGridListModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Privately exported for the grid-list harness.\nconst ɵTileCoordinator = TileCoordinator;\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatGridAvatarCssMatStyler, MatGridList, MatGridListModule, MatGridTile, MatGridTileFooterCssMatStyler, MatGridTileHeaderCssMatStyler, MatGridTileText, ɵTileCoordinator };\n"],"mappings":"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","names":["_c0","_c1","_c2","_c3","TileCoordinator","lastRowMax","numColumns","tiles","tile","gapStartIndex","TilePosition","tileCols","gapEndIndex","i","start","row","col","MAT_GRID_LIST","InjectionToken","MatGridTile","_MatGridTile","_element","_gridList","value","coerceNumberProperty","property","t","ɵɵdirectiveInject","ElementRef","ɵɵdefineComponent","rf","ctx","ɵɵattribute","ɵɵStandaloneFeature","ɵɵprojectionDef","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","MatGridTileText","_MatGridTileText","setLines","dirIndex","ɵɵcontentQuery","MatLine","_t","ɵɵqueryRefresh","ɵɵloadQuery","MatGridTileHeaderCssMatStyler","_MatGridTileHeaderCssMatStyler","t","ɵɵdefineDirective","MatGridTileFooterCssMatStyler","_MatGridTileFooterCssMatStyler","cssCalcAllowedValue","TileStyler","gutterSize","tracker","cols","direction","normalizeUnits","sizePercent","gutterFraction","baseSize","offset","calc","span","tile","rowIndex","colIndex","percentWidthPerTile","gutterWidthFractionPerTile","percentWidth","gutterWidth","baseTileWidth","side","tileHeight","FixedTileStyler","fixedRowHeight","list","RatioTileStyler","value","percentHeightPerTile","ratioParts","FitTileStyler","gutterHeightPerTile","baseTileHeight","exp","MAT_FIT_MODE","MatGridList","_MatGridList","_element","_dir","coerceNumberProperty","newValue","rowHeight","TileCoordinator","tiles","index","pos","style","ɵɵdirectiveInject","ElementRef","Directionality","ɵɵdefineComponent","rf","ctx","dirIndex","ɵɵcontentQuery","MatGridTile","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵattribute","ɵɵProvidersFeature","MAT_GRID_LIST","ɵɵStandaloneFeature","_c0","ɵɵprojectionDef","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","_c3","MatGridListModule","_MatGridListModule","ɵɵdefineNgModule","ɵɵdefineInjector","MatLineModule","MatCommonModule"],"x_google_ignoreList":[0]}