UNPKG

@tokens-studio/graph-engine

Version:

An execution engine to handle Token Studios generators and resolvers

79 lines 3.35 kB
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