From 6fcc51ee009506fc658196a66cafd3ac436a940d Mon Sep 17 00:00:00 2001 From: Ryan McGrath Date: Fri, 7 Jun 2019 12:56:10 -0700 Subject: [PATCH] Website branch for gh-pages, initial commit. Shame GH doesn't allow pages for trunk. --- 404.html | 10 + Cargo.toml | 12 - README.md | 146 +- alchemy/Cargo.toml | 39 - alchemy/README.md | 16 - alchemy/src/app.rs | 146 -- alchemy/src/components/fragment.rs | 39 - alchemy/src/components/mod.rs | 12 - alchemy/src/components/text.rs | 84 - alchemy/src/components/view.rs | 79 - alchemy/src/lib.rs | 49 - alchemy/src/window/manager.rs | 60 - alchemy/src/window/mod.rs | 7 - alchemy/src/window/window.rs | 170 -- assets/README.md | 8 - assets/alchemy_logo_250x.png | Bin 7066 -> 0 bytes assets/social-preview-gh.png | Bin 123725 -> 0 bytes website/static/banner.png => banner.png | Bin clippy.toml | 6 - cocoa/Cargo.toml | 27 - cocoa/README.md | 5 - cocoa/src/app.rs | 153 -- cocoa/src/color.rs | 29 - cocoa/src/lib.rs | 24 - cocoa/src/text.rs | 140 -- cocoa/src/view.rs | 139 -- cocoa/src/window.rs | 169 -- {website/static/css => css}/layout.css | 0 {website/static/css => css}/reset.css | 0 examples/layout/Cargo.toml | 8 - examples/layout/src/main.rs | 124 -- website/static/favicon.ico => favicon.ico | Bin .../apple-touch-icon-114x114.png | Bin .../apple-touch-icon-120x120.png | Bin .../apple-touch-icon-144x144.png | Bin .../apple-touch-icon-152x152.png | Bin .../apple-touch-icon-57x57.png | Bin .../apple-touch-icon-60x60.png | Bin .../apple-touch-icon-72x72.png | Bin .../apple-touch-icon-76x76.png | Bin .../favicons => favicons}/favicon-128.png | Bin .../favicons => favicons}/favicon-16x16.png | Bin .../favicons => favicons}/favicon-196x196.png | Bin .../favicons => favicons}/favicon-32x32.png | Bin .../favicons => favicons}/favicon-96x96.png | Bin .../favicons => favicons}/mstile-144x144.png | Bin .../favicons => favicons}/mstile-150x150.png | Bin .../favicons => favicons}/mstile-310x150.png | Bin .../favicons => favicons}/mstile-310x310.png | Bin .../favicons => favicons}/mstile-70x70.png | Bin website/static/humans.txt => humans.txt | 0 {website/static/images => images}/banner.png | Bin index.html | 169 ++ lifecycle/Cargo.toml | 19 - lifecycle/README.md | 5 - lifecycle/src/error.rs | 7 - lifecycle/src/lib.rs | 38 - lifecycle/src/reconciler/error.rs | 32 - .../src/reconciler/generic_root_view_stub.rs | 31 - lifecycle/src/reconciler/instance.rs | 15 - lifecycle/src/reconciler/key.rs | 51 - lifecycle/src/reconciler/mod.rs | 382 ----- lifecycle/src/reconciler/storage.rs | 166 -- lifecycle/src/rsx/mod.rs | 84 - lifecycle/src/rsx/props.rs | 79 - lifecycle/src/rsx/virtual_node.rs | 54 - lifecycle/src/rsx/virtual_text.rs | 29 - lifecycle/src/traits.rs | 193 --- macros/Cargo.toml | 30 - macros/README.md | 8 - macros/src/build.rs | 11 - macros/src/error.rs | 116 -- macros/src/grammar.lalrpop | 303 ---- macros/src/ident.rs | 20 - macros/src/lexer.rs | 142 -- macros/src/lib.rs | 107 -- macros/src/map.rs | 54 - macros/src/parser.rs | 6 - macros/src/rsx.rs | 240 --- macros/src/span.rs | 13 - robots.txt | 2 + rust-toolchain | 1 - sitemap.xml | 8 + src/build | 8 + {website => src}/config.toml | 2 +- {website => src}/content/_index.md | 0 src/static/banner.png | Bin 0 -> 152792 bytes src/static/css/layout.css | 20 + src/static/css/reset.css | 12 + src/static/favicon.ico | Bin 0 -> 34494 bytes .../favicons/apple-touch-icon-114x114.png | Bin 0 -> 11427 bytes .../favicons/apple-touch-icon-120x120.png | Bin 0 -> 10504 bytes .../favicons/apple-touch-icon-144x144.png | Bin 0 -> 17544 bytes .../favicons/apple-touch-icon-152x152.png | Bin 0 -> 19403 bytes .../favicons/apple-touch-icon-57x57.png | Bin 0 -> 3692 bytes .../favicons/apple-touch-icon-60x60.png | Bin 0 -> 3661 bytes .../favicons/apple-touch-icon-72x72.png | Bin 0 -> 5213 bytes .../favicons/apple-touch-icon-76x76.png | Bin 0 -> 5881 bytes src/static/favicons/favicon-128.png | Bin 0 -> 10482 bytes src/static/favicons/favicon-16x16.png | Bin 0 -> 629 bytes src/static/favicons/favicon-196x196.png | Bin 0 -> 30443 bytes src/static/favicons/favicon-32x32.png | Bin 0 -> 1418 bytes src/static/favicons/favicon-96x96.png | Bin 0 -> 7958 bytes src/static/favicons/mstile-144x144.png | Bin 0 -> 17544 bytes src/static/favicons/mstile-150x150.png | Bin 0 -> 46972 bytes src/static/favicons/mstile-310x150.png | Bin 0 -> 97807 bytes src/static/favicons/mstile-310x310.png | Bin 0 -> 197930 bytes src/static/favicons/mstile-70x70.png | Bin 0 -> 10482 bytes src/static/humans.txt | 4 + src/static/images/banner.png | Bin 0 -> 37878 bytes {website => src}/templates/index.html | 0 {website => src}/templates/layout.html | 0 styles/Cargo.toml | 25 - styles/README.md | 5 - styles/src/color.rs | 667 -------- styles/src/engine.rs | 131 -- styles/src/lib.rs | 42 - styles/src/spacedlist.rs | 262 ---- styles/src/spacedset.rs | 308 ---- styles/src/stretch/algo.rs | 1364 ----------------- styles/src/stretch/geometry.rs | 139 -- styles/src/stretch/id.rs | 35 - styles/src/stretch/mod.rs | 37 - styles/src/stretch/node.rs | 242 --- styles/src/stretch/number.rs | 223 --- styles/src/stretch/result.rs | 28 - styles/src/stretch/style.rs | 335 ---- styles/src/style_keys.rs | 83 - styles/src/styles.rs | 415 ----- styles/src/styles_parser.rs | 304 ---- styles/src/stylesheet.rs | 309 ---- website/README.md | 14 - 132 files changed, 249 insertions(+), 8881 deletions(-) create mode 100644 404.html delete mode 100644 Cargo.toml delete mode 100644 alchemy/Cargo.toml delete mode 100644 alchemy/README.md delete mode 100644 alchemy/src/app.rs delete mode 100644 alchemy/src/components/fragment.rs delete mode 100644 alchemy/src/components/mod.rs delete mode 100644 alchemy/src/components/text.rs delete mode 100644 alchemy/src/components/view.rs delete mode 100644 alchemy/src/lib.rs delete mode 100644 alchemy/src/window/manager.rs delete mode 100644 alchemy/src/window/mod.rs delete mode 100644 alchemy/src/window/window.rs delete mode 100644 assets/README.md delete mode 100644 assets/alchemy_logo_250x.png delete mode 100644 assets/social-preview-gh.png rename website/static/banner.png => banner.png (100%) delete mode 100644 clippy.toml delete mode 100644 cocoa/Cargo.toml delete mode 100644 cocoa/README.md delete mode 100644 cocoa/src/app.rs delete mode 100644 cocoa/src/color.rs delete mode 100644 cocoa/src/lib.rs delete mode 100644 cocoa/src/text.rs delete mode 100644 cocoa/src/view.rs delete mode 100644 cocoa/src/window.rs rename {website/static/css => css}/layout.css (100%) rename {website/static/css => css}/reset.css (100%) delete mode 100644 examples/layout/Cargo.toml delete mode 100644 examples/layout/src/main.rs rename website/static/favicon.ico => favicon.ico (100%) rename {website/static/favicons => favicons}/apple-touch-icon-114x114.png (100%) rename {website/static/favicons => favicons}/apple-touch-icon-120x120.png (100%) rename {website/static/favicons => favicons}/apple-touch-icon-144x144.png (100%) rename {website/static/favicons => favicons}/apple-touch-icon-152x152.png (100%) rename {website/static/favicons => favicons}/apple-touch-icon-57x57.png (100%) rename {website/static/favicons => favicons}/apple-touch-icon-60x60.png (100%) rename {website/static/favicons => favicons}/apple-touch-icon-72x72.png (100%) rename {website/static/favicons => favicons}/apple-touch-icon-76x76.png (100%) rename {website/static/favicons => favicons}/favicon-128.png (100%) rename {website/static/favicons => favicons}/favicon-16x16.png (100%) rename {website/static/favicons => favicons}/favicon-196x196.png (100%) rename {website/static/favicons => favicons}/favicon-32x32.png (100%) rename {website/static/favicons => favicons}/favicon-96x96.png (100%) rename {website/static/favicons => favicons}/mstile-144x144.png (100%) rename {website/static/favicons => favicons}/mstile-150x150.png (100%) rename {website/static/favicons => favicons}/mstile-310x150.png (100%) rename {website/static/favicons => favicons}/mstile-310x310.png (100%) rename {website/static/favicons => favicons}/mstile-70x70.png (100%) rename website/static/humans.txt => humans.txt (100%) rename {website/static/images => images}/banner.png (100%) create mode 100644 index.html delete mode 100644 lifecycle/Cargo.toml delete mode 100644 lifecycle/README.md delete mode 100644 lifecycle/src/error.rs delete mode 100644 lifecycle/src/lib.rs delete mode 100644 lifecycle/src/reconciler/error.rs delete mode 100644 lifecycle/src/reconciler/generic_root_view_stub.rs delete mode 100644 lifecycle/src/reconciler/instance.rs delete mode 100644 lifecycle/src/reconciler/key.rs delete mode 100644 lifecycle/src/reconciler/mod.rs delete mode 100644 lifecycle/src/reconciler/storage.rs delete mode 100644 lifecycle/src/rsx/mod.rs delete mode 100644 lifecycle/src/rsx/props.rs delete mode 100644 lifecycle/src/rsx/virtual_node.rs delete mode 100644 lifecycle/src/rsx/virtual_text.rs delete mode 100644 lifecycle/src/traits.rs delete mode 100644 macros/Cargo.toml delete mode 100644 macros/README.md delete mode 100644 macros/src/build.rs delete mode 100644 macros/src/error.rs delete mode 100644 macros/src/grammar.lalrpop delete mode 100644 macros/src/ident.rs delete mode 100644 macros/src/lexer.rs delete mode 100644 macros/src/lib.rs delete mode 100644 macros/src/map.rs delete mode 100644 macros/src/parser.rs delete mode 100644 macros/src/rsx.rs delete mode 100644 macros/src/span.rs create mode 100644 robots.txt delete mode 100644 rust-toolchain create mode 100644 sitemap.xml create mode 100755 src/build rename {website => src}/config.toml (94%) rename {website => src}/content/_index.md (100%) create mode 100644 src/static/banner.png create mode 100644 src/static/css/layout.css create mode 100644 src/static/css/reset.css create mode 100644 src/static/favicon.ico create mode 100644 src/static/favicons/apple-touch-icon-114x114.png create mode 100644 src/static/favicons/apple-touch-icon-120x120.png create mode 100644 src/static/favicons/apple-touch-icon-144x144.png create mode 100644 src/static/favicons/apple-touch-icon-152x152.png create mode 100644 src/static/favicons/apple-touch-icon-57x57.png create mode 100644 src/static/favicons/apple-touch-icon-60x60.png create mode 100644 src/static/favicons/apple-touch-icon-72x72.png create mode 100644 src/static/favicons/apple-touch-icon-76x76.png create mode 100644 src/static/favicons/favicon-128.png create mode 100644 src/static/favicons/favicon-16x16.png create mode 100644 src/static/favicons/favicon-196x196.png create mode 100644 src/static/favicons/favicon-32x32.png create mode 100644 src/static/favicons/favicon-96x96.png create mode 100644 src/static/favicons/mstile-144x144.png create mode 100644 src/static/favicons/mstile-150x150.png create mode 100644 src/static/favicons/mstile-310x150.png create mode 100644 src/static/favicons/mstile-310x310.png create mode 100644 src/static/favicons/mstile-70x70.png create mode 100755 src/static/humans.txt create mode 100644 src/static/images/banner.png rename {website => src}/templates/index.html (100%) rename {website => src}/templates/layout.html (100%) delete mode 100644 styles/Cargo.toml delete mode 100644 styles/README.md delete mode 100644 styles/src/color.rs delete mode 100644 styles/src/engine.rs delete mode 100644 styles/src/lib.rs delete mode 100644 styles/src/spacedlist.rs delete mode 100644 styles/src/spacedset.rs delete mode 100644 styles/src/stretch/algo.rs delete mode 100644 styles/src/stretch/geometry.rs delete mode 100644 styles/src/stretch/id.rs delete mode 100644 styles/src/stretch/mod.rs delete mode 100644 styles/src/stretch/node.rs delete mode 100644 styles/src/stretch/number.rs delete mode 100644 styles/src/stretch/result.rs delete mode 100644 styles/src/stretch/style.rs delete mode 100644 styles/src/style_keys.rs delete mode 100644 styles/src/styles.rs delete mode 100644 styles/src/styles_parser.rs delete mode 100644 styles/src/stylesheet.rs delete mode 100644 website/README.md diff --git a/404.html b/404.html new file mode 100644 index 0000000..f7d50b1 --- /dev/null +++ b/404.html @@ -0,0 +1,10 @@ + + + + File Not Found: 404. + + +

Oops!

+

File Not Found: 404.

+ + diff --git a/Cargo.toml b/Cargo.toml deleted file mode 100644 index 665d640..0000000 --- a/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[workspace] -members = [ - "styles", - "macros", - "lifecycle", - "alchemy", - "examples/layout" -] - -[profile.release] -lto = true -panic = "abort" diff --git a/README.md b/README.md index dbe75fd..e76ac28 100644 --- a/README.md +++ b/README.md @@ -1,140 +1,24 @@ -Potion +# Alchemy Website +The source for `alchemy.rs`, which is hosted on GitHub Pages. -Alchemy - A Rust GUI Framework -========================================================== +## To Edit... +This website is a static site, backed by [Zola](https://www.getzola.org/documentation/getting-started/installation/). You'll need to install it to develop it locally. Otherwise... have at it. -[![Crates.io](https://img.shields.io/crates/v/alchemy.svg)](https://crates.io/crates/alchemy) +If you make substantial changes, make sure the build command outputs to the proper directory: -[Homepage](https://alchemy.rs) • [API Documentation](https://docs.rs/alchemy/) +To build: -Alchemy is an _experimental_ Rust GUI Framework, backed by native widgets on each platform it supports, with an API that's a blend of those found in AppKit, UIKit, and React Native. It aims to provide an API that feels at home in Rust, while striving to provide a visual appearance that's easy to scan and parse. It does not, and will never, require nightly. It's still early stages, but feedback and contributions are welcome. - -## Supported Platforms -Alchemy will, ideally, support the platforms listed below. At the moment, the `Cocoa` backend is the most complete, as I develop on a Mac and know the framework more than I'd care to admit. This list will be updated as more frameworks are added. - -- `cocoa`, which provides backing widgets, windows and assorted frameworks for `macOS`. -- `cocoa-touch`, which provides backing widgets, windows and assorted frameworks for `iOS`. -- `gtk`, which affords a `GTK` layer. This is mostly intended for GNOME users; if you'd like to run it elsewhere, you're on your own. -- `uwp`, which affords a `"UWP"` layer for Microsoft platforms that support it. This will be a bit of a hack, provided by linking into the [microsoft/WinObjC](https://github.com/Microsoft/WinObjC/) framework, originally intended for porting `iOS` applications to `UWP`. Down the road, if or when a proper `UWP` library for Rust surfaces, I'd be happy to look at replacing this. - -Support for more platforms is desired - for example, I think an [`OrbTk`](https://gitlab.redox-os.org/redox-os/orbtk) or [`Piston`](https://www.piston.rs) backend could be cool to see. A `web` backend would be awesome to support. A [`winapi-rs`](https://github.com/retep998/winapi-rs) backend could be cool, too! - -## What Currently Works...? -At the moment, the following is implemented: - -- A basic `cocoa` API, which implements the `Application` and `Window` lifecycles. ``, ``, and `` are supported as well. -- A basic `reconciliation` module, which handles computing changes to the widget tree and applying them as necessary. It currently follows a design similar to React pre-16; I'm open to changing this if someone wants to collaborate. -- A CSS parser, based on the work done over in [servo/servo](https://github.com/servo/servo). It doesn't support cascading, and follows an API closer to that of React Native's. This is intentional. -- An RSX system, based on work done in [bodil/typed-html](https://github.com/bodil/typed-html) by Bodil Stokke. This was actually the project that made me circle back to the entire thing, too. -- Macros for easy UI construction - `rsx! {}`, which transforms JSX-ish syntax into element trees for the reconciler to work with, and `styles! {}`, which pre-process CSS into their styles. -- A CSS layout system, based off the work done over in [vislyhq/stretch](https://github.com/vislyhq/stretch). At the moment, this project includes a fork with a newer underlying API by [msiglreith](https://github.com/msiglreith/stretch/tree/index). Once the API is merged upstream, it's likely the dependency would change to `stretch` proper. - -You can clone this repo and `cargo run` from the root to see the example app. - -## What's it look like? -``` rust -use alchemy::{AppDelegate, Error, RSX, rsx, styles, View, Window, WindowDelegate}; - -struct AppState { - window: Window -} - -impl AppDelegate for AppState { - fn did_finish_launching(&mut self) { - self.window.set_title("Test"); - self.window.set_dimensions(10., 10., 600., 600.); - self.window.show(); - } -} - -struct WindowState; - -impl WindowDelegate for WindowState { - fn render(&self) -> Result { - Ok(rsx! { - - - - }) - } -} - -fn main() { - let app = alchemy::shared_app(); - - app.register_styles("default", styles! { - box { - background-color: #307ace; - width: 300; - height: 300; - margin-top: 10; - padding-top: 10; - } - - innerbox { - background-color: #003366; - width: 200; - height: 200; - } - }); - - app.run(AppState { - window: Window::new(WindowState { - - }) - }); -} +``` +cd src +./build ``` -## Does it support custom Components? -Yes. Alchemy implements the React component lifecycle - although it does not (currently) implement Hooks, and may or may not implement them in the future. The class-based lifecycle maps fairly well to Rust idioms already, as you really never wanted to subclass in React anyway. +To run: -A custom component would look like the following: - -``` rust -use alchemy::{Component, ComponentKey, Error, Props, rsx, RSX}; - -#[derive(Default)] -pub struct MySpecialWidgetProps; - -#[derive(Props)] -pub struct MySpecialWidget { - props: MySpecialWidgetProps -} - -impl Component for MySpecialWidget { - fn new(key: ComponentKey) -> MySpecialWidget { - MySpecialWidget {} - } - - fn component_did_mount(&mut self) { - // Do whatever you want. Fire a network request or something, I dunno. - } - - fn render(&self, children: Vec) -> Result { - Ok(RSX::None) - } -} +``` +cd src +zola serve ``` -Rust allows the lifecycle to have a few cool guarantees that you can't really get in JavaScript - for instance, props don't actually belong to you... but it was a weird aspect of class-based components in JavaScript where you'd be able to arbitrarily call `this.props.whatever`. Function based components actually communicated it better, in that they were passed in - with Rust, it's very clear that you just get a reference. - -Alchemy follows [this diagram of React's lifecycle methods](https://twitter.com/dan_abramov/status/981712092611989509) to a T for the most part. What's cool is that methods that shouldn't have side effects, we can call as straight up borrows... and the ones that are allowed to have mutable side effects, we can call them as `&mut self`. You can, of course, still incur side effects by doing something else, but being able to imply the intention directly in the API is kind of cool. - -## License -I'm dual licensing this, due to the licenses that some of the projects it depends on being that. If there's some other (more appropriate) way to do this, please feel free to open an issue. - - * Mozilla Public License, Version 2.0, ([LICENSE-MPL](LICENSE-MPL.md) or https://www.mozilla.org/en-US/MPL/) - * MIT License ([LICENSE-MIT](LICENSE-MIT.md) or https://opensource.org/licenses/MIT) - -### Contributing -Before contributing, please read the [contributors guide](https://github.com/ryanmcgrath/alchemy/blob/trunk/CONTRIBUTING.md) -for useful information about setting up Alchemy locally, coding style and common abbreviations. - -Unless you explicitly state otherwise, any contribution you intentionally submit -for inclusion in the work, should be dual-licensed as above, without any additional terms or conditions. - -## Notes -- Major thanks to [David McNeil](https://github.com/davidMcneil) for graciously allowing me to take the `alchemy` name on crates.io. Hot take, if we had user namespacing, this wouldn't be an issue! -- Cheers to [diesel-rs/diesel](https://github.com/diesel-rs/diesel), who have a very well laid out repository that a bunch of this structure was cribbed from. -- Questions or comments that you don't think warrant an issue? Feel free to [poke me over on Twitter](https://twitter.com/ryanmcgrath/) or email me ([ryan@rymc.io](mailto:ryan@rymc.io)). +## Questions, Comments? +Open an issue, or hit me up on [Twitter](https://twitter.com/ryanmcgrath/). diff --git a/alchemy/Cargo.toml b/alchemy/Cargo.toml deleted file mode 100644 index a376ab6..0000000 --- a/alchemy/Cargo.toml +++ /dev/null @@ -1,39 +0,0 @@ -[package] -name = "alchemy" -description = "A cross-platform GUI framework written in Rust. Adapts to native view-layers on each platform. UIKit/React inspired." -version = "0.2.0" -edition = "2018" -authors = ["Ryan McGrath "] -license = "MPL-2.0+" -repository = "https://github.com/ryanmcgrath/alchemy" -categories = ["gui", "rendering::engine", "multimedia"] -keywords = ["gui", "css", "styles", "layout", "react"] - -[badges] -maintenance = { status = "actively-developed" } - -[features] -cocoa = ["alchemy-cocoa", "alchemy-lifecycle/cocoa"] - -[dependencies] -alchemy-cocoa = { version = "0.1", path = "../cocoa", optional = true } -alchemy-lifecycle = { version = "0.1", path = "../lifecycle" } -alchemy-macros = { version = "0.1", path = "../macros" } -alchemy-styles = { version = "0.1", path = "../styles", features = ["parser"] } -mime = "0.3.13" -htmlescape = "0.3.1" -language-tags = "0.2.2" -lazy_static = "1.3" -matches = "0.1" -phf = "0.7" -proc-macro-hack = "0.5.4" -proc-macro-nested = "0.1.3" -serde = { version = "1.0", features = ["derive"] } -serde_json = "1" -strum = "0.15.0" -strum_macros = "0.15.0" -toml = "0.5" - -[package.metadata.docs.rs] -features = ["cocoa"] -default-target = "x86_64-apple-darwin" diff --git a/alchemy/README.md b/alchemy/README.md deleted file mode 100644 index 80c44de..0000000 --- a/alchemy/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Alchemy Core -This crate implements the core Alchemy application, which is what users ultimately import. Applications are a singleton; some might not like this, but it enables a design pattern that meshes a bit better with existing GUI framework systems and patterns. - -The general pattern for developing with Alchemy is as follows: - -``` bash -[Alchemy API] -> [Inner Mutability] -> [Platform Bridge (implemented in other crates)] - | - | - |- [Delegate] -``` - -The delegate pattern is cribbed from AppKit/UIKit, where it tends to work quite nicely as a way to respond to system level events. - -## Questions, Comments? -Open an issue, or hit me up on [Twitter](https://twitter.com/ryanmcgrath/). diff --git a/alchemy/src/app.rs b/alchemy/src/app.rs deleted file mode 100644 index f1230d2..0000000 --- a/alchemy/src/app.rs +++ /dev/null @@ -1,146 +0,0 @@ -//! This module implements the Application structure and associated -//! lifecycle methods. You typically never create this struct yourself; -//! in Alchemy, there's a global `shared_app` that you should use to work -//! with the `App` struct. -//! -//! This ensures that you can respond to application lifecycles, and so -//! routing things around works correctly. - -use std::sync::{Arc, Mutex}; - -use alchemy_styles::{StyleSheet, THEME_ENGINE}; -use alchemy_lifecycle::traits::AppDelegate; - -use crate::window::WindowManager; - -#[cfg(feature = "cocoa")] -pub use alchemy_cocoa::app::{App as PlatformAppBridge}; - -/// A default delegate that is mostly used for creating the initial struct, -/// without requiring the actual `AppDelegate` from the user. Will ideally -/// never see the light of day. -struct DefaultAppDelegate; -impl AppDelegate for DefaultAppDelegate {} - -/// The Application structure itself. It holds a Mutex'd platform bridge, to -/// handle communicating with the platform-specific app instance, along with a -/// delegate to forward events to. The `ThemeEngine` and `WindowManager` are -/// also stored here for easy access. -pub struct App { - pub(crate) bridge: Mutex>, - pub delegate: Mutex>, - pub windows: WindowManager -} - -impl App { - /// Creates a new app, allocated on the heap. Provides a pointer to - /// said allocated instance so that the platform-specific app instances - /// can loop events back around. - pub(crate) fn new() -> Arc { - let app = Arc::new(App { - bridge: Mutex::new(None), - delegate: Mutex::new(Box::new(DefaultAppDelegate {})), - windows: WindowManager::new() - }); - - let app_ptr: *const App = &*app; - app.configure_bridge(app_ptr); - app - } - - /// Handles providing the app pointer to the inner bridge. - pub(crate) fn configure_bridge(&self, ptr: *const App) { - let mut bridge = self.bridge.lock().unwrap(); - *bridge = Some(PlatformAppBridge::new(ptr)); - } - - /// Convenience method for registering one-off styles. Typically, you would want - /// to store your stylesheets as separate files, to enable hot-reloading - but it's - /// conceivable that you might want to just have them in your app, too, and this enables - /// that use case. - pub fn register_styles(&self, theme_key: &str, stylesheet: StyleSheet) { - THEME_ENGINE.register_styles(theme_key, stylesheet); - } - - /// Runs the app instance, by setting the necessary delegate and forwarding the run call - /// to the inner backing application. This is a blocking operation; if you run this, you - /// will want to begin your app (for real) in `AppDelegate::did_finish_launching()`. - pub fn run(&self, state: S) { - { - let mut delegate = self.delegate.lock().unwrap(); - *delegate = Box::new(state); - } - - let lock = self.bridge.lock().unwrap(); - if let Some(bridge) = &*lock { - bridge.run(); - } - } -} - -/// Implementing `AppDelegate` for `App` serves two purposes - for one, we're able to -/// separate the inner implementaton from the abstract one by referring to a trait type, avoiding -/// a cyclical dependency... and two, it allows us to react to these events on the App layer for -/// our own purposes, while still forwarding them on to the delegate. -impl AppDelegate for App { - /// Called when the application will finish launching. - fn will_finish_launching(&mut self) { - let mut delegate = self.delegate.lock().unwrap(); - delegate.will_finish_launching(); - } - - /// Called when the application did finish launching. - fn did_finish_launching(&mut self) { - let mut delegate = self.delegate.lock().unwrap(); - delegate.did_finish_launching(); - } - - /// Called when the application will become active. We can use this, for instance, - /// to resume rendering cycles and so on. - fn will_become_active(&mut self) { - let mut delegate = self.delegate.lock().unwrap(); - delegate.will_become_active(); - } - - /// Called when the application did become active. We can use this, for instance, - /// to resume rendering cycles and so on. - fn did_become_active(&mut self) { - let mut delegate = self.delegate.lock().unwrap(); - delegate.did_become_active(); - } - - /// Called when the application will resigned active. We can use this, for instance, - /// to pause rendering cycles and so on. - fn will_resign_active(&mut self) { - let mut delegate = self.delegate.lock().unwrap(); - delegate.will_resign_active(); - } - - /// Called when the application has resigned active. We can use this, for instance, - /// to pause rendering cycles and so on. - fn did_resign_active(&mut self) { - let mut delegate = self.delegate.lock().unwrap(); - delegate.did_resign_active(); - } - - /// Called when the application should terminate - we can use it - /// to avoid termination if Alchemy needs more time for something, - /// for whatever reason. - fn should_terminate(&self) -> bool { - let delegate = self.delegate.lock().unwrap(); - delegate.should_terminate() - } - - /// Called when the application is about to terminate. - fn will_terminate(&mut self) { - let mut delegate = self.delegate.lock().unwrap(); - delegate.will_terminate(); - } - - /// This is a private method, and you should not attempt to call it or - /// rely on it. It exists to enable easy loopback of Window-level events - /// on some platforms. - fn _window_will_close(&self, window_id: usize) { - self.windows.will_close(window_id); - } -} diff --git a/alchemy/src/components/fragment.rs b/alchemy/src/components/fragment.rs deleted file mode 100644 index a3c940e..0000000 --- a/alchemy/src/components/fragment.rs +++ /dev/null @@ -1,39 +0,0 @@ -//! A Fragment is for components that want to return or hoist multiple inner -//! child nodes. `impl IntoIterator` can't be used in trait returns right now, -//! and this API more or less matches what React presents, so I'm fine with it... -//! but as the language stabilizes even further I'd love to get rid of this and -//! just allow returning arbitrary iterators. - -use alchemy_lifecycle::ComponentKey; -use alchemy_lifecycle::traits::{Component, Props}; - -pub struct FragmentProps; - -/// Fragments are special - you can do something like the following in cases where you -/// want to render some views without requiring an intermediate view. -/// -/// ``` -/// -/// -/// -/// -/// -/// ``` -#[derive(Default, Debug)] -pub struct Fragment; - -impl Fragment { - pub fn default_props() -> FragmentProps { - FragmentProps {} - } -} - -impl Props for Fragment { - fn set_props(&mut self, _: &mut std::any::Any) {} -} - -impl Component for Fragment { - fn new(_: ComponentKey) -> Fragment { - Fragment {} - } -} diff --git a/alchemy/src/components/mod.rs b/alchemy/src/components/mod.rs deleted file mode 100644 index 4015a88..0000000 --- a/alchemy/src/components/mod.rs +++ /dev/null @@ -1,12 +0,0 @@ -//! This module implements basic core Components (View, Label, etc). -//! End-users are of course free to implement their own; the core -//! Components in this module should just be enough to build a -//! functioning app. - -pub mod fragment; -pub mod view; -pub mod text; - -pub use fragment::Fragment; -pub use view::View; -pub use text::Text; diff --git a/alchemy/src/components/text.rs b/alchemy/src/components/text.rs deleted file mode 100644 index 105a537..0000000 --- a/alchemy/src/components/text.rs +++ /dev/null @@ -1,84 +0,0 @@ -//! Handles hoisting per-platform specific Text components. -//! Each platform needs the freedom to do some specific things, -//! hence why they're all (somewhat annoyingly, but lovingly) re-implemented -//! as bridges. - -use std::sync::{Mutex}; - -use alchemy_styles::styles::{Appearance, Layout}; - -use alchemy_lifecycle::ComponentKey; -use alchemy_lifecycle::error::Error; -use alchemy_lifecycle::rsx::RSX; -use alchemy_lifecycle::traits::{Component, Props, PlatformSpecificNodeType}; - -#[cfg(feature = "cocoa")] -use alchemy_cocoa::text::{Text as PlatformTextBridge}; - -pub struct TextProps; - -/// Text rendering is a complicated mess, and being able to defer to the -/// backing platform for this is amazing. This is a very common Component. -/// -/// Views accept styles and event callbacks as props. For example: -/// -/// ``` -/// -/// ``` -pub struct Text(Mutex); - -impl Text { - pub fn default_props() -> TextProps { TextProps {} } - // This is very naive for now, but it's fine - we probably - // want to do some fun stuff here later with stylized text - // rendering anyway. - //fn compare_and_update_text(&mut self, props: &Props) { - /*let text = props.*/ - //} -} - -impl Props for Text { - fn set_props(&mut self, _: &mut std::any::Any) {} -} - -impl Component for Text { - fn new(_: ComponentKey) -> Text { - Text(Mutex::new(PlatformTextBridge::new())) - } - - fn has_native_backing_node(&self) -> bool { true } - - fn borrow_native_backing_node(&self) -> Option { - let bridge = self.0.lock().unwrap(); - Some(bridge.borrow_native_backing_node()) - } - - // Shouldn't be allowed to have child elements... or, should it? - // Panic might not be right here, but eh, should probably do something. - //fn append_child_component(&self, _component: &Component) {} - - fn apply_styles(&self, appearance: &Appearance, layout: &Layout) { - let mut bridge = self.0.lock().unwrap(); - bridge.apply_styles(appearance, layout); - } - - fn component_did_mount(&mut self) { - let mut bridge = self.0.lock().unwrap(); - bridge.render(); - } - - // This one is a bit tricky, due to the way we have to do props + children in Rust. - // Here, we set it as the new text on render(), and then ensure it gets rendered on - // `component_did_update()` and `component_did_mount()`. - fn render(&self, children: Vec) -> Result { - let text = children.iter().map(|child| match child { - RSX::VirtualText(s) => s.0.to_owned(), - _ => String::new() - }).collect::(); - - let mut bridge = self.0.lock().unwrap(); - bridge.set_text(text); - - Ok(RSX::None) - } -} diff --git a/alchemy/src/components/view.rs b/alchemy/src/components/view.rs deleted file mode 100644 index a8ccdaf..0000000 --- a/alchemy/src/components/view.rs +++ /dev/null @@ -1,79 +0,0 @@ -//! Handles hoisting per-platform specific View components. -//! Each platform needs the freedom to do some specific things, -//! hence why they're all (somewhat annoyingly, but lovingly) re-implemented -//! as bridges. - -use std::sync::Mutex; - -use alchemy_styles::{Appearance, Layout}; - -use alchemy_lifecycle::ComponentKey; -use alchemy_lifecycle::error::Error; -use alchemy_lifecycle::rsx::RSX; -use alchemy_lifecycle::traits::{Component, Props, PlatformSpecificNodeType}; - -use crate::components::Fragment; - -#[cfg(feature = "cocoa")] -use alchemy_cocoa::view::{View as PlatformViewBridge}; - -pub struct ViewProps; - -/// Views are the most basic piece of the API. If you want to display something, you'll -/// probably be reaching for a View first and foremost. -/// -/// Views accept styles and event callbacks as props. For example: -/// -/// ``` -/// -/// ``` -pub struct View { - bridge: Mutex -} - -impl Default for View { - fn default() -> View { - View { - bridge: Mutex::new(PlatformViewBridge::new()) - } - } -} - -impl View { - pub fn default_props() -> ViewProps { - ViewProps {} - } -} - -impl Props for View { - fn set_props(&mut self, _: &mut std::any::Any) {} -} - -impl Component for View { - fn new(_: ComponentKey) -> View { - View::default() - } - - fn has_native_backing_node(&self) -> bool { true } - - fn borrow_native_backing_node(&self) -> Option { - let bridge = self.bridge.lock().unwrap(); - Some(bridge.borrow_native_backing_node()) - } - - fn append_child_node(&self, node: PlatformSpecificNodeType) { - let mut bridge = self.bridge.lock().unwrap(); - bridge.append_child(node); - } - - fn apply_styles(&self, appearance: &Appearance, layout: &Layout) { - let mut bridge = self.bridge.lock().unwrap(); - bridge.apply_styles(appearance, layout); - } - - fn render(&self, children: Vec) -> Result { - Ok(RSX::node("Fragment", "".into(), |key| { - Box::new(::new(key)) - }, Box::new(ViewProps {}), children)) - } -} diff --git a/alchemy/src/lib.rs b/alchemy/src/lib.rs deleted file mode 100644 index 3bf0bfd..0000000 --- a/alchemy/src/lib.rs +++ /dev/null @@ -1,49 +0,0 @@ -//! Alchemy is a Rust GUI framework that implements the React Component lifecycle on top of a -//! delegate system inspired by those found in AppKit/UIKit. It's backed by native widgets -//! per-platform, but doesn't bind you to any one design style or visual appearance. -//! -//! CSS support (no cascading) provides a familiar syntax for developers who tend to work on -//! UI/UX projects, and the Component lifecycle is familiar enough to anyone who's touched React. - -use std::sync::Arc; -pub use lazy_static::lazy_static; -use proc_macro_hack::proc_macro_hack; - -pub use alchemy_lifecycle::{ComponentKey, text}; -pub use alchemy_lifecycle::traits::{ - AppDelegate, Component, Props as ComponentProps, WindowDelegate -}; - -pub use alchemy_lifecycle::error::Error; -pub use alchemy_lifecycle::rsx::{ - RSX, VirtualNode, VirtualText -}; - -#[proc_macro_hack(support_nested)] -pub use alchemy_macros::rsx; - -#[proc_macro_hack] -pub use alchemy_macros::styles; -pub use alchemy_macros::Props; - -pub use alchemy_styles::{Color, styles as style_attributes, SpacedSet, StyleSheet, StylesList}; - -mod app; -use app::App; - -pub mod components; -pub use components::{Fragment, Text, View}; - -pub mod window; -pub use window::Window; - -lazy_static! { - pub(crate) static ref SHARED_APP: Arc = App::new(); -} - -/// This function supports calling the shared global application instance from anywhere in your -/// code. It's useful in cases where you need to have an escape hatch, but if you're using it as -/// such, you may want to double check your Application design to make sure you need it. -pub fn shared_app() -> Arc { - SHARED_APP.clone() -} diff --git a/alchemy/src/window/manager.rs b/alchemy/src/window/manager.rs deleted file mode 100644 index 630c6e0..0000000 --- a/alchemy/src/window/manager.rs +++ /dev/null @@ -1,60 +0,0 @@ -//! Per-platform windows have their own nuances, and typically, their own windowservers. -//! We don't want to take away from that, but we do want to avoid scenarios where things get -//! a bit weird. -//! -//! Consider the following: let's say we have a `Window` instantiated in Rust, and we call -//! `.show()` on it. Then the window drops, on the Rust side. We should probably clean up our side, -//! right? -//! -//! There's also the fact that a user could opt to close a window. If that happens, we want to be -//! able to remove it from our structure... hence this manager that acts as a lightweight interface -//! for managing per-platform Window instances. - -use std::sync::{Arc, Mutex}; -use crate::window::AppWindow; - -/// A struct that provides a Window Manager, via some interior mutability magic. -pub struct WindowManager(Mutex>>>); - -impl WindowManager { - /// Creates a new WindowManager instance. - pub(crate) fn new() -> WindowManager { - WindowManager(Mutex::new(Vec::with_capacity(1))) - } - - /// Locks and acquires a new window ID, which our Windows use to loop back for - /// events and callbacks. - pub(crate) fn allocate_new_window_id(&self) -> usize { - let windows = self.0.lock().unwrap(); - windows.len() + 1 - } - - /// Adds an `AppWindow` to this instance. - pub(crate) fn add(&self, window: Arc>) { - let mut windows = self.0.lock().unwrap(); - if let None = windows.iter().position(|w| Arc::ptr_eq(&w, &window)) { - windows.push(window); - } - } - - /// On a `will_close` event, our delegates will loop back here and notify that a window - /// with x id is closing, and should be removed. The `WindowDelegate` `will_close()` event - /// is fired here. - /// - /// At the end of this, the window drops. - pub(crate) fn will_close(&self, window_id: usize) { - let mut windows = self.0.lock().unwrap(); - if let Some(index) = windows.iter().position(|window| { - let mut w = window.lock().unwrap(); - - if w.id == window_id { - w.delegate.will_close(); - return true; - } - - false - }) { - windows.remove(index); - } - } -} diff --git a/alchemy/src/window/mod.rs b/alchemy/src/window/mod.rs deleted file mode 100644 index 5cc5848..0000000 --- a/alchemy/src/window/mod.rs +++ /dev/null @@ -1,7 +0,0 @@ -//! This module implements Windows and their associated lifecycles. - -mod manager; -pub(crate) use manager::WindowManager; - -pub mod window; -pub use window::{AppWindow, Window}; diff --git a/alchemy/src/window/window.rs b/alchemy/src/window/window.rs deleted file mode 100644 index 9c4a84b..0000000 --- a/alchemy/src/window/window.rs +++ /dev/null @@ -1,170 +0,0 @@ -//! Implements the Window API. It attempts to provide a nice, common interface across -//! per-platform Window APIs. - -use std::sync::{Arc, Mutex}; - -use alchemy_lifecycle::{ComponentKey, RENDER_ENGINE}; -use alchemy_lifecycle::rsx::RSX; -use alchemy_lifecycle::traits::{Component, WindowDelegate}; - -use alchemy_styles::{Appearance, Style, StylesList, THEME_ENGINE}; - -use crate::{App, SHARED_APP}; -use crate::components::View; - -#[cfg(feature = "cocoa")] -use alchemy_cocoa::window::{Window as PlatformWindowBridge}; - -/// AppWindow contains the inner details of a Window. It's guarded by a Mutex on `Window`, -/// and you shouldn't create this yourself, but it's documented here so you can understand what -/// it holds. -pub struct AppWindow { - pub id: usize, - pub style_keys: StylesList, - pub title: String, - pub dimensions: (f64, f64, f64, f64), - pub bridge: PlatformWindowBridge, - pub delegate: Box, - pub render_key: ComponentKey -} - -impl AppWindow { - /// Re-renders a window. This method calls `render()` on the `WindowDelegate`, patches it into - /// the root tree node, and then diffs the old (current) tree against a new tree by walking it - /// and determining what needs to be changed. This also calculates and applies layout and - /// styling. - /// - /// This method is called on the `show` event, and in rare cases can be useful to call - /// directly. - pub fn render(&mut self) { - let mut style = Style::default(); - let mut appearance = Appearance::default(); - THEME_ENGINE.configure_styles_for_keys(&self.style_keys, &mut style, &mut appearance); - - self.bridge.apply_styles(&appearance); - - let children = match self.delegate.render() { - Ok(opt) => opt, - Err(e) => { - eprintln!("Error rendering window! {}", e); - RSX::None - } - }; - - match RENDER_ENGINE.diff_and_render_root(self.render_key, ( - self.dimensions.2, - self.dimensions.3 - ), children) { - Ok(_) => { } - Err(e) => { eprintln!("Error rendering window! {}", e); } - } - } - - pub fn set_title(&mut self, title: &str) { - self.title = title.into(); - self.bridge.set_title(title); - } - - pub fn set_dimensions(&mut self, x: f64, y: f64, width: f64, height: f64) { - self.dimensions = (x, y, width, height); - self.bridge.set_dimensions(x, y, width, height); - } - - /// Renders and calls through to the native platform window show method. - pub fn show(&mut self) { - self.render(); - self.bridge.show(); - } - - /// Calls through to the native platform window close method. - pub fn close(&mut self) { - self.bridge.close(); - } -} - -/// Windows represented... well, a Window. When you create one, you get the Window back. When you -/// show one, a clone of the pointer is added to the window manager, and removed on close. -pub struct Window(pub(crate) Arc>); - -impl Window { - /// Creates a new window. - pub fn new(delegate: S) -> Window { - let window_id = SHARED_APP.windows.allocate_new_window_id(); - let view = View::default(); - let shared_app_ptr: *const App = &**SHARED_APP; - - // This unwrap() is fine, since we implement View ourselves in Alchemy - let backing_node = view.borrow_native_backing_node().unwrap(); - let bridge = PlatformWindowBridge::new(window_id, backing_node, shared_app_ptr); - - let key = match RENDER_ENGINE.register_root_component(view) { - Ok(key) => key, - Err(_e) => { panic!("Uhhhh this really messed up"); } - }; - - Window(Arc::new(Mutex::new(AppWindow { - id: window_id, - style_keys: "".into(), - title: "".into(), - dimensions: (0., 0., 0., 0.), - bridge: bridge, - delegate: Box::new(delegate), - render_key: key - }))) - } - - /// Renders a window. By default, a window renders nothing - make sure you implement `render()` - /// on your `WindowDelegate`. Note that calling `.show()` implicitly calls this for you, so you - /// rarely need to call this yourself. - pub fn render(&self) { - let mut window = self.0.lock().unwrap(); - window.render(); - } - - pub fn set_title(&self, title: &str) { - let mut window = self.0.lock().unwrap(); - window.set_title(title); - } - - pub fn set_dimensions(&mut self, x: f64, y: f64, width: f64, height: f64) { - let mut window = self.0.lock().unwrap(); - window.set_dimensions(x, y, width, height); - } - - /// Registers this window with the window manager, renders it, and shows it. - pub fn show(&self) { - SHARED_APP.windows.add(self.0.clone()); - let mut window = self.0.lock().unwrap(); - window.show(); - } - - /// Hides a window. On some platforms, this is minimizing... on others, like macOS, it's - /// actually hiding. On mobile, this shouldn't do anything. - pub fn hide(&self) { - - } - - /// Closes the window, unregistering it from the window manager in the process and ensuring the - /// necessary delegate method(s) are fired. - pub fn close(&self) { - let window_id = self.0.lock().unwrap().id; - SHARED_APP.windows.will_close(window_id); - let mut window = self.0.lock().unwrap(); - window.close(); - } -} - -impl Clone for Window { - /// Clones a `Window` by cloning the inner `AppWindow`. - fn clone(&self) -> Window { - Window(self.0.clone()) - } -} - -impl Drop for Window { - /// When a `Window` is dropped, we want to ensure that it's closed, so we'll silently call - /// `.close()` to be safe. - fn drop(&mut self) { - self.close(); - } -} diff --git a/assets/README.md b/assets/README.md deleted file mode 100644 index 693af1b..0000000 --- a/assets/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Alchemy Assets -This folder contains assets used for Alchemy (graphics, etc). - -## The Logo -[The potion bottle graphic is a vector graphic from Vecteezy](https://www.vecteezy.com/vector-art/124561-free-magic-item-vector). Interested in contributing logo work? Please get in touch! - -## Questions, Comments? -Open an issue, or hit me up on [Twitter](https://twitter.com/ryanmcgrath/). diff --git a/assets/alchemy_logo_250x.png b/assets/alchemy_logo_250x.png deleted file mode 100644 index 2fea384f5e1b4c391969466e7936d4152eb04c4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7066 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

212leUQ-a-KIbbKE4 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 diff --git a/website/static/banner.png b/banner.png similarity index 100% rename from website/static/banner.png rename to banner.png diff --git a/clippy.toml b/clippy.toml deleted file mode 100644 index 9fa08ad..0000000 --- a/clippy.toml +++ /dev/null @@ -1,6 +0,0 @@ -cyclomatic-complexity-threshold = 30 -doc-valid-idents = [ - "MiB", "GiB", "TiB", "PiB", "EiB", - "DirectX", "OpenGL", "TrueType", - "GitHub" -] diff --git a/cocoa/Cargo.toml b/cocoa/Cargo.toml deleted file mode 100644 index 16d4ff9..0000000 --- a/cocoa/Cargo.toml +++ /dev/null @@ -1,27 +0,0 @@ -[package] -name = "alchemy-cocoa" -description = "Cocoa bindings for Alchemy, a cross-platform GUI framework written in Rust." -version = "0.1.0" -edition = "2018" -authors = ["Ryan McGrath "] -license = "MPL-2.0+" -repository = "https://github.com/ryanmcgrath/alchemy" -categories = ["gui", "rendering::engine", "multimedia"] -keywords = ["gui", "cocoa", "macos", "appkit", "react"] - -[badges] -maintenance = { status = "actively-developed" } - -[dependencies] -alchemy-lifecycle = { version = "0.1", path = "../lifecycle", features = ["cocoa"] } -alchemy-styles = { version = "0.1", path = "../styles" } -objc = "0.2.6" -objc_id = "0.1.1" -dispatch = "0.1.4" -cocoa = "0.18.4" -core-foundation = "0.6" -core-graphics = "0.17.1" - -[package.metadata.docs.rs] -features = ["cocoa"] -default-target = "x86_64-apple-darwin" diff --git a/cocoa/README.md b/cocoa/README.md deleted file mode 100644 index 3ac6dce..0000000 --- a/cocoa/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Alchemy-Cocoa -This crate implements a backend for Cocoa-based widgets, such as `NSView`, `NSTextField`, and so on. Note that while it's under development currently, the fate of AppKit is still kind of a gray area. If Apple ends up pushing Marzipan as "the" solution, it's possible this might become obsolete, or would run in tandem with the iOS crate for iOS/Marzipan. - -## Questions, Comments? -Open an issue, or hit me up on [Twitter](https://twitter.com/ryanmcgrath/). diff --git a/cocoa/src/app.rs b/cocoa/src/app.rs deleted file mode 100644 index f2152ea..0000000 --- a/cocoa/src/app.rs +++ /dev/null @@ -1,153 +0,0 @@ -//! A wrapper for `NSApplication` on macOS. If you opt in to the `cocoa` feature on -//! Alchemy, this will loop system-level application events back to your `AppDelegate`. - -use std::sync::{Once, ONCE_INIT}; - -use cocoa::base::{id, nil}; -use cocoa::appkit::{NSApplication, NSRunningApplication}; - -use objc_id::Id; -use objc::declare::ClassDecl; -use objc::runtime::{Class, Object, Sel}; -use objc::{msg_send, class, sel, sel_impl}; - -use alchemy_lifecycle::traits::AppDelegate; - -static ALCHEMY_APP_PTR: &str = "alchemyParentAppPtr"; - -/// A wrapper for `NSApplication`. It holds (retains) pointers for the Objective-C runtime, -/// which is where our application instance lives. It also injects an `NSObject` subclass, -/// which acts as the Delegate, looping back into our Alchemy shared application. -pub struct App { - pub inner: Id, - pub delegate: Id -} - -impl App { - /// Creates an NSAutoReleasePool, configures various NSApplication properties (e.g, activation - /// policies), injects an `NSObject` delegate wrapper, and retains everything on the - /// Objective-C side of things. - pub fn new(parent_app_ptr: *const T) -> Self { - let inner = unsafe { - let _pool = cocoa::foundation::NSAutoreleasePool::new(nil); - let app = cocoa::appkit::NSApp(); - app.setActivationPolicy_(cocoa::appkit::NSApplicationActivationPolicyRegular); - Id::from_ptr(app) - }; - - let delegate = unsafe { - let delegate_class = register_app_delegate_class::(); - let delegate: id = msg_send![delegate_class, new]; - (&mut *delegate).set_ivar(ALCHEMY_APP_PTR, parent_app_ptr as usize); - msg_send![&*inner, setDelegate:delegate]; - Id::from_ptr(delegate) - }; - - App { - delegate: delegate, - inner: inner - } - } - - /// Kicks off the NSRunLoop for the NSApplication instance. This blocks when called. - pub fn run(&self) { - unsafe { - let current_app = cocoa::appkit::NSRunningApplication::currentApplication(nil); - current_app.activateWithOptions_(cocoa::appkit::NSApplicationActivateIgnoringOtherApps); - let shared_app: id = msg_send![class!(NSApplication), sharedApplication]; - msg_send![shared_app, run]; - } - } -} - -/// Fires when the Application Delegate receives a `applicationWillFinishLaunching` notification. -extern fn will_finish_launching(this: &Object, _: Sel, _: id) { - unsafe { - let app_ptr: usize = *this.get_ivar(ALCHEMY_APP_PTR); - let app = app_ptr as *mut T; - (*app).will_finish_launching(); - }; -} - -/// Fires when the Application Delegate receives a `applicationDidFinishLaunching` notification. -extern fn did_finish_launching(this: &Object, _: Sel, _: id) { - unsafe { - let app_ptr: usize = *this.get_ivar(ALCHEMY_APP_PTR); - let app = app_ptr as *mut T; - (*app).did_finish_launching(); - }; -} - -/// Fires when the Application Delegate receives a `applicationWillBecomeActive` notification. -extern fn will_become_active(this: &Object, _: Sel, _: id) { - unsafe { - let app_ptr: usize = *this.get_ivar(ALCHEMY_APP_PTR); - let app = app_ptr as *mut T; - (*app).will_become_active(); - }; -} - -/// Fires when the Application Delegate receives a `applicationDidBecomeActive` notification. -extern fn did_become_active(this: &Object, _: Sel, _: id) { - unsafe { - let app_ptr: usize = *this.get_ivar(ALCHEMY_APP_PTR); - let app = app_ptr as *mut T; - (*app).did_become_active(); - }; -} - -/// Fires when the Application Delegate receives a `applicationWillResignActive` notification. -extern fn will_resign_active(this: &Object, _: Sel, _: id) { - unsafe { - let app_ptr: usize = *this.get_ivar(ALCHEMY_APP_PTR); - let app = app_ptr as *mut T; - (*app).will_resign_active(); - }; -} - -/// Fires when the Application Delegate receives a `applicationDidResignActive` notification. -extern fn did_resign_active(this: &Object, _: Sel, _: id) { - unsafe { - let app_ptr: usize = *this.get_ivar(ALCHEMY_APP_PTR); - let app = app_ptr as *mut T; - (*app).did_resign_active(); - }; -} - -/// Fires when the Application Delegate receives a `applicationWillTerminate` notification. -extern fn will_terminate(this: &Object, _: Sel, _: id) { - unsafe { - let app_ptr: usize = *this.get_ivar(ALCHEMY_APP_PTR); - let app = app_ptr as *mut T; - (*app).will_terminate(); - }; -} - -/// Registers an `NSObject` application delegate, and configures it for the various callbacks and -/// pointers we need to have. -fn register_app_delegate_class() -> *const Class { - static mut DELEGATE_CLASS: *const Class = 0 as *const Class; - static INIT: Once = ONCE_INIT; - - INIT.call_once(|| unsafe { - let superclass = Class::get("NSObject").unwrap(); - let mut decl = ClassDecl::new("AlchemyAppDelegate", superclass).unwrap(); - - decl.add_ivar::(ALCHEMY_APP_PTR); - - // Add callback methods - decl.add_method(sel!(applicationWillFinishLaunching:), will_finish_launching:: as extern fn(&Object, _, _)); - decl.add_method(sel!(applicationDidFinishLaunching:), did_finish_launching:: as extern fn(&Object, _, _)); - decl.add_method(sel!(applicationWillBecomeActive:), will_become_active:: as extern fn(&Object, _, _)); - decl.add_method(sel!(applicationDidBecomeActive:), did_become_active:: as extern fn(&Object, _, _)); - decl.add_method(sel!(applicationWillResignActive:), will_resign_active:: as extern fn(&Object, _, _)); - decl.add_method(sel!(applicationDidResignActive:), did_resign_active:: as extern fn(&Object, _, _)); - decl.add_method(sel!(applicationWillTerminate:), will_terminate:: as extern fn(&Object, _, _)); - - DELEGATE_CLASS = decl.register(); - }); - - unsafe { - DELEGATE_CLASS - } -} diff --git a/cocoa/src/color.rs b/cocoa/src/color.rs deleted file mode 100644 index aa285be..0000000 --- a/cocoa/src/color.rs +++ /dev/null @@ -1,29 +0,0 @@ -//! Implements a conversion method for taking an `alchemy::Color` and turning it into -//! an `NSColor`. - -use objc_id::Id; -use objc::runtime::Object; -use objc::{class, msg_send, sel, sel_impl}; -use core_graphics::base::CGFloat; - -use alchemy_styles::color::Color; - -pub trait IntoNSColor { - fn into_nscolor(&self) -> Id; -} - -impl IntoNSColor for Color { - /// This creates an NSColor, retains it, and returns it. Dropping this value will - /// call `release` on the Objective-C side. - fn into_nscolor(&self) -> Id { - let red = self.red as CGFloat / 255.0; - let green = self.green as CGFloat / 255.0; - let blue = self.blue as CGFloat / 255.0; - let alpha = self.alpha as CGFloat / 255.0; - - unsafe { - Id::from_ptr(msg_send![class!(NSColor), colorWithRed:red green:green blue:blue alpha:alpha]) - } - } -} - diff --git a/cocoa/src/lib.rs b/cocoa/src/lib.rs deleted file mode 100644 index 1900be3..0000000 --- a/cocoa/src/lib.rs +++ /dev/null @@ -1,24 +0,0 @@ -//! This crate provides a Cocoa backend for Alchemy, the Rust GUI framework. -//! This means that, on macOS, you'll be using native `NSView`, `NSTextField`, -//! and other assorted controls. Where possible, it attempts to opt into -//! smoother rendering paths (e.g, layer-backed views, drawing subview layers -//! together where appropriate). -//! -//! # License -//! -//! Copyright 2018 Ryan McGrath. See the license files included in the root repository -//! for more information, along with credit to applicable parties for who this project -//! would not have happened. -//! -//! # Code of Conduct -//! -//! Please note that this project is released with a [Contributor Code of -//! Conduct][coc]. By participating in this project you agree to abide by its terms. -//! -//! [coc]: https://www.contributor-covenant.org/version/1/4/code-of-conduct - -pub mod color; -pub mod app; -pub mod text; -pub mod view; -pub mod window; diff --git a/cocoa/src/text.rs b/cocoa/src/text.rs deleted file mode 100644 index 2845955..0000000 --- a/cocoa/src/text.rs +++ /dev/null @@ -1,140 +0,0 @@ -//! This wraps NTextField on macOS, and configures it to act like a label -//! with standard behavior that most users would expect. - -use std::sync::{Once, ONCE_INIT}; - -use objc_id::{Id, ShareId}; -use objc::{msg_send, sel, sel_impl}; -use objc::declare::ClassDecl; -use objc::runtime::{Class, Object, Sel, BOOL}; - -use cocoa::base::{id, nil, YES, NO}; -use cocoa::foundation::{NSRect, NSPoint, NSSize, NSString}; - -use crate::color::IntoNSColor; - -use alchemy_styles::{Color, Layout, Appearance}; - -use alchemy_lifecycle::traits::PlatformSpecificNodeType; - -static ALCHEMY_DELEGATE: &str = "alchemyDelegate"; - -/// A wrapper for `NSText`. This holds retained pointers for the Objective-C -/// runtime - namely, the view itself, and associated things such as background -/// colors and so forth. -#[derive(Debug)] -pub struct Text { - text: String, - inner_mut: Id, - inner_share: ShareId, - background_color: Id, - text_color: Id -} - -impl Text { - /// Allocates a new `NSTextField` on the Objective-C side, ensuring that things like coordinate - /// flipping occur (macOS still uses (0,0) as lower-left by default), and opting in to layer - /// backed views for smoother scrolling. - pub fn new() -> Text { - let (inner_mut, inner_share) = unsafe { - let initial_string = NSString::alloc(nil).init_str(""); - let view: id = msg_send![register_class(), labelWithString:initial_string]; - msg_send![view, setSelectable:YES]; - msg_send![view, setDrawsBackground:YES]; - msg_send![view, setBezeled:NO]; - msg_send![view, setEditable:NO]; - msg_send![view, setWantsLayer:YES]; - msg_send![view, setLayerContentsRedrawPolicy:1]; - let x = view.clone(); - (Id::from_ptr(view), ShareId::from_ptr(x)) - }; - - Text { - text: "".into(), - inner_mut: inner_mut, - inner_share: inner_share, - background_color: Color::transparent().into_nscolor(), - text_color: Color::transparent().into_nscolor() - } - } - - /// Returns a pointer to the underlying Objective-C view. The pointer is not mutable; however, - /// you can send messages to it (unsafely). - pub fn borrow_native_backing_node(&self) -> PlatformSpecificNodeType { - self.inner_share.clone() - } - - /// Appends a child NSText (or subclassed type) to this view. - pub fn append_child(&mut self, child: PlatformSpecificNodeType) { - unsafe { - msg_send![&*self.inner_mut, addSubview:child]; - } - } - - /// Given a `&Style`, will set the frame, background color, borders and so forth. It then - /// calls `setNeedsDisplay:YES` on the Objective-C side, so that Cocoa will re-render this - /// view. - pub fn apply_styles(&mut self, appearance: &Appearance, layout: &Layout) { - unsafe { - let rect = NSRect::new( - NSPoint::new(layout.location.x.into(), layout.location.y.into()), - NSSize::new(layout.size.width.into(), layout.size.height.into()) - ); - - self.background_color = appearance.background_color.into_nscolor(); - self.text_color = appearance.text_color.into_nscolor(); - - msg_send![&*self.inner_mut, setFrame:rect]; - msg_send![&*self.inner_mut, setBackgroundColor:&*self.background_color]; - msg_send![&*self.inner_mut, setTextColor:&*self.text_color]; - } - } - - pub fn set_text(&mut self, text: String) { - self.text = text; - } - - pub fn render(&mut self) { - unsafe { - let string_value = NSString::alloc(nil).init_str(&self.text); - msg_send![&*self.inner_mut, setStringValue:string_value]; - } - } -} - -/// This is used for some specific calls, where macOS NSText needs to be -/// forcefully dragged into the modern age (e.g, position coordinates from top left...). -extern fn enforce_normalcy(_: &Object, _: Sel) -> BOOL { - return YES; -} - -/// Registers an `NSText` subclass, and configures it to hold some ivars for various things we need -/// to store. -fn register_class() -> *const Class { - static mut VIEW_CLASS: *const Class = 0 as *const Class; - static INIT: Once = ONCE_INIT; - - INIT.call_once(|| unsafe { - let superclass = Class::get("NSTextField").unwrap(); - let mut decl = ClassDecl::new("AlchemyTextField", superclass).unwrap(); - - // Force NSText to render from the top-left, not bottom-left - //decl.add_method(sel!(isFlipped), enforce_normalcy as extern fn(&Object, _) -> BOOL); - - // Request optimized backing layers - //decl.add_method(sel!(updateLayer), update_layer as extern fn(&Object, _)); - //decl.add_method(sel!(wantsUpdateLayer), enforce_normalcy as extern fn(&Object, _) -> BOOL); - - // Ensure mouse events and so on work - //decl.add_method(sel!(acceptsFirstResponder), update_layer as extern fn(&Object, _)); - - // A pointer back to our Text, for forwarding mouse + etc events. - // Note that NSText's don't really have a "delegate", I'm just using it here - // for common terminology sake. - decl.add_ivar::(ALCHEMY_DELEGATE); - - VIEW_CLASS = decl.register(); - }); - - unsafe { VIEW_CLASS } -} diff --git a/cocoa/src/view.rs b/cocoa/src/view.rs deleted file mode 100644 index 5b123cb..0000000 --- a/cocoa/src/view.rs +++ /dev/null @@ -1,139 +0,0 @@ -//! Implements a View Component struct. The most common -//! basic building block of any app. Wraps NSView on macOS. - -use std::sync::{Once, ONCE_INIT}; - -use objc_id::{Id, ShareId}; -use objc::{msg_send, sel, sel_impl}; -use objc::declare::ClassDecl; -use objc::runtime::{Class, Object, Sel, BOOL}; - -use cocoa::base::{id, nil, YES}; -use cocoa::foundation::{NSRect, NSPoint, NSSize}; - -use crate::color::IntoNSColor; - -use alchemy_styles::{Appearance, Color, Layout}; - -use alchemy_lifecycle::traits::PlatformSpecificNodeType; - -static ALCHEMY_DELEGATE: &str = "alchemyDelegate"; -static BACKGROUND_COLOR: &str = "alchemyBackgroundColor"; - -/// A wrapper for `NSView`. This holds retained pointers for the Objective-C -/// runtime - namely, the view itself, and associated things such as background -/// colors and so forth. -#[derive(Debug)] -pub struct View { - inner_mut: Id, - inner_share: ShareId, - background_color: Id -} - -impl View { - /// Allocates a new `NSView` on the Objective-C side, ensuring that things like coordinate - /// flipping occur (macOS still uses (0,0) as lower-left by default), and opting in to layer - /// backed views for smoother scrolling. - pub fn new() -> View { - let (inner_mut, inner_share) = unsafe { - let rect_zero = NSRect::new(NSPoint::new(0., 0.), NSSize::new(0., 0.)); - let alloc: id = msg_send![register_class(), alloc]; - let view: id = msg_send![alloc, initWithFrame:rect_zero]; - msg_send![view, setWantsLayer:YES]; - msg_send![view, setLayerContentsRedrawPolicy:1]; - let x = view.clone(); - (Id::from_ptr(view), ShareId::from_ptr(x)) - }; - - View { - inner_mut: inner_mut, - inner_share: inner_share, - background_color: Color::transparent().into_nscolor() - } - } - - /// Returns a pointer to the underlying Objective-C view. The pointer is not mutable; however, - /// you can send messages to it (unsafely). - pub fn borrow_native_backing_node(&self) -> PlatformSpecificNodeType { - self.inner_share.clone() - } - - /// Appends a child NSView (or subclassed type) to this view. - pub fn append_child(&mut self, child: PlatformSpecificNodeType) { - unsafe { - msg_send![&*self.inner_mut, addSubview:child]; - } - } - - /// Given a `&Style`, will set the frame, background color, borders and so forth. It then - /// calls `setNeedsDisplay:YES` on the Objective-C side, so that Cocoa will re-render this - /// view. - pub fn apply_styles(&mut self, appearance: &Appearance, layout: &Layout) { - unsafe { - let rect = NSRect::new( - NSPoint::new(layout.location.x.into(), layout.location.y.into()), - NSSize::new(layout.size.width.into(), layout.size.height.into()) - ); - - self.background_color = appearance.background_color.into_nscolor(); - self.inner_mut.set_ivar(BACKGROUND_COLOR, &*self.background_color); - - msg_send![&*self.inner_mut, setFrame:rect]; - msg_send![&*self.inner_mut, setNeedsDisplay:YES]; - } - } -} - -/// This is used for some specific calls, where macOS NSView needs to be -/// forcefully dragged into the modern age (e.g, position coordinates from top left...). -extern fn enforce_normalcy(_: &Object, _: Sel) -> BOOL { - return YES; -} - -/// When an `NSView` has `updateLayer` called, it will get passed through here, at which point we -/// instruct the layer how it should render (e.g, background color). -extern fn update_layer(this: &Object, _: Sel) { - unsafe { - let background_color: id = *this.get_ivar(BACKGROUND_COLOR); - if background_color != nil { - let layer: id = msg_send![this, layer]; - let cg: id = msg_send![background_color, CGColor]; - msg_send![layer, setBackgroundColor:cg]; - } - } -} - -/// Registers an `NSView` subclass, and configures it to hold some ivars for various things we need -/// to store. -fn register_class() -> *const Class { - static mut VIEW_CLASS: *const Class = 0 as *const Class; - static INIT: Once = ONCE_INIT; - - INIT.call_once(|| unsafe { - let superclass = Class::get("NSView").unwrap(); - let mut decl = ClassDecl::new("AlchemyView", superclass).unwrap(); - - // Force NSView to render from the top-left, not bottom-left - decl.add_method(sel!(isFlipped), enforce_normalcy as extern fn(&Object, _) -> BOOL); - - // Opt-in to AutoLayout - //decl.add_method(sel!(requiresConstraintBasedLayout), enforce_normalcy as extern fn(&Object, _) -> BOOL); - - // Request optimized backing layers - decl.add_method(sel!(updateLayer), update_layer as extern fn(&Object, _)); - decl.add_method(sel!(wantsUpdateLayer), enforce_normalcy as extern fn(&Object, _) -> BOOL); - - // Ensure mouse events and so on work - //decl.add_method(sel!(acceptsFirstResponder), update_layer as extern fn(&Object, _)); - - // A pointer back to our View, for forwarding mouse + etc events. - // Note that NSView's don't really have a "delegate", I'm just using it here - // for common terminology sake. - decl.add_ivar::(ALCHEMY_DELEGATE); - decl.add_ivar::(BACKGROUND_COLOR); - - VIEW_CLASS = decl.register(); - }); - - unsafe { VIEW_CLASS } -} diff --git a/cocoa/src/window.rs b/cocoa/src/window.rs deleted file mode 100644 index 64b4dd9..0000000 --- a/cocoa/src/window.rs +++ /dev/null @@ -1,169 +0,0 @@ -//! Implements an `NSWindow` wrapper for MacOS, backed by -//! Cocoa and associated widgets. This also handles looping back -//! lifecycle events, such as window resizing or close events. - -use std::sync::{Once, ONCE_INIT}; - -use cocoa::base::{id, nil, YES, NO}; -use cocoa::appkit::{NSWindow, NSWindowStyleMask, NSBackingStoreType}; -use cocoa::foundation::{NSRect, NSPoint, NSSize, NSString, NSAutoreleasePool}; - -use objc_id::ShareId; -use objc::declare::ClassDecl; -use objc::runtime::{Class, Object, Sel}; -use objc::{msg_send, sel, sel_impl}; - -use alchemy_lifecycle::traits::{AppDelegate, Component}; -use alchemy_styles::Appearance; - -static APP_PTR: &str = "alchemyAppPtr"; -static WINDOW_MANAGER_ID: &str = "alchemyWindowManagerID"; - -/// A wrapper for `NSWindow`. Holds (retains) pointers for the Objective-C runtime -/// where our `NSWindow` and associated delegate live. -pub struct Window { - pub inner: ShareId, - pub delegate: ShareId -} - -impl Window { - /// Creates a new `NSWindow` instance, configures it appropriately (e.g, titlebar appearance), - /// injects an `NSObject` delegate wrapper, and retains the necessary Objective-C runtime - /// pointers. - pub fn new(window_id: usize, content_view: ShareId, app_ptr: *const T) -> Window { - let dimensions = NSRect::new(NSPoint::new(0., 0.), NSSize::new(0., 0.)); - - let style = NSWindowStyleMask::NSResizableWindowMask | - NSWindowStyleMask::NSUnifiedTitleAndToolbarWindowMask | NSWindowStyleMask::NSMiniaturizableWindowMask | - NSWindowStyleMask::NSClosableWindowMask | NSWindowStyleMask::NSTitledWindowMask | NSWindowStyleMask::NSFullSizeContentViewWindowMask; - - let inner = unsafe { - let window = NSWindow::alloc(nil).initWithContentRect_styleMask_backing_defer_( - dimensions, - style, - NSBackingStoreType::NSBackingStoreBuffered, - NO - ).autorelease(); - - msg_send![window, setTitlebarAppearsTransparent:YES]; - //msg_send![window, setTitleVisibility:1]; - - // This is very important! NSWindow is an old class and has some behavior that we need - // to disable, like... this. If we don't set this, we'll segfault entirely because the - // Objective-C runtime gets out of sync. - msg_send![window, setReleasedWhenClosed:NO]; - - //if let Some(view_ptr) = content_view.borrow_native_backing_node() { - msg_send![window, setContentView:content_view]; - //} - - ShareId::from_ptr(window) - }; - - let delegate = unsafe { - let delegate_class = register_window_class::(); - let delegate: id = msg_send![delegate_class, new]; - (&mut *delegate).set_ivar(APP_PTR, app_ptr as usize); - (&mut *delegate).set_ivar(WINDOW_MANAGER_ID, window_id); - msg_send![inner, setDelegate:delegate]; - ShareId::from_ptr(delegate) - }; - - Window { - inner: inner, - delegate: delegate - } - } - - pub fn set_title(&mut self, title: &str) { - unsafe { - let title = NSString::alloc(nil).init_str(title); - msg_send![&*self.inner, setTitle:title]; - } - } - - pub fn set_dimensions(&mut self, x: f64, y: f64, width: f64, height: f64) { - unsafe { - let dimensions = NSRect::new( - NSPoint::new(x.into(), y.into()), - NSSize::new(width.into(), height.into()) - ); - - msg_send![&*self.inner, setFrame:dimensions display:YES]; - } - } - - /// Normally used for setting platform-specific styles; on macOS we choose not to do this and - /// just have the content view handle the background color, as calling window - /// setBackgroundColor causes some notable lag on resizing. - pub fn apply_styles(&mut self, _appearance: &Appearance) { } - - /// On macOS, calling `show()` is equivalent to calling `makeKeyAndOrderFront`. This is the - /// most common use case, hence why this method was chosen - if you want or need something - /// else, feel free to open an issue to discuss. - /// - /// You should never be calling this yourself, mind you - Alchemy core handles this for you. - pub fn show(&self) { - unsafe { - msg_send![&*self.inner, makeKeyAndOrderFront:nil]; - } - } - - /// On macOS, calling `close()` is equivalent to calling... well, `close`. It closes the - /// window. - /// - /// I dunno what else to say here, lol. - /// - /// You should never be calling this yourself, mind you - Alchemy core handles this for you. - pub fn close(&self) { - unsafe { - msg_send![&*self.inner, close]; - } - } -} - -impl Drop for Window { - /// When a Window is dropped on the Rust side, we want to ensure that we break the delegate - /// link on the Objective-C side. While this shouldn't actually be an issue, I'd rather be - /// safer than sorry. - fn drop(&mut self) { - // This bridging link needs to be broken on Drop. - unsafe { - msg_send![&*self.inner, setDelegate:nil]; - } - } -} - -/// Called when a Window receives a `windowWillClose:` event. Loops back to the shared -/// Alchemy app instance, so that our window manager can act appropriately. -extern fn will_close(this: &Object, _: Sel, _: id) { - unsafe { - let app_ptr: usize = *this.get_ivar(APP_PTR); - let window_id: usize = *this.get_ivar(WINDOW_MANAGER_ID); - let app = app_ptr as *mut T; - (*app)._window_will_close(window_id); - }; -} - -/// Injects an `NSObject` delegate subclass, with some callback and pointer ivars for what we -/// need to do. -fn register_window_class() -> *const Class { - static mut DELEGATE_CLASS: *const Class = 0 as *const Class; - static INIT: Once = ONCE_INIT; - - INIT.call_once(|| unsafe { - let superclass = Class::get("NSObject").unwrap(); - let mut decl = ClassDecl::new("alchemyWindowDelegateShim", superclass).unwrap(); - - decl.add_ivar::(APP_PTR); - decl.add_ivar::(WINDOW_MANAGER_ID); - - decl.add_method(sel!(windowWillClose:), will_close:: as extern fn(&Object, _, _)); - - DELEGATE_CLASS = decl.register(); - }); - - unsafe { - DELEGATE_CLASS - } -} diff --git a/website/static/css/layout.css b/css/layout.css similarity index 100% rename from website/static/css/layout.css rename to css/layout.css diff --git a/website/static/css/reset.css b/css/reset.css similarity index 100% rename from website/static/css/reset.css rename to css/reset.css diff --git a/examples/layout/Cargo.toml b/examples/layout/Cargo.toml deleted file mode 100644 index c3cc60e..0000000 --- a/examples/layout/Cargo.toml +++ /dev/null @@ -1,8 +0,0 @@ -[package] -name = "layout" -version = "0.1.0" -authors = ["Ryan McGrath "] -edition = "2018" - -[dependencies] -alchemy = { path = "../../alchemy", version = "0.2.0", features = ["cocoa"] } diff --git a/examples/layout/src/main.rs b/examples/layout/src/main.rs deleted file mode 100644 index 2ea858f..0000000 --- a/examples/layout/src/main.rs +++ /dev/null @@ -1,124 +0,0 @@ -#![recursion_limit="256"] - -/// demo/main.rs -/// -/// Used to sketch out application structure/feel/etc. -/// -/// @author Ryan McGrath -/// @created March 26th, 2019 - -use alchemy::{ - AppDelegate, Component, ComponentKey, Fragment, Error, Props, rsx, RSX, styles, text, - Text, View, Window, WindowDelegate -}; - -pub struct AppState { - window: Window -} - -impl AppDelegate for AppState { - fn did_finish_launching(&mut self) { - self.window.set_title("Layout Test"); - self.window.set_dimensions(100., 100., 600., 600.); - self.window.show(); - } -} - -#[derive(Default)] -struct BannerProps {} - -#[derive(Props)] -struct Banner; - -impl Component for Banner { - fn new(_key: ComponentKey) -> Banner { - Banner {} - } - - fn render(&self, children: Vec) -> Result { - Ok(rsx! { - - - {children} - - }) - } -} - -pub struct WindowState; - -impl WindowDelegate for WindowState { - fn will_close(&mut self) { - println!("Closing!?"); - } - - fn render(&self) -> Result { - let messages = vec!["LOL"]; //, "wut", "BERT"]; - Ok(rsx! { - - "Hello there, my name is Bert" - - {messages.iter().map(|message| rsx! { - {text!("{}", message)} - })} - - - - - - - }) - } -} - -fn main() { - let app = alchemy::shared_app(); - - app.register_styles("default", styles! { - root { background-color: #000; } - - LOL { - background-color: #307ace; - width: 500; - height: 230; - padding-top: 20; - padding-left: 20; - padding-right: 40; - } - - message { width: 500; height: 100; background-color: yellow; color: black; } - text { width: 500; height: 100; background-color: blue; color: white; } - - boxxx { - background-color: rgba(245, 217, 28, .8); - width: 100; - height: 100; - margin-top: 40; - margin-right: 20; - } - - box1 { - background-color: #f51c69; - width: 250; - height: 100; - } - - wut1 { - background-color: black; - width: 50; - height: 230; - } - - innermostBox { - background-color: green; - width: 20; - height: 20; - } - }); - - app.run(AppState { - window: Window::new(WindowState { - - }) - }); -} diff --git a/website/static/favicon.ico b/favicon.ico similarity index 100% rename from website/static/favicon.ico rename to favicon.ico diff --git a/website/static/favicons/apple-touch-icon-114x114.png b/favicons/apple-touch-icon-114x114.png similarity index 100% rename from website/static/favicons/apple-touch-icon-114x114.png rename to favicons/apple-touch-icon-114x114.png diff --git a/website/static/favicons/apple-touch-icon-120x120.png b/favicons/apple-touch-icon-120x120.png similarity index 100% rename from website/static/favicons/apple-touch-icon-120x120.png rename to favicons/apple-touch-icon-120x120.png diff --git a/website/static/favicons/apple-touch-icon-144x144.png b/favicons/apple-touch-icon-144x144.png similarity index 100% rename from website/static/favicons/apple-touch-icon-144x144.png rename to favicons/apple-touch-icon-144x144.png diff --git a/website/static/favicons/apple-touch-icon-152x152.png b/favicons/apple-touch-icon-152x152.png similarity index 100% rename from website/static/favicons/apple-touch-icon-152x152.png rename to favicons/apple-touch-icon-152x152.png diff --git a/website/static/favicons/apple-touch-icon-57x57.png b/favicons/apple-touch-icon-57x57.png similarity index 100% rename from website/static/favicons/apple-touch-icon-57x57.png rename to favicons/apple-touch-icon-57x57.png diff --git a/website/static/favicons/apple-touch-icon-60x60.png b/favicons/apple-touch-icon-60x60.png similarity index 100% rename from website/static/favicons/apple-touch-icon-60x60.png rename to favicons/apple-touch-icon-60x60.png diff --git a/website/static/favicons/apple-touch-icon-72x72.png b/favicons/apple-touch-icon-72x72.png similarity index 100% rename from website/static/favicons/apple-touch-icon-72x72.png rename to favicons/apple-touch-icon-72x72.png diff --git a/website/static/favicons/apple-touch-icon-76x76.png b/favicons/apple-touch-icon-76x76.png similarity index 100% rename from website/static/favicons/apple-touch-icon-76x76.png rename to favicons/apple-touch-icon-76x76.png diff --git a/website/static/favicons/favicon-128.png b/favicons/favicon-128.png similarity index 100% rename from website/static/favicons/favicon-128.png rename to favicons/favicon-128.png diff --git a/website/static/favicons/favicon-16x16.png b/favicons/favicon-16x16.png similarity index 100% rename from website/static/favicons/favicon-16x16.png rename to favicons/favicon-16x16.png diff --git a/website/static/favicons/favicon-196x196.png b/favicons/favicon-196x196.png similarity index 100% rename from website/static/favicons/favicon-196x196.png rename to favicons/favicon-196x196.png diff --git a/website/static/favicons/favicon-32x32.png b/favicons/favicon-32x32.png similarity index 100% rename from website/static/favicons/favicon-32x32.png rename to favicons/favicon-32x32.png diff --git a/website/static/favicons/favicon-96x96.png b/favicons/favicon-96x96.png similarity index 100% rename from website/static/favicons/favicon-96x96.png rename to favicons/favicon-96x96.png diff --git a/website/static/favicons/mstile-144x144.png b/favicons/mstile-144x144.png similarity index 100% rename from website/static/favicons/mstile-144x144.png rename to favicons/mstile-144x144.png diff --git a/website/static/favicons/mstile-150x150.png b/favicons/mstile-150x150.png similarity index 100% rename from website/static/favicons/mstile-150x150.png rename to favicons/mstile-150x150.png diff --git a/website/static/favicons/mstile-310x150.png b/favicons/mstile-310x150.png similarity index 100% rename from website/static/favicons/mstile-310x150.png rename to favicons/mstile-310x150.png diff --git a/website/static/favicons/mstile-310x310.png b/favicons/mstile-310x310.png similarity index 100% rename from website/static/favicons/mstile-310x310.png rename to favicons/mstile-310x310.png diff --git a/website/static/favicons/mstile-70x70.png b/favicons/mstile-70x70.png similarity index 100% rename from website/static/favicons/mstile-70x70.png rename to favicons/mstile-70x70.png diff --git a/website/static/humans.txt b/humans.txt similarity index 100% rename from website/static/humans.txt rename to humans.txt diff --git a/website/static/images/banner.png b/images/banner.png similarity index 100% rename from website/static/images/banner.png rename to images/banner.png diff --git a/index.html b/index.html new file mode 100644 index 0000000..941f9b1 --- /dev/null +++ b/index.html @@ -0,0 +1,169 @@ + + + + + + + Alchemy - A Rust GUI Framework + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

A New Rust GUI Framework

+

Alchemy is a Rust GUI Framework, backed by native widgets on each platform it supports, with an API that's a blend of those found in AppKit, UIKit, and React Native. It supports a JSX-ish syntax (RSX), styling with CSS, the safety of building in Rust, and a familiar API for many developers who build UI on a daily basis. The goal is to provide an API that feels at home in Rust, while striving to provide a visual appearance that's easy to scan and parse. It does not, and will never, require nightly. It's still early stages, but feedback and contributions are welcome.

+

What's It Look Like?

+
+use alchemy::{
+    AppDelegate, Error, RSX, rsx, 
+    styles, View, Window, WindowDelegate
+};
+
+struct AppState {
+    window: Window
+}
+
+impl AppDelegate for AppState {
+    fn did_finish_launching(&mut self) {
+        self.window.set_title("LOL");
+        self.window.set_dimensions(10., 10., 600., 600.);
+        self.window.show();
+    }
+}
+
+struct WindowState;
+
+impl WindowDelegate for WindowState {
+    fn render(&self) -> Result<RSX, Error> {
+        Ok(rsx! {
+            <View styles=["box"]>
+                <View styles=["innerbox"] />
+            </View>
+        })
+    }
+}
+
+fn main() {
+    let app = alchemy::shared_app();
+
+    app.register_styles("default", styles! {
+        box {
+            background-color: #307ace;
+            width: 300;
+            height: 300;
+            margin-top: 10;
+            padding-top: 10;
+        }
+
+        innerbox {
+            background-color: #003366;
+            width: 200;
+            height: 200;
+        }
+    });
+
+    app.run(AppState {
+        window: Window::new(WindowState {
+        
+        })
+    });
+}
+
+

Get Started

+GitHub +Docs +
+ + + +
Created by Ryan McGrath. A more complete site for this project will come later. :)
+ + + + + diff --git a/lifecycle/Cargo.toml b/lifecycle/Cargo.toml deleted file mode 100644 index a4694db..0000000 --- a/lifecycle/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "alchemy-lifecycle" -description = "A crate containing traits used in Alchemy, the Rust cross-platform GUI framework." -version = "0.1.0" -edition = "2018" -authors = ["Ryan McGrath "] -license = "MPL-2.0+" -repository = "https://github.com/ryanmcgrath/alchemy" -categories = ["gui", "rendering::engine", "multimedia"] -keywords = ["gui", "css", "styles", "layout", "ui"] - -[features] -cocoa = ["objc", "objc_id"] - -[dependencies] -alchemy-styles = { version = "0.1", path = "../styles" } -objc = { version = "0.2.6", optional = true } -objc_id = { version = "0.1.1", optional = true } -serde_json = "1" diff --git a/lifecycle/README.md b/lifecycle/README.md deleted file mode 100644 index 2cef573..0000000 --- a/lifecycle/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Alchemy-Lifecycle -This crate holds traits used in Alchemy, such as `AppDelegate`, `WindowDelegate`, and `Component`. It also holds the RSX node/tag system, since it's standalone and `Component` ends up requiring it anyway. - -## Questions, Comments? -Open an issue, or hit me up on [Twitter](https://twitter.com/ryanmcgrath/). diff --git a/lifecycle/src/error.rs b/lifecycle/src/error.rs deleted file mode 100644 index f9c1d35..0000000 --- a/lifecycle/src/error.rs +++ /dev/null @@ -1,7 +0,0 @@ -//! Implements an Error type. Currently we just alias this to -//! Box, because I'm not sure how this should really look. Consider -//! it an implementation detail hook that could change down the road. - -/// A generic Error type that we use. It currently just aliases to `Box`, -/// but could change in the future. -pub type Error = Box; diff --git a/lifecycle/src/lib.rs b/lifecycle/src/lib.rs deleted file mode 100644 index 17b44a5..0000000 --- a/lifecycle/src/lib.rs +++ /dev/null @@ -1,38 +0,0 @@ -//! Lifecycle aspects for Alchemy. -//! -//! What's a lifecycle? Well, it includes things like delegates (App+Window), -//! where they act as hooks for the system to inform you of events. It includes -//! things like `Component`s, which instruct your views how to exist. -//! -//! It also includes the `RSX` enum, which is what `render()` methods generally -//! return. It's common enough to multiple crates, and is intricately linked to the -//! `Component` lifecycle, so it'll live here. -//! -//! This crate also includes the diffing and patching system for the widget tree - -//! it needs to live with the `Component` lifecycle to enable state updating. - -pub use std::sync::Arc; - -use alchemy_styles::lazy_static; - -pub mod error; -pub mod rsx; -pub mod traits; - -mod reconciler; -use reconciler::RenderEngine; -pub use reconciler::key::ComponentKey; - -lazy_static! { - pub static ref RENDER_ENGINE: RenderEngine = RenderEngine::new(); -} - -#[macro_export] -macro_rules! text { - ($t:expr) => { - alchemy::RSX::text($t) - }; - ($format:tt, $($tail:expr),*) => { - alchemy::RSX::text(format!($format, $($tail),*)) - }; -} diff --git a/lifecycle/src/reconciler/error.rs b/lifecycle/src/reconciler/error.rs deleted file mode 100644 index c3cb923..0000000 --- a/lifecycle/src/reconciler/error.rs +++ /dev/null @@ -1,32 +0,0 @@ -//! Implements a set of Error types that could happen during a diff/patch/reflow -//! run. These are mostly internal to the rendering engine itself, but could potentially -//! show up elsewhere. - -use crate::reconciler::key::ComponentKey; - -#[derive(Debug)] -pub enum RenderEngineError { - InvalidKey, - InvalidRootComponent, - InvalidComponentKey(ComponentKey) -} - -impl std::fmt::Display for RenderEngineError { - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - match *self { - RenderEngineError::InvalidComponentKey(ref node) => write!(f, "Invalid component key {:?}", node), - RenderEngineError::InvalidRootComponent => write!(f, "Invalid component type! Root nodes must be a natively backed node."), - RenderEngineError::InvalidKey => write!(f, "An invalid key was passed to the render engine.") - } - } -} - -impl std::error::Error for RenderEngineError { - fn description(&self) -> &str { - match *self { - RenderEngineError::InvalidComponentKey(_) => "The key is not part of the component storage instance", - RenderEngineError::InvalidRootComponent => "The root component must be a natively backed Component instance.", - RenderEngineError::InvalidKey => "An invalid key was passed to the render engine." - } - } -} diff --git a/lifecycle/src/reconciler/generic_root_view_stub.rs b/lifecycle/src/reconciler/generic_root_view_stub.rs deleted file mode 100644 index 4658c5f..0000000 --- a/lifecycle/src/reconciler/generic_root_view_stub.rs +++ /dev/null @@ -1,31 +0,0 @@ -//! This is a generic view used for avoiding a circular dependency issue. -//! You should never need to touch this. - -use std::any::Any; - -use crate::ComponentKey; -use crate::traits::{Component, Props}; - -#[derive(Default)] -pub struct GenericRootViewProps; - -/// This is never actually created, and is here primarily to avoid a circular -/// depedency issue (we can't import the View from alchemy's core crate, since the core crate -/// depends on this crate). -pub struct GenericRootView; - -impl GenericRootView { - fn get_default_props() -> GenericRootViewProps { - GenericRootViewProps {} - } -} - -impl Props for GenericRootView { - fn set_props(&mut self, _: &mut Any) {} -} - -impl Component for GenericRootView { - fn new(_: ComponentKey) -> GenericRootView { - GenericRootView {} - } -} diff --git a/lifecycle/src/reconciler/instance.rs b/lifecycle/src/reconciler/instance.rs deleted file mode 100644 index eca423c..0000000 --- a/lifecycle/src/reconciler/instance.rs +++ /dev/null @@ -1,15 +0,0 @@ -//! Internal struct used for tracking component instances and their -//! associated metadata (layout, appearance, etc). - -use alchemy_styles::{Appearance, StylesList}; -use alchemy_styles::stretch::node::{Node as LayoutNode}; - -use crate::traits::Component; - -pub(crate) struct Instance { - pub(crate) tag: &'static str, - pub(crate) style_keys: StylesList, - pub(crate) component: Box, - pub(crate) appearance: Appearance, - pub(crate) layout: Option -} diff --git a/lifecycle/src/reconciler/key.rs b/lifecycle/src/reconciler/key.rs deleted file mode 100644 index d348ec8..0000000 --- a/lifecycle/src/reconciler/key.rs +++ /dev/null @@ -1,51 +0,0 @@ -//! Implements an auto-incrementing ID for Component instances. - -use std::sync::Mutex; - -use alchemy_styles::lazy_static; - -lazy_static! { - /// Global stretch instance id allocator. - pub(crate) static ref INSTANCE_ALLOCATOR: Mutex = Mutex::new(Allocator::new()); -} - -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] -pub(crate) struct Id { - id: u32 -} - -pub(crate) struct Allocator { - new_id: u32 -} - -impl Allocator { - pub fn new() -> Self { - Allocator { new_id: 1 } - } - - pub fn allocate(&mut self) -> Id { - let id = self.new_id; - self.new_id += 1; - Id { id: id } - } -} - -/// Used as a key for Component storage. Component instances receive these -/// in their constructor methods, and should retain them as a tool to update their -/// state. -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] -pub struct ComponentKey { - pub(crate) instance: Id, - pub(crate) local: Id, -} - -impl ComponentKey { - /// A placeholder value, used purely for ensuring the diffing algorithm remains - /// readable by reducing some unwrapping hell. - pub fn placeholder() -> ComponentKey { - ComponentKey { - instance: Id { id: 0 }, - local: Id { id: 0 } - } - } -} diff --git a/lifecycle/src/reconciler/mod.rs b/lifecycle/src/reconciler/mod.rs deleted file mode 100644 index 093b9dc..0000000 --- a/lifecycle/src/reconciler/mod.rs +++ /dev/null @@ -1,382 +0,0 @@ -//! Implements tree diffing, updating, and so on. Unlike a lot of the VDom implementations -//! you find littered around the web, this is a bit more ECS-ish, and expects Components to retain -//! their `ComponentKey` passed in their constructor if they want to update. Doing this -//! enables us to avoid re-scanning or diffing an entire tree. - -use std::sync::Mutex; -use std::error::Error; - -use alchemy_styles::THEME_ENGINE; -use alchemy_styles::styles::{Appearance, Dimension, Number, Size, Style}; -use alchemy_styles::stretch::node::{Node as LayoutNode, Stretch as LayoutStore}; - -use crate::rsx::{RSX, VirtualNode}; -use crate::traits::Component; - -pub mod key; -use key::ComponentKey; - -pub mod storage; -use storage::ComponentStore; - -pub mod error; -use error::RenderEngineError; - -mod instance; -use instance::Instance; - -mod generic_root_view_stub; -use generic_root_view_stub::{GenericRootView, GenericRootViewProps}; - -struct GenericRootProps; - -pub struct RenderEngine { - queued_state_updates: Mutex>, - components: Mutex, - layouts: Mutex -} - -impl RenderEngine { - pub(crate) fn new() -> RenderEngine { - RenderEngine { - queued_state_updates: Mutex::new(vec![]), - components: Mutex::new(ComponentStore::new()), - layouts: Mutex::new(LayoutStore::new()) - } - } - - // pub fn queue_update_for(&self, component_ptr: usize, updater: Box Component + Send + Sync + 'static>) { - // } - - /// `Window`'s (or anything "root" in nature) need to register with the - /// reconciler for things like setState to work properly. When they do so, - /// they get a key back. When they want to instruct the global `RenderEngine` - /// to re-render or update their tree, they pass that key and whatever the new tree - /// should be. - pub fn register_root_component(&self, component: C) -> Result> { - // Conceivably, this doesn't NEED to be a thing... but for now it is. If you've stumbled - // upon here, wayward traveler, in need of a non-native-root-component, please open an - // issue to discuss. :) - if !component.has_native_backing_node() { - return Err(Box::new(RenderEngineError::InvalidRootComponent {})); - } - - let mut component_store = self.components.lock().unwrap(); - let mut layouts_store = self.layouts.lock().unwrap(); - let component_key = component_store.new_key(); - component_store.insert(component_key, Instance { - tag: "root", - style_keys: "root".into(), - component: Box::new(component), - appearance: Appearance::default(), - layout: Some(layouts_store.new_node(Style::default(), vec![])?) - })?; - - Ok(component_key) - } - - /// Rendering the root node is a bit different than rendering or updating other nodes, as we - /// never want to unmount it, and the results come from a non-`Component` entity (e.g, a - /// `Window`). Thus, for this one, we do some manual mucking with what we know is the - /// root view (a `Window` or such root component would call this with it's registered - /// `ComponentKey`), and then recurse based on the children. - pub fn diff_and_render_root( - &self, - key: ComponentKey, - dimensions: (f64, f64), - child: RSX - ) -> Result<(), Box> { - let mut component_store = self.components.lock().unwrap(); - let mut layout_store = self.layouts.lock().unwrap(); - - let new_root_node = RSX::node("root", "root".into(), |_| { - Box::new(GenericRootView {}) - }, Box::new(GenericRootViewProps {}), match child { - RSX::VirtualNode(node) => { - if node.tag == "Fragment" { - node.children - } else { - vec![RSX::VirtualNode(node)] - } - }, - - _ => vec![] - }); - - recursively_diff_tree(key, new_root_node, &mut component_store, &mut layout_store)?; - - let layout_node = { - let mut root_instance = component_store.get_mut(key)?; - let layout = root_instance.layout.unwrap(); - let mut style = Style::default(); - THEME_ENGINE.configure_styles_for_keys(&root_instance.style_keys, &mut style, &mut root_instance.appearance); - style.size = Size { - width: Dimension::Points(dimensions.0 as f32), - height: Dimension::Points(dimensions.1 as f32) - }; - layout_store.set_style(layout, style); - layout - }; - - layout_store.compute_layout(layout_node, Size { - width: Number::Defined(dimensions.0 as f32), - height: Number::Defined(dimensions.1 as f32) - })?; - - walk_and_apply_styles(key, &mut component_store, &mut layout_store)?; - - Ok(()) - } -} - -/// Given two trees, will diff them to see if we need to replace or update. Depending on the -/// result, we'll either recurse down a level, or tear down and build up a new tree. The final -/// parameter on this method, `is_root_entity_view`, should only be passed for `Window` or other -/// such instances, as it instructs us to skip the first level since these ones act different. -fn recursively_diff_tree( - key: ComponentKey, - new_tree: RSX, - component_store: &mut ComponentStore, - layout_store: &mut LayoutStore -) -> Result<(), Box> { - // First we need to determine if this node is being replaced or updated. A replace happens if - // two nodes are different types - in this case, we check their tag values. This is also a case - // where, for instance, if the RSX tag is `::None` or `::VirtualText`, we'll treat it as - // replacing with nothing. - let is_replace = match &new_tree { - RSX::VirtualNode(new_tree) => { - let old_tree = component_store.get(key)?; - old_tree.tag != new_tree.tag - }, - - // The algorithm will know below not to recurse if we're trying to diff text or empty - // values. We return false here to avoid entering the `is_replace` phase; `Component` - // instances (like ) handle taking the child VirtualText instances and working with - // them to pass to a native widget. - _ => false - }; - - if is_replace { - unmount_component_tree(key, component_store, layout_store)?; - //mount_component_tree( - return Ok(()); - } - - // At this point, we know it's an update pass. Now we need to do a few things: - // - // - Diff our `props` and figure out what actions we can take or shortcut. - // - Let the `Component` instance determine what it should render. - // - Recurse into the child trees if necessary. - let mut old_children = component_store.children(key)?; - old_children.reverse(); - - if let RSX::VirtualNode(mut child) = new_tree { - for new_child_tree in child.children { - match old_children.pop() { - // If there's a key in the old children for this position, it's - // something we need to update, so let's recurse right back into it. - Some(old_child_key) => { - recursively_diff_tree( - old_child_key, - new_child_tree, - component_store, - layout_store - )?; - }, - - // If there's no matching old key in this position, then we've got a - // new component instance to mount. This part now diverts into the Mount - // phase. - None => { - if let RSX::VirtualNode(tr33amimustfeelohlol) = new_child_tree { - let new_child_key = mount_component_tree( - tr33amimustfeelohlol, - component_store, - layout_store - )?; - - component_store.add_child(key, new_child_key)?; - link_layout_nodess(key, new_child_key, component_store, layout_store)?; - } - } - } - } - } - - // Trim the fat. If we still have child nodes after diffing in the new child trees, - // then they're ones that simply need to be unmounted and dropped. - if old_children.len() > 0 { - for child in old_children { - unmount_component_tree(child, component_store, layout_store)?; - } - } - - Ok(()) -} - -/// Given a new `RSX` tree, a `ComponentStore`, and a `LayoutStore`, will recursively construct the -/// tree, emitting required lifecycle events and persisting values. This happens in an inward-out -/// fashion, which helps avoid unnecessary reflow in environments where it can get tricky. -/// -/// This method returns a Result, the `Ok` variant containing a tuple of Vecs. These are the child -/// Component instances and Layout instances that need to be set in the stores. -fn mount_component_tree( - tree: VirtualNode, - component_store: &mut ComponentStore, - layout_store: &mut LayoutStore -) -> Result> { - let key = component_store.new_key(); - let component = (tree.create_component_fn)(key); - let is_native_backed = component.has_native_backing_node(); - - // let state = get_derived_state_from_props() - let mut instance = Instance { - tag: tree.tag, - style_keys: tree.styles, - component: component, - appearance: Appearance::default(), - layout: None - }; - - if is_native_backed { - let mut style = Style::default(); - THEME_ENGINE.configure_styles_for_keys(&instance.style_keys, &mut style, &mut instance.appearance); - instance.layout = Some(layout_store.new_node(style, vec![])?); - } - - let rendered = instance.component.render(tree.children); - // instance.get_snapshot_before_update() - component_store.insert(key, instance)?; - - match rendered { - Ok(child) => if let RSX::VirtualNode(child) = child { - // We want to support Components being able to return arbitrary iteratable - // elements, but... well, it's not quite that simple. Thus we'll offer a - // tag similar to what React does, which just hoists the children out of it and - // discards the rest. - if child.tag == "Fragment" { - for child_tree in child.children { - if let RSX::VirtualNode(child_tree) = child_tree { - let child_key = mount_component_tree(child_tree, component_store, layout_store)?; - - component_store.add_child(key, child_key)?; - if is_native_backed { - link_layout_nodess(key, child_key, component_store, layout_store)?; - } - } - } - } else { - let child_key = mount_component_tree(child, component_store, layout_store)?; - - component_store.add_child(key, child_key)?; - if is_native_backed { - link_layout_nodess(key, child_key, component_store, layout_store)?; - } - } - }, - - Err(e) => { - // return an RSX::VirtualNode(ErrorComponentView) or something? - /* instance.get_derived_state_from_error(e) */ - // render error state or something I guess? - /* instance.component_did_catch(e, info) */ - eprintln!("Error rendering: {}", e); - } - } - - let instance_lol = component_store.get_mut(key)?; - instance_lol.component.component_did_mount(); - - Ok(key) -} - -/// Given a `ComponentKey`, a `ComponentStore`, and a `LayoutStore`, will recursively walk the tree found at -/// said key, emitting required lifecycle events and dropping values. This happens in an inward-out -/// fashion, so deepest nodes/components get destroyed first to ensure that the backing widget tree -/// doesn't get some weird dangling issue. -fn unmount_component_tree( - key: ComponentKey, - component_store: &mut ComponentStore, - layout_store: &mut LayoutStore -) -> Result, Box> { - let mut instance = component_store.remove(key)?; - instance.component.component_will_unmount(); - - let mut layout_nodes = vec![]; - - let children = component_store.children(key)?; - for child in children { - match unmount_component_tree(child, component_store, layout_store) { - Ok(mut child_layout_nodes) => { - if let Some(parent_layout_node) = instance.layout { - for node in child_layout_nodes { - layout_store.remove_child(parent_layout_node, node)?; - } - } else { - layout_nodes.append(&mut child_layout_nodes); - } - }, - - Err(e) => { eprintln!("Error unmounting a component tree: {}", e); } - } - } - - // remove node from backing tree - - Ok(layout_nodes) -} - -/// Given a tree, will walk the branches until it finds the next root nodes to connect. -/// While this sounds slow, in practice it rarely has to go far in any direction. This could -/// potentially be done away with some hoisting magic in the `mount()` recursion, but I couldn't -/// find a pattern that didn't feel like some utter magic in Rust. -/// -/// It might be because I'm writing this at 3AM. Feel free to improve it. -fn link_layout_nodess( - parent: ComponentKey, - child: ComponentKey, - components: &mut ComponentStore, - layouts: &mut LayoutStore -) -> Result<(), Box> { - if let (Ok(parent_instance), Ok(child_instance)) = (components.get(parent), components.get(child)) { - if let (Some(parent_layout), Some(child_layout)) = (parent_instance.layout, child_instance.layout) { - layouts.add_child(parent_layout, child_layout)?; - - if let Some(platform_node) = child_instance.component.borrow_native_backing_node() { - parent_instance.component.append_child_node(platform_node); - } - - return Ok(()); - } - } - - let children = components.children(child)?; - for child_key in children { - link_layout_nodess(parent, child_key, components, layouts)?; - } - - Ok(()) -} - -/// Walks the tree and passes necessary Layout and Appearance-based styles to Components so they can -/// update their backing widgets accordingly. This happens after a layout computation, typically. -fn walk_and_apply_styles( - key: ComponentKey, - components: &mut ComponentStore, - layouts: &mut LayoutStore -) -> Result<(), Box> { - let instance = components.get_mut(key)?; - - if let Some(layout_key) = instance.layout { - instance.component.apply_styles( - &instance.appearance, - layouts.layout(layout_key)? - ); - } - - for child in components.children(key)? { - walk_and_apply_styles(child, components, layouts)?; - } - - Ok(()) -} diff --git a/lifecycle/src/reconciler/storage.rs b/lifecycle/src/reconciler/storage.rs deleted file mode 100644 index 63f087b..0000000 --- a/lifecycle/src/reconciler/storage.rs +++ /dev/null @@ -1,166 +0,0 @@ -//! Implements storage for Component instances, in a way that allows us to -//! short-circuit the rendering process so we don't have to re-scan entire -//! tree structures when updating state. - -use std::collections::HashMap; - -pub use alchemy_styles::Appearance; - -use crate::reconciler::error::{RenderEngineError as Error}; -use crate::reconciler::instance::Instance; -use crate::reconciler::key::{Allocator, Id, INSTANCE_ALLOCATOR, ComponentKey}; - -/// This is a clone of a structure you'll also find over in stretch. We do this separately -/// here for two reasons. -/// -/// - First, a Component may have children that don't require styles or layout passes. These nodes -/// should not have `Style` or `Appearance` nodes created, but we do need the correct parent/child -/// relationships in place. -/// - The `Storage` pieces of stretch are realistically an implementation detail that we shouldn't -/// rely on. -struct Storage(HashMap); - -impl Storage { - pub fn new() -> Self { - Storage(HashMap::new()) - } - - pub fn get(&self, key: ComponentKey) -> Result<&T, Error> { - match self.0.get(&key) { - Some(v) => Ok(v), - None => Err(Error::InvalidComponentKey(key)), - } - } - - pub fn get_mut(&mut self, key: ComponentKey) -> Result<&mut T, Error> { - match self.0.get_mut(&key) { - Some(v) => Ok(v), - None => Err(Error::InvalidComponentKey(key)), - } - } - - pub fn remove(&mut self, key: ComponentKey) -> Result { - match self.0.remove(&key) { - Some(v) => Ok(v), - None => Err(Error::InvalidComponentKey(key)) - } - } - - pub fn insert(&mut self, key: ComponentKey, value: T) -> Option { - self.0.insert(key, value) - } -} - -impl std::ops::Index<&ComponentKey> for Storage { - type Output = T; - - fn index(&self, idx: &ComponentKey) -> &T { - &(self.0)[idx] - } -} - -pub(crate) struct ComponentStore { - id: Id, - nodes: Allocator, - components: Storage, - parents: Storage>, - children: Storage> -} - -impl ComponentStore { - pub fn new() -> Self { - ComponentStore { - id: INSTANCE_ALLOCATOR.lock().unwrap().allocate(), - nodes: Allocator::new(), - components: Storage::new(), - parents: Storage::new(), - children: Storage::new() - } - } - - pub fn new_key(&mut self) -> ComponentKey { - let local = self.nodes.allocate(); - ComponentKey { instance: self.id, local } - } - - pub fn insert( - &mut self, - key: ComponentKey, - instance: Instance - ) -> Result<(), Error> { - /*for child in &children { - self.parents.get_mut(*child)?.push(key); - }*/ - - self.components.insert(key, instance); - self.parents.insert(key, Vec::with_capacity(1)); - self.children.insert(key, vec![]); //children); - - Ok(()) - } - - pub fn remove(&mut self, key: ComponentKey) -> Result { - self.parents.remove(key)?; - self.children.remove(key)?; - self.components.remove(key) - } - - pub fn add_child(&mut self, key: ComponentKey, child: ComponentKey) -> Result<(), Error> { - self.parents.get_mut(child)?.push(key); - self.children.get_mut(key)?.push(child); - Ok(()) - } - - pub fn set_children(&mut self, key: ComponentKey, children: Vec) -> Result<(), Error> { - // Remove node as parent from all its current children. - for child in self.children.get(key)? { - self.parents.get_mut(*child)?.retain(|p| *p != key); - } - - *self.children.get_mut(key)? = Vec::with_capacity(children.len()); - - // Build up relation node <-> child - for child in children { - self.parents.get_mut(child)?.push(key); - self.children.get_mut(key)?.push(child); - } - - Ok(()) - } - - pub fn remove_child(&mut self, key: ComponentKey, child: ComponentKey) -> Result { - match self.children(key)?.iter().position(|n| *n == child) { - Some(index) => self.remove_child_at_index(key, index), - None => Err(Error::InvalidComponentKey(child)), - } - } - - pub fn remove_child_at_index(&mut self, key: ComponentKey, index: usize) -> Result { - let child = self.children.get_mut(key)?.remove(index); - self.parents.get_mut(child)?.retain(|p| *p != key); - Ok(child) - } - - pub fn replace_child_at_index(&mut self, key: ComponentKey, index: usize, child: ComponentKey) -> Result { - self.parents.get_mut(child)?.push(key); - let old_child = std::mem::replace(&mut self.children.get_mut(key)?[index], child); - self.parents.get_mut(old_child)?.retain(|p| *p != key); - Ok(old_child) - } - - pub fn children(&self, key: ComponentKey) -> Result, Error> { - self.children.get(key).map(Clone::clone) - } - - pub fn child_count(&self, key: ComponentKey) -> Result { - self.children.get(key).map(Vec::len) - } - - pub fn get(&self, key: ComponentKey) -> Result<&Instance, Error> { - self.components.get(key) - } - - pub fn get_mut(&mut self, key: ComponentKey) -> Result<&mut Instance, Error> { - self.components.get_mut(key) - } -} diff --git a/lifecycle/src/rsx/mod.rs b/lifecycle/src/rsx/mod.rs deleted file mode 100644 index 6278f36..0000000 --- a/lifecycle/src/rsx/mod.rs +++ /dev/null @@ -1,84 +0,0 @@ -//! This module holds pieces pertaining to `RSX` element(s), which are lightweight -//! structs that represent how something should be flushed to the screen. Alchemy -//! uses these to build and alter UI; they're typically returned from `render()` -//! methods. - -use std::any::Any; -use std::fmt::{Debug, Display}; - -use alchemy_styles::StylesList; - -mod virtual_node; -pub use virtual_node::VirtualNode; - -mod virtual_text; -pub use virtual_text::VirtualText; - -use crate::reconciler::key::ComponentKey; -use crate::traits::Component; - -/// An enum representing the types of nodes that the -/// system can work with. `None`, `VirtualText`, or `VirtualNode`. -pub enum RSX { - None, - VirtualText(VirtualText), - VirtualNode(VirtualNode) -} - -impl RSX { - /// Shorthand method for creating a new `RSX::VirtualNode` instance. Rarely should you call - /// this yourself; the `rsx! {}` macro handles this for you. - pub fn node( - tag: &'static str, - styles: StylesList, - create_fn: fn(key: ComponentKey) -> Box, - props: P, - children: Vec - ) -> RSX { - RSX::VirtualNode(VirtualNode { - tag: tag, - create_component_fn: create_fn, - styles: styles, - props: Box::new(props), - children: children - }) - } - - /// Shorthand method for creating a new `RSX::VirtualText` instance. Rarely should you call - /// this yourself; the `rsx! {}` and `text!()` macros handle this for you. - pub fn text(s: String) -> RSX { - RSX::VirtualText(VirtualText(s)) - } -} - -impl IntoIterator for RSX { - type Item = RSX; - type IntoIter = std::vec::IntoIter; - - /// Turn a single `RSX` node into an iterable instance. - fn into_iter(self) -> Self::IntoIter { - vec![self].into_iter() - } -} - -impl Display for RSX { - /// Specialized rendering for displaying RSX nodes. - fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { - match self { - RSX::VirtualNode(node) => { std::fmt::Display::fmt(&node, f) }, - RSX::VirtualText(text) => { std::fmt::Display::fmt(&text, f) } - RSX::None => { Ok(()) } - } - } -} - -impl Debug for RSX { - /// Specialized rendering for debugging RSX nodes. - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - match self { - RSX::VirtualNode(node) => { std::fmt::Debug::fmt(&node, f) }, - RSX::VirtualText(text) => { std::fmt::Debug::fmt(&text, f) } - RSX::None => { Ok(()) } - } - } -} diff --git a/lifecycle/src/rsx/props.rs b/lifecycle/src/rsx/props.rs deleted file mode 100644 index b3a3ea0..0000000 --- a/lifecycle/src/rsx/props.rs +++ /dev/null @@ -1,79 +0,0 @@ -//! Implements a Props struct that mostly acts as expected. For arbitrary primitive values, -//! it shadows a `serde_json::Value`. - -use serde_json::Value; -use std::collections::HashMap; - -use alchemy_styles::StylesList; - -use crate::rsx::RSX; - -/// A value stored inside the `attributes` field on a `Props` instance. -/// It shadows `serde_json::Value`, but also allows for some other value -/// types common to Alchemy. -#[derive(Clone, Debug)] -pub enum AttributeType { - Value(Value), - //RSX(RSX) - //EventHandler(Box) -} - -impl<'a> From<&'a str> for AttributeType { - /// Converts a &str to a storable AttributeType. - fn from(f: &str) -> Self { - AttributeType::Value(Value::String(f.to_string())) - } -} - -/// Emulates props from React, in a sense. Common keys such as `children`, `key` and `styles` -/// are extracted out for fast access, and everything else found gets put into the `attributes` -/// HashMap. -#[derive(Clone, Debug, Default)] -pub struct Props { - pub attributes: HashMap<&'static str, AttributeType>, - //pub children: Vec, - pub key: String, - pub styles: StylesList -} - -impl Props { - /// A helper method for constructing Properties. - pub fn new( - key: String, - styles: StylesList, - attributes: HashMap<&'static str, AttributeType>, - //children: Vec - ) -> Props { - Props { - attributes: attributes, - //children: children, - key: key, - styles: styles - } - } - - /*/// A helper method used for constructing root-level Properties. - pub(crate) fn root(children: Vec) -> Props { - Props { - attributes: HashMap::new(), - children: children, - key: "".into(), - styles: "root".into() - } - } - - /// Returns a Vec of RSX nodes, which are really just cloned pointers for the most part. - pub fn children(&self) -> Vec { - self.children.clone() - }*/ - - /// Returns a Option<&AttributeType> from the `attributes` inner HashMap. - pub fn get(&self, key: &str) -> Option<&AttributeType> { - match key { - "children" => { None }, - "key" => { None }, - "styles" => { None }, - _ => { None } //self.attributes.get(key) } - } - } -} diff --git a/lifecycle/src/rsx/virtual_node.rs b/lifecycle/src/rsx/virtual_node.rs deleted file mode 100644 index aa15630..0000000 --- a/lifecycle/src/rsx/virtual_node.rs +++ /dev/null @@ -1,54 +0,0 @@ -//! Implements the `RSX::VirtualNode` struct, which is a bit of a recursive -//! structure. - -use std::any::Any; -use std::fmt::{Display, Debug}; - -use alchemy_styles::StylesList; - -use crate::reconciler::key::ComponentKey; -use crate::rsx::RSX; -use crate::traits::Component; - -/// A VirtualNode is akin to an `Element` in React terms. Here, we provide a way -/// for lazy `Component` instantiation, properties, children and so on. -pub struct VirtualNode { - /// Used in debugging/printing/etc. - pub tag: &'static str, - - /// Used for determining which CSS styles should be applied to this node. - /// This property is accessed often enough that it's separated out here. - pub styles: StylesList, - - /// `Component` instances are created on-demand, if the reconciler deems it be so. This - /// is a closure that should return an instance of the correct type. - pub create_component_fn: fn(key: ComponentKey) -> Box, - - /// When some RSX is returned, we scoop up the props inside a special block, and then shove - /// them in here as an `Any` object. When you `derive(Props)` on a `Component` struct, it - /// creates a setter that specifically handles downcasting and persisting props for you. - pub props: Box, - - /// Child components for this node. - pub children: Vec -} - -impl Display for VirtualNode { - /// Special formatting for displaying nodes. - fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { - write!(f, "<{}>", self.tag)?; - - for child in &self.children { - write!(f, "{:?}", child)?; - } - - write!(f, "", self.tag) - } -} - -impl Debug for VirtualNode { - /// Special formatting for debugging nodes. - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(f, "VirtualNode({})", self.tag) - } -} diff --git a/lifecycle/src/rsx/virtual_text.rs b/lifecycle/src/rsx/virtual_text.rs deleted file mode 100644 index 1c7814d..0000000 --- a/lifecycle/src/rsx/virtual_text.rs +++ /dev/null @@ -1,29 +0,0 @@ -//! Implements `RSX::VirtualText`, which holds data pertaining to , primarily. - -use std::fmt::{Display, Debug}; - -/// Currently a wrapper for `String`, but could be something else down the road. Frees -/// us from needing to change the public API later. -#[derive(Clone)] -pub struct VirtualText(pub String); - -impl VirtualText { - /// Given a `String`, returns a `VirtualText` node. - pub fn new(s: String) -> VirtualText { - VirtualText(s) - } -} - -impl Display for VirtualText { - /// Formatting for `VirtualText` display. - fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { - write!(f, "{}", self.0) - } -} - -impl Debug for VirtualText { - /// Formatting for `VirtualText` debugging. - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(f, "VirtualText({})", self.0) - } -} diff --git a/lifecycle/src/traits.rs b/lifecycle/src/traits.rs deleted file mode 100644 index 1a1d6d6..0000000 --- a/lifecycle/src/traits.rs +++ /dev/null @@ -1,193 +0,0 @@ -//! Traits that are used in Alchemy. Alchemy implements a React-based Component -//! lifecycle, coupled with a delegate pattern inspired by those found in AppKit/UIKit. - -use std::any::Any; - -use alchemy_styles::styles::{Appearance, Layout}; - -//use crate::RENDER_ENGINE; -use crate::error::Error; -use crate::reconciler::key::ComponentKey; -use crate::rsx::RSX; - -/// A per-platform wrapped Pointer type, used for attaching views/widgets. -#[cfg(feature = "cocoa")] -pub type PlatformSpecificNodeType = objc_id::ShareId; - -/// A per-platform wrapped Pointer type, used for attaching views/widgets. -#[cfg(not(feature = "cocoa"))] -pub type PlatformSpecificNodeType = (); - -/*fn update Box + Send + Sync + 'static>(component: &Component, updater: F) { - let component_ptr = component as *const C as usize; - RENDER_ENGINE.queue_update_for(component_ptr, Box::new(updater)); -}*/ - -/// Each platform tends to have their own startup routine, their own runloop, and so on. -/// Alchemy recognizes this and provides an `AppDelegate` that receives events at a system -/// level and allows the user to operate within the established framework per-system. -pub trait AppDelegate: Send + Sync { - /// Fired when an Application is about to finish launching. - fn will_finish_launching(&mut self) {} - - /// Fired when an Application has finished launching - this is a good place to, say, show your - /// window. - fn did_finish_launching(&mut self) {} - - /// Fired when an Application will become active. - fn will_become_active(&mut self) {} - - /// Fired when an Application became active. - fn did_become_active(&mut self) {} - - /// Fired when an Application will resign active. You can use this to, say, persist resources - /// or state. - fn will_resign_active(&mut self) {} - - /// Fired when an Application has resigned active. - fn did_resign_active(&mut self) {} - - /// Fired when an Application is going to terminate. You can use this to, say, instruct the - /// system to "wait a minute, lemme finish". - fn should_terminate(&self) -> bool { true } - - /// Fired when the Application has determined "no, you're done, stop the world". - fn will_terminate(&mut self) {} - - /// A private trait method that you shouldn't call. This may change or disappear in later - /// releases. Do not rely on this. - fn _window_will_close(&self, _window_id: usize) {} -} - -/// Each platform has their own `Window` API, which Alchemy attempts to pair down to one consistent -/// API. This also acts as the bootstrapping point for a `render` tree. -pub trait WindowDelegate: Send + Sync { - /// Fired when this Window will close. You can use this to clean up or destroy resources, - /// timers, and other things. - fn will_close(&mut self) { } - - /// Called as the first step in the `render` tree. Every Window contains its own content view - /// that is special, called the root. Widget trees are added to it as necessary, bootstrapped - /// from here. - fn render(&self) -> Result { Ok(RSX::None) } -} - -pub trait Props { - fn set_props(&mut self, new_props: &mut Any); -} - -/// The `Component` lifecycle, mostly inspired from React, with a few extra methods for views that -/// need to have a backing native layer. A good breakdown of the React Component lifecycle can be -/// found [in this tweet](https://twitter.com/dan_abramov/status/981712092611989509?lang=en). -/// -/// Alchemy does not currently implement Hooks, and at the moment has no plans to do so (the API -/// doesn't feel comfortable in Rust, in any way I tried). If you think you have an interesting -/// proposal for this, feel free to open an issue! -pub trait Component: Props + Send + Sync { - fn new(key: ComponentKey) -> Self where Self: Sized; - - /// Indicates whether a Component instance carries a native backing node. If you return `true` - /// from this, the reconciler will opt-in to the native backing layer. Returns `false` by - /// default. - fn has_native_backing_node(&self) -> bool { false } - - /// Returns a wrapped-per-platform pointer type that the backing framework tree can use. - fn borrow_native_backing_node(&self) -> Option { None } - - /// If you implement a Native-backed component, you'll need to implement this. Given a - /// `node`, you need to instruct the system how to append it to the tree at your point. - fn append_child_node(&self, _component: PlatformSpecificNodeType) {} - - /// If you implement a Native-backed component, you'll need to implement this. Given a - /// `node`, you need to instruct the system how to replace it in the tree at your point. - fn replace_child_node(&self, _component: PlatformSpecificNodeType) {} - - /// If you implement a Native-backed component, you'll need to implement this. Given a - /// `node`, you need to instruct the system how to remove it from the tree at your point. - fn remove_child_node(&self, _component: PlatformSpecificNodeType) {} - - /// Given a configured 'appearance' and computed `layout`, this method should transform them - /// into appropriate calls to the backing native node. - fn apply_styles(&self, _appearance: &Appearance, _layout: &Layout) {} - - /// Invoked right before calling the render method, both on the initial mount and on subsequent updates. - /// It should return an object to update the state, or null to update nothing. - /// This method exists for rare use cases where the state depends on changes in props over time. - fn get_derived_state_from_props(&self) {} - - /// Invoked right before the most recently rendered output is committed to the backing layer tree. - /// It enables your component to capture some information from the tree (e.g. scroll position) before it's - /// potentially changed. Any value returned by this lifecycle will be passed as a parameter - /// to component_did_update(). - /// - /// This use case is not common, but it may occur in UIs like a chat thread that need to handle scroll - /// position in a special way. A snapshot value (or None) should be returned. - fn get_snapshot_before_update(&self) {} - - /// Invoked immediately after a component is mounted (inserted into the tree). - /// If you need to load data from a remote endpoint, this is a good place to instantiate the network request. - /// This method is also a good place to set up any subscriptions. If you do that, don’t forget to unsubscribe - /// in component_will_unmount(). - fn component_did_mount(&mut self) {} - - /// Invoked immediately after updating occurs. This method is not called for the initial render. - /// This is also a good place to do network requests as long as you compare the current props to previous props - /// (e.g. a network request may not be necessary if the props have not changed). - fn component_did_update(&mut self) {} - - /// Invoked immediately before a component is unmounted and destroyed. Perform any necessary cleanup in this - /// method, such as invalidating timers, canceling network requests, or cleaning up any subscriptions that - /// were created in component_did_mount(). - /// - /// You should not call set state in this method because the component will never be re-rendered. Once a - /// component instance is unmounted, it will never be mounted again. - fn component_will_unmount(&mut self) {} - - /// Invoked after an error has been thrown by a descendant component. Called during the "commit" phase, - /// so side-effects are permitted. It should be used for things like logging errors (e.g, - /// Sentry). - fn component_did_catch(&mut self /* error: */) {} - - /// Use this to let Alchemy know if a component’s output is not affected by the current change in state - /// or props. The default behavior is to re-render on every state change, and in the vast majority of - /// cases you should rely on the default behavior. - /// - /// This is invoked before rendering when new props or state are being received. Defaults to true. This - /// method is not called for the initial render or when force_update() is used. This method only exists - /// as a performance optimization. Do not rely on it to “prevent” a rendering, as this can lead to bugs. - fn should_component_update(&self) -> bool { true } - - /// The only required method for a `Component`. Should return a Result of RSX nodes, or an - /// Error (in very rare cases, such as trying to get a key from a strange HashMap or - /// something). - /// - /// The render() function should be pure, meaning that it does not modify component state, it - /// returns the same result each time it’s invoked, and it does not directly interact with the - /// backing rendering framework. - /// - /// If you need to interact with the native layer, perform your work in component_did_mount() or the other - /// lifecycle methods instead. Keeping `render()` pure makes components easier to think about. - /// - /// This method is not called if should_component_update() returns `false`. - fn render(&self, children: Vec) -> Result { Ok(RSX::None) } - - /// This lifecycle is invoked after an error has been thrown by a descendant component. It receives - /// the error that was thrown as a parameter and should return a value to update state. - /// - /// This is called during the "render" phase, so side-effects are not permitted. - /// For those use cases, use component_did_catch() instead. - fn get_derived_state_from_error(&self, _error: ()) {} - - /// By default, when your component’s state or props change, your component will re-render. - /// If your `render()` method depends on some other data, you can tell Alchemy that the component - /// needs re-rendering by calling `force_update()`. - /// - /// Calling `force_update()` will cause `render()` to be called on the component, skipping - /// `should_component_update()`. This will trigger the normal lifecycle methods for child components, - /// including the `should_component_update()` method of each child. Alchemy will still only update the - /// backing widget tree if the markup changes. - /// - /// Normally, you should try to avoid all uses of `force_update()` and only read from `this.props` - /// and `this.state` in `render()`. - fn force_update(&self) {} -} diff --git a/macros/Cargo.toml b/macros/Cargo.toml deleted file mode 100644 index 43be491..0000000 --- a/macros/Cargo.toml +++ /dev/null @@ -1,30 +0,0 @@ -[package] -name = "alchemy-macros" -description = "A crate containing macros used in Alchemy, the Rust cross-platform GUI framework." -version = "0.1.0" -edition = "2018" -authors = ["Ryan McGrath "] -build = "src/build.rs" -license = "MPL-2.0+" -repository = "https://github.com/ryanmcgrath/alchemy" -categories = ["gui", "rendering::engine", "multimedia"] -keywords = ["gui", "css", "styles", "layout", "ui"] - -[lib] -proc-macro = true - -[badges] -maintenance = { status = "actively-developed" } - -[dependencies] -ansi_term = "0.11.0" -lalrpop-util = "0.16.1" -proc-macro2 = { version = "0.4.24", features = ["nightly"] } -proc-macro-hack = "0.5.2" -quote = "0.6.10" -alchemy-styles = { version = "0.1", path = "../styles", features = ["parser", "tokenize"] } -syn = "0.15" - -[build-dependencies] -lalrpop = "0.16.1" -version_check = "0.1.5" diff --git a/macros/README.md b/macros/README.md deleted file mode 100644 index 6ba7efa..0000000 --- a/macros/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Alchemy-Macros -This crate holds macros for two things, primarily: - -- `rsx! {}`, which transforms `` tags into their proper `RSX` calls. Much of this is forked from the awesome work done by [Bodil Stokke in typed-html](https://github.com/bodil/typed-html). -- `styles! {}`, which transforms CSS style nodes into `Vec`, which the rendering engine uses to theme and style nodes. This relies on the [CSS Parser from Servo](https://github.com/servo/rust-cssparser). Styles do not support cascading; this is a design decision, as inheritance is already a bit of a taboo in Rust, so to do it in styling code feels really odd and involves a mental shift the deeper you go. Opt to apply successive style keys, conditionally if need be, to achieve the same thing with a compositional approach. - -## Questions, Comments? -Open an issue, or hit me up on [Twitter](https://twitter.com/ryanmcgrath/). diff --git a/macros/src/build.rs b/macros/src/build.rs deleted file mode 100644 index 78d2b19..0000000 --- a/macros/src/build.rs +++ /dev/null @@ -1,11 +0,0 @@ -extern crate lalrpop; -extern crate version_check; - -fn main() { - lalrpop::process_root().unwrap(); - - if version_check::is_nightly().unwrap_or(false) { - println!("cargo:rustc-cfg=can_join_spans"); - println!("cargo:rustc-cfg=can_show_location_of_runtime_parse_error"); - } -} diff --git a/macros/src/error.rs b/macros/src/error.rs deleted file mode 100644 index e4a1df5..0000000 --- a/macros/src/error.rs +++ /dev/null @@ -1,116 +0,0 @@ -use ansi_term::Style; -use lalrpop_util::ParseError::*; -use crate::lexer::Token; -use proc_macro2::{Ident, TokenStream}; -use quote::{quote, quote_spanned}; - -pub type ParseError = lalrpop_util::ParseError; - -#[derive(Debug)] -pub enum HtmlParseError { - TagMismatch { open: Ident, close: Ident }, -} - -fn pprint_token(token: &str) -> &str { - match token { - "BraceGroupToken" => "code block", - "LiteralToken" => "literal", - "IdentToken" => "identifier", - a => a, - } -} - -fn pprint_tokens(tokens: &[String]) -> String { - let tokens: Vec<&str> = tokens.iter().map(|s| pprint_token(&s)).collect(); - if tokens.len() > 1 { - let start = tokens[..tokens.len() - 1].join(", "); - let end = &tokens[tokens.len() - 1]; - format!("{} or {}", start, end) - } else { - tokens[0].to_string() - } -} - -fn is_in_node_position(tokens: &[String]) -> bool { - use std::collections::HashSet; - let input: HashSet<&str> = tokens.iter().map(String::as_str).collect(); - let output: HashSet<&str> = ["\"<\"", "BraceGroupToken", "LiteralToken"] - .iter() - .cloned() - .collect(); - input == output -} - -pub fn parse_error(input: &[Token], error: &ParseError) -> TokenStream { - match error { - InvalidToken { location } => { - let span = input[*location].span(); - quote_spanned! {span=> - compile_error! { "invalid token" } - } - } - UnrecognizedToken { - token: None, - expected, - } => { - let msg = format!( - "unexpected end of macro; missing {}", - pprint_tokens(&expected) - ); - quote! { - compile_error! { #msg } - } - } - UnrecognizedToken { - token: Some((_, token, _)), - expected, - } => { - let span = token.span(); - let error_msg = format!("expected {}", pprint_tokens(&expected)); - let error = quote_spanned! {span=> - compile_error! { #error_msg } - }; - let help = if is_in_node_position(expected) && token.is_ident() { - // special case: you probably meant to quote that text - let help_msg = format!( - "text nodes need to be quoted, eg. {}", - Style::new().bold().paint("

\"Hello Joe!\"

") - ); - Some(quote_spanned! {span=> - compile_error! { #help_msg } - }) - } else { - None - }; - quote! {{ - #error - #help - }} - } - ExtraToken { - token: (_, token, _), - } => { - let span = token.span(); - quote_spanned! {span=> - compile_error! { "superfluous token" } - } - } - User { - error: HtmlParseError::TagMismatch { open, close }, - } => { - let close_span = close.span(); - let close_msg = format!("expected closing tag '', found ''", open, close); - let close_error = quote_spanned! {close_span=> - compile_error! { #close_msg } - }; - let open_span = open.span(); - let open_error = quote_spanned! {open_span=> - compile_error! { "unclosed tag" } - }; - quote! {{ - #close_error - #open_error - }} - } - } -} diff --git a/macros/src/grammar.lalrpop b/macros/src/grammar.lalrpop deleted file mode 100644 index a8f0a2b..0000000 --- a/macros/src/grammar.lalrpop +++ /dev/null @@ -1,303 +0,0 @@ -use crate::lexer::{self, Token, to_stream}; -use crate::error::HtmlParseError; -use crate::rsx::{Node, Element}; -//use crate::declare::Declare; -use crate::map::StringyMap; -use proc_macro2::{Delimiter, Ident, Literal, Group, TokenTree}; -use lalrpop_util::ParseError; -use crate::span; - -grammar; - -/// Match a B separated list of zero or more A, return a list of A. -Separated: Vec = { - B)*> => match e { - None => v, - Some(e) => { - let mut v = v; - v.push(e); - v - } - } -} - -/// Match a B separated list of one or more A, return a list of tokens, including the Bs. -/// Both A and B must resolve to a Token. -SeparatedInc: Vec = { - => { - let mut out = Vec::new(); - for (a, b) in v { - out.push(a); - out.push(b); - } - out.push(e); - out - } -} - -Ident: Ident = IdentToken => { - match <> { - Token::Ident(ident) => ident, - _ => unreachable!() - } -}; - -Literal: Literal = LiteralToken => { - match <> { - Token::Literal(literal) => literal, - _ => unreachable!() - } -}; - -GroupToken = { - BraceGroupToken, - BracketGroupToken, - ParenGroupToken, -}; - -/// A kebab case HTML ident, converted to a snake case ident. -HtmlIdent: Ident = { - "-")*> => { - let mut init = init; - init.push(last); - let (span, name) = init.into_iter().fold((None, String::new()), |(span, name), token| { - ( - match span { - None => Some(token.span().unstable()), - Some(span) => { - #[cfg(can_join_spans)] - { - span.join(token.span().unstable()) - } - #[cfg(not(can_join_spans))] - { - Some(span) - } - } - }, - if name.is_empty() { - name + &token.to_string() - } else { - name + "_" + &token.to_string() - } - ) - }); - Ident::new(&name, span::from_unstable(span.unwrap())) - } -}; - - - -// The HTML macro - -/// An approximation of a Rust expression. -BareExpression: Token = "&"? (IdentToken ":" ":")* SeparatedInc ParenGroupToken? => { - let (reference, left, right, args) = (<>); - let mut out = Vec::new(); - if let Some(reference) = reference { - out.push(reference); - } - for (ident, c1, c2) in left { - out.push(ident); - out.push(c1); - out.push(c2); - } - out.extend(right); - if let Some(args) = args { - out.push(args); - } - Group::new(Delimiter::Brace, to_stream(out)).into() -}; - -AttrValue: Token = { - LiteralToken, - GroupToken, - BareExpression, -}; - -Attr: (Ident, Token) = "=" => (name, value); - -Attrs: StringyMap = Attr* => <>.into(); - -OpeningTag: (Ident, StringyMap) = "<" ">"; - -ClosingTag: Ident = "<" "/" ">"; - -SingleTag: Element = "<" "/" ">" => { - Element { - name, - attributes, - children: Vec::new(), - } -}; - -ParentTag: Element = =>? { - let (name, attributes) = opening; - let closing_name = closing.to_string(); - if closing_name == name.to_string() { - Ok(Element { - name, - attributes, - children, - }) - } else { - Err(ParseError::User { error: HtmlParseError::TagMismatch { - open: name.into(), - close: closing.into(), - }}) - } -}; - -Element = { - SingleTag, - ParentTag, -}; - -TextNode = Literal; - -CodeBlock: Group = BraceGroupToken => match <> { - Token::Group(_, group) => group, - _ => unreachable!() -}; - -Node: Node = { - Element => Node::Element(<>), - TextNode => Node::Text(<>), - CodeBlock => Node::Block(<>), -}; - -pub NodeWithType: (Node, Option>) = { - Node => (<>, None), - ":" => { - let (node, spec) = (<>); - (node, Some(spec)) - }, -}; - - -// The declare macro - -TypePath: Vec = { - IdentToken => vec![<>], - TypePath ":" ":" IdentToken => { - let (mut path, c1, c2, last) = (<>); - path.push(c1); - path.push(c2); - path.push(last); - path - } -}; - -Reference: Vec = "&" ("'" IdentToken)? => { - let (amp, lifetime) = (<>); - let mut out = vec![amp]; - if let Some((tick, ident)) = lifetime { - out.push(tick); - out.push(ident); - } - out -}; - -TypeArgs: Vec = { - TypeSpec, - TypeArgs "," TypeSpec => { - let (mut args, comma, last) = (<>); - args.push(comma); - args.extend(last); - args - } -}; - -TypeArgList: Vec = "<" TypeArgs ">" => { - let (left, mut args, right) = (<>); - args.insert(0, left); - args.push(right); - args -}; - -FnReturnType: Vec = "-" ">" TypeSpec => { - let (dash, right, spec) = (<>); - let mut out = vec![dash, right]; - out.extend(spec); - out -}; - -FnArgList: Vec = ParenGroupToken FnReturnType? => { - let (args, rt) = (<>); - let mut out = vec![args]; - if let Some(rt) = rt { - out.extend(rt); - } - out -}; - -TypeArgSpec = { - TypeArgList, - FnArgList, -}; - -TypeSpec: Vec = Reference? TypePath TypeArgSpec? => { - let (reference, path, args) = (<>); - let mut out = Vec::new(); - if let Some(reference) = reference { - out.extend(reference); - } - out.extend(path); - if let Some(args) = args { - out.extend(args); - } - out -}; - -TypeDecl: (Ident, Vec) = ":" ; - -TypeDecls: Vec<(Ident, Vec)> = { - TypeDecl => vec![<>], - "," => { - let mut decls = decls; - decls.push(decl); - decls - }, -}; - -Attributes = "{" ","? "}"; - -TypePathList = "[" > "]"; - -IdentList = "[" > "]"; - -Groups = "in" ; - -Children: (Option>) = "with" => { - opt -}; - -extern { - type Location = usize; - type Error = HtmlParseError; - - enum lexer::Token { - "<" => Token::Punct('<', _), - ">" => Token::Punct('>', _), - "/" => Token::Punct('/', _), - "=" => Token::Punct('=', _), - "-" => Token::Punct('-', _), - ":" => Token::Punct(':', _), - "." => Token::Punct('.', _), - "," => Token::Punct(',', _), - "&" => Token::Punct('&', _), - "'" => Token::Punct('\'', _), - ";" => Token::Punct(';', _), - "{" => Token::GroupOpen(Delimiter::Brace, _), - "}" => Token::GroupClose(Delimiter::Brace, _), - "[" => Token::GroupOpen(Delimiter::Bracket, _), - "]" => Token::GroupClose(Delimiter::Bracket, _), - "in" => Token::Keyword(lexer::Keyword::In, _), - "with" => Token::Keyword(lexer::Keyword::With, _), - IdentToken => Token::Ident(_), - LiteralToken => Token::Literal(_), - ParenGroupToken => Token::Group(Delimiter::Parenthesis, _), - BraceGroupToken => Token::Group(Delimiter::Brace, _), - BracketGroupToken => Token::Group(Delimiter::Bracket, _), - } -} diff --git a/macros/src/ident.rs b/macros/src/ident.rs deleted file mode 100644 index db92caa..0000000 --- a/macros/src/ident.rs +++ /dev/null @@ -1,20 +0,0 @@ -//! Utility functions, originally written by Bodil Stokke -//! over in [typed-html](https://github.com/bodil/typed-html). - -use proc_macro2::{Ident, Span, TokenStream, TokenTree}; - -use std::str::FromStr; - -pub fn new_raw(string: &str, span: Span) -> Ident { - // Validate that it is an ident. - let _ = Ident::new(string, span); - - let s = format!("r#{}", string); - let tts = TokenStream::from_str(&s).unwrap(); - let mut ident = match tts.into_iter().next().unwrap() { - TokenTree::Ident(ident) => ident, - _ => unreachable!(), - }; - ident.set_span(span); - ident -} diff --git a/macros/src/lexer.rs b/macros/src/lexer.rs deleted file mode 100644 index 7838597..0000000 --- a/macros/src/lexer.rs +++ /dev/null @@ -1,142 +0,0 @@ -//! Implements the Lexer used for parsing RSX, originally -//! written by Bodil Stokke over in -//! [typed-html](https://github.com/bodil/typed-html). - -use crate::error::HtmlParseError; -use proc_macro2::{Delimiter, Group, Ident, Literal, Punct, Span, TokenStream, TokenTree}; - -use std::iter::FromIterator; - -pub type Spanned = Result<(Loc, Tok, Loc), Error>; - -#[derive(Clone, Debug)] -pub enum Token { - Ident(Ident), - Literal(Literal), - Punct(char, Punct), - Group(Delimiter, Group), - GroupOpen(Delimiter, Span), - GroupClose(Delimiter, Span), - Keyword(Keyword, Ident), -} - -impl Token { - pub fn span(&self) -> Span { - match self { - Token::Ident(ident) => ident.span(), - Token::Literal(literal) => literal.span(), - Token::Punct(_, punct) => punct.span(), - Token::Group(_, group) => group.span(), - Token::GroupOpen(_, span) => *span, - Token::GroupClose(_, span) => *span, - Token::Keyword(_, ident) => ident.span(), - } - } - - pub fn is_ident(&self) -> bool { - match self { - Token::Ident(_) => true, - _ => false, - } - } -} - -impl From for TokenTree { - fn from(token: Token) -> Self { - match token { - Token::Ident(ident) => TokenTree::Ident(ident), - Token::Literal(literal) => TokenTree::Literal(literal), - Token::Punct(_, punct) => TokenTree::Punct(punct), - Token::Group(_, group) => TokenTree::Group(group), - Token::GroupOpen(_, _) => panic!("Can't convert a GroupOpen token to a TokenTree"), - Token::GroupClose(_, _) => panic!("Can't convert a GroupClose token to a TokenTree"), - Token::Keyword(_, ident) => TokenTree::Ident(ident), - } - } -} - -impl From for TokenStream { - fn from(token: Token) -> Self { - TokenStream::from_iter(vec![TokenTree::from(token)]) - } -} - -impl From for Token { - fn from(ident: Ident) -> Self { - Token::Ident(ident) - } -} - -impl From for Token { - fn from(literal: Literal) -> Self { - Token::Literal(literal) - } -} - -impl From for Token { - fn from(punct: Punct) -> Self { - Token::Punct(punct.as_char(), punct) - } -} - -impl From for Token { - fn from(group: Group) -> Self { - Token::Group(group.delimiter(), group) - } -} - -#[derive(Debug, Clone)] -pub enum Keyword { - In, - With, -} - -pub fn to_stream>(tokens: I) -> TokenStream { - let mut stream = TokenStream::new(); - stream.extend(tokens.into_iter().map(TokenTree::from)); - stream -} - -pub fn unroll_stream(stream: TokenStream, deep: bool) -> Vec { - let mut vec = Vec::new(); - for tt in stream { - match tt { - TokenTree::Ident(ident) => vec.push(ident.into()), - TokenTree::Literal(literal) => vec.push(literal.into()), - TokenTree::Punct(punct) => vec.push(punct.into()), - TokenTree::Group(ref group) if deep && group.delimiter() != Delimiter::Parenthesis => { - vec.push(Token::GroupOpen(group.delimiter(), group.span())); - let sub = unroll_stream(group.stream(), deep); - vec.extend(sub); - vec.push(Token::GroupClose(group.delimiter(), group.span())); - } - TokenTree::Group(group) => vec.push(group.into()), - } - } - vec -} - -pub struct Lexer<'a> { - stream: &'a [Token], - pos: usize, -} - -impl<'a> Lexer<'a> { - pub fn new(stream: &'a [Token]) -> Self { - Lexer { stream, pos: 0 } - } -} - -impl<'a> Iterator for Lexer<'a> { - type Item = Spanned; - - fn next(&mut self) -> Option { - match self.stream.get(self.pos) { - None => None, - Some(token) => { - self.pos += 1; - Some(Ok((self.pos - 1, token.clone(), self.pos))) - } - } - } -} diff --git a/macros/src/lib.rs b/macros/src/lib.rs deleted file mode 100644 index 60e31e0..0000000 --- a/macros/src/lib.rs +++ /dev/null @@ -1,107 +0,0 @@ -#![recursion_limit = "128"] -#![cfg_attr(can_show_location_of_runtime_parse_error, feature(proc_macro_span))] - -//! Implements macros used in Alchemy. -//! -//! - `rsx! {}`, which turns RSX tags into `RSX` node trees. -//! - `styles! {}`, which turns CSS stylesheet strings into `Vec`. -//! -//! In general, you should prefer using these to constructing the above values manually. -//! -//! Much of the `rsx! {}` support is achieved by forking code riginally written by Bodil Stokke -//! over in [typed-html](https://github.com/bodil/typed-html). - -extern crate proc_macro; - -mod error; -mod rsx; -mod ident; -mod lexer; -mod map; -mod parser; -mod span; - -use proc_macro::TokenStream; -use proc_macro2::{Ident, TokenStream as TokenStream2, Literal, Span}; -use proc_macro_hack::proc_macro_hack; -use quote::quote; -use syn::{DeriveInput, parse_macro_input}; - -use alchemy_styles::cssparser::{Parser, ParserInput, RuleListParser}; -use alchemy_styles::styles_parser::{Rule, RuleParser}; - -/// Implements the `rsx! {}` macro, which turns RSX tags into `RSX` node trees. -#[proc_macro_hack] -pub fn rsx(input: TokenStream) -> TokenStream { - let stream = lexer::unroll_stream(input.into(), false); - let result = rsx::expand_rsx(&stream); - TokenStream::from(match result { - Err(err) => error::parse_error(&stream, &err), - Ok((node, ty)) => match node.into_token_stream(&ty) { - Err(err) => err, - Ok(success) => success, - }, - }) -} - -/// Implements the `styles! {}` macro, which turns CSS stylesheet strings into `Vec`. -#[proc_macro_hack] -pub fn styles(input: TokenStream) -> TokenStream { - let s = input.to_string().replace(" ", ""); - let mut input = ParserInput::new(&s); - let mut parser = Parser::new(&mut input); - - let parsed: Vec = RuleListParser::new_for_stylesheet(&mut parser, RuleParser {}) - .collect::>() - .into_iter() - .filter_map(|rule| { - rule.ok() - }) - .collect(); - - let mut body = TokenStream2::new(); - for rule in parsed { - let mut stream = TokenStream2::new(); - for style in rule.styles { - stream.extend(quote!(#style,)); - } - - let key = Literal::string(&rule.key); - body.extend(quote!(styles.insert(#key, vec![#stream]);)) - } - - quote!(alchemy::StyleSheet::new({ - use alchemy::style_attributes::*; - use alchemy::Color; - let mut styles = std::collections::HashMap::new(); - #body - styles - })).into() -} - -/// Implements a derive macro for automating props setting and conversion. -#[proc_macro_derive(Props)] -pub fn writable_props_derive(input: TokenStream) -> TokenStream { - let input = parse_macro_input!(input as DeriveInput); - let name = &input.ident; - let name_props = Ident::new(&format!("{}Props", name), Span::call_site()); - let generics = input.generics; - let (impl_generics, ty_generics, where_clause) = generics.split_for_impl(); - - TokenStream::from(quote! { - impl #impl_generics #name #ty_generics #where_clause { - pub fn default_props() -> #name_props { - #name_props::default() - } - } - - impl #impl_generics alchemy::ComponentProps for #name #ty_generics #where_clause { - fn set_props(&mut self, new_props: &mut std::any::Any) { - match new_props.downcast_ref::<#name_props>() { - Some(props) => { }, - None => { panic!("Woah there, somehow the wrong props were being passed!"); } - } - } - } - }) -} diff --git a/macros/src/map.rs b/macros/src/map.rs deleted file mode 100644 index da62a98..0000000 --- a/macros/src/map.rs +++ /dev/null @@ -1,54 +0,0 @@ -//! Implements StringyMap, originally written by Bodil Stokke -//! over in [typed-html](https://github.com/bodil/typed-html). - -use std::collections::BTreeMap; - -#[derive(Clone)] -pub struct StringyMap(BTreeMap); - -impl StringyMap -where - K: ToString, -{ - pub fn new() -> Self { - StringyMap(BTreeMap::new()) - } - - pub fn insert(&mut self, k: K, v: V) -> Option { - let s = k.to_string(); - self.0.insert(s, (k, v)).map(|(_, v)| v) - } - - pub fn remove(&mut self, k: &K) -> Option { - let s = k.to_string(); - self.0.remove(&s).map(|(_, v)| v) - } - - pub fn iter(&self) -> impl Iterator { - self.0.values() - } - - pub fn keys(&self) -> impl Iterator { - self.0.values().map(|(k, _)| k) - } - - #[allow(dead_code)] - pub fn len(&self) -> usize { - self.0.len() - } -} - -impl From> for StringyMap -where - OK: Into, - OV: Into, - K: ToString, -{ - fn from(vec: Vec<(OK, OV)>) -> Self { - let mut out = Self::new(); - for (key, value) in vec { - out.insert(key.into(), value.into()); - } - out - } -} diff --git a/macros/src/parser.rs b/macros/src/parser.rs deleted file mode 100644 index 0d703a6..0000000 --- a/macros/src/parser.rs +++ /dev/null @@ -1,6 +0,0 @@ -//! Implements parsing, originally written by Bodil Stokke -//! over in [typed-html](https://github.com/bodil/typed-html). - -use lalrpop_util::lalrpop_mod; - -lalrpop_mod!(pub grammar); diff --git a/macros/src/rsx.rs b/macros/src/rsx.rs deleted file mode 100644 index 9243b63..0000000 --- a/macros/src/rsx.rs +++ /dev/null @@ -1,240 +0,0 @@ -use proc_macro2::{Delimiter, Group, Ident, Literal, Span, TokenStream, TokenTree}; -use quote::{quote, quote_spanned}; - -use crate::error::ParseError; -use crate::ident; -use crate::lexer::{/*to_stream, */Lexer, Token}; -use crate::map::StringyMap; -use crate::parser::grammar; - -use std::iter::FromIterator; - -#[derive(Clone)] -pub enum Node { - Element(Element), - Text(Literal), - Block(Group), -} - -impl Node { - pub fn into_token_stream(self, ty: &Option>) -> Result { - match self { - Node::Element(el) => el.into_token_stream(ty), - Node::Text(text) => { - let text = TokenTree::Literal(text); - Ok(quote!(alchemy::RSX::text(#text.to_string()))) - } - Node::Block(group) => { - let span = group.span(); - let error = - "you cannot use a block as a top level element or a required child element"; - Err(quote_spanned! { span=> - compile_error! { #error } - }) - } - } - } - - fn into_child_stream(self, ty: &Option>) -> Result { - match self { - Node::Element(el) => { - let el = el.into_token_stream(ty)?; - Ok(quote!( - /*element.*/children.push(#el); - )) - } - tx @ Node::Text(_) => { - let tx = tx.into_token_stream(ty)?; - Ok(quote!( - /*element.*/children.push(#tx); - )) - } - Node::Block(group) => { - let group: TokenTree = group.into(); - Ok(quote!( - for child in #group.into_iter() { - /*element.*/children.push(child); - } - )) - } - } - } -} - -#[derive(Clone)] -pub struct Element { - pub name: Ident, - pub attributes: StringyMap, - pub children: Vec, -} - -fn extract_event_handlers( - attrs: &mut StringyMap, -) -> StringyMap { - let mut events = StringyMap::new(); - let keys: Vec = attrs.keys().cloned().collect(); - for key in keys { - let key_name = key.to_string(); - let prefix = "on"; - if key_name.starts_with(prefix) { - let event_name = &key_name[prefix.len()..]; - let value = attrs.remove(&key).unwrap(); - events.insert(ident::new_raw(event_name, key.span()), value); - } - } - events -} - -fn process_value(value: &TokenTree) -> TokenStream { - match value { - TokenTree::Group(g) if g.delimiter() == Delimiter::Bracket => { - let content = g.stream(); - quote!( [ #content ] ) - } - TokenTree::Group(g) if g.delimiter() == Delimiter::Parenthesis => { - let content = g.stream(); - quote!( ( #content ) ) - } - v => TokenStream::from_iter(vec![v.clone()]), - } -} - -fn is_string_literal(literal: &Literal) -> bool { - // This is the worst API - literal.to_string().starts_with('"') -} - -#[allow(dead_code)] -fn stringify_ident(ident: &Ident) -> String { - let s = ident.to_string(); - if s.starts_with("r#") { - s[2..].to_string() - } else { - s - } -} - -impl Element { - fn into_token_stream(mut self, ty: &Option>) -> Result { - let name = self.name; - let name_str = name.to_string(); - let typename: TokenTree = Ident::new(&name_str, name.span()).into(); - - let events = extract_event_handlers(&mut self.attributes); - let attrs = self.attributes.iter().map(|(key, value)| { - let name = key.to_string(); - let token = TokenTree::Ident(ident::new_raw(&name, key.span())); - (name, token, value) - }); - - let mut attributes = TokenStream::new(); - let mut styles = TokenStream::new(); - styles.extend(quote!(alchemy::SpacedSet::new())); - - for (attr_str, key, value) in attrs { - match value { - TokenTree::Literal(lit) if is_string_literal(lit) => { - let mut eprintln_msg = "ERROR: ".to_owned(); - #[cfg(can_show_location_of_runtime_parse_error)] - { - let span = lit.span(); - eprintln_msg += &format!( - "{}:{}:{}: ", - span.unstable() - .source_file() - .path() - .to_str() - .unwrap_or("unknown"), - span.unstable().start().line, - span.unstable().start().column - ); - } - eprintln_msg += &format!( - "<{} {}={}> failed to parse attribute value: {{}}", - name_str, attr_str, lit, - ); - #[cfg(not(can_show_location_of_runtime_parse_error))] - { - eprintln_msg += "\nERROR: rebuild with nightly to print source location"; - } - - attributes.extend(quote!( - props.#key = #lit.parse().unwrap_or_else(|err| { - eprintln!(#eprintln_msg, err); - panic!("Failed to parse string literal"); - }); - )); - }, - - value => { - let prop = key.to_string(); - let value = process_value(value); - - if prop == "r#styles" { - styles = quote!(std::convert::Into::into(#value)); - continue; - } - - if prop == "r#key" { - continue; - } - - attributes.extend(quote!( - props.#key = std::convert::Into::into(#value); - )); - } - } - } - - for (key, _value) in events.iter() { - if ty.is_none() { - let mut err = quote_spanned! { key.span() => - compile_error! { "when using event handlers, you must declare the output type inside the rsx! macro" } - }; - let hint = quote_spanned! { Span::call_site() => - compile_error! { "for example: change rsx!(
...
) to rsx!(
...
: String)" } - }; - err.extend(hint); - return Err(err); - } - //let key = TokenTree::Ident(key.clone()); - //let value = process_value(value); - /*body.extend(quote!( - element.events.#key = Some(alchemy::dom::events::IntoEventHandler::into_event_handler(#value)); - ));*/ - } - - /*let mut args = TokenStream::new(); - let mut type_annotation = TokenStream::new(); - if let Some(ty) = ty { - let type_var = to_stream(ty.clone()); - type_annotation.extend(quote!(: #typename<#type_var>)); - }*/ - - let mut children = TokenStream::new(); - children.extend(self.children.into_iter().map(|node| { - node.into_child_stream(ty) - }).collect::, TokenStream>>()?); - - let component_name = Literal::string(&typename.to_string()); - - Ok(quote! { - alchemy::RSX::node(#component_name, #styles, |key| { - Box::new(<#typename as alchemy::Component>::new(key)) - }, { - let props = #typename::default_props(); - #attributes - Box::new(props) - }, { - let mut children = vec![]; - #children - children - }) - }) - } -} - -// FIXME report a decent error when the macro contains multiple top level elements -pub fn expand_rsx(input: &[Token]) -> Result<(Node, Option>), ParseError> { - grammar::NodeWithTypeParser::new().parse(Lexer::new(input)) -} diff --git a/macros/src/span.rs b/macros/src/span.rs deleted file mode 100644 index 4873598..0000000 --- a/macros/src/span.rs +++ /dev/null @@ -1,13 +0,0 @@ -//! Utility functions, originally written by Bodil Stokke -//! over in [typed-html](https://github.com/bodil/typed-html). - -use proc_macro; -use proc_macro2; - -pub fn from_unstable(span: proc_macro::Span) -> proc_macro2::Span { - let ident = proc_macro::Ident::new("_", span); - let tt = proc_macro::TokenTree::Ident(ident); - let tts = proc_macro::TokenStream::from(tt); - let tts2 = proc_macro2::TokenStream::from(tts); - tts2.into_iter().next().unwrap().span() -} diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..3e27a3d --- /dev/null +++ b/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Sitemap: https://alchemy.rs/sitemap.xml diff --git a/rust-toolchain b/rust-toolchain deleted file mode 100644 index 2aeaa11..0000000 --- a/rust-toolchain +++ /dev/null @@ -1 +0,0 @@ -1.35.0 diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..961b750 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,8 @@ + + + + https://alchemy.rs/ + + + + diff --git a/src/build b/src/build new file mode 100755 index 0000000..c14963b --- /dev/null +++ b/src/build @@ -0,0 +1,8 @@ +#!/bin/bash +# Feel free to change this via pull request if you want a different shell. ;P + + +rm -rf ../css ../images ../favicons +zola build +mv public/* ../ +rm -rf public diff --git a/website/config.toml b/src/config.toml similarity index 94% rename from website/config.toml rename to src/config.toml index 2b01f80..f0747cb 100644 --- a/website/config.toml +++ b/src/config.toml @@ -10,7 +10,7 @@ highlight_code = true highlight_theme = "dracula" # Whether to build a search index to be used later on by a JavaScript library -build_search_index = true +build_search_index = false [extra] # Put all your custom variables here diff --git a/website/content/_index.md b/src/content/_index.md similarity index 100% rename from website/content/_index.md rename to src/content/_index.md diff --git a/src/static/banner.png b/src/static/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..7fa437023321912b69bd529296e211640f519496 GIT binary patch literal 152792 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
0s?jcDUzcIS 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%0AmJQR0&9RamfOPq2rTxgz0PF+0k4Bugr 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 E0QbnIMF0Q* literal 0 HcmV?d00001 diff --git a/src/static/css/layout.css b/src/static/css/layout.css new file mode 100644 index 0000000..06f2b54 --- /dev/null +++ b/src/static/css/layout.css @@ -0,0 +1,20 @@ +* { box-sizing: border-box; } +html, body { padding 0; margin: 0; background: #131414; color: #e1edf1; font-family: Helvetica Neue,Helvetica,sans-serif; } +body { max-width: 900px; margin: 0 auto; } + +a, a:visited { color: #ca1134; } +a:hover { color: #d90b31; background: #f4f4f4; } + +pre { font-size: 1rem; line-height: 1.3rem; border-radius: 4px; overflow: auto; padding: 1.3rem; margin-bottom: 1.5rem; font-family: "Anonymous Pro", Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; } +pre span { font-style: normal !important; text-decoration: none !important; } + +#banner { width: 100%; } +h1 { color: #f3f3f3; font-size: 2.1rem; line-height: 2.4rem; font-family: aleo; margin: .5rem 0 .6rem; } +h2 { font-size: 1.3rem; line-height: 1.8rem; font-family: aleo, georgia, serif; margin: 0; padding: 2rem 1.3rem .45rem 0; color: #959e9d; } +p { font-size: 1rem; line-height: 1.4rem; } +#tempGetStarted { text-align: center; } +#tempGetStarted h2 { padding-right: 0; } +.getStartedBtn { display: inline-block; font: normal 1.4rem/2rem aleo, georgia, serif; padding: 1.4rem 4rem; background: #307ace; text-decoration: none; color: #e1edf1; border-radius: 8px; } +.gh { margin-right: 1.4rem; } + +footer { text-align: center; margin-top: 4rem; margin-bottom: 2rem; font-size: .8rem; line-height: 1rem; color: #555; } diff --git a/src/static/css/reset.css b/src/static/css/reset.css new file mode 100644 index 0000000..9aa45be --- /dev/null +++ b/src/static/css/reset.css @@ -0,0 +1,12 @@ +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 62.5%; font: inherit; vertical-align: baseline; } article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } body {line-height:1;} ol, ul {list-style:none;} blockquote, q {quotes:none;} blockquote:before, blockquote:after, q:before, q:after {content:'';content: none;} table {border-collapse:collapse;border-spacing:0;} .group:before, .group:after {content:"";display:table;} .group:after {clear:both;} .group {zoom:1;} + +@media screen and (min-width: 500px) { +.col {} .row:after {content: ""; clear: both; display: table;} .col {float: left; width: 100%; box-sizing: border-box;} +} + +@font-face { + font-family: 'aleo'; + src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff'); + font-weight: normal; + font-style: normal; +} diff --git a/src/static/favicon.ico b/src/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bcf2320ded5c6025eb96d8ccd0c72a005fa22238 GIT binary patch literal 34494 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 Kmw(B}p!@$vcANVE literal 0 HcmV?d00001 diff --git a/src/static/favicons/apple-touch-icon-114x114.png b/src/static/favicons/apple-touch-icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..d0a2558124264f0d9bb79b9a60b8d447ad7cd4be GIT binary patch literal 11427 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 literal 0 HcmV?d00001 diff --git a/src/static/favicons/apple-touch-icon-120x120.png b/src/static/favicons/apple-touch-icon-120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..23b52a29fc8e96b9efbd8ec10e5d212bea760762 GIT binary patch literal 10504 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 KMNUMnLSTZ~?!Hz4 literal 0 HcmV?d00001 diff --git a/src/static/favicons/apple-touch-icon-144x144.png b/src/static/favicons/apple-touch-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..44e7261deb012ce34c8ed40c9c375d51616016c3 GIT binary patch literal 17544 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 P00000NkvXXu0mjfNF%6# literal 0 HcmV?d00001 diff --git a/src/static/favicons/favicon-128.png b/src/static/favicons/favicon-128.png new file mode 100644 index 0000000000000000000000000000000000000000..511815fa798067fbc4c1fb97c8d1e6ea152739f6 GIT binary patch literal 10482 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 literal 0 HcmV?d00001 diff --git a/src/static/favicons/favicon-16x16.png b/src/static/favicons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..6ecef574b5645519b5218e89f9fdae186d3d9cd0 GIT binary patch literal 629 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 OS?1Z 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 m{}+0vughP=b^j}U4*w4}fBudGX8n%<0000}Ru zs4>P%+8|yNP4q?M3-Q4cK*NJEG4a)y_@IGAjYfTdsCcOgxF8U~QmsH+w%6TuuV?q1 zvuAuL7ZYI1Zqhi(oSezb{J-CP-!~WdpNlAG(xV${>%IP(CtBK8Ec5$3=Bbl^UL1=? zKmX$B_(-W*wla*npV+qT*aKbekSaA$D|qrAi=U4;_e#m;FMl6DKCb|vC`Mv1B$EP5 znRTF$5-D*5i-GwC7-@QOac1H(^UxvH77SD{oyc?abb_(CPC5_b}ylvUu zK+unCJORM@u@RCpDW)z?zL(GB-YZ43O{id?&&efCEb-o(2V1fjp2quRn&3__) zS4H;k&XuB9QW640_V2OWs`JA7*45nJ+)i6V6AQdG7@9s-s&OdmAObya#GR_3ZDBP7 z(*}WRA0wXOcsW`ndjLQPY?g$SVIhS?0uH;qti_ZJ5bo}+t`GUct$qj5bb%{raymd)YUm&7MnWLdaPNkv5k z(kzgiNsz5{GwpUU>%%wkP4&2-G(no8Dqf0lNekRfI`uvxBZXCT# zGRa>Dk0D$tva!BJscHWpdiqCsGyS3=2zU23HZ1Vpz5HyHV5kx2@hObBV8#OpBa6f3 z#K`O9vpHm5hh&b}U*l9}oa7Imqv@5$*Zy(zo} zO&!z9U{`H8RXYd=$V#F?2WR3Ja3@R@3b@=ATgwIr1pUnw8I4MZ8<1C>E(N&kj%)49 zUm*kzn+;V}aN!~~9Hn;Ag63j2iUK&C4x3UaAP`s0!1d9;(k@sQmi$k+b2^F;MQs$_ z1@YMQuojZSF};U#hH1<*9a7VptYA(g;d79DgjbZ`V-KB^LLqjfS?z{XKFHto-g(qtv zq#&Kqn8~Io1U*5r!djvYDqY-HcA!*glh@|!T+-K(G|TU*+jpARhzZmn|K zgLczIN{Q)klFsSL*i^i4;OyYXrfGf}*|%%Xi>M@k>tJ9Zh!DsmkOrnA`*#<;cy3hw Y1ujuVka$|+ivR!s07*qoM6N<$f@N%~=Kufz literal 0 HcmV?d00001 diff --git a/src/static/favicons/favicon-96x96.png b/src/static/favicons/favicon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..020780135cfb8ef98fffbf412921eca0674eb8fc GIT binary patch literal 7958 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 M07*qoM6N<$f)^pEdH?_b literal 0 HcmV?d00001 diff --git a/src/static/favicons/mstile-144x144.png b/src/static/favicons/mstile-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..44e7261deb012ce34c8ed40c9c375d51616016c3 GIT binary patch literal 17544 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 Z;WwO`MpD|)%TFJdw1k3qm8fCB{{U_}Df$2a literal 0 HcmV?d00001 diff --git a/src/static/favicons/mstile-310x150.png b/src/static/favicons/mstile-310x150.png new file mode 100644 index 0000000000000000000000000000000000000000..0d2d4cbeee96dbb06cb9b0b9884c61b1a7abf193 GIT binary patch literal 97807 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%0AK&TKfwR{d*8qhKfH^1RiP>i(R#G8-XT)@ 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

onnfb31B;GE&JumrdH^ zMzB*fOM%8|!k6cB_U!C&ro?$!#u?=Pc)chqP8l)kz)@UF?+ zlV@w-9buW48`-5s8X|o5x_CWxzBMdt*}vvo08l(GEumWB8Y`7+&mO%YY94`z9o7g` zjj7i1_Rm@kxW;}XM!ThJD^H)Mrni1xv!MiE*%9%qv0DJZ|MORWIRf1W0RLGdxd77h z=VyHS@uTbPQr9m1;WVK;-r?{^zrg9+pMfuFPTqCmKfZjy_n$uCdbn z>;=%Q(|Lyc8?1BjS!ExTmy*p4$x+jyw`s=bYndildoFlY5IGA*@@k$~n+FY8-r;k( z;men+`5o!3!eFa8mrUyur47|`@opG#;~V^9a=uPD{Ole2Z@xv>51=_M&}UWWs&nc3 z4&$_Vb3c84w#}yG`5EBv0MT~Z z)`*8M4_rDQBHbe_+*`&P{zP`Fag!M+9+z6-qJ(hwYaW0tW*CK#T?IO{$cKO4s*s3z zMoc}b*e&wlEjn%FE>!v6#}Ec zkkfmJ`giYf`qMuKW+54+7aF=AXFlU!zWfH?f70Gx$PhDuI}}+F&w+I4cHCdC-D2AO zu9f02`Tv=FvzSYc>`d&7%zN*@)W%x4RFQ11-6Wf2_edIRq)|)Fw&alpf(FKnF@RqT zLx5q!u%Gl`_>mls4akNuV;hEn!N6l1Fi1-pV8$c2WUE`MZgs1dVq0PtDXzt;V%5Jd z_x^X!CBhGx5pm+=iOl=6Dce!_>)x9gapJ^@$T(kov1ENCNEyC^#p=L!x{&xp!3IvK zzgW8ki)smAp=sUdo~$dOht(PPM_yz{)(SWWqCj3iXi?Z)pHKx9E??Co+KmTmT3b6T@4=ziPr_ES{C2wxv1( zxiOgK_FY8H-C`~$;B0jE_+ znA~K@kU_ipul3GKtX;W`WPKAb2FAXcz b@nIDDg8{PT5{HLFOr|sR)1+SG612j5 z2I}^W*I%>1Me;e+X~z2Qm{XU)4VNMLff!(j0h=~vL?Q&Z9LdK?07e2W5+I0`St=t< zBk3gR!DYn23)dx9pDumO!M8C4k}~{y8*;SYV<>MGv?+yHgW|F!{bQAGe@hKWLWI%- z5Yv%|*hA44hwDQ1jm7PX#Hh3_SbI5pG>q@j zFtw|#atB_FKN8;5I(n5=;NU>)%IlNLwF`BX)4y&vDm=qQDQ5!TR*XSbYRr~7vZ8Qx zVr@)=JBvqIfMVA}g^P5<1Lx2PiBk3XEo2)sjo1b|z^u zTz8Mba;(M;jr+^^#;rz^W5H#T29Q+l(D^#H+9a zJdZA?E(OWRZ77zfi?K>=jd@kwc-&Reap1>w;X!IZF|caCPmIEk43PP?k_!DaK~ZWP z4^J=|j_b1)95sL{mO_#wP>Dfu?hH1bej00+&cG~++NUYk6D2Cabh*Ip$#K=`CoU^0 z(vOra`=US`24y1Z#AI55?u?Swx!CM%zD^cFL=-qUU07$$S(ECT^7j~t;6aEjn@=Ul zqU8k0xgd%GiW+4ZqNKxEL4lj6>Jk_O%G%gHLmo^R59AE7D4{JpWFln%gLN5I? z#$Z0rF`f9=ZG^TkO}Xrk-?xp=-526wW zR%iBL*S`~`FgiHK=x_)FRE!cun^n{g;n%m=(B?yUU$+WNB864@=a?R=3^4h9E+fXs zpH`Pxi1}~sUseq<@FE2XoOIy@cdg4vlA%viD2Wb}lsPTR>k3kS{I^6$#lk9pr;SF7 z{ca1V(Wk9}w*eeZC&IvF3iwbd-16YS)ReWs$;kur!d5%OIq*orq#xtLT zo{_Zx_2@KJ338p|{>cIE?C%0;I6@92T6%>#V1$k^Sl7Xi&R1~n@1e5!cbB)ZOat#f z>zhDh?L@HH)GO}NxET})^e9yylty;72yzA2BL1R>=Y{D!cvA#qG$lD0=770-364PadMeYw( z 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 literal 0 HcmV?d00001 diff --git a/src/static/humans.txt b/src/static/humans.txt new file mode 100755 index 0000000..dad3d68 --- /dev/null +++ b/src/static/humans.txt @@ -0,0 +1,4 @@ +Site: https://rymc.io/ +Twitter: @ryanmcgrath +GitHub: ryanmcgrath +Dribbble: ryanmcgrath diff --git a/src/static/images/banner.png b/src/static/images/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..31608430f74f9b5dd0fd69b4ad4700900d0468e8 GIT binary patch literal 37878 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 K?QiPnu>Syom=PEN literal 0 HcmV?d00001 diff --git a/website/templates/index.html b/src/templates/index.html similarity index 100% rename from website/templates/index.html rename to src/templates/index.html diff --git a/website/templates/layout.html b/src/templates/layout.html similarity index 100% rename from website/templates/layout.html rename to src/templates/layout.html diff --git a/styles/Cargo.toml b/styles/Cargo.toml deleted file mode 100644 index 42d5716..0000000 --- a/styles/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "alchemy-styles" -description = "Style parsing and hoisting for Alchemy, the Rust cross-platform GUI framework." -version = "0.1.0" -edition = "2018" -authors = ["Ryan McGrath "] -license = "MPL-2.0+" -repository = "https://github.com/ryanmcgrath/alchemy" -categories = ["gui", "rendering::engine", "multimedia"] -keywords = ["gui", "css", "styles", "layout", "ui"] - -[badges] -maintenance = { status = "actively-developed" } - -[features] -tokenize = ["proc-macro2", "quote"] -parser = ["cssparser"] - -[dependencies] -cssparser = { version = "0.25.5", optional = true } -lazy_static = "1.3" -proc-macro2 = { version = "0.4.24", optional = true } -quote = { version = "0.6.10", optional = true } -serde = { version = "1.0", features = ["derive"] } -toml = "0.5" diff --git a/styles/README.md b/styles/README.md deleted file mode 100644 index c8ef374..0000000 --- a/styles/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Alchemy-Styles -This crate implements CSS parsing and Flexbox layout. CSS parsing relies on the [CSS Parser from Servo](https://github.com/servo/rust-cssparser). Flexbox is implemented with [Stretch](https://github.com/vislyhq/stretch), albeit currently [a fork by msilgreith](https://github.com/msiglreith/stretch/tree/index), cloned into here to serve a few small changes (a change for more thread safety, and to push appearance based styles that Flexbox doesn't concern itself with). Down the road, I could see this not including Stretch inline. - -## Questions, Comments? -Open an issue, or hit me up on [Twitter](https://twitter.com/ryanmcgrath/). diff --git a/styles/src/color.rs b/styles/src/color.rs deleted file mode 100644 index cf55bc4..0000000 --- a/styles/src/color.rs +++ /dev/null @@ -1,667 +0,0 @@ -//! Implements `Color`. Heavily based on the `Color` module in Servo's CSS parser, but tweaked -//! for (what I believe) is a friendlier API, and to separate out the parsing into a separate -//! module. - -#[cfg(feature="parser")] -use std::{fmt, f32::consts::PI}; - -#[cfg(feature="parser")] -use cssparser::{BasicParseError, ParseError, Parser, ToCss, Token}; - -/// A color with red, green, blue, and alpha components, in a byte each. -#[derive(Clone, Copy, PartialEq, Debug)] -pub struct Color { - /// The red component. - pub red: u8, - /// The green component. - pub green: u8, - /// The blue component. - pub blue: u8, - /// The alpha component. - pub alpha: u8, -} - -impl Default for Color { - fn default() -> Color { - Color { red: 0, green: 0, blue: 0, alpha: 0 } - } -} - -impl Color { - /// Constructs a new Color value from float components. It expects the red, - /// green, blue and alpha channels in that order, and all values will be - /// clamped to the 0.0 ... 1.0 range. - #[inline] - pub fn from_floats(red: f32, green: f32, blue: f32, alpha: f32) -> Self { - Self::new( - clamp_unit_f32(red), - clamp_unit_f32(green), - clamp_unit_f32(blue), - clamp_unit_f32(alpha), - ) - } - - /// Returns a transparent color. - #[inline] - pub fn transparent() -> Self { - Self::new(0, 0, 0, 0) - } - - /// Same thing, but with `u8` values instead of floats in the 0 to 1 range. - #[inline] - pub fn new(red: u8, green: u8, blue: u8, alpha: u8) -> Self { - Color { - red: red, - green: green, - blue: blue, - alpha: alpha, - } - } - - /// Returns the red channel in a floating point number form, from 0 to 1. - #[inline] - pub fn red_f32(&self) -> f32 { - self.red as f32 / 255.0 - } - - /// Returns the green channel in a floating point number form, from 0 to 1. - #[inline] - pub fn green_f32(&self) -> f32 { - self.green as f32 / 255.0 - } - - /// Returns the blue channel in a floating point number form, from 0 to 1. - #[inline] - pub fn blue_f32(&self) -> f32 { - self.blue as f32 / 255.0 - } - - /// Returns the alpha channel in a floating point number form, from 0 to 1. - #[inline] - pub fn alpha_f32(&self) -> f32 { - self.alpha as f32 / 255.0 - } - - /// Parse a value, per CSS Color Module Level 3. - /// - /// FIXME(#2) Deprecated CSS2 System Colors are not supported yet. - #[cfg(feature="parser")] - pub fn parse_with<'i, 't, ComponentParser>( - component_parser: &ComponentParser, - input: &mut Parser<'i, 't>, - ) -> Result> - where - ComponentParser: ColorComponentParser<'i>, - { - // FIXME: remove clone() when lifetimes are non-lexical - let location = input.current_source_location(); - let token = input.next()?.clone(); - match token { - Token::Hash(ref value) | Token::IDHash(ref value) => { - Color::parse_hash(value.as_bytes()) - } - Token::Ident(ref value) => parse_color_keyword(&*value), - Token::Function(ref name) => { - return input.parse_nested_block(|arguments| { - parse_color_function(component_parser, &*name, arguments) - }) - } - _ => Err(()), - } - .map_err(|()| location.new_unexpected_token_error(token)) - } - - /// Parse a value, per CSS Color Module Level 3. - #[cfg(feature="parser")] - pub fn parse<'i, 't>(input: &mut Parser<'i, 't>) -> Result> { - let component_parser = DefaultComponentParser; - Self::parse_with(&component_parser, input).map_err(ParseError::basic) - } - - /// Parse a color hash, without the leading '#' character. - #[cfg(feature="parser")] - #[inline] - pub fn parse_hash(value: &[u8]) -> Result { - match value.len() { - 8 => Ok(rgba( - from_hex(value[0])? * 16 + from_hex(value[1])?, - from_hex(value[2])? * 16 + from_hex(value[3])?, - from_hex(value[4])? * 16 + from_hex(value[5])?, - from_hex(value[6])? * 16 + from_hex(value[7])?, - )), - 6 => Ok(rgb( - from_hex(value[0])? * 16 + from_hex(value[1])?, - from_hex(value[2])? * 16 + from_hex(value[3])?, - from_hex(value[4])? * 16 + from_hex(value[5])?, - )), - 4 => Ok(rgba( - from_hex(value[0])? * 17, - from_hex(value[1])? * 17, - from_hex(value[2])? * 17, - from_hex(value[3])? * 17, - )), - 3 => Ok(rgb( - from_hex(value[0])? * 17, - from_hex(value[1])? * 17, - from_hex(value[2])? * 17, - )), - _ => Err(()), - } - } - -} - -#[cfg(feature="parser")] -impl ToCss for Color { - fn to_css(&self, dest: &mut W) -> fmt::Result - where - W: fmt::Write, - { - let serialize_alpha = self.alpha != 255; - - dest.write_str(if serialize_alpha { "rgba(" } else { "rgb(" })?; - self.red.to_css(dest)?; - dest.write_str(", ")?; - self.green.to_css(dest)?; - dest.write_str(", ")?; - self.blue.to_css(dest)?; - if serialize_alpha { - dest.write_str(", ")?; - - // Try first with two decimal places, then with three. - let mut rounded_alpha = (self.alpha_f32() * 100.).round() / 100.; - if clamp_unit_f32(rounded_alpha) != self.alpha { - rounded_alpha = (self.alpha_f32() * 1000.).round() / 1000.; - } - - rounded_alpha.to_css(dest)?; - } - dest.write_char(')') - } -} - -/// Either a number or a percentage. -#[cfg(feature="parser")] -pub enum NumberOrPercentage { - /// ``. - Number { - /// The numeric value parsed, as a float. - value: f32, - }, - /// `` - Percentage { - /// The value as a float, divided by 100 so that the nominal range is - /// 0.0 to 1.0. - unit_value: f32, - }, -} - -#[cfg(feature="parser")] -impl NumberOrPercentage { - fn unit_value(&self) -> f32 { - match *self { - NumberOrPercentage::Number { value } => value, - NumberOrPercentage::Percentage { unit_value } => unit_value, - } - } -} - -/// Either an angle or a number. -#[cfg(feature="parser")] -pub enum AngleOrNumber { - /// ``. - Number { - /// The numeric value parsed, as a float. - value: f32, - }, - /// `` - Angle { - /// The value as a number of degrees. - degrees: f32, - }, -} - -#[cfg(feature="parser")] -impl AngleOrNumber { - fn degrees(&self) -> f32 { - match *self { - AngleOrNumber::Number { value } => value, - AngleOrNumber::Angle { degrees } => degrees, - } - } -} - -/// A trait that can be used to hook into how `cssparser` parses color -/// components, with the intention of implementing more complicated behavior. -/// -/// For example, this is used by Servo to support calc() in color. -#[cfg(feature="parser")] -pub trait ColorComponentParser<'i> { - /// A custom error type that can be returned from the parsing functions. - type Error: 'i; - - /// Parse an `` or ``. - /// - /// Returns the result in degrees. - fn parse_angle_or_number<'t>( - &self, - input: &mut Parser<'i, 't>, - ) -> Result> { - let location = input.current_source_location(); - Ok(match *input.next()? { - Token::Number { value, .. } => AngleOrNumber::Number { value }, - Token::Dimension { - value: v, ref unit, .. - } => { - let degrees = match_ignore_ascii_case! { &*unit, - "deg" => v, - "grad" => v * 360. / 400., - "rad" => v * 360. / (2. * PI), - "turn" => v * 360., - _ => return Err(location.new_unexpected_token_error(Token::Ident(unit.clone()))), - }; - - AngleOrNumber::Angle { degrees } - } - ref t => return Err(location.new_unexpected_token_error(t.clone())), - }) - } - - /// Parse a `` value. - /// - /// Returns the result in a number from 0.0 to 1.0. - fn parse_percentage<'t>( - &self, - input: &mut Parser<'i, 't>, - ) -> Result> { - input.expect_percentage().map_err(From::from) - } - - /// Parse a `` value. - fn parse_number<'t>( - &self, - input: &mut Parser<'i, 't>, - ) -> Result> { - input.expect_number().map_err(From::from) - } - - /// Parse a `` value or a `` value. - fn parse_number_or_percentage<'t>( - &self, - input: &mut Parser<'i, 't>, - ) -> Result> { - let location = input.current_source_location(); - Ok(match *input.next()? { - Token::Number { value, .. } => NumberOrPercentage::Number { value }, - Token::Percentage { unit_value, .. } => NumberOrPercentage::Percentage { unit_value }, - ref t => return Err(location.new_unexpected_token_error(t.clone())), - }) - } -} - -#[cfg(feature="parser")] -struct DefaultComponentParser; - -#[cfg(feature="parser")] -impl<'i> ColorComponentParser<'i> for DefaultComponentParser { - type Error = (); -} - -#[cfg(feature="parser")] -#[inline] -fn rgb(red: u8, green: u8, blue: u8) -> Color { - rgba(red, green, blue, 255) -} - -#[cfg(feature="parser")] -#[inline] -fn rgba(red: u8, green: u8, blue: u8, alpha: u8) -> Color { - Color::new(red, green, blue, alpha) -} - -/// Return the named color with the given name. -/// -/// Matching is case-insensitive in the ASCII range. -/// CSS escaping (if relevant) should be resolved before calling this function. -/// (For example, the value of an `Ident` token is fine.) -#[cfg(feature="parser")] -#[inline] -pub fn parse_color_keyword(ident: &str) -> Result { - macro_rules! rgb { - ($red: expr, $green: expr, $blue: expr) => { - Color { - red: $red, - green: $green, - blue: $blue, - alpha: 255, - } - }; - } - - ascii_case_insensitive_phf_map! { - keyword -> Color = { - "black" => rgb!(0, 0, 0), - "silver" => rgb!(192, 192, 192), - "gray" => rgb!(128, 128, 128), - "white" => rgb!(255, 255, 255), - "maroon" => rgb!(128, 0, 0), - "red" => rgb!(255, 0, 0), - "purple" => rgb!(128, 0, 128), - "fuchsia" => rgb!(255, 0, 255), - "green" => rgb!(0, 128, 0), - "lime" => rgb!(0, 255, 0), - "olive" => rgb!(128, 128, 0), - "yellow" => rgb!(255, 255, 0), - "navy" => rgb!(0, 0, 128), - "blue" => rgb!(0, 0, 255), - "teal" => rgb!(0, 128, 128), - "aqua" => rgb!(0, 255, 255), - - "aliceblue" => rgb!(240, 248, 255), - "antiquewhite" => rgb!(250, 235, 215), - "aquamarine" => rgb!(127, 255, 212), - "azure" => rgb!(240, 255, 255), - "beige" => rgb!(245, 245, 220), - "bisque" => rgb!(255, 228, 196), - "blanchedalmond" => rgb!(255, 235, 205), - "blueviolet" => rgb!(138, 43, 226), - "brown" => rgb!(165, 42, 42), - "burlywood" => rgb!(222, 184, 135), - "cadetblue" => rgb!(95, 158, 160), - "chartreuse" => rgb!(127, 255, 0), - "chocolate" => rgb!(210, 105, 30), - "coral" => rgb!(255, 127, 80), - "cornflowerblue" => rgb!(100, 149, 237), - "cornsilk" => rgb!(255, 248, 220), - "crimson" => rgb!(220, 20, 60), - "cyan" => rgb!(0, 255, 255), - "darkblue" => rgb!(0, 0, 139), - "darkcyan" => rgb!(0, 139, 139), - "darkgoldenrod" => rgb!(184, 134, 11), - "darkgray" => rgb!(169, 169, 169), - "darkgreen" => rgb!(0, 100, 0), - "darkgrey" => rgb!(169, 169, 169), - "darkkhaki" => rgb!(189, 183, 107), - "darkmagenta" => rgb!(139, 0, 139), - "darkolivegreen" => rgb!(85, 107, 47), - "darkorange" => rgb!(255, 140, 0), - "darkorchid" => rgb!(153, 50, 204), - "darkred" => rgb!(139, 0, 0), - "darksalmon" => rgb!(233, 150, 122), - "darkseagreen" => rgb!(143, 188, 143), - "darkslateblue" => rgb!(72, 61, 139), - "darkslategray" => rgb!(47, 79, 79), - "darkslategrey" => rgb!(47, 79, 79), - "darkturquoise" => rgb!(0, 206, 209), - "darkviolet" => rgb!(148, 0, 211), - "deeppink" => rgb!(255, 20, 147), - "deepskyblue" => rgb!(0, 191, 255), - "dimgray" => rgb!(105, 105, 105), - "dimgrey" => rgb!(105, 105, 105), - "dodgerblue" => rgb!(30, 144, 255), - "firebrick" => rgb!(178, 34, 34), - "floralwhite" => rgb!(255, 250, 240), - "forestgreen" => rgb!(34, 139, 34), - "gainsboro" => rgb!(220, 220, 220), - "ghostwhite" => rgb!(248, 248, 255), - "gold" => rgb!(255, 215, 0), - "goldenrod" => rgb!(218, 165, 32), - "greenyellow" => rgb!(173, 255, 47), - "grey" => rgb!(128, 128, 128), - "honeydew" => rgb!(240, 255, 240), - "hotpink" => rgb!(255, 105, 180), - "indianred" => rgb!(205, 92, 92), - "indigo" => rgb!(75, 0, 130), - "ivory" => rgb!(255, 255, 240), - "khaki" => rgb!(240, 230, 140), - "lavender" => rgb!(230, 230, 250), - "lavenderblush" => rgb!(255, 240, 245), - "lawngreen" => rgb!(124, 252, 0), - "lemonchiffon" => rgb!(255, 250, 205), - "lightblue" => rgb!(173, 216, 230), - "lightcoral" => rgb!(240, 128, 128), - "lightcyan" => rgb!(224, 255, 255), - "lightgoldenrodyellow" => rgb!(250, 250, 210), - "lightgray" => rgb!(211, 211, 211), - "lightgreen" => rgb!(144, 238, 144), - "lightgrey" => rgb!(211, 211, 211), - "lightpink" => rgb!(255, 182, 193), - "lightsalmon" => rgb!(255, 160, 122), - "lightseagreen" => rgb!(32, 178, 170), - "lightskyblue" => rgb!(135, 206, 250), - "lightslategray" => rgb!(119, 136, 153), - "lightslategrey" => rgb!(119, 136, 153), - "lightsteelblue" => rgb!(176, 196, 222), - "lightyellow" => rgb!(255, 255, 224), - "limegreen" => rgb!(50, 205, 50), - "linen" => rgb!(250, 240, 230), - "magenta" => rgb!(255, 0, 255), - "mediumaquamarine" => rgb!(102, 205, 170), - "mediumblue" => rgb!(0, 0, 205), - "mediumorchid" => rgb!(186, 85, 211), - "mediumpurple" => rgb!(147, 112, 219), - "mediumseagreen" => rgb!(60, 179, 113), - "mediumslateblue" => rgb!(123, 104, 238), - "mediumspringgreen" => rgb!(0, 250, 154), - "mediumturquoise" => rgb!(72, 209, 204), - "mediumvioletred" => rgb!(199, 21, 133), - "midnightblue" => rgb!(25, 25, 112), - "mintcream" => rgb!(245, 255, 250), - "mistyrose" => rgb!(255, 228, 225), - "moccasin" => rgb!(255, 228, 181), - "navajowhite" => rgb!(255, 222, 173), - "oldlace" => rgb!(253, 245, 230), - "olivedrab" => rgb!(107, 142, 35), - "orange" => rgb!(255, 165, 0), - "orangered" => rgb!(255, 69, 0), - "orchid" => rgb!(218, 112, 214), - "palegoldenrod" => rgb!(238, 232, 170), - "palegreen" => rgb!(152, 251, 152), - "paleturquoise" => rgb!(175, 238, 238), - "palevioletred" => rgb!(219, 112, 147), - "papayawhip" => rgb!(255, 239, 213), - "peachpuff" => rgb!(255, 218, 185), - "peru" => rgb!(205, 133, 63), - "pink" => rgb!(255, 192, 203), - "plum" => rgb!(221, 160, 221), - "powderblue" => rgb!(176, 224, 230), - "rebeccapurple" => rgb!(102, 51, 153), - "rosybrown" => rgb!(188, 143, 143), - "royalblue" => rgb!(65, 105, 225), - "saddlebrown" => rgb!(139, 69, 19), - "salmon" => rgb!(250, 128, 114), - "sandybrown" => rgb!(244, 164, 96), - "seagreen" => rgb!(46, 139, 87), - "seashell" => rgb!(255, 245, 238), - "sienna" => rgb!(160, 82, 45), - "skyblue" => rgb!(135, 206, 235), - "slateblue" => rgb!(106, 90, 205), - "slategray" => rgb!(112, 128, 144), - "slategrey" => rgb!(112, 128, 144), - "snow" => rgb!(255, 250, 250), - "springgreen" => rgb!(0, 255, 127), - "steelblue" => rgb!(70, 130, 180), - "tan" => rgb!(210, 180, 140), - "thistle" => rgb!(216, 191, 216), - "tomato" => rgb!(255, 99, 71), - "turquoise" => rgb!(64, 224, 208), - "violet" => rgb!(238, 130, 238), - "wheat" => rgb!(245, 222, 179), - "whitesmoke" => rgb!(245, 245, 245), - "yellowgreen" => rgb!(154, 205, 50), - - "transparent" => Color { red: 0, green: 0, blue: 0, alpha: 0 } - } - } - - keyword(ident).cloned().ok_or(()) -} - -#[cfg(feature="parser")] -#[inline] -fn from_hex(c: u8) -> Result { - match c { - b'0'...b'9' => Ok(c - b'0'), - b'a'...b'f' => Ok(c - b'a' + 10), - b'A'...b'F' => Ok(c - b'A' + 10), - _ => Err(()), - } -} - -fn clamp_unit_f32(val: f32) -> u8 { - // Whilst scaling by 256 and flooring would provide - // an equal distribution of integers to percentage inputs, - // this is not what Gecko does so we instead multiply by 255 - // and round (adding 0.5 and flooring is equivalent to rounding) - // - // Chrome does something similar for the alpha value, but not - // the rgb values. - // - // See https://bugzilla.mozilla.org/show_bug.cgi?id=1340484 - // - // Clamping to 256 and rounding after would let 1.0 map to 256, and - // `256.0_f32 as u8` is undefined behavior: - // - // https://github.com/rust-lang/rust/issues/10184 - clamp_floor_256_f32(val * 255.) -} - -fn clamp_floor_256_f32(val: f32) -> u8 { - val.round().max(0.).min(255.) as u8 -} - -#[cfg(feature="parser")] -#[inline] -fn parse_color_function<'i, 't, ComponentParser>( - component_parser: &ComponentParser, - name: &str, - arguments: &mut Parser<'i, 't>, -) -> Result> -where - ComponentParser: ColorComponentParser<'i>, -{ - let (red, green, blue, uses_commas) = match_ignore_ascii_case! { name, - "rgb" | "rgba" => parse_rgb_components_rgb(component_parser, arguments)?, - "hsl" | "hsla" => parse_rgb_components_hsl(component_parser, arguments)?, - _ => return Err(arguments.new_unexpected_token_error(Token::Ident(name.to_owned().into()))), - }; - - let alpha = if !arguments.is_exhausted() { - if uses_commas { - arguments.expect_comma()?; - } else { - arguments.expect_delim('/')?; - }; - clamp_unit_f32( - component_parser - .parse_number_or_percentage(arguments)? - .unit_value(), - ) - } else { - 255 - }; - - arguments.expect_exhausted()?; - Ok(rgba(red, green, blue, alpha)) -} - -#[cfg(feature="parser")] -#[inline] -fn parse_rgb_components_rgb<'i, 't, ComponentParser>( - component_parser: &ComponentParser, - arguments: &mut Parser<'i, 't>, -) -> Result<(u8, u8, u8, bool), ParseError<'i, ComponentParser::Error>> -where - ComponentParser: ColorComponentParser<'i>, -{ - // Either integers or percentages, but all the same type. - // https://drafts.csswg.org/css-color/#rgb-functions - let (red, is_number) = match component_parser.parse_number_or_percentage(arguments)? { - NumberOrPercentage::Number { value } => (clamp_floor_256_f32(value), true), - NumberOrPercentage::Percentage { unit_value } => (clamp_unit_f32(unit_value), false), - }; - - let uses_commas = arguments.try_parse(|i| i.expect_comma()).is_ok(); - - let green; - let blue; - if is_number { - green = clamp_floor_256_f32(component_parser.parse_number(arguments)?); - if uses_commas { - arguments.expect_comma()?; - } - blue = clamp_floor_256_f32(component_parser.parse_number(arguments)?); - } else { - green = clamp_unit_f32(component_parser.parse_percentage(arguments)?); - if uses_commas { - arguments.expect_comma()?; - } - blue = clamp_unit_f32(component_parser.parse_percentage(arguments)?); - } - - Ok((red, green, blue, uses_commas)) -} - -#[cfg(feature="parser")] -#[inline] -fn parse_rgb_components_hsl<'i, 't, ComponentParser>( - component_parser: &ComponentParser, - arguments: &mut Parser<'i, 't>, -) -> Result<(u8, u8, u8, bool), ParseError<'i, ComponentParser::Error>> -where - ComponentParser: ColorComponentParser<'i>, -{ - // Hue given as an angle - // https://drafts.csswg.org/css-values/#angles - let hue_degrees = component_parser.parse_angle_or_number(arguments)?.degrees(); - - // Subtract an integer before rounding, to avoid some rounding errors: - let hue_normalized_degrees = hue_degrees - 360. * (hue_degrees / 360.).floor(); - let hue = hue_normalized_degrees / 360.; - - // Saturation and lightness are clamped to 0% ... 100% - // https://drafts.csswg.org/css-color/#the-hsl-notation - let uses_commas = arguments.try_parse(|i| i.expect_comma()).is_ok(); - - let saturation = component_parser.parse_percentage(arguments)?; - let saturation = saturation.max(0.).min(1.); - - if uses_commas { - arguments.expect_comma()?; - } - - let lightness = component_parser.parse_percentage(arguments)?; - let lightness = lightness.max(0.).min(1.); - - // https://drafts.csswg.org/css-color/#hsl-color - // except with h pre-multiplied by 3, to avoid some rounding errors. - fn hue_to_rgb(m1: f32, m2: f32, mut h3: f32) -> f32 { - if h3 < 0. { - h3 += 3. - } - if h3 > 3. { - h3 -= 3. - } - - if h3 * 2. < 1. { - m1 + (m2 - m1) * h3 * 2. - } else if h3 * 2. < 3. { - m2 - } else if h3 < 2. { - m1 + (m2 - m1) * (2. - h3) * 2. - } else { - m1 - } - } - let m2 = if lightness <= 0.5 { - lightness * (saturation + 1.) - } else { - lightness + saturation - lightness * saturation - }; - let m1 = lightness * 2. - m2; - let hue_times_3 = hue * 3.; - let red = clamp_unit_f32(hue_to_rgb(m1, m2, hue_times_3 + 1.)); - let green = clamp_unit_f32(hue_to_rgb(m1, m2, hue_times_3)); - let blue = clamp_unit_f32(hue_to_rgb(m1, m2, hue_times_3 - 1.)); - return Ok((red, green, blue, uses_commas)); -} diff --git a/styles/src/engine.rs b/styles/src/engine.rs deleted file mode 100644 index da41ee5..0000000 --- a/styles/src/engine.rs +++ /dev/null @@ -1,131 +0,0 @@ -//! Implements a Theme Engine. This behaves a bit differently depending on -//! the mode your application is compiled in. -//! -//! - In `debug`, it scans a few places and loads any CSS files that are -//! necessary. It will also hot-reload CSS files as they change. -//! - In `release`, it scans those same places, and compiles your CSS into -//! your resulting binary. The hot-reloading functionality is not in release, -//! however it can be enabled if desired. -//! - -use std::fs; -use std::env; -use std::sync::RwLock; -use std::path::PathBuf; -use std::collections::HashMap; - -use toml; -use serde::Deserialize; - -use crate::stretch::style::Style; - -use crate::StylesList; -use crate::styles::Appearance; -use crate::stylesheet::StyleSheet; - -static CONFIG_FILE_NAME: &str = "alchemy.toml"; - -#[derive(Debug, Deserialize)] -struct RawConfig<'d> { - #[serde(borrow)] - general: Option>, -} - -#[derive(Debug, Deserialize)] -struct General<'a> { - #[serde(borrow)] - dirs: Option> -} - -/// The `ThemeEngine` controls loading themes and registering associated -/// styles. -#[derive(Debug)] -pub struct ThemeEngine { - pub dirs: Vec, - pub themes: RwLock> -} - -impl ThemeEngine { - /// Creates a new 'ThemeEngine` instance. - pub fn new() -> ThemeEngine { - // This env var is set by Cargo... so if this code breaks, there's - // bigger concerns, lol - let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); - - let root = PathBuf::from(manifest_dir); - let default_dirs = vec![root.join("themes")]; - - let toml_contents = read_config_file(); - let raw: RawConfig<'_> = toml::from_str(&toml_contents).expect(&format!("Invalid TOML in {}!", CONFIG_FILE_NAME)); - - let dirs = match raw.general { - Some(General { dirs }) => ( - dirs.map_or(default_dirs, |v| { - v.into_iter().map(|dir| root.join(dir)).collect() - }) - ), - - None => default_dirs - }; - - ThemeEngine { dirs, themes: RwLock::new(HashMap::new()) } - } - - /// Registers a stylesheet (typically created by the `styles! {}` macro) for a given - /// theme. - pub fn register_styles(&self, key: &str, stylesheet: StyleSheet) { - let mut themes = self.themes.write().unwrap(); - if !themes.contains_key(key) { - themes.insert(key.to_string(), stylesheet); - return; - } - - // if let Some(existing_stylesheet) = self.themes.get_mut(key) { - // *existing_stylesheet.merge(stylesheet); - //} - } - - /// Given a theme key, style keys, and a style, configures the style for layout - /// and appearance. - pub fn configure_style_for_keys_in_theme( - &self, - theme: &str, - keys: &StylesList, - style: &mut Style, - appearance: &mut Appearance - ) { - let themes = self.themes.read().unwrap(); - - match themes.get(theme) { - Some(theme) => { - for key in &keys.0 { - theme.apply_styles(key, style, appearance); - } - }, - - None => { - eprintln!("No styles for theme!"); - } - } - } - - /// The same logic as `configure_style_for_keys_in_theme`, but defaults to the default theme. - pub fn configure_styles_for_keys(&self, keys: &StylesList, style: &mut Style, appearance: &mut Appearance) { - self.configure_style_for_keys_in_theme("default", keys, style, appearance) - } -} - -/// Utility method for reading a config file from the `CARGO_MANIFEST_DIR`. Hat tip to -/// [askama](https://github.com/djc/askama) for this! -pub fn read_config_file() -> String { - let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); - let root = PathBuf::from(manifest_dir); - let filename = root.join(CONFIG_FILE_NAME); - - if filename.exists() { - fs::read_to_string(&filename) - .expect(&format!("Unable to read {}", filename.to_str().unwrap())) - } else { - "".to_string() - } -} diff --git a/styles/src/lib.rs b/styles/src/lib.rs deleted file mode 100644 index d6e60b0..0000000 --- a/styles/src/lib.rs +++ /dev/null @@ -1,42 +0,0 @@ -//! This crate hoists various styles and layout parameters for implementing -//! Flexbox in Alchemy. For all intents and purposes, you can essentially consider -//! this to be the root crate for Alchemy, as just about everything ends up using it. - -// We hoist this for ease of use in other crates, since... well, pretty much -// every other crate in the project imports this already. -pub use lazy_static::lazy_static; - -#[cfg(feature="parser")] -#[macro_use] pub extern crate cssparser; - -pub mod color; -pub use color::Color; - -mod engine; -use engine::ThemeEngine; - -mod spacedlist; -pub use spacedlist::SpacedList; - -mod spacedset; -pub use spacedset::SpacedSet; - -pub mod stretch; -pub use stretch::result::Layout; - -mod style_keys; -pub use style_keys::StyleKey; -pub type StylesList = SpacedSet; - -pub mod styles; -pub use styles::{Appearance, Styles, Style}; - -pub mod stylesheet; -pub use stylesheet::StyleSheet; - -#[cfg(feature="parser")] -pub mod styles_parser; - -lazy_static! { - pub static ref THEME_ENGINE: ThemeEngine = ThemeEngine::new(); -} diff --git a/styles/src/spacedlist.rs b/styles/src/spacedlist.rs deleted file mode 100644 index 0deefeb..0000000 --- a/styles/src/spacedlist.rs +++ /dev/null @@ -1,262 +0,0 @@ -//! A space separated list of values. -//! -//! This type represents a list of non-unique values represented as a string of -//! values separated by spaces in HTML attributes. This is rarely used; a -//! SpacedSet of unique values is much more common. - - -use std::fmt::{Debug, Display, Error, Formatter}; -use std::iter::FromIterator; -use std::ops::{Deref, DerefMut}; -use std::str::FromStr; - -/// A space separated list of values. -/// -/// This type represents a list of non-unique values represented as a string of -/// values separated by spaces in HTML attributes. This is rarely used; a -/// SpacedSet of unique values is much more common. -#[derive(Clone, PartialEq, Eq, Hash)] -pub struct SpacedList(Vec); - -impl SpacedList { - /// Construct an empty `SpacedList`. - pub fn new() -> Self { - SpacedList(Vec::new()) - } -} - -impl Default for SpacedList { - fn default() -> Self { - Self::new() - } -} - -impl FromIterator for SpacedList { - fn from_iter(iter: I) -> Self - where - I: IntoIterator, - { - SpacedList(iter.into_iter().collect()) - } -} - -impl<'a, A: 'a + Clone> FromIterator<&'a A> for SpacedList { - fn from_iter(iter: I) -> Self - where - I: IntoIterator, - { - SpacedList(iter.into_iter().cloned().collect()) - } -} - -impl<'a, A: FromStr> From<&'a str> for SpacedList -where - ::Err: Debug, -{ - fn from(s: &'a str) -> Self { - Self::from_iter(s.split_whitespace().map(|s| FromStr::from_str(s).unwrap())) - } -} - -impl Deref for SpacedList { - type Target = Vec; - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -impl DerefMut for SpacedList { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } -} - -impl Display for SpacedList { - fn fmt(&self, f: &mut Formatter) -> Result<(), Error> { - let mut it = self.0.iter().peekable(); - while let Some(class) = it.next() { - Display::fmt(class, f)?; - if it.peek().is_some() { - Display::fmt(" ", f)?; - } - } - Ok(()) - } -} - -impl Debug for SpacedList { - fn fmt(&self, f: &mut Formatter) -> Result<(), Error> { - f.debug_list().entries(self.0.iter()).finish() - } -} - -impl<'a, 'b, A: FromStr> From<(&'a str, &'b str)> for SpacedList -where - ::Err: Debug, -{ - fn from(s: (&str, &str)) -> Self { - let mut list = Self::new(); - list.push(FromStr::from_str(s.0).unwrap()); - list.push(FromStr::from_str(s.1).unwrap()); - list - } -} - -impl<'a, 'b, 'c, A: FromStr> From<(&'a str, &'b str, &'c str)> for SpacedList -where - ::Err: Debug, -{ - fn from(s: (&str, &str, &str)) -> Self { - let mut list = Self::new(); - list.push(FromStr::from_str(s.0).unwrap()); - list.push(FromStr::from_str(s.1).unwrap()); - list.push(FromStr::from_str(s.2).unwrap()); - list - } -} - -impl<'a, 'b, 'c, 'd, A: FromStr> From<(&'a str, &'b str, &'c str, &'d str)> for SpacedList -where - ::Err: Debug, -{ - fn from(s: (&str, &str, &str, &str)) -> Self { - let mut list = Self::new(); - list.push(FromStr::from_str(s.0).unwrap()); - list.push(FromStr::from_str(s.1).unwrap()); - list.push(FromStr::from_str(s.2).unwrap()); - list.push(FromStr::from_str(s.3).unwrap()); - list - } -} - -impl<'a, 'b, 'c, 'd, 'e, A: FromStr> From<(&'a str, &'b str, &'c str, &'d str, &'e str)> - for SpacedList -where - ::Err: Debug, -{ - fn from(s: (&str, &str, &str, &str, &str)) -> Self { - let mut list = Self::new(); - list.push(FromStr::from_str(s.0).unwrap()); - list.push(FromStr::from_str(s.1).unwrap()); - list.push(FromStr::from_str(s.2).unwrap()); - list.push(FromStr::from_str(s.3).unwrap()); - list.push(FromStr::from_str(s.4).unwrap()); - list - } -} - -impl<'a, 'b, 'c, 'd, 'e, 'f, A: FromStr> - From<(&'a str, &'b str, &'c str, &'d str, &'e str, &'f str)> for SpacedList -where - ::Err: Debug, -{ - fn from(s: (&str, &str, &str, &str, &str, &str)) -> Self { - let mut list = Self::new(); - list.push(FromStr::from_str(s.0).unwrap()); - list.push(FromStr::from_str(s.1).unwrap()); - list.push(FromStr::from_str(s.2).unwrap()); - list.push(FromStr::from_str(s.3).unwrap()); - list.push(FromStr::from_str(s.4).unwrap()); - list.push(FromStr::from_str(s.5).unwrap()); - list - } -} - -impl<'a, 'b, 'c, 'd, 'e, 'f, 'g, A: FromStr> - From<( - &'a str, - &'b str, - &'c str, - &'d str, - &'e str, - &'f str, - &'g str, - )> for SpacedList -where - ::Err: Debug, -{ - fn from(s: (&str, &str, &str, &str, &str, &str, &str)) -> Self { - let mut list = Self::new(); - list.push(FromStr::from_str(s.0).unwrap()); - list.push(FromStr::from_str(s.1).unwrap()); - list.push(FromStr::from_str(s.2).unwrap()); - list.push(FromStr::from_str(s.3).unwrap()); - list.push(FromStr::from_str(s.4).unwrap()); - list.push(FromStr::from_str(s.5).unwrap()); - list.push(FromStr::from_str(s.6).unwrap()); - list - } -} - -impl<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, A: FromStr> - From<( - &'a str, - &'b str, - &'c str, - &'d str, - &'e str, - &'f str, - &'g str, - &'h str, - )> for SpacedList -where - ::Err: Debug, -{ - fn from(s: (&str, &str, &str, &str, &str, &str, &str, &str)) -> Self { - let mut list = Self::new(); - list.push(FromStr::from_str(s.0).unwrap()); - list.push(FromStr::from_str(s.1).unwrap()); - list.push(FromStr::from_str(s.2).unwrap()); - list.push(FromStr::from_str(s.3).unwrap()); - list.push(FromStr::from_str(s.4).unwrap()); - list.push(FromStr::from_str(s.5).unwrap()); - list.push(FromStr::from_str(s.6).unwrap()); - list.push(FromStr::from_str(s.7).unwrap()); - list - } -} - -macro_rules! spacedlist_from_array { - ($num:tt) => { - impl<'a, A: FromStr> From<[&'a str; $num]> for SpacedList - where - ::Err: Debug, - { - fn from(s: [&str; $num]) -> Self { - Self::from_iter(s.into_iter().map(|s| FromStr::from_str(*s).unwrap())) - } - } - }; -} -spacedlist_from_array!(1); -spacedlist_from_array!(2); -spacedlist_from_array!(3); -spacedlist_from_array!(4); -spacedlist_from_array!(5); -spacedlist_from_array!(6); -spacedlist_from_array!(7); -spacedlist_from_array!(8); -spacedlist_from_array!(9); -spacedlist_from_array!(10); -spacedlist_from_array!(11); -spacedlist_from_array!(12); -spacedlist_from_array!(13); -spacedlist_from_array!(14); -spacedlist_from_array!(15); -spacedlist_from_array!(16); -spacedlist_from_array!(17); -spacedlist_from_array!(18); -spacedlist_from_array!(19); -spacedlist_from_array!(20); -spacedlist_from_array!(21); -spacedlist_from_array!(22); -spacedlist_from_array!(23); -spacedlist_from_array!(24); -spacedlist_from_array!(25); -spacedlist_from_array!(26); -spacedlist_from_array!(27); -spacedlist_from_array!(28); -spacedlist_from_array!(29); -spacedlist_from_array!(30); -spacedlist_from_array!(31); -spacedlist_from_array!(32); diff --git a/styles/src/spacedset.rs b/styles/src/spacedset.rs deleted file mode 100644 index 115f8ef..0000000 --- a/styles/src/spacedset.rs +++ /dev/null @@ -1,308 +0,0 @@ -//! A space separated set of unique values. -//! -//! This type represents a set of unique values represented as a string of -//! values separated by spaces in HTML attributes. - -use std::collections::BTreeSet; -use std::fmt::{Debug, Display, Error, Formatter}; -use std::iter::FromIterator; -use std::ops::{Deref, DerefMut}; -use std::str::FromStr; - -/// A space separated set of unique values. -/// -/// This type represents a set of unique values represented as a string of -/// values separated by spaces in HTML attributes. -#[derive(Clone, PartialEq, Eq, Hash)] -pub struct SpacedSet(pub BTreeSet); - -impl SpacedSet { - /// Construct an empty `SpacedSet`. - pub fn new() -> Self { - SpacedSet(BTreeSet::new()) - } - - /// Add a value to the `SpacedSet`. - pub fn add>(&mut self, value: T) -> bool { - self.0.insert(value.into()) - } -} - -impl Default for SpacedSet { - fn default() -> Self { - Self::new() - } -} - -impl FromIterator for SpacedSet { - fn from_iter(iter: I) -> Self - where - I: IntoIterator, - { - SpacedSet(iter.into_iter().collect()) - } -} - -impl<'a, A: 'a + Ord + Clone> FromIterator<&'a A> for SpacedSet { - fn from_iter(iter: I) -> Self - where - I: IntoIterator, - { - SpacedSet(iter.into_iter().cloned().collect()) - } -} - -impl<'a, A: Ord + FromStr> FromStr for SpacedSet -where - ::Err: Debug, -{ - type Err = ::Err; - - fn from_str(s: &str) -> Result { - let result: Result, Self::Err> = - s.split_whitespace().map(|s| FromStr::from_str(s)).collect(); - result.map(Self::from_iter) - } -} - -impl<'a, A: Ord + FromStr> From<&'a str> for SpacedSet -where - ::Err: Debug, -{ - fn from(s: &'a str) -> Self { - Self::from_iter(s.split_whitespace().map(|s| FromStr::from_str(s).unwrap())) - } -} - -impl Deref for SpacedSet { - type Target = BTreeSet; - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -impl DerefMut for SpacedSet { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } -} - -impl Display for SpacedSet { - fn fmt(&self, f: &mut Formatter) -> Result<(), Error> { - let mut it = self.0.iter().peekable(); - while let Some(class) = it.next() { - Display::fmt(class, f)?; - if it.peek().is_some() { - Display::fmt(" ", f)?; - } - } - Ok(()) - } -} - -impl Debug for SpacedSet { - fn fmt(&self, f: &mut Formatter) -> Result<(), Error> { - f.debug_list().entries(self.0.iter()).finish() - } -} - -impl<'a, A: Ord + FromStr> From> for SpacedSet -where - ::Err: Debug, -{ - fn from(s: Vec<&'a str>) -> Self { - let mut list = Self::new(); - - for key in s { - list.insert(FromStr::from_str(key).unwrap()); - } - - list - } -} - -impl<'a, A: Ord + FromStr> From<&Vec<&'a str>> for SpacedSet -where - ::Err: Debug, -{ - fn from(s: &Vec<&'a str>) -> Self { - let mut list = Self::new(); - - for key in s { - list.insert(FromStr::from_str(key).unwrap()); - } - - list - } -} - -impl<'a, 'b, A: Ord + FromStr> From<(&'a str, &'b str)> for SpacedSet -where - ::Err: Debug, -{ - fn from(s: (&str, &str)) -> Self { - let mut list = Self::new(); - list.insert(FromStr::from_str(s.0).unwrap()); - list.insert(FromStr::from_str(s.1).unwrap()); - list - } -} - -impl<'a, 'b, 'c, A: Ord + FromStr> From<(&'a str, &'b str, &'c str)> for SpacedSet -where - ::Err: Debug, -{ - fn from(s: (&str, &str, &str)) -> Self { - let mut list = Self::new(); - list.insert(FromStr::from_str(s.0).unwrap()); - list.insert(FromStr::from_str(s.1).unwrap()); - list.insert(FromStr::from_str(s.2).unwrap()); - list - } -} - -impl<'a, 'b, 'c, 'd, A: Ord + FromStr> From<(&'a str, &'b str, &'c str, &'d str)> for SpacedSet -where - ::Err: Debug, -{ - fn from(s: (&str, &str, &str, &str)) -> Self { - let mut list = Self::new(); - list.insert(FromStr::from_str(s.0).unwrap()); - list.insert(FromStr::from_str(s.1).unwrap()); - list.insert(FromStr::from_str(s.2).unwrap()); - list.insert(FromStr::from_str(s.3).unwrap()); - list - } -} - -impl<'a, 'b, 'c, 'd, 'e, A: Ord + FromStr> From<(&'a str, &'b str, &'c str, &'d str, &'e str)> - for SpacedSet -where - ::Err: Debug, -{ - fn from(s: (&str, &str, &str, &str, &str)) -> Self { - let mut list = Self::new(); - list.insert(FromStr::from_str(s.0).unwrap()); - list.insert(FromStr::from_str(s.1).unwrap()); - list.insert(FromStr::from_str(s.2).unwrap()); - list.insert(FromStr::from_str(s.3).unwrap()); - list.insert(FromStr::from_str(s.4).unwrap()); - list - } -} - -impl<'a, 'b, 'c, 'd, 'e, 'f, A: Ord + FromStr> - From<(&'a str, &'b str, &'c str, &'d str, &'e str, &'f str)> for SpacedSet -where - ::Err: Debug, -{ - fn from(s: (&str, &str, &str, &str, &str, &str)) -> Self { - let mut list = Self::new(); - list.insert(FromStr::from_str(s.0).unwrap()); - list.insert(FromStr::from_str(s.1).unwrap()); - list.insert(FromStr::from_str(s.2).unwrap()); - list.insert(FromStr::from_str(s.3).unwrap()); - list.insert(FromStr::from_str(s.4).unwrap()); - list.insert(FromStr::from_str(s.5).unwrap()); - list - } -} - -impl<'a, 'b, 'c, 'd, 'e, 'f, 'g, A: Ord + FromStr> - From<( - &'a str, - &'b str, - &'c str, - &'d str, - &'e str, - &'f str, - &'g str, - )> for SpacedSet -where - ::Err: Debug, -{ - fn from(s: (&str, &str, &str, &str, &str, &str, &str)) -> Self { - let mut list = Self::new(); - list.insert(FromStr::from_str(s.0).unwrap()); - list.insert(FromStr::from_str(s.1).unwrap()); - list.insert(FromStr::from_str(s.2).unwrap()); - list.insert(FromStr::from_str(s.3).unwrap()); - list.insert(FromStr::from_str(s.4).unwrap()); - list.insert(FromStr::from_str(s.5).unwrap()); - list.insert(FromStr::from_str(s.6).unwrap()); - list - } -} - -impl<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, A: Ord + FromStr> - From<( - &'a str, - &'b str, - &'c str, - &'d str, - &'e str, - &'f str, - &'g str, - &'h str, - )> for SpacedSet -where - ::Err: Debug, -{ - fn from(s: (&str, &str, &str, &str, &str, &str, &str, &str)) -> Self { - let mut list = Self::new(); - list.insert(FromStr::from_str(s.0).unwrap()); - list.insert(FromStr::from_str(s.1).unwrap()); - list.insert(FromStr::from_str(s.2).unwrap()); - list.insert(FromStr::from_str(s.3).unwrap()); - list.insert(FromStr::from_str(s.4).unwrap()); - list.insert(FromStr::from_str(s.5).unwrap()); - list.insert(FromStr::from_str(s.6).unwrap()); - list.insert(FromStr::from_str(s.7).unwrap()); - list - } -} - -macro_rules! spacedlist_from_array { - ($num:tt) => { - impl<'a, A: Ord + FromStr> From<[&'a str; $num]> for SpacedSet - where - ::Err: Debug, - { - fn from(s: [&str; $num]) -> Self { - Self::from_iter(s.into_iter().map(|s| FromStr::from_str(*s).unwrap())) - } - } - }; -} -spacedlist_from_array!(1); -spacedlist_from_array!(2); -spacedlist_from_array!(3); -spacedlist_from_array!(4); -spacedlist_from_array!(5); -spacedlist_from_array!(6); -spacedlist_from_array!(7); -spacedlist_from_array!(8); -spacedlist_from_array!(9); -spacedlist_from_array!(10); -spacedlist_from_array!(11); -spacedlist_from_array!(12); -spacedlist_from_array!(13); -spacedlist_from_array!(14); -spacedlist_from_array!(15); -spacedlist_from_array!(16); -spacedlist_from_array!(17); -spacedlist_from_array!(18); -spacedlist_from_array!(19); -spacedlist_from_array!(20); -spacedlist_from_array!(21); -spacedlist_from_array!(22); -spacedlist_from_array!(23); -spacedlist_from_array!(24); -spacedlist_from_array!(25); -spacedlist_from_array!(26); -spacedlist_from_array!(27); -spacedlist_from_array!(28); -spacedlist_from_array!(29); -spacedlist_from_array!(30); -spacedlist_from_array!(31); -spacedlist_from_array!(32); diff --git a/styles/src/stretch/algo.rs b/styles/src/stretch/algo.rs deleted file mode 100644 index 8ef6948..0000000 --- a/styles/src/stretch/algo.rs +++ /dev/null @@ -1,1364 +0,0 @@ -//! This module is included while awaiting an upstream merge in stretch proper. -//! You should not rely on it, and consider it an implementation detail. - -use core::any::Any; -use core::f32; - -use crate::stretch::node::{Node, Storage, Stretch}; -use crate::stretch::result; -use crate::stretch::style::*; -use crate::stretch::number::Number::*; -use crate::stretch::number::*; -use crate::stretch::geometry::{Point, Rect, Size}; - -#[derive(Debug, Clone)] -pub struct ComputeResult { - pub size: Size, -} - -struct FlexItem { - node: Node, - - size: Size, - min_size: Size, - max_size: Size, - - position: Rect, - margin: Rect, - padding: Rect, - border: Rect, - - flex_basis: f32, - inner_flex_basis: f32, - violation: f32, - frozen: bool, - - hypothetical_inner_size: Size, - hypothetical_outer_size: Size, - target_size: Size, - outer_target_size: Size, - - baseline: f32, - - // temporary values for holding offset in the main / cross direction. - // offset is the relative position from the item's natural flow position based on - // relative position values, alignment, and justification. Does not include margin/padding/border. - offset_main: f32, - offset_cross: f32, -} - -struct FlexLine { - items: Vec, - cross_size: f32, - offset_cross: f32, -} - -impl Stretch { - pub(crate) fn compute(&mut self, root: Node, size: Size) -> Result<(), Box> { - let style = self.style[&root]; - let has_root_min_max = style.min_size.width.is_defined() - || style.min_size.height.is_defined() - || style.max_size.width.is_defined() - || style.max_size.height.is_defined(); - - let result = if has_root_min_max { - let first_pass = self.compute_internal( - root, - Size { width: style.size.width.resolve(size.width), height: style.size.height.resolve(size.height) }, - size, - false, - )?; - - self.compute_internal( - root, - Size { - width: first_pass - .size - .width - .maybe_max(style.min_size.width.resolve(size.width)) - .maybe_min(style.max_size.width.resolve(size.width)) - .to_number(), - height: first_pass - .size - .height - .maybe_max(style.min_size.height.resolve(size.height)) - .maybe_min(style.max_size.height.resolve(size.height)) - .to_number(), - }, - size, - true, - )? - } else { - self.compute_internal( - root, - Size { width: style.size.width.resolve(size.width), height: style.size.height.resolve(size.height) }, - size, - true, - )? - }; - - *self.layout.get_mut(root).unwrap() = result::Layout { - order: 0, - size: Size { width: result.size.width, height: result.size.height }, - location: Point { x: 0.0, y: 0.0 }, - }; - - Self::round_layout(&mut self.layout, &self.children, root, 0.0, 0.0); - Ok(()) - } - - fn round_layout( - layouts: &mut Storage, - children: &Storage>, - root: Node, - abs_x: f32, - abs_y: f32, - ) { - let layout = layouts.get_mut(root).unwrap(); - let abs_x = abs_x + layout.location.x; - let abs_y = abs_y + layout.location.y; - - layout.location.x = layout.location.x.round(); - layout.location.y = layout.location.y.round(); - layout.size.width = (abs_x + layout.size.width).round() - abs_x.round(); - layout.size.height = (abs_y + layout.size.height).round() - abs_y.round(); - for child in &children[&root] { - Self::round_layout(layouts, children, *child, abs_x, abs_y); - } - } - - fn compute_internal( - &mut self, - node: Node, - node_size: Size, - parent_size: Size, - perform_layout: bool, - ) -> Result> { - *self.is_dirty.get_mut(node).unwrap() = false; - - // First we check if we have a result for the given input - if let Some(cache) = &self.layout_cache[&node] { - if cache.perform_layout || !perform_layout { - let width_compatible = if let Number::Defined(width) = node_size.width { - (width - cache.result.size.width).abs() < f32::EPSILON - } else { - cache.node_size.width.is_undefined() - }; - - let height_compatible = if let Number::Defined(height) = node_size.height { - (height - cache.result.size.height).abs() < f32::EPSILON - } else { - cache.node_size.height.is_undefined() - }; - - if width_compatible && height_compatible { - return Ok(cache.result.clone()); - } - - if cache.node_size == node_size && cache.parent_size == parent_size { - return Ok(cache.result.clone()); - } - } - } - - // Define some general constants we will need for the remainder - // of the algorithm. - - let dir = self.style[&node].flex_direction; - let is_row = dir.is_row(); - let is_column = dir.is_column(); - let is_wrap_reverse = self.style[&node].flex_wrap == FlexWrap::WrapReverse; - - let margin = self.style[&node].margin.map(|n| n.resolve(parent_size.width).or_else(0.0)); - let padding = self.style[&node].padding.map(|n| n.resolve(parent_size.width).or_else(0.0)); - let border = self.style[&node].border.map(|n| n.resolve(parent_size.width).or_else(0.0)); - - let padding_border = Rect { - start: padding.start + border.start, - end: padding.end + border.end, - top: padding.top + border.top, - bottom: padding.bottom + border.bottom, - }; - - let node_inner_size = Size { - width: node_size.width - padding_border.horizontal(), - height: node_size.height - padding_border.vertical(), - }; - - let mut container_size = Size { width: 0.0, height: 0.0 }; - let mut inner_container_size = Size { width: 0.0, height: 0.0 }; - - // If this is a leaf node we can skip a lot of this function in some cases - if self.children[&node].is_empty() { - if node_size.width.is_defined() && node_size.height.is_defined() { - return Ok(ComputeResult { size: node_size.map(|s| s.or_else(0.0)) }); - } - - if let Some(ref measure) = self.measure[&node] { - let result = ComputeResult { size: measure(node_size)? }; - *self.layout_cache.get_mut(node).unwrap() = - Some(result::Cache { node_size, parent_size, perform_layout, result: result.clone() }); - return Ok(result); - } - - return Ok(ComputeResult { - size: Size { - width: node_size.width.or_else(0.0) + padding_border.horizontal(), - height: node_size.height.or_else(0.0) + padding_border.vertical(), - }, - }); - } - - // 9.2. Line Length Determination - - // 1. Generate anonymous flex items as described in §4 Flex Items. - - // 2. Determine the available main and cross space for the flex items. - // For each dimension, if that dimension of the flex container’s content box - // is a definite size, use that; if that dimension of the flex container is - // being sized under a min or max-content constraint, the available space in - // that dimension is that constraint; otherwise, subtract the flex container’s - // margin, border, and padding from the space available to the flex container - // in that dimension and use that value. This might result in an infinite value. - - let available_space = Size { - width: node_size.width.or_else(parent_size.width - margin.horizontal()) - padding_border.horizontal(), - height: node_size.height.or_else(parent_size.height - margin.vertical()) - padding_border.vertical(), - }; - - let mut flex_items: Vec = self.children[&node] - .iter() - .map(|child| (child, self.style[&child])) - .filter(|(_, style)| style.position_type != PositionType::Absolute) - .filter(|(_, style)| style.display != Display::None) - .map(|(child, child_style)| FlexItem { - node: *child, - - size: Size { - width: child_style.size.width.resolve(node_inner_size.width), - height: child_style.size.height.resolve(node_inner_size.height), - }, - - min_size: Size { - width: child_style.min_size.width.resolve(node_inner_size.width), - height: child_style.min_size.height.resolve(node_inner_size.height), - }, - - max_size: Size { - width: child_style.max_size.width.resolve(node_inner_size.width), - height: child_style.max_size.height.resolve(node_inner_size.height), - }, - - position: child_style.position.map(|p| p.resolve(node_inner_size.width)), - margin: child_style.margin.map(|m| m.resolve(node_inner_size.width).or_else(0.0)), - padding: child_style.padding.map(|p| p.resolve(node_inner_size.width).or_else(0.0)), - border: child_style.border.map(|b| b.resolve(node_inner_size.width).or_else(0.0)), - - flex_basis: 0.0, - inner_flex_basis: 0.0, - violation: 0.0, - frozen: false, - - hypothetical_inner_size: Size { width: 0.0, height: 0.0 }, - hypothetical_outer_size: Size { width: 0.0, height: 0.0 }, - target_size: Size { width: 0.0, height: 0.0 }, - outer_target_size: Size { width: 0.0, height: 0.0 }, - - baseline: 0.0, - - offset_main: 0.0, - offset_cross: 0.0, - }) - .collect(); - - let has_baseline_child = flex_items.iter().fold(false, |result, child| { - result || self.style[&child.node].align_self(&self.style[&node]) == AlignSelf::Baseline - }); - - // TODO - this does not follow spec. See commented out code below - // 3. Determine the flex base size and hypothetical main size of each item: - flex_items.iter_mut().try_for_each(|child| -> Result<(), Box> { - let child_style = self.style[&child.node]; - - // A. If the item has a definite used flex basis, that’s the flex base size. - - let flex_basis = child_style.flex_basis.resolve(node_inner_size.main(dir)); - if flex_basis.is_defined() { - child.flex_basis = flex_basis.or_else(0.0); - return Ok(()); - }; - - // B. If the flex item has an intrinsic aspect ratio, - // a used flex basis of content, and a definite cross size, - // then the flex base size is calculated from its inner - // cross size and the flex item’s intrinsic aspect ratio. - - if let Defined(ratio) = child_style.aspect_ratio { - if let Defined(cross) = node_size.cross(dir) { - if child_style.flex_basis == Dimension::Auto { - child.flex_basis = cross * ratio; - return Ok(()); - } - } - } - - // C. If the used flex basis is content or depends on its available space, - // and the flex container is being sized under a min-content or max-content - // constraint (e.g. when performing automatic table layout [CSS21]), - // size the item under that constraint. The flex base size is the item’s - // resulting main size. - - // TODO - Probably need to cover this case in future - - // D. Otherwise, if the used flex basis is content or depends on its - // available space, the available main size is infinite, and the flex item’s - // inline axis is parallel to the main axis, lay the item out using the rules - // for a box in an orthogonal flow [CSS3-WRITING-MODES]. The flex base size - // is the item’s max-content main size. - - // TODO - Probably need to cover this case in future - - // E. Otherwise, size the item into the available space using its used flex basis - // in place of its main size, treating a value of content as max-content. - // If a cross size is needed to determine the main size (e.g. when the - // flex item’s main size is in its block axis) and the flex item’s cross size - // is auto and not definite, in this calculation use fit-content as the - // flex item’s cross size. The flex base size is the item’s resulting main size. - - let width: Number = if !child.size.width.is_defined() - && child_style.align_self(&self.style[&node]) == AlignSelf::Stretch - && is_column - { - available_space.width - } else { - child.size.width - }; - - let height: Number = if !child.size.height.is_defined() - && child_style.align_self(&self.style[&node]) == AlignSelf::Stretch - && is_row - { - available_space.height - } else { - child.size.height - }; - - child.flex_basis = self - .compute_internal( - child.node, - Size { - width: width.maybe_max(child.min_size.width).maybe_min(child.max_size.width), - height: height.maybe_max(child.min_size.height).maybe_min(child.max_size.height), - }, - available_space, - false, - )? - .size - .main(dir) - .maybe_max(child.min_size.main(dir)) - .maybe_min(child.max_size.main(dir)); - - Ok(()) - })?; - - // The hypothetical main size is the item’s flex base size clamped according to its - // used min and max main sizes (and flooring the content box size at zero). - - flex_items.iter_mut().try_for_each(|child| -> Result<(), Box> { - child.inner_flex_basis = child.flex_basis - child.padding.main(dir) - child.border.main(dir); - - // TODO - not really spec abiding but needs to be done somewhere. probably somewhere else though. - // The following logic was developed not from the spec but by trail and error looking into how - // webkit handled various scenarios. Can probably be solved better by passing in - // min-content max-content constraints from the top - let min_main = self - .compute_internal(child.node, Size { width: Undefined, height: Undefined }, available_space, false)? - .size - .main(dir) - .maybe_max(child.min_size.main(dir)) - .maybe_min(child.size.main(dir)) - .to_number(); - - child - .hypothetical_inner_size - .set_main(dir, child.flex_basis.maybe_max(min_main).maybe_min(child.max_size.main(dir))); - - child - .hypothetical_outer_size - .set_main(dir, child.hypothetical_inner_size.main(dir) + child.margin.main(dir)); - - Ok(()) - })?; - - // 9.3. Main Size Determination - - // 5. Collect flex items into flex lines: - // - If the flex container is single-line, collect all the flex items into - // a single flex line. - // - Otherwise, starting from the first uncollected item, collect consecutive - // items one by one until the first time that the next collected item would - // not fit into the flex container’s inner main size (or until a forced break - // is encountered, see §10 Fragmenting Flex Layout). If the very first - // uncollected item wouldn’t fit, collect just it into the line. - // - // For this step, the size of a flex item is its outer hypothetical main size. (Note: This can be negative.) - // Repeat until all flex items have been collected into flex lines - // - // Note that the "collect as many" line will collect zero-sized flex items onto - // the end of the previous line even if the last non-zero item exactly "filled up" the line. - - let mut flex_lines = { - let mut lines: Vec = vec![]; - let mut line_length = 0.0; - - if self.style[&node].flex_wrap == FlexWrap::NoWrap { - lines.push(FlexLine { items: flex_items, cross_size: 0.0, offset_cross: 0.0 }); - } else { - let mut line = FlexLine { items: vec![], cross_size: 0.0, offset_cross: 0.0 }; - - for child in flex_items { - line_length += child.hypothetical_outer_size.main(dir); - - if let Defined(main) = available_space.main(dir) { - if line_length > main && !line.items.is_empty() { - line_length = child.hypothetical_outer_size.main(dir); - lines.push(line); - line = FlexLine { items: vec![], cross_size: 0.0, offset_cross: 0.0 }; - } - } - - line.items.push(child); - } - - lines.push(line); - } - - lines - }; - - // 6. Resolve the flexible lengths of all the flex items to find their used main size. - // See §9.7 Resolving Flexible Lengths. - // - // 9.7. Resolving Flexible Lengths - - flex_lines.iter_mut().try_for_each(|line| -> Result<(), Box> { - // 1. Determine the used flex factor. Sum the outer hypothetical main sizes of all - // items on the line. If the sum is less than the flex container’s inner main size, - // use the flex grow factor for the rest of this algorithm; otherwise, use the - // flex shrink factor. - - let used_flex_factor: f32 = line.items.iter().map(|child| child.hypothetical_outer_size.main(dir)).sum(); - let growing = used_flex_factor < node_inner_size.main(dir).or_else(0.0); - let shrinking = !growing; - - // 2. Size inflexible items. Freeze, setting its target main size to its hypothetical main size - // - Any item that has a flex factor of zero - // - If using the flex grow factor: any item that has a flex base size - // greater than its hypothetical main size - // - If using the flex shrink factor: any item that has a flex base size - // smaller than its hypothetical main size - - line.items.iter_mut().try_for_each(|child| -> Result<(), Box> { - // TODO - This is not found by reading the spec. Maybe this can be done in some other place - // instead. This was found by trail and error fixing tests to align with webkit output. - if node_inner_size.main(dir).is_undefined() && is_row { - child.target_size.set_main( - dir, - self.compute_internal( - child.node, - Size { - width: child.size.width.maybe_max(child.min_size.width).maybe_min(child.max_size.width), - height: child - .size - .height - .maybe_max(child.min_size.height) - .maybe_min(child.max_size.height), - }, - available_space, - false, - )? - .size - .main(dir) - .maybe_max(child.min_size.main(dir)) - .maybe_min(child.max_size.main(dir)), - ); - } else { - child.target_size.set_main(dir, child.hypothetical_inner_size.main(dir)); - } - - // TODO this should really only be set inside the if-statement below but - // that causes the target_main_size to never be set for some items - - child.outer_target_size.set_main(dir, child.target_size.main(dir) + child.margin.main(dir)); - - let child_style = &self.style[&child.node]; - if (child_style.flex_grow == 0.0 && child_style.flex_shrink == 0.0) - || (growing && child.flex_basis > child.hypothetical_inner_size.main(dir)) - || (shrinking && child.flex_basis < child.hypothetical_inner_size.main(dir)) - { - child.frozen = true; - } - - Ok(()) - })?; - - // 3. Calculate initial free space. Sum the outer sizes of all items on the line, - // and subtract this from the flex container’s inner main size. For frozen items, - // use their outer target main size; for other items, use their outer flex base size. - - let used_space: f32 = line - .items - .iter() - .map(|child| { - child.margin.main(dir) + if child.frozen { child.target_size.main(dir) } else { child.flex_basis } - }) - .sum(); - - let initial_free_space = (node_inner_size.main(dir) - used_space).or_else(0.0); - - // 4. Loop - - loop { - // a. Check for flexible items. If all the flex items on the line are frozen, - // free space has been distributed; exit this loop. - - let mut frozen: Vec<&mut FlexItem> = vec![]; - let mut unfrozen: Vec<&mut FlexItem> = vec![]; - - line.items.iter_mut().for_each(|child| { - if child.frozen { - frozen.push(child); - } else { - unfrozen.push(child); - } - }); - - if unfrozen.is_empty() { - break; - } - - // b. Calculate the remaining free space as for initial free space, above. - // If the sum of the unfrozen flex items’ flex factors is less than one, - // multiply the initial free space by this sum. If the magnitude of this - // value is less than the magnitude of the remaining free space, use this - // as the remaining free space. - - let used_space: f32 = Iterator::chain(frozen.iter(), unfrozen.iter()) - .map(|child| { - child.margin.main(dir) - + if child.frozen { child.target_size.main(dir) } else { child.flex_basis } - }) - .sum(); - - let (sum_flex_grow, sum_flex_shrink): (f32, f32) = - unfrozen.iter().fold((0.0, 0.0), |(flex_grow, flex_shrink), item| { - let style = &self.style[&item.node]; - (flex_grow + style.flex_grow, flex_shrink + style.flex_shrink) - }); - - let free_space = if growing && sum_flex_grow < 1.0 { - (initial_free_space * sum_flex_grow).maybe_min(node_inner_size.main(dir) - used_space) - } else if shrinking && sum_flex_shrink < 1.0 { - (initial_free_space * sum_flex_shrink).maybe_max(node_inner_size.main(dir) - used_space) - } else { - (node_inner_size.main(dir) - used_space).or_else(0.0) - }; - - // c. Distribute free space proportional to the flex factors. - // - If the remaining free space is zero - // Do Nothing - // - If using the flex grow factor - // Find the ratio of the item’s flex grow factor to the sum of the - // flex grow factors of all unfrozen items on the line. Set the item’s - // target main size to its flex base size plus a fraction of the remaining - // free space proportional to the ratio. - // - If using the flex shrink factor - // For every unfrozen item on the line, multiply its flex shrink factor by - // its inner flex base size, and note this as its scaled flex shrink factor. - // Find the ratio of the item’s scaled flex shrink factor to the sum of the - // scaled flex shrink factors of all unfrozen items on the line. Set the item’s - // target main size to its flex base size minus a fraction of the absolute value - // of the remaining free space proportional to the ratio. Note this may result - // in a negative inner main size; it will be corrected in the next step. - // - Otherwise - // Do Nothing - - if free_space.is_normal() { - if growing && sum_flex_grow > 0.0 { - unfrozen.iter_mut().for_each(|child| { - child.target_size.set_main( - dir, - child.flex_basis + free_space * (self.style[&child.node].flex_grow / sum_flex_grow), - ); - }); - } else if shrinking && sum_flex_shrink > 0.0 { - let sum_scaled_shrink_factor: f32 = unfrozen - .iter() - .map(|child| child.inner_flex_basis * self.style[&child.node].flex_shrink) - .sum(); - - if sum_scaled_shrink_factor > 0.0 { - unfrozen.iter_mut().for_each(|child| { - let scaled_shrink_factor = child.inner_flex_basis * self.style[&child.node].flex_shrink; - child.target_size.set_main( - dir, - child.flex_basis + free_space * (scaled_shrink_factor / sum_scaled_shrink_factor), - ) - }); - } - } - } - - // d. Fix min/max violations. Clamp each non-frozen item’s target main size by its - // used min and max main sizes and floor its content-box size at zero. If the - // item’s target main size was made smaller by this, it’s a max violation. - // If the item’s target main size was made larger by this, it’s a min violation. - - let total_violation = unfrozen.iter_mut().try_fold(0.0, |acc, child| -> Result> { - // TODO - not really spec abiding but needs to be done somewhere. probably somewhere else though. - // The following logic was developed not from the spec but by trail and error looking into how - // webkit handled various scenarios. Can probably be solved better by passing in - // min-content max-content constraints from the top. Need to figure out correct thing to do here as - // just piling on more conditionals. - let min_main = if is_row && self.measure[&child.node].is_none() { - self.compute_internal( - child.node, - Size { width: Undefined, height: Undefined }, - available_space, - false, - )? - .size - .width - .maybe_min(child.size.width) - .maybe_max(child.min_size.width) - .to_number() - } else { - child.min_size.main(dir) - }; - - let max_main = child.max_size.main(dir); - let clamped = child.target_size.main(dir).maybe_min(max_main).maybe_max(min_main).max(0.0); - child.violation = clamped - child.target_size.main(dir); - child.target_size.set_main(dir, clamped); - child.outer_target_size.set_main(dir, child.target_size.main(dir) + child.margin.main(dir)); - - Ok(acc + child.violation) - })?; - - // e. Freeze over-flexed items. The total violation is the sum of the adjustments - // from the previous step ∑(clamped size - unclamped size). If the total violation is: - // - Zero - // Freeze all items. - // - Positive - // Freeze all the items with min violations. - // - Negative - // Freeze all the items with max violations. - - unfrozen.iter_mut().for_each(|child| match total_violation { - v if v > 0.0 => child.frozen = child.violation > 0.0, - v if v < 0.0 => child.frozen = child.violation < 0.0, - _ => child.frozen = true, - }) - - // f. Return to the start of this loop. - } - - Ok(()) - })?; - - // Not part of the spec from what i can see but seems correct - container_size.set_main( - dir, - node_size.main(dir).or_else({ - let longest_line = flex_lines.iter().fold(f32::MIN, |acc, line| { - let length: f32 = line.items.iter().map(|item| item.outer_target_size.main(dir)).sum(); - acc.max(length) - }); - - let size = longest_line + padding_border.main(dir); - match available_space.main(dir) { - Defined(val) if flex_lines.len() > 1 && size < val => val, - _ => size, - } - }), - ); - - inner_container_size.set_main(dir, container_size.main(dir) - padding_border.main(dir)); - - // 9.4. Cross Size Determination - - // 7. Determine the hypothetical cross size of each item by performing layout with the - // used main size and the available space, treating auto as fit-content. - - flex_lines.iter_mut().try_for_each(|line| { - line.items.iter_mut().try_for_each(|child| -> Result<(), Box> { - let child_cross = - child.size.cross(dir).maybe_max(child.min_size.cross(dir)).maybe_min(child.max_size.cross(dir)); - - child.hypothetical_inner_size.set_cross( - dir, - self.compute_internal( - child.node, - Size { - width: if is_row { child.target_size.width.to_number() } else { child_cross }, - height: if is_row { child_cross } else { child.target_size.height.to_number() }, - }, - Size { - width: if is_row { container_size.main(dir).to_number() } else { available_space.width }, - height: if is_row { available_space.height } else { container_size.main(dir).to_number() }, - }, - false, - )? - .size - .cross(dir) - .maybe_max(child.min_size.cross(dir)) - .maybe_min(child.max_size.cross(dir)), - ); - - child - .hypothetical_outer_size - .set_cross(dir, child.hypothetical_inner_size.cross(dir) + child.margin.cross(dir)); - - Ok(()) - }) - })?; - - // TODO - probably should move this somewhere else as it doesn't make a ton of sense here but we need it below - // TODO - This is expensive and should only be done if we really require a baseline. aka, make it lazy - - fn calc_baseline(db: &Stretch, node: Node, layout: &result::Layout) -> f32 { - if db.children[&node].is_empty() { - layout.size.height - } else { - let child = db.children[&node][0]; - calc_baseline(db, child, &db.layout[&child]) - } - }; - - if has_baseline_child { - flex_lines.iter_mut().try_for_each(|line| { - line.items.iter_mut().try_for_each(|child| -> Result<(), Box> { - let result = self.compute_internal( - child.node, - Size { - width: if is_row { - child.target_size.width.to_number() - } else { - child.hypothetical_inner_size.width.to_number() - }, - height: if is_row { - child.hypothetical_inner_size.height.to_number() - } else { - child.target_size.height.to_number() - }, - }, - Size { - width: if is_row { container_size.width.to_number() } else { node_size.width }, - height: if is_row { node_size.height } else { container_size.height.to_number() }, - }, - true, - )?; - - child.baseline = calc_baseline( - self, - child.node, - &result::Layout { - order: self.children[&node].iter().position(|n| *n == child.node).unwrap() as u32, - size: result.size, - location: Point { x: 0.0, y: 0.0 }, - }, - ); - - Ok(()) - }) - })?; - } - - // 8. Calculate the cross size of each flex line. - // If the flex container is single-line and has a definite cross size, the cross size - // of the flex line is the flex container’s inner cross size. Otherwise, for each flex line: - // - // If the flex container is single-line, then clamp the line’s cross-size to be within - // the container’s computed min and max cross sizes. Note that if CSS 2.1’s definition - // of min/max-width/height applied more generally, this behavior would fall out automatically. - - if flex_lines.len() == 1 && node_size.cross(dir).is_defined() { - flex_lines[0].cross_size = (node_size.cross(dir) - padding_border.cross(dir)).or_else(0.0); - } else { - flex_lines.iter_mut().for_each(|line| { - // 1. Collect all the flex items whose inline-axis is parallel to the main-axis, whose - // align-self is baseline, and whose cross-axis margins are both non-auto. Find the - // largest of the distances between each item’s baseline and its hypothetical outer - // cross-start edge, and the largest of the distances between each item’s baseline - // and its hypothetical outer cross-end edge, and sum these two values. - - // 2. Among all the items not collected by the previous step, find the largest - // outer hypothetical cross size. - - // 3. The used cross-size of the flex line is the largest of the numbers found in the - // previous two steps and zero. - - let max_baseline: f32 = line.items.iter().map(|child| child.baseline).fold(0.0, |acc, x| acc.max(x)); - line.cross_size = line - .items - .iter() - .map(|child| { - let child_style = &self.style[&child.node]; - if child_style.align_self(&self.style[&node]) == AlignSelf::Baseline - && child_style.cross_margin_start(dir) != Dimension::Auto - && child_style.cross_margin_end(dir) != Dimension::Auto - && child_style.cross_size(dir) == Dimension::Auto - { - max_baseline - child.baseline + child.hypothetical_outer_size.cross(dir) - } else { - child.hypothetical_outer_size.cross(dir) - } - }) - .fold(0.0, |acc, x| acc.max(x)); - }); - } - - // 9. Handle 'align-content: stretch'. If the flex container has a definite cross size, - // align-content is stretch, and the sum of the flex lines' cross sizes is less than - // the flex container’s inner cross size, increase the cross size of each flex line - // by equal amounts such that the sum of their cross sizes exactly equals the - // flex container’s inner cross size. - - if self.style[&node].align_content == AlignContent::Stretch && node_size.cross(dir).is_defined() { - let total_cross: f32 = flex_lines.iter().map(|line| line.cross_size).sum(); - let inner_cross = (node_size.cross(dir) - padding_border.cross(dir)).or_else(0.0); - - if total_cross < inner_cross { - let remaining = inner_cross - total_cross; - let addition = remaining / flex_lines.len() as f32; - flex_lines.iter_mut().for_each(|line| line.cross_size += addition); - } - } - - // 10. Collapse visibility:collapse items. If any flex items have visibility: collapse, - // note the cross size of the line they’re in as the item’s strut size, and restart - // layout from the beginning. - // - // In this second layout round, when collecting items into lines, treat the collapsed - // items as having zero main size. For the rest of the algorithm following that step, - // ignore the collapsed items entirely (as if they were display:none) except that after - // calculating the cross size of the lines, if any line’s cross size is less than the - // largest strut size among all the collapsed items in the line, set its cross size to - // that strut size. - // - // Skip this step in the second layout round. - - // TODO implement once (if ever) we support visibility:collapse - - // 11. Determine the used cross size of each flex item. If a flex item has align-self: stretch, - // its computed cross size property is auto, and neither of its cross-axis margins are auto, - // the used outer cross size is the used cross size of its flex line, clamped according to - // the item’s used min and max cross sizes. Otherwise, the used cross size is the item’s - // hypothetical cross size. - // - // If the flex item has align-self: stretch, redo layout for its contents, treating this - // used size as its definite cross size so that percentage-sized children can be resolved. - // - // Note that this step does not affect the main size of the flex item, even if it has an - // intrinsic aspect ratio. - - flex_lines.iter_mut().for_each(|line| { - let line_cross_size = line.cross_size; - - line.items.iter_mut().for_each(|child| { - let child_style = &self.style[&child.node]; - child.target_size.set_cross( - dir, - if child_style.align_self(&self.style[&node]) == AlignSelf::Stretch - && child_style.cross_margin_start(dir) != Dimension::Auto - && child_style.cross_margin_end(dir) != Dimension::Auto - && child_style.cross_size(dir) == Dimension::Auto - { - (line_cross_size - child.margin.cross(dir)) - .maybe_max(child.min_size.cross(dir)) - .maybe_min(child.max_size.cross(dir)) - } else { - child.hypothetical_inner_size.cross(dir) - }, - ); - - child.outer_target_size.set_cross(dir, child.target_size.cross(dir) + child.margin.cross(dir)); - }); - }); - - // 9.5. Main-Axis Alignment - - // 12. Distribute any remaining free space. For each flex line: - // 1. If the remaining free space is positive and at least one main-axis margin on this - // line is auto, distribute the free space equally among these margins. Otherwise, - // set all auto margins to zero. - // 2. Align the items along the main-axis per justify-content. - - flex_lines.iter_mut().for_each(|line| { - let used_space: f32 = line.items.iter().map(|child| child.outer_target_size.main(dir)).sum(); - let free_space = inner_container_size.main(dir) - used_space; - let mut num_auto_margins = 0; - - line.items.iter_mut().for_each(|child| { - let child_style = &self.style[&child.node]; - if child_style.main_margin_start(dir) == Dimension::Auto { - num_auto_margins += 1; - } - if child_style.main_margin_end(dir) == Dimension::Auto { - num_auto_margins += 1; - } - }); - - if free_space > 0.0 && num_auto_margins > 0 { - let margin = free_space / num_auto_margins as f32; - - line.items.iter_mut().for_each(|child| { - let child_style = &self.style[&child.node]; - if child_style.main_margin_start(dir) == Dimension::Auto { - if is_row { - child.margin.start = margin; - } else { - child.margin.top = margin; - } - } - if child_style.main_margin_end(dir) == Dimension::Auto { - if is_row { - child.margin.end = margin; - } else { - child.margin.bottom = margin; - } - } - }); - } else { - let num_items = line.items.len(); - let layout_reverse = dir.is_reverse(); - - let justify_item = |(i, child): (usize, &mut FlexItem)| { - let is_first = i == 0; - - child.offset_main = match self.style[&node].justify_content { - JustifyContent::FlexStart => { - if layout_reverse && is_first { - free_space - } else { - 0.0 - } - } - JustifyContent::Center => { - if is_first { - free_space / 2.0 - } else { - 0.0 - } - } - JustifyContent::FlexEnd => { - if is_first && !layout_reverse { - free_space - } else { - 0.0 - } - } - JustifyContent::SpaceBetween => { - if is_first { - 0.0 - } else { - free_space / (num_items - 1) as f32 - } - } - JustifyContent::SpaceAround => { - if is_first { - (free_space / num_items as f32) / 2.0 - } else { - free_space / num_items as f32 - } - } - JustifyContent::SpaceEvenly => free_space / (num_items + 1) as f32, - }; - }; - - if layout_reverse { - line.items.iter_mut().rev().enumerate().for_each(justify_item); - } else { - line.items.iter_mut().enumerate().for_each(justify_item); - } - } - }); - - // 9.6. Cross-Axis Alignment - - // 13. Resolve cross-axis auto margins. If a flex item has auto cross-axis margins: - // - If its outer cross size (treating those auto margins as zero) is less than the - // cross size of its flex line, distribute the difference in those sizes equally - // to the auto margins. - // - Otherwise, if the block-start or inline-start margin (whichever is in the cross axis) - // is auto, set it to zero. Set the opposite margin so that the outer cross size of the - // item equals the cross size of its flex line. - - flex_lines.iter_mut().for_each(|line| { - let line_cross_size = line.cross_size; - let max_baseline: f32 = line.items.iter_mut().map(|child| child.baseline).fold(0.0, |acc, x| acc.max(x)); - - line.items.iter_mut().for_each(|child| { - let free_space = line_cross_size - child.outer_target_size.cross(dir); - let child_style = &self.style[&child.node]; - - if child_style.cross_margin_start(dir) == Dimension::Auto - && child_style.cross_margin_end(dir) == Dimension::Auto - { - if is_row { - child.margin.top = free_space / 2.0; - child.margin.bottom = free_space / 2.0; - } else { - child.margin.start = free_space / 2.0; - child.margin.end = free_space / 2.0; - } - } else if child_style.cross_margin_start(dir) == Dimension::Auto { - if is_row { - child.margin.top = free_space; - } else { - child.margin.start = free_space; - } - } else if child_style.cross_margin_end(dir) == Dimension::Auto { - if is_row { - child.margin.bottom = free_space; - } else { - child.margin.end = free_space; - } - } else { - // 14. Align all flex items along the cross-axis per align-self, if neither of the item’s - // cross-axis margins are auto. - - child.offset_cross = match child_style.align_self(&self.style[&node]) { - AlignSelf::Auto => 0.0, // Should never happen - AlignSelf::FlexStart => { - if is_wrap_reverse { - free_space - } else { - 0.0 - } - } - AlignSelf::FlexEnd => { - if is_wrap_reverse { - 0.0 - } else { - free_space - } - } - AlignSelf::Center => free_space / 2.0, - AlignSelf::Baseline => { - if is_row { - max_baseline - child.baseline - } else { - // baseline alignment only makes sense if the direction is row - // we treat it as flex-start alignment in columns. - if is_wrap_reverse { - free_space - } else { - 0.0 - } - } - } - AlignSelf::Stretch => { - if is_wrap_reverse { - free_space - } else { - 0.0 - } - } - }; - } - }); - }); - - // 15. Determine the flex container’s used cross size: - // - If the cross size property is a definite size, use that, clamped by the used - // min and max cross sizes of the flex container. - // - Otherwise, use the sum of the flex lines' cross sizes, clamped by the used - // min and max cross sizes of the flex container. - - let total_cross_size: f32 = flex_lines.iter().map(|line| line.cross_size).sum(); - container_size.set_cross(dir, node_size.cross(dir).or_else(total_cross_size + padding_border.cross(dir))); - inner_container_size.set_cross(dir, container_size.cross(dir) - padding_border.cross(dir)); - - // We have the container size. If our caller does not care about performing - // layout we are done now. - if !perform_layout { - let result = ComputeResult { size: container_size }; - *self.layout_cache.get_mut(node).unwrap() = - Some(result::Cache { node_size, parent_size, perform_layout, result: result.clone() }); - return Ok(result); - } - - // 16. Align all flex lines per align-content. - - let free_space = inner_container_size.cross(dir) - total_cross_size; - let num_lines = flex_lines.len(); - - let align_line = |(i, line): (usize, &mut FlexLine)| { - let is_first = i == 0; - - line.offset_cross = match self.style[&node].align_content { - AlignContent::FlexStart => { - if is_first && is_wrap_reverse { - free_space - } else { - 0.0 - } - } - AlignContent::FlexEnd => { - if is_first && !is_wrap_reverse { - free_space - } else { - 0.0 - } - } - AlignContent::Center => { - if is_first { - free_space / 2.0 - } else { - 0.0 - } - } - AlignContent::Stretch => 0.0, - AlignContent::SpaceBetween => { - if is_first { - 0.0 - } else { - free_space / (num_lines - 1) as f32 - } - } - AlignContent::SpaceAround => { - if is_first { - (free_space / num_lines as f32) / 2.0 - } else { - free_space / num_lines as f32 - } - } - }; - }; - - if is_wrap_reverse { - flex_lines.iter_mut().rev().enumerate().for_each(align_line); - } else { - flex_lines.iter_mut().enumerate().for_each(align_line); - } - - // Do a final layout pass and gather the resulting layouts - { - let mut lines: Vec> = vec![]; - let mut total_offset_cross = padding_border.cross_start(dir); - - let layout_line = |line: &mut FlexLine| -> Result<(), Box> { - let mut children: Vec = vec![]; - let mut total_offset_main = padding_border.main_start(dir); - let line_offset_cross = line.offset_cross; - - let layout_item = |child: &mut FlexItem| -> Result<(), Box> { - let result = self.compute_internal( - child.node, - child.target_size.map(|s| s.to_number()), - container_size.map(|s| s.to_number()), - true, - )?; - - let offset_main = total_offset_main - + child.offset_main - + child.margin.main_start(dir) - + (child.position.main_start(dir).or_else(0.0) - child.position.main_end(dir).or_else(0.0)); - - let offset_cross = total_offset_cross - + child.offset_cross - + line_offset_cross - + child.margin.cross_start(dir) - + (child.position.cross_start(dir).or_else(0.0) - child.position.cross_end(dir).or_else(0.0)); - - *self.layout.get_mut(child.node).unwrap() = result::Layout { - order: self.children[&node].iter().position(|n| *n == child.node).unwrap() as u32, - size: result.size, - location: Point { - x: if is_row { offset_main } else { offset_cross }, - y: if is_column { offset_main } else { offset_cross }, - }, - }; - - total_offset_main += child.offset_main + child.margin.main(dir) + result.size.main(dir); - - Ok(()) - }; - - if dir.is_reverse() { - line.items.iter_mut().rev().try_for_each(layout_item)?; - } else { - line.items.iter_mut().try_for_each(layout_item)?; - } - - total_offset_cross += line_offset_cross + line.cross_size; - - if dir.is_reverse() { - children.reverse(); - } - - lines.push(children); - - Ok(()) - }; - - if is_wrap_reverse { - flex_lines.iter_mut().rev().try_for_each(layout_line)?; - } else { - flex_lines.iter_mut().try_for_each(layout_line)?; - } - } - - // Before returning we perform absolute layout on all absolutely positioned children - { - // TODO: remove number of Vec<_> generated - let candidates = self.children[&node] - .iter() - .cloned() - .enumerate() - .filter(|(_, child)| self.style[&child].position_type == PositionType::Absolute) - .collect::>(); - - for (order, child) in candidates { - let container_width = container_size.width.to_number(); - let container_height = container_size.height.to_number(); - - let child_style = self.style[&child]; - - let start = child_style.position.start.resolve(container_width) - + child_style.margin.start.resolve(container_width); - let end = - child_style.position.end.resolve(container_width) + child_style.margin.end.resolve(container_width); - let top = child_style.position.top.resolve(container_height) - + child_style.margin.top.resolve(container_height); - let bottom = child_style.position.bottom.resolve(container_height) - + child_style.margin.bottom.resolve(container_height); - - let (start_main, end_main) = if is_row { (start, end) } else { (top, bottom) }; - let (start_cross, end_cross) = if is_row { (top, bottom) } else { (start, end) }; - - let width = child_style - .size - .width - .resolve(container_width) - .maybe_max(child_style.min_size.width.resolve(container_width)) - .maybe_min(child_style.max_size.width.resolve(container_width)) - .or_else(if start.is_defined() && end.is_defined() { - container_width - start - end - } else { - Undefined - }); - - let height = child_style - .size - .height - .resolve(container_height) - .maybe_max(child_style.min_size.height.resolve(container_height)) - .maybe_min(child_style.max_size.height.resolve(container_height)) - .or_else(if top.is_defined() && bottom.is_defined() { - container_height - top - bottom - } else { - Undefined - }); - - let result = self.compute_internal( - child, - Size { width, height }, - Size { width: container_width, height: container_height }, - true, - )?; - - let free_main_space = container_size.main(dir) - - result - .size - .main(dir) - .maybe_max(child_style.min_main_size(dir).resolve(node_inner_size.main(dir))) - .maybe_min(child_style.max_main_size(dir).resolve(node_inner_size.main(dir))); - - let free_cross_space = container_size.cross(dir) - - result - .size - .cross(dir) - .maybe_max(child_style.min_cross_size(dir).resolve(node_inner_size.cross(dir))) - .maybe_min(child_style.max_cross_size(dir).resolve(node_inner_size.cross(dir))); - - let offset_main = if start_main.is_defined() { - start_main.or_else(0.0) + border.main_start(dir) - } else if end_main.is_defined() { - free_main_space - end_main.or_else(0.0) - border.main_end(dir) - } else { - match self.style[&node].justify_content { - JustifyContent::SpaceBetween | JustifyContent::FlexStart => padding_border.main_start(dir), - JustifyContent::FlexEnd => free_main_space - padding_border.main_end(dir), - JustifyContent::SpaceEvenly | JustifyContent::SpaceAround | JustifyContent::Center => { - free_main_space / 2.0 - } - } - }; - - let offset_cross = if start_cross.is_defined() { - start_cross.or_else(0.0) + border.cross_start(dir) - } else if end_cross.is_defined() { - free_cross_space - end_cross.or_else(0.0) - border.cross_end(dir) - } else { - match child_style.align_self(&self.style[&node]) { - AlignSelf::Auto => 0.0, // Should never happen - AlignSelf::FlexStart => { - if is_wrap_reverse { - free_cross_space - padding_border.cross_end(dir) - } else { - padding_border.cross_start(dir) - } - } - AlignSelf::FlexEnd => { - if is_wrap_reverse { - padding_border.cross_start(dir) - } else { - free_cross_space - padding_border.cross_end(dir) - } - } - AlignSelf::Center => free_cross_space / 2.0, - AlignSelf::Baseline => free_cross_space / 2.0, // Treat as center for now until we have baseline support - AlignSelf::Stretch => { - if is_wrap_reverse { - free_cross_space - padding_border.cross_end(dir) - } else { - padding_border.cross_start(dir) - } - } - } - }; - - *self.layout.get_mut(child).unwrap() = result::Layout { - order: order as u32, - size: result.size, - location: Point { - x: if is_row { offset_main } else { offset_cross }, - y: if is_column { offset_main } else { offset_cross }, - }, - }; - } - } - - fn hidden_layout(layout: &mut Storage, children: &Storage>, node: Node, order: u32) { - *layout.get_mut(node).unwrap() = - result::Layout { order, size: Size { width: 0.0, height: 0.0 }, location: Point { x: 0.0, y: 0.0 } }; - - for (order, child) in children[&node].iter().enumerate() { - hidden_layout(layout, children, *child, order as _); - } - } - - for (order, child) in self.children[&node].iter().enumerate() { - if self.style[&child].display == Display::None { - hidden_layout(&mut self.layout, &self.children, *child, order as _); - } - } - - let result = ComputeResult { size: container_size }; - *self.layout_cache.get_mut(node).unwrap() = - Some(result::Cache { node_size, parent_size, perform_layout, result: result.clone() }); - Ok(result) - } -} diff --git a/styles/src/stretch/geometry.rs b/styles/src/stretch/geometry.rs deleted file mode 100644 index 9984bbc..0000000 --- a/styles/src/stretch/geometry.rs +++ /dev/null @@ -1,139 +0,0 @@ -//! This module is included while awaiting an upstream merge in stretch proper. -//! You should not rely on it, and consider it an implementation detail. - -use core::ops::Add; - -use crate::stretch::number::Number; -use crate::stretch::style; - -#[derive(Debug, Copy, Clone, PartialEq)] -pub struct Rect { - pub start: T, - pub end: T, - pub top: T, - pub bottom: T, -} - -impl Rect { - pub(crate) fn map(self, f: F) -> Rect - where - F: Fn(T) -> R, - { - Rect { start: f(self.start), end: f(self.end), top: f(self.top), bottom: f(self.bottom) } - } -} - -impl Rect -where - T: Add + Copy + Clone, -{ - pub(crate) fn horizontal(&self) -> T { - self.start + self.end - } - - pub(crate) fn vertical(&self) -> T { - self.top + self.bottom - } - - pub(crate) fn main(&self, direction: style::FlexDirection) -> T { - match direction { - style::FlexDirection::Row | style::FlexDirection::RowReverse => self.start + self.end, - style::FlexDirection::Column | style::FlexDirection::ColumnReverse => self.top + self.bottom, - } - } - - pub(crate) fn cross(&self, direction: style::FlexDirection) -> T { - match direction { - style::FlexDirection::Row | style::FlexDirection::RowReverse => self.top + self.bottom, - style::FlexDirection::Column | style::FlexDirection::ColumnReverse => self.start + self.end, - } - } -} - -impl Rect -where - T: Copy + Clone, -{ - pub(crate) fn main_start(&self, direction: style::FlexDirection) -> T { - match direction { - style::FlexDirection::Row | style::FlexDirection::RowReverse => self.start, - style::FlexDirection::Column | style::FlexDirection::ColumnReverse => self.top, - } - } - - pub(crate) fn main_end(&self, direction: style::FlexDirection) -> T { - match direction { - style::FlexDirection::Row | style::FlexDirection::RowReverse => self.end, - style::FlexDirection::Column | style::FlexDirection::ColumnReverse => self.bottom, - } - } - - pub(crate) fn cross_start(&self, direction: style::FlexDirection) -> T { - match direction { - style::FlexDirection::Row | style::FlexDirection::RowReverse => self.top, - style::FlexDirection::Column | style::FlexDirection::ColumnReverse => self.start, - } - } - - pub(crate) fn cross_end(&self, direction: style::FlexDirection) -> T { - match direction { - style::FlexDirection::Row | style::FlexDirection::RowReverse => self.bottom, - style::FlexDirection::Column | style::FlexDirection::ColumnReverse => self.end, - } - } -} - -#[derive(Debug, Copy, Clone, PartialEq)] -pub struct Size { - pub width: T, - pub height: T, -} - -impl Size<()> { - pub fn undefined() -> Size { - Size { width: Number::Undefined, height: Number::Undefined } - } -} - -impl Size { - pub(crate) fn map(self, f: F) -> Size - where - F: Fn(T) -> R, - { - Size { width: f(self.width), height: f(self.height) } - } - - pub(crate) fn set_main(&mut self, direction: style::FlexDirection, value: T) { - match direction { - style::FlexDirection::Row | style::FlexDirection::RowReverse => self.width = value, - style::FlexDirection::Column | style::FlexDirection::ColumnReverse => self.height = value, - } - } - - pub(crate) fn set_cross(&mut self, direction: style::FlexDirection, value: T) { - match direction { - style::FlexDirection::Row | style::FlexDirection::RowReverse => self.height = value, - style::FlexDirection::Column | style::FlexDirection::ColumnReverse => self.width = value, - } - } - - pub(crate) fn main(self, direction: style::FlexDirection) -> T { - match direction { - style::FlexDirection::Row | style::FlexDirection::RowReverse => self.width, - style::FlexDirection::Column | style::FlexDirection::ColumnReverse => self.height, - } - } - - pub(crate) fn cross(self, direction: style::FlexDirection) -> T { - match direction { - style::FlexDirection::Row | style::FlexDirection::RowReverse => self.height, - style::FlexDirection::Column | style::FlexDirection::ColumnReverse => self.width, - } - } -} - -#[derive(Debug, Copy, Clone, PartialEq)] -pub struct Point { - pub x: T, - pub y: T, -} diff --git a/styles/src/stretch/id.rs b/styles/src/stretch/id.rs deleted file mode 100644 index 2f5af6f..0000000 --- a/styles/src/stretch/id.rs +++ /dev/null @@ -1,35 +0,0 @@ -///! This module is included while awaiting an upstream merge in stretch proper. -///! You should not rely on it, and consider it an implementation detail. - -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] -pub(crate) struct Id { - id: u32, - generation: u32, -} - -pub(crate) struct Allocator { - new_id: u32, - free_ids: Vec, -} - -impl Allocator { - pub fn new() -> Self { - Allocator { new_id: 0, free_ids: Vec::new() } - } - - pub fn allocate(&mut self) -> Id { - // TODO: better balancing - match self.free_ids.pop() { - Some(id) => Id { id: id.id, generation: id.generation + 1 }, - None => { - let id = self.new_id; - self.new_id += 1; - Id { id, generation: 0 } - } - } - } - - pub fn free(&mut self, ids: &[Id]) { - self.free_ids.extend(ids); - } -} diff --git a/styles/src/stretch/mod.rs b/styles/src/stretch/mod.rs deleted file mode 100644 index 4eedcf3..0000000 --- a/styles/src/stretch/mod.rs +++ /dev/null @@ -1,37 +0,0 @@ -//! This module is included while awaiting an upstream merge in stretch proper. -//! You should not rely on it, and consider it an implementation detail. - -pub mod geometry; -pub mod node; -pub mod number; -pub mod result; -pub mod style; - -mod algo; -mod id; - -use core::any::Any; - -#[derive(Debug)] -pub enum Error { - InvalidNode(node::Node), - Measure(Box), -} - -impl std::fmt::Display for Error { - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - match *self { - Error::InvalidNode(ref node) => write!(f, "Invalid node {:?}", node), - Error::Measure(_) => write!(f, "Error during measurement"), - } - } -} - -impl std::error::Error for Error { - fn description(&self) -> &str { - match *self { - Error::InvalidNode(_) => "The node is not part of the stretch instance", - Error::Measure(_) => "Error occurred inside a measurement function", - } - } -} diff --git a/styles/src/stretch/node.rs b/styles/src/stretch/node.rs deleted file mode 100644 index 52b9e46..0000000 --- a/styles/src/stretch/node.rs +++ /dev/null @@ -1,242 +0,0 @@ -//! This module is included while awaiting an upstream merge in stretch proper. -//! You should not rely on it, and consider it an implementation detail. - -use core::any::Any; - -use std::collections::HashMap; -use std::ops::Drop; -use std::sync::Mutex; - -use lazy_static::lazy_static; - -use crate::stretch::geometry::Size; -use crate::stretch::id; -use crate::stretch::number::Number; -use crate::stretch::result::{Cache, Layout}; -use crate::stretch::style::*; -use crate::stretch::Error; - -type MeasureFunc = Box) -> Result, Box> + Send + Sync + 'static>; - -lazy_static! { - /// Global stretch instance id allocator. - static ref INSTANCE_ALLOCATOR: Mutex = Mutex::new(id::Allocator::new()); -} - -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] -pub struct Node { - instance: id::Id, - local: id::Id, -} - -pub(crate) struct Storage(HashMap); - -impl Storage { - pub fn new() -> Self { - Storage(HashMap::new()) - } - - pub fn get(&self, node: Node) -> Result<&T, Error> { - match self.0.get(&node) { - Some(v) => Ok(v), - None => Err(Error::InvalidNode(node)), - } - } - - pub fn get_mut(&mut self, node: Node) -> Result<&mut T, Error> { - match self.0.get_mut(&node) { - Some(v) => Ok(v), - None => Err(Error::InvalidNode(node)), - } - } - - pub fn insert(&mut self, node: Node, value: T) -> Option { - self.0.insert(node, value) - } -} - -impl std::ops::Index<&Node> for Storage { - type Output = T; - - fn index(&self, idx: &Node) -> &T { - &(self.0)[idx] - } -} - -pub struct Stretch { - id: id::Id, - nodes: id::Allocator, - pub(crate) style: Storage

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�l<>McNYJ5~CqMiw7H(&9A}W&IaqMd^t1EGN%1 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≪6oSs+E`>(^AD0aY)7Xj_{_*xuQ~!MOv}bO!q?#-vDfAo+?w#Gk;kg6M z>l&@t=h9=Wa69zp>TEL3OK7!mavEMad-TR*POp+=jipD~w^;4w@z1qGi5_0tS6J68 z$7|E{i}cxP`(fh;QtK&m6Qj0*gvQ%K&XSiUGl%LoL4B4%c>}%Vp7+~IGT7#jY^ia3 zPyg}0)-ENs;PLU$GOwo<+%-KSO|CsRePZPIb5AZ-pOilRlsviZ0r>KG+0Q6+UB5AR ze}5MT=gx|w{>3cFFbUCi0d44Uz`Pp&Rl}B$HUu_n!#2n8*^ptDq$d#wg6++n@bD5} z(UO~Sxhz&K?QEEJe$E~lwy9XoA2m&bGyA(Zf8h{|`5en;SbhtEsY)*abmfh^@5OyC zB@YRkJb{SD>Mfb}E)d57ihL6nt&*ZZAQOjc0x@OWABw83d5Z^lRaE#>8cr{>%? zLC4%6HNfN5J=bnpo~*Y;>j6|*wgiNf*pHX*>BjZiM2Ahv@-o>m@y6YI3jmh^yg9;& zex{&l8_eq(=g%MF?1e+DmP@wY(W8eRZ;S!EBEqZ!c4mZwd6i=ONe4V!1spY@2QTQ4 z;h*kf8NxO@zCZ3UncPDB9oMPWK}I4^KqrhqBZ}cOBPpM4xD_(fyGiVG2I&-Fb|7Bl zncicX;Ix2d)nI358;9r4VtadmkMBQZZJN?k1l$7XJb)iVAOApp3`ja{99wi&p1ihr zX?khn(Hl?NIM~D|Yk9wnzD1Me^|_^olx6Xdd^8=c`<}m-@yKgOD^KH}19P(dOMI-R zi`lRI$bSu#NTF6Gyr69jKCP0agV76M)_uv>GF+|kq+BmZdOC1ER>xWcP6LvXXQ_NH zCud|<|K{XtgVbt23xH|)p0m;HrF76~vLxTq03zjNK??v-z(o+=Ln5>1TPZP#Ic zcLx{FpT*wZZVz0BAl+|=?Sp%qh}oSJ&TUoLpAimsYHZh4`kqh-z=I~>qvIAoJ8JRq zNsACd|Bm4RKH{uIFqA;j_$8rq(k+D%G_a)_LKxq&X8TbR_!z)SAWT0AK*TUk zU`tg4JX_ma!-38Sq!QnRp2lUe5P*tm9PI7k;Ostr{NcxIz$y?b0=@v?3V`>O{^kAd z^|R)XHw|Fk1B#}XQBUi#bece!@l#Ls#1 zr7W*cIIS0RC)XuLC=(arA!;p2fRZcc4J1z|uZ)H)E!mu>m1Lf#8|NV%oTi&bF9UO_ zZnCZ#y3Ofs>8r_;zcu+KMy$!voS??n8rbo#6&$>4nP=I)rN0G;#(cs>AiTdh^q}GrV+u3%AcNaP{mQ2a6H3bOTN}yG6Kmc81&M z=D2*OMgv0E4zm(z0|mlIU z8+Y$nb|k@s6}+v)>2raX%k=z8q>*y00Pg9;d zyuP&BRhG@gMJ+B_b+g*TvoSALN!qo+qB;MyLL%P^1Rna6mCVVMhH3$x4%1GwWb?n9 z2L4jMnqHF5Dx0eV*Ugew5}b3o=LYR*_*qW4Bzbks0dTEtHQJJP=W?xN0UMdm=)z@y zz8Zl6pKV#xHJ*I>5-vRb1iHXk5<(ZS?123R;pKC4ymDcV3)>Y!0G3U_NfXeq*_aT3 zRTI#(!2Y7fi{}@(zE`86K^49Pl|TxO_a-wcVz13)zYCjMk#y-VfiKI9OG>gVCDG$) zxLmDaH%i(o!&-=M3XY&>`2JH>S7_Q6yZgI%=GmvQzq^A6@qC=Ake7(?>(tM>AV1~>EPvi_k7@O%hPy0D!wJ>*EyXhR{}!NR{Lr;#%VM?z4}R+TGIN@YD-I|Y=16uqVt_^-n$uq z-vYw5^g8emeUFwa?4H@iv(H_|xr^tqI%)dtrUB^M4l59zIaA}ciwj)ZtYhc*e0wx{zeW%I*EnYpgZ~6Gv6b_Z%;R@f=ohgYKYuA`Q3=;3cdBiV^^u3rd_; zUd!>eX;89s@y3$mA>~;?`f>3smi!XAT3tP$!D+Mr?#Y#QsM(ArFGr(+AFn-RnNGQ< z$$-fB;%fR=YW$M9XSkN(c?QX4S)C_otdx67u;_EnN9ym%u^f~aG(A+S>BIHV+BxSW zrD4hPmOOb+{?_UtWkb2Ife>lfUYkSEda~kg&ymY^)O6BlG&!7Jrz6}X(3=QIyJ+Kn zkG2iCc;OJ2E}qAHR-;gB>&2eVl&$5JJmLjA*Awx>D4e@tKFY;{H zgy;5Wm_?P$jkavP&@umQ1>O$p zeIWG#?6#17q4kl}Tl=liS%X-+RtH8#zLiP>fo#X>&fR+#0o(!b#X#(ISOQjUi=C}G zE?>QjvlkE1cHOWqqXR&=dN9Xx`!%-e3S9?uY_%qCYE82d>dw#|n2RWb3X}w@C z)8pn_I6ukDk}qi`53e4%7$Et}JYc=OwKyjES-wq+!J2(&x?6GH1LdAB6WSbF&l!ds zL_AMJvQ`7+47da|SOd_bwStsJCk@{-GI?KiSiI*A7|UQ}(gukvqYc`U0B<=hO$V7L z4b#)DJRq})JWk{B zk;#hTJkJ85vOJe(_1Px8IK77zV%ZcEOP#AUXm7B2LBa~4ImL5^tqnkpMnjMqI+VIg zlxU$zV7(*cK<9auz8bxjETggpyQM4F$b=Nyxax8MEN8H8{Lz-uXYc*5_xKKNdF_Gw&t>Iu|!jn%3F5n*pp;kknu&de$_ z9S`&4@<@DDI&OgN-vAD2riJZoO&H>EtHM0hA}-U6GZ@N*%b3F24@>|^`We@Q#u=b6 z$Rb&6eWj^qF`}g1D$h3Y+`V^o$dY53C(S>2Wh{G@*P1PAWu(uRW5e@#Qg3UFSb*YD_bryckh)r+KoeETpOkxbTq5ct^>WqXV0Q;MUc7RTD1n&T!#O zjiw9W+dwAAsKnQSBimt)B2XCfh|EyYlF)wHX`I<$8*$nH zBW=3JfkcwU_t0Saouw($@nW(R#Q3IfDKVg;%<_PGz|@8g)vU&i+c$9Ksf##TuBP<; zCf_pzyhOm)ppRwC&P#$~iM?tzX!%nsUyh}mU28h$eC6ZhTQtC@(Mml^;-d`OmJL|G zU6WZ7{Jr~{O?W&cy+y-yw33xK(Z>QRoLCmJkgJByyz9=n@1aA$=Bde(`b!yFS&N@l zPLt=MdXLu9M-G0APUBUgUrbt%w$Qu;37TBZSy}wF_P6-S`#fK>n_Qnsd72KE&F1=D z}w!;4Zw^Pu3o=_`FxJ$s==(TaB-)`GkY_%9fmiD!VvSv zS%kR1MeYuv^dAssBO*5G03NML*wDKp~g%0tHoPOURkSNFz#8ha=f&DkhWnZ&xR#G=@_;4*@R!N zPLtmq&7K1AJ0aj^AD@RAkr1$IThtZd*2^#8V1KWF^QG%>u&D6#?hNw^=)VWZ=QLQ* zkMA6(caMktAcF#N|3?B5!@Y`tof_yj2@kU|O0egzOvnGmeJ08#+%PRO{mX&Pu#Bah z)xvnD*PFE&6ogbRf*f`Po*)gQZUN{*KvxsK@THe+TvNManr-Nt5TCgnf_iMHdJw1xP#cRV{-{<0q3M=1AJb*(CoSEU&^^A^(}tC-fh%bs=t`3}u)QRoFs$;q`c~a+_wRw|HUSH{-{k)B5?7zR zfZM-z8(l>>S~b|7Rk*ZM;p~EN(qcSiHo}8pzlU61;mbEuXffS1+bI|z0SEX8)rZa45TR`v96vb1wQE=L%IzCi zwq5!VWo+)gt;2Z=^sZ7{Z#-FJng8|1yY--x^P#1wWXwsuq>fg8ypX)2l30i%X>m#l1opN6*E3adG=4GQ@$q2;_KG$BJEqxw|_gQR5 zPoCCp6WX`m{npc6we?Ry^ePBdTrG)|CryLj{OTRte(4sDn-=IgT;8j3d3T0cMd-RP z2IUAC(k#Vv2_%7(VZ&~uNpNN;8$S#1!BLC*tDdfkhsUu!zx@=21P-igmCdx1{VOA* z;hHAuPY5O`YznldN=3jz>&r(IJqB9w;YJQ{>bk~!Yk_)ej_>`e?_s%IA$|msQaRcR z6s|t=$~*u3^2_i1;Qhb&j(m!ZiQA6mXEj@q$)n*iHQ!>5EqNU~h}*VBr`f-z-=peV zV!cazwH7ZleNWTJC4Kq-h0I(zkC)VIlYW#*8$0Pj8ork_bZ^bXBaARPo9=6FTbRXOZtreF6nbOznLBUA%JT@ znDP6e3pie_@Z`Azy!_=?v1(hiZHL1J;fb9Z+cQGbfd$~<&7sL5ZhJex~{{6`wwvQh39eexhp_bq3OEm@)ZCIbS5DDNuc1_>}j6nwK0_Qm7c8J*wUu> zt+dIwe3X3)rz?q7R@!7Hs6?M%WOm3(yj@QllQy08DoLhoOVCm>C1ow8NP%)X&Qr=t zT1Q!(muocMusKI#t*zziVad%+Cvskv;Z)+ECP&hFyf>YG)Y?yLbG~F%8q9NgZ3GH3 zG^O?S^zdv_w#lTw-+uR7)!XlW>k@$fFc4kr18!g|90B#L#w#zsfQwIDz;V-p(BbS> zg`HV7Ibd##-Qz4u%9s$bshkL2hAEDCMhO74fp0_|Q;5Kaf4ESjVfkbzz<^VbbmP`w zUWX(r)kTwOJP3y2e*#RcSAy{tgh~J5cGEPd<~44A={C-vJ3vK1$JWw9|269c0bfJF zSMJ=scScC`Y+D;Q8l5+WJU_t`=aKWtlAq-Vb8;Vb-|~wrzj-kx=ijxz7XMB4@$z`P zZsLEXU(GG)d3-&)SZfonbG+afe_KIYI&3TOTLVe!#1bS}3P?%@pa*m;Ba=@qu?;Mz zRFX8*$!Bfk6ty?FWq*0jPF`#6r`b#?xbpOp$+DANTWbBG=>vn#vR4l*$^M%3Lo?g2 zn%Vvz0k};8+d$|y!csunb!fYQOBW9D#kanQuItdY9nQ`P7k2vBl)Eqhl{ll3CS*lW zk25grDE*WhScDfvv@~6y8TqXf%B3nyz>7QtPM0-oyiMKZHd836WX)**=gAprS?k!PFQ!=g4eOZ=e4oAa{nc|p^% zr(xn`001BWNkl z%b#lbUb|?zPv}d)fW<_jG#N}etqiichSfTc8$xAVdr!Sy=SKb-5RgghcuTHk#GZ2~ zaU>Ryk#+I(w%T2zv2=sT+e9zvtT?|-pGvF&uJwi0E*iMBoVz)gu-<;0Ki;_e-V9Vd z1yp|w&_R6ir{Vu?*Uz>*fBjipdF~31kB&j1!?~>rd-Do)TEVC3j6~em5$9g`K91p4 z;5fT7Sw4zs05{bz`?Bo%Wg(iNop?fRx}2tf_1A{uZ*9BE1ZPbF4W;_<84{H=?LFad z7p(!L$R_Z)9-W3SDJ_praAtoO*Pnk52M7BIA*7AEli8$z-vz>*H}1Z-2i*p=Ye4sh z@xG*se>I=ujTu@8?zjV>0LcsE5iDz#_%Db zT5E4kYuSiqgHXy^I&l4^zFA-<5tvMxacK=_mCd22l4K2*oH1)O(qTxR@jBNQTAo!W zPZzDcGzdv!4FC(Q3^bl( zD_VGhK?2gM(E!@UrK-RhU?d-TGiK~87YKD@d&n|GKt&Z!j!$s@iSxMi;tia?Fnr`v z`C4@V{VsqzZM8Ur4TfXV0IoI`OMs0wPCUMV?H9E1;Q2xgG+4hMCEpTha{kkjW5vW0 z-Ey%}^Mh6_^xECyspVOH?STLrLFB$jD@hEY@szqx#(-vk8UWze9&(O6xe;oEPAVhw ztp=3*G(*#zf|MaqvWEse{Wqycu3hD|>{zLdFwC}GeBwM_eCZ~(7IQ3@Cm;mu&nj#U zhZaoEl0!VcpUtKWfTG_x8i7F=R+FYP417;a#2PgLM@_)84FFX=M&Spv#bSJRh0xDt z$h|LeI|>av;xf?4Xl)Nn{8%Ih5#zF2e=p&sR4+<2@=!T|#A&-s9{(Nx@;9dt(6%j} zyLAmWZeGRC)&dRx0ON2#9|c?j(YpcFOLxBc-VC-q!nm)En_Lj%Wj#5k9h+JzDf>A1 z7R%pSGIRb%Ca;Y&K3Z9g50|OQka0`aGY7amxl(W5UtT@94iLYk%!)JA5Rkmq{%W0~ zIsM#IhlQ@R@*WtlbmhOfyj;UtJU9Z?I#24vWtJjRE=Tf{G+KH2PtsaX64rfd0F;*3 zXfz<<@s;(@*{a1S*9V?Vjm9e90jTcWy;p&7lR$r>Ep41MEq2dr|!U{0Qpj}dS~;)SMd(RCf3y!<3?zIX!_2+QRX z4JsVW`>#NE0mG}f(^-f#xsmp$Fic}Pgg;yP%n&V!T=HeM18~t z6;?W}6)_dYZzN4;UIcJJZE)r0Rea&q zTi995@!wXUjoYWn>4H$kmXyhV(r&ZIzYnk^^2`Z>ug^pGzK+#tZ(utj0^q_1dN z3r(i<$0hCIwL?iv(c0GnBvzT6d>NBCAFC}Sjr7yj^_p<++6xLmnE~XGu}7b)yrz?u zED&S?qg=;8p|RRa*2i-~URi69=LVft-f}9r0cwH0QXZN^i?Xj;lAXA`piC6MY!nSzW^f6i7 zP(VwXxrkFU5sJihm0=l)O=kT3sKH4COofVMoleW}fIMJM0*@+;0h*6i1h9#`T zLbgK$PJv%=AqHRxoTmS?Y*sk;AntpC-qTGR+mD-XvHC67_L{Fgt=}$*cT%Sk&{N{`G+(OK)$+Ms%+&O;fUu-X zysd_}glfS&$Ag#EK!XNmauv6pbUnn+@5^)=Bh`}ZObvip#%;;>z@JvnQa~izU6aje zJ%^xy0B?YJcA+74Pglv?x?eIlDwOq$1U@RSH}1Z7BM|)_KyM;YC1d2ts=>3*Jc-*c zK993!53n4TA41omM!=aFpXgv4R{8gahNTKVsQ|tiH5MTZNA_c!b%@(R2v~K%r^~oZ zG(Gx%x{PAfmLgxQ0g>@*&LhXkWQ*j<_Sl#+GMqo@^CgL0nvL?PrW(toB_g0%HK;1W zGgqF*ORv4y-|ITQ$0cspxk@4Y&Kq~{eHC^vl>j9sX{Y>w%k#CIRwm0INITDsGfkIV zkb4w;OD-Twnq0eSvLvk)3niZ%FqL#%Zb@5Mb=UeW2NX+mlX+a8smG=$PctShP-+d5 zLx9$`)lt%*bDi$#ssT0$&g6iwf}y0#@s)Lv8?2g)jr?)#Gc^ng}%^eX+U6AL|=7Xjn3uewaC=*@^gOP1>S6fEKm z&V$^*L5VV}k$&>!ohe`$-#qG()Ck1J{Iz3X*6PfKGTuV3$@wxQ0FVJ-CT}%GeyL%5 zeVeAincW?{`fD%Y>g7v#c(NL~4$E6av;fhY1pFs&+`V@hJ`mQDMrYY$F34#9O`|Uv zCtNpK=5g{ZRy$kmSgJ?P&uhBL{E|Mh^t0MRD^tpUQyx+m-sh613DQcRWUX=~!NeO7 z)&SLbdB92w%sJF2%ax#E3utJ1=k9AdY8_V^NVR*Kp_U-_Tq<#v-cw7it+g_nILO?f z&4D<}jY7BrK2vtRxRW$A> zk>BeH!%h+gP{!k2DAA;SC&TN#{o6?CrD70zaP;X(i-&FKSBd!Y4xhzA06XE1y%ofF zio~~troe(EKr!~2B#aRf6@(&*<2Y>->(1n{b_wajikw#%{~Pp8i*H2gW@92k+q4J( zp1SfRUcd7y7PA^n+og|H#&dZ9TmtYl0{%TFSOdtpvBd9{1X#fLgO-1Y*WOsvd`M;7 zKW+MD^DPoAX-Ruf*Z9c1U!5-$+W z@nxpT0d?^n#ZN7=eK@h6QD&^+6#t|dq<9tgxM+KC;u$m)m((VC5lqFlqj5P-erS^7 zQcy^u@|Ujv~dn(dNWp==(A~Atq-McIr>~3EQjtrZOZZ`bTWUf z-f#WUKbaxm4*+}}z~w$`h?>JJ$)oag!YC_XCplV!JApqMop<*jEadsjG z*7%p$7n$SRMLp;sz6z7*i0$>LsQ)7LN5?HbJn6(8Ka@Zhv06?RT<1$m4jfx+gjKCq*H$c>bhBNR2rmIK;P$E``xO^3c z_8>ynby%IOaCr6ruitqMv)K$y*NtsG=ovuU0A8a&|M9%fzAnJ#JhV@x6aZzuww=>k4F?$C6=qGsDuVzlS0CBy7aT1p!7<7`iwX^CZc zbs|DwJR^??JknB)l$rj@n<4Q@`ou{bjI&Uq9^=y1IMWiZ$C;=!tHWlkSPKp>Y6U!8 zF7e_Qzkp{ho$o&d(2eHMgQ5Tg9Dwj2hk)Nk=(gYd#3HA5AX1M`3fF*%T1dIC zDUwSih)kPJ_&kzy5*AXoQ0=Bb;}->1GL<}mX-`)<)L$yAq)&2XWdD1%b($HF&ofDz zFrQRIHM99~`%sO@g{0oaixMKh3U@S_qGB2rvUyV5G^#C0H6cmi(h&f=guAC==caB*zu-W_BDs7fR2sl1I!IysXP5eLK`ysyngCC)3Thw*EMoXYqLN)(q zZJ7U80KWfkUfW-#U!}(<#SvDae>RAyk$cN{Ej?&N`TS8wOObaFyyLy#&;&sv^QDf~ zwMHBDx9Y~*ql3?%Uzh%t>jG9AX!%h$tzI$7wzcYN$>Tg^`&+!YE>b^EAM^R&^>vb| zJc~y1iubIx)vje3uYY-abO3PY?!7YreHozt5x{QRs}aTr@22Z;vTAYt@)P*_yI=3$ zENc62-tc`P0qCFHiEw4FMqQ2jRm2Jg#t$71^B-weg(m;f$+^R3+(ivMYyy7xpvBLR zJIt!-hFW=uTY$(Pbe*1!GMQnRCK~ethF7(C6idi0`N2 zzoiUfS8VtV*-hKx@bD1L@d_~rg(ThpT^P*PF6t6^Yl0ky=+if&ZEoeA?spI zt!}cGsnKYl#nMeqNAf&PAKAaMT*+XP)1NX)d&sS^a=BW2YyD{HCfh{v=d@m42cUZE z8{eKGv^N0!HvkU%>@i3N09_Z*v>g^(bA0j6E7(8S!)mph?1=zkFb$~DAq3#K<*x(N z5R+NZXB%_Z&T^TYyE1Z_*F7-$*-?uRkJ{;5Kt{OWK|OAy)v&|lkhub0Bi$sr+aYie zympwKl({CC)@Vq{ANfv~$JS{1XS%z9=2-(kD@t@Ax6AZ3<5#glm(1re7mHuI!JtR#| z&W%6@X(AvU;ugmDl)^w$Qx95x^03888`9?Ao@|`Gu@dn>oKhHHFP`u+9-6rbT0;@* zG@!|B%=GAgMdtK0KJbf>^jZf{YqKt<{;{EZy_U-*_V@Sk(yK4x;>C05x`4LphJG7# z97Wy$=pO=j`>k($dxrdYk|4keR-XN8<3|Px&DVOqD(62RW#7^X9-ObIujP9@@Sy4D z^{JNUKUyr3ZsSwoZ(tXRfq1!al8G#V~T zGv*RhDs=^HU18+Mdm1lmplkV7`{e)}moIr~w9=84=*IbQI?DlBZ4K!5qoQp`XKi4X zrcK(k15mwj_udtN{s2UO6c7%87>CD=u&V)pTzcX>?)+O{!v49lI5|G)AH-$Aj=_@% zZ3uXENMgE;6 zcI?_FN$^Y`XB;E`cs2?zw6+Yyr&-vNRZ@vBGfm6#6LzOb%+jc;k2;>5EOGtjHQavj z2KM*PVA-@In`zt5i10RmZw`kPdSJu?89aHQCgyA7M3&Y3i{)3Pp7OWU^HKCI8i2_8 zA1$tFGBt3ZwRcIJ^8ka_CR*CGExbOqfUVcpT%P>#~?@Eq!z zm*gYnW+&@?vLbSDRgA7;@;EO|CZ~FCY5Q>fWxib3Yf!hZ(foPEInA2`N|X-ZNT4t+Tg>Z4s94_TZY>4^IhT|o$-LU ziO@AY#{0Z3k}e+bKbd_%+KUsI4k@31Gl~6WGfL?rl2WfpUc5JeImT<$NA^RM85@XK zB@DMHHFnc9*xfsWoip3G|LFsK@WDrD+7`3ALj0x_#kM7ygXoDs6rOqIoxgqmyWjZ; zHbCIEC&wnYZGKPMt{g*>H^g5#zM;@?U%|)zRf~9VOcjf>!Dvos%>+IoNsI z$U1PDQkN)`^OVle;-NVzIXGn9_#ol~&l;e-PMV&wy-1Xkx=DMMbqD~eJ9qExh7i6+ zME^wy_$tL98w(6Ub=kDo+1bX+FTa4dzVbSDcX#pd!9!Ga+%OAFHj>g%7V*?t!r^v} zt(gqSeYpr`2$c59M)~}RlA3@P!1q6E@&1DrO&8F|QxYxG2XDUTrPpWJyh;(&03l3g za}rodsxotCz+(N3mI2Vj4aNu)5H+%41ygyN{v8yFI!+p4QiSnJ0EZ@YlLlD3&(DAv zWQP9O|Fh>0F{>+l^ub5?@S{&qR~0H+uQ!4A5yAxmtuDX%&cA&ByWe?;b(@vGK>Av3 zoO60!SstV`5Clc0=8LreD1F-F;9F!K=fm}v?FFps#eKQdpSLOJ5t9TJGL}dlGM-v> zkv#dtfaU{vyK4H&KH{_z2wCkSW4_cs=_B9U<49Q|J!zm^d2KKS<)2I%*pU^L;%rs(#vXN2}ra+s`2ys%0lm&W8(;0&U*2B$~Lf^qO6k~ zIF>$~pEgK&8*2blvkh&aXtp*;ayz}Mp&JL6$zJ%Cva-?X`P>pH&j zl{fIzl_&A({rjjAx`;6`2HO7S07Fn$z=H$9M8uk6;>KzHHjVm0-0R;~3d1K01b$#jLKee|8@g z5q|RiPx0BqBh2d=<3+43=mH2&0{H0iEARZ(```V}683n4_zi_lj(4zfP_8ZCXN_a2 zo4oh9`4+AIJaNCS)sf4Svbo+dkN2PS+nVlN4+$Jk+n1WoQcp{N%U-qikiJ;X%viby zKwm1#J;iHJw{jK$3NKj!NzWVKD#wwa9KbnwydInvZ#d3RB2Nu%M`M#Hl-H32FX>dI zZgLQ6vj9-144Jp!Dx;|<8L{*lJc5OaviOHw0Q7-v-(W!_scK;+s}q- z{$CT(*Fo4CqdTR5)`fthWrOFhJ%iu)&9`vv)(t#(@NoDZQ8jQ+=fol|SH#(t_%z>! z{z?9DtHOfMx*#CE;fyg*$3PrGOI7t}!Tj|{OZ@ex4FZ691&sS~3F&aW*oXlvxcArN zY{&>c;w%$?(4t}HV!C%{T$)M$j|aVR96}K^jLM9!iG%4Fb!I#n?O2{h-Q%*{L@`!^ z%`&B$^4T2zJtK~gVu3LBTidqS-rB<1g99|H75?`7@1yHF%!adFDDIpdLEa?*w*dUb z4=VP`0^!jhpe&n%0 z#t6-ydHT!x^0J(tRbIv>&1NJp<@L?#FPDn6zyKppf({LlS$}zBNYu*dxM!3BhNlvF zS{V}8@;C1sizcU637ssH`y2Jv3|qDxpH7VT<$$+z(%N6UuO)2&b3Qr8z;*SU7`Gt} z$a(GP^_glzPrvp%{|rR`0f4hpywnHDw(Ic8gJV4Z%#-+?f9JPw{R_|I>>t2!nD{}HgcXQ%cV1AnTbj@ z6F&xS22%YyNikVh|%E|O-EWTELOdg#a{8~LE%GCz1Hi#@5opf}qQn z$#NP|FZsk^^|v z-+Vi-djRp-GT?7NZSk)@S>dx)UoOok2;eflFdcO=0zP4Q%{tb1(3g;|Q-h5GIhEx< zdNz~}%u8*^3Qa$f$b7VC>qMJ`_o}WiBAt$0)(5RGiKR!XM0E_B@ zKbv}*WCKaCVLkD4)TSvYr;IEE(>ll-fLylKxDuh}K$F&Ra!>+xM{^`w0&e7Bx4@Q$ zj5$AGYLHsuWxaL-^!}6ixwhZ~MatLcJ5eq-2s9e*oV{oP;wDSxo?rtszO zb!GabfsJ@y1~JQbY%(4nW#1xwsHEZ7Yd%BddGV4b8DA}5#%VmCC-uz9jL8DGyq;1v zm*)Xie&4F6oG@8yH@U|p{?-(d$ul;I++^dG1QJaSmnHe}-zCAxYdkrHr2!-f=se?= zfJB0h_*+BUmeY|>VcKAk}Lbe;j~+M1%_fD!!x;&~L;&UbT4Pxy$%_-}nPOef4Q{ZHsm|L3I*XWoxIzZv+-N z;|5Y-+4Zw2pDa6kwhFkvZ1K@aiyu8~@#6;#esa{}=f?rZZ7(Fv$V>vdlt`0Sabq#F z*dS*c67UF$@6+d|YKE`^PBVIp?|Hq5>p zXuE)}Yq7PxjVsSRgXaDN{P<@dVYzBhRfKBT@6>BS2%w6Ho(9#I1J!?X_4XSd{M}#v zX_G{2O{o9oiH{lScX(OtAxrbU+U8fu?{V-gGG7A+(&x%L#H4{1%^zzzdS!AxPX>KU zrq_BSOt7G{5x(stU90@;%o)>#*T!@hyfVm4F(=2 zI&ok_V;w@rUt1m!65{MlL`<~K7{lyORRdKGR29afen;BLH;p8Vfnt5r?^OSEKW&I* z?J?v{zz^HYGH!T|Z4iIO?=2zew*Ds7s6z+=UE5-Je-BSyx`@?sg`a=)DUME-{Q-bg zC0ZxUKy(GDu6EVd?DDJc{QUjze&>@l=Ieph@`v0H0qaZev8s<*`bvxA8jXw{CChtYG#(F&kL0O=FRP!D;$Gqgotx&0^uW5} z{GLXWlWEDX*l$nIoJ>#lCN!0}&gm>uPWN0t$TqXedF>?IyyTvxdrqF@$@y&32bSHH z+H8{f_PgKOZf1M80@d#zgx><;s|4!5D-)0=LfWpwvT3okwZIEEui@9f`Ual6bsfhi zCs-|)iFsNgvi6Qd#ta~=&1Qfd-i98$bOGQD6HwtGsaIgaepIYVFf0)D0D^JLO(=vA zK$U08ej)<82o$<*J@8v6`F3spW=;qI|FSmw*kr7*1}N5MX;}H#r0XDL=y=wU)0rFS zZ5#%j15nRu>}+l0!yo?)|NPJX9RK&9{}n#^=o8H98jBfQu^;QP1j3&O;Qv6t|4u~z z*Ps1Q|MbTLRf!*n$r?}E7%Jge>L0!PkAiRUlGSG3wQRpqeK;>(ri3Qf7p3te*IvN7 zE%CG|hRC)>4!C?CLUObvoeivaxHk}i&5S~pF9AQBg1MMV0GQOtqp^5-;L3AYrPrsW z%jr@2_ZLl*c6#$0|76xxJJ*2lMSy+}M86H-Dvw8D_-=f*wJA+#D!~+hx57X%~~{Lk^byU+&&J z*t6rh^ZWD-zx3j~$!{X^U;@I-5Q9LFSP%>%X=+Uo;z(L)SGKoSw#r_rT%wD1nJDi5 zC)ZYKU1hITR;|6YvP7;{S}IT?C9Omd3?K=DX#kJ}NTk8Um%}gI(Ct5N>f67*_xF1< zAPB0f-uvBf`t&)c`}X=ap2z{mJmS0^DJ^H zfHee9qxcN)MK4_Y&Xa%q+g(G$ai8g*)UPSWsPmt6-?CMGwn{gyUf0^!jSC*B;a?}i z>)jV`wfvD07aOBd%&P#zwI&-Pzk%Iv$=p*6?8AixK1W`=5ypl_)2HM9Ww}M}kLlP#R7S^Vi~-05kUm_#&N2)}{T@DaWbo`d6h+Tf8& zWs_QjMgtbAJTx>kmR6G2s0(2Xq~!oJOQI%RCFrzUY;JaW?%enJ=GVW=`SX_%0$kzX zXz!BwroM^XD+2WeRQ&I7yr&iFm2Z6VUu^Z+gCDOW{QKCq)RnUpx=}BuKQ5W;_+D?B z*X!f2xqLy{aCJhAGC);c6EN5+bKEjt4_Qauzn+TTN=1xQ>94n*uLtm|tK+JCI?eSy zC{^ue+%^cnnMXhBNZ~qC_`49iS0H{vDQ*=4&-R%cNG9P%QgUE^7xzAJlB0LtPP5fw zV`D?hpn0s)o3r7;bU$f(^G{Gsu_+y-b1EE^>m~!hag30lqBwDGK@WlfYIBolZIx(a zgSgv6E-w*pZXmmTWUq%(lDO9=?)H+rQld7x#9=JO|PAaGD;%b8wp;UZ;gS)xn*b#G9GM-!X^3V-9C# zJN}+|oY`4~-$b|`!WGFf^fYRegGyx#pR3&5mRSH<9%0aEjigpty^M4SOG(=8HUh!R zKYW=dzwkAlec@$9tY|d6BFj)aR464jgi!w%h~Gh}O9;__>XVqKjtMBP5|AVLN)Y7im2AyUf3k-H8ed$Ui^ z0Yt+HXgUHR9B{~KeymA|Qp8Hh1Uvz0qzF`)3|q+{Mnw|QaPg*_xNV=tbO(RW4qEej z@OSRSpP#3>{~+#;U8rUYA-u%6VIL8N`5c*Ya72|y=q!84zA*!UPtjHyKV+Duf<7bX{$hE9EWs0{Ku7{ zj{mq3o;NyOOSGmAt#8%-;m_};dGG-K z!Nas~xeYNrmw+--Ko|}X!GPfqifw`m^>WpzpUq=Jp(F^$q1|fXISx^KD9qUl;H&h{+N+eZDKn%AxKc zAeM?p9yrO{-}^9)PLp6TAWkCywtY&Nz#R?S- zgCD2ilyr6+C*4IDTm&NhhL1{j_tj<9S4i1XwmK-6AzPxY6jI4#s4GYS4G2WT!`n82 zKRZF|;2zpH9Kzp!fac*F@OJD*G+MS;JYpp?G|7E z+PC@ZzkHm_i>tJJkEZYC+|f%YiVJ}6q2&MVMeD!+2C5IM~6}JjoUGpv~_vwz*rr>x^i>gr#}4g zJpz6n_$3fW5Nfi@(I}+|qL?6xnVXs9%>8%s;Dh&|JdYp@kTPML&pR3BKoN;RTVayk z_8Q9CE`u0=A5LU|3`nGVfe+i1@3q_KB5 z&H24F4jjUt-w$r1U>1iE4Ny{Q!${TkErdw_nS1$Y1lg1uzv0pJ8hr1$=lRm(U*)Bj zE)Yve%lGq1yQLzF_7w=lCE%|R;&-0<xZuw zB#Z+L>*}Eni0S3qbf^PrTk+2}UUhQU+FvkQscRL;c5fVXX-lIXnkw2+jl{-d+{QDm z(W~TpJvx=DymjT8*UYpPz_Zo*tO8k8<=V>LGT=OQ_Oa6_^-I8efWrvUF#S#D5Mn7A zgb|+SarnRIuTQkmPjrxq zL9a(Y=p`~rNw~Pdpx0y2@6!(kgxx+tw@<&@qu=inL=iFwi3TBY6eplYWhQlSJvW&k z%osynN&_=ek+1AZBR@{Fg*P)vV}1v%y}R*t%+cJx4}b4G-rO9b*-j=$D+MY-1QijP ztT4+kTD~bE+U9rKu$k|92*=^#`AdB3Yv1A7=U!lCZG%R(-;1r?Wko3#Kz&&V{@|%k z{)ilxi)#W0#3Ff!>BUMRA--Y8M5D_U!7={eiHtBBk7%Z%^(cffqWtGjekmxR4F+BH3OL{%YSVENTQ=^iIPQ$}>T%2|bZ*Gp}zFjo-@1e10 z7ygbN_;cHEXSPABjmVl@96}tS1DU){jG7vw$TuBSQqgEM5U#_@)n&f-%nvws?)zN2 zc$FxYG<^@(aq0kC7x)fJ{gD^0{VuTfNKVd=Dj+ZZT@}~NVBC;em>7{t}3cBY@L8+8V51j=*Lat z@ZZY4QAV%2J~lcWv)pmOnwht%F^*H-xXIRejLT=-_5xeCO(lIQN*BcnS`6C@~}{zyaot|xYr|G zSRi=i6?)%)p6>UaC%kl-V6_KIB_O4l425J)E(0qnmc+3vIVp#1@~w+-T|6adPPXwI z4Vvv1jaD=Hn{3mZon&HWhR#HrX1hsyass#2pxy4!YPIk>E&NWKW}}5@dbrtqigYN9 zY)C4SsGwK|?S$!&Pr3n|j3qLT^A$j#a^T_#XY8S!Jo!#iZWt2dzGPKe zmM__9x7ldW-RSc2k6z)~XP)PWFTBk9Mi9Cy8uyd&aN|d?;>UTl>0f?8L`qU@- zjMuN(Qq>C@Y`ssY;`>w4w^Ybb=lsW&b(~ZMPR8{yb#jekhpLywYbk$R0BAinfr}|% z9Xg|i&ZHex>03pwHokQT&sKJw{5CXemRa>Mk7`(>=&Dezjn}A$eiSmU(yQvcuJP8L zoATG`I7+smL2N{M$OUrbB@B=o#^=*3Je}TcJMdEIV+wu^N1gz+r zb|fF=ODDrR0-+Sjb7}ZKexpI7*`V2O)1L0o+%`pL+cc9CZQ7F)G}|pErl)AO+ccUj z{7wshYJ!QWDH;>)^1dl5n@5s3Nfk-rFeVBkM7nFPQVJDGkP;Ou2#XzQok3#uY`>Lc zzDF|rV*9eeRuKd7?C@1|W_k-QFe}>nm)mt+BbX%JS6(mX}spTVA2J zvO&MsCkzHeQJl<6iesc8nQxSv!T>HQz;T?UZd9DCR8o;lHtVFqP{Goz#-}vMwHd2bM_GegV>iW65GOEtsY<-JDZ(^@0LkQ36-G%^Bvwgufpo%K zKV3DH-P58ym{H@xNb7+ z6veDBt+Kqf#Ky`hD@%*4udcDNw$8@d2K|jLL2p3V50G)OD#~#jl!7PJNazZD-~=Bc7F=||E1r2CdS`qxALI?y+&yshYIyH^K3#^qJV_gehrs4`3T z5LGuc0ji9)6?9i;usQ^ah2AD>6>_aZu;Zfcx`)?hr@FGn=_u+dzwX?YZ2H&HU5gx} z^4rR)<5yMpwf9b+ear)n0KW=+L?T(3`ysox&+y2*-pZY)?m&1By+yo3t#h~9$08G%Ozqv_wd6nK~moN@-g-f&5B9<}Bi;FB?zRKF_I-6Hk*j()) zJdjf2dM>V)*j4|+w-5pu#K=K}>PJb$rsd&JwPBTp5`GV@)F{l}@7y2h*D zAE(XL(EvE7Km6GJ2z~?j;Lv2q^cyuQb#Or#5kxUJ9@x##o_#-u4bCW>(c21I6 zX|MVfaRk>#wI)$Pm(9QVOD_ET|3v?_6`Zz*JJHA|+3Frw_CvZG1H6{U)ZRG`9lME} zj@-un+iqdk(VJ;cw{zO=Y8M%V!{w$)XdmZOaRO3QKT0D43a6JWJtj8H=OjZhW#}<} zvICjXd31U`|5i#K{^oOaIgmt4JkP;zI5?hHS*VI7LATHH)kQ8XUgGLY=ecs}B3G^~ zu(`a>V7*5aB;dsLTzt>NX}H$S^kfhtHv`ll0hW!uQ%u}?fX*#9GI8P#8aLmLGc%V= z=*{+wsTw-UDu1+S+II{gX${dxij@Px+!Io3is-ik4eq9A# zLwdbI!|N^ks0!Lj<9odyBB-vjYmw`Xs`pW{>vZz;hadYzh58Kvrd_55l3;lF-4_$br$~Q&sq7( z^Egcxf3`jREgq?e`XT+zfX+;tL&t99uD9LKO%I%A=Fn~&&n4;w3^oTtQIt|j=Y9aF zC_;sagG7PTk5TJS6|}d%P+HV;SyJ`Tw&?zBK@UJ2K@jaiS)D@#itZB9h6Fj z*rWn-C&~Cz;hidFieN@E&;#q%HAiw`iKA9+BKMI+?S@m7k$eZytdk>j!Gk6(q4x$ zOn$r$Wp3pq|GIS$7AE63;yS^$g4jkWTNULQ=h`@Bj)MfpmF;>O-1UIMx=7f#Jl_ag zRK2B*(`i)7ck1k8zb4?Hf;tYOVGev`9rqxNh~k*}y{WHhegFU<07*naR6DuvJcpGxHiKuZapn1}}V%)xZ5b%TIihaA^&1x|ukxY@;}mVV$ra z5e`C{6HRWu`v@mL@Cb+QI6`~dG>&qJgJh4AV$y6$f&{1tK{8P`PBv}pMTlO6?1$vT zJsDuoCk>}ulm=3UK8nnU2#EIfUb1Ulbim+ek}B=u=;%oTOiE>sD6dW?J=y5<&Hl1; zN8osXlEiUD7(}ctukq@OFL3#lSGj!t0!x>d=x_9h22nDhxar~gZV`n^rxzu4ERp>f zflG7uEK?_LWa92Sm^kwQVsZu%_8|(2wx>Xe3`nO?FC7YMwcA8d#53P~mM=a2HC}q{ zGOdP3%l8eN=Vub7t^j}GMQa~>@{fM|il%y9NMEP9-u}sU@6FV=T&s@P>yXFw13xZs zQx!GCxPHBUc`LyPE01yBQR*7SsK&7s6joP$mPUabon|X2`g$sQtL0E}Z>zFYJ@l`~ zgJ|Z>c)uR}w!)*9=Jbaj`-p;njNph+wDj*9>YesRKfo1m)6ECD_ujj?^~lYLhDX0Y zNGC{UfW`FW#>|ZNBsebNt3PD@%U@yT%ip5^%0*-pB>RUn$}3-@K}0kNX?EHixa|HL&fqFmRAHi(iM!w-2m zj8qxPs51QPkSh6aam;DUa*mO~27(+{92QLzP!l!mtNx1Yp=0* zb%FJjHG+)+N-DgThu_pT=Tj>EM1lkfj_2Y|P0_jSAXBGKFmcblxHEGIWCCEMv!>Wk-j@+(jC%rnm;fvHy0u9rfBS^z$;1pkvjyz*4}BaJYgb7Ta~sPty- zTgK@_x7yEc)n|@MvuiT9G#yj>$UQ#vhBDJf&<9YXCM0?6#Ul$j-Y7d zLmkGj!e&39+3-1f{1#50KEZ*5^EjSM7{%!%T$@|Z-tW_UuAf9&HrLts);C%E%2RAU z^8>=ARd7VI6~4wtMKNJN!s|5Hd-woH&fLX~_uj$wy?ba(PeLq-f^=1nuz)7VNuw(g zIfzl40rVq?;=)S#uCL@#mZ7LdwvsAeS*48*X_JnteEHZILc>A%myCslEy9_Beahl$DP}OkTUt) zfW;;`c=0?`EV*)Nfv2DTF5i6W9Q`1q)9?%Etu?dM4lBT403Snf;i*r3B4WJsdI63% zW#3Z6%cM2a_3H3?rR#kWAICRUBi+`|E5-jP1UCce2W86Lx|EV$5HUM7 z!HK(W=fugQ?B25zAp}8?%u5(r`jUIH^qxq!>30PEXP;s7>2I_4)VJxsdI=STh(-Xb zKvci7JFT9A%>dVdZF_cd!>Qxka?c&?KXNmZJLizGBpQUN$3k+375EG~2P{3Xu+=p`1fUS)G_gD8k_y!3Mg z`ez&hNgPD@lPwy%b~1U_F(&UiPV>eaac8!nWQ2&ciQ4)yIRT#Q;<_#?%d33*sqgT$ zC%?`5W}k-V;JR)xyoY8GrMd|5Zx!ly1mcCKKKY4$wWii|-OqImzp8U;Xx_+v@_HgH z*CN}GD?&A@>@1Cn6pcf()##1&e%9-%l%Vu18%d`zlQ8lr?by-o>1CMLpqhVHhBSEV z$ySceQ_rJ}>lyEi-ez3WE+!8}ecAeb(_S_@lb@+`ovn15x(8e^EXz2_q&3eod+IXk z<>>S_+YY5OkABpV!k<-+|Fa13F(K5gfLFMg!kJ4c38I*p=_&5N|87p+cQ@O2ZbvGa z?$eQplXm>+VKK4SLAX8&LA1Kc<}>G5{!f3-%9o#FaB%_QfYbJp6+Gx%1s`<<3Xm%KqDL!SA$_y+a~x(ydShPEzDwGFBS_YON2OA#_8?zPOyvohf2L zW#^yjp)G^Wim^pMs_tcvgB`RKSFH|R6m?O`m-*JAy>!Uuljs;u=b1ZOQNEYsjP!oh z#&GY18nH zRLKT;Q`1xIncsyg1WOCc^aerJG)nCwJ@-M~ArKOHZT{FpD;J)5Ji^|eR`rAMQ{1;` zJd|->mp60NrhRlDXp&dL! zp|R#0VZ4K5uH}y98>i(&!VcH)4Q5{02uP$R%{hD$O>2uGczv)P)xdY+83n3m; zaEnNnk(h7pu~bAdW_o&(haNo5>9@Uw&eR0qARrFo!a=1@O8-p`-DFrOjtO3UmGv(? z!Q!X?jP-B-5RiBijU>vFy(vqTOsthKIXlB$@4k;SA9@eBzV$Sd+h&Qwh&a$A@R`XA zAfjTKEMeXV62LNu(Uy>8!WP3KTCL@kr>m9yTIfp0mU}t^Nc~~XTc<3UFOyA?Z!lMq zBbBAJ(=e2PL(W%FimC{mKvN&%eh!8-gd#G>Zqd~QIw}`RlZ7I`&;eJ@TdPYWDXECV z3UYY?x6#1e zwhgD*N_JOH9}%GeTBRV4V_Kay2X8uv6U8houhHxEfn-C)>=OuywFCm;DaCOi2oUPE z`Qr~QUpV);{^2FPpUlq97c|?m{-*C+3?AmWtxwhE$bO}EJPIgP`LZhctNL~u4->rE zWY*=&WUngQCSP4L%QyXdRT*_SK*uGy{26emL)JDVO3Kj8m)+MZ(~NA?Ie49iDZCAQ z*uX?pKD|s`mntA(Hpn`sZ`0LAtIKBNnaO6e>nQtRIky2Q8<;UW0-cvB->44B3>j8M zphiX4@;rM_JUk2HVTAK9l~OlnlO$CtR<`L`BqfoQ%+5^njt5Wk;5#2Al9GP6hg7m~ zoI-b;nkvGDMiUvv^uPBU%b)&JuKwBI5nNuQv1=lk%c6z$vyU7)!e!SD`#AHVckuA9 zo@Lwaoy3EPuos|Ytd*gar_aSvq;Jpy(Qt8{X_v-cnRYBP{!M!^>01U~%JVeU5kBN*K>=Po9cGi)M38R>~xmn)xuD9~Q!w;~su}Qx_NH9q@heZ_q zOg4m&_uq{+ve#q%iO+N8_ddny*S?3-^zi4}l#)tT428Xr&eQ})-*z|e`n6x=j-Ppm zxEnH9@1?^+h1<+E%DZI^95~=Ke4I`br|rX}kCAC}bBJ07{+? zkx$vtBMYT3TBnERy?p3_;z7$M-0E{mw8vvs; z^H*pxXZF$71;yNOUypWkKpSaxsZWpi)>fC{&_YYos_Di~!b&jg)*?!aZEhF;l z$0og=^gi1rqe)w38?($&ks(tq{agnvrjM$U$FzlBUX=}OeDyNx+Jo*BtIDwXe+9`< zkxp!eX7p60WStUK2GjYCLdR8QS0(d)ox#lrhe=n};77?}(v6b2Dqq$8QQ=f&p)pY{ z+Vv_vCfXi#-OOut>3UXgue-=f&zCVz98fN9!^fRy;LNlWFe5}dQCE^}LZ>_8 z{8)c#O1kQXON#`A=JYc$ODwW$#!!#0lG12OphLT+40>HQVU(ZeEfZ0EY{3xHm_3`b zv)HH5TRRuSG&(O0H(3aDVJm3zG81MQ@b&!$2M!&n#Yqt1?c%T+bk#!2Q2x(No&G>(3izB7xs)H&_!7|IIikr|sHdc!assG_=p^oCo- zzlt{&9(4v9>SGN$Q%@UDQ>i3`=eben?`WI7n zQ!bN_=Fx}h(gD=zvmbvH_y~x5GYn9QAOQVzJNzR@ZseWsevn&_-oo1YMluOkWDZex z#YXa*(3+(C)h}@I-~It>Po6_5i96HEC*NkNztJZOBKF?2kNY2eH*fzZAL6Ea?j-7l z^w+y3wd{iurU5lilV8-mt4bm*QX)JT(e{&-D}h9XF~W692CUF<=zfV-6`;ZN1a_Hq z|5$J`>1~x<^{^GCSJ}zDE3CSh4|oZfP@%s`s|rvxB)`Qdb#}MPpM`W%hDs{JAV%P@ z|As>xzxyrFh*-RImF`*>Aw;rAkOpAf$p)L>yU5_Vb2Mh!c)Rx`J2}g+kVY$1%4E{+ z?tOch+cwSG!U~rbSMWVIiRS5*ll)Eq`<3t}FFf=3=dt$-dbOJU!JEEsvFKv!mu<%| z+((=K)AR*W`yFKu8z8g!02|QI=`#JRCQN7dOgrhR&X?JE>2!5KNC!D}ezOu!=n)q) z>6NT2X*No;KhPC1ubY5HH&7KA(vMAJ*cyHn4_gB?D-Z0v>SR&IHC-aGD;2%d7NXdVb-^SeB4C_lP zT)euB@1@J6^~hv$K8X;!=Z`{W7E3-V=uCO_e%bVM zjwLTzK2uk-|2Cr&x_yO_U-xAu4V3Fgw~0<;TSZ$%SLa`KA8Z32CQX&@rp=*TZpr_Z zH=!seU2zPdOyimrY&Jx*5ts^&YG^ioCWz5_*&Zt0&=|B;AjtMW>2lhlCAz-S_%&tK zWvZ+sqfA{NTf@~Gfv%%&OWQ+imTlIz?JdHT%jBc$j*-udyyd)3pMC7KQhWp<-Y#IG z)Ob=({UF41UG6%0lzZ<#$=>{0V ztm(*2p=~@e!EF_0f)G;|+jU(Yz3i%?D6;|T6{a_6UH&RWuk$nYvQ@6FLFl$I^{aXq zF^;QjtT#GcZ<{PO9;OX!@|q8aI(_!BgTP0DcM8EaG@|UcI|u>A-KUOm=Dw5cp5KL3 zim)_1lsMZwx{yu&bX{n)P=k>5FZ>->{@~9Dt}fv;-DH`wBS0$RASMc9Cbvy<^5Ofr z@0Z`t;S`psX&pIJhlPBAuHe1bA+V{^|zDRW}2$Tj?^8c#1o`IQa zWHD4ksd|!}T6sexiO|-7+7KV(0aOW5-ad1CXyqwTQsMgzW@cvCv3D2Ec8iVGRW??W z4>~)JlaQw$@{CqCh*wr{e22!~JqdV;!W<-N#zIPo>wC;@pJjG-noF--WO==tL|%sG z2?-aNRf0qNjy?3P`Qr~=x$w;6P!92D=cX0lP1d(i?vHi(^nPEzU*${cz=F*W>3+^u zj!k~^n(3p=W0Q{wL`*tU9$VQq08w?#1fnL$s`5p;thS*ttB(3UE+*(OmA0WdM$nrD z+Z?j4XqAICBO12GWXfg(PE`+*DWeHC%TK#^%2~zV%r%+cF#;;j#zVbA>T z6tsjzltrm@E=nwcg)AU}wjH~UVqC{#&y5E-{l0&| zTR!j(cHedrLP0bLlP%hT;p)@+u?%dae`WYkx?~ zVYu58h{;yfU<*Da4{7REb0DNqBom8N;RHoV%UtXnIHeA~WEG)Hr!AY#cxn6X=d?m- z@}%@CwV4hKR3^X3<np3QEw3g~m+W%`o&!n|Ev^x*EaOeKXdb=+<$55)RMd2u zc-oGnRCu1p_FdbVXt#Lv<=5yBf^@R(kl{Q8dxTKaN{FZDk3Y0=@!aECn9=4Gv-GCv zTa4?be7c{i@&i@+RoTGiBW-@6D%IK4v`5u7+sH>%8JT=~v$gp>n;$cS7*#mI41GXbSAht`O^%AnfJ_V7z!&RzitS#d_7O5n9j2*I-!RgP5G6Pr>?QufSfHf zY74>H9wyUcp`F*+#?+OH`!;)yqn9pM6)?k~HyfVW;plas+q(*wI)L1J;$dG2?;RjM z24XJ)N0(43MIMI;en^1ULp+DB~$NTm>tQ}E54cBXM*hQwuRprf3MCNt1h>Vw3`w8npz7jadk5V}^V3ITl^c7?J${!sZnYCowVOM_)RBp>+ zJ`@bwPhZ-dN5u?oh5F^lM+Rar0G8I0QUI0!nASvx?Ynl;Y&Th5T4rr&HJPxR4jbV* zC@G1S)`(VDXztsEH-88b2L-;$?UaI-IL7f@_TPAbaHGq`%L{~Il!Jd&mc;>%fmjqu zet-YbdpFZPUb1BCkKZ(Xi%||n9&>m@_X~P?TLCqutTz8->R>CQs!SV5Fzrz#gN=8V zbl*|u=c??a+te(_=7V&(Z0*M;hXfo~BM`>1vM|+!GC_s1(3vP(FUNGSHsE8@n#U$s z(2c9hXw%1hkc4s11a#&DW&;kou`%du=+m^d`QX8@jwZs@8wuDSs5*P-e5!OY>)e#z zCa*c9X6lzEk?hqXZbk502ysG*EC`**HF2eDN78Y3l;ul%^v(M7~!K=7aO&s4%^2%h7jn3o*x88Rr_x}8Qxc$L12-l&v zxR$=*mYaAfijuxL%Z&jn_fYErGM1<~hDat(T4heR{!c_InLpDDkn01~>HxJqKn;>f z$3i%mGf9U&s0hWrE!mGsV;8w&D(+>Kr0)Tf0ST3>%dFpcK!%-WF==h11*YGu z^1(LwZN4+lo2@D`QL8Da4jA<7CNQxz2orTdxzYr7r7}8G2^+02_*FGD8=BKA!mKPC z%GK}dykS^=U3SHA!`9_D_0aXv%MlFQ8Ou2g+g{hf_8^;$(Jas8p+AIr89HyXywY38 z>9dbHD0K+IZ-V#$2_n#j8?!YB^(}F}gTx7~tkeic)wJ$Db_w%-qU12D~lSOiJ88RA; z$QBinQsH_Ydk)OgZ27$S><@`#gwTd}gzKQ9n87OxxbZ5TQ)fWR{DCUkMo~b}515{r zX2SeP@oiE8~bUK?Zx?N2_qth$PwJI4+Tk85%<+a^2>)b3q zuOs~CNleaaA}_8To7>DRUUfR%y!MXOp4s*H*6iu<2zv79M&s^{T2& zlh%C56?R@#Wmm~&+R@b0_TY~Ki)PeGf1q`KW_dXnz4zxnBBayY349R5$BO=3k-xPn z#UP4kciKGi*3&%r$O9~{t`mh}>U{Lg+>=m$?sx^L_B8R83tauwAF}Y-CkWU3_;a1o za_9a=AHUP&!JqpX?)`=LF>_#^!D<&|JUk2_(4qsW$8j7~7$MKECA-_YP7=O%oJ5yc zCefEjBKi^ZBUC>^Xuo8CgBW6&e7{HtaFP`yI3igMl~+L7F&Dv=@<#>ru)k88qs*PV zN^4d3mim%uk=LfsNc6HykEH*a9S8Zj@ri&Gv}is(r^{+L`wC`a`UI3IA@WF8fn&-$ z2`fVb-duO#*?6lSk;#k((IA zT`qk8RpL1L(sTw!gd-?cvj_GH%!o&1m7(Dc{%<`)ER{1`ln4GH@ zRK?H~Dx((`S~J=BnaI(`!$i1s{H`Tc$!|7#8%n;ORF!{RzItS-iib|4>tKSWss^0V z+U#Rqw>2=cv6|5;XW!8?9VPtt;yC|`EI>vHi`FA{Sb9=BUz^GI{Bnhk-ae?mJKj#Ii{qD%SfTI%ZQ-Jm(d zq2Y}Z*vRooKBqhhSswrj$;Q=%1yei#5Py;;nO83qw0ol78S z7-bAy5n4XmoE6KY-!e!2uh69Ibw$o!*Vpu*c`;HYLu1+!eHklmyYm?98%tb$UnH)ZEQeCzo&Nwg3jqbv|TUx7Ke5D}#v+eDY{RNyA~0^&Z~Jt5(nAnr)@B*-H-TtSE-4EP$g< zCS{awrOB{z6|XdV9??lDwZX!235MNtVT4g%Ce4t?5aa+>k$@N#M0lRdp&M^vVQrD6 ztBb@zlzbw9gx+bm^j}`2y?X+G-$5MD10^YD{*>VqBwv-D+r5K^=dyHVk)_oQn!cB= z#L{vlk*>W0wX*-{J>P!q*)NCGJO4MlZ=v2{qS2>TuJmEHVHDdv6Ex{GS-)H7CvE+6 zou8_vzUS5{Wab{bYN0ep@+-`FbG2&$KmL)TX@S`PqJg+2Q6VtywXLj4~i&` zZEi)%FXNcMy=H*L;>dL%GR(2aSI}m%X>%(yMx_R&hVPlKJu^XmU6sqL0#*9(j|pFL zxe9R&;4?fy7cEcT^J@S=FTpC4O52M;R{}{Hf1`Y19F!l>;b>ECD~;Z?SJssDW#cy4 z^J^ks--M9q(3m5TQqh`h(U@qlwz$OV!ZJ#!e2*95I>k;{%F_$lj$SOvh{wuYL2K$S10#4KG)f~S)sZUwi(WBFm(|NvkcQf%J@UOZacPBdL6>7L%?RF zNw0jfk?HsA9z3&NP5X^{P_{yAhHtI3r_VmN2RIA-5+wVz=pAX^zS;Y!fCcD=J9FPX@cO(U{JUd)v9)e)4F%BhkGyHhjM#9_ell|?q!HgG*RCl#Jc zcy$%}n=}s|z}>z*xt@Y^QCcCESY1g;tJPw1YJw<=xOm}mK3O-f9VHM#I0&&#AsYKm zJoKXr=N`YTnIKDVc;8Y%Z{CA)Gpq6$Xf#;vn-Lpx7|4{z^g&zoW43Ef4ZRMKY<_bT zurcq|`8r$F%zR`<>8qD%>QmB9-^WEKusK(q&Sor|P^Q4PJbFK28q!vAHY1xrql(7V z#YS5d4H{MX`h8*K(d|%GS+=mHX*-*p>HttiV*(v6Xf`U@EEB`f zWk|P7mNb*f!el9(j1|q6PrEb0`o;!VFI^%IB3w6}@8Sw%Bnd7p;x5HY-c3T)euNd`&ugVGv{>v?*W)lsb6i?ysJI?#aGZjX#mT1*3W_ z_hERMuGz1ea@cs9!!dO-*_JBX{EIofW9n)HaJJ>bwsN!kRenv^uPTsX^Od?EHFe8$ zvDJqzmo0E%f~1lxu7%hpgx-f`$L7p$TjQ!Tqz#?b32rKF((1;qLZ#WCZTQEOQGfl` z<+N3*-gr$OdOou#$@UD+iFnHx1ABSopL~eP`CWt?$(9theME-9i*QgugjyXyH%vqK>0WucU(7a~ zgM6us;Y`tZmr6~&TjCrZpq6WDzU_?G#r(eukEX%-59oQS%1AQv*^uGT^V$x zh?FQxnt|S-p)p}}7FzEkl%g{^K^TWzeeEJ^S6A?w#n6u9yF{A-(ZUkmWSi!m-8ii_ zNLkv8rjS9Pq{MYyrY0w7x0;-P`8C!zd-$H0+9cCKfe@3xv~>I*UU=pUFKBAN;e89k zeYaU=T^}usd#3zmndT~2o9{9G2->lk-{x;@W$HSc=Qdi?r~(LW*Jg>1{*jt2frX zZcd+lY(gOZD-b`c6uS~1U38tXlnla%JC5DLy>GjR$(bnzgP_#e7n{7K!EM(=IUeDK z*I50Vzh&vKzX+kkn{8WEPsZ`voesy|c8XI!_ilPi8>ur8B_)Q{f@I@2k!%XLK7d#y zOO??ZMdsP`-Es?x0yvaGLPnuGNfSuq_rx%*f^=DMy3|z%2$^iE$e&uW1RQGR$u>X;vRlfq1NwcT6{*`SZ5uL{xD6LaDApF2x%BFV(kB4`gy#}mT|@P{ z_&c}J*tb8;EQi2)X5&~YJl|vcjyb|!j~~5!0RTs6b}wL68^p}M6AwLc;oRdJnz`Sw zzNMl}Tlv{_)A5?l*7ky(o!iPWd7C~=_phcrx@~MSnLgLlSGS2NlPyYhTRHl#F7r6_Hu)UO^>J)D%Jw#!om5Ia3LGvv^du>z=mjCW zcg%9?{=1o)og$3FWL}FSbkCD?_M{!B-y&REV)cnHvhufILIpAIOv_RE&!D(mmw&I zb@VnOlJZqnZYqz7mvT7_&{w8Yxs8;bu`20ZZptiMxiy?E+o4!5z0fuLxTbMSlhw3+ z0c3S?6rdaj87pRHwz2=F!%Xg&A{>Neey+f6d30ZRiS@61o#^sKXm%30O_!7bJtYak z5aqeNCj&KVMHto*%LDegkTyW9zv-PocYjiI%gjJO}$@vqxzOneQZ@S0Ya6m zw!X9Kw@Sx4zEwWNCR3Hqlm<su=1hI~J{s+))n=5E!pkVmLBkzHq7nAY>rI zj0EX2H&ude%0S^9Nj6F37Pf=GrubdaKhBCV()AFT?WWm{`>nvQy2v+l|Ob(l|H zW;Rbm7fxxksUh{(Vbh)%*TX>Kwp#4mzlWWBb`keu%;a_&$VjsG^f^|Z_##9RPP3JQ z$ugMEqIObB!v28SnHk>t_A^X&T7+?&JbP&Q5<5-<|6DrWE}4A%>kaE$s0Sam{8fFU z?c643m7mk|oBquvkBw#=`Rn{;ogGKXW23kEJezNJjQdsgt18cSUg=jyIs9?bIHKgtwZForU z?bCANFs9RNv;U@pboOo|==O(ct+OLRcph>PBtt}@EIAN8=}t^{poIn+q2+Dc!RqI~ zPWS6y0>7Q+FGJp9FQo*;tZ!^^;w^V@-{}(w*CmQ$%x4(z5aNgwjbB$zV=}$=M)fUb zS)+iA&SO-hr4C3``786@IMF0i?d|P3F$IDrIJi znP%4<%Fn0N&dq#PywK?N{$;qIEy}3lHEx+EUB=rcx8DEQXiQq0{JK0kok?q>snbFC zOQycrc_w#uuK$_5#OSN`y`46ZCE-yYKUX-PNR0`k=oQcAY(+s)AjPOL9a^#;*=EjU%@SqV$QjHhD+c z#MB`>b_Dp2OVkT_@rCCJHV4Jh=!`yH{T8in5H2q4qQaT91TTtq+=a0Yr>V;<>k95^5RKDiE#bOp4Zmjb^HeR+e>txaU z;HrLG?|ZBGWwPjcRK1Mqz9P$O3-IZ7sgldqoJQHdPX3Hem!V32Ecb0?4$;^UPaUGo z?%Tq6rqEPetK(^t@S#*C%9H0VTy&Ei<$`VFRbY{Q#q5l6$rMF1lGG(h+Jud?`;e~~Dg zjmN6|UpbE>=xuiCwA&VL zq3U5j^LiansM2kmFrcjwkCWH_>oi1JD&8$4QO?1g4>Es8UCDW+cLPuMW_dWsZtijA~4#jCJ?T-zvLRJ;>$* zXlsPFhjJ9sAJuV~Hn!aZ#4g~Mfn7yspLD>nlqjW`+dj*QlgHS$eH(*dFkDjRn1qA! zn}{%A=}-QIjc-4X;{T`ZO@b^r(mTJOdqli7_sq(w%F0?BD69=MyNli6X4a%=W8%n6 z%W&EV83-Bqe(&a}}$nw%z+Ac{1fPi*L<}8<$vSJIgQ&RR2-{a4!^h$ZBGaT`= zAj-g9wHlj|@d>ES5>~Vdd?{7g-vnkXXY7O^hH@#8nTRd~5)Hx}ks&&z#jaV_%52@X zs9Dx&hDLENjgqbkT3FAj=hk$kLPnBq&)!w%?o<#x2Cg8tAh)Yh+e~EodP~JQv`X**1)Q28- zP;dVB0f|sPL!iSa%e3t{18vuDxWOmW7tiOreED+yva8FK=ZiN3NZZg~?)mF$Jo>Ns zFNC_9P;Ln6`9O?*=Eidi%vT6a2s{+WwadNd0}D+JcOGCAsz{$+7j(HYOxYn27pfzl z?LHeSIagkNZ4LN!l=>ICJF8ruQcTmFUa!mLr_OWvxzAMRwNS;igOC!HtCIMy^YR-;qou>hRD9m!L*bZ&K=g32V!tG~618rAE)8M};pFUac z^N>AFKJ1@U7Cw2Q`qMJ!@u|ML^b!qjL9`i&6USFbO%*VYY~Q_5WrQ*ua?JA-ijTzz z#qr7X>2UwG+2#Xlu8g+E=L3$u^7YwlrfG`fB5DA>^p&qll)9{x`U*mn9ap_CB`xR1 zPj7AV{AVw-xU|UVs6H)x)>%cUG-rJ68V~;Ozh?YsA32DN!`}qO^pMKvCtaRBae-&I z&d*v~cD`AjG0mp-O?{w+*+*-dM2O<-mZPcT04z5$JMH0+1h(_Rl2tpvz*#9}bm0Iy z+wqCO97aX!fCfm^Qvl`X``kp1&H%tL*c%MHeSpNwQ)Pq8q+kFGRf8oT7BO;UUzZ6y z{=Z~_p(X=%ta&s<{r;yDgS zV^p47k*blTkSG~3ee{Ukzxz77uU{ix>O#e`D6%{!mJ!>_n|${4C5D{@p&$~G;j<+u zn2bgo9qpGpkn|AL;S)?}Ed=>Eh1~4HH5jR^~zaS&&y}ldLNS}F~Cf1!>q%$Z1piC zs$OJU9Ym);4`4*|nOVe}<;HY*)aB*@X4dl}j#AEvF4e(vWqsB$y*3qPq3d1E#uKVK zP_P;pC{>-a;(|1ZM2fl#5CWn>!sGA0$>{y7cJZ9y@8qYlU8BU*E zXFSbnkVR3~N-2aAuK=%Pva`W2sc-Sf@Ljio0$*rjDCSAy8!$G>X!C>V;->9Sa&{$=`sQ#OS318!ADyOF4dwD~7bnWl~C|8~@kG>FUsNS;p(!ctjVvwIl@LvhUlKVU@7vyfA zJHu0#FVIb5#z!Nhb(ou=8bd}M)Of<^XFp}<+doEhqhei)Hlpk>Pc5wT;^|AASXzcu zfrLS)hq*8@o1}~%?=yLFK-4kj^s7#{@}9;siuEl3kwhO3rsJDHgF2PXY?!0-noywn zu8>YAY_g(a2}*&YwAJPq^iSnnDub~o9Z?BF+L(-r71274JiC-Zb*P;IK9u1wD-a>7 zk$A<5)S%MCT?pL{OjfJ@tE^--SkYx&$WSx(`()|jD?XJl%XgV@(XH=FhN-tqWqo*3 z-@^f1Xx7UQi3Iu+2<1CrO;?J_Dj`MjQN=uGGMZg0rj()=bs0o`q>yEO38JMQ(?>__ zf9qRh4v)Pps zl6BmXfPp%q6;Qth;@5p_!{KPc=Gro!ed#ir+ow4gjggU@>97H0+<_=!^o#2}`rChC zbZ2+w8$^?A%1Up6mrj3%%O}oNqfK&H?JX8(O(+FXu^@Qo@ni1azY87XjEjoNFj*28 z2tfVE7?&&KA+;kk$J&;&GNutUdT<#QQ&`1h=n;K|6kI1z;LW(e$BEo*bZTShrj`87ImUbU}YaMuS`HzWyi;*)O)QokaMHxsxv{5 z62g*ZmFEn-W5`lAL!{6S9M7&H<7DEhd}iP%PR46HFv``**L0e)v$t1@w)h`<^jMQC zEXpBSd1QbPf_T_r|E+hKUjG1!JikNFLwPxFr8WiE=BCEzv!gAI%jf`*#S5<>%R-u^9DgOCrH? zvP2>iDi@e34j%5Z^YNYH9GA#BpsR8oH7%f~De@q-0f#xR7S1)sDBirT2^>2J`<_(} z`k8P>^bTbrLg}$j{SY&DyUc|rrZBF2w&~v%ATtFTpA#@B2@}NGvc*hUyZKYb?>bdo z;x1gPBD=SY+a^YE&C$Vuva@m=W~XXT6)>h^np`H$1Uz0f?iPHVuFOCb3G&H=-TRN2 z9*l?*yKPG$>4`2&EVIBO(vTM|bvgX_F+1P<4%1KWB9InX@|%#8<|%8Z*ZJaaU14Qm zz~Oj;od6JQ0>3Tb%T>bCB#zm)v;?n%3j{Mxlb)tN*u8E7GA^?a3T~Vx(9;w`Izxac z$ZX7^H+0{W9r9^Se!YqKXhfOwh9-3AyEfDLp1FAS za*hjR+_G$<{MyRMTV_{YeQir2{u@xgUfeE6US$|fQ!bo2$qO$O3v$QfvAxzrlO z>Mf9tM(n-u6ZYQtDI$@@`4eSln&lZN#dB+yczWXugE)rN81ZI`wZ&BiogR64YHrev znNG&sxcVWVT)WO-Sz{}O2U1{h6|)2OI;9FrFs0b6h9ktW#2RcnX{tCPtkczFGXVyZ zQ2yU%zw+3ne;XL2kf7=`W*$sJN*KR=Hiq(G+cxXyU8i4_nZ-ER|4iG>vv+37%w(1f z&^2q9EzfMymW^Uou4%Ko$W}RWz_!0)o+8P?_<)GzNHBmh1ioOAQjRv zW5;o*v?e7@$g?e76P0w_Fi+Yhifx|fP4eLQz{ic#rZZG#^ThL|@x3hbAbg*#|D_OI z0nxM0BvCM#rt~{8FZ{~$tespZQ+aWexG+29;y)Qh2q8Io<8^kw^?fD}_lf$6rF@i5 z*&MF&?AAFp7M2U9MHvntQ>-lvIJvMwB%Fpau-CT2;j<`3Db*sTM$& zx`nbHTluZ`9+ml=nf@sCh@wnHQ7mQo7{+ThMVV!0*kgz@^IiiZZEtz7U?`8;7+g7Z zJ=Ie?N-M1Lh_+ui;6cYxs*+^_G`%xeGg8&p#Vw#%=f%u@5vN8+?lh#(`jwql%RD+b z;NhKn&V+BBCQYEXV~Uq8I=Gq8l^5x5wV=Z!-S)1|W)QR|QJwH&azM zsd5qUG)?IYdc6F~udunYSWOuTqdt{V8z}Y4l~-T;9X@^E;y#{(Ks!ph(3Gz8BQ;45SKe8+)XV>9C31Coqp0O zZU_*O;BbGRYj3{8;k_p$y)OETy@deMKrO#5#&}k5g?3lW8b6iL_KP|{=JbN;j6_`? zGt)E9^oX9Kad(DPQ%2>E6LaW2GxH(}xZ#*kEs)gj&v~0()86%zh zrUGFIuap{#S9MuwbE+yaCiL{#F{;j^$*5Ey)>FOsSVOZSyUM4HEOZZur*1o0T8qc*GLVa#iUpr6#IL|ZJ2l)KKJgm+@ zeyPni>t2&#ra>VVLW39go*UOq=L0-GWIa!XHZcdjIA(AQIfOcWGJMpZYgd~L-*2-l ze0DW8T(fLLdUC>b;M(st95*sTFVDWP&Vnq@FpoMK^Zz3ZkVno2pfbf*?7R--N>&EFXDRJ9MK z((h)hx-3zNa=@gSq=H8!Bjc8lRko_$Twb$k%8suvF@~wuj^pUjtc=;L{0ox3m(@*o zL9!b!N+bt+JKVbd3!Xf9Tuu`exyGq+f8h^ady!-JEi=LGv*+~> z^8{b~dHTkXtk6H{#A&n9=TF?SYLn6C=R&`mz@OILR7UgorQ=-Zra>X_;0B+g_koq; zR;(|6QzM!esha70K&6eonkNsgjjql%S)oSYYox9|pAKKW_^#&xdcJ&F<@UvY{qK4x z^?Sg!j$n4;N8<@+PHpg+XD&e`N%O35KGw$#%dR=;GJ5}AcE9%%CXaWJ-KhHNvqCY+ zQdawmeD2I;R{KMws7J|`BM}0XDNZb|vbD59CrZfjyc%WiKic8-|NIZ^K72&nOVD3? z_JWGi0l9fIL&ein*>OH8V2{xJ*@t}GLUne0jh(&_?_q~Otmd)&N!o%Co*q!*nl zL9TMTQHKRNBo;B%bS#o(xlAwW)H{rl;+tHfYu6dS_dcX4$jGoxpDtaaR=q`gnx<@D zJj>IUw#iUr252l#*6o10B;da;vocrTQic%7F|WU@G&Mn z+f19>vI>C*-!q@gkWQb^@eSn7zipw-kGpupisN&TZAyF<9&)0-f^!{osDRuIH92RW ze)o41NNH+#A%q)};j__KW#Uj|4 zq_WjMbHjF^+Dv=9_$+7=MxJLF7}v&1YwfUYz+y-h9(x?Rz-B$_&jYv&h`!M0v{Y#w zTdnw_wsGcZiF#@#$e&*azgclDU{(QJC+NB{(TT9C!?I2@GWyyDNmW{>Y)vLc+hev- zuWg?D?zIM7aT0NOu+Obu+~EEvcad@ZMRbKCN3kG>^r9|;0?6nycLt)*O1xa$({eiz zlY0+2eCK`Ahxbu&$I7FgGAi0@AtzTkX_^wp5zoK;91DX1d9KKnGN!8(D3%cF_pZG9 z+Nmpl@LH(qY#2|(Gd7rOw zs)<*V|GU-_y8@joEMwo;{hqk~Vgj8p5&yzu!K zQKINL>yBG{r?NBbEiifi9d>{8GxG5WX>94tRZgaIHU`VQbow%}h^vKV1Yt3C{fn5%ZyX67UkM@VU(f$9Vz3i8Asj>NU71W1!PO(3VDWY=Hhd+ zP)vEgda7+zRy#L!N&!(U`S`|1TzltT_Mhw%JBKqyLb4zhNl0ArNF?jgTCsS&G+6dx zveA^o_kO|Xy?2Z0A{U8Po!1}(PAoUWiB^%rf= zLeA6IPr7m3;EU($8$-_6*ALI**Fpo&uM7Exh7kI8^W{quvatzix-#ZzY@z2(z{gGF-gndc?DK)rwua)4 z60|JWZh$-&F-pXzfPV?Bn1`MzrO2|JOu@64FLLV4DJJ6yc~**ZJ8BuBrW1Dl@f(b9 zJ%C6SAA-}$lp+=pFP^%@=E@RLX7!;)nDx}XPQ>==25W;Q^1R%sBL%&s9y{0X@%R7! zPkHj_0V0;g_m4{ZRi0a;c0tK3RF213{Hno%DqK#z@Uyn6nK7vu7hQ^VX=>=A@6WDn zsYdptaWjstlC7tcG~f_c-0Gj{T+650H&-A=8FEFP2cPpV%EY)<_HP>s7-en9(!jL% zJ`d<4^fjn6%R<{!F(GBWxNAhrojhjwyCAZ%Rm_%u{c%ZA#W9gdP?ok)8Fp6XSxI%&KKbY-Qb-Gsr7B|~8nPr8iHY3`MIac8Vr#Tgc`>Mf;+sVG zA8_#V_fXR@D(M=`pQ5HzjRI4Urc(yPJ}-Rs8HNi(^sY6XpYomPf%vxq23KBvO`Fo> zQ=0nX;|#p<#P$8fbH8mMKaUTX$L5edZN391ev|w*n_TMlVB>2rApqgZCy>T>uL+Qa0Ev08Db7FVuldgmZE4MTP5GRse%-v8|4bm` z){9g!iIq(L4MJ>DvMtp(Q59fgePxl){l@1>^9)sXj5B*gWrXSun7sQIkG}O2M68fW zZB|yYG$)7aT-koUvc&9%Etltb36U!PQF6ect-U8~or;{u4)g zyTrpDNLiRCK_+oQzgJMj!}63rOrT=MFc}T=chfyfjODnDTgFJ-*zDq}cWid1lZ@fM zpeBK4#R%(p1%8}7nD)89O+Tlr$<}FW70y4csdnV{Di*UYX5->H3ec- zC{j`qk+2vI5#~3Hx)Iso5&Lhx&*;6Yko27IABov_xHNKfH0IftpXKbrd;5bA5q=b^vz^utZEba3`C zt!?(ZVIJF?bXb2~MLzW76RwSHYYZV-p~CX%Yy%$i>U5vaV}H)<3*?j6hVVa)ZJ$P$ z8OH=4(45z{@^|CqU;4^drN}31DE>zUJ-64LW*G>t}dw^CAGFX?bFA zBIyh}eB&>^#<%|c|Hba@J9HL%j(vD+*AJN8fy1l=(vj=0(%8>y@S>Mbx@kR%#jLDZ z`|R~GZZLsIQ#?bQ*EZYES)JBe4>X)>&}rPXSrX48;xfLP^IG9=H$Him&B8Iw)iG&{x>-MypZRnr#r4ymwz^>Gxl_SH)% zo4|>?^QXZ%3r`v7-$tR#)QNEQii&-h(d$f|)Z3K3##dXUt$Gl)Tz#zpln*>wnR3%x z3d{dFWuaT74OC6}^*J>@?LK`owhF;;ZNQD6zt8vn`X6|F_d)T#L?+12>ByLK@+=XO zjI3UiYh|NgU3yWM#dwHBR;-LnimBVfpI<}Wy9tA3DyGG*D7SDzPIF!aHm~zV zUpd7nomM+6l5WE2@Q63R@qNDk=U?Ogd)Mi%E*M_ZCG4FGCtL2Bb-pusXQl;&;kf;! zp=M8Y^PDK0?F;Rl~^@a7xT`#73fPZ7rBF{^7UT)c3Gg~cJ$EGyee z{eCLN7RWDWQGWx!6Z82K^S=9g-gsvGPcx{S$A^XT(+0kd18kZGu=B7jZfNWK+gKo< z4{5^^^ZN4{Ic>HHyOmzYv(`EgsF#=;AZjFXgWS_mae^x|_lR#=)ewJk@0cS35b9!r&IEtz>l&WI|goqL1_Y`cF$wK|1 z#NU^jaoqH7pEqy6-8Qgn@>^|#Pan`|14=$$;VXxE{I{F85aHmH?ISfpASL7{efBhg zLf02rf9G}DzGr4-w-scQd>0+M#x^lJu09{oX-ofU85mQCsdHX1*95{sjnfDIeED$i zhw|dq;XEKRSFi^Bwm@vU9dDZDbmEw;txe88b-p;--w9PmDkIX}UG{(Y1IBkA6Acop zC(l&QQg6t))sw6Y7OMqp=mOWh{}gVCTU@zVrA0$WOofIx5eJyD>5nB|}-H z97Y39#wX~Dezi-eE#%~MM8ZNeKq9G5b%_K>#lh9GX_Y|(@Ldst=db+1YYUYrv;CE?ziu1QH31O!cW7Ye0;VRmx=C*cG&M0Y zAzStDd03^84`~8;Zro4^`F__Y&r_~V<>&KnmT^r^I`ll`u-lNYPp7YOhEQ{po#wrH zE6BCYhn#(EhIzjU8MnP)u1Z`!VVjOB$W-XOR*NYcLIoaX85V11MsG_MwQhIo zvp$!k@W*~{Tc2QS8x{l^9?xt7Bdyb#dO`)uMwhJ%m=yNCnQ4~_j|d}=?gWph?GOgw zFqp6zo9YHv{89c#HA7{iATv&_PY}ftC3EiG{e&NV^EMzYFEp7=ty?t1~r-s7`Rj zbdKiP8w!yZYhJFLeU4w`lAsvmm`pq}^+duvjKKS4R#@PrN3j@5= zS*p|+C$gG=M#rr#3iuahpM}Lz?Br`-`ru zFACJ9SAPEwbqC<~PfY_!jO!31;>K&bHg&eKIzFHi0t8J1%9%cv+5XqGYaYk$>NRzR zd{2{{rgT1VvX;f3F&PrTpu!b9d!t4y0(Y% z>e}i90Zo5Ha(s4~q3Pvo0*kH;-*xEa_H`8Q^E&TBZX?963BiiXolnw?L9fHv?Ne-= z-e87^=Oq?Mh&2)G)7S!q*uuyqbs@$qXChKs_z#e1hN}(`2G#jd$&NJf1LI8glOZ88%jznPiy*`UEIm0$$2xcddNj>;KyTiO(0!Gf?w^22)Pk0M_SE zLVl_VkhBHUE?1{1-@IcD_`5?)9K!`24sf)X2T1WlNs0SgQe$h?vzJJmfN43 zGJWaI-)4HSZSciwE!Qirz9vBY3X1<;!B#yYF1n*}nsNH%1}}f^1-8y^ad>cOjG9Ho z9Ek3Ke0PVv?|+{s-~S0B639+{*2E-BS?mn>+}33-ter-hV`9T$ThmXXW?V$oDvc>4 zBaRIeicb9G@;V#6RmSO*oufS_SxO`&GL|I$geSKiapT%GCWl9?om^*WWeFjSW6i6P zbNPRV`4AokLxYdX-ZEi*S#OK3)Q8xC}m04)j+Ktj{)<^i)me((|s>*K$ z02vvs)6}Qnef&NE03ZNKL_t&qo8NlYI_q!Tm@0)U(b6Sm$^*mZ^194(rPFR8wZ^iX zXHEn*=5O4N$~-YynDR6mWP)f7%8b0*6Qo+Ms_&bKx0KiK$H+vm^T~a_^*3MVd;jk@ zxcl)PWD=2d?E~gAl@W=E6UhcAlM{4Bmt4QDvq;l2#P=v7A{QBl*&$;!B`Qzi6-mVS z&Mt%PRl4V&LPio%uD_|uPE@5-s29bTsk?Cpa>auOkNEiZJz^=4QkK9JgrK8fADO&= z`|WRhq>~e7F3c*z_-p!{P(SO+b^CPJrStB?Y`yU1bx{8j zA^wdpzcnHRX_ga9$+OQt#WOEHO}F1=GM*G``AmQT5O+Ab`VLS2?wcHabeDL!XDOXz zQ!cG-@yx07EcX`>&Z}nmWFxD#Lo%*a@jqoaD9cGJP&q6u4B1{e#Xt<$IoRXzWDlhj ziHzwEyQGtpn;+cZ_D3Jl?e^F_b(&5;A)RKnvvqB$^x66=W?eY;IQcVW&Nv(sczC># zcECj})1iy{x#euN+>qC+<(f9lfD6xWGmZrwLqXU!X^XYBCibcGW&<59#sVJN79)~d z_V%}o$~YQmddtQ>k=PdsyjU1fW6q)^;%>}fsmFMf@%^v=9sl_+{*w1ze}{CM(p~5h zCvjz$5Q1r*lE|3z@i|V$CrD&c15<2();i@@28kq6F%vam#E~^!m+wuGUB&S8pC{_| ziWjC@mF&t_6(&lXYbX;g> zkzAWYU?>FM+%$6QvtNE$!G9}+_$+`jMqH!GloP8bLPS})5)}^=naRdx&z3j z?0x&YJo)aAP-%|r*3(4OJf#~ae17Xi&aR%KQ%)1PyFZLEwgFJIXK^xUpakvK3MW#4 z8KH`=Rg*&}iP&0S=gjIlX`1rz@Cirhm{=BzcB3R>=k5+4zV|+N@7GM=D^r_5Z5CZIC)&GcYu)_xO`R1SGYr){_> z=e%ZsfrDgBId-}Dp@CU$AvfI=N7tFF(*;1Tsa^nPB%GC5Gz^jD#Ic~a&@I64c+8Lg z>0A8epZ+O7{pRZ&?H|(VcSw3k1y)qKfP9=ySxSbSkIu0YFO_SOR0)VwZI9Im=L@lj z$YsWn8ZpVI#r9|v#DaA1fZ@e6B&W6zNeA)_jlxWp4TF7AO3~>gL_%`!)*Wu%eMqmH zSZ!3HR)i1_w_g16ySLx|#(ie{DYt)g`zy1rb3sffv;h*=*O?Bvsn7Mvf!bGw{D|x8 z${s1GyGbX^$_x2)tw+nuoqN7~`hsb%aPEad$nUg<*mKX#1je-+LUf)_j(NXnEl4PY z3euhH^V!fQBa~j>^V#RlBZhSPbcf0Is?UJ1TWc0qHtQ%Ea$|j z6Krg(5lhLWJo4XiN(vAW;}5TL_|7%b{V~#5lq(QS(v*|SYn)tOq94WOfpe-#UoC1h zMCxDFx(J8**N$HAx~b9#VgCilKuS2ZxXzcK{sI?P&ho}bSGjp~7a^b?{lCbhhyO~pHp`blM*GMsprn@ zf)gHq;<3x!ay;v#YqTU>8w?wZXQI-J^UPN^u01n7oB}1BDL7B4ftLYXoj5iFqh;DL z-O)f0SZW!j&@?0J#KegtiW71L5ANRQy|;hL)pxFP_q`h&9v%{RqhdP7*o{|A4HX-e zH+m~clQ`wyGHN17m+I~ zRoQDfu9o_%--_YVkn>NS=bdXGk)|1OxfV>fO$9Fs)D_^W$7Hh~YwO#6{>%5f&F9SH z*YtIhye1#y+U1MW8Yub@ zpihnp#BD-_zBxhPl$2|`53Rbg&0fi!DlzTS*KPLs^5+X7`qI?lL(?V-H|2y7t0^N? z4(133Bd$p;3P4?X^|iCWzY;?H7bp>HXIxAZW%RlUFMaMg&Rsf79LHo?J$+K4m$-vS zI_!P#d+dJib+WxfWY1ibn}bk%_QX?M*w~^MC%Oj)M75Tn=xpr~yUFU90LOy#!dPEm zJaY>L1rk9o?yxdk;OxpK9o1o)r5vRr((=p~0UYifaPQ+g+`IP)k%SXxP7_CxJk5)a z9orT&1f5yKQ(5b8g5I@cd)Ir@2%JYV1I_T~Cn z$Pc)|P3!uAnQ?*fFO*m916`eNzD@gGd8S<^7BI^xWP_R3eC@qu=`t>%2B9++LVqUe zbmh3{uZ?Z+#Sh6O@Z3b-ZRpL%IE0X3NS|w$&u(8Cn)jO+t$Fk4%R^InH3X-enrksEdb)~NAIw%clIpJ>A=>W9ee?89fnX4K7_6+*O*)+0+vI~sH@UfU zk0;{;QdNMn{k=Wj{mI)r`s5z>?%d&pmp;eh@(Q^U=ub5HyYtzg9enk6D{~R8cEYO6 zi<6HM0l4no0wR?RVMA73rVfBmM%kIzaMp0Mx15ck0gDMztlHE0GZw3wy|0x|ZKD#N zEzMZKu6|~M5yR^!o2jc^X)R0Vt=feo0)R#XP61IQi6ViBBr4At?HzFc!CfBSzt7zp zx4HZACp^6WfP?*g@-#&XiL9J?5%l+kq>wDgA!~A##b|-9=vHU9go68SShni?+F2}g zk|PleWS?O)U@zUTGAIWfj&6Ly==yb%lP8J#eb6UQE5jd^6rFB;S(XvUG3y(voIP`r zTMu^XbysDXD#40?XVYZiS>Su6IiWt(3?X0OV?^9^KG~uE-RGm)81g1&q{+t+h~xIx zAz8lrP5!efo@-AV^W+AdW?qIXG|OPci9I)U2o-=Yj$4sFkP@ooHfQcDtR?^z%7c#E z1YUfyLXD}ZA%}GMLR-0q>}molp?e|l6iQ>3|MNnKOWNt_PG13euGli^C9C2NYwa+rCMWPM?YmHv>mg(bF^H~DzyE_e1GvO7LxBBzYUBR>Ac4R#(qCLd>f z{IGZ=&yIr~Edf+d75iDJ0;a4EYl55IvaE@y~ z;GK~&qg2@s0U!+`Oj*8AH7UK5$Vnh#?d~!@8belmXDCi$3$SD*V2MP;AnLIo zhb%{nEQkf9klqthFxnZp`$-K1V;lO8=Q>iG~Yh zdQmH{%5t_X4TgO#Jbi&T-uZwm&yhm2r~-kKN{9;rd4(Fdga*g1&j}6eLen2^n8(+J z>@Y){KWOs-ZJ^0#XA|%+?}f_3r_1-O2}FkKplz`3yKeJM63AohLNN^vRZd8G+w(SL z*Q760N%H`lwu)_PEFs-K05K1mo`*qck~I$qYkFCIFTR^*M)#FhU)um)26e9L)XUB< z%`*DkgspR@>GgWWvHZ@cStuZqsOf~!d)JuWe*~%+jq0E~%yczpXJqO3#@I~3TvUQE)NSW*q+H?BuwXR0}>l( z6iO@t$^;6!Y)Tfxc4oSq%kmLU9<)3IfEoN(tzU?lEy=n*ETE~gi6gI~S5&q2TbT(A zSyi=S=&Ra@!_;XfYpe~@)|tR9k{U3IYAQ$NIUty%M@;rd93369zjw&a!^b@M{rLarg+}G#G4>(WKKCFC=$fr|lcq z9|w$ubo%;wpDx$0`N|;#UYhbKoxk(oiaQTna&L%gysc_F3SsN7&XuUe7fu|CshN_=C;*ILb8(dui>qATILFP$_xWh|HXl8{!%;Hfv{)v3 z{}Iz8i8!%{Tw6p9Vx*D~sbaygi$ipYRSZm>-&xwA)Kv#Qcr@(leIh7qggc%H(Lo!NHh^5AO2#le;{)dyhvCAF=mjm+|f))1xU-Qmk8vdvO5( zjH#Mjse0N+K`-fYYPdmHb?BviI&={)zLo!2oYD2xQ4fE&=p>>>lzH)3Uk5D?-?l$JDsqXae%Sy3PkAzDm zLclc7Idx*4)r~b|BuS@Jdx)+(rMS!J?Kc^Hbf-{cP7|TX@|@Gd6Kt)n6U(U3th6Z2 zyqIpu7`kicSr3k_U@{Xm8(_Fs?JOOq37T9m;_4xOR-lbRx69?NZ9a4A3^yO#=iq3> z*^Ltn_Cdb$0G9VjxAw?37f2QtV5x&tl03_6%wgzq&vYrC`xon0IWZ8O4Mofnt_6o? zOSBGCpT&R}42=mg{N-&2;rVS&9l6sRrf#!NETCeZcpIpDYFskILK&(IrFe2P0WZJng*zCJ}eXm!ZwEN4B0R*qtXPLLgmpkkT-Sv{G!kPkX_KO zzo}lE(n=_%irf%FORfVARl;!`?{OUKJV@0CWPEX&8kPGyBrEiy%nK5H*G-7ENmo+? zZ+by|Rd5RWYYQO!5`&W5Qo=3Bs)BEhskJY za(;8O*ioTBBx{PYV$M2qbCG4?$n24KF|scy>GHSUfn&~H)Sw6u!T=I_k*vWs04mKv z2qFpR)=w1c9C9ElN6`lp;&&bpzxNQ9x~TOb`SV-IUP3;I5or#Satf(7qt2Js<#>K8 zo>5NbRFLWU&Fjhu86`L~EhBWPVLYD&d$k?fQO&NuQ6;)Ep_Rp+IrVAERMk^gUny8o zl(|_r`d1`K;$o33LLg%26)vYDRhpynoOF`0ySLB7-TNHw?Q{5GhbOx`?C)`hC8usl2WGaZ4mK_yqXqvyh=} z@_g|_^56G=Q1ui}F85EGExzP)j?p{b3ERbEl%HEsrlBW}dalF4mk*kcQ?vS&~XArrV>5r=p z(Zm=AGf_se%{T`wpLnIJKS;59w`G-z7B6b|FQi{p6D41-TTkA}96)0UMMv(|3 zqGq%#P~vfA!ny6%QFR!g#|!G|JJ(5C*TS#Wg(NbPBppdqIzbuRXJ{$~YFZ%QX__+~ zr|cZ;@o4t}y6w8xAaRmSnPi1cgQUl1f0a{Xgr%x~MvX>tal{%t+!t}u-rZ;cH zl?kfXM~n_@p)+qXYB zndWr55#xgc9vtj3&ZYoJAz4fYbb3Poy2Fm~LCaEK>>i8_D$O8Qq?sa3^K!~-)_t`N z+C`atbGEK=I?H(`C|C-BPEwqSBjN~j9`d|kvz#yGNQL&e2PN2 z{1aZ*BU3q9o{{A_3PmgKTg^<#M{)U=0URVOFUz%fL{f%W=<6VpcGLg*}kw%6vw3F zu_dVfxSj+d*njJ%X?7( zuGKzp%$P3GEW!*Ap{JvaJB}Tyj#}g;B0E1o!DFjK95O+GnorF%eL%%nm*YD9= zUId`q?=eXFbh|^6UYDd76;yqedx6eBC*&pb;R{N^WSlZN*ymwZoX|QMjTnzdq@xMx zXu{~|h@;UF>2%7$?j8V#lPQz^LncQfCP!l?qY3FGE!KI#Gf^ zmdE#(jES0s9C@BI==T}+dW=U-InFs1)VRLI#9%YB>KhWtvRdJ;cu1}foQoyd;e^r6 zyNqw%qI2mv3#|CgkTI__m2vi|b1c37Gaf(QCCl@A9ghHo>Vfzz;ExRvJ_qUEcL#T& z&;}4f_nHQ@A^#EbPxB7$&CurmLcSx!$~4I~ZJ3ud@WuCC`}F%l5Cn#%iX`ERn3s(R z86Jw?lsVHDH$%Sk^Pt3ekf9ql)Ntl$v_25#>NB4=$?!dM?RDk4>04!e@he{)s95UX-Z0n6L@%+qYrO_w6TQVO|g*lIkkAglz`rC zQV+uFbrIFIGrb_nlm;nek=E9GkmuZwa)l}V-I%ZzTOLN5D z1okHI;DGp6j9Bcmo9Dds;~#MC{cEI?l*pK76H-*`f1>hqQz->9D!@o2B~cs`M={Bu zi%cZlL7#57OVaDn?RDw*IwYMAQ5+F>5|X4tx6>txV`LH$cREB-JD|z3jOlnxK1q>M zl4Ti3N5%9(mKHm3vT4e6Iwea}@?3E^nlK%W7>~!~)0D|%%;ac7K1s>5yhxX2s61yn zDVU~QC{&ggTg!E;Q%;@f`j_>T4HUbA5CUmeZ<)k6`d$@`gG7?$S-}eGs#nG0T`2@f z6f=l>EcW^=b_XnV7Fq5svN~8~x!Cll0DuYQ@f0;WkkM7r@YB$ETPL}6%;tqpe zkKOo)$uzZ`doawB9nE1505pjD^zsge>8O~ZqiB2S;~gd+--dLI>U0s~QO!*GUYc@k z+~{b`sk2+0SYP4M&K`NL&?h65LxKTHeespw|HBR7(f9u1e`^C5ZT)q~!MkzX^sf96 zcnR5M>S~g2rkkga4%y&7H}8iC1pT}TfHkFab^Gjc?eNLOa~%Xxp_6l)oUi-4DN{|% ziWyu-+g920AY!*Mhbq~fwWcOjnQe%hVM*b*r9?!$6CFcEtnuZ$EIx#1ib^N+f9fQ z$#{AkG%|l^+Idthz!xz?IpC1`B!1b6$qq-1KDtSI_ZHEaOXTXXWU!3)(tK&kTj?}q zacP0mCpY-;#wScBlS*It{!4*6mBtHKfWHSOhFMKc-wi(B6dD*d0R*3}kbiNVy6abb ze#HFU<~MzL2-)b<>n#VuPGw64Haa-B=^4pkC7r3-JLmxt&hXrtrZqnmxR6YRU zv&EN>rgWh+ZAjMF_~${YK092wA)9^n&s&c3Ja_Nq2>E$XEA{=FCKpn2a&w*GaDn~3 zee{l_lIo@UqHUIQ^#1!ycMge`x-;ivBr@T|aG7DhSMJ0y=HM~bkd*1Hf!xgYR;)N$ zM|E;8^|X-reH*LW)_TfqoYrm*?cmDYMlP5tY^c`)DMSfMv?KMf0;b`5=Zgk6nW7s< zd}i$oN@YAc+GU(h$y6~tA%!4{qZwM>7nD+vs{$mHi+@w4ti{9%RqkY&4breZR|+YN ze3l@ClgR^y5C=PQp@mKrE$Qk9nzE6!jn0FwW8d z03ZNKL_t)^B2T%>Ep}+0t;*eQLciDH=y0No&2FP^`2PprFq8ux^0=xOkw~(mDWi|? zGWzgChTESpV$Zho(qIsRy!;Nv=GG>IL7&NZLhi0(6C#G_w}5W}dakU=3AXiTI_^9` zrj1o;dS-$FUw`WZFs{6|fxa21iB;0^LSQJwc+3M#+U)ZAC12is0IjKBa+qD?;u8R~ zh3a$QZJ7<-3l+966Cp?KbLMRo8nVl^qp338!VMwx5YT9gH_yxHdx1lss11yoa!^Wr zK|s%%?kGFUUMFGe>}jMZrUj}6w7O#!5=2CPbj0ZTN2oL}Pa7@4Pq{F%pL966v|h0o zrbn;G^X{$}Bc8*$=zDr63!+|^px3wPph1Q2!+W!U#7L|2YV0vK|L;hu&8irwI-Xgs zqGYIqp>Nnpc;VDV)`p9GviE@ddpkTj+~qJEF-fQ7d0tI{)zemD)_x%%5>&H3n$2>` z%`M9cSQz)E%XBHFVOmk1O3j>I;)c*jzgjR`+A|ZS9JnjZSWyFA&5A`r7Ij3)C`D1h zE|u%8A|dHS#d?!o+@%{OBvC{sPUv?!3_JbeIURaQhe3D1ppy`nAJ$X=vTWrUG@1^#LIt_-O+Mp~9Iro*RNrIuOs72G6xGU6bCB?&CJTklZHw zTJ^v3`+q1=#3_6cA$k~~q;OKOv@qc0xvg>yf-?Fly}l(vNlE(PE~Ae=AsTi{y0{*d zOCeb74%r;8>%^GT<5WPy1ttdfV^Ht*w1F}`Tn#)7CdYE#!enQ(AvWbLN;U~$0u7B{ z%F(^?0mRCFE!XJCE4v*BUiI^OWUFAg*JpWfj;Bs+v$Ma??I#a-FnY|ry~jKn?Q%FB zp}+N{jnxO|2`3v`OMUJN6|1GeLRE&;0Hf)nedZ1O$ zSVB}ekO(?aLL`fwKtf3RahFJxJA>kcUZ+Dh?$C`Bx={kaFdmXbF}+To#cr2w99ImR z^+^KFNaa-PpoA*!i>e`(P*a(JOjOJxLJ&uiiLu6Z9>9?2IgyO$b-Q$ui1BoajN-b@ zn)n@?{WHe^zEIg2VtsTwrC9H?AQu=!119N{O0b9|`FPCe#x3&Q$H=7>7#~!I)y$** zbVd#SC!-0g8>^hySmoBOyG$li;)wd4D4^j>z$qo-UF_+iHpkfHFG2&iHufRZ|N3P5 zLI{MI`b>MwzfJvp$WOKTiBLY;K#~v8g!H?4Zvs8@_}5BC+t;CenR5+lL#ZJI?CSI( zU{_CD!J8pek-my;iszH%OXudN$(|-~(Ilg(!kgqZ$(VVrL?jVx1LuI)?1a;-IB4p` z`U$b^eTe znp0yIh$%lcu(7nn`tlMgSBxf8Za%!nz0pG+AMLSoxX;0K#5kKU&ZbPWv~o_eJOt3h zc$K451pqLEFzzVoDW!@@DHo~g=O!=#$`fHJrv=PwKOW@I! zoeFFWx*htR9=*6z0h4ajrAwD2iRr{Kow&owU_dV^*6COo4h<-tbA*Y7l4FB8q<{qV^`ygnu)aPK?ssgM5h-a4xNT2f)_I+q#N3%sj5RJ z73DX(U?Cc?o9MyB&^3 z;Iel zQj-q~rE9|hZTfvctjV9Y`bzif&`qp>&!LC90^fD0fweIap$5{{*nB$OxNY{&!{9X8 zGjIIkriJEmn+H&a8d;vj3mp_MD%6swd|KJPDu|Pqwbdntiwo?R+f?gNcRcz3N87tC z%aS8kV#^~UGxzOWs=B(^B!@JKl8ud-^fV9C`VU$Eho1T)s2BYQO+TS0QJ*jx4k?nu zOI3IEsdL#oFA?E-2sq&G;XuT$ZoWlB`^p zA-Yb#I^>SCmbM^jL9mtUWHLb00wUBC9!^L6`#<|L{CoUaULW+~%NP9c`4c`}KI8N4 z3tq+xUTzmW-_H2*a>jYOfx)=VBc^mJ>&#r%&0tw{JEiktY$%nW%Q?_;Al#fhGd*=U z%8TcF;7ErBfN8+7J1l>99qxxafRGlpo^ZlFPW=(b!+^Wv2@l5y+@FqkIvrLv2LaqE zvXrN6oVHvpsPeiWksH)ZCdxSvJ=G|metIoE%ra--t{?Cb7h4J=j#je7E7JGfvb(6a zM-FJ6nmk2#b@raE%jx5lf|PJi4;W~`jc)(}-OypWj<|mJ0oT9ze;4AS5|%Tc>e{{k z=4(8?dBn$$pAB)zHUNGJ(EkPCL%QWbO@aqHeGe+_PYIEX78&yK#G}&+k+{v05EtUqF(~(=nL3R?sz)k+duwxS>KZ9?Mrt^)PcGl^Yx1JKmD_L zp<;>x0C;nHz|SAQl028R7M_aabFrFpjL~JC7ukh zjaNv^C8b#ad}aDfm%)zqJ(wa97@ky#JK+7p1KvM80Q5)TF0mzuD1~vJ};yZgd0TzUf{?lJRI+FJPerTNC8SR+Y%YsyU1cm>bON|T@_bnORINv2#}b2746~5fNiy}R zra4Qrs9lvQ5-s5{47kdHYijxxWIZ5e{SOh2{SgnxNA&oN^K`+XSKYQ>YZQ@$icz8k z(;`RTli%DEJ>s!{z{lxh_Najfe7WHHzy2M*y1f906L4D-ET7jr&6s$`H-GYT{Oo7% z@!h|Ck7;HQDZ4EB{|5jMO4J^#Xx)pRwY)MqZuEVNNbSWfE%W!q5RupN(EEIA-=jQh zvm!qJPn{u%(wTgscNNuwcX{c1wRm0$x&KoMNhIIrQS~IiHZaYCTP(Ddr_ZO=Kx(4^ zA8Pv7n6(el$fKrP#T`cjfd5FKP6n(5U`o4D-aOvp{Wo7><{9&}EV?BH3Ul9s=Lxs( z{}tDN{tf7051pIl34KR+b9}_x&dAOIPHSTB7$H0;tf;h;H0ROw#7=_X|9sXJ8Qk` zQx^vQXXQlEvbZb`)@kxJl{(T1IW>|zYnT4d?J*0{?vYfNLSRhVls@a6^y+}V??98C z4vJ3S)z9a&E9v3>h{tyaoPW5ec-EPrU*!<3T`3E#i=M$aVI`cwm@s0%uuR)c>D@#i z(4hm5GtU3;9maq8NA&;hzX!%ENY=e&o^Po)b%g876>r`=;oF~ojsJQ&;nVXA4nyx% z`j0f<{``OWU;np%{J;Ot|Ko}^mH@W@+8WH&M)@^RuX(DY=QWIrWNzV<&nwDbf3L~h z8k9@;DS7I=YTl-n%!nKKXJL9zK(;Dr3rKys79;fqi1PG0MdV3;ZyBnlqp#o^@JE%m zRsQIH^kYD9Z;J`n8e~*wEzg<0?tb~JUk}|pz6J0fz}!I*iiu|oeTSd@>>a-T_Gh@9 zFKXRN>g47G%+Jpl|KV?O{qc)=6ZE10We&#Wa2SVTScqC=h{Q0T?xD#c^bP2A&7s&dV9N+a>gni_WH&~es)$ttZ;TUnq; z;hZ_8)<84RGhx889r%C_M;dUX0SD@FpdLr+aq14ZlRrA(4(q=Y1{|r!kkZKY0K$L{ zJrjBcI{j-&f6U@VTL)HuLO8NLQViLip6e>vTiZh0nn8wGX5SX+_Elo*I*hecBv#wn zJWrBl;NU%HTkA}u?K7k62@m%t_uR(M^7P`}pBnu1SCaWiPdLz_5Rq(X%K| zpJt0Kx4bk_{FaQ`XGH8;UKt&)mVfPsRMWFXh+1~fa58nLfvNu!X8wg4z5_OWPfb?k6^7b$$vvO2v{dC%suj zDPmZId{ut284IZ;Lvr)f9u;~cZKvo|3?R6gch;mbl=FyEeda~nwr-80NOh|Sr<5ua zWl=2%!McvJ9woK8jyjwUNA#V3LFrnKpXS*NJK|`OcYKFKa@3cdOoZvn8Rx(I+hv+K zcP~;Gs^RG$CjrzE-hcfb@87>gPqe(_iA>w*K=eNV-CNW>DE@n^ACHJeYe4LACdyOp z)%t&(#^0|EWFz@e-cebiGS-M(ZJ_Jpwe+rGnwDSl0(lIIWUdHK%cGz(XtE!bY2<0~ zvTNicdgeVgk)ACthS#N5`4Rc4kvgwWE!6DUV&t`F+P+c4jMCSBfYEn}-vQkNi2i2~ z-2rL+260}*c|0ER{@oi4hXM1vUhUX*9jGHrU!HOKm+zOg819U92IKy4!sF=<+zH6q zQ&6<$A`_ULz61erR-Lv!2SkWfId=sa@Qkd?3Y2%n5vj6OddZhEuq!8y7M1=lWXT?U zSIW8QradyO(vyH|dLU)X<5D-kCLK2cs+322DLjEP9**?6*j@-EWt(J(W<}a$x<<(| z#E_P0C2b^a3lGGKGL<|9&`sUA(~S!cP7W-Y`q2jwqO^&$t0@Df%G2!bQpCixAHCB^ zd3=iBX89bbGY9$Qe1djrrjwFg?+z#29S@l1$r428$@oJD5jkVVk&ZZaN9Z%178}pF z{OvzrK7UEDQfkyJNYAP!q7KH>`!{&|?g>NRnR2Q2@D~8yLez*q0oyl51IH~7irkC( z#|VI11IE|%(UB9Nmac{utpPAxycR*xGPW?Ig~=kf=9$?dPc^*l0L)uVPgl(B{%Ty+?U0e8Ee@9mKk}g z>@;9VJeg*x&h-b=2u2nXA%O;ecEyx6Ae08?dB~lfu7M+h5`AwC*p^O6UQ3Y@(2^!Z zNs3x9NomorKA0{)%jHe$XA}Xmq|51PzHs&o-$-N_0oOT$QOAaRP`%y$(ukOR$u^b8c?&wJ!QVWZ&TJgKK9co8`gjc*Nb^U{0Bp z{5NKuwh7Ia04&61pdNSK2|e}2o?Qnzba?r1|BC6i-+{YMtp!v0Iu|B^F^&`N9`5n( z-CG}tuzCG$+TLaxaalOnM35)vt zny17&2ckS{_qyQE$MZO=b*R~+McT5iTf`;Gq{X7Pybuy60{>Q?K3|pi)i?~ zw;Hx*s?l@Fdn>M%x23}#y?leMvFKX9%YEh}5&b&>Po^@O9l8!rZyxdV)w|+S&x<^k z_;WvCI$v=6?mOIm_y{`mrbC{2#({dgJw4&^@KC@=_roXvp~jsGjI=i(Jymj81CUx^ zsE_^!tSm!z@+X^HI;ABZrJJ>03oafKxt9S#rU44!Sjz2pxyabv0wM$1dm-Rm7VYxN zOJ#$Mc9Dt9%G02uqWtCCq>tU_)pH}jTrohFoI>l7iDIckR&nH0*R2tw^2)YTQ;D8* zkW0PTH7rO@o%0B$cx-exJqe)i%0hMHWpQjyNTsjQ$+JFJ>B! zPEyPJ?8BBPLgM&7R1ea9|LJA>f$?kl?X5EG!3lqV%OkQSr-nt5Bcm1%u(pA^C!aN} zhKrxeQ>(}t)2daPp4xj9W+qN^hO~pE{234$ zu`W@OX}va*F}qyie6*J;YEK|_48KdG>${K}n~QE&zI~c_rYxzBvtwrQxadW<#= zpQubkI2{j*jypUgyTWV4qyist#DD>LN-MF}@y8dO|K`7>t@>_yR;4fZ7}Gdn=zF|< z`v#9sk9rIQAlvR+Ci=zP9Uf5kI7Gq6ZIPE~VC)C15wY2WA+4~7MAYK%&1a9TTEXYD zXK?L_Tr18N(Oc!|E4Bs9HNmZlYZT1bu<-OMf)M~(yXTo3C($(^R4S|#3D=V@~ zi$HCW$)K^&0Pr^e|3v|sB~0^-)8T-x-@n7-(*thji$Qxr0pI!4M~vTnhxsz4mj)I& zGtYQDp78em4#&PLxd$U)S?(A(JPN>&_snFdD!QrlAa>n~@)(enQM?hw+o8|ag##5W zi@7klr6VrK*OyffWnzK>thQuZP4ei|jP{lHMiV5?Hn7{&iyoYJTa_GCTIHom30KdA z6lw5RPn0}gUSwNjI-tEn?CAtKdCUKccSeoMb=x4DvaCn)ahz9*N*gI8g`s1v|1Ww& z*;G^KO#b%3M}~g?@Bv3U<`-=)j|ua2!tML-!PB(% z;OHMKAftl(`2O)8Z{I#)=(=)7j6^031pFzM7rsjHBtn1cI0)kD5cTz2eP|R~-iCbBLuj^i0)zlNb zZKP|1w!JeQ zubDNd)xmDZKvcmkFHEf=M26hUGW}dwO}>8?$@bG9t6bv9|FtWO3 zZ-D}9(MRW-Wv&1y!@coItOs4yEW)mgGs%(?+qTi`R4LJ9j@$ zL)9Fn<3XFwQ_agiyNN>i*X7!7H3DhNXj4fY z=v`x4R=y^&uPvST$Ygn{OxDw;6vnzu0Md3SPfO{tXBjhapnkn2I$~7;XCNXBeUCS9 zPpRlBQf;@?)`Htt1WRy$BMvygPFc~R!}#%x%isPj=JUB&x43sg+4DG|?+3mv0rM1F` zAWekh(ft|$+2R`BrpDv4MGm}yYs|0~$1CnD*()2R@y}`v%!7W*CDkHjURFeKJQ;`@ zbo9fB8ig;DzaQ!4qzOr`}H_LEObXrt=xM zA3tJxzJLxkn~50@{T-f8k2nqo<3aGF>;fhzBhnOC#=Wi4^cr01(@q*ZNyRUjI|884 z%z}4Ki$zNTM-Q&V#p_UFC*q^M3TArFo{n3(dcBl*T~1wkJ1wL~;VRbRE-?#8DW}$X zucukO=SM({6=AhRjf;Ju>s+>Q2X;_XGr5eeU0G|a>q#G^rgbNm(i1V=_N1(NS}H$h z6So7Qqt5Isk`l^dZAq|tc_S}pDV*M?|4TZ1&)sP8Z=(RF;Tf)#TP>MfhAJIW@f^0_5XGx*N=^jo5VpUl^}o zD~&g-Z$!RO5jg8Y`0JJ-qBzkrk?F}wEkw_vhT;i_*JqF35do4=`@z;4X{{b|90ndh z_!FcrAb=Q)EBAQ7n>UX*o{kuAV+LW3-~__-=@Z5uK489%Am`Se=NWg0Bi`JdaP0d+ z2pIX0H3Q&zZ3XA+B`*zmB^b~$i)S@#6;Fx>R&r@GjFF9p3^K6OOThx;oF{VuCcmb| zd4Y@$q}Emtj1Cgdu9~4mUal59DleqTg0#e8ollaz#Ig1-Q+nzCdRq*T35IGTq->Y< z5=Nwtc!TwhF*`zF$yk<^JVeI>{oYEc=39FdYXqaBxqCuE()EV4xne>%y+zeUJHi0e2nb6#zMX zW}wBcGtcNc!o&R?o*o~{;#{36;cEcjPTff#{SU-|7XkFvU^q}x5fQCp6k0Zu&nQpx?3cg#^+3$;iRn*dURky}PVt~{U%>6LAqu+*FxvH#8C@MJ@6~fO36dR zR3SYX_jB$r>qaQW3%whL3sSl7ZKFrdsjdoXAXE07mbAZN`S4zgrEHp3+K@|~*8#E1 zOa5Q(`(y7FEmGxBo+h<32I5s>z^vwVJ{P@kSn9@FO1D$lGMosTKSerNOXAm=_&A5* zfI~NIu0z=~RTM=jGPU7w001BWNkl*968 z&}*KOE$>FH9JR{dB3)aIF{|g@Vme1c7NG1?z>fzMPrlXwQVnuc&SPG-|4b^gD61 zm%`==1s8?TB>AaKdb_jsD2Nw_m7Z&_f%l?txh^>5(xwxB-5MWTfFjGS=2>}!*p$JM zLuE;;3*~o3W&SMoP~^3o$AX-jW`4eGx$eovUY&39ionbm`U4Kb0J~5*j=Lc(Tpknd zQd03|%*%S4^iod!tUC?3{q{#p-+vFjjbQ3crCMrVN-#5{JN9^Z^N8b+PUY2I%VN0q z0KJ9E4lx);m=ytUsH9$AobGSa z`j!HtOYTONdd8{K%3C9qFGFy(z=v@kEbNhM1Zn95b`CNvdT+9 zG54`3d6XCCImqW_>|PEn(_SKZzmU9}hm1!+uM#0Os+Y1XK+GzxysxK_FTHMPWq-~z zzH3{NiBJMStzqvA}LA55$l;e{;&M zlvBj1b|&$%zd(C%v`&fD>UKsm&_z>&C~ck!tu!P;*0>CPkJDXmr<@EqDD7*VhyLBI zCyQ!cn$@Hd13d;D=%B|ZpsvICa>Mn*2k`Zh_0E|a4U2J^8N=a#$2X5S488hIB;vTV z<*xyJ9V)nlXyB$p)W6n7{yx+&p$7g@sCiQSvpqznMmTEu_z>AD!oF6yYkAbtwBpt3 zDwNT3VflDbCQ;!$DT&BWi;ZUq{pomE02%L1i;M^1JdkoFYVa%azh!z4+c zZI%g3(KQnq;gg9O*xFRr+M|?lRoezxw`^Bc-fRs=KJBT)unH((kMWpRb(u?-*=-@; zC0-#dIZGmE=c0#cBQY;X(n|Z1{Gw^3q3?0JAC}$5LCC+CpwRhumv7iORWFT?2gZN_ zN1Tw!r~C%S3FE*1E9U2C^BZAx>R~2nL;w?JX7qiJho=V|hJIO~OX>G7Q*Pk5%>0D* z;8H>jh@-)C3kO>RMvq644$%O;hLFZiUjr6OfZ^_beJelyad^z?KjFv6-5FUTur&GG} z6A}JMCye0BPZ*8|c>wRWM?YY^oH2d;1RlrLR%ieix&f!*fF501J|f62S!l$Y_NNXodYydUyBW0fAMYmW!==vzj; zX1?DMA3dUH-Pw!R1ZBLekB}G7K>jZIilU^+pBnKxn+cH+)wB+rp2>Rmte<)>oC8{=LcW_9>n0W`Ys7S&GO!Tg z&J=7(mPw)_x|#&JxXg^>VSsFDUxf@;5?!vHXk%k&6be~rQ z{9Apz#=wXe`7~N)4cq;*8d>rB`!dw@&~hT3eE!jM3_)bi4!z+c5&^_%T1xwhYLOXl zfGrZWrB97LdpS|1?8*Bz&sw_G;%*Vbs8P1a)r@8C_*-&AW_c6s!`nyPJ>HiGx?_`0 z_T>wvA3tHb-hkeAd=t-je|&?lAKu_J9GvID5(EXE8KBD-PgshtB&(InP|^_;wyI}x zne$a%72|D5>9d|n57C#DKABh$mc@mspEf&yBr6tqB}d2AicPY5l3P4_ma-J;rlXND zk=|7USd!!6OWH@?sx2-EVF+5bE`yqS$;hw1x@vT`S5t7=J0FS6@t>e;CNd(VmcLo^d=3IP?Q<)3}a9C7lk&o1(mEx~xr| zvLJwo(NTwEf52fr;CX&Q-<842?c*oR*DKV5p`5nVb@{CUjIQf&I-PKLJeVUFN}ohW zEQ@qKnEFw=4z+%@hCeMCweMT;J&v`!7JFsZ2+>}Q@VaTQM=fqkUPR*d609xmuqu1a z{Zvyh@=*AUTONy=yjGmZpgwpxwYW7RQmag_M=P{EPFsyKiocad%O*9FS-aO^A+dM9 zXI)O~>~VKGqSNmY$w)8Y)nokpjPdg`c$z`(#pBaF2&Wcjcs4jT7c@>+3f7}2ubR-Rk;ww`U`=1*l;`g?2I zqh-7rxNhke6=siKUS>qLyu4Z?YBju?9$QSfmM*&Q?Yd=;&A`AN7!UsbJTp$m0S^!N z82SO6PSN#mts?;Z=_BSZ&%mVaCr}#aX>lc|Ez$x`th@*;f~;N(K*~s$OT1v9o=-5% z;KxE1^itq8=qF`^KAy8Y$;T6k>~PSwP%`1JGX+Z#HMwA=hofpHf3Zigqr?+XXElY9 zPZm+0mbEv)kg}Rh*pZz~-gNG2YKQH*9Zk~m8X`a4@~?@rAx`q)%gtcKwi+gc}Sci5veKT&>zqRi(Eo)i6LCu#LMKL zMY!{1(q)ex0}Z0=LO>23ZXds3{NV@8w<}mYF~+Uq^5NuhIUI2~468#fQ?e(3zoPl- zi3_l=kFGu61IDi%eERfz$W$#&D}ICldoZVlty{Wn1@HaZl384*PUfyH0Ad8stJPJj64fg z6ZeeEf?O$=Ec(=-AJP`V{;Y!nWmZ$J+qd{kcU$yC#$g5q$4jso2Drmz}m06ei9RV`<@9B_YshraK?;=*-{ECFD?T$YYXjdW#*-gh0|93L=r zy#;s~xw3$T?F2cY?6PfG=Vrv~$o5?^%AKAU6}!=Q@kf+1Tr$Wxa#A!5NRG*mjJG0# z8LM~>PXvTbmu|o-Ej|`ciw0*^ZZ_%2+9=zJ75Kn-53&s9vB@3=iMPB}QSHPDY>~?$ z@kou_m#ylO4@rAaK)+ zGMIsmaJs+4(9`mcG+xdrO2UsIdYY-f!#=OV7M9fF*GSIRpxc9Q4U_hekQOoUaihGv zj2UY^y=)yKr$#LwZ!;fir0+HOYVxZoh06DqVzuvEgr`=STlx9QtjXEqsqoMDrqOYt zvTPB;);<3$vZ?-|)qY%CjS85@BfxI~Jjp%<`I{Ly91l1hmo+Xdqr0F}pGW zj1W5_JPr@&sViVYlwbJgQk3iLD6#Y*=czvPni(qhiYG*S0K5!Z$BTlQ9`HVnq_6Q< zsYC0e1O`J(T&tCW;0&~De~<=C@mzQyUk-qE`6Rmwc37gb_6Ugg#_W1gX*JP`#?j&6 z8HF@t?}gMKip_jljtG{CqlsUD{FddITZT~Uhs<(%YrbW?DmpzCl4eM=#HHmov_!0BVONyB+W*DEAN4Xsy zjt2~Vuk4!1d zO@}Cc>)vaf7}Ypi6&1zZdtaWl8dJnXTV8^QVb;D&`W8ctblW>1@}bp`wnFPiw1?1b z{m^QRcLo5a{)lD%_zqmak9g^K55s`I?~7YJ^(cPyHD4~6Z?|fPd88AFyK>$I6dlP6 zYS(G?3+dcS6*EF7w(C(OmY$jb1OQ>sBLlGWVwjX^y+tMpCZ7@~-!bb*(s6F8?9n}&G(rrj#9$Gn=ieJ_dFvde2i?q!;OenYeb>bZ{=AM3=adSdjR7h z4=j17lNP*PV5i z7z|N`hS{@D7GQ|h(&&kxa!+Z;W&9`PPCO%`q&&@P%ajEpyS>fY89im=Y*S=XPFMbd z;j7pwS=EpTa;M*jJza%}hb3#pu6}aVwO^xF1M5&KIX5|Bj;fq%seZkSJqWNYuFW;? z%%j=?B68swO(H*BM*bvBh;2GcLrXccofylnbBjT!xhK8eC6jPozIUB8`E5#Kh_2JG zo`x(Duf*zT`P0;B9%oF?XYloEa>{W6aSQ+*;cz-&=sGh~shZ0j15XuYYFLBdTH@;5={mVAR3lFVj20&yquDI zJRHz<=}F#Al>QjNZ~$Y*e7gcOo2}4!6b8b>=?;BYmhy=gVZjyaWylAfr5-oqMDBf+ z*CTiG2)9z3cL%BIjv`6}upY6alo2I=E-O3D;!Dvg_pxePLtfgK%V|(Vtj^gc<*t2B z#0zp#8I`lM9f@~<-FlgHoxKmqwxsT5-B^(_T9Y_U^7Qe3^eX}y9zcow(i+KTeqwG6Nm#Ijvf2`$Skwk))P(|5gK6Uhn%enp4%h_)Q{j85ikK9%yn z)wNhbgT5X~Tf33LB%P;U0Gq2*+k$MF^hh~_ye#qsnd3PM@vuZzNaKhdxVvtNj8+MFp!TIN0WzHAGZ!E z+m~#7pHKAS$Gp}CitLjnkIO*j&>e8>2h1n~gRUdY6MRWCeG6L7wPM%#p>!@KYAa2ie^b@qgwsxfKQ zJrAxWu>hUjcB~U+AWt2o-ooqimBDb%hT|>5W`wTtHJ%9N!689xt&7$z*+E;POe1OU zh9xLMsFPmaoCWv-%5qO1KnL(@aj@3itiwq_p- z^XJbPFBfn>xITlGxs~nurN1F^Q`05N9WUoi)o=ppzW@Av@JYvO#fju^O)Iqq?_NJ2 zJOQco_fZ+Qh}RbB(0^OAA}#!GVOYo!JR#W%o}Jd1Z0-A&;c9tCmAd7|+cO2_)A;Ka zsq^=0`gmPxqlC!C=5^7sUNeg5+^5!SF1WGos5&B??oQ~3K0Q)HURjSY9DvIU_;Ox4 zp){=|q-9Dwk>nhgR+p`}^kzb0h=7WlM{raHvHXq2tFa!sige>O4?v1teEsr4vzkQo zNv?}Ll|yUrHRWS9Ws+pB$%l{<57rvs$vpEOhKSVU_-qeQi*(Gov3joTwbocnL1Fo` z-g;`SLb0?*r=(pYtJX#npBz)#L!J^U2Nyb^G~`DUTK#;bts-%@oNLRQ=}WT~%Rckr zFf41&JmJuCb!ZY+w~MP3w@t93mq0QY=sQf88}M>QmtIR?8#iU+PI7ds*wiYA4kty`Pb6;{&`Dw?Vj)NYdGO;72)Duvev?5EkCmT z-kF4|0{WR378NS;O895qKs6%b3s9@PT4hA#sSyG%XYaI6D{Q$g{j)t}NMG;Or`8bk zJ*BJkQnnM6(CR#w2mtYn`8EPby9#*SspYrqq5$xc@7g0lX#}sqr;q{U{(lV`wha38 zSlFaC@am$(HRZ4hlwvPk@t#5MYrwjNVJ%##5jBs|Ue69|OxR%0ScL1m6lx{u8H$RfimOHEfKVTCM^^>2jqLM`?z zd8M;FG{GRd+|eHbm+vcG&9-R;ig|5MibI@M%ZM&IZlJj*N?t#?X3}qzUV9GA;#`7> zC$*ffO`Eaxr}hAs7>P8o%2EhSA#5&BsXJLmLAp+rE{X_c!Ach`nbm#KD>_pq*M+*D zKNE2`G&t~B=mNVhtrv_Q+W6p5_Ks{j|CrsxH_%;Ht=j$&02P+xnNwm&| zD6ONy>U^8XL$QaPY@ik!zXtk|_rSB+S{mPQA|mBOi;-`oZ4rkkUF(OT^@;9l zog%N<%GLxtU^yG1xTw=ZB0@j(=+sW3WmAjpJvz+O;&I^x>5VcBpr;OpuFLOeNs^Y% zdC7QlB<)AVWs7j>)aAa3o0y6wDwH1h(RcGbJh>4_RB3hs_3&t!IP^Q-oe?BvWdfWfoH5>r~rJUuy!j z1iyC5)~VVqos7oWNVZN3;kA^HPzZ!>XWC{$TE0gZS;hF4n`uZXQh zGQAF44Q)@QM-53=(pI^m=dH5t(L>+cVwpak|G`A^Bm1rzPlCS=K<<3_G7$VRAeo$qOk2Ems#Yp z%~R6l^w}tE(%j}5lObiiN-r-a^-bSW8}+v}uSyHoT43$6z< zdHOQ7?$w+PweoxYqwn5%;Nz|^(I>1a7kOf8*DV&=A|YOW#8RW+E2*UiRJ?!_q^XEr&NHhN6aLnK9p4$2Fg=>0SZRRy*$hC zPC5s6a>b5hDndM3to1jGKP*u(JAINYR(3DDoXT1qO?o)#pg~@qdqB)HJ&GU}qF3z9 zu0Ew;LSphetdh|3qDf_~tS8w#xRiZG&eR$!pm-t5?wKUfti@8#P28lOsu!`7&Q~we zC0<^fZdxi=2uW#%ChqSY8r-L~OQ^(&<@M6dNE=A!%kcFI9&f9>jb|_kCZZ)>LkHCk zYW;BwvuZf!K_7@gcng^Qvna1f&j?SVcwPsuyDwj@41SQ@vY{sxkqv#?h%B{iCZQI0 zg=rB(^MZ8H>`_0D()+mnnFra3xkU!p1MX3XJRDJj_18Lmt%7QLZ^`r5Tg0QqN^5!6 zn0QW09R7I1KmrtYu$Uy$rj!hdGA+Uyz?T@_3n7bi^T=51B601JzxlrQF-ZC{g57^hR_H92HrxLN;x3uQ95oZncfiXJqHH-a*_3JrKC?j5zYR9)hw}TojF%+UnXHd#xiVi7BC=E!t?SSyW1vHa zBc05>9Dlw6(^Yw?N}QsDwrVY`JVp^h1Fd!@- zC*?KYb06)u2PeY8HvjBlppq`<3GY$R;HP&hY27_1O^aHo*j9j=eLG++EydLyi>zD8 zMaYGp6l&|H<&;QyF|V?rp2pL%CBEXhd74O1FKKS4r|edT;2Q6kt!Dth#F!?%#>H(9 z&r^|3tTu)&^TzM5MRKBNx(%0UuXZ+if=8Rh1LJPxMp@p|zuPDAwvlsUwj#BnpegiKQO+7Icql*eI-3+tf~bW{3~!V&?nLK=|&H~lDCvQ)&X(SO!AmsZJ8 z-??BKiEi5KAVc<|cu`o%&r%6SGfE2U@^DGA8Yb&qQsnHS%T~&*sG|^roHkKAA$lus zO42v4lhG29WtJoOogJN>$tk(=04VQ_*e!y@Vj8z&%*oTc(zGW>=cS1ioNaUbo^ZL2 zxJ{E?Z<5-==7L?rQkQVOjjJ6vB5O?_cRbIYJ2|5$mI35uu)d#bFi@Y67xk~p*ytOy zvWzPTXZ5r-I@k9iY>5V~ujz-k;?%q>HGQIVHF6PwdX0qCuyf0qu!XTTegJpBmVfkp z%f_=;JW5mpJ9##vZde~TN-J_}-ikf4xAJO*z4}LSyf@>u`n*QZNT03zqQ(-HV=jGy zj4sz*{o;Me5$#_kl(inf71xzqcGsCysK5N2usU^Cg5F)T+)(NXTOip^sbOkege=Fc zgE4us0&%6QAp?0p$@vCR(M^|`NfEQaHYQJ_GsU{Q_>sI-*|XTj@Ms*z3`0#aY?7i*5!AMFMIpt3^_@ z%!m|ic@p-7Em=P7EqnAV@*;VeHNsP~Yb|)$uWhh(`QC|;dYO5)>lnlxY;_7Igl_G)^aTCS)_iJ#&D(RoF(T4czB^=rK; zTe|!{UXO_MwMc`H*O~@vg+1|V1Zu-eq};e^Ky5p5^(n(*0L(M!ctC%51oZ^4RdIRm z$m|Hkl3(e=6!=v~g?gKHA_$-iRQ_E#1?bfCw3ecPvW=@@ais;-rX7@(^1{-Rmhzg5 zHC#mBJt&sE6-lGDG_|6}=$zNKtYSx@#LxP}PG#u(F=$66@Y|%<(=t|#(iZhDD4V|~ zPU=~uo-|p@bt3D999b~-GeX$4j+iG1q1A`0UB6siW=KqqN8>4p(WSL*kY^xyS78k z9!Z~X6nZQvz9Be#j_N>wjo1V zj#unUiuh)jWJPpTav^s5JVnLH75UAE$e(N4XzivwDC0aWWaB4>(tc#Hz_{J)s{{U! zA>0DKRtn-Ryz$NGSr;sys--Z>ftC!6(D5vOrD0M}V&By5{k(^^IH8NzpV% zYq};Hd`8nfK26P=@l(AVwXo%F*_+o-@eI|ltVQl>{9yHbi#W8Dk`R%A$h#8B_Ml&D zBsJoo<3){S&vZ9T+reF3jcRvTH^=o;Z;NsVQ91*!|g`77rt^mFOxR!SXEn%7& zm&+B?B<@>1GA$ii*LR@4Us9@`o_Tq3+Q<{G<8?J^h60(AukxZOg>C;?K%Ld7Tn7!b zEAKmzc3!LktHcG=tP3i8aMW&+Y(KS-GgAy`q~EB?D%+bAx#JvH2R{R9-$YTafbdqBP}YivoPg z8<68Du!o-5S?jBDbCp-1SJ{-B|y*3ecX1RUkGp z90h|MMwm&9(rw90w+l5DLlUPf`h{9YMIbP(U-2M_Y08sIK`8BQwbse)juM>+ydsDI za8>Iz_If2E0z*XTyACrmCgs`uH*&nBjICZp&2?Xq#DpR$xr=Moh6wr4@zg1@y6lShh_?bxrmO{t2!{`z0OUo-R9Y=CibTk zGc!gtRpgfW{9!`$BU(i%)|_1e>IvO(0QHNB=p4{B$uu>h!JK+C%j1>Y}wz^(P;zW?>)pf<3t>+nG%=76xpuA)emB>CstjSkOE$m@Z{<=k^YI^B=wT4)0G(KI#D0O~1P0e;&4Y#IS zB)7##Yo3}K8O-HG}f2QYuk1VKD2jAg1Qj~I0qox1pOMA!A8(-GYFA(%}(<1*?F zNsWp@1yIf0dLc)0NShh)`?!dSkjT~NvV??1cC$!)E~T_EFNt zoie3SJPn#B=ELmRz5_}IxLLo#{8nWz@hIDsLpfy1kj2V?SOCW0ihDN|Yn>GB;zG)V zL1+@?2Jj_cT}Jgxw}(s&wWrD0BCQO{w$&adb&9hJ)}}?Fn7FA`M_leR0hf6)a^!%! z^2TGIhr8w7DT&xjm~4U?i~Ol!hdjS_s{{sh-SS6uGMQqg|Cd3}<>ke$2NI9W67v~^ z4=%G7V773{4+aQYsg9foW}7WT0hOEb zSfiva3Y9V{l0+W$GXAg2WuhqpBHyDj*hI;4d7&(4Fv)~b2#;Zd0_L1;PQp;~5y449 zaC)k*BU4nhPDvNea*aY$Jkijq8UkhVFL~RRx(>QsFW$O-iCysCxE?Sk7lVn!KI z=rt#`l(my>bt3cbq>3=zbY^B;rt+(o^xdIHe>#E&b)cL#WIj@%$U0wcxZEbZxwmNu zI5XipfIpz^!Ea$o4Gg!YL~8x)*5JQJVrqSR6kc1_Js40U3qIdHcpmAphZ{uXYZo52 zTw*N-7rAh1p+*#H!IPRAVcOC)GD6Gc*3!*C({|g#wrk8j(j#&!Y8`z1nw&kO1^~cc z|J7dtM4uV>jd?(Xd1j2aF|Av%V^)RcOU9=Yy5lk21u@PO&f^uc+XfN2-DN66-_xI} zn=XLvo}2zrc>=sl;WVvaWab@2l!=$uQS!@P0d?P6kXPq=>AZ~YIYL2mUn8E(`Db2^ zKitibA!g_uW~+MQvMHMY_}yrxoI*lqO{jc*ISv!cLjp(N&eDI9hu3+Phr71-%E`%6 zgzWt>Q*SB1#F|(5Opn@6Che8l+@pV3o?^X-axn$3(r8RM#Z34zQD z+wx#C@-fsrH)S`Cd7>6PLZuThECk9gEL{q2JTh#xk^*Rb{7Vi?{AFk^o*B5OK8;3m zt6N!@6Y1?zm$(XueW*>*XfM%fOK>136GNqw*Ug^n6VypihV1oP<>+P0qSi`W@5+&{ zrJ!pag!H)uq@ zV^av?)(TR~G)lY09``ceTH01QS`2W@jTafX7BpelOE_xw+{@@|p0S8f%>YIsI?ISP zM<8Gtr)7l4G6Dn&`zS*^dh-_D(?dEv*LJF1*WuIU8DB0}j4RJWfz;gf6VeE?fHegu zqe+J4Qft7=aWnDI;I{y|$-%4_Sfsb#0F>!S23?YlT%NK|mxtZC93nw`I`SG3xu)U^ zU?;qFqO zhbp(R#rwgmiI(=Fh#Pa)$*({;D`|JAzV?O zdq_{q{;h`60ePLv64EHS?>gLWBhKdw=4s9g0j=Ymz?jiLJ)wVk0QH^e5Qzvqb@*~U zaa~d=FQSb3w|9a7jaT5S`#y9*iCsFg@re0aL%OzAn!pcR$l&* ziQ|k`LLzB-nnlPbmGV#`lr}M^E&FSFn(d_4A(51W}BCC3elP{ zre|_ zR54nZFPtYhs61~e9g&Zyq14z~ly{A^=s2E;)%0kw+^x#?akbp7cv@bhSB+3bHjDCz z8hp`-`5D0PidzBzr57aLZg~FkjBy-6t0q%M^ZnBk4)5Ne8wPONStMSKjtH0OiZ7RE z+@^66FP$9(Fr+i%ga>w%%_1*>r2%ktEx<=PcY6kmrVR%0&6JKBVJ6)?&=tO7w>WDk zvFE7>dc{*YOIl?EN7uY;ZL8ujC>2O9o_;F&=8ZjBRv~hlkO}0o+?Tqe_@{8D+4mHMCQ=nGi zo*~y7&=&h^5gP>0BHe41>RG0~r$c13h)6_4s1~oLyG~alRkg-d(@%d_I?c~u{*dLR zex>g^TyG=3JTJthOWqWBQV1|lpod2cUw?)Ebi{m3=e{Tp!^AUwJb%VD??5OZA+C4X zg_HX$<7!vLf(;%l&oWr5PBh&&Q%TyR;yfHho*EabX#wcYTSm}a;^j2iMgsRN+NciR zjf^$WtC4q3twBnWrd9vW*&-!s0#{a1IG2I*4jn2f78&BQ(1gp>5AvaO=H-~lW~|Ut z>LS;Sct+SBNR~Y?%BD-(5OUy;!D9Da!_c znHl3W=a&Rh{!g?qnwe0@fjrf1poHh^3&v?$rOkm9fmfeV*xGg-d31FAnP=Q^gIQO_ z3>pZ-`?u&G?o~?t%aZSDfI)7hG>+@lqwbr}p&$fb1yR0_UtE;y$|;B6&4D z0c>CDzejz03j?A-e1sFV^42gi%C9xJjbwQ_-XY*+`FvXSR2zub^y@rGM+&zXQ{>+9 z1Rw(P8j!XsFewq!+eG||`-Y7EuKi9%$5{oSYc^^)`I$IoYA{sF*e z4TN1sxL!w`UzYb3b)-(S(0%3gg6?oa_wF5Vcgl-%7ffJuw5as`%MW-S&&8>c-THPc zCZLkZfS|1CmhYFPon^G_fR$uzfha4UkCLYb1~VF0UY`ZSN=Ki&V1hmEmNh)3H4QA+ zDz8k4ifrwb(B#Z`2>{5VUe1Zv?{+EgEwXDhIC(jW2Z*pDI@#RC=6dZ+IiXigZE*d76Q~ z!|?tc`iF-c6T0=M3eBeJ2-9uE^T*E^#|d4hUIkK!*hdCFBE}ex86LoEm<6o+bKf6F z{i*KfJ#N*=OO43XJTCs(7D3bLYUT7g>aaD4jxaIOtL98-k&-P8Gd8X<$1S%G+%wPA zB9^rU_O;IzYlMr}Vv#lCQ7dPpOVrps(TKkL#^~eJ7^?pCvLYQLd0wyBw%u_A=p&dv zXm3N`br|OfFV8QyU9Lr%MhW$%*TcKFIJ|v>C`|K=^X-Ch9M!Ch01ylS0h*N9X^(Pk zN3WSsk?JD#s9&ez^@$dFfQ_Py@@Si>3{7?zFz><9M5%Z-vY)}h2b;Xjw&Gj}Yllpm z1hk2=-4+>?4Z7rC2#eS}=gryh4w{Rx4TWGu>;n6jX%N*s*xC!~x{y-6g}g+PdeEc! z$YaKt*rij5$!aLXN9$$i8Y%nA^cxi1W+GC`qMQOtm>IXRcw3^N>poAttoTG(OX9ww^lhG~@ho&O5O( zK`eUwhM0fIS+D!D2&56*kDmK}TJE<7vtCvW>uT8J<3_}1Z>SNqEnKVVQY&*y#+Jt? z3N8Gt%Boegd~X4=R|nTyY}5Th??F}!->*HqW~Xj zj5=hpfBjc~c?NYq0QgQGNVho8jF->PxSg*HK+aKTyM+GD)8ZoT2|Uim72S6oKAvCj zo6leHe7lvtOl8LAo?nc+8fU6F>(O>55(&Wzxq)&;Yn&uAsxPP38nHQr8z<*D1y&P@ z60m2OEudaEe-du7i&{&fa}4T$vZ?HWagZ{bvMlyf@!0v^Y&IoDr54Vtq4k* z0@TO-lbUYS%aBc;wAQP5ZEQZq<3LjWQYZDGJvGuGG`&H&$7S7=jSrv$p640oajd`D zSd(?{9TT#v?(6UJa>a2RaXqIl!4Yz^+o$#ewW_G{TK)2OM)kD>GiF@*hU=_O!zKdX zW(*HU9N)i1e>$St-DL*3*mSy%`1I)+m)nS5t)(lTL;A>skBIxQmY2KM_iMtjMJiB< zqo2J7%cAF6FMY2SS_ASudHOgt61Nx6J&9})nO2=e@$Z;?-(l9EK?C$2R(g);-P?&=S$20m@TP_JUNnH z+pJ7OAeXgxQJl9#Nnz;qM}kWaH0u=VGRdZp}Pd66DoMvKfu`R#eW zrBB4Pw_Kc29yPLu;Jy!M0N-WwPaho-Zr3Z$=QAcwTcTx{oue`^O&H$3!`+|!0>?KG z;EP>ANFYo+q&zY8V;`Jc&RDyn({2+R< zp`%JGPYbR4b|&#il(RehAUvCoEhyVJB-?V4{?twe#Ut|~R=|wP)5#&up%CwFVFfIC zR}~`@NpA!3zR=3bg&+}^4ZO{xZ;Y5=hEH)@Hpf6 z)qC`B-Yoa0F_YHP=!+%0zQ;I@`1JWRUM?3L`o3h6tCGJ1@Eu`}PR*?WZPYh<(xN@s zzb^@?_1i5kgpc=!9++?C7scC)Wt2Y$4gdfk07*naRD1H=gYD7%ruWMWZz-%@YkPuj zNHwtCs?11-NRF4cS8nv&r;R}0dt`jth-B?;V0*k#-nP0NdmDZf?-`8ma;J~wswcwp z%LN}ke8lzTjD8qO$CEo;0!=s2@eaec-(vXsJ?7h_KzsS?i16{{3%*>I{%3tuyxR7P z0^HU`UxMRU(31mZSmx*r$nzRE_yZc8kcx zo(9rlsv<+{9@%I0<6`D#5dJ?9&G{q@UOJY`^@@)lKjU(_Vi@|8N-a8No&oAGeDxKM z-+qI<)l_w$9d&pf&-m@GcH)vG9Hgy@My2B3mX)Qoss{B`y(F zcOC=tnJ8G+y+ou^r=y$(nK*hvxa96i!TG=PvPvk@rGQ<3W`fA6ZBi+kj_EC$wNjp? z=zUTme4Hn|+^(w^DO$1=oPlEG326a*dt)Il%sAgJcsbwl4n1AoQ0~7mxfwCy2K#bF zo@UUY!{KLNp*x*yKD2nx zCz9Km?x+n6BT}+OMryKJxb@oWn%o*G(bwL#HCzGe_*{!0#f$PcpHYEoEH+Z!3ynZN zlBK`vPY=BMd#z%vwR}7Y(4;16)Ddy0HJ%pR_xAB5Fe-cWW37=R^GVBD zF8_$MC0c;1Bf{-A;p3;zczJ$7*LP~%yabs9U@-c3Z*lz7KSp;yfX8Ve52@4cyAGG> zir+r}h>zzl=E(I$P6-->!uRheP$j5!0a?JJzXnf%CJq+oE`x4+`mKdh5nEuAVXhR! zqC6Q^VHAZ>X`8cssP0qx{V^EN=NDXWH}qZSm!-TuXfIGLiXqh6YuaI+XI$nhZd`~I z(Xt?axIg0X^Ka1IopRaM{?euPcut2?emUdQhmRQNDV@$O3)ba7{1Yu_xJZcluq{tZ zL?~*Q;0K^SZY#ft@YG0DZ9pESZ+S$bv^65IXAm6`4juO3Zj1ayI(bZv^6vn<9oj2U zV_{JR)R>f4Fk-4(47tUOBe|hB!Ra3vs1~oqG`+6=-WDVGd9=!hAg z$CuB=Yr<@RL_TZYhMXM~ko)NdHQi%r79b~g*s)*iy;*ri)Xt5J{Z+3+NuzyA@|OXY zWznhyWGjgZG0?#694tc4GTaMCD@c$%37j=@_V#7ZYcagnq7bBVw0+PzGBHVOKQ!