diff --git a/package-lock.json b/package-lock.json index b7f4644029528..b3a35fdb3273a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18022,6 +18022,7 @@ "@wordpress/warning": "file:packages/warning", "@wordpress/wordcount": "file:packages/wordcount", "classnames": "^2.3.1", + "colord": "^2.7.0", "css-mediaquery": "^0.1.2", "diff": "^4.0.2", "dom-scroll-into-view": "^1.2.1", @@ -18034,6 +18035,13 @@ "rememo": "^3.0.0", "tinycolor2": "^1.4.2", "traverse": "^0.6.6" + }, + "dependencies": { + "colord": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.7.0.tgz", + "integrity": "sha512-pZJBqsHz+pYyw3zpX6ZRXWoCHM1/cvFikY9TV8G3zcejCaKE0lhankoj8iScyrrePA8C7yJ5FStfA9zbcOnw7Q==" + } } }, "@wordpress/block-library": { diff --git a/packages/block-editor/package.json b/packages/block-editor/package.json index 63a1cd006a459..e0abcfbf2758e 100644 --- a/packages/block-editor/package.json +++ b/packages/block-editor/package.json @@ -59,6 +59,7 @@ "@wordpress/wordcount": "file:../wordcount", "classnames": "^2.3.1", "css-mediaquery": "^0.1.2", + "colord": "^2.7.0", "diff": "^4.0.2", "dom-scroll-into-view": "^1.2.1", "inherits": "^2.0.3", diff --git a/packages/block-editor/src/hooks/duotone.js b/packages/block-editor/src/hooks/duotone.js index 0bde4cdbe2c60..9cacd58cffdee 100644 --- a/packages/block-editor/src/hooks/duotone.js +++ b/packages/block-editor/src/hooks/duotone.js @@ -2,7 +2,8 @@ * External dependencies */ import classnames from 'classnames'; -import tinycolor from 'tinycolor2'; +import { colord, extend } from 'colord'; +import namesPlugin from 'colord/plugins/names'; /** * WordPress dependencies @@ -25,6 +26,8 @@ import BlockList from '../components/block-list'; const EMPTY_ARRAY = []; +extend( [ namesPlugin ] ); + /** * Convert a list of colors to an object of R, G, and B values. * @@ -36,11 +39,10 @@ export function getValuesFromColors( colors = [] ) { const values = { r: [], g: [], b: [] }; colors.forEach( ( color ) => { - // Access values directly to skip extra rounding that tinycolor.toRgb() does. - const tcolor = tinycolor( color ); - values.r.push( tcolor._r / 255 ); - values.g.push( tcolor._g / 255 ); - values.b.push( tcolor._b / 255 ); + const rgbColor = colord( color ).toRgb(); + values.r.push( rgbColor.r / 255 ); + values.g.push( rgbColor.g / 255 ); + values.b.push( rgbColor.b / 255 ); } ); return values;