123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- let Declaration = require('../declaration')
- let {
- parseTemplate,
- warnMissedAreas,
- getGridGap,
- warnGridGap,
- inheritGridGap
- } = require('./grid-utils')
- class GridTemplate extends Declaration {
- /**
- * Translate grid-template to separate -ms- prefixed properties
- */
- 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)
- /**
- * we must insert inherited gap values in some cases:
- * if we are inside media query && if we have no grid-gap value
- */
- let inheritedGap = inheritGridGap(decl, gap)
- let { rows, columns, areas } = parseTemplate({
- decl,
- gap: inheritedGap || gap
- })
- let hasAreas = Object.keys(areas).length > 0
- let hasRows = Boolean(rows)
- let hasColumns = Boolean(columns)
- warnGridGap({
- gap,
- hasColumns,
- decl,
- result
- })
- warnMissedAreas(areas, decl, result)
- if ((hasRows && hasColumns) || hasAreas) {
- decl.cloneBefore({
- prop: '-ms-grid-rows',
- value: rows,
- raws: {}
- })
- }
- if (hasColumns) {
- decl.cloneBefore({
- prop: '-ms-grid-columns',
- value: columns,
- raws: {}
- })
- }
- return decl
- }
- }
- GridTemplate.names = ['grid-template']
- module.exports = GridTemplate
|