// Do not edit. This file is generated.
// MoonBit type: Console
// Specifications: console.idl

///|
/// [Console](https://developer.mozilla.org/en-US/docs/Web/API/Console)
#external
pub type Console

///|
pub impl TJsValue for Console with to_js(self : Console) -> JsValue = "%identity"

///|
pub impl FromJsAny for Console with from_js_any(value : JsAny) -> Console = "%identity"

///|
/// [Console.assert](https://developer.mozilla.org/en-US/docs/Web/API/Console/assert)
pub fn Console::assert_(condition? : Bool, data : Array[&TJsValue]) -> Unit {
  console_assert_ffi(
    opt_to_js(condition),
    TJsValue::to_js(data.map(fn(v : &TJsValue) -> JsValue { v.to_js() })),
  )
}

///|
/// [Console.clear](https://developer.mozilla.org/en-US/docs/Web/API/Console/clear)
pub fn Console::clear() -> Unit {
  console_clear_ffi()
}

///|
/// [Console.debug](https://developer.mozilla.org/en-US/docs/Web/API/Console/debug)
pub fn Console::debug(data : Array[&TJsValue]) -> Unit {
  console_debug_ffi(
    TJsValue::to_js(data.map(fn(v : &TJsValue) -> JsValue { v.to_js() })),
  )
}

///|
/// [Console.error](https://developer.mozilla.org/en-US/docs/Web/API/Console/error)
pub fn Console::error(data : Array[&TJsValue]) -> Unit {
  console_error_ffi(
    TJsValue::to_js(data.map(fn(v : &TJsValue) -> JsValue { v.to_js() })),
  )
}

///|
/// [Console.info](https://developer.mozilla.org/en-US/docs/Web/API/Console/info)
pub fn Console::info(data : Array[&TJsValue]) -> Unit {
  console_info_ffi(
    TJsValue::to_js(data.map(fn(v : &TJsValue) -> JsValue { v.to_js() })),
  )
}

///|
/// [Console.log](https://developer.mozilla.org/en-US/docs/Web/API/Console/log)
pub fn Console::log(data : Array[&TJsValue]) -> Unit {
  console_log_ffi(
    TJsValue::to_js(data.map(fn(v : &TJsValue) -> JsValue { v.to_js() })),
  )
}

///|
/// [Console.table](https://developer.mozilla.org/en-US/docs/Web/API/Console/table)
pub fn Console::table(
  tabular_data? : JsValue,
  properties? : Array[String],
) -> Unit {
  console_table_ffi(opt_to_js(tabular_data), opt_to_js(properties))
}

///|
/// [Console.trace](https://developer.mozilla.org/en-US/docs/Web/API/Console/trace)
pub fn Console::trace(data : Array[&TJsValue]) -> Unit {
  console_trace_ffi(
    TJsValue::to_js(data.map(fn(v : &TJsValue) -> JsValue { v.to_js() })),
  )
}

///|
/// [Console.warn](https://developer.mozilla.org/en-US/docs/Web/API/Console/warn)
pub fn Console::warn(data : Array[&TJsValue]) -> Unit {
  console_warn_ffi(
    TJsValue::to_js(data.map(fn(v : &TJsValue) -> JsValue { v.to_js() })),
  )
}

///|
/// [Console.dir](https://developer.mozilla.org/en-US/docs/Web/API/Console/dir)
pub fn Console::dir(item? : JsValue, options? : JsValue) -> Unit {
  console_dir_ffi(opt_to_js(item), opt_to_js(options))
}

///|
/// [Console.dirxml](https://developer.mozilla.org/en-US/docs/Web/API/Console/dirxml)
pub fn Console::dirxml(data : Array[&TJsValue]) -> Unit {
  console_dirxml_ffi(
    TJsValue::to_js(data.map(fn(v : &TJsValue) -> JsValue { v.to_js() })),
  )
}

