moxie 0.7.1

Incremental runtime for interactive software.
Documentation
<!doctype html>
<html>

<head>
    <title>moxie, rust UI tools</title>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=1" name="viewport" />
    <link rel="stylesheet" href="https://unpkg.com/normalize.css@8.0.1/normalize.css">
    <link rel="stylesheet" href="https://unpkg.com/purecss@1.0.1/build/pure-min.css"
        integrity="sha384-oAOxQR6DkCoMliIh8yFnu25d7Eq/PHS21PClpwjOTeU2jRSq11vu66rf90/cZr47" crossorigin="anonymous">
    <link rel="stylesheet" href="index.css">
</head>

<body>
    <div class="content">
        <header class="header">
            <img src="assets/logo.png" alt="moxie logo" height="150" />
            <h1>moxie</h1>
            <p>
                <a href="#repo">repo</a> |
                <a href="#xplat">xplat</a> |
                <a href="#web">web</a> |
                <a href="#related">related</a> |
                <a href="#chat">chat</a>
            </p>
            <p>
                a lightweight platform-agnostic interactive runtime, written in rust, aiming to
                empower anyone to build efficient and robust interactive software for humans.
            </p>
        </header>

        <h2 align="end" id="repo">
            project
        </h2>
        <div align="end">
            <img src="https://img.shields.io/crates/l/moxie?color=steelblue" alt="license badge" />
            <a href="https://codecov.io/gh/anp/moxie">
                <img src="https://codecov.io/gh/anp/moxie/branch/main/graph/badge.svg" />
            </a>
        </div>

        <p>
            the <a href="https://github.com/anp/moxie">repo</a> and <a href="#chat">chat</a>
            are covered by an actively enforced
            <a href="https://github.com/anp/moxie/blob/main/CODE_OF_CONDUCT.md">code of conduct.</a>
        </p>

        <hr />
        <h2 align="right" id="xplat">platform-agnostic crates</h2>
        <h3>
            moxie
            <a href="target/doc/moxie/index.html">
                <img src="https://img.shields.io/badge/docs-main-steelblue" alt="moxie main branch docs badge"
                    align="right" />
            </a>
            <a href="https://docs.rs/moxie">
                <img src="https://docs.rs/moxie/badge.svg" alt="moxie docs badge" align="right" />
            </a>
            <a href="https://crates.io/crates/moxie">
                <img src="https://img.shields.io/crates/v/moxie?color=steelblue" alt="moxie version badge"
                    align="right" />
            </a>
        </h3>
        <p>
            offers incremental caching & memoization in interactive event loops without bringing
            platform dependencies.
        </p>
        <p>
            the cache also holds mutable state variables whose updates wake the runtime to update
            the presented interface, allowing an interface's code to run only when meaningful
            updates are observed.
        </p>
        <p>
            state variables handle events & callbacks and as such are also a natural
            interface between loading arbitrary futures and user-defined presentation
            logic. moxie integrates with any async runtime that can spawn local tasks.
        </p>

        <h3>
            mox
            <a href="target/doc/mox/index.html">
                <img src="https://img.shields.io/badge/docs-main-steelblue" alt="mox main branch docs badge"
                    align="right" />
            </a>
            <a href="https://docs.rs/mox">
                <img src="https://docs.rs/mox/badge.svg" alt="mox docs badge" align="right" />
            </a>
            <a href="https://crates.io/crates/mox">
                <img src="https://img.shields.io/crates/v/mox?color=steelblue" alt="mox version badge" align="right" />
            </a>
        </h3>
        <p>
            a Mockery Of XML: nested builder pattern instantiation using XML-lite syntax.
        </p>

        <h3>
            topo
            <a href="target/doc/topo/index.html">
                <img src="https://img.shields.io/badge/docs-main-steelblue" alt="topo main branch docs badge"
                    align="right" />
            </a>
            <a href="https://docs.rs/topo">
                <img src="https://docs.rs/topo/badge.svg" alt="topo docs badge" align="right" />
            </a>
            <a href="https://crates.io/crates/topo">
                <img src="https://img.shields.io/crates/v/topo?color=steelblue" alt="topo version badge"
                    align="right" />
            </a>
        </h3>
        <p>
            create trees of stable identifiers for repeated nested function invocations. allows
            later calls to "rendezvous" with the results of previous calls at the same location in
            the tree.
        </p>

        <h3>
            dyn-cache
            <a href="target/doc/dyn_cache/index.html">
                <img src="https://img.shields.io/badge/docs-main-steelblue" alt="dyn-cache main branch docs badge"
                    align="right" />
            </a>
            <a href="https://docs.rs/dyn-cache">
                <img src="https://docs.rs/dyn-cache/badge.svg" alt="dyn-cache docs badge" align="right" />
            </a>
            <a href="https://crates.io/crates/dyn-cache">
                <img src="https://img.shields.io/crates/v/dyn-cache?color=steelblue" alt="dyn-cache version badge"
                    align="right" />
            </a>
        </h3>
        <p>
            caches for storing arbitrary values and memoizing arbitrary Rust functions.
        </p>

        <h3>
            illicit
            <a href="target/doc/illicit/index.html">
                <img src="https://img.shields.io/badge/docs-main-steelblue" alt="illicit main branch docs badge"
                    align="right" />
            </a>
            <a href="https://docs.rs/illicit">
                <img src="https://docs.rs/illicit/badge.svg" alt="illicit docs badge" align="right" />
            </a>
            <a href="https://crates.io/crates/illicit">
                <img src="https://img.shields.io/crates/v/illicit?color=steelblue" alt="illicit version badge"
                    align="right" />
            </a>
        </h3>
        <p>thread-local implicit nested context singletons, indexed by type</p>


        <h2 align="end" id="web">web crates</h2>

        <h3>
            moxie-dom
            <a href="target/doc/moxie_dom/index.html">
                <img src="https://img.shields.io/badge/docs-main-steelblue" alt="moxie-dom main branch docs badge"
                    align="right" />
            </a>
            <a href="https://docs.rs/moxie-dom">
                <img src="https://docs.rs/moxie-dom/badge.svg" alt="moxie-dom docs badge" align="right" />
            </a>
            <a href="https://crates.io/crates/moxie-dom">
                <img src="https://img.shields.io/crates/v/moxie-dom?color=steelblue" alt="moxie-dom version badge"
                    align="right" />
            </a>
        </h3>
        <p>
            a strongly-typed, WebAssembly-compatible library for incrementally describing the web's
            DOM using moxie. supports server-side rendering using augdom's HTML DOM emulation.
        </p>

        <h4>(toy) examples</h4>
        <ul>
            <li>
                <a href="dom/examples/counter_fn/index.html">Counter (bare function)</a>
                (<a href="https://github.com/anp/moxie/tree/main/dom/examples/counter_fn">source</a>)
            </li>
            <li>
                <a href="dom/examples/dom_builder/index.html">Counter (no-XML DOM builder API)</a>
                (<a href="https://github.com/anp/moxie/tree/main/dom/examples/dom_builder">source</a>)
            </li>
            <li>
                <a href="dom/examples/hacking/index.html">DOM hacking</a>
                (<a href="https://github.com/anp/moxie/tree/main/dom/examples/hacking">source</a>)
            </li>
            <li>
                <a href="dom/examples/todo/index.html">TodoMVC</a>
                (<a href="https://github.com/anp/moxie/tree/main/dom/examples/todo">source</a>)
            </li>
            <li>
                <a href="https://github.com/anp/moxie/blob/main/dom/examples/ssr">
                    server-side rendering
                </a>
            </li>
        </ul>

        <h3>
            augdom
            <a href="target/doc/augdom/index.html">
                <img src="https://img.shields.io/badge/docs-main-steelblue" alt="augdom main branch docs badge"
                    align="right" />
            </a>
            <a href="https://docs.rs/augdom">
                <img src="https://docs.rs/augdom/badge.svg" alt="augdom docs badge" align="right" />
            </a>
            <a href="https://crates.io/crates/augdom">
                <img src="https://img.shields.io/crates/v/augdom?color=steelblue" alt="augdom version badge"
                    align="right" />
            </a>
        </h3>
        <p>
            provides an "augmented DOM" implementation that can run almost anywhere Rust can.
            compiles as either a thin wrapper around web-sys or a DOM emulation layer written in
            pure Rust which can be used for testing or to render HTML strings.
        </p>

        <h3>
            prettiest
            <a href="target/doc/prettiest/index.html">
                <img src="https://img.shields.io/badge/docs-main-steelblue" alt="prettiest main branch docs badge"
                    align="right" />
            </a>
            <a href="https://docs.rs/prettiest">
                <img src="https://docs.rs/prettiest/badge.svg" alt="prettiest docs badge" align="right" />
            </a>
            <a href="https://crates.io/crates/prettiest">
                <img src="https://img.shields.io/crates/v/prettiest?color=steelblue" alt="prettiest version badge"
                    align="right" />
            </a>
        </h3>
        <p>
            pretty-printer for javascript values from <a target="_blank"
                href="https://docs.rs/wasm-bindgen">wasm-bindgen</a>
        </p>

        <h3>
            raf
            <a href="target/doc/raf/index.html">
                <img src="https://img.shields.io/badge/docs-main-steelblue" alt="raf main branch docs badge"
                    align="right" />
            </a>
            <a href="https://docs.rs/raf">
                <img src="https://docs.rs/raf/badge.svg" alt="raf docs badge" align="right" />
            </a>
            <a href="https://crates.io/crates/raf">
                <img src="https://img.shields.io/crates/v/raf?color=steelblue" alt="raf version badge" align="right" />
            </a>
        </h3>
        <p>
            runs an event loop in the browser using requestAnimationFrame
        </p>

        <hr />
        <h2 align="end" id="related">related projects</h2>

        <h3><a href="https://github.com/tiffany352/moxie-native">moxie-native</a></h3>
        <p>
            from the repo: "Warning: This is a work in progress and not yet usable for nontrivial
            applications."</p>
        <p>
            a "webrender-based UI framework with a moxie frontend" which features a "relatively
            small footprint" and is "targeted towards real world desktop applications."
        </p>

        <hr />
        <h2 align="end" id="chat">chat</h2>

        <iframe align="right" src="https://discordapp.com/widget?id=590930607396093971&theme=dark" width="350"
            height="500" allowtransparency="true" frameborder="0">
        </iframe>
    </div>
</body>

</html>