MCPcopy
hub / github.com/postcss/autoprefixer / insertAreas

Function insertAreas

lib/hacks/grid-utils.js:499–740  ·  view source on GitHub ↗
(css, isDisabled)

Source from the content-addressed store, hash-verified

497exports.insertAreas = insertAreas
498
499function insertAreas(css, isDisabled) {
500 // parse grid-template declarations
501 let gridTemplatesData = parseGridTemplatesData(css)
502
503 // return undefined if no declarations found
504 if (gridTemplatesData.length === 0) {
505 return undefined
506 }
507
508 // we need to store the rules that we will insert later
509 let rulesToInsert = {}
510 let previousGridAreas = []
511
512 css.walkDecls('grid-area', gridArea => {
513 let gridAreaRule = gridArea.parent
514 let hasPrefixedRow = gridAreaRule.first.prop === '-ms-grid-row'
515 let gridAreaMedia = getParentMedia(gridAreaRule)
516
517 if (isDisabled(gridArea)) {
518 return undefined
519 }
520
521 let gridAreaRuleIndex = css.index(gridAreaMedia || gridAreaRule)
522
523 let value = gridArea.value
524 // found the data that matches grid-area identifier
525 let data = gridTemplatesData.filter(d => d.allAreas.includes(value))[0]
526
527 if (!data) {
528 return true
529 }
530
531 let lastArea = data.allAreas[data.allAreas.length - 1]
532 let selectorBySpace = list.space(gridAreaRule.selector)
533 let selectorByComma = list.comma(gridAreaRule.selector)
534 let selectorIsComplex =
535 selectorBySpace.length > 1 &&
536 selectorBySpace.length > selectorByComma.length
537
538 // prevent doubling of prefixes
539 if (hasPrefixedRow) {
540 return false
541 }
542
543 function shouldResetSpan(rule, area, dimension) {
544 return previousGridAreas.some(previous => {
545 if (previous.data !== data) {
546 return false
547 }
548 if (!selectorsMayOverlap(previous.selectors, gridAreaRule.selectors)) {
549 return false
550 }
551
552 let previousArea = rule.areas[previous.value]
553 return previousArea && previousArea[dimension].span > area[dimension].span
554 })
555 }
556

Callers 1

addMethod · 0.85

Calls 7

parseGridTemplatesDataFunction · 0.85
getParentMediaFunction · 0.85
shouldResetSpanFunction · 0.85
getMSDeclsFunction · 0.85
cloneMethod · 0.45
removeMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…