| 
                        123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | 
                        - import { createContext, useContext } from 'use-context-selector'
 - import { hexToRGBA } from './utils'
 - 
 - export class Theme {
 -   public chatColorTheme: string | null
 -   public chatColorThemeInverted: boolean
 - 
 -   public primaryColor = '#1C64F2'
 -   public backgroundHeaderColorStyle = 'backgroundImage: linear-gradient(to right, #2563eb, #0ea5e9)'
 -   public headerBorderBottomStyle = ''
 -   public colorFontOnHeaderStyle = 'color: white'
 -   public colorPathOnHeader = 'white'
 -   public backgroundButtonDefaultColorStyle = 'backgroundColor: #1C64F2'
 -   public roundedBackgroundColorStyle = 'backgroundColor: rgb(245 248 255)'
 -   public chatBubbleColorStyle = 'backgroundColor: rgb(225 239 254)'
 -   public chatBubbleColor = 'rgb(225 239 254)'
 - 
 -   constructor(chatColorTheme: string | null = null, chatColorThemeInverted = false) {
 -     this.chatColorTheme = chatColorTheme
 -     this.chatColorThemeInverted = chatColorThemeInverted
 -     this.configCustomColor()
 -     this.configInvertedColor()
 -   }
 - 
 -   private configCustomColor() {
 -     if (this.chatColorTheme !== null && this.chatColorTheme !== '') {
 -       this.primaryColor = this.chatColorTheme ?? '#1C64F2'
 -       this.backgroundHeaderColorStyle = `backgroundColor: ${this.primaryColor}`
 -       this.backgroundButtonDefaultColorStyle = `backgroundColor: ${this.primaryColor}`
 -       this.roundedBackgroundColorStyle = `backgroundColor: ${hexToRGBA(this.primaryColor, 0.05)}`
 -       this.chatBubbleColorStyle = `backgroundColor: ${hexToRGBA(this.primaryColor, 0.15)}`
 -       this.chatBubbleColor = `${hexToRGBA(this.primaryColor, 0.15)}`
 -     }
 -   }
 - 
 -   private configInvertedColor() {
 -     if (this.chatColorThemeInverted) {
 -       this.backgroundHeaderColorStyle = 'backgroundColor: #ffffff'
 -       this.colorFontOnHeaderStyle = `color: ${this.primaryColor}`
 -       this.headerBorderBottomStyle = 'borderBottom: 1px solid #ccc'
 -       this.colorPathOnHeader = this.primaryColor
 -     }
 -   }
 - }
 - 
 - export class ThemeBuilder {
 -   private _theme?: Theme
 -   private buildChecker = false
 - 
 -   public get theme() {
 -     if (this._theme === undefined)
 -       throw new Error('The theme should be built first and then accessed')
 -     else
 -       return this._theme
 -   }
 - 
 -   public buildTheme(chatColorTheme: string | null = null, chatColorThemeInverted = false) {
 -     if (!this.buildChecker) {
 -       this._theme = new Theme(chatColorTheme, chatColorThemeInverted)
 -       this.buildChecker = true
 -     }
 -     else {
 -       if (this.theme?.chatColorTheme !== chatColorTheme || this.theme?.chatColorThemeInverted !== chatColorThemeInverted) {
 -         this._theme = new Theme(chatColorTheme, chatColorThemeInverted)
 -         this.buildChecker = true
 -       }
 -     }
 -   }
 - }
 - 
 - const ThemeContext = createContext<ThemeBuilder>(new ThemeBuilder())
 - export const useThemeContext = () => useContext(ThemeContext)
 
 
  |