///|
/// [Console.count](https://developer.mozilla.org/en-US/docs/Web/API/Console/count)
pub fn Console::count(label? : String) -> Unit {
  console_count_ffi(opt_to_js(label))
}

///|
/// [Console.countReset](https://developer.mozilla.org/en-US/docs/Web/API/Console/countReset)
pub fn Console::count_reset(label? : String) -> Unit {
  console_count_reset_ffi(opt_to_js(label))
}

///|
/// [Console.group](https://developer.mozilla.org/en-US/docs/Web/API/Console/group)
pub fn Console::group(data : Array[&TJsValue]) -> Unit {
  console_group_ffi(
    TJsValue::to_js(data.map(fn(v : &TJsValue) -> JsValue { v.to_js() })),
  )
}

///|
/// [Console.groupCollapsed](https://developer.mozilla.org/en-US/docs/Web/API/Console/groupCollapsed)
pub fn Console::group_collapsed(data : Array[&TJsValue]) -> Unit {
  console_group_collapsed_ffi(
    TJsValue::to_js(data.map(fn(v : &TJsValue) -> JsValue { v.to_js() })),
  )
}

///|
/// [Console.groupEnd](https://developer.mozilla.org/en-US/docs/Web/API/Console/groupEnd)
pub fn Console::group_end() -> Unit {
  console_group_end_ffi()
}

///|
/// [Console.time](https://developer.mozilla.org/en-US/docs/Web/API/Console/time)
pub fn Console::time(label? : String) -> Unit {
  console_time_ffi(opt_to_js(label))
}

///|
/// [Console.timeLog](https://developer.mozilla.org/en-US/docs/Web/API/Console/timeLog)
pub fn Console::time_log(label? : String, data : Array[&TJsValue]) -> Unit {
  console_time_log_ffi(
    opt_to_js(label),
    TJsValue::to_js(data.map(fn(v : &TJsValue) -> JsValue { v.to_js() })),
  )
}

///|
/// [Console.timeEnd](https://developer.mozilla.org/en-US/docs/Web/API/Console/timeEnd)
pub fn Console::time_end(label? : String) -> Unit {
  console_time_end_ffi(opt_to_js(label))
}

///|
#cfg(target="js")
extern "js" fn console_assert_ffi(condition : JsValue, data : JsValue) -> Unit = "(condition, data) => console.assert(condition, ...data)"

///|
#cfg(target="js")
extern "js" fn console_clear_ffi() -> Unit = "() => console.clear()"

///|
#cfg(target="js")
extern "js" fn console_debug_ffi(data : JsValue) -> Unit = "(data) => console.debug(...data)"

///|
#cfg(target="js")
extern "js" fn console_error_ffi(data : JsValue) -> Unit = "(data) => console.error(...data)"

///|
#cfg(target="js")
extern "js" fn console_info_ffi(data : JsValue) -> Unit = "(data) => console.info(...data)"

///|
#cfg(target="js")
extern "js" fn console_log_ffi(data : JsValue) -> Unit = "(data) => console.log(...data)"

///|
#cfg(target="js")
extern "js" fn console_table_ffi(
  tabular_data : JsValue,
  properties : JsValue,
) -> Unit = "(tabular_data, properties) => console.table(tabular_data, properties)"

///|
#cfg(target="js")
extern "js" fn console_trace_ffi(data : JsValue) -> Unit = "(data) => console.trace(...data)"

///|
#cfg(target="js")
extern "js" fn console_warn_ffi(data : JsValue) -> Unit = "(data) => console.warn(...data)"

///|
#cfg(target="js")
extern "js" fn console_dir_ffi(item : JsValue, options : JsValue) -> Unit = "(item, options) => console.dir(item, options)"

///|
#cfg(target="js")
extern "js" fn console_dirxml_ffi(data : JsValue) -> Unit = "(data) => console.dirxml(...data)"

