if (!rgb) return this;
rgb.length = 0;
hsl.length = 0;
hwb.length = 0;
xyz.length = 0;
lab.length = 0;
lch.length = 0;
oklab.length = 0;
oklch.length = 0;
let a, b, c, d;
if (color.indexOf('hwb') >= 0 && !supportsHWB) {
[a, b, c, d] = this.extractFromHwbColorString(color);
rgb.push(b, c, d, a);
hsl.push(...this.convertRGBtoHSL(b, c, d), a);
hwb.push(hue, white, black, a);
xyz.push(...this.convertRGBtoXYZ(b, c, d), a);
lab.push(...this.convertXYZtoLAB(xyz[0], xyz[1], xyz[2]), a);
lch.push(...this.convertLABtoLCH(lab[0], lab[1], lab[2]), a);
oklab.push(...this.convertXYZtoOKLAB(xyz[0], xyz[1], xyz[2]), a);
oklch.push(...this.convertOKLABtoOKLCH(oklab[0], oklab[1], oklab[2]), a);
}
else if (color.indexOf('xyz') >= 0) {
[a, b, c, d] = this.extractFromXyzColorString(color);
rgb.push(...this.convertXYZtoRGB(b, c, d), a);
hsl.push(...this.convertRGBtoHSL(rgb[0], rgb[1], rgb[2]), a);
hwb.push(...this.convertRGBHtoHWB(rgb[0], rgb[1], rgb[2], hsl[0]), a);
xyz.push(b, c, d, a);
lab.push(...this.convertXYZtoLAB(b, c, d), a);
lch.push(...this.convertLABtoLCH(lab[0], lab[1], lab[2]), a);
oklab.push(...this.convertXYZtoOKLAB(xyz[0], xyz[1], xyz[2]), a);
oklch.push(...this.convertOKLABtoOKLCH(oklab[0], oklab[1], oklab[2]), a);
}
else if (color.indexOf('oklab') >= 0 && !supportsOKLAB) {
[a, b, c, d] = this.extractFromOklabColorString(color);
oklab.push(b, c, d, a);
oklch.push(...this.convertOKLABtoOKLCH(b, c, d), a);
xyz.push(...this.convertOKLABtoXYZ(b, c, d), a);
lab.push(...this.convertXYZtoLAB(xyz[0], xyz[1], xyz[2]), a);
lch.push(...this.convertLABtoLCH(lab[0], lab[1], lab[2]), a);
rgb.push(...this.convertXYZtoRGB(xyz[0], xyz[1], xyz[2]), a);
hsl.push(...this.convertRGBtoHSL(rgb[0], rgb[1], rgb[2]), a);
hwb.push(...this.convertRGBHtoHWB(rgb[0], rgb[1], rgb[2], hsl[0]), a);
}
else if (color.indexOf('oklch') >= 0 && !supportsOKLCH) {
[a, b, c, d] = this.extractFromOklchColorString(color);
oklch.push(b, c, d, a);
oklab.push(...this.convertOKLCHtoOKLAB(b, c, d), a);
xyz.push(...this.convertOKLABtoXYZ(oklab[0], oklab[1], oklab[2]), a);
lab.push(...this.convertXYZtoLAB(xyz[0], xyz[1], xyz[2]), a);
lch.push(...this.convertLABtoLCH(lab[0], lab[1], lab[2]), a);
rgb.push(...this.convertXYZtoRGB(xyz[0], xyz[1], xyz[2]), a);
hsl.push(...this.convertRGBtoHSL(rgb[0], rgb[1], rgb[2]), a);
hwb.push(...this.convertRGBHtoHWB(rgb[0], rgb[1], rgb[2], hsl[0]), a);
}
else if (color.indexOf('lab') >= 0 && !supportsLAB) {
[a, b, c, d] = this.extractFromLabColorString(color);
lab.push(b, c, d, a);
xyz.push(...this.convertLABtoXYZ(b, c, d), a);
rgb.push(...this.convertXYZtoRGB(xyz[0], xyz[1], xyz[2]), a);
hsl.push(...this.convertRGBtoHSL(rgb[0], rgb[1], rgb[2]), a);
hwb.push(...this.convertRGBHtoHWB(rgb[0], rgb[1], rgb[2], hsl[0]), a);
lch.push(...this.convertLABtoLCH(b, c, d), a);
oklab.push(...this.convertXYZtoOKLAB(xyz[0], xyz[1], xyz[2]), a);
oklch.push(...this.convertOKLABtoOKLCH(oklab[0], oklab[1], oklab[2]), a);
}
else if (color.indexOf('lch') >= 0 && !supportsLCH) {
[a, b, c, d] = this.extractFromLchColorString(color);
lch.push(b, c, d, a);
lab.push(...this.convertLCHtoLAB(b, c, d), a);
xyz.push(...this.convertLABtoXYZ(lab[0], lab[1], lab[2]), a);
rgb.push(...this.convertXYZtoRGB(xyz[0], xyz[1], xyz[2]), a);
hsl.push(...this.convertRGBtoHSL(rgb[0], rgb[1], rgb[2]), a);
hwb.push(...this.convertRGBHtoHWB(rgb[0], rgb[1], rgb[2], hsl[0]), a);
oklab.push(...this.convertXYZtoOKLAB(xyz[0], xyz[1], xyz[2]), a);
oklch.push(...this.convertOKLABtoOKLCH(oklab[0], oklab[1], oklab[2]), a);
}
else {
[b, c, d, a] = this.getColorFromCanvas(color);
rgb.push(b, c, d, a);
hsl.push(...this.convertRGBtoHSL(b, c, d), a);
hwb.push(...this.convertRGBHtoHWB(b, c, d, hsl[0]), a);
xyz.push(...this.convertRGBtoXYZ(b, c, d), a);
lab.push(...this.convertXYZtoLAB(xyz[0], xyz[1], xyz[2]), a);
lch.push(...this.convertLABtoLCH(lab[0], lab[1], lab[2]), a);
oklab.push(...this.convertXYZtoOKLAB(xyz[0], xyz[1], xyz[2]), a);
oklch.push(...this.convertOKLABtoOKLCH(oklab[0], oklab[1], oklab[2]), a);
}
return this;
};