{"_id":"@cantoo/color-blindness","_rev":"6-ab6ca9e8248fd0962eb33919f1e8601b","name":"@cantoo/color-blindness","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.1":{"name":"@cantoo/color-blindness","version":"1.0.1","keywords":["color-blindness","color-vision","accessibility","colors","simulation","protanopia","deuteranopia","tritanopia","dichromacy","brettel-vienot-mollon","typescript"],"author":{"name":"sharcoux"},"license":"MIT","_id":"@cantoo/color-blindness@1.0.1","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"homepage":"https://github.com/cantoo-scribe/color-blindness#readme","bugs":{"url":"https://github.com/cantoo-scribe/color-blindness/issues"},"dist":{"shasum":"5ff8ef07305e724dde52174f5836ef1e6d40ef25","tarball":"https://registry.npmjs.org/@cantoo/color-blindness/-/color-blindness-1.0.1.tgz","fileCount":15,"integrity":"sha512-f4NWABBI7GYeRaCRBNt8YDQvCRK+zSjbOHV7DD+kvACTEzfRINUOZJo/H0bgRZ7O5QIQwmlDVPdRx/IrV0fQlw==","signatures":[{"sig":"MEYCIQDPVSISP2MF9HEWWhLHRUw/VbkTw9z7aGb4Up/9WkBbngIhAO+obvwNMJOFVwKK8rL96O9vJSc3aaByTuMgMPHXw11W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54185},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"c3972df062057a5f91173387284914d90f70a9d4","scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","release":"release-it","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"sharcoux","actor":{"name":"sharcoux","type":"user","email":"f.billioud@gmail.com"},"email":"f.billioud@gmail.com"},"repository":{"url":"git+https://github.com/cantoo-scribe/color-blindness.git","type":"git"},"_npmVersion":"10.8.2","description":"A TypeScript library for accurate color blindness simulation using the Brettel-Viénot-Mollon algorithm","directories":{},"_nodeVersion":"20.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.0","release-it":"^17.0.0","typescript":"^5.3.0","@types/jest":"^29.5.0","@typescript-eslint/parser":"^8.36.0","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/color-blindness_1.0.1_1752179046658_0.9720532558114687","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@cantoo/color-blindness","version":"1.0.2","keywords":["color-blindness","color-vision","accessibility","colors","simulation","protanopia","deuteranopia","tritanopia","dichromacy","brettel-vienot-mollon","typescript"],"author":{"name":"sharcoux"},"license":"MIT","_id":"@cantoo/color-blindness@1.0.2","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"homepage":"https://github.com/cantoo-scribe/color-blindness#readme","bugs":{"url":"https://github.com/cantoo-scribe/color-blindness/issues"},"dist":{"shasum":"d3b909728caa7bd7b8411f4a42b79dff6b9a249f","tarball":"https://registry.npmjs.org/@cantoo/color-blindness/-/color-blindness-1.0.2.tgz","fileCount":15,"integrity":"sha512-2fWn9a9atrkEbOznOwD0nrubHZwU9MebqOWbqvoAHf7R+cvQY84NXtXNa4sXu2sHnOQwGkPdzSMzdqXmz6QRew==","signatures":[{"sig":"MEQCICjYFa0TLkCbjCBt4XEPWd+BrkE9ZKh4rqimtZXwSqbRAiB4cFJAfwm/CYcooDJRSkKc//7BPub2OiXdU5blH11Ndw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50693},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"baaad3b528aea89aa4025d0847b23f34c2b93696","scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","release":"release-it","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"sharcoux","actor":{"name":"sharcoux","type":"user","email":"f.billioud@gmail.com"},"email":"f.billioud@gmail.com"},"repository":{"url":"git+https://github.com/cantoo-scribe/color-blindness.git","type":"git"},"_npmVersion":"10.8.2","description":"A TypeScript library for accurate color blindness simulation using the Brettel-Viénot-Mollon algorithm","directories":{},"_nodeVersion":"20.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.0","release-it":"^17.0.0","typescript":"^5.3.0","@types/jest":"^29.5.0","@typescript-eslint/parser":"^8.36.0","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/color-blindness_1.0.2_1752180502022_0.40968100021256637","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@cantoo/color-blindness","version":"1.0.3","keywords":["color-blindness","color-vision","accessibility","colors","simulation","protanopia","deuteranopia","tritanopia","dichromacy","brettel-vienot-mollon","typescript"],"author":{"name":"sharcoux"},"license":"MIT","_id":"@cantoo/color-blindness@1.0.3","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"homepage":"https://github.com/cantoo-scribe/color-blindness#readme","bugs":{"url":"https://github.com/cantoo-scribe/color-blindness/issues"},"dist":{"shasum":"b0d770321236c4f6769c6a4b28ff80af362c73c5","tarball":"https://registry.npmjs.org/@cantoo/color-blindness/-/color-blindness-1.0.3.tgz","fileCount":15,"integrity":"sha512-G4IxBmEneEheEl2w7LgUY0XSPTA2R2Kh6fZiCqGD8bpC2nBoDFpJIvgiLc5r+dJV1oV4D3qX63/pdXsQm5GlzA==","signatures":[{"sig":"MEYCIQCkZuYooBkSDgaHOC01T9oQPKPIJVQ+F5XjsxSjHiAVdwIhAMja5y9yMzOxBIRDq+FXrVyojxvfLVYzHQIzdXD2VnEU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51909},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"c3222604a46ab5dde23ec3ea9f635672cfe36450","scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","release":"release-it","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"sharcoux","actor":{"name":"sharcoux","type":"user","email":"f.billioud@gmail.com"},"email":"f.billioud@gmail.com"},"repository":{"url":"git+https://github.com/cantoo-scribe/color-blindness.git","type":"git"},"_npmVersion":"10.8.2","description":"A TypeScript library for accurate color blindness simulation using the Brettel-Viénot-Mollon algorithm","directories":{},"_nodeVersion":"20.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.0","release-it":"^17.0.0","typescript":"^5.3.0","@types/jest":"^29.5.0","@typescript-eslint/parser":"^8.36.0","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/color-blindness_1.0.3_1752183750375_0.08071604123944831","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@cantoo/color-blindness","version":"1.0.4","keywords":["color-blindness","color-vision","accessibility","colors","simulation","protanopia","deuteranopia","tritanopia","dichromacy","brettel-vienot-mollon","typescript"],"author":{"name":"sharcoux"},"license":"MIT","_id":"@cantoo/color-blindness@1.0.4","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"homepage":"https://github.com/cantoo-scribe/color-blindness#readme","bugs":{"url":"https://github.com/cantoo-scribe/color-blindness/issues"},"dist":{"shasum":"13c1eb7090c7a3448d7215000fcdfd65081b0d9d","tarball":"https://registry.npmjs.org/@cantoo/color-blindness/-/color-blindness-1.0.4.tgz","fileCount":15,"integrity":"sha512-Z+iUP1Tbeys8pgapBo8ptQ+4atK9Bf+D/sSuKKYA6VYCwPxT2FQ/QbFTowC9es12DRlDyroMBtM3W/KtthrSQw==","signatures":[{"sig":"MEYCIQCEOo2jr9DWDHADpOCe3Gq5eXDiOa3ITHZ5wFwCetLYegIhAKimWj8VAdXLYf1UYFFrySyaDCkY2DdffFLAz7vyUMnR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52655},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"02804ff2212222eeb82a770b4e61150ceee269bd","scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","release":"release-it","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"sharcoux","email":"f.billioud@gmail.com"},"repository":{"url":"git+https://github.com/cantoo-scribe/color-blindness.git","type":"git"},"_npmVersion":"10.8.2","description":"A TypeScript library for accurate color blindness simulation using the Brettel-Viénot-Mollon algorithm","directories":{},"_nodeVersion":"20.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.0","release-it":"^17.0.0","typescript":"^5.3.0","@types/jest":"^29.5.0","@typescript-eslint/parser":"^8.36.0","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/color-blindness_1.0.4_1752186311138_0.4817570936626212","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@cantoo/color-blindness","version":"1.0.5","keywords":["color-blindness","color-vision","accessibility","colors","simulation","protanopia","deuteranopia","tritanopia","dichromacy","brettel-vienot-mollon","typescript"],"author":{"name":"sharcoux"},"license":"MIT","_id":"@cantoo/color-blindness@1.0.5","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"homepage":"https://github.com/cantoo-scribe/color-blindness#readme","bugs":{"url":"https://github.com/cantoo-scribe/color-blindness/issues"},"dist":{"shasum":"ac9a106af444504cadec996f5eecb7dab7c665ef","tarball":"https://registry.npmjs.org/@cantoo/color-blindness/-/color-blindness-1.0.5.tgz","fileCount":15,"integrity":"sha512-nF9dN9+H7tE5FcUHscJMKy37A9J+SlVsLpc5nX3qD2Qy0ivNCQWamfvtiYrZ+kekaK8XcZvfOPjDgB/pj+snLw==","signatures":[{"sig":"MEYCIQDyzADUuKBx6kxx4UCx8WEWm7gCcqyFieYI7Bc0YerfAgIhAIcdRhnyddV10VW2g5Yz5OUKa+IvBQSkvgzlNjIc12A5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52663},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e1aa601fed7454e6f1e991b640ab22b07185935e","scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","release":"release-it","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"sharcoux","email":"f.billioud@gmail.com"},"repository":{"url":"git+https://github.com/cantoo-scribe/color-blindness.git","type":"git"},"_npmVersion":"10.8.2","description":"A TypeScript library for accurate color blindness simulation using the Brettel-Viénot-Mollon algorithm","directories":{},"_nodeVersion":"20.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.0","release-it":"^17.0.0","typescript":"^5.3.0","@types/jest":"^29.5.0","@typescript-eslint/parser":"^8.36.0","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/color-blindness_1.0.5_1752194832564_0.03460136517967438","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-07-10T20:24:06.578Z","modified":"2026-05-05T16:34:05.797Z","1.0.1":"2025-07-10T20:24:06.870Z","1.0.2":"2025-07-10T20:48:22.183Z","1.0.3":"2025-07-10T21:42:30.542Z","1.0.4":"2025-07-10T22:25:11.357Z","1.0.5":"2025-07-11T00:47:12.770Z"},"bugs":{"url":"https://github.com/cantoo-scribe/color-blindness/issues"},"author":{"name":"sharcoux"},"license":"MIT","homepage":"https://github.com/cantoo-scribe/color-blindness#readme","keywords":["color-blindness","color-vision","accessibility","colors","simulation","protanopia","deuteranopia","tritanopia","dichromacy","brettel-vienot-mollon","typescript"],"repository":{"url":"git+https://github.com/cantoo-scribe/color-blindness.git","type":"git"},"description":"A TypeScript library for accurate color blindness simulation using the Brettel-Viénot-Mollon algorithm","maintainers":[{"email":"f.billioud@gmail.com","name":"sharcoux"},{"email":"matheus_f.ribeiro@hotmail.com","name":"ribeirofmatheus"},{"email":"matheus.r.d.s10@hotmail.com","name":"matheusrdsantos"},{"email":"gabrielnsdantas@gmail.com","name":"gabrielnsd"},{"email":"felipe@cantoo.fr","name":"felipecantoo"},{"email":"nicodemos54324@gmail.com","name":"nicodemos234"}],"readme":"# @cantoo/color-blindness\n\nA TypeScript library for accurate color blindness simulation using the Brettel-Viénot-Mollon algorithm.\n\n[![npm version](https://badge.fury.io/js/@cantoo%2Fcolor-blindness.svg)](https://badge.fury.io/js/@cantoo%2Fcolor-blindness)\n[![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=flat&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Overview\n\nThis library provides scientifically accurate simulation of how colors appear to individuals with different types of color vision deficiency (color blindness). The implementation is based on the research by **Hans Brettel, Françoise Viénot, and John D. Mollon** published in the *Journal of the Optical Society of America A* (1997).\n\n## Scientific Foundation\n\n**Reference:** \"Computerized simulation of color appearance for dichromats\"  \n**Authors:** Hans Brettel, Françoise Viénot, and John D. Mollon  \n**Journal:** Journal of the Optical Society of America A, Vol. 14, No. 10, pp. 2647-2655 (October 1997)  \n**DOI:** [10.1364/JOSAA.14.002647](https://doi.org/10.1364/JOSAA.14.002647)\n\nThe algorithm uses confusion lines in the CIE chromaticity diagram to accurately simulate color perception for different types of dichromacy and anomalous trichromacy.\n\n## Installation\n\n```bash\nnpm install @cantoo/color-blindness\n```\n\n## Quick Start\n\n```typescript\nimport { protanopia, deuteranopia, simulate, ColorBlindnessType } from '@cantoo/color-blindness';\n\n// Direct functions return hex colors\nconst protanopiaColor = protanopia('#FF0000');\nconsole.log(protanopiaColor); // '#9C9C00'\n\n// Works with different input formats\nconst deuteranopia1 = deuteranopia('#FF0000');                    // Hex string\nconst deuteranopia2 = deuteranopia([255, 0, 0]);                  // RGB array\nconst deuteranopia3 = deuteranopia({ R: 255, G: 0, B: 0 });      // RGB object\n\n// Use simulate() for custom options\nconst customResult = simulate('#FF0000', {\n  type: ColorBlindnessType.Deuteranomaly,\n  anomalize: true\n});\nconsole.log(customResult); // '#CB7B00'\n```\n\n## Supported Color Vision Deficiencies\n\n| Type | Description | Method |\n|------|-------------|---------|\n| **Protanopia** | Complete absence of red photoreceptors | `protanopia()` |\n| **Protanomaly** | Reduced sensitivity to red | `protanomaly()` |\n| **Deuteranopia** | Complete absence of green photoreceptors | `deuteranopia()` |\n| **Deuteranomaly** | Reduced sensitivity to green | `deuteranomaly()` |\n| **Tritanopia** | Complete absence of blue photoreceptors | `tritanopia()` |\n| **Tritanomaly** | Reduced sensitivity to blue | `tritanomaly()` |\n| **Achromatopsia** | Complete color blindness (monochromacy) | `achromatopsia()` |\n| **Achromatomaly** | Reduced color sensitivity | `achromatomaly()` |\n\n## Usage Examples\n\n### Direct Functions (Recommended)\n\n```typescript\nimport { protanopia, deuteranopia, tritanopia } from '@cantoo/color-blindness';\n\n// Direct functions return hex colors - perfect for most use cases\nconst protanopiaColor = protanopia('#FF6B35');      // '#A86B00'\nconst deuteranopiaColor = deuteranopia('#FF6B35');  // '#C4B835'\nconst tritanopiaColor = tritanopia('#FF6B35');      // '#FF6B56'\n\n// Works with all input formats\nconst fromHex = protanopia('#FF6B35');\nconst fromRGB = protanopia({ R: 255, G: 107, B: 53 });\nconst fromArray = protanopia([255, 107, 53]);\n```\n\n### Custom Options\n\n```typescript\nimport { simulate, ColorBlindnessType } from '@cantoo/color-blindness';\n\n// Use simulate() for custom configurations\nconst customResult = simulate('#FF6B35', {\n  type: ColorBlindnessType.Protanomaly,\n  anomalize: true,\n  colorProfile: 'sRGB',\n  gammaCorrection: 2.2\n});\nconsole.log(customResult); // '#D4823A'\n```\n\n### Batch Processing\n\n```typescript\nimport { protanopia, simulate, ColorBlindnessType } from '@cantoo/color-blindness';\n\nconst colors = ['#FF0000', '#00FF00', '#0000FF', '#FFFF00'];\n\n// Simple batch processing\nconst protanopiaColors = colors.map(color => protanopia(color));\nconsole.log(protanopiaColors); // ['#9C9C00', '#9C9C00', '#0000FF', '#9C9C00']\n\n// Multiple types batch processing\nconst colorBlindnessTypes = [\n  ColorBlindnessType.Protanopia,\n  ColorBlindnessType.Deuteranopia,\n  ColorBlindnessType.Tritanopia\n];\n\nconst results = colors.map(color => \n  colorBlindnessTypes.map(type => \n    simulate(color, { type })\n  )\n);\n```\n\n## API Reference\n\n### Functions\n\n#### Direct Functions (Return hex strings)\n- `protanopia(input: ColorInput): string`\n- `protanomaly(input: ColorInput): string`\n- `deuteranopia(input: ColorInput): string`\n- `deuteranomaly(input: ColorInput): string`\n- `tritanopia(input: ColorInput): string`\n- `tritanomaly(input: ColorInput): string`\n- `achromatopsia(input: ColorInput): string`\n- `achromatomaly(input: ColorInput): string`\n\n#### Custom Simulation\n- `simulate(input: ColorInput, options: SimulationOptions): string`\n\n### Types\n\n#### ColorInput\n```typescript\ntype ColorInput = string | RGBColor | [number, number, number];\n```\n\n#### RGBColor\n```typescript\ninterface RGBColor {\n  R: number; // 0-255\n  G: number; // 0-255\n  B: number; // 0-255\n}\n```\n\n#### SimulationOptions\n```typescript\ninterface SimulationOptions {\n  type: ColorBlindnessType;\n  anomalize?: boolean;           // Default: false\n  colorProfile?: 'sRGB' | 'generic'; // Default: 'sRGB'\n  gammaCorrection?: number;      // Default: 2.2\n}\n```\n\n\n\n## Algorithm Details\n\n### Color Space Conversions\n\nThe library performs precise color space conversions:\n1. **RGB → XYZ** with gamma correction\n2. **XYZ → xyY** chromaticity coordinates\n3. **Confusion line calculation** using the Brettel-Viénot-Mollon algorithm\n4. **Gamut mapping** to ensure valid RGB output\n5. **XYZ → RGB** with inverse gamma correction\n\n### Gamma Correction\n\n- **sRGB Profile**: Uses the standard sRGB gamma correction curve\n- **Generic Profile**: Uses simple power law gamma correction (γ = 2.2 by default)\n\n### Gamut Mapping\n\nThe algorithm ensures that simulated colors remain within the displayable RGB gamut by:\n1. Converting simulated colors to linear RGB\n2. Calculating the direction toward neutral gray (D65 white point)\n3. Applying proportional adjustment to bring out-of-gamut colors back into range\n\n## Development\n\n### Setup\n\n```bash\ngit clone <repository-url>\ncd color-blindness\nnpm install\n```\n\n### Available Scripts\n\n- `npm run build` - Compile TypeScript to JavaScript\n- `npm run lint` - Check code with ESLint\n- `npm run lint:fix` - Auto-fix ESLint errors\n- `npm test` - Run Jest test suite\n- `npm run release` - Create a new release with release-it\n\n### Pre-publication Checks\n\nBefore each publication, the project automatically:\n1. ✅ Runs ESLint (code quality)\n2. ✅ Compiles TypeScript (build verification)\n3. ✅ Generates type definitions\n\n### Publishing\n\nTo publish a new version:\n\n```bash\nnpm run release\n```\n\nThis will automatically:\n- Run linting and build\n- Increment version number\n- Create git tag\n- Publish to npm\n- Create GitHub release\n\n## Browser Compatibility\n\nThe library works in all modern browsers and Node.js environments that support:\n- ES2020 features\n- TypeScript (for development)\n\n## Performance\n\nThe simulation algorithms are optimized for real-time use:\n- ⚡ Fast matrix operations\n- 🎯 Efficient color space conversions\n- 📐 Minimal computational overhead\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- **Hans Brettel, Françoise Viénot, and John D. Mollon** for their groundbreaking research on color vision simulation\n- The color science community for continued research in accessible color design\n- All contributors to this open-source project\n\n## Related Projects\n\n- [Coblis](https://www.color-blindness.com/coblis-color-blindness-simulator/) - Online color blindness simulator\n- [Colorbrewer](https://colorbrewer2.org/) - Color schemes for maps and charts\n- [Accessible Colors](https://accessible-colors.com/) - Color accessibility tools\n\n---\n\n**Made with ❤️ for accessible design** ","readmeFilename":"README.md"}