UNPKG

koval-ui

Version:

React components collection with minimalistic design. Supports theming, layout, and input validation.

1 lines 1.96 kB
{"version":3,"file":"invertColor.cjs","sources":["../../../../src/lib/InputColor/invertColor.ts"],"sourcesContent":["const padZero = (str: string, len = 2) => {\n const zeros = new Array(len).join('0');\n return (zeros + str).slice(-len);\n};\n\nconst invertColorChannel = (channelValue: number) => {\n return (255 - channelValue).toString(16);\n};\n\nexport const invertColor = (hex?: string, bw?: boolean) => {\n if (hex) {\n if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n // convert 3-digit hex to 6-digits.\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n if (hex.length !== 6) {\n throw new Error('Invalid HEX color.');\n }\n const red = parseInt(hex.slice(0, 2), 16);\n const green = parseInt(hex.slice(2, 4), 16);\n const blue = parseInt(hex.slice(4, 6), 16);\n if (bw) {\n // https://stackoverflow.com/a/3943023/112731\n return red * 0.299 + green * 0.587 + blue * 0.114 > 186 ? '#000000' : '#FFFFFF';\n }\n // invert color components and pad each with zeros\n return (\n '#' +\n padZero(invertColorChannel(red)) +\n padZero(invertColorChannel(green)) +\n padZero(invertColorChannel(blue))\n );\n }\n return '';\n};\n"],"names":["invertColor","hex","bw","red","green","blue"],"mappings":"6FASa,MAAAA,EAAc,CAACC,EAAcC,IAAiB,CACvD,GAAID,EAAK,CAQD,GAPAA,EAAI,WAAW,GAAG,IACZA,EAAAA,EAAI,MAAM,CAAC,GAGjBA,EAAI,SAAW,IACfA,EAAMA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAIA,EAAI,CAAC,GAExDA,EAAI,SAAW,EACT,MAAA,IAAI,MAAM,oBAAoB,EAExC,MAAME,EAAM,SAASF,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAClCG,EAAQ,SAASH,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EACpCI,EAAO,SAASJ,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAGrC,OAAOE,EAAM,KAAQC,EAAQ,KAAQC,EAAO,KAAQ,IAAM,UAAY,SAOtC,CAGjC,MAAA,EACX"}