70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
| 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
 |