utility_palettes 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/utility_palettes/swatch.rb +107 -107
- data/lib/utility_palettes/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4e50a9ba1974c7ad508f05d4b60f4d868a160031c36c503df679d3a4db30b258
|
|
4
|
+
data.tar.gz: d828cbc001cc3f2601f0ce9ea6959d35845d60636d8944d32357cc6b979eb1b2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5b65fd127485c342042fe364c6cd06aa337dea97e4b333f194815b4be4b5e4659e9e08f604479fed3100ce35e8a96de1058ce9b512ca77175983a3c01ccc8706
|
|
7
|
+
data.tar.gz: 204720c9fca51a36b5d220eb040a1630e1535663bc807883a53ca5b205fac4e91788f7f5eec48d37bdc8da7423c73cb031fe8b9c339a751dc0f7bd80ecde89d7
|
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# UtilityPalettes
|
|
2
2
|
|
|
3
|
-

|
|
4
4
|
[](https://rubygems.org/gems/utility_palettes)
|
|
5
5
|
|
|
6
6
|
> Generate your own colour palettes in an instance.
|
|
@@ -1,107 +1,107 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module UtilityPalettes
|
|
4
|
-
class Swatch
|
|
5
|
-
# ? Single Colour's Palette
|
|
6
|
-
# a function to create an absolute palette that incorporates a single colour input
|
|
7
|
-
def self.absolute_generator(label, base_colour)
|
|
8
|
-
@method = UtilityPalettes.configuration.method
|
|
9
|
-
|
|
10
|
-
# colours are index inversely to their lightness
|
|
11
|
-
base_level = UtilityPalettes::Swatch.base_lightness_index(base_colour)
|
|
12
|
-
generated_absolute_swatches = { UtilityPalettes::Swatch.label(label, base_level) => base_colour }
|
|
13
|
-
|
|
14
|
-
# TODO: remove once confident the lower loop is equivalent to these
|
|
15
|
-
# # Lighter colours
|
|
16
|
-
# # calc the space available to create lightened colours based off the base colour
|
|
17
|
-
# if base_level.positive?
|
|
18
|
-
# (0..base_level).each do |new_level|
|
|
19
|
-
# new_colour = UtilityPalettes::Swatch.generate(base_colour, base_level, new_level)
|
|
20
|
-
# generated_absolute_swatches = {}.merge(generated_absolute_swatches, { UtilityPalettes::Swatch.label(label, new_level) => new_colour })
|
|
21
|
-
# end
|
|
22
|
-
# end
|
|
23
|
-
|
|
24
|
-
# # Darker colours
|
|
25
|
-
# # calc the space available to create darkened colours based off the base colour
|
|
26
|
-
# if base_level < 9
|
|
27
|
-
# (base_level..9).each do |new_level|
|
|
28
|
-
# new_colour = UtilityPalettes::Swatch.generate(base_colour, base_level, new_level)
|
|
29
|
-
# generated_absolute_swatches = {}.merge(generated_absolute_swatches, { UtilityPalettes::Swatch.label(label, new_level) => new_colour })
|
|
30
|
-
# end
|
|
31
|
-
# end
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
(0..9).each do |new_level|
|
|
35
|
-
new_colour = UtilityPalettes::Swatch.generate(base_colour, base_level, new_level)
|
|
36
|
-
generated_absolute_swatches.merge!({ UtilityPalettes::Swatch.label(label, new_level) => new_colour })
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
generated_absolute_swatches
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# ? Single Colour's Relative Palette
|
|
44
|
-
# a function to create a relative palette centred on a single colour input
|
|
45
|
-
def self.relative_generator(label, base_colour)
|
|
46
|
-
@method = UtilityPalettes.configuration.method
|
|
47
|
-
|
|
48
|
-
lighter_colour = nil
|
|
49
|
-
darker_colour = nil
|
|
50
|
-
|
|
51
|
-
# colours are index inversely to their lightness
|
|
52
|
-
base_level = UtilityPalettes::Swatch.base_lightness_index(base_colour)
|
|
53
|
-
generated_relative_swatches = { label => base_colour }
|
|
54
|
-
|
|
55
|
-
# Lighter Colour
|
|
56
|
-
if base_level > 1
|
|
57
|
-
lighter_colour = UtilityPalettes::Swatch.generate(base_colour, base_level, base_level + 2)
|
|
58
|
-
elsif base_level.positive?
|
|
59
|
-
lighter_colour = UtilityPalettes::Swatch.generate(base_colour, base_level, base_level + 1)
|
|
60
|
-
else
|
|
61
|
-
lighter_colour = base_colour # TODO: should this be differently? but needs to return something for output loop
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# Darker Colour
|
|
65
|
-
if base_level < 8
|
|
66
|
-
darker_colour = UtilityPalettes::Swatch.generate(base_colour, base_level, base_level - 2)
|
|
67
|
-
elsif base_level < 9
|
|
68
|
-
darker_colour = UtilityPalettes::Swatch.generate(base_colour, base_level, base_level - 1)
|
|
69
|
-
else
|
|
70
|
-
darker_colour = base_colour # TODO: should this be differently? but needs to return something for output loop
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
generated_relative_swatches.merge!({ "#{label}-light" => lighter_colour })
|
|
74
|
-
generated_relative_swatches.merge!({ "#{label}-dark" => darker_colour })
|
|
75
|
-
|
|
76
|
-
generated_relative_swatches
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def self.base_lightness_index(colour)
|
|
80
|
-
9 - (colour.hsl[:l] / 10).floor
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
def self.label(label, index)
|
|
84
|
-
levels = { '0' => 50, '1' => 100, '2' => 200, '3' => 300, '4' => 400, '5' => 500, '6' => 600, '7' => 700, '8' => 800, '9' => 900 }
|
|
85
|
-
|
|
86
|
-
[label, levels.dig(index.to_s)].join('-')
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
# TODO: create other sequence methods
|
|
90
|
-
# ? How to Calculate the next colour in the Palette
|
|
91
|
-
def self.generate(colour, base_level, new_level)
|
|
92
|
-
case @method
|
|
93
|
-
when 'hsl'
|
|
94
|
-
UtilityPalettes::Sequences.hsl(colour, new_level - base_level)
|
|
95
|
-
when 'rgb'
|
|
96
|
-
# TODO
|
|
97
|
-
else
|
|
98
|
-
UtilityPalettes::Sequences.hsl(colour, new_level - base_level)
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
def build_step_check
|
|
103
|
-
# const ALL_LEVELS = [50, 100, 200, 300, 400, 600, 700, 800, 900];
|
|
104
|
-
# const levels = options.levels == null ? ALL_LEVELS : options.levels.filter(level => ALL_LEVELS.includes(level));
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module UtilityPalettes
|
|
4
|
+
class Swatch
|
|
5
|
+
# ? Single Colour's Palette
|
|
6
|
+
# a function to create an absolute palette that incorporates a single colour input
|
|
7
|
+
def self.absolute_generator(label, base_colour)
|
|
8
|
+
@method = UtilityPalettes.configuration.method
|
|
9
|
+
|
|
10
|
+
# colours are index inversely to their lightness
|
|
11
|
+
base_level = UtilityPalettes::Swatch.base_lightness_index(base_colour)
|
|
12
|
+
generated_absolute_swatches = { UtilityPalettes::Swatch.label(label, base_level) => base_colour }
|
|
13
|
+
|
|
14
|
+
# TODO: remove once confident the lower loop is equivalent to these
|
|
15
|
+
# # Lighter colours
|
|
16
|
+
# # calc the space available to create lightened colours based off the base colour
|
|
17
|
+
# if base_level.positive?
|
|
18
|
+
# (0..base_level).each do |new_level|
|
|
19
|
+
# new_colour = UtilityPalettes::Swatch.generate(base_colour, base_level, new_level)
|
|
20
|
+
# generated_absolute_swatches = {}.merge(generated_absolute_swatches, { UtilityPalettes::Swatch.label(label, new_level) => new_colour })
|
|
21
|
+
# end
|
|
22
|
+
# end
|
|
23
|
+
|
|
24
|
+
# # Darker colours
|
|
25
|
+
# # calc the space available to create darkened colours based off the base colour
|
|
26
|
+
# if base_level < 9
|
|
27
|
+
# (base_level..9).each do |new_level|
|
|
28
|
+
# new_colour = UtilityPalettes::Swatch.generate(base_colour, base_level, new_level)
|
|
29
|
+
# generated_absolute_swatches = {}.merge(generated_absolute_swatches, { UtilityPalettes::Swatch.label(label, new_level) => new_colour })
|
|
30
|
+
# end
|
|
31
|
+
# end
|
|
32
|
+
|
|
33
|
+
unless base_level.negative?
|
|
34
|
+
(0..9).each do |new_level|
|
|
35
|
+
new_colour = UtilityPalettes::Swatch.generate(base_colour, base_level, new_level)
|
|
36
|
+
generated_absolute_swatches.merge!({ UtilityPalettes::Swatch.label(label, new_level) => new_colour })
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
generated_absolute_swatches
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# ? Single Colour's Relative Palette
|
|
44
|
+
# a function to create a relative palette centred on a single colour input
|
|
45
|
+
def self.relative_generator(label, base_colour)
|
|
46
|
+
@method = UtilityPalettes.configuration.method
|
|
47
|
+
|
|
48
|
+
lighter_colour = nil
|
|
49
|
+
darker_colour = nil
|
|
50
|
+
|
|
51
|
+
# colours are index inversely to their lightness
|
|
52
|
+
base_level = UtilityPalettes::Swatch.base_lightness_index(base_colour)
|
|
53
|
+
generated_relative_swatches = { label => base_colour }
|
|
54
|
+
|
|
55
|
+
# Lighter Colour
|
|
56
|
+
if base_level > 1
|
|
57
|
+
lighter_colour = UtilityPalettes::Swatch.generate(base_colour, base_level, base_level + 2)
|
|
58
|
+
elsif base_level.positive?
|
|
59
|
+
lighter_colour = UtilityPalettes::Swatch.generate(base_colour, base_level, base_level + 1)
|
|
60
|
+
else
|
|
61
|
+
lighter_colour = base_colour # TODO: should this be differently? but needs to return something for output loop
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Darker Colour
|
|
65
|
+
if base_level < 8
|
|
66
|
+
darker_colour = UtilityPalettes::Swatch.generate(base_colour, base_level, base_level - 2)
|
|
67
|
+
elsif base_level < 9
|
|
68
|
+
darker_colour = UtilityPalettes::Swatch.generate(base_colour, base_level, base_level - 1)
|
|
69
|
+
else
|
|
70
|
+
darker_colour = base_colour # TODO: should this be differently? but needs to return something for output loop
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
generated_relative_swatches.merge!({ "#{label}-light" => lighter_colour })
|
|
74
|
+
generated_relative_swatches.merge!({ "#{label}-dark" => darker_colour })
|
|
75
|
+
|
|
76
|
+
generated_relative_swatches
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def self.base_lightness_index(colour)
|
|
80
|
+
9 - (colour.hsl[:l] / 10).floor
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def self.label(label, index)
|
|
84
|
+
levels = { '0' => 50, '1' => 100, '2' => 200, '3' => 300, '4' => 400, '5' => 500, '6' => 600, '7' => 700, '8' => 800, '9' => 900 }
|
|
85
|
+
|
|
86
|
+
[label, levels.dig(index.to_s)].join('-')
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# TODO: create other sequence methods
|
|
90
|
+
# ? How to Calculate the next colour in the Palette
|
|
91
|
+
def self.generate(colour, base_level, new_level)
|
|
92
|
+
case @method
|
|
93
|
+
when 'hsl'
|
|
94
|
+
UtilityPalettes::Sequences.hsl(colour, new_level - base_level)
|
|
95
|
+
when 'rgb'
|
|
96
|
+
# TODO
|
|
97
|
+
else
|
|
98
|
+
UtilityPalettes::Sequences.hsl(colour, new_level - base_level)
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def build_step_check
|
|
103
|
+
# const ALL_LEVELS = [50, 100, 200, 300, 400, 600, 700, 800, 900];
|
|
104
|
+
# const levels = options.levels == null ? ALL_LEVELS : options.levels.filter(level => ALL_LEVELS.includes(level));
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|