Current section
Files
Jump to
Current section
Files
src/gbr/js/jsdocument.gleam
////
//// Javascript document
////
//// - https://developer.mozilla.org/en-US/docs/Web/API/Document
////
import gleam/javascript/array.{type Array}
import gleam/javascript/promise.{type Promise}
import gbr/js/jselement.{type JsElement}
import gbr/js/jsevent.{type JsEvent}
pub type JsDocument
@external(javascript, "./dom/document.ffi.mjs", "querySelector")
pub fn query_selector(selector: String) -> Result(JsElement, String)
@external(javascript, "./dom/document.ffi.mjs", "querySelectorAll")
pub fn query_selector_all(selector: String) -> Array(JsElement)
@external(javascript, "./dom/document.ffi.mjs", "addEventListener")
pub fn add_event_listener(type_: String, listener: fn(JsEvent(t)) -> Nil) -> Nil
@external(javascript, "./dom/document.ffi.mjs", "createElement")
pub fn create_element(tag_name: String) -> JsElement
@external(javascript, "./dom/document.ffi.mjs", "createTextNode")
pub fn create_text_node(content: String) -> JsElement
@external(javascript, "./dom/document.ffi.mjs", "body")
pub fn body() -> JsElement
@external(javascript, "./dom/document.ffi.mjs", "getElementById")
pub fn get_element_by_id(id: String) -> Result(JsElement, String)
@external(javascript, "./dom/document.ffi.mjs", "getElementsByTagName")
pub fn get_elements_by_tag_name(tag_name: String) -> Array(JsElement)
@external(javascript, "./dom/document.ffi.mjs", "readyState")
pub fn ready_state() -> String
/// Get the [`hidden`](https://developer.mozilla.org/en-US/docs/Web/API/Document/hidden)
/// attribute value of the current document
@external(javascript, "./dom/document.ffi.mjs", "hidden")
pub fn hidden() -> Bool
/// Get the [`visibilityState`](https://developer.mozilla.org/en-US/docs/Web/API/Document/visibilityState)
/// attribute value of the current document. It should be either `"visible"` or `"hidden"`.
@external(javascript, "./dom/document.ffi.mjs", "visibilityState")
pub fn visibility_state() -> String
/// Get the [`title`](https://developer.mozilla.org/en-US/docs/Web/API/Document/title)
/// attribute value of the current document.
@external(javascript, "./dom/document.ffi.mjs", "title")
pub fn title() -> String
/// Set the [`title`](https://developer.mozilla.org/en-US/docs/Web/API/Document/title)
/// attribute value of the current document.
@external(javascript, "./dom/document.ffi.mjs", "setTitle")
pub fn set_title(title: String) -> Nil
/// returns the Element that is currently being presented in fullscreen mode in this document.
@external(javascript, "./dom/document.ffi.mjs", "fullscreenElement")
pub fn fullscreen_element(document: JsDocument) -> Result(JsElement, String)
/// exitFullscreen() requests that the element on this document which is currently being presented in fullscreen mode be taken out of fullscreen mode, restoring the previous state of the screen.
@external(javascript, "./dom/document.ffi.mjs", "exitFullscreen")
pub fn exit_fullscreen(document: JsDocument) -> Promise(Result(Nil, String))