Skip to content

Commit 4890989

Browse files
authored
Add support for missing color channels to the protofier (#2366)
1 parent 67fecff commit 4890989

File tree

2 files changed

+32
-57
lines changed

2 files changed

+32
-57
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
selector, regardless of which selector they came from. Previously, this
1111
reordering only applied to pseudo-selectors in the second selector.
1212

13+
### Embedded Sass
14+
15+
* Properly pass missing color channel values to and from custom functions.
16+
1317
## 1.79.4
1418

1519
### JS API

lib/src/embedded/protofier.dart

Lines changed: 28 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@ final class Protofier {
5454
case SassNumber():
5555
result.number = _protofyNumber(value);
5656
case SassColor():
57-
result.color = Value_Color()
58-
..space = value.space.name
59-
..channel1 = value.channel0
60-
..channel2 = value.channel1
61-
..channel3 = value.channel2
62-
..alpha = value.alpha * 1.0;
57+
result.color = Value_Color(
58+
space: value.space.name,
59+
channel1: value.channel0OrNull,
60+
channel2: value.channel1OrNull,
61+
channel3: value.channel2OrNull,
62+
alpha: value.alphaOrNull);
6363
case SassArgumentList():
6464
_argumentLists.add(value);
6565
result.argumentList = Value_ArgumentList()
@@ -178,79 +178,50 @@ final class Protofier {
178178

179179
case Value_Value.color:
180180
var space = ColorSpace.fromName(value.color.space);
181+
var channel1 =
182+
value.color.hasChannel1() ? value.color.channel1 : null;
183+
var channel2 =
184+
value.color.hasChannel2() ? value.color.channel2 : null;
185+
var channel3 =
186+
value.color.hasChannel3() ? value.color.channel3 : null;
187+
var alpha = value.color.hasAlpha() ? value.color.alpha : null;
181188
switch (space) {
182189
case ColorSpace.rgb:
183-
return SassColor.rgb(value.color.channel1, value.color.channel2,
184-
value.color.channel3, value.color.alpha);
190+
return SassColor.rgb(channel1, channel2, channel3, alpha);
185191

186192
case ColorSpace.hsl:
187-
return SassColor.hsl(value.color.channel1, value.color.channel2,
188-
value.color.channel3, value.color.alpha);
193+
return SassColor.hsl(channel1, channel2, channel3, alpha);
189194

190195
case ColorSpace.hwb:
191-
return SassColor.hwb(value.color.channel1, value.color.channel2,
192-
value.color.channel3, value.color.alpha);
196+
return SassColor.hwb(channel1, channel2, channel3, alpha);
193197

194198
case ColorSpace.lab:
195-
return SassColor.lab(value.color.channel1, value.color.channel2,
196-
value.color.channel3, value.color.alpha);
199+
return SassColor.lab(channel1, channel2, channel3, alpha);
197200
case ColorSpace.oklab:
198-
return SassColor.oklab(value.color.channel1, value.color.channel2,
199-
value.color.channel3, value.color.alpha);
201+
return SassColor.oklab(channel1, channel2, channel3, alpha);
200202

201203
case ColorSpace.lch:
202-
return SassColor.lch(value.color.channel1, value.color.channel2,
203-
value.color.channel3, value.color.alpha);
204+
return SassColor.lch(channel1, channel2, channel3, alpha);
204205
case ColorSpace.oklch:
205-
return SassColor.oklch(value.color.channel1, value.color.channel2,
206-
value.color.channel3, value.color.alpha);
206+
return SassColor.oklch(channel1, channel2, channel3, alpha);
207207

208208
case ColorSpace.srgb:
209-
return SassColor.srgb(value.color.channel1, value.color.channel2,
210-
value.color.channel3, value.color.alpha);
209+
return SassColor.srgb(channel1, channel2, channel3, alpha);
211210
case ColorSpace.srgbLinear:
212-
return SassColor.srgbLinear(
213-
value.color.channel1,
214-
value.color.channel2,
215-
value.color.channel3,
216-
value.color.alpha);
211+
return SassColor.srgbLinear(channel1, channel2, channel3, alpha);
217212
case ColorSpace.displayP3:
218-
return SassColor.displayP3(
219-
value.color.channel1,
220-
value.color.channel2,
221-
value.color.channel3,
222-
value.color.alpha);
213+
return SassColor.displayP3(channel1, channel2, channel3, alpha);
223214
case ColorSpace.a98Rgb:
224-
return SassColor.a98Rgb(
225-
value.color.channel1,
226-
value.color.channel2,
227-
value.color.channel3,
228-
value.color.alpha);
215+
return SassColor.a98Rgb(channel1, channel2, channel3, alpha);
229216
case ColorSpace.prophotoRgb:
230-
return SassColor.prophotoRgb(
231-
value.color.channel1,
232-
value.color.channel2,
233-
value.color.channel3,
234-
value.color.alpha);
217+
return SassColor.prophotoRgb(channel1, channel2, channel3, alpha);
235218
case ColorSpace.rec2020:
236-
return SassColor.rec2020(
237-
value.color.channel1,
238-
value.color.channel2,
239-
value.color.channel3,
240-
value.color.alpha);
219+
return SassColor.rec2020(channel1, channel2, channel3, alpha);
241220

242221
case ColorSpace.xyzD50:
243-
return SassColor.xyzD50(
244-
value.color.channel1,
245-
value.color.channel2,
246-
value.color.channel3,
247-
value.color.alpha);
222+
return SassColor.xyzD50(channel1, channel2, channel3, alpha);
248223
case ColorSpace.xyzD65:
249-
return SassColor.xyzD65(
250-
value.color.channel1,
251-
value.color.channel2,
252-
value.color.channel3,
253-
value.color.alpha);
224+
return SassColor.xyzD65(channel1, channel2, channel3, alpha);
254225

255226
default:
256227
throw "Unreachable";

0 commit comments

Comments
 (0)