sass-embedded 1.0.0-beta.4 → 1.0.0-rc.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.
- package/CHANGELOG.md +40 -0
- package/dist/.gitignore +1 -0
- package/dist/lib/index.js +40 -11
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/src/{embedded-compiler/compiler.js → async-compiler.js} +13 -13
- package/dist/lib/src/async-compiler.js.map +1 -0
- package/dist/lib/src/compile.js +187 -85
- package/dist/lib/src/compile.js.map +1 -1
- package/dist/lib/src/compiler-path.js +18 -0
- package/dist/lib/src/compiler-path.js.map +1 -0
- package/dist/lib/src/deprotofy-span.js +51 -0
- package/dist/lib/src/deprotofy-span.js.map +1 -0
- package/dist/lib/src/{embedded-protocol/dispatcher.js → dispatcher.js} +47 -41
- package/dist/lib/src/dispatcher.js.map +1 -0
- package/dist/lib/src/exception.js +20 -0
- package/dist/lib/src/exception.js.map +1 -0
- package/dist/lib/src/function-registry.js +92 -0
- package/dist/lib/src/function-registry.js.map +1 -0
- package/dist/lib/src/importer-registry.js +127 -0
- package/dist/lib/src/importer-registry.js.map +1 -0
- package/dist/lib/src/legacy/importer.js +186 -0
- package/dist/lib/src/legacy/importer.js.map +1 -0
- package/dist/lib/src/legacy/index.js +261 -0
- package/dist/lib/src/legacy/index.js.map +1 -0
- package/dist/lib/src/legacy/resolve-path.js +101 -0
- package/dist/lib/src/legacy/resolve-path.js.map +1 -0
- package/dist/lib/src/legacy/value/base.js +17 -0
- package/dist/lib/src/legacy/value/base.js.map +1 -0
- package/dist/lib/src/legacy/value/color.js +64 -0
- package/dist/lib/src/legacy/value/color.js.map +1 -0
- package/dist/lib/src/legacy/value/index.js +23 -0
- package/dist/lib/src/legacy/value/index.js.map +1 -0
- package/dist/lib/src/legacy/value/list.js +50 -0
- package/dist/lib/src/legacy/value/list.js.map +1 -0
- package/dist/lib/src/legacy/value/map.js +74 -0
- package/dist/lib/src/legacy/value/map.js.map +1 -0
- package/dist/lib/src/legacy/value/number.js +60 -0
- package/dist/lib/src/legacy/value/number.js.map +1 -0
- package/dist/lib/src/legacy/value/string.js +27 -0
- package/dist/lib/src/legacy/value/string.js.map +1 -0
- package/dist/lib/src/legacy/value/wrap.js +83 -0
- package/dist/lib/src/legacy/value/wrap.js.map +1 -0
- package/dist/lib/src/{embedded-protocol/message-transformer.js → message-transformer.js} +11 -10
- package/dist/lib/src/message-transformer.js.map +1 -0
- package/dist/lib/src/{embedded-compiler/packet-transformer.js → packet-transformer.js} +2 -1
- package/dist/lib/src/packet-transformer.js.map +1 -0
- package/dist/lib/src/protofier.js +272 -0
- package/dist/lib/src/protofier.js.map +1 -0
- package/dist/lib/src/{embedded-protocol/request-tracker.js → request-tracker.js} +1 -0
- package/dist/lib/src/request-tracker.js.map +1 -0
- package/dist/lib/src/sync-compiler.js +52 -0
- package/dist/lib/src/sync-compiler.js.map +1 -0
- package/dist/lib/src/{exception/span.js → sync-process/event.js} +2 -2
- package/dist/lib/src/sync-process/event.js.map +1 -0
- package/dist/lib/src/sync-process/index.js +122 -0
- package/dist/lib/src/sync-process/index.js.map +1 -0
- package/dist/lib/src/sync-process/sync-message-port.js +128 -0
- package/dist/lib/src/sync-process/sync-message-port.js.map +1 -0
- package/dist/lib/src/sync-process/worker.js +51 -0
- package/dist/lib/src/sync-process/worker.js.map +1 -0
- package/dist/lib/src/utils.js +96 -1
- package/dist/lib/src/utils.js.map +1 -1
- package/dist/lib/src/value/argument-list.js +31 -0
- package/dist/lib/src/value/argument-list.js.map +1 -0
- package/dist/lib/src/value/boolean.js +22 -5
- package/dist/lib/src/value/boolean.js.map +1 -1
- package/dist/lib/src/value/color.js +258 -0
- package/dist/lib/src/value/color.js.map +1 -0
- package/dist/lib/src/value/function.js +34 -0
- package/dist/lib/src/value/function.js.map +1 -0
- package/dist/lib/src/value/{value.js → index.js} +28 -14
- package/dist/lib/src/value/index.js.map +1 -0
- package/dist/lib/src/value/list.js +99 -0
- package/dist/lib/src/value/list.js.map +1 -0
- package/dist/lib/src/value/map.js +91 -0
- package/dist/lib/src/value/map.js.map +1 -0
- package/dist/lib/src/value/null.js +16 -3
- package/dist/lib/src/value/null.js.map +1 -1
- package/dist/lib/src/value/number.js +41 -46
- package/dist/lib/src/value/number.js.map +1 -1
- package/dist/lib/src/value/string.js +18 -12
- package/dist/lib/src/value/string.js.map +1 -1
- package/dist/lib/src/value/utils.js +27 -2
- package/dist/lib/src/value/utils.js.map +1 -1
- package/dist/lib/src/vendor/embedded-protocol/embedded_sass_pb.js +1395 -101
- package/dist/lib/src/vendor/embedded-protocol/embedded_sass_pb.js.map +1 -1
- package/dist/package.json +23 -20
- package/dist/tool/utils.js +50 -18
- package/dist/tool/utils.js.map +1 -1
- package/dist/types/compile.d.ts +152 -0
- package/dist/types/exception.d.ts +41 -0
- package/dist/types/importer.d.ts +294 -0
- package/dist/types/index.d.ts +80 -0
- package/dist/types/legacy/exception.d.ts +54 -0
- package/dist/types/legacy/function.d.ts +756 -0
- package/dist/types/legacy/importer.d.ts +168 -0
- package/dist/types/legacy/options.d.ts +642 -0
- package/dist/types/legacy/plugin_this.d.ts +73 -0
- package/dist/types/legacy/render.d.ts +139 -0
- package/dist/types/logger/index.d.ts +94 -0
- package/dist/types/logger/source_location.d.ts +21 -0
- package/dist/types/logger/source_span.d.ts +34 -0
- package/dist/types/options.d.ts +418 -0
- package/dist/types/util/promise_or.d.ts +17 -0
- package/dist/types/value/argument_list.d.ts +47 -0
- package/dist/types/value/boolean.d.ts +29 -0
- package/dist/types/value/color.d.ts +107 -0
- package/dist/types/value/function.d.ts +22 -0
- package/dist/types/value/index.d.ts +173 -0
- package/dist/types/value/list.d.ts +54 -0
- package/dist/types/value/map.d.ts +41 -0
- package/dist/types/value/number.d.ts +305 -0
- package/dist/types/value/string.d.ts +84 -0
- package/package.json +23 -20
- package/dist/lib/index.d.ts +0 -7
- package/dist/lib/src/compile.d.ts +0 -20
- package/dist/lib/src/embedded-compiler/compiler.d.ts +0 -19
- package/dist/lib/src/embedded-compiler/compiler.js.map +0 -1
- package/dist/lib/src/embedded-compiler/packet-transformer.d.ts +0 -34
- package/dist/lib/src/embedded-compiler/packet-transformer.js.map +0 -1
- package/dist/lib/src/embedded-protocol/dispatcher.d.ts +0 -60
- package/dist/lib/src/embedded-protocol/dispatcher.js.map +0 -1
- package/dist/lib/src/embedded-protocol/message-transformer.d.ts +0 -47
- package/dist/lib/src/embedded-protocol/message-transformer.js.map +0 -1
- package/dist/lib/src/embedded-protocol/request-tracker.d.ts +0 -20
- package/dist/lib/src/embedded-protocol/request-tracker.js.map +0 -1
- package/dist/lib/src/embedded-protocol/utils.d.ts +0 -7
- package/dist/lib/src/embedded-protocol/utils.js +0 -52
- package/dist/lib/src/embedded-protocol/utils.js.map +0 -1
- package/dist/lib/src/exception/exception.d.ts +0 -19
- package/dist/lib/src/exception/exception.js +0 -36
- package/dist/lib/src/exception/exception.js.map +0 -1
- package/dist/lib/src/exception/location.d.ts +0 -11
- package/dist/lib/src/exception/location.js +0 -6
- package/dist/lib/src/exception/location.js.map +0 -1
- package/dist/lib/src/exception/span.d.ts +0 -29
- package/dist/lib/src/exception/span.js.map +0 -1
- package/dist/lib/src/node-sass/render.d.ts +0 -60
- package/dist/lib/src/node-sass/render.js +0 -126
- package/dist/lib/src/node-sass/render.js.map +0 -1
- package/dist/lib/src/utils.d.ts +0 -12
- package/dist/lib/src/value/boolean.d.ts +0 -25
- package/dist/lib/src/value/null.d.ts +0 -12
- package/dist/lib/src/value/number.d.ts +0 -189
- package/dist/lib/src/value/string.d.ts +0 -56
- package/dist/lib/src/value/utils.d.ts +0 -36
- package/dist/lib/src/value/value.d.ts +0 -103
- package/dist/lib/src/value/value.js.map +0 -1
- package/dist/lib/src/vendor/embedded-protocol/embedded_sass_pb.d.ts +0 -1
- package/dist/tool/utils.d.ts +0 -32
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2021 Google Inc. Use of this source code is governed by an
|
|
3
|
+
// MIT-style license that can be found in the LICENSE file or at
|
|
4
|
+
// https://opensource.org/licenses/MIT.
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SassColor = void 0;
|
|
7
|
+
const index_1 = require("./index");
|
|
8
|
+
const utils_1 = require("./utils");
|
|
9
|
+
const immutable_1 = require("immutable");
|
|
10
|
+
/** A SassScript color. */
|
|
11
|
+
class SassColor extends index_1.Value {
|
|
12
|
+
constructor(color) {
|
|
13
|
+
super();
|
|
14
|
+
if ('red' in color) {
|
|
15
|
+
this.redInternal = (0, utils_1.fuzzyAssertInRange)(Math.round(color.red), 0, 255, 'red');
|
|
16
|
+
this.greenInternal = (0, utils_1.fuzzyAssertInRange)(Math.round(color.green), 0, 255, 'green');
|
|
17
|
+
this.blueInternal = (0, utils_1.fuzzyAssertInRange)(Math.round(color.blue), 0, 255, 'blue');
|
|
18
|
+
}
|
|
19
|
+
else if ('saturation' in color) {
|
|
20
|
+
this.hueInternal = (0, utils_1.positiveMod)(color.hue, 360);
|
|
21
|
+
this.saturationInternal = (0, utils_1.fuzzyAssertInRange)(color.saturation, 0, 100, 'saturation');
|
|
22
|
+
this.lightnessInternal = (0, utils_1.fuzzyAssertInRange)(color.lightness, 0, 100, 'lightness');
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
// From https://www.w3.org/TR/css-color-4/#hwb-to-rgb
|
|
26
|
+
const scaledHue = (0, utils_1.positiveMod)(color.hue, 360) / 360;
|
|
27
|
+
let scaledWhiteness = (0, utils_1.fuzzyAssertInRange)(color.whiteness, 0, 100, 'whiteness') / 100;
|
|
28
|
+
let scaledBlackness = (0, utils_1.fuzzyAssertInRange)(color.blackness, 0, 100, 'blackness') / 100;
|
|
29
|
+
const sum = scaledWhiteness + scaledBlackness;
|
|
30
|
+
if (sum > 1) {
|
|
31
|
+
scaledWhiteness /= sum;
|
|
32
|
+
scaledBlackness /= sum;
|
|
33
|
+
}
|
|
34
|
+
// Because HWB is (currently) used much less frequently than HSL or RGB, we
|
|
35
|
+
// don't cache its values because we expect the memory overhead of doing so
|
|
36
|
+
// to outweigh the cost of recalculating it on access. Instead, we eagerly
|
|
37
|
+
// convert it to RGB and then convert back if necessary.
|
|
38
|
+
this.redInternal = hwbToRgb(scaledHue + 1 / 3, scaledWhiteness, scaledBlackness);
|
|
39
|
+
this.greenInternal = hwbToRgb(scaledHue, scaledWhiteness, scaledBlackness);
|
|
40
|
+
this.blueInternal = hwbToRgb(scaledHue - 1 / 3, scaledWhiteness, scaledBlackness);
|
|
41
|
+
}
|
|
42
|
+
this.alphaInternal =
|
|
43
|
+
color.alpha === undefined
|
|
44
|
+
? 1
|
|
45
|
+
: (0, utils_1.fuzzyAssertInRange)(color.alpha, 0, 1, 'alpha');
|
|
46
|
+
}
|
|
47
|
+
/** `this`'s red channel. */
|
|
48
|
+
get red() {
|
|
49
|
+
if (this.redInternal === undefined) {
|
|
50
|
+
this.hslToRgb();
|
|
51
|
+
}
|
|
52
|
+
return this.redInternal;
|
|
53
|
+
}
|
|
54
|
+
/** `this`'s blue channel. */
|
|
55
|
+
get blue() {
|
|
56
|
+
if (this.blueInternal === undefined) {
|
|
57
|
+
this.hslToRgb();
|
|
58
|
+
}
|
|
59
|
+
return this.blueInternal;
|
|
60
|
+
}
|
|
61
|
+
/** `this`'s green channel. */
|
|
62
|
+
get green() {
|
|
63
|
+
if (this.greenInternal === undefined) {
|
|
64
|
+
this.hslToRgb();
|
|
65
|
+
}
|
|
66
|
+
return this.greenInternal;
|
|
67
|
+
}
|
|
68
|
+
/** `this`'s hue value. */
|
|
69
|
+
get hue() {
|
|
70
|
+
if (this.hueInternal === undefined) {
|
|
71
|
+
this.rgbToHsl();
|
|
72
|
+
}
|
|
73
|
+
return this.hueInternal;
|
|
74
|
+
}
|
|
75
|
+
/** `this`'s saturation value. */
|
|
76
|
+
get saturation() {
|
|
77
|
+
if (this.saturationInternal === undefined) {
|
|
78
|
+
this.rgbToHsl();
|
|
79
|
+
}
|
|
80
|
+
return this.saturationInternal;
|
|
81
|
+
}
|
|
82
|
+
/** `this`'s hue value. */
|
|
83
|
+
get lightness() {
|
|
84
|
+
if (this.lightnessInternal === undefined) {
|
|
85
|
+
this.rgbToHsl();
|
|
86
|
+
}
|
|
87
|
+
return this.lightnessInternal;
|
|
88
|
+
}
|
|
89
|
+
/** `this`'s whiteness value. */
|
|
90
|
+
get whiteness() {
|
|
91
|
+
// Because HWB is (currently) used much less frequently than HSL or RGB, we
|
|
92
|
+
// don't cache its values because we expect the memory overhead of doing so
|
|
93
|
+
// to outweigh the cost of recalculating it on access.
|
|
94
|
+
return (Math.min(this.red, this.green, this.blue) / 255) * 100;
|
|
95
|
+
}
|
|
96
|
+
/** `this`'s blackness value. */
|
|
97
|
+
get blackness() {
|
|
98
|
+
// Because HWB is (currently) used much less frequently than HSL or RGB, we
|
|
99
|
+
// don't cache its values because we expect the memory overhead of doing so
|
|
100
|
+
// to outweigh the cost of recalculating it on access.
|
|
101
|
+
return 100 - (Math.max(this.red, this.green, this.blue) / 255) * 100;
|
|
102
|
+
}
|
|
103
|
+
/** `this`'s alpha channel. */
|
|
104
|
+
get alpha() {
|
|
105
|
+
return this.alphaInternal;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Whether `this` has already calculated the HSL components for the color.
|
|
109
|
+
*
|
|
110
|
+
* This is an internal property that's not an official part of Sass's JS API,
|
|
111
|
+
* and may be broken at any time.
|
|
112
|
+
*/
|
|
113
|
+
get hasCalculatedHsl() {
|
|
114
|
+
return !!this.hueInternal;
|
|
115
|
+
}
|
|
116
|
+
assertColor() {
|
|
117
|
+
return this;
|
|
118
|
+
}
|
|
119
|
+
change(color) {
|
|
120
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
121
|
+
if ('whiteness' in color || 'blackness' in color) {
|
|
122
|
+
return new SassColor({
|
|
123
|
+
hue: (_a = color.hue) !== null && _a !== void 0 ? _a : this.hue,
|
|
124
|
+
whiteness: (_b = color.whiteness) !== null && _b !== void 0 ? _b : this.whiteness,
|
|
125
|
+
blackness: (_c = color.blackness) !== null && _c !== void 0 ? _c : this.blackness,
|
|
126
|
+
alpha: (_d = color.alpha) !== null && _d !== void 0 ? _d : this.alpha,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
else if ('hue' in color ||
|
|
130
|
+
'saturation' in color ||
|
|
131
|
+
'lightness' in color) {
|
|
132
|
+
// Tell TypeScript this isn't a Partial<HwbColor>.
|
|
133
|
+
const hsl = color;
|
|
134
|
+
return new SassColor({
|
|
135
|
+
hue: (_e = hsl.hue) !== null && _e !== void 0 ? _e : this.hue,
|
|
136
|
+
saturation: (_f = hsl.saturation) !== null && _f !== void 0 ? _f : this.saturation,
|
|
137
|
+
lightness: (_g = hsl.lightness) !== null && _g !== void 0 ? _g : this.lightness,
|
|
138
|
+
alpha: (_h = hsl.alpha) !== null && _h !== void 0 ? _h : this.alpha,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
else if ('red' in color ||
|
|
142
|
+
'green' in color ||
|
|
143
|
+
'blue' in color ||
|
|
144
|
+
this.redInternal) {
|
|
145
|
+
const rgb = color;
|
|
146
|
+
return new SassColor({
|
|
147
|
+
red: (_j = rgb.red) !== null && _j !== void 0 ? _j : this.red,
|
|
148
|
+
green: (_k = rgb.green) !== null && _k !== void 0 ? _k : this.green,
|
|
149
|
+
blue: (_l = rgb.blue) !== null && _l !== void 0 ? _l : this.blue,
|
|
150
|
+
alpha: (_m = rgb.alpha) !== null && _m !== void 0 ? _m : this.alpha,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
return new SassColor({
|
|
155
|
+
hue: this.hue,
|
|
156
|
+
saturation: this.saturation,
|
|
157
|
+
lightness: this.lightness,
|
|
158
|
+
alpha: (_o = color.alpha) !== null && _o !== void 0 ? _o : this.alpha,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
equals(other) {
|
|
163
|
+
return (other instanceof SassColor &&
|
|
164
|
+
(0, utils_1.fuzzyEquals)(this.red, other.red) &&
|
|
165
|
+
(0, utils_1.fuzzyEquals)(this.green, other.green) &&
|
|
166
|
+
(0, utils_1.fuzzyEquals)(this.blue, other.blue) &&
|
|
167
|
+
(0, utils_1.fuzzyEquals)(this.alpha, other.alpha));
|
|
168
|
+
}
|
|
169
|
+
hashCode() {
|
|
170
|
+
return (0, immutable_1.hash)(this.red ^ this.green ^ this.blue ^ this.alpha);
|
|
171
|
+
}
|
|
172
|
+
toString() {
|
|
173
|
+
const isOpaque = (0, utils_1.fuzzyEquals)(this.alpha, 1);
|
|
174
|
+
let string = isOpaque ? 'rgb(' : 'rgba(';
|
|
175
|
+
string += `${this.red}, ${this.green}, ${this.blue}`;
|
|
176
|
+
string += isOpaque ? ')' : `, ${this.alpha})`;
|
|
177
|
+
return string;
|
|
178
|
+
}
|
|
179
|
+
// Computes `this`'s `hue`, `saturation`, and `lightness` values based on
|
|
180
|
+
// `red`, `green`, and `blue`.
|
|
181
|
+
//
|
|
182
|
+
// Algorithm from https://en.wikipedia.org/wiki/HSL_and_HSV#RGB_to_HSL_and_HSV
|
|
183
|
+
rgbToHsl() {
|
|
184
|
+
const scaledRed = this.red / 255;
|
|
185
|
+
const scaledGreen = this.green / 255;
|
|
186
|
+
const scaledBlue = this.blue / 255;
|
|
187
|
+
const max = Math.max(scaledRed, scaledGreen, scaledBlue);
|
|
188
|
+
const min = Math.min(scaledRed, scaledGreen, scaledBlue);
|
|
189
|
+
const delta = max - min;
|
|
190
|
+
if (max === min) {
|
|
191
|
+
this.hueInternal = 0;
|
|
192
|
+
}
|
|
193
|
+
else if (max === scaledRed) {
|
|
194
|
+
this.hueInternal = (0, utils_1.positiveMod)((60 * (scaledGreen - scaledBlue)) / delta, 360);
|
|
195
|
+
}
|
|
196
|
+
else if (max === scaledGreen) {
|
|
197
|
+
this.hueInternal = (0, utils_1.positiveMod)(120 + (60 * (scaledBlue - scaledRed)) / delta, 360);
|
|
198
|
+
}
|
|
199
|
+
else if (max === scaledBlue) {
|
|
200
|
+
this.hueInternal = (0, utils_1.positiveMod)(240 + (60 * (scaledRed - scaledGreen)) / delta, 360);
|
|
201
|
+
}
|
|
202
|
+
this.lightnessInternal = 50 * (max + min);
|
|
203
|
+
if (max === min) {
|
|
204
|
+
this.saturationInternal = 0;
|
|
205
|
+
}
|
|
206
|
+
else if (this.lightnessInternal < 50) {
|
|
207
|
+
this.saturationInternal = (100 * delta) / (max + min);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
this.saturationInternal = (100 * delta) / (2 - max - min);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Computes `this`'s red`, `green`, and `blue` channels based on `hue`,
|
|
214
|
+
// `saturation`, and `value`.
|
|
215
|
+
//
|
|
216
|
+
// Algorithm from the CSS3 spec: https://www.w3.org/TR/css3-color/#hsl-color.
|
|
217
|
+
hslToRgb() {
|
|
218
|
+
const scaledHue = this.hue / 360;
|
|
219
|
+
const scaledSaturation = this.saturation / 100;
|
|
220
|
+
const scaledLightness = this.lightness / 100;
|
|
221
|
+
const m2 = scaledLightness <= 0.5
|
|
222
|
+
? scaledLightness * (scaledSaturation + 1)
|
|
223
|
+
: scaledLightness +
|
|
224
|
+
scaledSaturation -
|
|
225
|
+
scaledLightness * scaledSaturation;
|
|
226
|
+
const m1 = scaledLightness * 2 - m2;
|
|
227
|
+
this.redInternal = (0, utils_1.fuzzyRound)(hueToRgb(m1, m2, scaledHue + 1 / 3) * 255);
|
|
228
|
+
this.greenInternal = (0, utils_1.fuzzyRound)(hueToRgb(m1, m2, scaledHue) * 255);
|
|
229
|
+
this.blueInternal = (0, utils_1.fuzzyRound)(hueToRgb(m1, m2, scaledHue - 1 / 3) * 255);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
exports.SassColor = SassColor;
|
|
233
|
+
// A helper for converting HWB colors to RGB.
|
|
234
|
+
function hwbToRgb(hue, scaledWhiteness, scaledBlackness) {
|
|
235
|
+
const factor = 1 - scaledWhiteness - scaledBlackness;
|
|
236
|
+
const channel = hueToRgb(0, 1, hue) * factor + scaledWhiteness;
|
|
237
|
+
return (0, utils_1.fuzzyRound)(channel * 255);
|
|
238
|
+
}
|
|
239
|
+
// An algorithm from the CSS3 spec: http://www.w3.org/TR/css3-color/#hsl-color.
|
|
240
|
+
function hueToRgb(m1, m2, hue) {
|
|
241
|
+
if (hue < 0)
|
|
242
|
+
hue += 1;
|
|
243
|
+
if (hue > 1)
|
|
244
|
+
hue -= 1;
|
|
245
|
+
if (hue < 1 / 6) {
|
|
246
|
+
return m1 + (m2 - m1) * hue * 6;
|
|
247
|
+
}
|
|
248
|
+
else if (hue < 1 / 2) {
|
|
249
|
+
return m2;
|
|
250
|
+
}
|
|
251
|
+
else if (hue < 2 / 3) {
|
|
252
|
+
return m1 + (m2 - m1) * (2 / 3 - hue) * 6;
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
return m1;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.js","sourceRoot":"","sources":["../../../../lib/src/value/color.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2021 Google LLC. Use of this source code is governed by an
|
|
3
|
+
// MIT-style license that can be found in the LICENSE file or at
|
|
4
|
+
// https://opensource.org/licenses/MIT.
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SassFunction = void 0;
|
|
7
|
+
const immutable_1 = require("immutable");
|
|
8
|
+
const index_1 = require("./index");
|
|
9
|
+
/** A first-class SassScript function. */
|
|
10
|
+
class SassFunction extends index_1.Value {
|
|
11
|
+
constructor(idOrSignature, callback) {
|
|
12
|
+
super();
|
|
13
|
+
if (typeof idOrSignature === 'number') {
|
|
14
|
+
this.id = idOrSignature;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
this.signature = idOrSignature;
|
|
18
|
+
this.callback = callback;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
equals(other) {
|
|
22
|
+
return this.id === undefined
|
|
23
|
+
? other === this
|
|
24
|
+
: other instanceof SassFunction && other.id === this.id;
|
|
25
|
+
}
|
|
26
|
+
hashCode() {
|
|
27
|
+
return this.id === undefined ? (0, immutable_1.hash)(this.signature) : (0, immutable_1.hash)(this.id);
|
|
28
|
+
}
|
|
29
|
+
toString() {
|
|
30
|
+
return this.signature ? this.signature : `<compiler function ${this.id}>`;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.SassFunction = SassFunction;
|
|
34
|
+
//# sourceMappingURL=function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../../../lib/src/value/function.ts"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,gEAAgE;AAChE,uCAAuC;;;AAEvC,yCAA+B;AAG/B,mCAA8B;AAE9B,yCAAyC;AACzC,MAAa,YAAa,SAAQ,aAAK;IAiCrC,YACE,aAA8B,EAC9B,QAAiC;QAEjC,KAAK,EAAE,CAAC;QAER,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;YACrC,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,QAAS,CAAC;SAC3B;IACH,CAAC;IAED,MAAM,CAAC,KAAY;QACjB,OAAO,IAAI,CAAC,EAAE,KAAK,SAAS;YAC1B,CAAC,CAAC,KAAK,KAAK,IAAI;YAChB,CAAC,CAAC,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,IAAA,gBAAI,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAA,gBAAI,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB,IAAI,CAAC,EAAE,GAAG,CAAC;IAC5E,CAAC;CACF;AA5DD,oCA4DC"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// MIT-style license that can be found in the LICENSE file or at
|
|
4
4
|
// https://opensource.org/licenses/MIT.
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Value = void 0;
|
|
6
7
|
const immutable_1 = require("immutable");
|
|
7
8
|
const utils_1 = require("../utils");
|
|
8
9
|
/**
|
|
@@ -19,7 +20,8 @@ const utils_1 = require("../utils");
|
|
|
19
20
|
* All values, except `false` and `null`, count as `true`.
|
|
20
21
|
*
|
|
21
22
|
* All values can be used as lists. Maps count as lists of pairs, while all
|
|
22
|
-
* other values count as single-value lists.
|
|
23
|
+
* other values count as single-value lists. Empty maps are equal to empty
|
|
24
|
+
* lists.
|
|
23
25
|
*/
|
|
24
26
|
class Value {
|
|
25
27
|
/** Whether `this` counts as `true`. */
|
|
@@ -32,17 +34,21 @@ class Value {
|
|
|
32
34
|
}
|
|
33
35
|
/** `this` as a list. */
|
|
34
36
|
get asList() {
|
|
35
|
-
return immutable_1.List([this]);
|
|
37
|
+
return (0, immutable_1.List)([this]);
|
|
36
38
|
}
|
|
37
39
|
/** The separator for `this` as a list. */
|
|
38
40
|
get separator() {
|
|
39
41
|
return null;
|
|
40
|
-
// TODO(awjin): Implement the proper return type ListSeparator.
|
|
41
42
|
}
|
|
42
43
|
/** Whether `this`, as a list, has brackets. */
|
|
43
44
|
get hasBrackets() {
|
|
44
45
|
return false;
|
|
45
46
|
}
|
|
47
|
+
// Subclasses can override this to change the behavior of
|
|
48
|
+
// `sassIndexToListIndex`.
|
|
49
|
+
get lengthAsList() {
|
|
50
|
+
return 1;
|
|
51
|
+
}
|
|
46
52
|
/**
|
|
47
53
|
* Converts `sassIndex` to a JS index into the array returned by `asList`.
|
|
48
54
|
*
|
|
@@ -60,8 +66,18 @@ class Value {
|
|
|
60
66
|
* (without the `$`) and is used for error reporting.
|
|
61
67
|
*/
|
|
62
68
|
sassIndexToListIndex(sassIndex, name) {
|
|
63
|
-
|
|
64
|
-
|
|
69
|
+
const index = sassIndex.assertNumber().assertInt();
|
|
70
|
+
if (index === 0) {
|
|
71
|
+
throw Error('List index may not be 0.');
|
|
72
|
+
}
|
|
73
|
+
if (Math.abs(index) > this.lengthAsList) {
|
|
74
|
+
throw (0, utils_1.valueError)(`Invalid index ${sassIndex} for a list with ${this.lengthAsList} elements.`, name);
|
|
75
|
+
}
|
|
76
|
+
return index < 0 ? this.lengthAsList + index : index - 1;
|
|
77
|
+
}
|
|
78
|
+
/** Returns `this.asList.get(index)`. */
|
|
79
|
+
get(index) {
|
|
80
|
+
return index < 1 && index >= -1 ? this : undefined;
|
|
65
81
|
}
|
|
66
82
|
/**
|
|
67
83
|
* Casts `this` to `SassBoolean`; throws if `this` isn't a boolean.
|
|
@@ -70,7 +86,7 @@ class Value {
|
|
|
70
86
|
* (without the `$`) and is used for error reporting.
|
|
71
87
|
*/
|
|
72
88
|
assertBoolean(name) {
|
|
73
|
-
throw utils_1.valueError(`${this} is not a boolean`, name);
|
|
89
|
+
throw (0, utils_1.valueError)(`${this} is not a boolean`, name);
|
|
74
90
|
}
|
|
75
91
|
/**
|
|
76
92
|
* Casts `this` to `SassColor`; throws if `this` isn't a color.
|
|
@@ -79,8 +95,7 @@ class Value {
|
|
|
79
95
|
* (without the `$`) and is used for error reporting.
|
|
80
96
|
*/
|
|
81
97
|
assertColor(name) {
|
|
82
|
-
throw utils_1.valueError(`${this} is not a color`, name);
|
|
83
|
-
// TODO(awjin): Narrow the return type to SassColor.
|
|
98
|
+
throw (0, utils_1.valueError)(`${this} is not a color`, name);
|
|
84
99
|
}
|
|
85
100
|
/**
|
|
86
101
|
* Casts `this` to `SassFunction`; throws if `this` isn't a function
|
|
@@ -90,7 +105,7 @@ class Value {
|
|
|
90
105
|
* (without the `$`) and is used for error reporting.
|
|
91
106
|
*/
|
|
92
107
|
assertFunction(name) {
|
|
93
|
-
throw utils_1.valueError(`${this} is not a function reference`, name);
|
|
108
|
+
throw (0, utils_1.valueError)(`${this} is not a function reference`, name);
|
|
94
109
|
// TODO(awjin): Narrow the return type to SassFunction.
|
|
95
110
|
}
|
|
96
111
|
/**
|
|
@@ -100,8 +115,7 @@ class Value {
|
|
|
100
115
|
* (without the `$`) and is used for error reporting.
|
|
101
116
|
*/
|
|
102
117
|
assertMap(name) {
|
|
103
|
-
throw utils_1.valueError(`${this} is not a map`, name);
|
|
104
|
-
// TODO(awjin): Narrow the return type to SassMap.
|
|
118
|
+
throw (0, utils_1.valueError)(`${this} is not a map`, name);
|
|
105
119
|
}
|
|
106
120
|
/**
|
|
107
121
|
* Returns `this` as a `SassMap` if it counts as one (including empty lists),
|
|
@@ -117,7 +131,7 @@ class Value {
|
|
|
117
131
|
* (without the `$`) and is used for error reporting.
|
|
118
132
|
*/
|
|
119
133
|
assertNumber(name) {
|
|
120
|
-
throw utils_1.valueError(`${this} is not a number`, name);
|
|
134
|
+
throw (0, utils_1.valueError)(`${this} is not a number`, name);
|
|
121
135
|
}
|
|
122
136
|
/**
|
|
123
137
|
* Casts `this` to `SassString`; throws if `this` isn't a string.
|
|
@@ -126,8 +140,8 @@ class Value {
|
|
|
126
140
|
* (without the `$`) and is used for error reporting.
|
|
127
141
|
*/
|
|
128
142
|
assertString(name) {
|
|
129
|
-
throw utils_1.valueError(`${this} is not a string`, name);
|
|
143
|
+
throw (0, utils_1.valueError)(`${this} is not a string`, name);
|
|
130
144
|
}
|
|
131
145
|
}
|
|
132
146
|
exports.Value = Value;
|
|
133
|
-
//# sourceMappingURL=
|
|
147
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/src/value/index.ts"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,gEAAgE;AAChE,uCAAuC;;;AAEvC,yCAA4C;AAQ5C,oCAAoC;AAEpC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAsB,KAAK;IACzB,uCAAuC;IACvC,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAC1E,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wBAAwB;IACxB,IAAI,MAAM;QACR,OAAO,IAAA,gBAAI,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,0CAA0C;IAC1C,IAAI,SAAS;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+CAA+C;IAC/C,IAAI,WAAW;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yDAAyD;IACzD,0BAA0B;IAC1B,IAAc,YAAY;QACxB,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,oBAAoB,CAAC,SAAgB,EAAE,IAAa;QAClD,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,CAAC;QACnD,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;SACzC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE;YACvC,MAAM,IAAA,kBAAU,EACd,iBAAiB,SAAS,oBAAoB,IAAI,CAAC,YAAY,YAAY,EAC3E,IAAI,CACL,CAAC;SACH;QACD,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IAC3D,CAAC;IAED,wCAAwC;IACxC,GAAG,CAAC,KAAa;QACf,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,IAAa;QACzB,MAAM,IAAA,kBAAU,EAAC,GAAG,IAAI,mBAAmB,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,IAAa;QACvB,MAAM,IAAA,kBAAU,EAAC,GAAG,IAAI,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,IAAa;QAC1B,MAAM,IAAA,kBAAU,EAAC,GAAG,IAAI,8BAA8B,EAAE,IAAI,CAAC,CAAC;QAC9D,uDAAuD;IACzD,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,IAAa;QACrB,MAAM,IAAA,kBAAU,EAAC,GAAG,IAAI,eAAe,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,IAAa;QACxB,MAAM,IAAA,kBAAU,EAAC,GAAG,IAAI,kBAAkB,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,IAAa;QACxB,MAAM,IAAA,kBAAU,EAAC,GAAG,IAAI,kBAAkB,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;CAUF;AAjJD,sBAiJC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2021 Google Inc. Use of this source code is governed by an
|
|
3
|
+
// MIT-style license that can be found in the LICENSE file or at
|
|
4
|
+
// https://opensource.org/licenses/MIT.
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SassList = void 0;
|
|
7
|
+
const immutable_1 = require("immutable");
|
|
8
|
+
const index_1 = require("./index");
|
|
9
|
+
const map_1 = require("./map");
|
|
10
|
+
const utils_1 = require("../utils");
|
|
11
|
+
// All empty SassList and SassMaps should have the same hashcode, so this caches
|
|
12
|
+
// the value.
|
|
13
|
+
const emptyListHashCode = (0, immutable_1.hash)([]);
|
|
14
|
+
/** A SassScript list. */
|
|
15
|
+
class SassList extends index_1.Value {
|
|
16
|
+
constructor(contentsOrOptions, options) {
|
|
17
|
+
var _a;
|
|
18
|
+
super();
|
|
19
|
+
if ((0, immutable_1.isList)(contentsOrOptions) || Array.isArray(contentsOrOptions)) {
|
|
20
|
+
this.contentsInternal = (0, utils_1.asImmutableList)(contentsOrOptions);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this.contentsInternal = (0, immutable_1.List)();
|
|
24
|
+
options = contentsOrOptions;
|
|
25
|
+
}
|
|
26
|
+
if (this.contentsInternal.size > 1 && (options === null || options === void 0 ? void 0 : options.separator) === null) {
|
|
27
|
+
throw Error('Non-null separator required for SassList with more than one element.');
|
|
28
|
+
}
|
|
29
|
+
this.separatorInternal =
|
|
30
|
+
(options === null || options === void 0 ? void 0 : options.separator) === undefined ? ',' : options.separator;
|
|
31
|
+
this.hasBracketsInternal = (_a = options === null || options === void 0 ? void 0 : options.brackets) !== null && _a !== void 0 ? _a : false;
|
|
32
|
+
}
|
|
33
|
+
get asList() {
|
|
34
|
+
return this.contentsInternal;
|
|
35
|
+
}
|
|
36
|
+
/** Whether `this` has brackets. */
|
|
37
|
+
get hasBrackets() {
|
|
38
|
+
return this.hasBracketsInternal;
|
|
39
|
+
}
|
|
40
|
+
/** `this`'s list separator. */
|
|
41
|
+
get separator() {
|
|
42
|
+
return this.separatorInternal;
|
|
43
|
+
}
|
|
44
|
+
get lengthAsList() {
|
|
45
|
+
return this.contentsInternal.size;
|
|
46
|
+
}
|
|
47
|
+
get(index) {
|
|
48
|
+
return this.contentsInternal.get(index);
|
|
49
|
+
}
|
|
50
|
+
assertList() {
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
assertMap(name) {
|
|
54
|
+
if (this.contentsInternal.isEmpty())
|
|
55
|
+
return new map_1.SassMap();
|
|
56
|
+
throw (0, utils_1.valueError)(`${this} is not a map`, name);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* If `this` is empty, returns an empty OrderedMap.
|
|
60
|
+
*
|
|
61
|
+
* Otherwise, returns null.
|
|
62
|
+
*/
|
|
63
|
+
tryMap() {
|
|
64
|
+
return this.contentsInternal.isEmpty() ? new map_1.SassMap() : null;
|
|
65
|
+
}
|
|
66
|
+
equals(other) {
|
|
67
|
+
if ((other instanceof SassList || other instanceof map_1.SassMap) &&
|
|
68
|
+
this.contentsInternal.isEmpty() &&
|
|
69
|
+
other.asList.isEmpty()) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
if (!(other instanceof SassList) ||
|
|
73
|
+
this.hasBrackets !== other.hasBrackets ||
|
|
74
|
+
this.separator !== other.separator) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
return this.contentsInternal.equals(other.asList);
|
|
78
|
+
}
|
|
79
|
+
hashCode() {
|
|
80
|
+
return this.contentsInternal.isEmpty()
|
|
81
|
+
? emptyListHashCode
|
|
82
|
+
: this.contentsInternal.hashCode() ^
|
|
83
|
+
(0, immutable_1.hash)(this.hasBrackets) ^
|
|
84
|
+
(0, immutable_1.hash)(this.separator);
|
|
85
|
+
}
|
|
86
|
+
toString() {
|
|
87
|
+
let string = '';
|
|
88
|
+
if (this.hasBrackets)
|
|
89
|
+
string += '[';
|
|
90
|
+
string += `${this.contentsInternal.join(this.separator === ' ' || this.separator === null
|
|
91
|
+
? ' '
|
|
92
|
+
: `${this.separator} `)}`;
|
|
93
|
+
if (this.hasBrackets)
|
|
94
|
+
string += ']';
|
|
95
|
+
return string;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.SassList = SassList;
|
|
99
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../lib/src/value/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2021 Google Inc. Use of this source code is governed by an
|
|
3
|
+
// MIT-style license that can be found in the LICENSE file or at
|
|
4
|
+
// https://opensource.org/licenses/MIT.
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SassMap = void 0;
|
|
7
|
+
const immutable_1 = require("immutable");
|
|
8
|
+
const index_1 = require("./index");
|
|
9
|
+
const list_1 = require("./list");
|
|
10
|
+
/** A SassScript map */
|
|
11
|
+
class SassMap extends index_1.Value {
|
|
12
|
+
/** Returns a map that contains `contents`. */
|
|
13
|
+
constructor(contents) {
|
|
14
|
+
super();
|
|
15
|
+
this.contentsInternal = contents !== null && contents !== void 0 ? contents : (0, immutable_1.OrderedMap)();
|
|
16
|
+
}
|
|
17
|
+
/** The separator for `this`'s contents as a list. */
|
|
18
|
+
get separator() {
|
|
19
|
+
return this.contentsInternal.isEmpty() ? null : ',';
|
|
20
|
+
}
|
|
21
|
+
/** `this`'s contents. */
|
|
22
|
+
get contents() {
|
|
23
|
+
return this.contentsInternal;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Returns an immutable list of `contents`'s keys and values as two-element
|
|
27
|
+
* `SassList`s.
|
|
28
|
+
*/
|
|
29
|
+
get asList() {
|
|
30
|
+
const list = [];
|
|
31
|
+
for (const entry of this.contents.entries()) {
|
|
32
|
+
list.push(new list_1.SassList(entry, { separator: ' ' }));
|
|
33
|
+
}
|
|
34
|
+
return (0, immutable_1.List)(list);
|
|
35
|
+
}
|
|
36
|
+
get lengthAsList() {
|
|
37
|
+
return this.contentsInternal.size;
|
|
38
|
+
}
|
|
39
|
+
get(indexOrKey) {
|
|
40
|
+
if (indexOrKey instanceof index_1.Value) {
|
|
41
|
+
return this.contentsInternal.get(indexOrKey);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const entry = this.contentsInternal
|
|
45
|
+
.entrySeq()
|
|
46
|
+
.get(Math.floor(indexOrKey));
|
|
47
|
+
return entry ? new list_1.SassList(entry, { separator: ' ' }) : undefined;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
assertMap() {
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
tryMap() {
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
equals(other) {
|
|
57
|
+
if (other instanceof list_1.SassList &&
|
|
58
|
+
this.contents.size === 0 &&
|
|
59
|
+
other.asList.size === 0) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
if (!(other instanceof SassMap) ||
|
|
63
|
+
this.contents.size !== other.contents.size) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
for (const [key, value] of this.contents.entries()) {
|
|
67
|
+
const otherValue = other.contents.get(key);
|
|
68
|
+
if (otherValue === undefined || !otherValue.equals(value)) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
hashCode() {
|
|
75
|
+
return this.contents.isEmpty()
|
|
76
|
+
? new list_1.SassList().hashCode()
|
|
77
|
+
: // SassMaps with the same key-value pairs are considered equal
|
|
78
|
+
// regardless of key-value order, so this hash must be order
|
|
79
|
+
// independent. Since OrderedMap.hashCode() encodes the key-value order,
|
|
80
|
+
// we use a manual XOR accumulator instead.
|
|
81
|
+
this.contents.reduce((accumulator, value, key) => accumulator ^ value.hashCode() ^ key.hashCode(), 0);
|
|
82
|
+
}
|
|
83
|
+
toString() {
|
|
84
|
+
let string = '(';
|
|
85
|
+
string += Array.from(this.contents.entries(), ([key, value]) => `${key}: ${value}`).join(', ');
|
|
86
|
+
string += ')';
|
|
87
|
+
return string;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.SassMap = SassMap;
|
|
91
|
+
//# sourceMappingURL=map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../../../lib/src/value/map.ts"],"names":[],"mappings":"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"}
|