jCanvas v23 is a major new release with full TypeScript support, more features for ellipses, and overall modernization of the codebase. As such, jCanvas v23 requires ES2020-compatible browsers.
Minimum Version Requirement Updates
jCanvas now requires jQuery 1.9 or newer. It also supports the following minimum browser versions:
- Chrome 80+
- Edge 80+
- Firefox 74+
- Safari 13.4+
The minimum required version of jQuery has also been increased from v1.4 to v1.9.
TypeScript
The entire library (as well as all included plugins) have been rewritten in TypeScript! This means that you no longer need to use packages like @types/jcanvas. However, the @types/jquery package is still required to enable type checking for jCanvas properties and methods.
New Website!
Coinciding with the release of jCanvas v23 is the release of a brand new jCanvas website! The entire website has been rewritten in Astro, and the documentation site has been completely rebuilt using Starlight for a much better experience. The sandbox has also received some major upgrades, including multiple cursors, code folding, basic autocomplete, and various bug fixes.
For more details, see the companion jcanvas-website release.
Partial Ellipses... With Arrows!
Just like the drawArc()
method, the drawEllipse()
method now supports the start
and end
properties to create elliptical arcs. Arrow support has also been added; please see the Arrows section of the jCanvas documentation
Removed Deprecated $.support.canvas
The $.support
object was already deprecated as of jQuery 1.9. Therefore, in the interest of moving away from use of deprecated APIs, jCanvas has removed the $.support.canvas
declaration.
Other Improvements
- The codebase has been substantially modernized to take advantage of the latest web capabilities introduced within the past 10 years. These include:
- Use of
let
/const
instead ofvar
- Use of optional chaining for common checks
- Use of
- Improved support for Pointer Events (
pointerdown
,pointermove
,pointerup
)
Bug Fixes
- Fixed an error thrown when trying to add or remove a nonexistent layer from a group (using
addLayerToGroup
orremoveLayerFromGroup
)