| import { colors } from "@gradio/theme"; | |
| export function name_to_rgba( | |
| name: string, | |
| a: number, | |
| ctx: CanvasRenderingContext2D | null | |
| ): string { | |
| if (!ctx) { | |
| var canvas = document.createElement("canvas"); | |
| ctx = canvas.getContext("2d")!; | |
| } | |
| ctx.fillStyle = name; | |
| ctx.fillRect(0, 0, 1, 1); | |
| const [r, g, b] = ctx.getImageData(0, 0, 1, 1).data; | |
| ctx.clearRect(0, 0, 1, 1); | |
| return `rgba(${r}, ${g}, ${b}, ${255 / a})`; | |
| } | |
| export function correct_color_map( | |
| color_map: Record<string, string>, | |
| _color_map: Record<string, { primary: string; secondary: string }>, | |
| browser: any, | |
| ctx: CanvasRenderingContext2D | null | |
| ): void { | |
| for (const col in color_map) { | |
| const _c = color_map[col].trim(); | |
| if (_c in colors) { | |
| _color_map[col] = colors[_c as keyof typeof colors]; | |
| } else { | |
| _color_map[col] = { | |
| primary: browser | |
| ? name_to_rgba(color_map[col], 1, ctx) | |
| : color_map[col], | |
| secondary: browser | |
| ? name_to_rgba(color_map[col], 0.5, ctx) | |
| : color_map[col] | |
| }; | |
| } | |
| } | |
| } | |
| export function merge_elements( | |
| value: { token: string; class_or_confidence: string | number | null }[], | |
| mergeMode: "empty" | "equal" | |
| ): { token: string; class_or_confidence: string | number | null }[] { | |
| let result: typeof value = []; | |
| let tempStr: string | null = null; | |
| let tempVal: string | number | null = null; | |
| for (const val of value) { | |
| if ( | |
| (mergeMode === "empty" && val.class_or_confidence === null) || | |
| (mergeMode === "equal" && tempVal === val.class_or_confidence) | |
| ) { | |
| tempStr = tempStr ? tempStr + val.token : val.token; | |
| } else { | |
| if (tempStr !== null) { | |
| result.push({ | |
| token: tempStr, | |
| class_or_confidence: tempVal | |
| }); | |
| } | |
| tempStr = val.token; | |
| tempVal = val.class_or_confidence; | |
| } | |
| } | |
| if (tempStr !== null) { | |
| result.push({ | |
| token: tempStr, | |
| class_or_confidence: tempVal | |
| }); | |
| } | |
| return result; | |
| } | |