diff --git a/core/blockly.js b/core/blockly.js index da9700c44..2cf685de4 100644 --- a/core/blockly.js +++ b/core/blockly.js @@ -354,16 +354,15 @@ Blockly.isNumber = function(str) { return /^\s*-?\d+(\.\d+)?\s*$/.test(str); }; -/** - * Convert a hue (HSV model) into an RGB hex triplet. - * @param {number} hue Hue on a colour wheel (0-360). - * @return {string} RGB code, e.g. '#5ba65b'. - */ -Blockly.hueToHex = function(hue) { - return Blockly.utils.colour.hsvToHex( - hue, Blockly.internalConstants.HSV_SATURATION, - Blockly.internalConstants.HSV_VALUE * 255); -}; +// Add a getter for Blockly.hueToHex, for legacy reasons. +Object.defineProperty(Blockly, 'hueToHex', { + get: function() { + Blockly.utils.deprecation.warn( + 'Blockly.hueToHex()', 'September 2021', 'September 2022', + 'Blockly.utils.colour.hueToHex()'); + return Blockly.utils.colour.hueToHex; + } +}); /** * Set the parent container. This is the container element that the WidgetDiv, diff --git a/core/toolbox/category.js b/core/toolbox/category.js index ecb79d911..88bf68847 100644 --- a/core/toolbox/category.js +++ b/core/toolbox/category.js @@ -428,7 +428,7 @@ ToolboxCategory.prototype.parseColour_ = function(colourValue) { } else { const hue = Number(colour); if (!isNaN(hue)) { - return Blockly.hueToHex(hue); + return colourUtils.hueToHex(hue); } else { const hex = colourUtils.parse(colour); if (hex) { diff --git a/core/utils/colour.js b/core/utils/colour.js index 29ba0187c..20f437cc7 100644 --- a/core/utils/colour.js +++ b/core/utils/colour.js @@ -19,6 +19,8 @@ goog.module('Blockly.utils.colour'); goog.module.declareLegacyNamespace(); +const internalConstants = goog.require('Blockly.internalConstants'); + /** * Parses a colour from a string. @@ -212,3 +214,14 @@ const names = { 'yellow': '#ffff00' }; exports.names = names; + +/** + * Convert a hue (HSV model) into an RGB hex triplet. + * @param {number} hue Hue on a colour wheel (0-360). + * @return {string} RGB code, e.g. '#5ba65b'. + */ +const hueToHex = function(hue) { + return hsvToHex( + hue, internalConstants.HSV_SATURATION, internalConstants.HSV_VALUE * 255); +}; +exports.hueToHex = hueToHex; diff --git a/demos/blockfactory/workspacefactory/wfactory_controller.js b/demos/blockfactory/workspacefactory/wfactory_controller.js index 02f9c8cda..a52ab93d3 100644 --- a/demos/blockfactory/workspacefactory/wfactory_controller.js +++ b/demos/blockfactory/workspacefactory/wfactory_controller.js @@ -590,7 +590,8 @@ WorkspaceFactoryController.prototype.loadCategoryByName = function(name) { } if (!standardCategory.colour && standardCategory.hue !== undefined) { // Calculate the hex colour based on the hue. - standardCategory.colour = Blockly.hueToHex(standardCategory.hue); + standardCategory.colour = Blockly.utils.colour.hueToHex( + standardCategory.hue); } // Transfers current flyout blocks to a category if it's the first category // created. diff --git a/demos/blockfactory/workspacefactory/wfactory_init.js b/demos/blockfactory/workspacefactory/wfactory_init.js index cc1839a00..b6b19b1d9 100644 --- a/demos/blockfactory/workspacefactory/wfactory_init.js +++ b/demos/blockfactory/workspacefactory/wfactory_init.js @@ -52,7 +52,7 @@ WorkspaceFactoryInit.initColourPicker_ = function(controller) { // Convert hue numbers to RRGGBB strings. for (var i = 0; i < colours.length; i++) { if (colours[i] !== '') { - colours[i] = Blockly.hueToHex(colours[i]).substring(1); + colours[i] = Blockly.utils.colour.hueToHex(colours[i]).substring(1); } } // Convert to 2D array. diff --git a/tests/deps.js b/tests/deps.js index dd99899f3..5d66d0cb3 100644 --- a/tests/deps.js +++ b/tests/deps.js @@ -213,7 +213,7 @@ goog.addDependency('../../core/touch_gesture.js', ['Blockly.TouchGesture'], ['Bl goog.addDependency('../../core/trashcan.js', ['Blockly.Trashcan'], ['Blockly.ComponentManager', 'Blockly.DeleteArea', 'Blockly.Events', 'Blockly.Events.TrashcanOpen', 'Blockly.Options', 'Blockly.Xml', 'Blockly.browserEvents', 'Blockly.internalConstants', 'Blockly.registry', 'Blockly.uiPosition', 'Blockly.utils.Rect', 'Blockly.utils.Size', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.toolbox'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/utils.js', ['Blockly.utils'], ['Blockly.Msg', 'Blockly.internalConstants', 'Blockly.utils.Coordinate', 'Blockly.utils.Rect', 'Blockly.utils.colour', 'Blockly.utils.deprecation', 'Blockly.utils.global', 'Blockly.utils.idGenerator', 'Blockly.utils.string', 'Blockly.utils.style', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/utils/aria.js', ['Blockly.utils.aria'], [], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../core/utils/colour.js', ['Blockly.utils.colour'], [], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../core/utils/colour.js', ['Blockly.utils.colour'], ['Blockly.internalConstants'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/utils/coordinate.js', ['Blockly.utils.Coordinate'], [], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/utils/deprecation.js', ['Blockly.utils.deprecation'], [], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/utils/dom.js', ['Blockly.utils.dom'], ['Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'});