lingxia-logic 0.6.4

JavaScript runtime for LingXia lightweight application
use ::lxapp::lx::{LxLogicExtension, register_logic_extension};
use rong::{JSContext, JSResult};

mod app;
mod device;
mod display;
mod env;
mod fs;
pub mod i18n;
mod input;
mod location;
mod lxapp;
mod media;
mod message_port;
mod navigator;
mod storage;
mod surface;
mod system;
mod ui;
mod update;

// Auto-generated by `cargo run -p lingxia-gen -- i18n ...`.
mod i18n_generated;
pub use self::i18n_generated::*;

pub struct LxLogicRuntime;

impl LxLogicExtension for LxLogicRuntime {
    fn init(&self, ctx: &JSContext) -> JSResult<()> {
        env::init(ctx)?;
        app::init(ctx)?;
        lxapp::init(ctx)?;
        device::init(ctx)?;
        display::init(ctx)?;
        location::init(ctx)?;
        navigator::init(ctx)?;
        update::init(ctx)?;
        message_port::init(ctx)?;
        surface::init(ctx)?;
        input::init(ctx)?;
        ui::init(ctx)?;
        system::init(ctx)?;
        media::init(ctx)?;
        fs::init(ctx)?;
        storage::init(ctx)?;
        Ok(())
    }
}

pub fn register_logic_runtime() {
    ::lxapp::register_surface_close_observer(notify_surface_closed);
    register_logic_extension(Box::new(LxLogicRuntime));
}

pub fn notify_surface_closed(id: &str, reason: &str) -> bool {
    surface::notify_surface_closed(id, reason)
}