import type { GetidSdkTypes } from '..'; export const reconstructTheme = (serverTheme: GetidSdkTypes.Theme) => { return { cameraOverlayBackgroundColor: serverTheme['mobile-camera-background-color'] || 'rgba(0, 0, 0, 0.5)', cameraFrameColor: serverTheme['border-color'] || '#FFA500', successColor: serverTheme['success-color'] || '#A8F3B7', errorColor: serverTheme['error-color'] || '#FF0000', }; }; export const mergeStyles = ( serverStyles: GetidSdkTypes.Theme = {}, styles: GetidSdkTypes.Styles = {} ) => { return { ...serverStyles, ...styles, }; }; export function cssColorToVec3(cssColor: string): number[] | null { cssColor = cssColor.trim().toLowerCase(); if (cssColor.startsWith('#')) { let hex = cssColor.substring(1); if (hex.length === 3) { hex = (((hex[0] as string) + hex[0]) as string) + hex[1] + hex[1] + hex[2] + hex[2]; } let r = parseInt(hex.substring(0, 2), 16) / 255; let g = parseInt(hex.substring(2, 4), 16) / 255; let b = parseInt(hex.substring(4, 6), 16) / 255; return [r, g, b]; } if (cssColor.startsWith('rgb(') || cssColor.startsWith('rgba(')) { let components = cssColor .substring(cssColor.indexOf('(') + 1, cssColor.lastIndexOf(')')) .split(','); if (components.length < 3) return null; let r = parseInt((components[0] as string).trim(), 10) / 255; let g = parseInt((components[1] as string).trim(), 10) / 255; let b = parseInt((components[2] as string).trim(), 10) / 255; return [r, g, b]; } return null; }