70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
let Declaration = require('../declaration')
 | 
						|
let {
 | 
						|
  getGridGap,
 | 
						|
  inheritGridGap,
 | 
						|
  parseTemplate,
 | 
						|
  warnGridGap,
 | 
						|
  warnMissedAreas
 | 
						|
} = 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 { 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
 |