Skip to content

Commit d18c223

Browse files
committed
Handle fallbacks for size properties
1 parent 6ab98e1 commit d18c223

File tree

4 files changed

+534
-186
lines changed

4 files changed

+534
-186
lines changed

scripts/build-prefixes.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,15 @@ for (let key in mdn.css.properties['list-style-type']) {
339339
mdnFeatures[feat] = mdn.css.properties['list-style-type'][key].__compat.support;
340340
}
341341

342+
for (let key in mdn.css.properties['width']) {
343+
if (key === '__compat' || key === 'animatable') {
344+
continue;
345+
}
346+
347+
let feat = key[0].toUpperCase() + key.slice(1).replace(/[-_]([a-z])/g, (_, l) => l.toUpperCase()) + 'Size';
348+
mdnFeatures[feat] = mdn.css.properties['width'][key].__compat.support;
349+
}
350+
342351
for (let feature in mdnFeatures) {
343352
let browserMap = {};
344353
for (let name in mdnFeatures[feature]) {

src/compat.rs

Lines changed: 184 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ pub enum Feature {
6262
DoublePositionGradients,
6363
EthiopicNumericListStyleType,
6464
ExUnit,
65+
FillSize,
66+
FitContentFunctionSize,
67+
FitContentSize,
6568
FontFamilySystemUi,
6669
FormValidation,
6770
Fullscreen,
@@ -105,9 +108,11 @@ pub enum Feature {
105108
LowerLatinListStyleType,
106109
LowerRomanListStyleType,
107110
MalayalamListStyleType,
111+
MaxContentSize,
108112
MaxFunction,
109113
MediaIntervalSyntax,
110114
MediaRangeSyntax,
115+
MinContentSize,
111116
MinFunction,
112117
ModFunction,
113118
MongolianListStyleType,
@@ -136,6 +141,7 @@ pub enum Feature {
136141
SimpChineseInformalListStyleType,
137142
SpaceSeparatedColorFunction,
138143
SquareListStyleType,
144+
StretchSize,
139145
StringListStyleType,
140146
SymbolsListStyleType,
141147
TamilListStyleType,
@@ -1505,7 +1511,9 @@ impl Feature {
15051511
return false;
15061512
}
15071513
}
1508-
Feature::CustomMediaQueries | Feature::RlhUnit => return false,
1514+
Feature::CustomMediaQueries | Feature::RlhUnit | Feature::FitContentFunctionSize | Feature::StretchSize => {
1515+
return false
1516+
}
15091517
Feature::DoublePositionGradients => {
15101518
if let Some(version) = browsers.chrome {
15111519
if version < 4653056 {
@@ -4040,6 +4048,181 @@ impl Feature {
40404048
return false;
40414049
}
40424050
}
4051+
Feature::FillSize => {
4052+
if let Some(version) = browsers.chrome {
4053+
if version < 3014656 {
4054+
return false;
4055+
}
4056+
}
4057+
if let Some(version) = browsers.edge {
4058+
if version < 5177344 {
4059+
return false;
4060+
}
4061+
}
4062+
if let Some(version) = browsers.opera {
4063+
if version < 2162688 {
4064+
return false;
4065+
}
4066+
}
4067+
if let Some(version) = browsers.safari {
4068+
if version < 786432 {
4069+
return false;
4070+
}
4071+
}
4072+
if let Some(version) = browsers.ios_saf {
4073+
if version < 786432 {
4074+
return false;
4075+
}
4076+
}
4077+
if let Some(version) = browsers.samsung {
4078+
if version < 327680 {
4079+
return false;
4080+
}
4081+
}
4082+
if let Some(version) = browsers.android {
4083+
if version < 3014656 {
4084+
return false;
4085+
}
4086+
}
4087+
if browsers.firefox.is_some() || browsers.ie.is_some() {
4088+
return false;
4089+
}
4090+
}
4091+
Feature::FitContentSize => {
4092+
if let Some(version) = browsers.chrome {
4093+
if version < 1638400 {
4094+
return false;
4095+
}
4096+
}
4097+
if let Some(version) = browsers.edge {
4098+
if version < 5177344 {
4099+
return false;
4100+
}
4101+
}
4102+
if let Some(version) = browsers.firefox {
4103+
if version < 262144 {
4104+
return false;
4105+
}
4106+
}
4107+
if let Some(version) = browsers.opera {
4108+
if version < 917504 {
4109+
return false;
4110+
}
4111+
}
4112+
if let Some(version) = browsers.safari {
4113+
if version < 458752 {
4114+
return false;
4115+
}
4116+
}
4117+
if let Some(version) = browsers.ios_saf {
4118+
if version < 458752 {
4119+
return false;
4120+
}
4121+
}
4122+
if let Some(version) = browsers.samsung {
4123+
if version < 66816 {
4124+
return false;
4125+
}
4126+
}
4127+
if let Some(version) = browsers.android {
4128+
if version < 263168 {
4129+
return false;
4130+
}
4131+
}
4132+
if browsers.ie.is_some() {
4133+
return false;
4134+
}
4135+
}
4136+
Feature::MaxContentSize => {
4137+
if let Some(version) = browsers.chrome {
4138+
if version < 3014656 {
4139+
return false;
4140+
}
4141+
}
4142+
if let Some(version) = browsers.edge {
4143+
if version < 5177344 {
4144+
return false;
4145+
}
4146+
}
4147+
if let Some(version) = browsers.firefox {
4148+
if version < 262144 {
4149+
return false;
4150+
}
4151+
}
4152+
if let Some(version) = browsers.opera {
4153+
if version < 2818048 {
4154+
return false;
4155+
}
4156+
}
4157+
if let Some(version) = browsers.safari {
4158+
if version < 720896 {
4159+
return false;
4160+
}
4161+
}
4162+
if let Some(version) = browsers.ios_saf {
4163+
if version < 720896 {
4164+
return false;
4165+
}
4166+
}
4167+
if let Some(version) = browsers.samsung {
4168+
if version < 327680 {
4169+
return false;
4170+
}
4171+
}
4172+
if let Some(version) = browsers.android {
4173+
if version < 3014656 {
4174+
return false;
4175+
}
4176+
}
4177+
if browsers.ie.is_some() {
4178+
return false;
4179+
}
4180+
}
4181+
Feature::MinContentSize => {
4182+
if let Some(version) = browsers.chrome {
4183+
if version < 3014656 {
4184+
return false;
4185+
}
4186+
}
4187+
if let Some(version) = browsers.edge {
4188+
if version < 5177344 {
4189+
return false;
4190+
}
4191+
}
4192+
if let Some(version) = browsers.firefox {
4193+
if version < 262144 {
4194+
return false;
4195+
}
4196+
}
4197+
if let Some(version) = browsers.opera {
4198+
if version < 2162688 {
4199+
return false;
4200+
}
4201+
}
4202+
if let Some(version) = browsers.safari {
4203+
if version < 720896 {
4204+
return false;
4205+
}
4206+
}
4207+
if let Some(version) = browsers.ios_saf {
4208+
if version < 720896 {
4209+
return false;
4210+
}
4211+
}
4212+
if let Some(version) = browsers.samsung {
4213+
if version < 327680 {
4214+
return false;
4215+
}
4216+
}
4217+
if let Some(version) = browsers.android {
4218+
if version < 3014656 {
4219+
return false;
4220+
}
4221+
}
4222+
if browsers.ie.is_some() {
4223+
return false;
4224+
}
4225+
}
40434226
Feature::P3Colors | Feature::LangList => {
40444227
if let Some(version) = browsers.safari {
40454228
if version < 655616 {

0 commit comments

Comments
 (0)