const className = (classNameStartsWith: string, useContains?: boolean) => `[class${useContains ? '*' : '^'}=${classNameStartsWith}]` export default { select: (name: string, parent?: Element) => (parent || document).querySelector(className(name)), selectInput: (name: string, parent?: Element) => (parent || document).querySelector(className(name)), selectContains: (name: string, parent?: Element) => (parent || document).querySelector(className(name, true)), selectAll: (name: string, parent?: Element) => (parent || document).querySelectorAll(className(name)), rgbToHex: (rgb: string) => { const componentToHex = (c: number) => { const hex = c.toString(16).toUpperCase() return hex.length === 1 ? `0${hex}` : hex } const matches = /rgb\((\d+), (\d+), (\d+)\)/.exec(rgb) if (matches) { const transform = (match: string) => componentToHex(parseInt(match, 10)) return `#${transform(matches[1])}${transform(matches[2])}${transform(matches[3])}` } return rgb }, }