You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.4 KiB
61 lines
1.4 KiB
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
|
|
|