v53.4.0
- #5193 by @vincent69001 –
- Add
pageNumbertoexportToDocx,exportEditorToDocx,editor.api.docxExport.exportToBlobandeditor.tf.docxExport.exportAndDownloadto number the pages in a footer.
- Add
Thanks to everyone who contributed to this release:
@vincent69001
Full changelog: v53.3.18...v53.4.0
v8.5.0
See the changelog for release notes: https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v850
v0.13.0
- Add a
forceparameter toView#update(), to redraw the view even when nothing changed, e.g. after a web font has loaded (#1913). - Add
View#fitBounds(rectangle[, fit]), to fit a rectangle into the view.fittakes the values of CSS'sobject-fit:'contain'and'cover'(#1688). - Add the
reuseImagesoption to#exportSVG(), to export images shown by several rasters only once, and place them with<use>elements (#1993). - Add
trackingto the text styles: the space added after each character, in thousandths of an em, as in Adobe Illustrator and InDesign.#exportSVG()and#importSVG()write and read it asletter-spacing(#2066). - Add
easeInSine,easeOutSine,easeInOutSine,easeInExpo,easeOutExpo,easeInOutExpo,easeInCirc,easeOutCircandeaseInOutCirctoTween(#1855). - Add the
idPrefixoption to#exportSVG(), prepended to the generated ids of definitions, so that separately exported SVGs can be placed in one document (#1709). - Add the
crossOriginoption to#importSVG(), passed on to the rasters of<image>elements, so that canvases drawing them aren't tainted (#1094). - Add
View#project(#1634). - Add
Point#clamp(min, max), e.g. to keep a point inside a rectangle withpoint.clamp(rect.topLeft, rect.bottomRight). - Use
OffscreenCanvasin web-workers, soItem#rasterize(),new Raster(size), items with opacity or blend modes, and CSS color names, which resolved to black, work there.Raster#toDataURL()remains unsupported in web-workers (#1643).
- Time double-clicks from mousedown to mousedown and only within 3 pixels, as native
dblclickevents do, and don't take a third click for another double-click (#1451). - Make
Rectangle#left,#right,#topand#bottommove only their own side, as documented, and the corner points only their two sides, keeping the opposite ones where they are. They used to move the whole rectangle, unless another side was set before. This also applies toItem#bounds: setting a side or corner of an item's bounds now stretches the item. To move items, setbounds.point,bounds.center,bounds.xorbounds.y(#2024, #1147). - Hit-test groups wherever one of their children is hit, as in Illustrator, so
hitTestAll()always returns the groups above the hit items, andhitTest(point, { class: Group })finds the group under a point. Groups were only hit when all their children shared a fill (#2069). - Let inline
styledeclarations override presentation attributes in#importSVG(), as in CSS and browsers:<rect fill="blue" style="fill: red">now imports red (#1962). - Keep the pixels of images in
#importSVG()and scale them to their size in the SVG, instead of resampling them to that size, which made them blurry.Raster#sizeis now the image's own size, and images without a size are shown at it, as in browsers (#1963). - Let
Item#clone(), the boolean operations,Item#rasterize(),Path#toShape()andShape#toPath()followsettings.insertItemswhen noinsertoption is passed, instead of always inserting their results. An options object withoutinsertalso inserts the clone by default now, as documented, e.g.clone({ deep: false })(#1721). - Use jsdom's own
XMLSerializerfor#exportSVG()on Node.js, instead of a shim that returned HTML, so the output is valid XML with escaped attribute values, as in browsers. Empty elements are now self-closing (#1922). Item#fitBounds(rectangle[, fit])takes the values of CSS'sobject-fitasfit:'contain','cover'and'fill', which stretches the item to the rectangle.- Scale and align images in
#importSVG()as theirpreserveAspectRatiodescribes, fitting them into their box uniformly and centered by default, as browsers do, instead of stretching them.sliceis treated asmeet(#1129). - Let
Path#removeSegments(from, to)wrap around on closed paths whenfromis larger thanto, instead of removing nothing (#1881). - Read the
hrefof<image>elements in#importSVG()always as a URL, no longer as the id of a DOM element first.
- The boolean
fillparameter ofItem#fitBounds(): use'cover'instead oftrue.
- Remove the workaround for wrong
mouseoutcoordinates in old versions of Chrome on Windows (#1811). - Remove the CLA from the contribution guidelines, as it no longer exists (#2071).
- Fix
require('paper')in the Node.js REPL (#2019, #1792). - Fix loading PaperScript in bundles that leave the top-level
thisundefined, as in ES modules (#1480). - Prevent source-map-loader from warning about the source map string in PaperScript (#1991).
- Fix replacing style colors that were set as strings, which threw in strict mode (#2049).
- Fix SVG path data with arc flags that aren't separated from the numbers after them, as SVGO writes them (#1808, #1885).
- Fix
#importSVG()of gradients, fills, clip paths and<use>elements that reference definitions appearing later in the document (#1146, #1884, #1978). - Fix
#importSVG()of elements with numeric ids (#1754). - Fix
#importSVG()of rounded rectangles with onlyrxorry(#1863). - Fix
#exportSVG()writingfill-rule="none",font-family="none"etc. on groups with differently styled children (#1732). - Fix
Curve#handleBounds, which threw, to only include the curve's own points (#1992). - Fix
Curve#getTimesWithTangent()for curves without a cubic component, such as quadratic curves (#1870). - Fix
ShapeJSON import withtypeafterradius(#1820). - Fix boolean operations with
trace: falseorstroke: trueignoringoptions.insert(#2028). - Fix gradients drawn with
strokeScaling: false(#1821, #1822). - Fix the selection of items in symbol definitions being drawn (#1577).
- Fix
View#zoomof mirrored views, which was 0 (#1411). - Fix item mouse handlers that stopped working after removing items whose parent was already removed, or after moving items to another project (#2079, #1791).
- Fix key events with Control, Alt and Meta in Firefox and other browsers that fire no
keypressfor them (#1997, #1871). - Fix the space key staying down after Option + Space on macOS.
- Fix key events not reaching a view that became visible after the focused one was hidden (#1953).
- Load in DOMs whose canvas has no 2D context, as jsdom without canvas in jest, and run there as in workers (#1805).
- Keep the original error as
causewhen jsdom or canvas fail to load on Node.js (#1759). - Fix
#getItems()and#getItem()with a match function or without options to search recursively, as documented, instead of matching only the top-level items. - Fix
#importSVG()of transforms and styles on<use>elements that reference groups (#978). - Fix the
projectandparentoptions of thePath.*constructors. Withinsert: false, they no longer insert into the parent, asnew Path()doesn't either (#2012). - Fix the bounds of transformed circle and ellipse shapes (#1826).
- Fix
PointText#strokeBoundsto include the stroke, which got cut off when drawn with opacity (#1322). - Fix the
Item#boundssetter on items with zero width or height, which made their matrix non-invertible (#1794). - Fix
#getItems()withoverlapping, which never matched shapes, rasters and texts, as their matrix was applied twice (#1300). - Fix the bounds of items whose matrix cancels out the matrix of their parent (#1457).
- Fix the source URL and source map of PaperScript loaded from script tags, which were lost (#1753).
- Fix stroke hit-tests at the ends of paths with butt caps, which missed even the end points (#1460).
- Fix
Path#splitAt()with locations that aren't on the path, which split the path at its start instead of returningnull. - Fix clipping with groups that are clipped themselves, as imported SVG with a
viewBoxis, which clipped with their own clip mask too (#1618). - Fix
Item#hitTest()and#hitTestAll()on items inside transformed groups, which took the point in their parent's coordinates instead of the documented global ones (#1803). - Ignore
View#zoomvalues that aren't positive numbers, which left the view's matrix without an inverse, so thatView#boundsthrew (#1433). - Fix the hit-test tolerance of items inside transformed groups and of symbol items, which their transformations scaled. It is now in project coordinates, as documented (#1278).
- Limit the temporary canvases of items with opacity or blend modes to the visible area, so large groups no longer disappear or make zooming slow (#1644, #1920, #1925, #2001, #2029).
- Support SVG 2's plain
hrefattribute in#importSVG(), besidesxlink:href, for<use>,<image>and gradient links. - Fix
#exportSVG()of groups used as clip masks, which were exported as groups inside<clipPath>, where only shapes are allowed, so browsers clipped everything away (#1445, #1590). - Keep the lines of multi-line text in
#exportSVG()and#importSVG(), as<tspan>elements at their own baselines (#988). - Fix shadows being cut off on items with a fill, a stroke and an opacity, which are drawn through a temporary canvas (#1628).
- Fix
#importSVG()of<use>elements that place images, which weren't positioned and sized, as their rasters were cloned before the image loaded. - Fix
Item#fitBounds()andView#fitBounds()with empty rectangles or items: empty sides no longer collapse items, produceNaNcoordinates with'cover', or make the view throw; they are left out of the scaling. - Fix
#importSVG()of lengths inin,cm,mm,ptandpc, which were read as pixels (#1919). - Fix
#importSVG()of percentages inside nested<svg>elements, which referred to the size of the root instead of the nearest<svg>(#1404). - Fix
#importSVG()on Node.js of shapes without a fill, which were imported without one instead of black, as in browsers (#1229). - Fix the quadratic time of
#exportSVG()for groups with many children (#1353). - Implement the documented
'pin-light'blend mode, which drew nothing (#1527). - Fix clip masks of items with a matrix and an opacity or blend mode, which clipped in the wrong place (#1594).
- Fix rasters and point texts used as clip masks, which clipped with the path drawn before them. They now clip with their rectangle and bounds (#1845).
- Fix the stroke bounds of sheared, mirrored and non-uniformly scaled paths with
applyMatrix: false. The miter limit is now checked in the path's own coordinates, as canvas does (#2065). - Fix symbol items overwriting the
globalMatrixof their definition's item, which affected its stroke bounds and selection (#1684). - Fix the view size of canvases with padding or border, which grew with each setup of a project for them (#1160, #2033).
- Fix setting
View#rotationon mirrored views, which rotated the other way, and on non-uniformly scaled views, which got skewed (#1893). - Fix touches outside of the view taking over its drag (#1875).
- Fix hit-tests of point texts ignoring the tolerance (#632).
- Fix removed selected items being kept by their project, which leaked memory (#1856).
- Fix the line width of selections, which used whatever line width the view's context was left with.
- Fix hit-tests of symbol items with
class,typeandmatchfilters, which were applied to the definition's items instead (#1774). - Leave
workspacesandresolutionsout of the publishedpackage.json, which made Yarn warn when installing paper (#1921). - Fix stale
Item#globalMatrixand#localToGlobal()results of items whose sibling was asked first after their parent was transformed, and of items moved to another parent or removed (#1750). - Fix the points of mouse and touch events on canvases with padding or border, with a CSS size that differs from the view size, or under CSS transforms that scale them, which were offset or scaled (#549, #1729).
- Fix the sign of
Line#getSignedDistance()for lines whose direction has two negative coordinates (#1880). - Fix outdated bounds of nested groups after changes to items two or more levels down, and of groups containing placed symbols after changes to the symbol definition (#940).
- Docs: Mark the
pathargument ofPathItem#getIntersections()as optional. - Docs: Add
View#onKeyDown,View#onKeyUp,Point#negate(),Size#negate(),PaperScope#createCanvas(),#clear()and#remove(). - Docs: Correct the defaults of the hit-test options, the results of the math operator examples,
Raster#sourceandItem#guide, and documentPath#reduce()'ssimplifyoption, nullable location getters, optional arguments,ToolEvent#tool, which items have children, how group styles,getItems()ordering,Rectangle#selectedandTool#onMouseMovework, and theresizecanvas attribute (#2078, #2092, #2030, #1928, #1947, #1907, #1900, #2115, #1645, #1697, #1747, #1507, #604, #1330, #662). - Docs: Add examples to the boolean path operations (#1007).
- Docs: Document that
new Path(pathData)holds a single sub-path (#2057). - Docs: Document that styles set on symbol items, or inherited by imported
<use>elements, don't reach the symbol definition's items (#1329). - Docs: Document using Paper.js with a bundler in the README (#1695).
- Docs: Move the documentation of
<symbol>and<use>fromProject#importJSON()toProject#importSVG().
3.51.0 - 2026.10.19
- Changes v3.50.0...v3.51.0 (62 commits)
Iteratorchunking proposal:- Built-ins:
Iterator.prototype.chunksIterator.prototype.windows
- Moved to stable ES, September 2026 TC39 meeting
- Added
es.namespace modules,/es/and/stable/namespace entries
- Built-ins:
Iteratorincludes proposal:- Built-in:
Iterator.prototype.includes
- Moved to stable ES, September 2026 TC39 meeting
- Added
es.namespace module,/es/and/stable/namespace entries
- Built-in:
Iteratorjoin proposal:- Built-in:
Iterator.prototype.join
- Moved to stable ES, September 2026 TC39 meeting
- Added
es.namespace module,/es/and/stable/namespace entries
- Built-in:
- Added detection / fix of
Math.sumPrecisenegative numbers handling WebKit bug - Added detection / fix of
Math.sumPreciseV8 bugs with modified prototypes of arrays and array iterators - Added detection / fix of
RegExp.escapecode points handling WebKit bug - Added missed detection of imprecise native
Math.asinhin V8 < 5.4 and Rhino - Added missed detection of imprecise native
Math.cbrtin FF < 48 and engines that use glibccbrt - Fixed
Promise.{ allKeyed, allSettledKeyed }algorithm for sync promises - Compat data improvements:
Iterator.{ zip, zipKeyed }marked as shipped in V8 ~ Chrome 153Iterator.prototype.includesmarked as shipped in V8 ~ Chrome 154Iterator.prototype.joinmarked as shipped in V8 ~ Chrome 153Promise.{ allKeyed, allSettledKeyed }marked as shipped in FF155Iterator.prototype.{ drop, take }marked as properly supported with tc39/ecma262/#3776 from FF158Iterator.{ zip, zipKeyed }marked as shipped in Bun 1.4.0Iterator.prototype.{ chunks, windows }marked as shipped in Bun 1.4.0Iterator.prototype.joinmarked as shipped in Bun 1.4.0- Because of a
Math.sumPrecisenegative numbers handling WebKit bug, this method is marked as not supported in Safari and Bun - Because of
Math.sumPreciseV8 bugs (see above), this method is marked as not supported in Chrome -> all other V8 engines RegExp.escapecode points handling WebKit bug:- Marked as still not fixed in stable Safari
- Marked as fixed in Bun 1.4.3
- Because of imprecision (see above),
Math.asinhis marked as supported from V8 ~ Chrome 54 and as not supported in Rhino,Math.cbrt- from FF48 - Added Node 27.0 compat data mapping
- Updated Electron 45 and added 46 compat data mapping
- Added Samsung Browser 31 compat data mapping
- Added Opera for Android 101 and 102 compat data mapping
quasar-v2.35.2
- fix(QMenu/QTooltip): anchor inside a shadow root -> a popup whose target lives inside a web component (a shadow tree) is positioned next to it again instead of landing at the end of the page. The native CSS anchor positioning cannot see across a shadow boundary, so such popups now use the JS positioning; everything else keeps the native engine (#18576)
- fix(iOS scroll lock): route change while a dialog or menu is open -> on iOS, closing a popup after navigating to another route no longer scrolls the page back to the previous route's position. Hash router mode (
#/route) used to be treated as the same route every time, and in history mode a path-shaped anchor (/a#/x->/b#/x) was compared without its pathname (#18573, #18574) - fix(date utils): extractDate() with a day-of-year token -> a mask carrying
DDD,DDDoorDDDDtogether with a year now resolves to that day, soformatDate()output round-trips (YYYY-DDDDused to give January 1st). A day of the year outside the year (000, or366in a 365-day year) is anInvalid Date; a full calendar date in the same mask still wins (#18575)
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If Quasar is useful in your workflow and you want to support ongoing maintenance, please consider the following:
create-vite@9.3.0
- create-vite: print version before scaffolding (#23806) (a3001c5)
- create-vite: use typescript v7 where possible (#23794) (9df8bbc)
- create-vite: add router only options for tanstack router/start (#23543) (f155b62)
- deps: update all non-major dependencies (#23482) (3c752c8)
- deps: update all non-major dependencies (#23537) (e8990c4)
- deps: update all non-major dependencies (#23601) (9944fa6)
- deps: update all non-major dependencies (#23648) (8a4c19c)
- deps: update all non-major dependencies (#23731) (cf80aa5)
- deps: update all non-major dependencies (#23826) (77d8373)
- deps: update rolldown-related dependencies (#23483) (9aecbbf)
- deps: update rolldown-related dependencies (#23733) (43f0d05)
v3.10.1
- Pass the server-core fileReader singleton from the runtime server into development helpers so HTML templates, static resources, compiler filesystem initialization and rebuild invalidation use the same reader even when the two packages resolve different runtime-utils copies. in https://github.com/web-infra-dev/modern.js/pull/9017
slate-dom@0.146.1
-
#6334
0f99057Thanks @dylans! -resolveDOMPointandresolveDOMRangeno longer report a miss througheditor.onDOMError. A miss is often ordinary: a layout effect that measures the selection runs before the edited text's DOM is attached, and replacingeditor.childrencan leave the selection past the end of the new text, so these were reported as broken rendering when nothing was wrong. Slate no longer callseditor.onDOMErroritself; the hook stays for apps and plugins.resolveDOMRangealso returnsnullinstead of throwing when the editor's window isn't registered yet, for example from a layout effect inside the first render, and checks the focus only when the anchor resolves. Scrolling the selection into view no longer throws when the unhung range ends in an element that doesn't render its children.
slate-react@0.146.1
-
#6334
0f99057Thanks @dylans! -resolveDOMPointandresolveDOMRangeno longer report a miss througheditor.onDOMError. A miss is often ordinary: a layout effect that measures the selection runs before the edited text's DOM is attached, and replacingeditor.childrencan leave the selection past the end of the new text, so these were reported as broken rendering when nothing was wrong. Slate no longer callseditor.onDOMErroritself; the hook stays for apps and plugins.resolveDOMRangealso returnsnullinstead of throwing when the editor's window isn't registered yet, for example from a layout effect inside the first render, and checks the focus only when the anchor resolves. Scrolling the selection into view no longer throws when the unhung range ends in an element that doesn't render its children.