Current section

Files

Jump to
weapp src wechat wxml.gleam
Raw

src/wechat/wxml.gleam

//// wxml module provides WXML node query bindings
//// details in [wechat document](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/wx.createSelectorQuery.html)
////
import gleam/javascript/promise.{type Promise}
import wechat/object.{
type JsObject, type WechatResult, type WechatResultCallback,
}
/// SelectorQuery type for querying node information
///
pub type SelectorQuery
/// NodesRef type for node reference returned by select methods
///
pub type NodesRef
/// `wx.createSelectorQuery()`
/// Returns a SelectorQuery object instance
///
@external(javascript, "../wechat_wxml_ffi.mjs", "create_selector_query")
pub fn create_selector_query() -> SelectorQuery
/// `SelectorQuery.in(component)`
/// Change the selection scope to custom component `component`
///
@external(javascript, "../wechat_wxml_ffi.mjs", "selector_query_in")
pub fn selector_query_in(
query q: SelectorQuery,
component c: JsObject,
) -> SelectorQuery
/// `SelectorQuery.select(selector)`
/// Select the first node matching `selector` in the current page
/// Returns a NodesRef object instance
///
@external(javascript, "../wechat_wxml_ffi.mjs", "selector_query_select")
pub fn selector_query_select(
query q: SelectorQuery,
selector s: String,
) -> NodesRef
/// `SelectorQuery.selectAll(selector)`
/// Select all nodes matching `selector` in the current page
/// Returns a NodesRef object instance
///
@external(javascript, "../wechat_wxml_ffi.mjs", "selector_query_select_all")
pub fn selector_query_select_all(
query q: SelectorQuery,
selector s: String,
) -> NodesRef
/// `SelectorQuery.selectViewport()`
/// Select the display area (viewport)
/// Can be used to get display area dimensions, scroll position, etc.
/// Returns a NodesRef object instance
///
@external(javascript, "../wechat_wxml_ffi.mjs", "selector_query_select_viewport")
pub fn selector_query_select_viewport(query q: SelectorQuery) -> NodesRef
/// `SelectorQuery.exec()`
/// Execute all requests
/// Request results form an array in the order they were requested
/// Returns in the first parameter of the callback
///
@external(javascript, "../wechat_wxml_ffi.mjs", "selector_query_exec")
pub fn selector_query_exec(query q: SelectorQuery) -> Promise(WechatResult)
/// `NodesRef.boundingClientRect()`
/// Add request to get node layout position relative to display area
/// Returns NodesRef for chaining
///
@external(javascript, "../wechat_wxml_ffi.mjs", "nodes_ref_bounding_client_rect")
pub fn nodes_ref_bounding_client_rect(
ref r: NodesRef,
callback cb: WechatResultCallback,
) -> SelectorQuery
/// `NodesRef.scrollOffset()`
/// Add request to get node scroll position
/// Returns NodesRef for chaining
///
@external(javascript, "../wechat_wxml_ffi.mjs", "nodes_ref_scroll_offset")
pub fn nodes_ref_scroll_offset(ref r: NodesRef) -> NodesRef
/// `NodesRef.fields(rect, dataset, computedStyle, size, scrollOffset, properties)`
/// Add request to get specified node fields
/// Returns NodesRef for chaining
///
@external(javascript, "../wechat_wxml_ffi.mjs", "nodes_ref_fields")
pub fn nodes_ref_fields(ref r: NodesRef, fields f: JsObject) -> NodesRef
/// `NodesRef.context()`
/// Add request to get the corresponding context object
/// Currently supports CanvasContext, Canvas 2D, MapContext, VideoContext, AdContext, EditorContext, CameraContext, LivePlayerContext, LivePusherContext, OpenDataContext
/// Returns NodesRef for chaining
///
@external(javascript, "../wechat_wxml_ffi.mjs", "nodes_ref_context")
pub fn nodes_ref_context(ref r: NodesRef) -> NodesRef
/// `NodesRef.node()`
/// Add request to get Node instance
/// Returns NodesRef for chaining
///
@external(javascript, "../wechat_wxml_ffi.mjs", "nodes_ref_node")
pub fn nodes_ref_node(ref r: NodesRef) -> NodesRef
/// `NodesRef.ref(component)`
/// Add request to get component instance matching the selector
/// Returns NodesRef for chaining
///
@external(javascript, "../wechat_wxml_ffi.mjs", "nodes_ref_ref")
pub fn nodes_ref_ref(ref r: NodesRef) -> NodesRef
/// ScrollViewContext type for scroll-view component context
///
pub type ScrollViewContext
/// `ScrollViewContext.closeRefresh`
/// Close pull-down refresh
///
@external(javascript, "../wechat_wxml_ffi.mjs", "scrollViewContextCloseRefresh")
pub fn scroll_view_context_close_refresh(
ctx: ScrollViewContext,
) -> Promise(WechatResult)
/// `ScrollViewContext.closeTwoLevel`
/// Close two-level page
///
@external(javascript, "../wechat_wxml_ffi.mjs", "scrollViewContextCloseTwoLevel")
pub fn scroll_view_context_close_two_level(
ctx: ScrollViewContext,
) -> Promise(WechatResult)
/// `ScrollViewContext.scrollIntoView`
/// Scroll element into view
///
@external(javascript, "../wechat_wxml_ffi.mjs", "scrollViewContextScrollIntoView")
pub fn scroll_view_context_scroll_into_view(
ctx: ScrollViewContext,
selector s: String,
) -> Promise(WechatResult)
/// `ScrollViewContext.scrollTo`
/// Scroll to specified position
///
@external(javascript, "../wechat_wxml_ffi.mjs", "scrollViewContextScrollTo")
pub fn scroll_view_context_scroll_to(
ctx: ScrollViewContext,
left l: Int,
top t: Int,
) -> Promise(WechatResult)
/// `ScrollViewContext.triggerRefresh`
/// Trigger pull-down refresh
///
@external(javascript, "../wechat_wxml_ffi.mjs", "scrollViewContextTriggerRefresh")
pub fn scroll_view_context_trigger_refresh(
ctx: ScrollViewContext,
) -> Promise(WechatResult)
/// `ScrollViewContext.triggerTwoLevel`
/// Trigger two-level page
///
@external(javascript, "../wechat_wxml_ffi.mjs", "scrollViewContextTriggerTwoLevel")
pub fn scroll_view_context_trigger_two_level(
ctx: ScrollViewContext,
) -> Promise(WechatResult)
/// IntersectionObserver
///
/// IntersectionObserver type
///
pub type IntersectionObserver
/// `wx.createIntersectionObserver`
/// Create intersection observer
///
@external(javascript, "../wechat_wxml_ffi.mjs", "createIntersectionObserver")
pub fn create_intersection_observer(
component c: JsObject,
options o: JsObject,
) -> IntersectionObserver
/// IntersectionObserver.disconnect
/// Stop listening
///
@external(javascript, "../wechat_wxml_ffi.mjs", "intersectionObserverDisconnect")
pub fn intersection_observer_disconnect(io: IntersectionObserver) -> Nil
/// IntersectionObserver.observe
/// Listen for intersection state change
///
@external(javascript, "../wechat_wxml_ffi.mjs", "intersectionObserverObserve")
pub fn intersection_observer_observe(
io: IntersectionObserver,
target t: JsObject,
callback cb: WechatResultCallback,
) -> Nil
/// IntersectionObserver.relativeTo
/// Specify reference node
///
@external(javascript, "../wechat_wxml_ffi.mjs", "intersectionObserverRelativeTo")
pub fn intersection_observer_relative_to(
io: IntersectionObserver,
selector s: JsObject,
) -> IntersectionObserver
/// IntersectionObserver.relativeToViewport
/// Use viewport as reference
///
@external(javascript, "../wechat_wxml_ffi.mjs", "intersectionObserverRelativeToViewport")
pub fn intersection_observer_relative_to_viewport(
io: IntersectionObserver,
) -> IntersectionObserver
/// Phase 19: WXML Advanced - MediaQueryObserver
///
/// MediaQueryObserver type for responsive design
///
pub type MediaQueryObserver
/// `wx.createMediaQueryObserver`
/// Create a media query observer for responsive design
///
@external(javascript, "../wechat_wxml_ffi.mjs", "createMediaQueryObserver")
pub fn create_media_query_observer(component c: JsObject) -> MediaQueryObserver
/// `MediaQueryObserver.disconnect`
/// Stop listening for media query changes
///
@external(javascript, "../wechat_wxml_ffi.mjs", "mediaQueryObserverDisconnect")
pub fn media_query_observer_disconnect(mq: MediaQueryObserver) -> Nil
/// `MediaQueryObserver.observe`
/// Start observing media query changes
///
@external(javascript, "../wechat_wxml_ffi.mjs", "mediaQueryObserverObserve")
pub fn media_query_observer_observe(
mq: MediaQueryObserver,
descriptor d: JsObject,
callback cb: fn(JsObject) -> Nil,
) -> Nil