diff options
Diffstat (limited to 'src/_harmony.scss')
-rw-r--r-- | src/_harmony.scss | 65 |
1 files changed, 33 insertions, 32 deletions
diff --git a/src/_harmony.scss b/src/_harmony.scss index aaab726..c0cb772 100644 --- a/src/_harmony.scss +++ b/src/_harmony.scss | |||
@@ -8,7 +8,10 @@ | |||
8 | /// @access public | 8 | /// @access public |
9 | //// | 9 | //// |
10 | 10 | ||
11 | @use 'sass:list'; | ||
12 | @use 'sass:map'; | ||
11 | @use 'sass:math'; | 13 | @use 'sass:math'; |
14 | @use 'sass:meta'; | ||
12 | @use './functions'; | 15 | @use './functions'; |
13 | @use './responsive'; | 16 | @use './responsive'; |
14 | 17 | ||
@@ -26,35 +29,35 @@ | |||
26 | /// @return {number} | 29 | /// @return {number} |
27 | /// | 30 | /// |
28 | @function modular-scale($times, $base, $ratio) { | 31 | @function modular-scale($times, $base, $ratio) { |
29 | @if type-of($base) == number { | 32 | @if meta.type-of($base) == number { |
30 | @return $base * math.pow($ratio, $times); | 33 | @return $base * math.pow($ratio, $times); |
31 | } | 34 | } |
32 | 35 | ||
33 | $main-base: nth($base, 1); | 36 | $main-base: list.nth($base, 1); |
34 | $norm-bases: (); | 37 | $norm-bases: (); |
35 | 38 | ||
36 | @each $b in functions.list-slice($base, 2) { | 39 | @each $b in functions.list-slice($base, 2) { |
37 | @if $b > $main-base { | 40 | @if $b > $main-base { |
38 | @while $b > $main-base { | 41 | @while $b > $main-base { |
39 | $b: math.div($b, $ratio); | 42 | $b: math.div($b, $ratio); |
40 | } | 43 | } |
41 | $b: $b * $ratio; | 44 | $b: $b * $ratio; |
42 | } @else if $b < $main-base { | 45 | } @else if $b < $main-base { |
43 | @while $b < $main-base { | 46 | @while $b < $main-base { |
44 | $b: $b * $ratio; | 47 | $b: $b * $ratio; |
45 | } | 48 | } |
46 | } | 49 | } |
47 | 50 | ||
48 | $norm-bases: append($norm-bases, $b); | 51 | $norm-bases: list.append($norm-bases, $b); |
49 | } | 52 | } |
50 | 53 | ||
51 | $all-bases: append($norm-bases, $main-base); | 54 | $all-bases: list.append($norm-bases, $main-base); |
52 | $all-bases: functions.quicksort($all-bases); | 55 | $all-bases: functions.quicksort($all-bases); |
53 | 56 | ||
54 | $base-index: $times % length($all-bases) + 1; | 57 | $base-index: $times % list.length($all-bases) + 1; |
55 | $exp: math.floor(math.div($times, length($all-bases))); | 58 | $exp: math.floor(math.div($times, list.length($all-bases))); |
56 | 59 | ||
57 | @return nth($all-bases, $base-index) * math.pow($ratio, $exp); | 60 | @return list.nth($all-bases, $base-index) * math.pow($ratio, $exp); |
58 | } | 61 | } |
59 | 62 | ||
60 | /// | 63 | /// |
@@ -86,15 +89,13 @@ | |||
86 | /// } | 89 | /// } |
87 | /// | 90 | /// |
88 | @mixin responsive-modular-scale($props, $times, $responsive-map, $fluid: true) { | 91 | @mixin responsive-modular-scale($props, $times, $responsive-map, $fluid: true) { |
89 | $new-map: (); | 92 | $new-map: (); |
90 | 93 | ||
91 | @each $key, $value in $responsive-map { | 94 | @each $key, $value in $responsive-map { |
92 | $new-map: map-merge( | 95 | $new-map: map.merge($new-map, ( |
93 | $new-map, ( | 96 | $key: modular-scale($times, $value...) |
94 | $key: modular-scale($times, $value...) | 97 | )); |
95 | ) | 98 | } |
96 | ); | ||
97 | } | ||
98 | 99 | ||
99 | @include responsive.property($props, $new-map, $fluid); | 100 | @include responsive.property($props, $new-map, $fluid); |
100 | } | 101 | } |