12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- use dioxus_interpreter_js::binary_protocol::SLEDGEHAMMER_JS;
- use minify_js::*;
- use std::io::Write;
- fn main() {
- let serialize_file_uploads = r#"if (
- target.tagName === "INPUT" &&
- (event.type === "change" || event.type === "input")
- ) {
- const type = target.getAttribute("type");
- if (type === "file") {
- async function read_files() {
- const files = target.files;
- const file_contents = {};
-
- for (let i = 0; i < files.length; i++) {
- const file = files[i];
-
- file_contents[file.name] = Array.from(
- new Uint8Array(await file.arrayBuffer())
- );
- }
- let file_engine = {
- files: file_contents,
- };
- contents.files = file_engine;
-
- if (realId === null) {
- return;
- }
- const message = window.interpreter.serializeIpcMessage("user_event", {
- name: name,
- element: parseInt(realId),
- data: contents,
- bubbles,
- });
- window.ipc.postMessage(message);
- }
- read_files();
- return;
- }
- }"#;
- let mut interpreter = SLEDGEHAMMER_JS
- .replace("/*POST_EVENT_SERIALIZATION*/", serialize_file_uploads)
- .replace("export", "");
- while let Some(import_start) = interpreter.find("import") {
- let import_end = interpreter[import_start..]
- .find(|c| c == ';' || c == '\n')
- .map(|i| i + import_start)
- .unwrap_or_else(|| interpreter.len());
- interpreter.replace_range(import_start..import_end, "");
- }
- let main_js = std::fs::read_to_string("src/main.js").unwrap();
- let js = format!("{interpreter}\n{main_js}");
- let session = Session::new();
- let mut out = Vec::new();
- minify(&session, TopLevelMode::Module, js.as_bytes(), &mut out).unwrap();
- let minified = String::from_utf8(out).unwrap();
- let mut file = std::fs::File::create("src/minified.js").unwrap();
- file.write_all(minified.as_bytes()).unwrap();
- }
|