///|
#cfg(target="js")
extern "js" fn console_count_ffi(label : JsValue) -> Unit = "(label) => console.count(label)"

///|
#cfg(target="js")
extern "js" fn console_count_reset_ffi(label : JsValue) -> Unit = "(label) => console.countReset(label)"

///|
#cfg(target="js")
extern "js" fn console_group_ffi(data : JsValue) -> Unit = "(data) => console.group(...data)"

///|
#cfg(target="js")
extern "js" fn console_group_collapsed_ffi(data : JsValue) -> Unit = "(data) => console.groupCollapsed(...data)"

///|
#cfg(target="js")
extern "js" fn console_group_end_ffi() -> Unit = "() => console.groupEnd()"

///|
#cfg(target="js")
extern "js" fn console_time_ffi(label : JsValue) -> Unit = "(label) => console.time(label)"

///|
#cfg(target="js")
extern "js" fn console_time_log_ffi(label : JsValue, data : JsValue) -> Unit = "(label, data) => console.timeLog(label, ...data)"

///|
#cfg(target="js")
extern "js" fn console_time_end_ffi(label : JsValue) -> Unit = "(label) => console.timeEnd(label)"

///|
#cfg(target="wasm-gc")
fn console_assert_ffi(condition : JsValue, data : JsValue) -> Unit = "webapi_Console" "assert"

///|
#cfg(target="wasm-gc")
fn console_clear_ffi() -> Unit = "webapi_Console" "clear"

///|
#cfg(target="wasm-gc")
fn console_debug_ffi(data : JsValue) -> Unit = "webapi_Console" "debug"

///|
#cfg(target="wasm-gc")
fn console_error_ffi(data : JsValue) -> Unit = "webapi_Console" "error"

///|
#cfg(target="wasm-gc")
fn console_info_ffi(data : JsValue) -> Unit = "webapi_Console" "info"

///|
#cfg(target="wasm-gc")
fn console_log_ffi(data : JsValue) -> Unit = "webapi_Console" "log"

///|
#cfg(target="wasm-gc")
fn console_table_ffi(tabular_data : JsValue, properties : JsValue) -> Unit = "webapi_Console" "table"

///|
#cfg(target="wasm-gc")
fn console_trace_ffi(data : JsValue) -> Unit = "webapi_Console" "trace"

///|
#cfg(target="wasm-gc")
fn console_warn_ffi(data : JsValue) -> Unit = "webapi_Console" "warn"

///|
#cfg(target="wasm-gc")
fn console_dir_ffi(item : JsValue, options : JsValue) -> Unit = "webapi_Console" "dir"

///|
#cfg(target="wasm-gc")
fn console_dirxml_ffi(data : JsValue) -> Unit = "webapi_Console" "dirxml"

///|
#cfg(target="wasm-gc")
fn console_count_ffi(label : JsValue) -> Unit = "webapi_Console" "count"

///|
#cfg(target="wasm-gc")
fn console_count_reset_ffi(label : JsValue) -> Unit = "webapi_Console" "countReset"

///|
#cfg(target="wasm-gc")
fn console_group_ffi(data : JsValue) -> Unit = "webapi_Console" "group"

///|
#cfg(target="wasm-gc")
fn console_group_collapsed_ffi(data : JsValue) -> Unit = "webapi_Console" "groupCollapsed"

///|
#cfg(target="wasm-gc")
fn console_group_end_ffi() -> Unit = "webapi_Console" "groupEnd"

///|
#cfg(target="wasm-gc")
fn console_time_ffi(label : JsValue) -> Unit = "webapi_Console" "time"

///|
#cfg(target="wasm-gc")
fn console_time_log_ffi(label : JsValue, data : JsValue) -> Unit = "webapi_Console" "timeLog"

///|
#cfg(target="wasm-gc")
fn console_time_end_ffi(label : JsValue) -> Unit = "webapi_Console" "timeEnd"