package app

import (
	
	
	
)

var (
	// DefaultLogger is the logger used to log info and errors.
	DefaultLogger func(format string, v ...any)

	defaultColor string
	errorColor   string
	infoColor    string
)

func init() {
	 := runtime.GOARCH
	if  == "wasm" {
		DefaultLogger = clientLog
		return
	}

	if  != "window" {
		defaultColor = "\033[00m"
		errorColor = "\033[91m"
		infoColor = "\033[94m"
	}
	DefaultLogger = serverLog
}

// Log logs using the default formats for its operands. Spaces are always added
// between operands.
func ( ...any) {
	var  strings.Builder
	for  := 0;  < len(); ++ {
		if  != 0 {
			.WriteByte(' ')
		}
		.WriteString("%v")
	}
	Logf(.String(), ...)
}

// Logf logs according to a format specifier.
func ( string,  ...any) {
	DefaultLogger(, ...)
}

func serverLog( string,  ...any) {
	 := false

	for ,  := range  {
		if ,  := .(error);  {
			 = true
			break
		}
	}

	if  {
		fmt.Printf(errorColor+"ERROR ‣ "+defaultColor++"\n", ...)
		return
	}

	fmt.Printf(infoColor+"INFO ‣ "+defaultColor++"\n", ...)
}

func clientLog( string,  ...any) {
	 := false
	for ,  := range  {
		if ,  := .(error);  {
			 = true
			break
		}
	}

	if  {
		Window().Get("console").Call("error", fmt.Sprintf(, ...))
		return
	}
	Window().Get("console").Call("log", fmt.Sprintf(, ...))
}