| let Declaration = require('../declaration') |
| let { |
| getGridGap, |
| inheritGridGap, |
| parseTemplate, |
| warnGridGap, |
| warnMissedAreas |
| } = require('./grid-utils') |
|
|
| class GridTemplate extends Declaration { |
| |
| |
| |
| insert(decl, prefix, prefixes, result) { |
| if (prefix !== '-ms-') return super.insert(decl, prefix, prefixes) |
|
|
| if (decl.parent.some(i => i.prop === '-ms-grid-rows')) { |
| return undefined |
| } |
|
|
| let gap = getGridGap(decl) |
|
|
| |
| |
| |
| |
| let inheritedGap = inheritGridGap(decl, gap) |
|
|
| let { areas, columns, rows } = parseTemplate({ |
| decl, |
| gap: inheritedGap || gap |
| }) |
|
|
| let hasAreas = Object.keys(areas).length > 0 |
| let hasRows = Boolean(rows) |
| let hasColumns = Boolean(columns) |
|
|
| warnGridGap({ |
| decl, |
| gap, |
| hasColumns, |
| result |
| }) |
|
|
| warnMissedAreas(areas, decl, result) |
|
|
| if ((hasRows && hasColumns) || hasAreas) { |
| decl.cloneBefore({ |
| prop: '-ms-grid-rows', |
| raws: {}, |
| value: rows |
| }) |
| } |
|
|
| if (hasColumns) { |
| decl.cloneBefore({ |
| prop: '-ms-grid-columns', |
| raws: {}, |
| value: columns |
| }) |
| } |
|
|
| return decl |
| } |
| } |
|
|
| GridTemplate.names = ['grid-template'] |
|
|
| module.exports = GridTemplate |
|
|