summaryrefslogtreecommitdiff
path: root/node_modules/autoprefixer/lib/hacks/intrinsic.js
diff options
context:
space:
mode:
authorPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:54:57 +0100
committerPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:57:48 +0100
commitb1e2c8fd5cb5dfa46bc440a12eafaf56cd844b1c (patch)
tree49d360fd6cbc6a2754efe93524ac47ff0fbe0f7d /node_modules/autoprefixer/lib/hacks/intrinsic.js
Docs
Diffstat (limited to 'node_modules/autoprefixer/lib/hacks/intrinsic.js')
-rw-r--r--node_modules/autoprefixer/lib/hacks/intrinsic.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/node_modules/autoprefixer/lib/hacks/intrinsic.js b/node_modules/autoprefixer/lib/hacks/intrinsic.js
new file mode 100644
index 0000000..7c5bb50
--- /dev/null
+++ b/node_modules/autoprefixer/lib/hacks/intrinsic.js
@@ -0,0 +1,61 @@
+let OldValue = require('../old-value')
+let Value = require('../value')
+
+function regexp(name) {
+ return new RegExp(`(^|[\\s,(])(${name}($|[\\s),]))`, 'gi')
+}
+
+class Intrinsic extends Value {
+ add(decl, prefix) {
+ if (decl.prop.includes('grid') && prefix !== '-webkit-') {
+ return undefined
+ }
+ return super.add(decl, prefix)
+ }
+
+ isStretch() {
+ return (
+ this.name === 'stretch' ||
+ this.name === 'fill' ||
+ this.name === 'fill-available'
+ )
+ }
+
+ 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))
+ }
+
+ regexp() {
+ if (!this.regexpCache) this.regexpCache = regexp(this.name)
+ return this.regexpCache
+ }
+
+ 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)
+ }
+}
+
+Intrinsic.names = [
+ 'max-content',
+ 'min-content',
+ 'fit-content',
+ 'fill',
+ 'fill-available',
+ 'stretch'
+]
+
+module.exports = Intrinsic