script_bridge.rs, index.js

This commit is contained in:
Martin Kavík 2024-06-15 23:15:28 +02:00
parent a58ea4fba5
commit a299ae1082
5 changed files with 33 additions and 1 deletions

View file

@ -1,7 +1,9 @@
port = 8080
# port = 8443
https = false
cache_busting = true
# @TODO how to import `pkg/frontend.js` with enabled cache busting?
# @TODO add a switch to enable Typescript generator in mzoon?
cache_busting = false
backend_log_level = "warn" # "error" / "warn" / "info" / "debug" / "trace"
[redirect]
@ -23,4 +25,6 @@ frontend = [
backend = [
"backend/Cargo.toml",
"backend/src",
"backend/index.js",
"backend/style.css",
]

2
backend/index.js Normal file
View file

@ -0,0 +1,2 @@
import { FW } from '/_api/pkg/frontend.js';
window.FW = FW;

View file

@ -5,6 +5,10 @@ async fn frontend() -> Frontend {
"<style>",
include_str!("../style.css"),
"</style>"
)).append_to_head(concat!(
"<script type=\"module\">",
include_str!("../index.js"),
"</script>"
))
}

View file

@ -2,6 +2,7 @@ use std::rc::Rc;
use zoon::*;
mod platform;
mod script_bridge;
mod controls_panel;
use controls_panel::ControlsPanel;

View file

@ -0,0 +1,21 @@
use zoon::{*, println};
#[wasm_bindgen(inline_js = r#"export function strict_eval(code) { return eval?.(`"use strict"; ${code};`) }"#)]
extern "C" {
#[wasm_bindgen(catch)]
pub fn strict_eval(code: &str) -> Result<JsValue, JsValue>;
}
#[wasm_bindgen]
pub struct FW;
#[wasm_bindgen]
impl FW {
pub fn do_something() {
println!("Command result: {:#?}", strict_eval("FW.do_something_else();"));
}
pub fn do_something_else() {
println!("ELSE!");
}
}