Releases: Nefsen402/destam-dom
v0.6.1
This release is a minor feature release.
Features:
- Custom element mount/cleanup functions now can take multiple arguments to register multiple callbacks at the same time.
Bug fixes:
- Fix a bug where trying to share dom objects that destam-dom generated could cause unexpected results.
- Fixed many transform bugs with
transform/staticMount
Improvements:
- More robust unit tests
- Implemented unit testing for jsx and staticMount transforms.
v0.6.0
This release brings improvements to unit testing and code static analysis.
Breaking changes:
mount()
no longer interprets functions as custom components. This is to allow lower level components to be defined through static analysis tools.- Whitespace parsing adjusted for JSX
- OArray export no longer is the destam OArray but a stripped down version specifically for use with destam-dom for lower overhead.
Fixes:
- Fixed an issue where an assertion would happen for nested observers even when using the API correctly.
- Many fixes to
transform/staticMount
Improvements:
transform/staticMount
has been improved to start generating low level custom components. This reduces runtime and memory usage.transform/staticMount
can now unroll some cases of .map() called on observers.- Tests have been improved to now test jsx parsing and static analysis.
v0.5.2
This release is the first to offer unit tests and this release is meant to address some defects found with the unit tests.
Fixes:
- Array reconciliation is fixed
- When reordering array elements, sometimes the dom nodes would be placed in reverse order
- htm parser has more predictable whitespace semantics.
v0.5.1
v0.5.0
This release has a focus on performance and adds a few new features.
Breaking changes:
- the tagged template literal no longer supports observers in string literals
Features:
- Improved
transform/staticMount
to also support extract basic observers. - Improved
transform/htmlLiteral
to support jsx namespaces and improved the tagged template literals to also support custom hyperscript.
v0.4.0
This release was focused on performance and in some workloads performance can be increased 150-200%!
The major performance improvement comes from handling non reactive state separately from reactive state. We don't need to follow all the reactive code paths with high overhead for some static content. Unfortunately, the bundle size is higher, but well worth it.
Breaking changes:
- the
children
prop is required to be a fixed javascript array. It can no longer be a generic mountable object. This is to allow the newly introduced performance optimizations to walk the tree statically.
Features:
- Introduced new
staticMount
babel transpiler pass that will examine the dom for any static values and will pull those out as vanilla js to reduce overhead introduced by destam-dom. - dom.js has everything it needs for hydration/ssr to be implemented.
v0.3.1
v0.3.0
Breaking changes:
- simplified lifetime hooks. Lifetime hooks no longer exist for native elements, but instead only available for custom elements
Added features:
- Added a lifetime hook for finished mount for custom components
- Added documentation about lifetime hooks
v0.2.0
This release includes many improvements.
Breaking changes:
- Element properties can no longer be duplicated
- Special casing for event listeners has been removed.
click=
now must be$onclick=
to utilize the native browser's handling. The old version supports the new style so a transition can be more gradual. - Styles with a object topology must now use the
$style
property.
Improvements:
- Performance improvements (mostly in the memory/garbage collection area)
- All array mounts are now reconciliated as they are all managed through the same code.
- Replacing a html node will now directly use
replaceChild
v0.1.0
Changes:
- Improved performance
- Size reduction
Breaking changes:
- Return value of
mount()
no longer returns an object with aremove()
method. The pure destroy function reference with be passed. - Props can no longer dynamically change type (a property cannot be passed a function to act as a listener, and then morph into a attribute by setting another value)