sass-embedded 1.6.2 → 1.83.1

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.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -3
  3. data/exe/sass +13 -0
  4. data/ext/sass/Rakefile +352 -76
  5. data/ext/sass/embedded_sass_pb.rb +61 -0
  6. data/ext/sass/expand-archive.ps1 +1 -0
  7. data/ext/sass/package.json +1 -1
  8. data/lib/sass/calculation_value/calculation_operation.rb +49 -0
  9. data/lib/sass/calculation_value.rb +22 -0
  10. data/lib/sass/canonicalize_context.rb +25 -0
  11. data/lib/sass/compile_result.rb +3 -2
  12. data/lib/sass/compiler/channel.rb +68 -0
  13. data/lib/sass/compiler/connection.rb +89 -0
  14. data/lib/sass/compiler/dispatcher.rb +116 -0
  15. data/lib/sass/{embedded → compiler}/host/function_registry.rb +31 -34
  16. data/lib/sass/compiler/host/importer_registry.rb +141 -0
  17. data/lib/sass/compiler/host/logger_registry.rb +80 -0
  18. data/lib/sass/compiler/host/protofier.rb +360 -0
  19. data/lib/sass/compiler/host/structifier.rb +37 -0
  20. data/lib/sass/compiler/host.rb +226 -0
  21. data/lib/sass/{embedded → compiler}/varint.rb +9 -5
  22. data/lib/sass/compiler.rb +212 -0
  23. data/lib/sass/elf.rb +222 -0
  24. data/lib/sass/embedded/version.rb +2 -2
  25. data/lib/sass/embedded.rb +76 -204
  26. data/lib/sass/embedded_protocol.rb +10 -0
  27. data/lib/sass/exception.rb +74 -0
  28. data/lib/sass/fork_tracker.rb +51 -0
  29. data/lib/sass/logger/silent.rb +5 -3
  30. data/lib/sass/logger/source_location.rb +6 -5
  31. data/lib/sass/logger/source_span.rb +8 -7
  32. data/lib/sass/node_package_importer.rb +17 -0
  33. data/lib/sass/serializer.rb +30 -0
  34. data/lib/sass/value/argument_list.rb +13 -6
  35. data/lib/sass/value/boolean.rb +1 -1
  36. data/lib/sass/value/calculation.rb +90 -0
  37. data/lib/sass/value/color/channel.rb +79 -0
  38. data/lib/sass/value/color/conversions.rb +473 -0
  39. data/lib/sass/value/color/gamut_map_method/clip.rb +45 -0
  40. data/lib/sass/value/color/gamut_map_method/local_minde.rb +94 -0
  41. data/lib/sass/value/color/gamut_map_method.rb +45 -0
  42. data/lib/sass/value/color/interpolation_method.rb +51 -0
  43. data/lib/sass/value/color/space/a98_rgb.rb +57 -0
  44. data/lib/sass/value/color/space/display_p3.rb +57 -0
  45. data/lib/sass/value/color/space/hsl.rb +65 -0
  46. data/lib/sass/value/color/space/hwb.rb +70 -0
  47. data/lib/sass/value/color/space/lab.rb +77 -0
  48. data/lib/sass/value/color/space/lch.rb +53 -0
  49. data/lib/sass/value/color/space/lms.rb +129 -0
  50. data/lib/sass/value/color/space/oklab.rb +66 -0
  51. data/lib/sass/value/color/space/oklch.rb +54 -0
  52. data/lib/sass/value/color/space/prophoto_rgb.rb +59 -0
  53. data/lib/sass/value/color/space/rec2020.rb +69 -0
  54. data/lib/sass/value/color/space/rgb.rb +52 -0
  55. data/lib/sass/value/color/space/srgb.rb +140 -0
  56. data/lib/sass/value/color/space/srgb_linear.rb +72 -0
  57. data/lib/sass/value/color/space/utils.rb +86 -0
  58. data/lib/sass/value/color/space/xyz_d50.rb +100 -0
  59. data/lib/sass/value/color/space/xyz_d65.rb +57 -0
  60. data/lib/sass/value/color/space.rb +198 -0
  61. data/lib/sass/value/color.rb +538 -163
  62. data/lib/sass/value/function.rb +11 -16
  63. data/lib/sass/value/fuzzy_math.rb +24 -21
  64. data/lib/sass/value/list.rb +7 -7
  65. data/lib/sass/value/map.rb +6 -6
  66. data/lib/sass/value/mixin.rb +34 -0
  67. data/lib/sass/value/null.rb +1 -1
  68. data/lib/sass/value/number/unit.rb +7 -6
  69. data/lib/sass/value/number.rb +34 -26
  70. data/lib/sass/value/string.rb +9 -3
  71. data/lib/sass/value.rb +20 -16
  72. metadata +67 -103
  73. data/ext/sass/unzip.vbs +0 -13
  74. data/lib/sass/compile_error.rb +0 -28
  75. data/lib/sass/embedded/async.rb +0 -65
  76. data/lib/sass/embedded/channel.rb +0 -61
  77. data/lib/sass/embedded/compiler.rb +0 -60
  78. data/lib/sass/embedded/dispatcher.rb +0 -90
  79. data/lib/sass/embedded/host/importer_registry.rb +0 -107
  80. data/lib/sass/embedded/host/logger_registry.rb +0 -50
  81. data/lib/sass/embedded/host/value_protofier.rb +0 -241
  82. data/lib/sass/embedded/host.rb +0 -139
  83. data/lib/sass/embedded/protofier.rb +0 -78
  84. data/lib/sass/embedded/structifier.rb +0 -36
  85. data/lib/sass/script_error.rb +0 -6
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sass
4
+ module Value
5
+ class Color
6
+ module Space
7
+ # @see https://github.com/sass/dart-sass/blob/main/lib/src/value/color/space/xyz_d65.dart
8
+ class XyzD65
9
+ include Space
10
+
11
+ def bounded?
12
+ false
13
+ end
14
+
15
+ def initialize
16
+ super('xyz', Utils::XYZ_CHANNELS)
17
+ end
18
+
19
+ def to_linear(channel)
20
+ channel
21
+ end
22
+
23
+ def from_linear(channel)
24
+ channel
25
+ end
26
+
27
+ private
28
+
29
+ def transformation_matrix(dest)
30
+ case dest
31
+ when A98_RGB
32
+ Conversions::XYZ_D65_TO_LINEAR_A98_RGB
33
+ when DISPLAY_P3
34
+ Conversions::XYZ_D65_TO_LINEAR_DISPLAY_P3
35
+ when LMS
36
+ Conversions::XYZ_D65_TO_LMS
37
+ when PROPHOTO_RGB
38
+ Conversions::XYZ_D65_TO_LINEAR_PROPHOTO_RGB
39
+ when REC2020
40
+ Conversions::XYZ_D65_TO_LINEAR_REC2020
41
+ when RGB, SRGB, SRGB_LINEAR
42
+ Conversions::XYZ_D65_TO_LINEAR_SRGB
43
+ when XYZ_D50
44
+ Conversions::XYZ_D65_TO_XYZ_D50
45
+ else
46
+ super
47
+ end
48
+ end
49
+ end
50
+
51
+ private_constant :XyzD65
52
+
53
+ XYZ_D65 = XyzD65.new
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,198 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sass
4
+ module Value
5
+ class Color
6
+ # @see https://github.com/sass/dart-sass/blob/main/lib/src/value/color/space.dart
7
+ module Space
8
+ # @return [::String]
9
+ attr_reader :name
10
+
11
+ # @return [Array<ColorChannel>]
12
+ attr_reader :channels
13
+
14
+ # @return [::Boolean]
15
+ def bounded?
16
+ raise NotImplementedError
17
+ end
18
+
19
+ # @return [::Boolean]
20
+ def legacy?
21
+ false
22
+ end
23
+
24
+ # @return [::Boolean]
25
+ def polar?
26
+ false
27
+ end
28
+
29
+ # @param name [::String]
30
+ # @param channels [Array<ColorChannel>]
31
+ def initialize(name, channels)
32
+ @name = name
33
+ @channels = channels
34
+ end
35
+
36
+ class << self
37
+ # @param name [::String]
38
+ # @param argument_name [::String]
39
+ # @return [Space]
40
+ def from_name(name, argument_name = nil)
41
+ case name.downcase
42
+ when 'rgb'
43
+ RGB
44
+ when 'hwb'
45
+ HWB
46
+ when 'hsl'
47
+ HSL
48
+ when 'srgb'
49
+ SRGB
50
+ when 'srgb-linear'
51
+ SRGB_LINEAR
52
+ when 'display-p3'
53
+ DISPLAY_P3
54
+ when 'a98-rgb'
55
+ A98_RGB
56
+ when 'prophoto-rgb'
57
+ PROPHOTO_RGB
58
+ when 'rec2020'
59
+ REC2020
60
+ when 'xyz', 'xyz-d65'
61
+ XYZ_D65
62
+ when 'xyz-d50'
63
+ XYZ_D50
64
+ when 'lab'
65
+ LAB
66
+ when 'lch'
67
+ LCH
68
+ when 'oklab'
69
+ OKLAB
70
+ when 'oklch'
71
+ OKLCH
72
+ else
73
+ raise Sass::ScriptError.new("Unknown color space \"#{name}\".", argument_name)
74
+ end
75
+ end
76
+ end
77
+
78
+ # @param dest [Space]
79
+ # @param channel0 [Numeric]
80
+ # @param channel1 [Numeric]
81
+ # @param channel2 [Numeric]
82
+ # @param alpha [Numeric]
83
+ # @return [Color]
84
+ def convert(dest, channel0, channel1, channel2, alpha)
85
+ convert_linear(dest, channel0, channel1, channel2, alpha)
86
+ end
87
+
88
+ protected
89
+
90
+ def convert_linear(dest, red, green, blue, alpha,
91
+ missing_lightness: false,
92
+ missing_chroma: false,
93
+ missing_hue: false,
94
+ missing_a: false,
95
+ missing_b: false)
96
+ linear_dest = case dest
97
+ when HSL, HWB
98
+ SRGB
99
+ when LAB, LCH
100
+ XYZ_D50
101
+ when OKLAB, OKLCH
102
+ LMS
103
+ else
104
+ dest
105
+ end
106
+ if linear_dest == self
107
+ transformed_red = red
108
+ transformed_green = green
109
+ transformed_blue = blue
110
+ else
111
+ linear_red = to_linear(red.nil? ? 0 : red)
112
+ linear_green = to_linear(green.nil? ? 0 : green)
113
+ linear_blue = to_linear(blue.nil? ? 0 : blue)
114
+ matrix = transformation_matrix(linear_dest)
115
+
116
+ # (matrix * [linear_red, linear_green, linear_blue]).map(linear_dest.from_linear)
117
+ transformed_red = linear_dest.from_linear((matrix[0] * linear_red) +
118
+ (matrix[1] * linear_green) +
119
+ (matrix[2] * linear_blue))
120
+ transformed_green = linear_dest.from_linear((matrix[3] * linear_red) +
121
+ (matrix[4] * linear_green) +
122
+ (matrix[5] * linear_blue))
123
+ transformed_blue = linear_dest.from_linear((matrix[6] * linear_red) +
124
+ (matrix[7] * linear_green) +
125
+ (matrix[8] * linear_blue))
126
+ end
127
+
128
+ case dest
129
+ when HSL, HWB
130
+ SRGB.convert(dest, transformed_red, transformed_green, transformed_blue, alpha,
131
+ missing_lightness:,
132
+ missing_chroma:,
133
+ missing_hue:)
134
+ when LAB, LCH
135
+ XYZ_D50.convert(dest, transformed_red, transformed_green, transformed_blue, alpha,
136
+ missing_lightness:,
137
+ missing_chroma:,
138
+ missing_hue:,
139
+ missing_a:,
140
+ missing_b:)
141
+ when OKLAB, OKLCH
142
+ LMS.convert(dest, transformed_red, transformed_green, transformed_blue, alpha,
143
+ missing_lightness:,
144
+ missing_chroma:,
145
+ missing_hue:,
146
+ missing_a:,
147
+ missing_b:)
148
+ else
149
+ Color.send(:_for_space,
150
+ dest,
151
+ red.nil? ? nil : transformed_red,
152
+ green.nil? ? nil : transformed_green,
153
+ blue.nil? ? nil : transformed_blue,
154
+ alpha)
155
+ end
156
+ end
157
+
158
+ # @param channel [Numeric]
159
+ # @return [Numeric]
160
+ def to_linear(channel)
161
+ raise NotImplementedError, "[BUG] Color space #{name} doesn't support linear conversions."
162
+ end
163
+
164
+ # @param channel [Numeric]
165
+ # @return [Numeric]
166
+ def from_linear(channel)
167
+ raise NotImplementedError, "[BUG] Color space #{name} doesn't support linear conversions."
168
+ end
169
+
170
+ # @param dest [Space]
171
+ # @return [Array<Numeric>]
172
+ def transformation_matrix(dest)
173
+ raise NotImplementedError, "[BUG] Color space conversion from #{name} to #{dest.name} not implemented."
174
+ end
175
+ end
176
+
177
+ private_constant :Space
178
+ end
179
+ end
180
+ end
181
+
182
+ require_relative 'space/utils'
183
+ require_relative 'space/a98_rgb'
184
+ require_relative 'space/display_p3'
185
+ require_relative 'space/hsl'
186
+ require_relative 'space/hwb'
187
+ require_relative 'space/lab'
188
+ require_relative 'space/lch'
189
+ require_relative 'space/lms'
190
+ require_relative 'space/oklab'
191
+ require_relative 'space/oklch'
192
+ require_relative 'space/prophoto_rgb'
193
+ require_relative 'space/rec2020'
194
+ require_relative 'space/rgb'
195
+ require_relative 'space/srgb'
196
+ require_relative 'space/srgb_linear'
197
+ require_relative 'space/xyz_d50'
198
+ require_relative 'space/xyz_d65'