@sardine/colour 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{convertRGBtoXYZ:()=>convertRGBtoXYZ,convertXYZtoLab:()=>convertXYZtoLab,convertRGBtoLab:()=>convertRGBtoLab,convertHextoRGB:()=>convertHextoRGB});const _indexJs=require("./util/index.js");function convertRGBtoXYZ(colour){const{R,G,B}=colour;const _R=(0,_indexJs.linearRGB)(R)*100;const _G=(0,_indexJs.linearRGB)(G)*100;const _B=(0,_indexJs.linearRGB)(B)*100;const X=_R*.4124+_G*.3576+_B*.1805;const Y=_R*.2126+_G*.7152+_B*.0722;const Z=_R*.0193+_G*.1192+_B*.9505;return{X,Y,Z}}function convertXYZtoLab(colour){const{X,Y,Z}=colour;const _X=X/95.047;const _Y=Y/100;const _Z=Z/108.883;const fX=(0,_indexJs.constrainLab)(_X);const fY=(0,_indexJs.constrainLab)(_Y);const fZ=(0,_indexJs.constrainLab)(_Z);const L=116*fY-16;const a=500*(fX-fY);const b=200*(fY-fZ);return{L,a,b}}function convertRGBtoLab(colour){const XYZColour=convertRGBtoXYZ(colour);return convertXYZtoLab(XYZColour)}function convertHextoRGB(hex){const hexRegex=/^#[a-fA-F0-9]{6}$/;const hexAlphaRegex=/^#[a-fA-F0-9]{8}$/;const shortHexRegex=/^#[a-fA-F0-9]{3}$/;const shortAlphaHexRegex=/^#[a-fA-F0-9]{4}$/;if(typeof hex!=="string"){throw new Error(`convertHextoRGB expects a string but got a ${typeof hex}`)}if(hex.match(hexRegex)){return{R:parseInt(`${hex[1]}${hex[2]}`,16),G:parseInt(`${hex[3]}${hex[4]}`,16),B:parseInt(`${hex[5]}${hex[6]}`,16)}}if(hex.match(shortHexRegex)){return{R:parseInt(`${hex[1]}${hex[1]}`,16),G:parseInt(`${hex[2]}${hex[2]}`,16),B:parseInt(`${hex[3]}${hex[3]}`,16)}}if(hex.match(hexAlphaRegex)){return{R:parseInt(`${hex[1]}${hex[2]}`,16),G:parseInt(`${hex[3]}${hex[4]}`,16),B:parseInt(`${hex[5]}${hex[6]}`,16),A:parseInt(`${hex[7]}${hex[8]}`,16)/255}}if(hex.match(shortAlphaHexRegex)){return{R:parseInt(`${hex[1]}${hex[1]}`,16),G:parseInt(`${hex[2]}${hex[2]}`,16),B:parseInt(`${hex[3]}${hex[3]}`,16),A:parseInt(`${hex[4]}${hex[4]}`,16)/255}}throw new Error(`convertHextoRGB expects an valid hexadecimal colour value but got ${hex}`)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{convertRGBtoXYZ:()=>convertRGBtoXYZ,convertXYZtoLab:()=>convertXYZtoLab,convertRGBtoLab:()=>convertRGBtoLab,convertHextoRGB:()=>convertHextoRGB});const _indexJs=require("./util/index.js");const _regexersJs=require("./util/regexers.js");function convertRGBtoXYZ(colour){const{R,G,B}=colour;const _R=(0,_indexJs.linearRGB)(R)*100;const _G=(0,_indexJs.linearRGB)(G)*100;const _B=(0,_indexJs.linearRGB)(B)*100;const X=_R*.4124+_G*.3576+_B*.1805;const Y=_R*.2126+_G*.7152+_B*.0722;const Z=_R*.0193+_G*.1192+_B*.9505;return{X,Y,Z}}function convertXYZtoLab(colour){const{X,Y,Z}=colour;const _X=X/95.047;const _Y=Y/100;const _Z=Z/108.883;const fX=(0,_indexJs.constrainLab)(_X);const fY=(0,_indexJs.constrainLab)(_Y);const fZ=(0,_indexJs.constrainLab)(_Z);const L=116*fY-16;const a=500*(fX-fY);const b=200*(fY-fZ);return{L,a,b}}function convertRGBtoLab(colour){const XYZColour=convertRGBtoXYZ(colour);return convertXYZtoLab(XYZColour)}function convertHextoRGB(hex){if(typeof hex!=="string"){throw new Error(`convertHextoRGB expects a string but got a ${typeof hex}`)}if(hex.match(_regexersJs.hexRegex)){return{R:parseInt(`${hex[1]}${hex[2]}`,16),G:parseInt(`${hex[3]}${hex[4]}`,16),B:parseInt(`${hex[5]}${hex[6]}`,16)}}if(hex.match(_regexersJs.shortHexRegex)){return{R:parseInt(`${hex[1]}${hex[1]}`,16),G:parseInt(`${hex[2]}${hex[2]}`,16),B:parseInt(`${hex[3]}${hex[3]}`,16)}}if(hex.match(_regexersJs.hexAlphaRegex)){return{R:parseInt(`${hex[1]}${hex[2]}`,16),G:parseInt(`${hex[3]}${hex[4]}`,16),B:parseInt(`${hex[5]}${hex[6]}`,16),A:parseInt(`${hex[7]}${hex[8]}`,16)/255}}if(hex.match(_regexersJs.shortAlphaHexRegex)){return{R:parseInt(`${hex[1]}${hex[1]}`,16),G:parseInt(`${hex[2]}${hex[2]}`,16),B:parseInt(`${hex[3]}${hex[3]}`,16),A:parseInt(`${hex[4]}${hex[4]}`,16)/255}}throw new Error(`convertHextoRGB expects an valid hexadecimal colour value but got ${hex}`)}
2
2
  //# sourceMappingURL=converters.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/converters.ts"],"sourcesContent":["import type { LabColour, RGBColour, XYZColour } from \"./types\";\nimport { constrainLab, linearRGB } from \"./util/index.js\";\n\n/**\n * Converts sRGB colour space to XYZ.\n * Math comes from https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation\n * @param {RGBColour} colour sRGB colour\n * @return {XYZColour} XYZ colour\n */\nexport function convertRGBtoXYZ(colour: RGBColour): XYZColour {\n const { R, G, B } = colour;\n\n const _R = linearRGB(R) * 100;\n const _G = linearRGB(G) * 100;\n const _B = linearRGB(B) * 100;\n\n // Magic numbers are pre-calculated sRGB D65 constants\n const X = _R * 0.4124 + _G * 0.3576 + _B * 0.1805;\n const Y = _R * 0.2126 + _G * 0.7152 + _B * 0.0722;\n const Z = _R * 0.0193 + _G * 0.1192 + _B * 0.9505;\n\n return { X, Y, Z };\n}\n\n/**\n * Converts XYZ colour space to Lab\n * Math comes from https://en.wikipedia.org/wiki/CIELAB_color_space#From_CIEXYZ_to_CIELAB[11]\n * @param colour XYZ colour\n * @return {LabColour} Lab colour\n */\nexport function convertXYZtoLab(colour: XYZColour): LabColour {\n const { X, Y, Z } = colour;\n\n // Magic numbers are normalised for relative luminance from the D65 standard\n const _X = X / 95.047;\n const _Y = Y / 100;\n const _Z = Z / 108.883;\n\n const fX = constrainLab(_X);\n const fY = constrainLab(_Y);\n const fZ = constrainLab(_Z);\n\n const L = 116 * fY - 16;\n const a = 500 * (fX - fY);\n const b = 200 * (fY - fZ);\n\n return { L, a, b };\n}\n\n/**\n * Indirectly converts RGB to Lab.\n * First converts RGB to XYZ,\n * Then converts XYZ to Lab\n * @param {RGBColour} colour sRGB colour\n * @return {LabColour} Lab colour\n */\nexport function convertRGBtoLab(colour: RGBColour): LabColour {\n const XYZColour = convertRGBtoXYZ(colour);\n return convertXYZtoLab(XYZColour);\n}\n\nexport function convertHextoRGB(hex: string): RGBColour {\n /** Six digit Hexadecimal colour, ie: #12FF21 */\n const hexRegex = /^#[a-fA-F0-9]{6}$/;\n /** Eight digit Hexadecimal colour, ie: #12FF21BE */\n const hexAlphaRegex = /^#[a-fA-F0-9]{8}$/;\n /** Three digit Hexadecimal colour, ie: #FFF */\n const shortHexRegex = /^#[a-fA-F0-9]{3}$/;\n /** Four digit Hexadecimal colour, ie: #FFF4 */\n const shortAlphaHexRegex = /^#[a-fA-F0-9]{4}$/;\n\n if (typeof hex !== \"string\") {\n throw new Error(`convertHextoRGB expects a string but got a ${typeof hex}`);\n }\n\n if (hex.match(hexRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[2]}`, 16),\n G: parseInt(`${hex[3]}${hex[4]}`, 16),\n B: parseInt(`${hex[5]}${hex[6]}`, 16),\n };\n }\n\n if (hex.match(shortHexRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[1]}`, 16),\n G: parseInt(`${hex[2]}${hex[2]}`, 16),\n B: parseInt(`${hex[3]}${hex[3]}`, 16),\n };\n }\n\n if (hex.match(hexAlphaRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[2]}`, 16),\n G: parseInt(`${hex[3]}${hex[4]}`, 16),\n B: parseInt(`${hex[5]}${hex[6]}`, 16),\n A: parseInt(`${hex[7]}${hex[8]}`, 16) / 255,\n };\n }\n\n if (hex.match(shortAlphaHexRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[1]}`, 16),\n G: parseInt(`${hex[2]}${hex[2]}`, 16),\n B: parseInt(`${hex[3]}${hex[3]}`, 16),\n A: parseInt(`${hex[4]}${hex[4]}`, 16) / 255,\n };\n }\n\n throw new Error(\n `convertHextoRGB expects an valid hexadecimal colour value but got ${hex}`\n );\n}\n"],"names":["convertRGBtoXYZ","convertXYZtoLab","convertRGBtoLab","convertHextoRGB","colour","R","G","B","_R","linearRGB","_G","_B","X","Y","Z","_X","_Y","_Z","fX","constrainLab","fY","fZ","L","a","b","XYZColour","hex","hexRegex","hexAlphaRegex","shortHexRegex","shortAlphaHexRegex","Error","match","parseInt","A"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/converters.ts"],"sourcesContent":["import type { LabColour, RGBColour, XYZColour } from \"./types\";\nimport { constrainLab, linearRGB } from \"./util/index.js\";\nimport { hexAlphaRegex, hexRegex, shortAlphaHexRegex, shortHexRegex } from \"./util/regexers.js\";\n\n/**\n * Converts sRGB colour space to XYZ.\n * Math comes from https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation\n * @param {RGBColour} colour sRGB colour\n * @return {XYZColour} XYZ colour\n */\nexport function convertRGBtoXYZ(colour: RGBColour): XYZColour {\n const { R, G, B } = colour;\n\n const _R = linearRGB(R) * 100;\n const _G = linearRGB(G) * 100;\n const _B = linearRGB(B) * 100;\n\n // Magic numbers are pre-calculated sRGB D65 constants\n const X = _R * 0.4124 + _G * 0.3576 + _B * 0.1805;\n const Y = _R * 0.2126 + _G * 0.7152 + _B * 0.0722;\n const Z = _R * 0.0193 + _G * 0.1192 + _B * 0.9505;\n\n return { X, Y, Z };\n}\n\n/**\n * Converts XYZ colour space to Lab\n * Math comes from https://en.wikipedia.org/wiki/CIELAB_color_space#From_CIEXYZ_to_CIELAB[11]\n * @param colour XYZ colour\n * @return {LabColour} Lab colour\n */\nexport function convertXYZtoLab(colour: XYZColour): LabColour {\n const { X, Y, Z } = colour;\n\n // Magic numbers are normalised for relative luminance from the D65 standard\n const _X = X / 95.047;\n const _Y = Y / 100;\n const _Z = Z / 108.883;\n\n const fX = constrainLab(_X);\n const fY = constrainLab(_Y);\n const fZ = constrainLab(_Z);\n\n const L = 116 * fY - 16;\n const a = 500 * (fX - fY);\n const b = 200 * (fY - fZ);\n\n return { L, a, b };\n}\n\n/**\n * Indirectly converts RGB to Lab.\n * First converts RGB to XYZ,\n * Then converts XYZ to Lab\n * @param {RGBColour} colour sRGB colour\n * @return {LabColour} Lab colour\n */\nexport function convertRGBtoLab(colour: RGBColour): LabColour {\n const XYZColour = convertRGBtoXYZ(colour);\n return convertXYZtoLab(XYZColour);\n}\n\nexport function convertHextoRGB(hex: string): RGBColour {\n if (typeof hex !== \"string\") {\n throw new Error(`convertHextoRGB expects a string but got a ${typeof hex}`);\n }\n\n if (hex.match(hexRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[2]}`, 16),\n G: parseInt(`${hex[3]}${hex[4]}`, 16),\n B: parseInt(`${hex[5]}${hex[6]}`, 16),\n };\n }\n\n if (hex.match(shortHexRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[1]}`, 16),\n G: parseInt(`${hex[2]}${hex[2]}`, 16),\n B: parseInt(`${hex[3]}${hex[3]}`, 16),\n };\n }\n\n if (hex.match(hexAlphaRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[2]}`, 16),\n G: parseInt(`${hex[3]}${hex[4]}`, 16),\n B: parseInt(`${hex[5]}${hex[6]}`, 16),\n A: parseInt(`${hex[7]}${hex[8]}`, 16) / 255,\n };\n }\n\n if (hex.match(shortAlphaHexRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[1]}`, 16),\n G: parseInt(`${hex[2]}${hex[2]}`, 16),\n B: parseInt(`${hex[3]}${hex[3]}`, 16),\n A: parseInt(`${hex[4]}${hex[4]}`, 16) / 255,\n };\n }\n\n throw new Error(\n `convertHextoRGB expects an valid hexadecimal colour value but got ${hex}`\n );\n}\n"],"names":["convertRGBtoXYZ","convertXYZtoLab","convertRGBtoLab","convertHextoRGB","colour","R","G","B","_R","linearRGB","_G","_B","X","Y","Z","_X","_Y","_Z","fX","constrainLab","fY","fZ","L","a","b","XYZColour","hex","Error","match","hexRegex","parseInt","shortHexRegex","hexAlphaRegex","A","shortAlphaHexRegex"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"getSRGBLuminanceFromHex",{enumerable:true,get:()=>getSRGBLuminanceFromHex});const _convertersJs=require("./converters.js");const _indexJs=require("./util/index.js");const getSRGBLuminanceFromHex=colour=>{const rgbColor=(0,_convertersJs.convertHextoRGB)(colour);const r=(0,_indexJs.linearRGB)(rgbColor.R);const g=(0,_indexJs.linearRGB)(rgbColor.G);const b=(0,_indexJs.linearRGB)(rgbColor.B);return .2126*r+.7152*g+.0722*b}
2
+ //# sourceMappingURL=getSRGBLuminanceFromHex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/getSRGBLuminanceFromHex.ts"],"sourcesContent":["import { convertHextoRGB } from \"./converters.js\";\nimport { linearRGB } from \"./util/index.js\";\n\n/**\n * Returns the relative luminance of a colour in the sRGB space.\n *\n * The calculations are compatible with WCAG 3.0 as it aligns with the sRGB spec\n * and difference to WCAG 2.1 is minimal in a 8 bit channel.\n *\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n *\n * https://www.w3.org/WAI/GL/wiki/Relative_luminance\n * @param colour an hexadecimal colour\n */\nexport const getSRGBLuminanceFromHex = (colour: string) => {\n const rgbColor = convertHextoRGB(colour);\n const r = linearRGB(rgbColor.R);\n const g = linearRGB(rgbColor.G);\n const b = linearRGB(rgbColor.B);\n\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n"],"names":["getSRGBLuminanceFromHex","colour","rgbColor","convertHextoRGB","r","linearRGB","R","g","G","b","B"],"mappings":"AAAA,oGAcaA,yBAAuB,0BAAvBA,uBAAuB,+BAdJ,iBAAiB,yBACvB,iBAAiB,CAapC,OAAMA,uBAAuB,CAAG,AAACC,MAAc,EAAK,CACzD,MAAMC,QAAQ,CAAGC,GAAAA,aAAe,gBAAA,EAACF,MAAM,CAAC,AAAC,AACzC,OAAMG,CAAC,CAAGC,GAAAA,QAAS,UAAA,EAACH,QAAQ,CAACI,CAAC,CAAC,AAAC,AAChC,OAAMC,CAAC,CAAGF,GAAAA,QAAS,UAAA,EAACH,QAAQ,CAACM,CAAC,CAAC,AAAC,AAChC,OAAMC,CAAC,CAAGJ,GAAAA,QAAS,UAAA,EAACH,QAAQ,CAACQ,CAAC,CAAC,AAAC,AAEhC,QAAO,KAAM,CAAGN,CAAC,CAAG,KAAM,CAAGG,CAAC,CAAG,KAAM,CAAGE,CAAC,AAAC,CAC7C,AAAC"}
package/dist/cjs/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{ciede2000:()=>_ciede2000Js.ciede2000,convertHextoRGB:()=>_convertersJs.convertHextoRGB,convertRGBtoLab:()=>_convertersJs.convertRGBtoLab,convertRGBtoXYZ:()=>_convertersJs.convertRGBtoXYZ,convertXYZtoLab:()=>_convertersJs.convertXYZtoLab,RGBdistance:()=>_rgbdistanceJs.RGBdistance});const _ciede2000Js=require("./CIEDE2000.js");const _convertersJs=require("./converters.js");const _rgbdistanceJs=require("./RGBdistance.js")
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{ciede2000:()=>_ciede2000Js.ciede2000,convertHextoRGB:()=>_convertersJs.convertHextoRGB,convertRGBtoLab:()=>_convertersJs.convertRGBtoLab,convertRGBtoXYZ:()=>_convertersJs.convertRGBtoXYZ,convertXYZtoLab:()=>_convertersJs.convertXYZtoLab,RGBdistance:()=>_rgbdistanceJs.RGBdistance,getSRGBLuminanceFromHex:()=>_getSRGBLuminanceFromHexJs.getSRGBLuminanceFromHex});const _ciede2000Js=require("./CIEDE2000.js");const _convertersJs=require("./converters.js");const _rgbdistanceJs=require("./RGBdistance.js");const _getSRGBLuminanceFromHexJs=require("./getSRGBLuminanceFromHex.js")
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export { ciede2000 } from \"./CIEDE2000.js\";\nexport {\n convertHextoRGB,\n convertRGBtoLab,\n convertRGBtoXYZ,\n convertXYZtoLab,\n} from \"./converters.js\";\nexport { RGBdistance } from \"./RGBdistance.js\";\n"],"names":["ciede2000","convertHextoRGB","convertRGBtoLab","convertRGBtoXYZ","convertXYZtoLab","RGBdistance"],"mappings":"AAAA,2MAASA,SAAS,KAATA,YAAS,UAAA,CAEhBC,eAAe,KAAfA,aAAe,gBAAA,CACfC,eAAe,KAAfA,aAAe,gBAAA,CACfC,eAAe,KAAfA,aAAe,gBAAA,CACfC,eAAe,KAAfA,aAAe,gBAAA,CAERC,WAAW,KAAXA,cAAW,YAAA,8BAPM,gBAAgB,8BAMnC,iBAAiB,+BACI,kBAAkB,CAAC"}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export { ciede2000 } from \"./CIEDE2000.js\";\nexport {\n convertHextoRGB,\n convertRGBtoLab,\n convertRGBtoXYZ,\n convertXYZtoLab,\n} from \"./converters.js\";\nexport { RGBdistance } from \"./RGBdistance.js\";\nexport { getSRGBLuminanceFromHex } from \"./getSRGBLuminanceFromHex.js\";\n"],"names":["ciede2000","convertHextoRGB","convertRGBtoLab","convertRGBtoXYZ","convertXYZtoLab","RGBdistance","getSRGBLuminanceFromHex"],"mappings":"AAAA,2MAASA,SAAS,KAATA,YAAS,UAAA,CAEhBC,eAAe,KAAfA,aAAe,gBAAA,CACfC,eAAe,KAAfA,aAAe,gBAAA,CACfC,eAAe,KAAfA,aAAe,gBAAA,CACfC,eAAe,KAAfA,aAAe,gBAAA,CAERC,WAAW,KAAXA,cAAW,YAAA,CACXC,uBAAuB,KAAvBA,0BAAuB,wBAAA,8BARN,gBAAgB,8BAMnC,iBAAiB,+BACI,kBAAkB,2CACN,8BAA8B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/util/index.ts"],"sourcesContent":["import type { HueHelper } from \"../types\";\n\n/**\n * Calculates the Hue derivative\n * @param x A numeric expression representing the cartesian x-coordinate.\n * @param y A numeric expression representing the cartesian y-coordinate.\n */\nexport function hue_d(x: number, y: number): number {\n // early exit if both values are 0\n if (x === 0 && y === 0) {\n return 0;\n }\n /** The angle in degrees */\n const angle = Math.atan2(x, y) * (180 / Math.PI);\n if (angle >= 0) {\n return angle;\n }\n return angle + 360;\n}\n\n/**\n * Calculates the difference between two Hue derivatives\n * @param HueHelper param\n */\nexport function deltaHue_d({ C1, C2, h1_d, h2_d }: HueHelper): number {\n if (C1 * C2 === 0) {\n return 0;\n }\n if (Math.abs(h2_d - h1_d) <= 180) {\n return h2_d - h1_d;\n }\n if (h2_d - h1_d > 180) {\n return h2_d - h1_d - 360;\n }\n if (h2_d - h1_d < -180) {\n return h2_d - h1_d + 360;\n }\n // it should never reach this point\n return 0;\n}\n\n/**\n * Calculates the mean between two Hue derivatives\n * @param HueHelper param\n */\nexport function meanHue_d({ C1, C2, h1_d, h2_d }: HueHelper): number {\n if (C1 * C2 === 0) {\n return h2_d + h1_d;\n }\n if (Math.abs(h1_d - h2_d) <= 180) {\n return (h2_d + h1_d) / 2;\n }\n if (Math.abs(h1_d - h2_d) > 180 && h1_d + h2_d < 360) {\n return (h2_d + h1_d + 360) / 2;\n }\n if (Math.abs(h1_d - h2_d) > 180 && h1_d + h2_d >= 360) {\n return (h2_d + h1_d - 360) / 2;\n }\n // it should never reach this point\n return 0;\n}\n\n/**\n * Converts a number in degrees to radians\n * @param n Number in degrees to be converted\n */\nexport const toRadians = (n: number): number => n * (Math.PI / 180);\n\n/**\n * Calculates a recurring square root\n * @param n Input number\n */\nexport const bigSquare = (n: number): number =>\n Math.sqrt(Math.pow(n, 7) / (Math.pow(n, 7) + Math.pow(25, 7)));\n\n/**\n * Normalise black and white colorimetry as specified in IEC 61966-2-1\n * It takes a RGB channel in the range [0 - 255] and returns a value between 0 and 1\n * @param n number to be normalised\n */\nexport function linearRGB(rgbValue: number) {\n const rgbRatio = rgbValue / 255;\n let linearValue: number;\n\n if (rgbRatio > 0.04045) {\n linearValue = Math.pow((rgbRatio + 0.055) / 1.055, 2.4);\n } else {\n linearValue = rgbRatio / 12.92;\n }\n\n return linearValue;\n}\n\n/**\n * The division of the f function domain into two parts was done to prevent an infinite slope at n = 0\n * @param n Number to be constrained\n */\nexport function constrainLab(n: number): number {\n const delta = 6 / 29;\n const deltaCube = Math.pow(delta, 3);\n let t: number;\n\n if (n > deltaCube) {\n t = Math.cbrt(n);\n } else {\n t = n / (3 * Math.pow(delta, 2)) + 4 / 29;\n }\n\n return t;\n}\n"],"names":["hue_d","deltaHue_d","meanHue_d","toRadians","bigSquare","linearRGB","constrainLab","x","y","angle","Math","atan2","PI","C1","C2","h1_d","h2_d","abs","n","sqrt","pow","rgbValue","rgbRatio","linearValue","delta","deltaCube","t","cbrt"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/util/index.ts"],"sourcesContent":["import type { HueHelper } from \"../types\";\n\n/**\n * Calculates the Hue derivative\n * @param x A numeric expression representing the cartesian x-coordinate.\n * @param y A numeric expression representing the cartesian y-coordinate.\n */\nexport function hue_d(x: number, y: number): number {\n // early exit if both values are 0\n if (x === 0 && y === 0) {\n return 0;\n }\n /** The angle in degrees */\n const angle = Math.atan2(x, y) * (180 / Math.PI);\n if (angle >= 0) {\n return angle;\n }\n return angle + 360;\n}\n\n/**\n * Calculates the difference between two Hue derivatives\n * @param HueHelper param\n */\nexport function deltaHue_d({ C1, C2, h1_d, h2_d }: HueHelper): number {\n if (C1 * C2 === 0) {\n return 0;\n }\n if (Math.abs(h2_d - h1_d) <= 180) {\n return h2_d - h1_d;\n }\n if (h2_d - h1_d > 180) {\n return h2_d - h1_d - 360;\n }\n if (h2_d - h1_d < -180) {\n return h2_d - h1_d + 360;\n }\n // it should never reach this point\n return 0;\n}\n\n/**\n * Calculates the mean between two Hue derivatives\n * @param HueHelper param\n */\nexport function meanHue_d({ C1, C2, h1_d, h2_d }: HueHelper): number {\n if (C1 * C2 === 0) {\n return h2_d + h1_d;\n }\n if (Math.abs(h1_d - h2_d) <= 180) {\n return (h2_d + h1_d) / 2;\n }\n if (Math.abs(h1_d - h2_d) > 180 && h1_d + h2_d < 360) {\n return (h2_d + h1_d + 360) / 2;\n }\n if (Math.abs(h1_d - h2_d) > 180 && h1_d + h2_d >= 360) {\n return (h2_d + h1_d - 360) / 2;\n }\n // it should never reach this point\n return 0;\n}\n\n/**\n * Converts a number in degrees to radians\n * @param n Number in degrees to be converted\n */\nexport const toRadians = (n: number): number => n * (Math.PI / 180);\n\n/**\n * Calculates a recurring square root\n * @param n Input number\n */\nexport const bigSquare = (n: number): number =>\n Math.sqrt(Math.pow(n, 7) / (Math.pow(n, 7) + Math.pow(25, 7)));\n\n/**\n * Normalise black and white colorimetry as specified in IEC 61966-2-1\n * It takes a RGB channel in the range [0 - 255] and returns a value between 0 and 1\n * @param rgbValue number to be normalised\n */\nexport function linearRGB(rgbValue: number) {\n const rgbRatio = rgbValue / 255;\n let linearValue: number;\n\n if (rgbRatio > 0.04045) {\n linearValue = Math.pow((rgbRatio + 0.055) / 1.055, 2.4);\n } else {\n linearValue = rgbRatio / 12.92;\n }\n\n return linearValue;\n}\n\n/**\n * The division of the f function domain into two parts was done to prevent an infinite slope at n = 0\n * @param n Number to be constrained\n */\nexport function constrainLab(n: number): number {\n const delta = 6 / 29;\n const deltaCube = Math.pow(delta, 3);\n let t: number;\n\n if (n > deltaCube) {\n t = Math.cbrt(n);\n } else {\n t = n / (3 * Math.pow(delta, 2)) + 4 / 29;\n }\n\n return t;\n}\n"],"names":["hue_d","deltaHue_d","meanHue_d","toRadians","bigSquare","linearRGB","constrainLab","x","y","angle","Math","atan2","PI","C1","C2","h1_d","h2_d","abs","n","sqrt","pow","rgbValue","rgbRatio","linearValue","delta","deltaCube","t","cbrt"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{hexRegex:()=>hexRegex,hexAlphaRegex:()=>hexAlphaRegex,shortHexRegex:()=>shortHexRegex,shortAlphaHexRegex:()=>shortAlphaHexRegex});const hexRegex=/^#[a-fA-F0-9]{6}$/;const hexAlphaRegex=/^#[a-fA-F0-9]{8}$/;const shortHexRegex=/^#[a-fA-F0-9]{3}$/;const shortAlphaHexRegex=/^#[a-fA-F0-9]{4}$/
2
+ //# sourceMappingURL=regexers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/util/regexers.ts"],"sourcesContent":["/** Six digit Hexadecimal colour, ie: #12FF21 */\nexport const hexRegex = /^#[a-fA-F0-9]{6}$/;\n/** Eight digit Hexadecimal colour, ie: #12FF21BE */\nexport const hexAlphaRegex = /^#[a-fA-F0-9]{8}$/;\n/** Three digit Hexadecimal colour, ie: #FFF */\nexport const shortHexRegex = /^#[a-fA-F0-9]{3}$/;\n/** Four digit Hexadecimal colour, ie: #FFF4 */\nexport const shortAlphaHexRegex = /^#[a-fA-F0-9]{4}$/;\n"],"names":["hexRegex","hexAlphaRegex","shortHexRegex","shortAlphaHexRegex"],"mappings":"AACA,2MAAaA,QAAQ,KAARA,QAAQ,CAERC,aAAa,KAAbA,aAAa,CAEbC,aAAa,KAAbA,aAAa,CAEbC,kBAAkB,KAAlBA,kBAAkB,EANxB,OAAMH,QAAQ,oBAAsB,AAAC,AAErC,OAAMC,aAAa,oBAAsB,AAAC,AAE1C,OAAMC,aAAa,oBAAsB,AAAC,AAE1C,OAAMC,kBAAkB,oBAAsB,AAAC"}
@@ -1,2 +1,2 @@
1
- import{constrainLab as a,linearRGB as b}from"./util/index.js";export function convertRGBtoXYZ(a){let{R:c,G:d,B:e}=a,f=100*b(c),g=100*b(d),h=100*b(e);return{X:.4124*f+.3576*g+.1805*h,Y:.2126*f+.7152*g+.0722*h,Z:.0193*f+.1192*g+.9505*h}}export function convertXYZtoLab(b){let{X:c,Y:d,Z:e}=b,f=a(c/95.047),g=a(d/100),h=a(e/108.883);return{L:116*g-16,a:500*(f-g),b:200*(g-h)}}export function convertRGBtoLab(a){let b=convertRGBtoXYZ(a);return convertXYZtoLab(b)}export function convertHextoRGB(a){if("string"!=typeof a)throw Error(`convertHextoRGB expects a string but got a ${typeof a}`);if(a.match(/^#[a-fA-F0-9]{6}$/))return{R:parseInt(`${a[1]}${a[2]}`,16),G:parseInt(`${a[3]}${a[4]}`,16),B:parseInt(`${a[5]}${a[6]}`,16)};if(a.match(/^#[a-fA-F0-9]{3}$/))return{R:parseInt(`${a[1]}${a[1]}`,16),G:parseInt(`${a[2]}${a[2]}`,16),B:parseInt(`${a[3]}${a[3]}`,16)};if(a.match(/^#[a-fA-F0-9]{8}$/))return{R:parseInt(`${a[1]}${a[2]}`,16),G:parseInt(`${a[3]}${a[4]}`,16),B:parseInt(`${a[5]}${a[6]}`,16),A:parseInt(`${a[7]}${a[8]}`,16)/255};if(a.match(/^#[a-fA-F0-9]{4}$/))return{R:parseInt(`${a[1]}${a[1]}`,16),G:parseInt(`${a[2]}${a[2]}`,16),B:parseInt(`${a[3]}${a[3]}`,16),A:parseInt(`${a[4]}${a[4]}`,16)/255};throw Error(`convertHextoRGB expects an valid hexadecimal colour value but got ${a}`)}
1
+ import{constrainLab as a,linearRGB as b}from"./util/index.js";import{hexAlphaRegex as c,hexRegex as d,shortAlphaHexRegex as e,shortHexRegex as f}from"./util/regexers.js";export function convertRGBtoXYZ(a){let{R:c,G:d,B:e}=a,f=100*b(c),g=100*b(d),h=100*b(e);return{X:.4124*f+.3576*g+.1805*h,Y:.2126*f+.7152*g+.0722*h,Z:.0193*f+.1192*g+.9505*h}}export function convertXYZtoLab(b){let{X:c,Y:d,Z:e}=b,f=a(c/95.047),g=a(d/100),h=a(e/108.883);return{L:116*g-16,a:500*(f-g),b:200*(g-h)}}export function convertRGBtoLab(a){let b=convertRGBtoXYZ(a);return convertXYZtoLab(b)}export function convertHextoRGB(a){if("string"!=typeof a)throw Error(`convertHextoRGB expects a string but got a ${typeof a}`);if(a.match(d))return{R:parseInt(`${a[1]}${a[2]}`,16),G:parseInt(`${a[3]}${a[4]}`,16),B:parseInt(`${a[5]}${a[6]}`,16)};if(a.match(f))return{R:parseInt(`${a[1]}${a[1]}`,16),G:parseInt(`${a[2]}${a[2]}`,16),B:parseInt(`${a[3]}${a[3]}`,16)};if(a.match(c))return{R:parseInt(`${a[1]}${a[2]}`,16),G:parseInt(`${a[3]}${a[4]}`,16),B:parseInt(`${a[5]}${a[6]}`,16),A:parseInt(`${a[7]}${a[8]}`,16)/255};if(a.match(e))return{R:parseInt(`${a[1]}${a[1]}`,16),G:parseInt(`${a[2]}${a[2]}`,16),B:parseInt(`${a[3]}${a[3]}`,16),A:parseInt(`${a[4]}${a[4]}`,16)/255};throw Error(`convertHextoRGB expects an valid hexadecimal colour value but got ${a}`)}
2
2
  //# sourceMappingURL=converters.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/converters.ts"],"sourcesContent":["import type { LabColour, RGBColour, XYZColour } from \"./types\";\nimport { constrainLab, linearRGB } from \"./util/index.js\";\n\n/**\n * Converts sRGB colour space to XYZ.\n * Math comes from https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation\n * @param {RGBColour} colour sRGB colour\n * @return {XYZColour} XYZ colour\n */\nexport function convertRGBtoXYZ(colour: RGBColour): XYZColour {\n const { R, G, B } = colour;\n\n const _R = linearRGB(R) * 100;\n const _G = linearRGB(G) * 100;\n const _B = linearRGB(B) * 100;\n\n // Magic numbers are pre-calculated sRGB D65 constants\n const X = _R * 0.4124 + _G * 0.3576 + _B * 0.1805;\n const Y = _R * 0.2126 + _G * 0.7152 + _B * 0.0722;\n const Z = _R * 0.0193 + _G * 0.1192 + _B * 0.9505;\n\n return { X, Y, Z };\n}\n\n/**\n * Converts XYZ colour space to Lab\n * Math comes from https://en.wikipedia.org/wiki/CIELAB_color_space#From_CIEXYZ_to_CIELAB[11]\n * @param colour XYZ colour\n * @return {LabColour} Lab colour\n */\nexport function convertXYZtoLab(colour: XYZColour): LabColour {\n const { X, Y, Z } = colour;\n\n // Magic numbers are normalised for relative luminance from the D65 standard\n const _X = X / 95.047;\n const _Y = Y / 100;\n const _Z = Z / 108.883;\n\n const fX = constrainLab(_X);\n const fY = constrainLab(_Y);\n const fZ = constrainLab(_Z);\n\n const L = 116 * fY - 16;\n const a = 500 * (fX - fY);\n const b = 200 * (fY - fZ);\n\n return { L, a, b };\n}\n\n/**\n * Indirectly converts RGB to Lab.\n * First converts RGB to XYZ,\n * Then converts XYZ to Lab\n * @param {RGBColour} colour sRGB colour\n * @return {LabColour} Lab colour\n */\nexport function convertRGBtoLab(colour: RGBColour): LabColour {\n const XYZColour = convertRGBtoXYZ(colour);\n return convertXYZtoLab(XYZColour);\n}\n\nexport function convertHextoRGB(hex: string): RGBColour {\n /** Six digit Hexadecimal colour, ie: #12FF21 */\n const hexRegex = /^#[a-fA-F0-9]{6}$/;\n /** Eight digit Hexadecimal colour, ie: #12FF21BE */\n const hexAlphaRegex = /^#[a-fA-F0-9]{8}$/;\n /** Three digit Hexadecimal colour, ie: #FFF */\n const shortHexRegex = /^#[a-fA-F0-9]{3}$/;\n /** Four digit Hexadecimal colour, ie: #FFF4 */\n const shortAlphaHexRegex = /^#[a-fA-F0-9]{4}$/;\n\n if (typeof hex !== \"string\") {\n throw new Error(`convertHextoRGB expects a string but got a ${typeof hex}`);\n }\n\n if (hex.match(hexRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[2]}`, 16),\n G: parseInt(`${hex[3]}${hex[4]}`, 16),\n B: parseInt(`${hex[5]}${hex[6]}`, 16),\n };\n }\n\n if (hex.match(shortHexRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[1]}`, 16),\n G: parseInt(`${hex[2]}${hex[2]}`, 16),\n B: parseInt(`${hex[3]}${hex[3]}`, 16),\n };\n }\n\n if (hex.match(hexAlphaRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[2]}`, 16),\n G: parseInt(`${hex[3]}${hex[4]}`, 16),\n B: parseInt(`${hex[5]}${hex[6]}`, 16),\n A: parseInt(`${hex[7]}${hex[8]}`, 16) / 255,\n };\n }\n\n if (hex.match(shortAlphaHexRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[1]}`, 16),\n G: parseInt(`${hex[2]}${hex[2]}`, 16),\n B: parseInt(`${hex[3]}${hex[3]}`, 16),\n A: parseInt(`${hex[4]}${hex[4]}`, 16) / 255,\n };\n }\n\n throw new Error(\n `convertHextoRGB expects an valid hexadecimal colour value but got ${hex}`\n );\n}\n"],"names":["constrainLab","linearRGB","convertRGBtoXYZ","colour","R","G","B","_R","_G","_B","X","Y","Z","convertXYZtoLab","fX","fY","fZ","L","a","b","convertRGBtoLab","XYZColour","convertHextoRGB","hex","Error","match","parseInt","A"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/converters.ts"],"sourcesContent":["import type { LabColour, RGBColour, XYZColour } from \"./types\";\nimport { constrainLab, linearRGB } from \"./util/index.js\";\nimport { hexAlphaRegex, hexRegex, shortAlphaHexRegex, shortHexRegex } from \"./util/regexers.js\";\n\n/**\n * Converts sRGB colour space to XYZ.\n * Math comes from https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation\n * @param {RGBColour} colour sRGB colour\n * @return {XYZColour} XYZ colour\n */\nexport function convertRGBtoXYZ(colour: RGBColour): XYZColour {\n const { R, G, B } = colour;\n\n const _R = linearRGB(R) * 100;\n const _G = linearRGB(G) * 100;\n const _B = linearRGB(B) * 100;\n\n // Magic numbers are pre-calculated sRGB D65 constants\n const X = _R * 0.4124 + _G * 0.3576 + _B * 0.1805;\n const Y = _R * 0.2126 + _G * 0.7152 + _B * 0.0722;\n const Z = _R * 0.0193 + _G * 0.1192 + _B * 0.9505;\n\n return { X, Y, Z };\n}\n\n/**\n * Converts XYZ colour space to Lab\n * Math comes from https://en.wikipedia.org/wiki/CIELAB_color_space#From_CIEXYZ_to_CIELAB[11]\n * @param colour XYZ colour\n * @return {LabColour} Lab colour\n */\nexport function convertXYZtoLab(colour: XYZColour): LabColour {\n const { X, Y, Z } = colour;\n\n // Magic numbers are normalised for relative luminance from the D65 standard\n const _X = X / 95.047;\n const _Y = Y / 100;\n const _Z = Z / 108.883;\n\n const fX = constrainLab(_X);\n const fY = constrainLab(_Y);\n const fZ = constrainLab(_Z);\n\n const L = 116 * fY - 16;\n const a = 500 * (fX - fY);\n const b = 200 * (fY - fZ);\n\n return { L, a, b };\n}\n\n/**\n * Indirectly converts RGB to Lab.\n * First converts RGB to XYZ,\n * Then converts XYZ to Lab\n * @param {RGBColour} colour sRGB colour\n * @return {LabColour} Lab colour\n */\nexport function convertRGBtoLab(colour: RGBColour): LabColour {\n const XYZColour = convertRGBtoXYZ(colour);\n return convertXYZtoLab(XYZColour);\n}\n\nexport function convertHextoRGB(hex: string): RGBColour {\n if (typeof hex !== \"string\") {\n throw new Error(`convertHextoRGB expects a string but got a ${typeof hex}`);\n }\n\n if (hex.match(hexRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[2]}`, 16),\n G: parseInt(`${hex[3]}${hex[4]}`, 16),\n B: parseInt(`${hex[5]}${hex[6]}`, 16),\n };\n }\n\n if (hex.match(shortHexRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[1]}`, 16),\n G: parseInt(`${hex[2]}${hex[2]}`, 16),\n B: parseInt(`${hex[3]}${hex[3]}`, 16),\n };\n }\n\n if (hex.match(hexAlphaRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[2]}`, 16),\n G: parseInt(`${hex[3]}${hex[4]}`, 16),\n B: parseInt(`${hex[5]}${hex[6]}`, 16),\n A: parseInt(`${hex[7]}${hex[8]}`, 16) / 255,\n };\n }\n\n if (hex.match(shortAlphaHexRegex)) {\n return {\n R: parseInt(`${hex[1]}${hex[1]}`, 16),\n G: parseInt(`${hex[2]}${hex[2]}`, 16),\n B: parseInt(`${hex[3]}${hex[3]}`, 16),\n A: parseInt(`${hex[4]}${hex[4]}`, 16) / 255,\n };\n }\n\n throw new Error(\n `convertHextoRGB expects an valid hexadecimal colour value but got ${hex}`\n );\n}\n"],"names":["constrainLab","linearRGB","hexAlphaRegex","hexRegex","shortAlphaHexRegex","shortHexRegex","convertRGBtoXYZ","colour","R","G","B","_R","_G","_B","X","Y","Z","convertXYZtoLab","fX","fY","fZ","L","a","b","convertRGBtoLab","XYZColour","convertHextoRGB","hex","Error","match","parseInt","A"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Returns the relative luminance of a colour in the sRGB space.
3
+ *
4
+ * The calculations are compatible with WCAG 3.0 as it aligns with the sRGB spec
5
+ * and difference to WCAG 2.1 is minimal in a 8 bit channel.
6
+ *
7
+ * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef
8
+ *
9
+ * https://www.w3.org/WAI/GL/wiki/Relative_luminance
10
+ * @param colour an hexadecimal colour
11
+ */
12
+ export declare const getSRGBLuminanceFromHex: (colour: string) => number;
@@ -0,0 +1,2 @@
1
+ import{convertHextoRGB as a}from"./converters.js";import{linearRGB as b}from"./util/index.js";export const getSRGBLuminanceFromHex=c=>{let d=a(c),e=b(d.R),f=b(d.G),g=b(d.B);return .2126*e+.7152*f+.0722*g}
2
+ //# sourceMappingURL=getSRGBLuminanceFromHex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/getSRGBLuminanceFromHex.ts"],"sourcesContent":["import { convertHextoRGB } from \"./converters.js\";\nimport { linearRGB } from \"./util/index.js\";\n\n/**\n * Returns the relative luminance of a colour in the sRGB space.\n *\n * The calculations are compatible with WCAG 3.0 as it aligns with the sRGB spec\n * and difference to WCAG 2.1 is minimal in a 8 bit channel.\n *\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n *\n * https://www.w3.org/WAI/GL/wiki/Relative_luminance\n * @param colour an hexadecimal colour\n */\nexport const getSRGBLuminanceFromHex = (colour: string) => {\n const rgbColor = convertHextoRGB(colour);\n const r = linearRGB(rgbColor.R);\n const g = linearRGB(rgbColor.G);\n const b = linearRGB(rgbColor.B);\n\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n"],"names":["convertHextoRGB","linearRGB","getSRGBLuminanceFromHex","colour","rgbColor","r","R","g","G","b","B"],"mappings":"AAAA,OAASA,eAAe,IAAfA,CAAe,KAAQ,iBAAiB,AAAC,AAClD,QAASC,SAAS,IAATA,CAAS,KAAQ,iBAAiB,AAAC,AAa5C,QAAO,MAAMC,uBAAuB,CAAG,AAACC,CAAc,EAAK,CACzD,IAAMC,CAAQ,CAAGJ,CAAe,CAACG,CAAM,CAAC,CAClCE,CAAC,CAAGJ,CAAS,CAACG,CAAQ,CAACE,CAAC,CAAC,CACzBC,CAAC,CAAGN,CAAS,CAACG,CAAQ,CAACI,CAAC,CAAC,CACzBC,CAAC,CAAGR,CAAS,CAACG,CAAQ,CAACM,CAAC,CAAC,AAHU,AAKzC,QAAO,KAAM,CAAGL,CAAC,CAAG,KAAM,CAAGE,CAAC,CAAG,KAAM,CAAGE,CAAC,AAAC,CAC7C,AAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { ciede2000 } from "./CIEDE2000.js";
2
2
  export { convertHextoRGB, convertRGBtoLab, convertRGBtoXYZ, convertXYZtoLab, } from "./converters.js";
3
3
  export { RGBdistance } from "./RGBdistance.js";
4
+ export { getSRGBLuminanceFromHex } from "./getSRGBLuminanceFromHex.js";
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{ciede2000}from"./CIEDE2000.js";export{convertHextoRGB,convertRGBtoLab,convertRGBtoXYZ,convertXYZtoLab}from"./converters.js";export{RGBdistance}from"./RGBdistance.js"
1
+ export{ciede2000}from"./CIEDE2000.js";export{convertHextoRGB,convertRGBtoLab,convertRGBtoXYZ,convertXYZtoLab}from"./converters.js";export{RGBdistance}from"./RGBdistance.js";export{getSRGBLuminanceFromHex}from"./getSRGBLuminanceFromHex.js"
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { ciede2000 } from \"./CIEDE2000.js\";\nexport {\n convertHextoRGB,\n convertRGBtoLab,\n convertRGBtoXYZ,\n convertXYZtoLab,\n} from \"./converters.js\";\nexport { RGBdistance } from \"./RGBdistance.js\";\n"],"names":["ciede2000","convertHextoRGB","convertRGBtoLab","convertRGBtoXYZ","convertXYZtoLab","RGBdistance"],"mappings":"AAAA,OAASA,SAAS,KAAQ,gBAAgB,AAAC,AAC3C,QACEC,eAAe,CACfC,eAAe,CACfC,eAAe,CACfC,eAAe,KACV,iBAAiB,AAAC,AACzB,QAASC,WAAW,KAAQ,kBAAkB,AAAC"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { ciede2000 } from \"./CIEDE2000.js\";\nexport {\n convertHextoRGB,\n convertRGBtoLab,\n convertRGBtoXYZ,\n convertXYZtoLab,\n} from \"./converters.js\";\nexport { RGBdistance } from \"./RGBdistance.js\";\nexport { getSRGBLuminanceFromHex } from \"./getSRGBLuminanceFromHex.js\";\n"],"names":["ciede2000","convertHextoRGB","convertRGBtoLab","convertRGBtoXYZ","convertXYZtoLab","RGBdistance","getSRGBLuminanceFromHex"],"mappings":"AAAA,OAASA,SAAS,KAAQ,gBAAgB,AAAC,AAC3C,QACEC,eAAe,CACfC,eAAe,CACfC,eAAe,CACfC,eAAe,KACV,iBAAiB,AAAC,AACzB,QAASC,WAAW,KAAQ,kBAAkB,AAAC,AAC/C,QAASC,uBAAuB,KAAQ,8BAA8B,AAAC"}
package/dist/types.d.ts CHANGED
@@ -43,3 +43,4 @@ export interface HueHelper {
43
43
  /** Derivative of colour 2 Hue */
44
44
  h2_d: number;
45
45
  }
