@tokens-studio/graph-engine
Version:
An execution engine to handle Token Studios generators and resolvers
79 lines • 3.35 kB
JavaScript
import { hexToColor, toColor, toHex } from '../../index.js';
import { ColorSchema, StringSchema } from '../../schemas/index.js';
import { Node } from '../../programmatic/node.js';
import blinder from 'color-blind-esm';
export var ColorBlindnessTypes;
(function (ColorBlindnessTypes) {
ColorBlindnessTypes["TRITANOPIA"] = "tritanopia";
ColorBlindnessTypes["TRITANOMALY"] = "tritanomaly";
ColorBlindnessTypes["DEUTERANOPIA"] = "deuteranopia";
ColorBlindnessTypes["DEUTERANOMALY"] = "deuteranomaly";
ColorBlindnessTypes["PROTANOPIA"] = "protanopia";
ColorBlindnessTypes["PROTANOMALY"] = "protanomaly";
ColorBlindnessTypes["ACHROMATOPSIA"] = "achromatopsia";
ColorBlindnessTypes["ACHROMATOMALY"] = "achromatomaly";
})(ColorBlindnessTypes || (ColorBlindnessTypes = {}));
/**
* Converts provided colors to the colors as perceived by the specified color blindness type.
*/
export default class NodeDefinition extends Node {
static title = 'Color Blindness';
static type = 'studio.tokens.accessibility.colorBlindness';
static description = 'Converts provided colors to the colors as perceived by the specified color blindness type. The output is a hex color string. The color blindness types include protanopia, protanomaly, deuteranopia, deuteranomaly, tritanopia, tritanomaly, achromatopsia, and achromatomaly. The output is a hex color string.';
constructor(props) {
super(props);
this.addInput('color', {
type: {
...ColorSchema,
default: {
space: 'srgb',
channels: [0, 0, 0]
}
}
});
this.addInput('type', {
type: {
...StringSchema,
title: 'Color Blindness Type',
enum: Object.values(ColorBlindnessTypes),
default: ColorBlindnessTypes.PROTANOPIA
}
});
this.addOutput('value', {
type: ColorSchema
});
}
execute() {
const { type, color } = this.getAllInputs();
let processed = toHex(toColor(color));
switch (type) {
case ColorBlindnessTypes.TRITANOPIA:
processed = blinder.tritanopia(processed);
break;
case ColorBlindnessTypes.TRITANOMALY:
processed = blinder.tritanomaly(processed);
break;
case ColorBlindnessTypes.DEUTERANOPIA:
processed = blinder.deuteranopia(processed);
break;
case ColorBlindnessTypes.DEUTERANOMALY:
processed = blinder.deuteranomaly(processed);
break;
case ColorBlindnessTypes.PROTANOMALY:
processed = blinder.protanomaly(processed);
break;
case ColorBlindnessTypes.ACHROMATOPSIA:
processed = blinder.achromatopsia(processed);
break;
case ColorBlindnessTypes.ACHROMATOMALY:
processed = blinder.achromatomaly(processed);
break;
default:
processed = blinder.protanopia(processed);
break;
}
const asCol = hexToColor(processed);
this.outputs.value.set(asCol);
}
}
//# sourceMappingURL=colorBlindness.js.map