export function queryGroupElementsById(groupId: string) { const elements = document.querySelectorAll( `[data-group-id$="-${groupId}"]` ) as any; const matchingElements: HTMLElement[] = []; elements.forEach((element: HTMLElement) => { const foundGroupId = element?.dataset?.groupId || ''; const validGroupRegex = new RegExp(`^\\d+-${groupId}$`); if (validGroupRegex.test(foundGroupId)) { matchingElements.push(element); } }); return matchingElements; } export function removeSortingInfo(groupId: string) { return (groupId || '').replace(/^\d+-/, ''); } export function getRGBFromDecimalColor(color: number) { let red = (color >> 16) & 0xff; let green = (color >> 8) & 0xff; let blue = color & 0xff; return `rgb(${red},${green},${blue})`; } export function makeSVGElement( type: string, attributes: Record = {}, parent?: any ): SVGElement { let element = document.createElementNS('http://www.w3.org/2000/svg', type); for (let prop in attributes) { if (!attributes.hasOwnProperty(prop)) { continue; } element.setAttribute(prop, attributes[prop]); } if (parent) { parent.appendChild(element); } return element; }