46
+ export declare type ColourSpace = "sRGB";
@@ -28,7 +28,7 @@ export declare const bigSquare: (n: number) => number;
28
28
  /**
29
29
  * Normalise black and white colorimetry as specified in IEC 61966-2-1
30
30
  * It takes a RGB channel in the range [0 - 255] and returns a value between 0 and 1
31
- * @param n number to be normalised
31
+ * @param rgbValue number to be normalised
32
32
  */
33
33
  export declare function linearRGB(rgbValue: number): number;
34
34
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/index.ts"],"sourcesContent":["import type { HueHelper } from \"../types\";\n\n/**\n * Calculates the Hue derivative\n * @param x A numeric expression representing the cartesian x-coordinate.\n * @param y A numeric expression representing the cartesian y-coordinate.\n */\nexport function hue_d(x: number, y: number): number {\n // early exit if both values are 0\n if (x === 0 && y === 0) {\n return 0;\n }\n /** The angle in degrees */\n const angle = Math.atan2(x, y) * (180 / Math.PI);\n if (angle >= 0) {\n return angle;\n }\n return angle + 360;\n}\n\n/**\n * Calculates the difference between two Hue derivatives\n * @param HueHelper param\n */\nexport function deltaHue_d({ C1, C2, h1_d, h2_d }: HueHelper): number {\n if (C1 * C2 === 0) {\n return 0;\n }\n if (Math.abs(h2_d - h1_d) <= 180) {\n return h2_d - h1_d;\n }\n if (h2_d - h1_d > 180) {\n return h2_d - h1_d - 360;\n }\n if (h2_d - h1_d < -180) {\n return h2_d - h1_d + 360;\n }\n // it should never reach this point\n return 0;\n}\n\n/**\n * Calculates the mean between two Hue derivatives\n * @param HueHelper param\n */\nexport function meanHue_d({ C1, C2, h1_d, h2_d }: HueHelper): number {\n if (C1 * C2 === 0) {\n return h2_d + h1_d;\n }\n if (Math.abs(h1_d - h2_d) <= 180) {\n return (h2_d + h1_d) / 2;\n }\n if (Math.abs(h1_d - h2_d) > 180 && h1_d + h2_d < 360) {\n return (h2_d + h1_d + 360) / 2;\n }\n if (Math.abs(h1_d - h2_d) > 180 && h1_d + h2_d >= 360) {\n return (h2_d + h1_d - 360) / 2;\n }\n // it should never reach this point\n return 0;\n}\n\n/**\n * Converts a number in degrees to radians\n * @param n Number in degrees to be converted\n */\nexport const toRadians = (n: number): number => n * (Math.PI / 180);\n\n/**\n * Calculates a recurring square root\n * @param n Input number\n */\nexport const bigSquare = (n: number): number =>\n Math.sqrt(Math.pow(n, 7) / (Math.pow(n, 7) + Math.pow(25, 7)));\n\n/**\n * Normalise black and white colorimetry as specified in IEC 61966-2-1\n * It takes a RGB channel in the range [0 - 255] and returns a value between 0 and 1\n * @param n number to be normalised\n */\nexport function linearRGB(rgbValue: number) {\n const rgbRatio = rgbValue / 255;\n let linearValue: number;\n\n if (rgbRatio > 0.04045) {\n linearValue = Math.pow((rgbRatio + 0.055) / 1.055, 2.4);\n } else {\n linearValue = rgbRatio / 12.92;\n }\n\n return linearValue;\n}\n\n/**\n * The division of the f function domain into two parts was done to prevent an infinite slope at n = 0\n * @param n Number to be constrained\n */\nexport function constrainLab(n: number): number {\n const delta = 6 / 29;\n const deltaCube = Math.pow(delta, 3);\n let t: number;\n\n if (n > deltaCube) {\n t = Math.cbrt(n);\n } else {\n t = n / (3 * Math.pow(delta, 2)) + 4 / 29;\n }\n\n return t;\n}\n"],"names":["hue_d","x","y","angle","Math","atan2","PI","deltaHue_d","C1","C2","h1_d","h2_d","abs","meanHue_d","toRadians","n","bigSquare","sqrt","pow","linearRGB","rgbValue","rgbRatio","linearValue","constrainLab","delta","t","cbrt"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/util/index.ts"],"sourcesContent":["import type { HueHelper } from \"../types\";\n\n/**\n * Calculates the Hue derivative\n * @param x A numeric expression representing the cartesian x-coordinate.\n * @param y A numeric expression representing the cartesian y-coordinate.\n */\nexport function hue_d(x: number, y: number): number {\n // early exit if both values are 0\n if (x === 0 && y === 0) {\n return 0;\n }\n /** The angle in degrees */\n const angle = Math.atan2(x, y) * (180 / Math.PI);\n if (angle >= 0) {\n return angle;\n }\n return angle + 360;\n}\n\n/**\n * Calculates the difference between two Hue derivatives\n * @param HueHelper param\n */\nexport function deltaHue_d({ C1, C2, h1_d, h2_d }: HueHelper): number {\n if (C1 * C2 === 0) {\n return 0;\n }\n if (Math.abs(h2_d - h1_d) <= 180) {\n return h2_d - h1_d;\n }\n if (h2_d - h1_d > 180) {\n return h2_d - h1_d - 360;\n }\n if (h2_d - h1_d < -180) {\n return h2_d - h1_d + 360;\n }\n // it should never reach this point\n return 0;\n}\n\n/**\n * Calculates the mean between two Hue derivatives\n * @param HueHelper param\n */\nexport function meanHue_d({ C1, C2, h1_d, h2_d }: HueHelper): number {\n if (C1 * C2 === 0) {\n return h2_d + h1_d;\n }\n if (Math.abs(h1_d - h2_d) <= 180) {\n return (h2_d + h1_d) / 2;\n }\n if (Math.abs(h1_d - h2_d) > 180 && h1_d + h2_d < 360) {\n return (h2_d + h1_d + 360) / 2;\n }\n if (Math.abs(h1_d - h2_d) > 180 && h1_d + h2_d >= 360) {\n return (h2_d + h1_d - 360) / 2;\n }\n // it should never reach this point\n return 0;\n}\n\n/**\n * Converts a number in degrees to radians\n * @param n Number in degrees to be converted\n */\nexport const toRadians = (n: number): number => n * (Math.PI / 180);\n\n/**\n * Calculates a recurring square root\n * @param n Input number\n */\nexport const bigSquare = (n: number): number =>\n Math.sqrt(Math.pow(n, 7) / (Math.pow(n, 7) + Math.pow(25, 7)));\n\n/**\n * Normalise black and white colorimetry as specified in IEC 61966-2-1\n * It takes a RGB channel in the range [0 - 255] and returns a value between 0 and 1\n * @param rgbValue number to be normalised\n */\nexport function linearRGB(rgbValue: number) {\n const rgbRatio = rgbValue / 255;\n let linearValue: number;\n\n if (rgbRatio > 0.04045) {\n linearValue = Math.pow((rgbRatio + 0.055) / 1.055, 2.4);\n } else {\n linearValue = rgbRatio / 12.92;\n }\n\n return linearValue;\n}\n\n/**\n * The division of the f function domain into two parts was done to prevent an infinite slope at n = 0\n * @param n Number to be constrained\n */\nexport function constrainLab(n: number): number {\n const delta = 6 / 29;\n const deltaCube = Math.pow(delta, 3);\n let t: number;\n\n if (n > deltaCube) {\n t = Math.cbrt(n);\n } else {\n t = n / (3 * Math.pow(delta, 2)) + 4 / 29;\n }\n\n return t;\n}\n"],"names":["hue_d","x","y","angle","Math","atan2","PI","deltaHue_d","C1","C2","h1_d","h2_d","abs","meanHue_d","toRadians","n","bigSquare","sqrt","pow","linearRGB","rgbValue","rgbRatio","linearValue","constrainLab","delta","t","cbrt"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** Six digit Hexadecimal colour, ie: #12FF21 */
2
+ export declare const hexRegex: RegExp;
3
+ /** Eight digit Hexadecimal colour, ie: #12FF21BE */
4
+ export declare const hexAlphaRegex: RegExp;
5
+ /** Three digit Hexadecimal colour, ie: #FFF */
6
+ export declare const shortHexRegex: RegExp;
7
+ /** Four digit Hexadecimal colour, ie: #FFF4 */
8
+ export declare const shortAlphaHexRegex: RegExp;
@@ -0,0 +1,2 @@
1
+ export const hexRegex=/^#[a-fA-F0-9]{6}$/;export const hexAlphaRegex=/^#[a-fA-F0-9]{8}$/;export const shortHexRegex=/^#[a-fA-F0-9]{3}$/;export const shortAlphaHexRegex=/^#[a-fA-F0-9]{4}$/
2
+ //# sourceMappingURL=regexers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/util/regexers.ts"],"sourcesContent":["/** Six digit Hexadecimal colour, ie: #12FF21 */\nexport const hexRegex = /^#[a-fA-F0-9]{6}$/;\n/** Eight digit Hexadecimal colour, ie: #12FF21BE */\nexport const hexAlphaRegex = /^#[a-fA-F0-9]{8}$/;\n/** Three digit Hexadecimal colour, ie: #FFF */\nexport const shortHexRegex = /^#[a-fA-F0-9]{3}$/;\n/** Four digit Hexadecimal colour, ie: #FFF4 */\nexport const shortAlphaHexRegex = /^#[a-fA-F0-9]{4}$/;\n"],"names":["hexRegex","hexAlphaRegex","shortHexRegex","shortAlphaHexRegex"],"mappings":"AACA,OAAO,MAAMA,QAAQ,oBAAsB,AAAC,AAE5C,QAAO,MAAMC,aAAa,oBAAsB,AAAC,AAEjD,QAAO,MAAMC,aAAa,oBAAsB,AAAC,AAEjD,QAAO,MAAMC,kBAAkB,oBAAsB,AAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sardine/colour",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "It does things to colours",
5
5
  "module": "./dist/index.js",
6
6
  "main": "./dist/cjs/index.js",