12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- let OldValue = require('../old-value')
- let Value = require('../value')
- function regexp(name) {
- return new RegExp(`(^|[\\s,(])(${name}($|[\\s),]))`, 'gi')
- }
- class Intrinsic extends Value {
- regexp() {
- if (!this.regexpCache) this.regexpCache = regexp(this.name)
- return this.regexpCache
- }
- isStretch() {
- return (
- this.name === 'stretch' ||
- this.name === 'fill' ||
- this.name === 'fill-available'
- )
- }
- replace(string, prefix) {
- if (prefix === '-moz-' && this.isStretch()) {
- return string.replace(this.regexp(), '$1-moz-available$3')
- }
- if (prefix === '-webkit-' && this.isStretch()) {
- return string.replace(this.regexp(), '$1-webkit-fill-available$3')
- }
- return super.replace(string, prefix)
- }
- old(prefix) {
- let prefixed = prefix + this.name
- if (this.isStretch()) {
- if (prefix === '-moz-') {
- prefixed = '-moz-available'
- } else if (prefix === '-webkit-') {
- prefixed = '-webkit-fill-available'
- }
- }
- return new OldValue(this.name, prefixed, prefixed, regexp(prefixed))
- }
- add(decl, prefix) {
- if (decl.prop.includes('grid') && prefix !== '-webkit-') {
- return undefined
- }
- return super.add(decl, prefix)
- }
- }
- Intrinsic.names = [
- 'max-content',
- 'min-content',
- 'fit-content',
- 'fill',
- 'fill-available',
- 'stretch'
- ]
- module.exports = Intrinsic
|