@hyperbrowser/agent
Version:
Hyperbrowsers Web Agent
67 lines (66 loc) • 2.12 kB
JavaScript
;
/**
* Shared color palette for element highlighting across DOM and A11y modes
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.HIGHLIGHT_COLORS = void 0;
exports.hexToRgba = hexToRgba;
exports.getHighlightColor = getHighlightColor;
exports.getHighlightColorRgba = getHighlightColorRgba;
const jimp_1 = require("jimp");
/**
* Rainbow color palette (12 colors)
* Used for cycling through element highlights
*/
exports.HIGHLIGHT_COLORS = [
"#FF0000", // red
"#00FF00", // green
"#0000FF", // blue
"#FFA500", // orange
"#800080", // purple
"#008080", // teal
"#FF69B4", // hot pink
"#4B0082", // indigo
"#FF4500", // orange red
"#2E8B57", // sea green
"#DC143C", // crimson
"#4682B4", // steel blue
];
/**
* Convert hex color to RGBA number (for Jimp)
* @param hex - Hex color string (e.g., "#FF0000")
* @param alpha - Alpha value (0-255), default 255
* @returns Unsigned 32-bit integer in RGBA format
*/
function hexToRgba(hex, alpha = 255) {
const r = parseInt(hex.slice(1, 3), 16);
const g = parseInt(hex.slice(3, 5), 16);
const b = parseInt(hex.slice(5, 7), 16);
// Use Jimp's built-in rgbaToInt utility
return (0, jimp_1.rgbaToInt)(r, g, b, alpha);
}
/**
* Get highlight color based on index and color scheme
* @param index - Element index (0-based)
* @param scheme - Color scheme: 'red' for single color, 'rainbow' for cycling
*/
function getHighlightColor(index, scheme = 'rainbow') {
if (scheme === 'red') {
return {
baseColor: "#FF0000",
backgroundColor: "#FF00001A", // 10% opacity
};
}
// Rainbow color cycling
const colorIndex = index % exports.HIGHLIGHT_COLORS.length;
const baseColor = exports.HIGHLIGHT_COLORS[colorIndex];
const backgroundColor = baseColor + "1A"; // 10% opacity
return { baseColor, backgroundColor };
}
/**
* Get color as RGBA number for Jimp
*/
function getHighlightColorRgba(index, scheme = 'rainbow') {
const { baseColor } = getHighlightColor(index, scheme);
return hexToRgba(baseColor);
}