-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
_var.set.mixin.scss
57 lines (53 loc) · 1.94 KB
/
_var.set.mixin.scss
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// Sass.
@use 'sass:list';
// Functions.
@use '../../values/values.combine.function' as *;
@use '../functions/var.get.function';
@use '../functions/var.name.function' as *;
// Modules.
@use '../../meta';
// Mixins.
@use '../../selector/selector.nest-content.mixin';
// Status: TODO: Use property module. Remove `$selector`?
// The `var.set()` mixin defines the CSS variables based on the given `$property`.
// @param `$property` The property or properties of map type to set CSS variables.
// @param `$selector` Selector in which CSS variables are set.
// @param `$function` Function to call on property values of list type.
@mixin set($property, $selector: (), $function: null, $dictionary: ()) {
@if type-of($property) == map {
@include selector.nest-content($selector...) {
@each $name, $variant in $property {
@if type-of($variant) == map {
@each $variant-name, $value in $variant {
@each $name in if(list.separator($name) == comma, $name, ($name,)) {
@if type-of($value) == map {
@each $value-name, $value in $value {
#{name(combine((method: join), $name, $variant-name, $value-name), $dictionary)}: if(
$function,
#{meta.call-arglist($function, $value)},
#{$value}
);
}
} @else {
#{name(combine((method: join), $name, $variant-name), $dictionary)}: if(
$function,
#{meta.call-arglist($function, $value)},
#{$value}
);
}
}
}
} @else {
$value: $variant;
@each $name in if(list.separator($name) == comma, $name, ($name,)) {
#{name($name, $dictionary)}: if(
$function,
#{meta.call-arglist($function, $value)},
#{$value}
);
}
}
}
}
}
}