(css, isDisabled)
| 497 | exports.insertAreas = insertAreas |
| 498 | |
| 499 | function 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 |
no test coverage detected
searching dependent graphs…