Releases: NuiCpp/Nui
v0.18.3 Update Dependencies
v0.18.2 Made some tidy improvements and fixed / improved ScopeExit utility class
v0.18.1 Fixed CMake Build Order Dependencies
Merge pull request #126 from NuiCpp/fix/better-parcel-target Changed parcel target to custom command.
v0.18.0 Rendering Optimization Rework
This is a big one!
Observed vectors and deques rendering is now optimized as originally intended.
- Modifications only ever cause render changes to affected elements.
- Erasures only erase affected elements and dont cause rerenders of existing elements.
- Inserts only insert at given positions and dont cause other elements to be rerendered.
Also added a feature where elements can be created into an element, that is not somewhere in the Nui DOM.
This allows the user to create Elements from C++ and hand them to javascript libraries.
Beware now that indices in the range render function can make the view go out of sync, because indices are not updating due to this important optimization. If you render indices you need to bypass the optimization by calling observed.modify(); // or observed.modifyNow()
v0.17.1 Fixed bug with Custom Event Context
The Observed(EventContext* ctx) constructor could be selected too easily by accident.
This now requires passing an extra parameter.
Added deferred tags
It is sometimes necessary to do things on the element AFTER it was inserted into the dom.
This is now possible with deferred attributes/properties.
Syntax still needs some improvement.
div {
reference.onMaterialize(/*...*/).defer(true)
// or !(class_ = "asdf")
}()
This will become this in an upcoming PR:
div {
!class_ = "asdf"
}()
v0.16.0 listen function added
You can now also listen to events on Observed<>
#include <nui/event_system/listen.hpp>
Observed<int> obs;
listen(obs, [](int const& i) {
// ...
});
obs = 7;
Nui::globalEventContext.executeActiveEventsImmediately();
Also observed now accept other (user) event contexts.
Which is useful to decouple app events von UI events.
#include <nui/event_system/listen.hpp>
Nui::EventContext userContext;
Observed<int> obs{userContext};
listen(userContext, obs, [](int const& i) {
// ...
});
obs = 7;
userContext.executeActiveEventsImmediately();
v0.15.4 Inline Injector Takes a Hint
Inline injections can now be moved anywhere in the head.
injection scripts can also (all or none) get the defer tag conditionally set by CMake option.
v0.15.3 More CMake Improvements
CMake Improvements and Dependency Updates
- Updated nlohmann_json to newer revision.
- Some small CMake improvements.