Releases: vanjs-org/van
1.5.2: Further size optimization
Gzipped bundle decreases to 1048 bytes
(1.0kB) from 1050 bytes
(1.0kB) (2 bytes
decrease), while minified bundle decreases to 2022 bytes
(2.0kB) from 2028 bytes
(2.0kB) (6 bytes
decrease). There is no behavior change in this release.
See the release announcement: #290 (comment)
1.5.1: Further size optimization
Gzipped bundle decreases to 1050 bytes
(1.0kB) from 1055 bytes
(1.0kB) (5 bytes
decrease), while minified bundle decreases to 2028 bytes
(2.0kB) from 2035 bytes
(2.0kB) (7 bytes
decrease). There is no behavior change in this release.
See the release announcement: #290 (comment)
1.5.0: Optimization on state derivations and side effects
1. Optimization on state derivations
Major optimization on how state derivations are being executed. For instance, with the code:
const a = van.state(3), b = van.state(5)
const s = van.derive(() => a.val + b.val)
If we have:
++a.val
++b.val
s
will be derived only once.
And if we have:
++a.val
--a.val
The derivation of s
will be skipped since a
remains unchanged after ++a.val
and --a.val
.
2. rawVal
property for State
objects
rawVal
property for State
objects for getting the current value of the State
object (peeking) without registering the state as a dependency of the binding function. For instance, the derived state: van.derive(() => a.rawVal + b.val)
will be updated when b
changes, but won't be updated when a
changes.
See the release announcement: #290
1.4.1: Fix the minor type issue of van.state in van.d.ts
See the release announcement: #280 (comment)
1.4.0: API simplification (less is more)
Simplify VanJS API by deprecating 4 rarely used functions:
van.tagsNS
is merged intovan.tags
van._
can be replaced byvan.derive
van.val
andvan.oldVal
are deprecated and can be replaced by client-side solution like: https://vanjs.org/tutorial#polymorphic-binding- Support
van.state()
in TypeScript to create dummy or uninitializedState
objects
See the release announcement: #280
1.3.0: More robust dependency detection in binding functions
Improve the dependency detection in binding functions to avoid self-referencing side effect triggering infinite loop.
With this release, the following code will work perfectly:
van.derive(() => {
if (checked.val) ++numChecked.val
})
See the release announcement: #275
1.2.8: Add support for custom event handlers.
In this release, we changed the implementation of event handlers in VanJS. Instead of registering event handlers via on...
property, we changed to use addEventListener
and removeEventListener
to register and unregister event handlers.
As a result of the change, you can set custom event handlers via tag functions:
const {button, div, p} = van.tags
const dom = div(button({oncustom: () => van.add(dom, p("Event triggered!"))}, "Button"))
van.add(document.body, dom)
dom.querySelector("button").dispatchEvent(new Event("custom"))
See the release announcement: #246
1.2.7: Export 2 more types in `van.d.ts`.
In this release, we export 2 more types: Val
and PropsWithKnownKeys
in van.d.ts
. Thanks @DanielMazurkiewicz for the contribution!
See the release announcement: #114 (comment)
1.2.6: Fix the type error message for `Props` in `van.d.ts`
See the release announcement: #114 (comment)
1.2.5: Enable auto-completion for the `props` parameter of tag functions
Improved the type definition in van.d.ts
to enable auto-completion for the props
parameter of tag functions.
See the release announcement: #114 (comment)