@verticlabs/color-replace

Replace color instances with a different color in a given string


Keywords
color, colour, replace, replacement, color replacement, colour replacement, hex, rgb, hsl
License
MIT
Install
npm install @verticlabs/color-replace@0.0.5

Documentation

@verticlabs/color-replace

@verticlabs/color-replace is a replacement library for JavaScript. It replaces all instances of colors in all their forms. Simply pass a color in any format, provide a replacement color (also in any format and it doesn't need to be in the same format as the search color), and it will find all instances of that color and all formats (hex, rgb, hsl and the color keyword if it exists) in a given string.

Usage

This library can be used to replace all instances of one or many colors in a given string.

Change one color to another

To change one specific color to another in a string then use it as:

import { colorReplace } from '@verticlabs/color-replace';

const string = 'string test of rgb(255, 255, 255) replacement';

const updatedString = colorReplace('#fff', '#ddd', string);

// response: string test of rgb(221, 221, 221) replacement

Changing multiple colors in one string

It can also be used to replace many colors at once:

import { colorReplaceMap } from '@verticlabs/color-replace';

const string = 'string test of white, rgb(0, 128, 0) and hsla(0, 0%, 0%, 0.3)';

const colorMap = {
  '#fff': '#ddd',
  'rgb(0, 0, 0)': '#111',
  green: 'blue',
};

const updatedString = colorReplaceMap(colorMap, string);

// response: string test of #DDD, rgb(0, 0, 255) and hsla(0, 0%, 7%, 0.3)

Changing color in a CSS string

When defining the the string is a CSS string, then it will only replace the color instances if they are within the CSS value (between a colon and semicolon character):

import { colorReplace } from '@verticlabs/color-replace';

const string = '.btn--white { color: #fff; }';

const updatedString = colorReplace('rgb(255, 255, 255)', '#ddd', string, {
  stringType: 'css',
});

// response: .btn--white { color: #DDD; }

Options

Name Type Default Description
stringType {String} string The type of the passed string
includeColorKeyword {Boolean} true Enable/disable lookups for color keywords
hexAlphaSupport {Boolean} false Enable/disable hex alpha/opacity colors

stringType

Type: String
Default: string
Options: string | css | html

Tell the library what type of string has been passed and it will act accordingly.

It will replace all instances of the color(s) if it's set as string.

If the library is used on a CSS string, then it is recommended to set this option to css - especially when also having the includeColorKeyword as true - as then it will only replace instances in the CSS value and ignore any keyword instances in URLs (e.g. background image stylings). This way it won't change the class names, styling properties etc.

If the library is used on a HTML string, then it is recommended to set this options to html, as this will then only replace color instances in the style attributes of the HTML elements and in styling inside <style> tags.

includeColorKeyword

Type: Boolean
Default: true

Sets if color keywords (i.e. "white" or "blue") should also be replaced.

hexAlphaSupport

Type: Boolean
Default: false

Defines if hex alpha/opacity colors (#rrggbbaa) should be supported by the library. This is not recommended if it's a CSS string that is used for IE11 supported styling.