Skip to content

Commit aa98860

Browse files
committed
change the way we import class
1 parent e714ab6 commit aa98860

File tree

1 file changed

+131
-104
lines changed

1 file changed

+131
-104
lines changed

src/index.js

Lines changed: 131 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,122 +1,149 @@
11
class Gradient {
2-
constructor(gradients = '', maxNum = 10, colors = ['', ''], intervals = []) {
2+
constructor(gradients = "", maxNum = 10, colors = ["", ""], intervals = []) {
3+
const setColors = (props) => {
4+
if (props.length < 2) {
5+
throw new Error(
6+
`setGradient should have more than ${props.length} color`
7+
);
8+
} else {
9+
let increment = maxNum / (props.length - 1);
10+
let firstGradient = new GradientColor();
11+
let lower = 0;
12+
let upper = 0 + increment;
13+
firstGradient.setGradient(props[0], props[1]);
14+
firstGradient.setMidpoint(lower, upper);
15+
gradients = [firstGradient];
16+
intervals = [
17+
{
18+
lower,
19+
upper,
20+
},
21+
];
322

4-
const setColors = props => {
5-
if (props.length < 2) {
6-
throw new Error(`setGradient should have more than ${props.length} color`);
7-
} else {
8-
let increment = maxNum / (props.length - 1);
9-
let firstGradient = new GradientColor();
10-
let lower = 0;
11-
let upper = 0 + increment;
12-
firstGradient.setGradient(props[0], props[1]);
13-
firstGradient.setMidpoint(lower, upper);
14-
gradients = [firstGradient];
15-
intervals = [{
16-
lower,
17-
upper
18-
}];
19-
20-
for (let i = 1; i < props.length - 1; i++) {
21-
let gradientColor = new GradientColor();
22-
let lower = 0 + increment * i;
23-
let upper = 0 + increment * (i + 1);
24-
gradientColor.setGradient(props[i], props[i + 1]);
25-
gradientColor.setMidpoint(lower, upper);
26-
gradients[i] = gradientColor;
27-
intervals[i] = {
28-
lower,
29-
upper
30-
};
31-
}
32-
colors = props;
33-
}
23+
for (let i = 1; i < props.length - 1; i++) {
24+
let gradientColor = new GradientColor();
25+
let lower = 0 + increment * i;
26+
let upper = 0 + increment * (i + 1);
27+
gradientColor.setGradient(props[i], props[i + 1]);
28+
gradientColor.setMidpoint(lower, upper);
29+
gradients[i] = gradientColor;
30+
intervals[i] = {
31+
lower,
32+
upper,
33+
};
3434
}
35+
colors = props;
36+
}
37+
};
3538

36-
this.setGradient = (...props) => {
37-
setColors(props);
38-
return this;
39-
}
39+
this.setGradient = (...props) => {
40+
setColors(props);
41+
return this;
42+
};
4043

41-
this.getArray = () => {
42-
let gradientArray = [];
43-
for (let j = 0; j < intervals.length; j++) {
44-
const interval = intervals[j];
45-
const start = interval.lower === 0 ? 1 : Math.ceil(interval.lower);
46-
const end = interval.upper === maxNum ? interval.upper + 1 : Math.ceil(interval.upper);
47-
for (let i = start; i < end; i++) {
48-
gradientArray.push(gradients[j].getColor(i))
49-
}
50-
}
51-
return gradientArray;
44+
this.getArray = () => {
45+
let gradientArray = [];
46+
for (let j = 0; j < intervals.length; j++) {
47+
const interval = intervals[j];
48+
const start = interval.lower === 0 ? 1 : Math.ceil(interval.lower);
49+
const end =
50+
interval.upper === maxNum
51+
? interval.upper + 1
52+
: Math.ceil(interval.upper);
53+
for (let i = start; i < end; i++) {
54+
gradientArray.push(gradients[j].getColor(i));
5255
}
56+
}
57+
return gradientArray;
58+
};
5359

54-
this.getColor = props => {
55-
if (isNaN(props)) {
56-
throw new TypeError(`getColor should be a number`);
57-
} else if (props <= 0) {
58-
throw new TypeError(`getColor should be greater than ${props}`);
59-
} else {
60-
let segment = (maxNum - 0) / (gradients.length);
61-
let index = Math.min(Math.floor((Math.max(props, 0) - 0) / segment), gradients.length - 1);
62-
return gradients[index].getColor(props);
63-
}
64-
}
60+
this.getColor = (props) => {
61+
if (isNaN(props)) {
62+
throw new TypeError(`getColor should be a number`);
63+
} else if (props <= 0) {
64+
throw new TypeError(`getColor should be greater than ${props}`);
65+
} else {
66+
let segment = (maxNum - 0) / gradients.length;
67+
let index = Math.min(
68+
Math.floor((Math.max(props, 0) - 0) / segment),
69+
gradients.length - 1
70+
);
71+
return gradients[index].getColor(props);
72+
}
73+
};
6574

66-
this.setMidpoint = (maxNumber) => {
67-
if (!isNaN(maxNumber) && maxNumber >= 0) {
68-
maxNum = maxNumber;
69-
setColors(colors);
70-
} else if (maxNumber <= 0) {
71-
throw new RangeError(`midPoint should be greater than ${maxNumber}`);
72-
} else {
73-
throw new RangeError('midPoint should be a number');
74-
}
75-
return this;
76-
}
77-
}
75+
this.setMidpoint = (maxNumber) => {
76+
if (!isNaN(maxNumber) && maxNumber >= 0) {
77+
maxNum = maxNumber;
78+
setColors(colors);
79+
} else if (maxNumber <= 0) {
80+
throw new RangeError(`midPoint should be greater than ${maxNumber}`);
81+
} else {
82+
throw new RangeError("midPoint should be a number");
83+
}
84+
return this;
85+
};
86+
}
7887
}
7988

8089
class GradientColor {
81-
constructor(startColor = '', endColor = '', minNum = 0, maxNum = 10) {
82-
this.setGradient = (colorStart, colorEnd) => {
83-
startColor = getHexColor(colorStart);
84-
endColor = getHexColor(colorEnd);
85-
}
90+
constructor(startColor = "", endColor = "", minNum = 0, maxNum = 10) {
91+
this.setGradient = (colorStart, colorEnd) => {
92+
startColor = getHexColor(colorStart);
93+
endColor = getHexColor(colorEnd);
94+
};
8695

87-
this.setMidpoint = (minNumber, maxNumber) => {
88-
minNum = minNumber;
89-
maxNum = maxNumber;
90-
}
96+
this.setMidpoint = (minNumber, maxNumber) => {
97+
minNum = minNumber;
98+
maxNum = maxNumber;
99+
};
91100

92-
this.getColor = props => {
93-
if (props) {
94-
return '#' + generateHex(props, startColor.substring(0, 2), endColor.substring(0, 2)) +
95-
generateHex(props, startColor.substring(2, 4), endColor.substring(2, 4)) +
96-
generateHex(props, startColor.substring(4, 6), endColor.substring(4, 6));
97-
}
98-
}
101+
this.getColor = (props) => {
102+
if (props) {
103+
return (
104+
"#" +
105+
generateHex(
106+
props,
107+
startColor.substring(0, 2),
108+
endColor.substring(0, 2)
109+
) +
110+
generateHex(
111+
props,
112+
startColor.substring(2, 4),
113+
endColor.substring(2, 4)
114+
) +
115+
generateHex(
116+
props,
117+
startColor.substring(4, 6),
118+
endColor.substring(4, 6)
119+
)
120+
);
121+
}
122+
};
99123

100-
const generateHex = (number, start, end) => {
101-
if (number < minNum) {
102-
number = minNum;
103-
} else if (number > maxNum) {
104-
number = maxNum;
105-
}
124+
const generateHex = (number, start, end) => {
125+
if (number < minNum) {
126+
number = minNum;
127+
} else if (number > maxNum) {
128+
number = maxNum;
129+
}
106130

107-
let midPoint = maxNum - minNum;
108-
let startBase = parseInt(start, 16);
109-
let endBase = parseInt(end, 16);
110-
let average = (endBase - startBase) / midPoint;
111-
let finalBase = Math.round(average * (number - minNum) + startBase);
112-
let balancedFinalBase = finalBase < 16 ? "0" + finalBase.toString(16) : finalBase.toString(16);
113-
return balancedFinalBase;
114-
}
131+
let midPoint = maxNum - minNum;
132+
let startBase = parseInt(start, 16);
133+
let endBase = parseInt(end, 16);
134+
let average = (endBase - startBase) / midPoint;
135+
let finalBase = Math.round(average * (number - minNum) + startBase);
136+
let balancedFinalBase =
137+
finalBase < 16 ? "0" + finalBase.toString(16) : finalBase.toString(16);
138+
return balancedFinalBase;
139+
};
115140

116-
const getHexColor = props => {
117-
return props.substring(props.length - 6, props.length);
118-
}
119-
}
141+
const getHexColor = (props) => {
142+
return props.substring(props.length - 6, props.length);
143+
};
144+
}
120145
}
121146

122-
module.exports = Gradient;
147+
const colorGradient = new Gradient();
148+
149+
module.exports = colorGradient;

0 commit comments

Comments
 (0)