Sign in

    wzzc-dev/moui/services does not have a README file

    AppEnvironment

    pub struct AppEnvironment {
    services_value : AppServices
    timer_value : TimerSource?
    routes_value : RouteSource?
    clock_value : () -> Double?
    }

    AppEnvironment::clock

    fn AppEnvironment::clock(self : AppEnvironment) -> () -> Double?

    Monotonic milliseconds on a real host clock, when the backend provides one. Apps use it to stamp animations and to measure event spacing (the core pointer contract does not carry event timestamps). It shares the timeline with the host's frame clock, so a stamp taken here compares directly against ViewPaintContext.now_ms.

    AppEnvironment::new

    fn AppEnvironment::new(services? : AppServices, timer? : TimerSource?, routes? : RouteSource?, clock? : () -> Double?) -> AppEnvironment

    AppEnvironment::routes

    AppEnvironment::services

    fn AppEnvironment::services(self : AppEnvironment) -> AppServices

    AppEnvironment::timer

    AppLifecycleEvent

    pub(all) enum AppLifecycleEvent {
    Foreground
    Background
    } derive(Eq, ToJson,
    Debug
    )

    Host lifecycle events describe whether the application is visible to the user. Window focus remains a window/input concern and is not represented here.

    AppLifecycleEvent::equal

    AppLifecycleEvent::not_equal

    fn AppLifecycleEvent::not_equal(x : AppLifecycleEvent, y : AppLifecycleEvent) -> Bool

    AppLifecycleEvent::to_json

    AppLifecycleSource

    pub struct AppLifecycleSource {
    // private fields
    }

    Push source populated by a platform composition root. An absent source on PlatformServices means the host does not expose app lifecycle events.

    AppLifecycleSource::active_handler_count

    fn AppLifecycleSource::active_handler_count(self : AppLifecycleSource) -> Int

    AppLifecycleSource::new

    AppLifecycleSource::publish

    fn AppLifecycleSource::publish(self : AppLifecycleSource, event : AppLifecycleEvent) -> Int

    AppLifecycleSource::subscription

    fn[Msg] AppLifecycleSource::subscription(self : AppLifecycleSource, map~ : (AppLifecycleEvent) -> Msg, key? : String, label? : String) ->
    Subscription
    [Msg]

    AppServices

    pub struct AppServices {
    files_value : FileServices
    clipboard_value : ClipboardServices
    urls_value : UrlServices
    settings_value : SettingsServices
    appearance_value : AppearanceServices
    menus_value : MenuServices
    platform_value : PlatformServices
    }

    AppServices::appearance

    fn AppServices::appearance(self : AppServices) -> AppearanceServices

    AppServices::clipboard

    fn AppServices::clipboard(self : AppServices) -> ClipboardServices

    AppServices::files

    fn AppServices::files(self : AppServices) -> FileServices

    AppServices::menus

    fn AppServices::menus(self : AppServices) -> MenuServices

    AppServices::new

    fn AppServices::new(files? : FileServices, clipboard? : ClipboardServices, urls? : UrlServices, settings? : SettingsServices, appearance? : AppearanceServices, menus? : MenuServices, platform? : PlatformServices) -> AppServices

    AppServices::platform

    fn AppServices::platform(self : AppServices) -> PlatformServices

    AppServices::settings

    fn AppServices::settings(self : AppServices) -> SettingsServices

    AppServices::unavailable

    fn AppServices::unavailable() -> AppServices

    AppServices::urls

    fn AppServices::urls(self : AppServices) -> UrlServices

    AppearanceServices

    pub struct AppearanceServices {
    system_color_scheme_fn : () -> ServiceTask[
    ColorScheme
    ]
    }

    AppearanceServices::new

    AppearanceServices::system_color_scheme

    ApplicationMenu

    pub(all) struct ApplicationMenu {
    title : String
    items : Array[ApplicationMenuItem]
    placement : ApplicationMenuPlacement
    }

    ApplicationMenu::application

    Commands placed in the platform's standard application menu. On macOS, these appear after About and before Services.

    ApplicationMenu::new

    fn ApplicationMenu::new(title~ : String, items~ : Array[ApplicationMenuItem], placement? : ApplicationMenuPlacement) -> ApplicationMenu

    ApplicationMenuItem

    pub(all) enum ApplicationMenuItem {
    MenuCommand(
    ActionCommand
    )
    MenuSeparator
    }

    ApplicationMenuPlacement

    pub(all) enum ApplicationMenuPlacement {
    MenuBar
    ApplicationMenu
    } derive(Eq,
    Debug
    )

    ApplicationMenuPlacement::equal

    ApplicationMenuPlacement::not_equal

    AssociationServices

    pub struct AssociationServices {
    register_protocol_fn : (ProtocolRegistration) -> ServiceTask[Unit]
    register_file_fn : (FileAssociation) -> ServiceTask[Unit]
    unregister_fn : (String) -> ServiceTask[Unit]
    }

    AssociationServices::new

    fn AssociationServices::new(register_protocol? : (ProtocolRegistration) -> ServiceTask[Unit], register_file? : (FileAssociation) -> ServiceTask[Unit], unregister? : (String) -> ServiceTask[Unit]) -> AssociationServices

    AssociationServices::register_file

    fn AssociationServices::register_file(self : AssociationServices, association : FileAssociation) -> ServiceTask[Unit]

    AssociationServices::register_protocol

    fn AssociationServices::register_protocol(self : AssociationServices, registration : ProtocolRegistration) -> ServiceTask[Unit]

    AssociationServices::unregister

    fn AssociationServices::unregister(self : AssociationServices, value : String) -> ServiceTask[Unit]

    ClipboardImage

    pub(all) struct ClipboardImage {
    mime_type : String
    bytes : Bytes
    } derive(Eq,
    Debug
    )

    ClipboardImage::equal

    ClipboardImage::not_equal

    fn ClipboardImage::not_equal(x : ClipboardImage, y : ClipboardImage) -> Bool

    ClipboardServices

    pub struct ClipboardServices {
    read_text_fn : () -> ServiceTask[String]
    write_text_fn : (String) -> ServiceTask[Unit]
    read_image_fn : () -> ServiceTask[ClipboardImage]
    write_image_fn : (ClipboardImage) -> ServiceTask[Unit]
    }

    ClipboardServices::new

    fn ClipboardServices::new(read_text? : () -> ServiceTask[String], write_text? : (String) -> ServiceTask[Unit], read_image? : () -> ServiceTask[ClipboardImage], write_image? : (ClipboardImage) -> ServiceTask[Unit]) -> ClipboardServices

    ClipboardServices::read_image

    ClipboardServices::read_text

    fn ClipboardServices::read_text(self : ClipboardServices) -> ServiceTask[String]

    ClipboardServices::write_image

    fn ClipboardServices::write_image(self : ClipboardServices, image : ClipboardImage) -> ServiceTask[Unit]

    ClipboardServices::write_text

    fn ClipboardServices::write_text(self : ClipboardServices, text : String) -> ServiceTask[Unit]

    DirectoryEntry

    pub(all) struct DirectoryEntry {
    name : String
    path : String
    is_directory : Bool
    } derive(Eq, ToJson,
    Debug
    )

    DirectoryEntry::equal

    DirectoryEntry::not_equal

    fn DirectoryEntry::not_equal(x : DirectoryEntry, y : DirectoryEntry) -> Bool

    DirectoryEntry::to_json

    FakeAppServices

    pub struct FakeAppServices {
    services_value : AppServices
    text_files : Map[String, String]
    settings_values : Map[String, String]
    system_color_scheme_value :
    Ref
    [
    ColorScheme
    ]
    clipboard_text_value :
    Ref
    [String]
    open_file_value :
    Ref
    [String?]
    save_file_value :
    Ref
    [String?]
    directory_value :
    Ref
    [String?]
    notifications : Map[String, NotificationRequest]
    tray_items : Map[String, TrayItem]
    permission_values : Map[PermissionKind, PermissionStatus]
    share_requests : Array[ShareRequest]
    print_requests : Array[PrintRequest]
    protocol_associations : Map[String, ProtocolRegistration]
    file_associations : Map[String, FileAssociation]
    window_states : Map[String, String]
    lifecycle_source : AppLifecycleSource
    calls_value : Array[String]
    }

    Deterministic in-memory services for reducer and Program tests.

    FakeAppServices::calls

    fn FakeAppServices::calls(self : FakeAppServices) -> Array[String]

    FakeAppServices::clipboard_text

    fn FakeAppServices::clipboard_text(self : FakeAppServices) -> String

    FakeAppServices::new

    FakeAppServices::notification

    fn FakeAppServices::notification(self : FakeAppServices, id : String) -> NotificationRequest?

    FakeAppServices::print_requests

    fn FakeAppServices::print_requests(self : FakeAppServices) -> Array[PrintRequest]

    FakeAppServices::publish_lifecycle

    fn FakeAppServices::publish_lifecycle(self : FakeAppServices, event : AppLifecycleEvent) -> Int

    FakeAppServices::services

    FakeAppServices::set_directory_selection

    fn FakeAppServices::set_directory_selection(self : FakeAppServices, path : String?) -> Unit

    FakeAppServices::set_open_file_selection

    fn FakeAppServices::set_open_file_selection(self : FakeAppServices, path : String?) -> Unit

    FakeAppServices::set_permission_status

    fn FakeAppServices::set_permission_status(self : FakeAppServices, kind : PermissionKind, status : PermissionStatus) -> Unit

    FakeAppServices::set_save_file_selection

    fn FakeAppServices::set_save_file_selection(self : FakeAppServices, path : String?) -> Unit

    FakeAppServices::set_system_color_scheme

    fn FakeAppServices::set_system_color_scheme(self : FakeAppServices, scheme :
    ColorScheme
    ) -> Unit

    FakeAppServices::set_text_file

    fn FakeAppServices::set_text_file(self : FakeAppServices, path : String, text : String) -> Unit

    FakeAppServices::share_requests

    fn FakeAppServices::share_requests(self : FakeAppServices) -> Array[ShareRequest]

    FakeAppServices::tray_item

    fn FakeAppServices::tray_item(self : FakeAppServices, id : String) -> TrayItem?

    FileAssociation

    pub(all) struct FileAssociation {
    extension : String
    mime_type : String
    handler : String
    } derive(Eq, ToJson,
    Debug
    )

    FileAssociation::equal

    FileAssociation::new

    fn FileAssociation::new(extension~ : String, mime_type~ : String, handler~ : String) -> FileAssociation

    FileAssociation::not_equal

    fn FileAssociation::not_equal(x : FileAssociation, y : FileAssociation) -> Bool

    FileAssociation::to_json

    FileDialogOptions

    pub(all) struct FileDialogOptions {
    title : String
    filters : Array[String]
    default_name : String?
    }

    FileDialogOptions::new

    fn FileDialogOptions::new(title? : String, filters? : Array[String], default_name? : String?) -> FileDialogOptions

    FileServices

    pub struct FileServices {
    open_file_fn : (FileDialogOptions) -> ServiceTask[String]
    save_file_fn : (FileDialogOptions) -> ServiceTask[String]
    pick_directory_fn : (FileDialogOptions) -> ServiceTask[String]
    read_text_fn : (String) -> ServiceTask[String]
    write_text_fn : (String, String) -> ServiceTask[Unit]
    read_bytes_fn : (String) -> ServiceTask[Bytes]
    write_bytes_fn : (String, Bytes) -> ServiceTask[Unit]
    list_directory_fn : (String) -> ServiceTask[Array[DirectoryEntry]]
    delete_file_fn : (String) -> ServiceTask[Unit]
    }

    FileServices::delete_file

    fn FileServices::delete_file(self : FileServices, path : String) -> ServiceTask[Unit]

    删除文件(资源管理器 M0-6b;web 端能力掩码不含,显式不可用)。

    FileServices::list_directory

    fn FileServices::list_directory(self : FileServices, path : String) -> ServiceTask[Array[DirectoryEntry]]

    FileServices::new

    fn FileServices::new(open_file? : (FileDialogOptions) -> ServiceTask[String], save_file? : (FileDialogOptions) -> ServiceTask[String], pick_directory? : (FileDialogOptions) -> ServiceTask[String], read_text? : (String) -> ServiceTask[String], write_text? : (String, String) -> ServiceTask[Unit], read_bytes? : (String) -> ServiceTask[Bytes], write_bytes? : (String, Bytes) -> ServiceTask[Unit], list_directory? : (String) -> ServiceTask[Array[DirectoryEntry]], delete_file? : (String) -> ServiceTask[Unit]) -> FileServices

    FileServices::open_file

    fn FileServices::open_file(self : FileServices, options? : FileDialogOptions) -> ServiceTask[String]

    FileServices::pick_directory

    fn FileServices::pick_directory(self : FileServices, options? : FileDialogOptions) -> ServiceTask[String]

    FileServices::read_bytes

    fn FileServices::read_bytes(self : FileServices, path : String) -> ServiceTask[Bytes]

    FileServices::read_text

    fn FileServices::read_text(self : FileServices, path : String) -> ServiceTask[String]

    FileServices::save_file

    fn FileServices::save_file(self : FileServices, options? : FileDialogOptions) -> ServiceTask[String]

    FileServices::unavailable

    fn FileServices::unavailable() -> FileServices

    FileServices::write_bytes

    fn FileServices::write_bytes(self : FileServices, path : String, bytes : Bytes) -> ServiceTask[Unit]

    FileServices::write_text

    fn FileServices::write_text(self : FileServices, path : String, text : String) -> ServiceTask[Unit]

    pub struct MenuServices {
    show_context_fn : (Array[
    ActionCommand
    ]) -> ServiceTask[
    ActionCommand
    ]
    install_application_fn : (Array[ApplicationMenu]) -> ServiceTask[Unit]
    }

    fn MenuServices::install_application(self : MenuServices, menus : Array[ApplicationMenu]) -> ServiceTask[Unit]

    NotificationRequest

    pub(all) struct NotificationRequest {
    id : String
    title : String
    body : String
    } derive(Eq, ToJson,
    Debug
    )

    NotificationRequest::equal

    NotificationRequest::new

    fn NotificationRequest::new(id~ : String, title~ : String, body~ : String) -> NotificationRequest

    NotificationRequest::not_equal

    NotificationRequest::to_json

    NotificationServices

    pub struct NotificationServices {
    notify_fn : (NotificationRequest) -> ServiceTask[Unit]
    cancel_fn : (String) -> ServiceTask[Unit]
    }

    NotificationServices::cancel

    fn NotificationServices::cancel(self : NotificationServices, id : String) -> ServiceTask[Unit]

    NotificationServices::new

    fn NotificationServices::new(notify? : (NotificationRequest) -> ServiceTask[Unit], cancel? : (String) -> ServiceTask[Unit]) -> NotificationServices

    NotificationServices::notify

    PermissionKind

    pub(all) enum PermissionKind {
    Notifications
    Camera
    Microphone
    Location
    Photos
    Files
    } derive(Eq, Hash, ToJson,
    Debug
    )

    Permission categories are intentionally platform-neutral. A host may map them to native prompts, browser permissions, or an unavailable result.

    PermissionKind::equal

    PermissionKind::hash

    fn PermissionKind::hash(self : PermissionKind) -> Int

    PermissionKind::hash_combine

    fn PermissionKind::hash_combine(PermissionKind, Hasher) -> Unit

    PermissionKind::not_equal

    fn PermissionKind::not_equal(x : PermissionKind, y : PermissionKind) -> Bool

    PermissionKind::to_json

    PermissionServices

    pub struct PermissionServices {
    request_fn : (PermissionKind) -> ServiceTask[PermissionStatus]
    }

    PermissionServices::new

    PermissionServices::request

    PermissionStatus

    pub(all) enum PermissionStatus {
    Granted
    Denied
    Restricted
    } derive(Eq, ToJson,
    Debug
    )

    PermissionStatus::equal

    PermissionStatus::not_equal

    fn PermissionStatus::not_equal(x : PermissionStatus, y : PermissionStatus) -> Bool

    PermissionStatus::to_json

    PlatformServices

    pub struct PlatformServices {
    notifications_value : NotificationServices
    tray_value : TrayServices
    permissions_value : PermissionServices
    sharing_value : ShareServices
    printing_value : PrintServices
    associations_value : AssociationServices
    window_state_value : WindowStateServices
    lifecycle_value : AppLifecycleSource?
    window_drag_value : WindowDragRegionSource
    }

    PlatformServices::associations

    PlatformServices::lifecycle

    PlatformServices::new

    fn PlatformServices::new(notifications? : NotificationServices, tray? : TrayServices, permissions? : PermissionServices, sharing? : ShareServices, printing? : PrintServices, associations? : AssociationServices, window_state? : WindowStateServices, lifecycle? : AppLifecycleSource?, window_drag? : WindowDragRegionSource) -> PlatformServices

    PlatformServices::notifications

    PlatformServices::permissions

    PlatformServices::printing

    PlatformServices::sharing

    PlatformServices::tray

    PlatformServices::unavailable

    fn PlatformServices::unavailable() -> PlatformServices

    PlatformServices::window_drag

    Declare a native window-drag band for self-drawn window chrome. Hosts without native dragging ignore declarations.

    PlatformServices::window_state

    PrintRequest

    pub(all) struct PrintRequest {
    title : String
    text : String
    mime_type : String
    } derive(Eq, ToJson,
    Debug
    )

    PrintRequest::equal

    PrintRequest::new

    fn PrintRequest::new(title~ : String, text~ : String, mime_type? : String) -> PrintRequest

    PrintRequest::not_equal

    fn PrintRequest::not_equal(x : PrintRequest, y : PrintRequest) -> Bool

    PrintRequest::to_json

    PrintServices

    pub struct PrintServices {
    print_fn : (PrintRequest) -> ServiceTask[Unit]
    }

    PrintServices::new

    fn PrintServices::new(print? : (PrintRequest) -> ServiceTask[Unit]) -> PrintServices

    PrintServices::print

    fn PrintServices::print(self : PrintServices, request : PrintRequest) -> ServiceTask[Unit]

    ProtocolRegistration

    pub(all) struct ProtocolRegistration {
    scheme : String
    handler : String
    } derive(Eq, ToJson,
    Debug
    )

    ProtocolRegistration::equal

    ProtocolRegistration::new

    fn ProtocolRegistration::new(scheme~ : String, handler~ : String) -> ProtocolRegistration

    ProtocolRegistration::not_equal

    ProtocolRegistration::to_json

    RouteEvent

    pub(all) struct RouteEvent {
    location : RouteLocation
    source : String
    } derive(Eq, ToJson,
    Debug
    )

    RouteEvent::equal

    fn RouteEvent::equal(RouteEvent, RouteEvent) -> Bool

    RouteEvent::from_path

    fn RouteEvent::from_path(path : String, source? : String) -> RouteEvent

    RouteEvent::from_route

    fn RouteEvent::from_route(route~ : String, source? : String) -> RouteEvent

    RouteEvent::new

    fn RouteEvent::new(location~ : RouteLocation, source? : String) -> RouteEvent

    RouteEvent::not_equal

    fn RouteEvent::not_equal(x : RouteEvent, y : RouteEvent) -> Bool

    RouteEvent::route

    fn RouteEvent::route(self : RouteEvent) -> String

    RouteEvent::to_json

    fn RouteEvent::to_json(RouteEvent) -> Json

    RouteLocation

    pub(all) struct RouteLocation {
    path : String
    query : Array[RouteQueryParam]
    } derive(Eq, ToJson,
    Debug
    )

    RouteLocation::equal

    RouteLocation::new

    fn RouteLocation::new(path~ : String, query? : Array[RouteQueryParam]) -> RouteLocation

    RouteLocation::not_equal

    fn RouteLocation::not_equal(x : RouteLocation, y : RouteLocation) -> Bool

    RouteLocation::parse

    fn RouteLocation::parse(value : String) -> RouteLocation

    RouteLocation::query_value

    fn RouteLocation::query_value(self : RouteLocation, key : String) -> String?

    RouteLocation::to_json

    RouteLocation::to_route

    fn RouteLocation::to_route(self : RouteLocation) -> String

    RouteQueryParam

    pub(all) struct RouteQueryParam {
    key : String
    value : String
    } derive(Eq, ToJson,
    Debug
    )

    RouteQueryParam::equal

    RouteQueryParam::new

    fn RouteQueryParam::new(key~ : String, value~ : String) -> RouteQueryParam

    RouteQueryParam::not_equal

    fn RouteQueryParam::not_equal(x : RouteQueryParam, y : RouteQueryParam) -> Bool

    RouteQueryParam::to_json

    RouteSource

    pub struct RouteSource {
    // private fields
    }

    RouteSource::active_handler_count

    fn RouteSource::active_handler_count(self : RouteSource) -> Int

    RouteSource::new

    RouteSource::publish

    fn RouteSource::publish(self : RouteSource, event : RouteEvent) -> Int

    RouteSource::subscription

    fn[Msg] RouteSource::subscription(self : RouteSource, map~ : (RouteEvent) -> Msg?, key? : String, label? : String) ->
    Subscription
    [Msg]

    ServiceError

    pub(all) struct ServiceError {
    code : String
    message : String
    } derive(Eq, ToJson,
    Debug
    )

    ServiceError::equal

    ServiceError::new

    fn ServiceError::new(code~ : String, message~ : String) -> ServiceError

    ServiceError::not_equal

    fn ServiceError::not_equal(x : ServiceError, y : ServiceError) -> Bool

    ServiceError::to_json

    ServiceError::unavailable

    fn ServiceError::unavailable(message : String) -> ServiceError

    ServiceTask

    pub struct ServiceTask[T] {
    key : String
    label : String
    start_fn : ((ServiceTaskResult[T]) -> Unit) -> () -> Unit?
    }

    ServiceTask::cancelled

    fn[T] ServiceTask::cancelled(key~ : String, label? : String) -> ServiceTask[T]

    ServiceTask::effect

    fn[T, Msg] ServiceTask::effect(self : ServiceTask[T], map~ : (ServiceTaskResult[T]) -> Msg) ->
    Effect
    [Msg]

    ServiceTask::fail

    fn[T] ServiceTask::fail(key~ : String, error~ : ServiceError, label? : String) -> ServiceTask[T]

    ServiceTask::key

    fn[T] ServiceTask::key(self : ServiceTask[T]) -> String

    ServiceTask::label

    fn[T] ServiceTask::label(self : ServiceTask[T]) -> String

    ServiceTask::map

    fn[T, U] ServiceTask::map(self : ServiceTask[T], map : (T) -> U) -> ServiceTask[U]

    ServiceTask::new

    fn[T] ServiceTask::new(key~ : String, start~ : ((ServiceTaskResult[T]) -> Unit) -> () -> Unit?, label? : String) -> ServiceTask[T]

    ServiceTask::start

    fn[T] ServiceTask::start(self : ServiceTask[T], complete : (ServiceTaskResult[T]) -> Unit) -> () -> Unit?

    ServiceTask::succeed

    fn[T] ServiceTask::succeed(key~ : String, value~ : T, label? : String) -> ServiceTask[T]

    ServiceTaskResult

    pub(all) enum ServiceTaskResult[T] {
    Success(T)
    Failure(ServiceError)
    Cancelled
    } derive(Eq,
    Debug
    )

    ServiceTaskResult::equal

    ServiceTaskResult::not_equal

    fn[T : Eq] ServiceTaskResult::not_equal(x : ServiceTaskResult[T], y : ServiceTaskResult[T]) -> Bool

    SettingsServices

    pub struct SettingsServices {
    read_fn : (String) -> ServiceTask[String?]
    write_fn : (String, String) -> ServiceTask[Unit]
    remove_fn : (String) -> ServiceTask[Unit]
    }

    SettingsServices::new

    fn SettingsServices::new(read? : (String) -> ServiceTask[String?], write? : (String, String) -> ServiceTask[Unit], remove? : (String) -> ServiceTask[Unit]) -> SettingsServices

    SettingsServices::read

    fn SettingsServices::read(self : SettingsServices, key : String) -> ServiceTask[String?]

    SettingsServices::remove

    fn SettingsServices::remove(self : SettingsServices, key : String) -> ServiceTask[Unit]

    SettingsServices::write

    fn SettingsServices::write(self : SettingsServices, key : String, value : String) -> ServiceTask[Unit]

    ShareRequest

    pub(all) struct ShareRequest {
    title : String
    text : String
    url : String?
    } derive(Eq, ToJson,
    Debug
    )

    ShareRequest::equal

    ShareRequest::new

    fn ShareRequest::new(title~ : String, text~ : String, url? : String?) -> ShareRequest

    ShareRequest::not_equal

    fn ShareRequest::not_equal(x : ShareRequest, y : ShareRequest) -> Bool

    ShareRequest::to_json

    ShareServices

    pub struct ShareServices {
    share_fn : (ShareRequest) -> ServiceTask[Unit]
    }

    ShareServices::new

    fn ShareServices::new(share? : (ShareRequest) -> ServiceTask[Unit]) -> ShareServices

    ShareServices::share

    fn ShareServices::share(self : ShareServices, request : ShareRequest) -> ServiceTask[Unit]

    TimerSource

    pub struct TimerSource {
    start_fn : (Double, (
    Frame
    ) -> Unit) -> () -> Unit?
    }

    TimerSource::from_native_timer

    fn TimerSource::from_native_timer(start~ : (FuncRef[(() -> Unit) -> Unit], Double, () -> Unit) -> UInt64, cancel~ : (UInt64) -> Unit, clock? : () -> Double?) -> TimerSource

    Adapt a native timer callback into an app-facing timer source. Platform backends own the native start/cancel functions; services owns only the neutral frame and cancellation semantics.

    TimerSource::new

    fn TimerSource::new(start~ : (Double, (
    Frame
    ) -> Unit) -> () -> Unit?) -> TimerSource

    TimerSource::subscription

    fn[Msg] TimerSource::subscription(self : TimerSource, interval_ms~ : Double, map~ : (
    Frame
    ) -> Msg, key? : String, label? : String) ->
    Subscription
    [Msg]

    TrayItem

    pub(all) struct TrayItem {
    id : String
    label : String
    tooltip : String
    } derive(Eq, ToJson,
    Debug
    )

    TrayItem::equal

    fn TrayItem::equal(TrayItem, TrayItem) -> Bool

    TrayItem::new

    fn TrayItem::new(id~ : String, label~ : String, tooltip? : String) -> TrayItem

    TrayItem::not_equal

    fn TrayItem::not_equal(x : TrayItem, y : TrayItem) -> Bool

    TrayItem::to_json

    fn TrayItem::to_json(TrayItem) -> Json

    TrayItem::to_repr

    TrayServices

    pub struct TrayServices {
    set_fn : (TrayItem) -> ServiceTask[Unit]
    remove_fn : (String) -> ServiceTask[Unit]
    }

    TrayServices::new

    fn TrayServices::new(set? : (TrayItem) -> ServiceTask[Unit], remove? : (String) -> ServiceTask[Unit]) -> TrayServices

    TrayServices::remove

    fn TrayServices::remove(self : TrayServices, id : String) -> ServiceTask[Unit]

    TrayServices::set

    fn TrayServices::set(self : TrayServices, item : TrayItem) -> ServiceTask[Unit]

    UrlServices

    pub struct UrlServices {
    open_fn : (String) -> ServiceTask[Unit]
    }

    UrlServices::new

    fn UrlServices::new(open? : (String) -> ServiceTask[Unit]) -> UrlServices

    UrlServices::open

    fn UrlServices::open(self : UrlServices, url : String) -> ServiceTask[Unit]

    WindowDragRegionSource

    pub struct WindowDragRegionSource {
    // private fields
    }

    Declarative drag region for a window's own chrome.

    Borderless or immersive apps that draw their own title bar need a rectangular band that moves the window when the user presses and drags inside it. The app declares that band here; the platform backend decodes the raw pointer events and performs the native window drag, so no app touches AppKit, Win32, or Wayland directly (see docs/invariants.md P10).

    The value is state, not a command: the app may re-publish the same rectangle on every layout pass. set_region only records the latest value and advances revision when the geometry actually changes, so a host that watches the revision performs at most one native call per real change.

    WindowDragRegionSource::new

    A source that accepts declarations but has no host attached. Hosts that do not support window dragging leave this in place, so app code stays unconditional.

    WindowDragRegionSource::region

    The most recently declared band, or None when dragging is disabled.

    WindowDragRegionSource::revision

    Monotonic counter that advances only when the declared band changes. Hosts poll this to skip redundant native work.

    WindowDragRegionSource::set_region

    Declare the drag band in logical window coordinates with a top-left origin, matching MoUI's coordinate policy. Pass None to clear it.

    Re-declaring an equal rectangle is a no-op: it neither advances revision nor allocates, so per-frame republishing is free.

    WindowDragRegionSource::unavailable

    Explicit spelling of new() for hosts and tests that want to signal "this platform has no drag-region support".

    WindowStateServices

    pub struct WindowStateServices {
    read_fn : (String) -> ServiceTask[String?]
    write_fn : (String, String) -> ServiceTask[Unit]
    remove_fn : (String) -> ServiceTask[Unit]
    }

    WindowStateServices::new

    fn WindowStateServices::new(read? : (String) -> ServiceTask[String?], write? : (String, String) -> ServiceTask[Unit], remove? : (String) -> ServiceTask[Unit]) -> WindowStateServices

    WindowStateServices::read

    fn WindowStateServices::read(self : WindowStateServices, window_id : String) -> ServiceTask[String?]

    WindowStateServices::remove

    fn WindowStateServices::remove(self : WindowStateServices, window_id : String) -> ServiceTask[Unit]

    WindowStateServices::write

    fn WindowStateServices::write(self : WindowStateServices, window_id : String, snapshot : String) -> ServiceTask[Unit]

    apply_window_drag_region

    fn apply_window_drag_region(source : WindowDragRegionSource, applied : Int?, set_region : (
    Rect
    ?) -> Bool) -> Int?

    Apply the declared band to a host once, skipping unchanged revisions.

    source is the app-facing declaration, applied is the revision the host last pushed (None when it has pushed nothing), and set_region performs the native call and reports whether it landed — return false when there is no window yet, so an early declaration is retried on a later tick instead of being recorded as done.

    Returns the revision to store back as applied. Hosts must call this on their own loop tick rather than at declaration time, because the window may not exist when the app first publishes.