diff --git a/.changeset/bump-media-engine.md b/.changeset/bump-media-engine.md deleted file mode 100644 index faf9ebe71..000000000 --- a/.changeset/bump-media-engine.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@react-pdf/stylesheet': patch ---- - -Bump media-engine to v2.0.0 diff --git a/.changeset/experimental-pagination.md b/.changeset/experimental-pagination.md deleted file mode 100644 index 16b6d05fc..000000000 --- a/.changeset/experimental-pagination.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -'@react-pdf/layout': minor -'@react-pdf/renderer': minor -'@react-pdf/primitives': minor -'@react-pdf/types': minor ---- - -Experimental pagination engine, opt-in per page - -A new pagination engine ships alongside the current one: content is -measured once and packed into pages instead of relayouting on every split, -making long documents paginate orders of magnitude faster (a 300-page -document drops from ~40s to ~200ms). - -Opt in with `` — any page opting in switches -the whole document. The default behavior is unchanged. - -Under the new engine: - -- `` renders per-page chrome (headers, footers, - sidebars) around the content. The layout component receives - `{ pageNumber, totalPages, subPageNumber, subPageTotalPages }` and the - page content as `children`, and runs once per output page. Using `layout` - implies `experimentalPagination`. -- One `fixed` semantic: in-flow fixed elements repeat at the top of every - page they span; footers are the layout's job. -- `minPresenceAhead` is supported, with one refinement: a trailing element - with nothing after it stays in place instead of moving to its own page. - -The current engine remains the default until the next major, when the new -engine takes over. diff --git a/.changeset/heavy-pages-repeat.md b/.changeset/heavy-pages-repeat.md deleted file mode 100644 index 6985403d9..000000000 --- a/.changeset/heavy-pages-repeat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@react-pdf/paginate': minor ---- - -Add `repeat` flag — items re-emit at the head of every continuation of their parent column (repeating table headers), composing with lazy items to re-materialize per page. Add `createPaginator` for stepwise pagination with a different height per page. diff --git a/.changeset/lucky-pots-shave.md b/.changeset/lucky-pots-shave.md deleted file mode 100644 index 7ca057e7b..000000000 --- a/.changeset/lucky-pots-shave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@react-pdf/textkit': patch ---- - -Use @react-pdf/hyphenate for text layout, and skip whitespace when splitting words into syllables. diff --git a/.changeset/paginate-flownode-api.md b/.changeset/paginate-flownode-api.md deleted file mode 100644 index ec479d0c7..000000000 --- a/.changeset/paginate-flownode-api.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -'@react-pdf/paginate': major ---- - -Box-model public API: FlowNode in, PlacedNode out - -`createPaginator(nodes: FlowNode[])` now takes a tree of boxes — tops, -heights, margins, edges — and derives gaps, edge spacers, and row offsets -internally. The item stream (leaf/spacer/column/row/penalty/lazy) becomes an -implementation detail; `paginate` and the Item types are no longer exported. -Output is `PlacedNode[]`: placed fragments in the caller's vocabulary, with -spacers and synthetic wrappers dissolved into positions. - -Also: columns whose children overlap vertically (flex-wrap) are now demoted -to unsplittable leaves by the engine itself. diff --git a/.changeset/render-props-return-instances.md b/.changeset/render-props-return-instances.md deleted file mode 100644 index f6aa2bc75..000000000 --- a/.changeset/render-props-return-instances.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -'@react-pdf/layout': major -'@react-pdf/renderer': minor ---- - -Move render-prop element conversion from layout to the renderer - -Render props are now wrapped at the reconciler boundary: by the time layout -calls them they return internal instances, not React elements. Layout's -`createInstances` is deleted and `resolvePagination` consumes instances -directly. - -**Breaking (layout):** anyone calling `@react-pdf/layout` directly with -trees whose render props return React elements must convert the result -before handing it to layout — the contract is now instance arrays. Users of -`@react-pdf/renderer` are unaffected: the renderer performs the conversion. diff --git a/packages/examples/next-14/CHANGELOG.md b/packages/examples/next-14/CHANGELOG.md index 9c9959d99..b64fca7dc 100644 --- a/packages/examples/next-14/CHANGELOG.md +++ b/packages/examples/next-14/CHANGELOG.md @@ -1,5 +1,12 @@ # next-14 +## 0.1.25 + +### Patch Changes + +- Updated dependencies [[`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae), [`572cedc23493e4a3085e259bf129ceec458418bd`](https://github.com/diegomura/react-pdf/commit/572cedc23493e4a3085e259bf129ceec458418bd)]: + - @react-pdf/renderer@4.7.0 + ## 0.1.24 ### Patch Changes diff --git a/packages/examples/next-14/package.json b/packages/examples/next-14/package.json index 21714e02c..81efaa050 100644 --- a/packages/examples/next-14/package.json +++ b/packages/examples/next-14/package.json @@ -1,6 +1,6 @@ { "name": "next-14", - "version": "0.1.24", + "version": "0.1.25", "private": true, "scripts": { "dev": "next dev", @@ -8,7 +8,7 @@ "lint": "next lint" }, "dependencies": { - "@react-pdf/renderer": "^4.6.1", + "@react-pdf/renderer": "^4.7.0", "react": "^18", "react-dom": "^18", "next": "15.5.15" diff --git a/packages/examples/next-15/CHANGELOG.md b/packages/examples/next-15/CHANGELOG.md index a9bb0001c..2109178b4 100644 --- a/packages/examples/next-15/CHANGELOG.md +++ b/packages/examples/next-15/CHANGELOG.md @@ -1,5 +1,12 @@ # next-15 +## 0.1.25 + +### Patch Changes + +- Updated dependencies [[`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae), [`572cedc23493e4a3085e259bf129ceec458418bd`](https://github.com/diegomura/react-pdf/commit/572cedc23493e4a3085e259bf129ceec458418bd)]: + - @react-pdf/renderer@4.7.0 + ## 0.1.24 ### Patch Changes diff --git a/packages/examples/next-15/package.json b/packages/examples/next-15/package.json index db689bb6c..15916c041 100644 --- a/packages/examples/next-15/package.json +++ b/packages/examples/next-15/package.json @@ -1,6 +1,6 @@ { "name": "next-15", - "version": "0.1.24", + "version": "0.1.25", "private": true, "scripts": { "dev": "next dev", @@ -8,7 +8,7 @@ "lint": "next lint" }, "dependencies": { - "@react-pdf/renderer": "^4.6.1", + "@react-pdf/renderer": "^4.7.0", "react": "19.1.0", "react-dom": "19.1.0", "next": "15.5.14" diff --git a/packages/examples/vite/CHANGELOG.md b/packages/examples/vite/CHANGELOG.md index cd74918dd..5222afedc 100644 --- a/packages/examples/vite/CHANGELOG.md +++ b/packages/examples/vite/CHANGELOG.md @@ -1,5 +1,14 @@ # @react-pdf/examples +## 3.5.4 + +### Patch Changes + +- Updated dependencies [[`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae), [`572cedc23493e4a3085e259bf129ceec458418bd`](https://github.com/diegomura/react-pdf/commit/572cedc23493e4a3085e259bf129ceec458418bd)]: + - @react-pdf/renderer@4.7.0 + - @react-pdf/math@4.0.0 + - @react-pdf/mermaid@4.0.0 + ## 3.5.3 ### Patch Changes diff --git a/packages/examples/vite/package.json b/packages/examples/vite/package.json index e538ade99..853ad0815 100644 --- a/packages/examples/vite/package.json +++ b/packages/examples/vite/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/vite-example", - "version": "3.5.3", + "version": "3.5.4", "license": "MIT", "private": true, "author": "Diego Muracciole ", @@ -11,9 +11,9 @@ "build:site": "vite build ./src" }, "dependencies": { - "@react-pdf/math": "^3.0.1", - "@react-pdf/mermaid": "^3.0.1", - "@react-pdf/renderer": "^4.6.1" + "@react-pdf/math": "^4.0.0", + "@react-pdf/mermaid": "^4.0.0", + "@react-pdf/renderer": "^4.7.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", diff --git a/packages/font/CHANGELOG.md b/packages/font/CHANGELOG.md index 3811e61d6..c61d73b39 100644 --- a/packages/font/CHANGELOG.md +++ b/packages/font/CHANGELOG.md @@ -1,5 +1,12 @@ # @react-pdf/font +## 4.0.11 + +### Patch Changes + +- Updated dependencies [[`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae)]: + - @react-pdf/types@2.12.0 + ## 4.0.10 ### Patch Changes diff --git a/packages/font/package.json b/packages/font/package.json index 6d87a768b..9d34a8f1f 100644 --- a/packages/font/package.json +++ b/packages/font/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/font", - "version": "4.0.10", + "version": "4.0.11", "license": "MIT", "description": "Register font and emoji source for react-pdf document", "author": "Diego Muracciole ", @@ -24,7 +24,7 @@ }, "dependencies": { "@react-pdf/pdfkit": "^6.0.1", - "@react-pdf/types": "^2.11.3", + "@react-pdf/types": "^2.12.0", "fontkit": "^2.0.2", "is-url": "^1.2.4" }, diff --git a/packages/image/CHANGELOG.md b/packages/image/CHANGELOG.md index 975c5d8f2..5958d49d6 100644 --- a/packages/image/CHANGELOG.md +++ b/packages/image/CHANGELOG.md @@ -1,5 +1,12 @@ # @react-pdf/image +## 3.1.2 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/svg@1.1.1 + ## 3.1.1 ### Patch Changes diff --git a/packages/image/package.json b/packages/image/package.json index 964533516..533915852 100644 --- a/packages/image/package.json +++ b/packages/image/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/image", - "version": "3.1.1", + "version": "3.1.2", "license": "MIT", "description": "Parses the images in png or jpeg format for react-pdf document", "author": "Diego Muracciole ", @@ -23,7 +23,7 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@react-pdf/svg": "^1.1.0", + "@react-pdf/svg": "^1.1.1", "jay-peg": "^1.1.1", "png-js": "^2.0.0" }, diff --git a/packages/layout/CHANGELOG.md b/packages/layout/CHANGELOG.md index 10bea1cbf..ae69335ba 100644 --- a/packages/layout/CHANGELOG.md +++ b/packages/layout/CHANGELOG.md @@ -1,5 +1,58 @@ # @react-pdf/layout +## 5.0.0 + +### Major Changes + +- [#3500](https://github.com/diegomura/react-pdf/pull/3500) [`572cedc23493e4a3085e259bf129ceec458418bd`](https://github.com/diegomura/react-pdf/commit/572cedc23493e4a3085e259bf129ceec458418bd) Thanks [@diegomura](https://github.com/diegomura)! - Move render-prop element conversion from layout to the renderer + + Render props are now wrapped at the reconciler boundary: by the time layout + calls them they return internal instances, not React elements. Layout's + `createInstances` is deleted and `resolvePagination` consumes instances + directly. + + **Breaking (layout):** anyone calling `@react-pdf/layout` directly with + trees whose render props return React elements must convert the result + before handing it to layout — the contract is now instance arrays. Users of + `@react-pdf/renderer` are unaffected: the renderer performs the conversion. + +### Minor Changes + +- [#3505](https://github.com/diegomura/react-pdf/pull/3505) [`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae) Thanks [@diegomura](https://github.com/diegomura)! - Experimental pagination engine, opt-in per page + + A new pagination engine ships alongside the current one: content is + measured once and packed into pages instead of relayouting on every split, + making long documents paginate orders of magnitude faster (a 300-page + document drops from ~40s to ~200ms). + + Opt in with `` — any page opting in switches + the whole document. The default behavior is unchanged. + + Under the new engine: + + - `` renders per-page chrome (headers, footers, + sidebars) around the content. The layout component receives + `{ pageNumber, totalPages, subPageNumber, subPageTotalPages }` and the + page content as `children`, and runs once per output page. Using `layout` + implies `experimentalPagination`. + - One `fixed` semantic: in-flow fixed elements repeat at the top of every + page they span; footers are the layout's job. + - `minPresenceAhead` is supported, with one refinement: a trailing element + with nothing after it stays in place instead of moving to its own page. + + The current engine remains the default until the next major, when the new + engine takes over. + +### Patch Changes + +- Updated dependencies [[`d38d17759b3856ab64c69101bd359aace4b532fc`](https://github.com/diegomura/react-pdf/commit/d38d17759b3856ab64c69101bd359aace4b532fc), [`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae), [`482d7cd600ffa28c60b5db46e7eb1466398feb7b`](https://github.com/diegomura/react-pdf/commit/482d7cd600ffa28c60b5db46e7eb1466398feb7b), [`cb445c063adf87c2f250d11f7c36a71c7695bc61`](https://github.com/diegomura/react-pdf/commit/cb445c063adf87c2f250d11f7c36a71c7695bc61), [`cf1348df7bfbc8091ff495320a3ae798569ccc4e`](https://github.com/diegomura/react-pdf/commit/cf1348df7bfbc8091ff495320a3ae798569ccc4e)]: + - @react-pdf/stylesheet@6.2.4 + - @react-pdf/primitives@4.4.0 + - @react-pdf/types@2.12.0 + - @react-pdf/paginate@1.0.0 + - @react-pdf/textkit@6.4.2 + - @react-pdf/image@3.1.2 + ## 4.7.1 ### Patch Changes diff --git a/packages/layout/package.json b/packages/layout/package.json index 80058cb30..9d0dddcd5 100644 --- a/packages/layout/package.json +++ b/packages/layout/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/layout", - "version": "4.7.1", + "version": "5.0.0", "license": "MIT", "description": "Resolve document component's layout", "author": "Diego Muracciole ", @@ -21,12 +21,12 @@ }, "dependencies": { "@react-pdf/fns": "3.1.3", - "@react-pdf/image": "^3.1.1", - "@react-pdf/paginate": "0.1.0", - "@react-pdf/primitives": "^4.3.0", - "@react-pdf/stylesheet": "^6.2.3", - "@react-pdf/textkit": "^6.4.1", - "@react-pdf/types": "^2.11.3", + "@react-pdf/image": "^3.1.2", + "@react-pdf/paginate": "1.0.0", + "@react-pdf/primitives": "^4.4.0", + "@react-pdf/stylesheet": "^6.2.4", + "@react-pdf/textkit": "^6.4.2", + "@react-pdf/types": "^2.12.0", "emoji-regex-xs": "^1.0.0", "queue": "^6.0.1", "yoga-layout": "^3.2.1" diff --git a/packages/math/CHANGELOG.md b/packages/math/CHANGELOG.md index 25d15d684..6965ebb5f 100644 --- a/packages/math/CHANGELOG.md +++ b/packages/math/CHANGELOG.md @@ -1,5 +1,14 @@ # @react-pdf/math +## 4.0.0 + +### Patch Changes + +- Updated dependencies [[`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae), [`572cedc23493e4a3085e259bf129ceec458418bd`](https://github.com/diegomura/react-pdf/commit/572cedc23493e4a3085e259bf129ceec458418bd)]: + - @react-pdf/renderer@4.7.0 + - @react-pdf/primitives@4.4.0 + - @react-pdf/svg@1.1.1 + ## 3.0.1 ### Patch Changes diff --git a/packages/math/package.json b/packages/math/package.json index 57b9405af..b464d9e3f 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/math", - "version": "3.0.1", + "version": "4.0.0", "license": "MIT", "description": "Render LaTeX math expressions in react-pdf documents", "author": "Diego Muracciole ", @@ -23,12 +23,12 @@ "lib" ], "dependencies": { - "@react-pdf/primitives": "^4.3.0", - "@react-pdf/svg": "^1.1.0", + "@react-pdf/primitives": "^4.4.0", + "@react-pdf/svg": "^1.1.1", "mathjax-full": "^3.2.2" }, "peerDependencies": { - "@react-pdf/renderer": ">=4.6.1", + "@react-pdf/renderer": ">=4.7.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "devDependencies": { diff --git a/packages/mermaid/CHANGELOG.md b/packages/mermaid/CHANGELOG.md index c9002f5d7..aa090335d 100644 --- a/packages/mermaid/CHANGELOG.md +++ b/packages/mermaid/CHANGELOG.md @@ -1,5 +1,14 @@ # @react-pdf/mermaid +## 4.0.0 + +### Patch Changes + +- Updated dependencies [[`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae), [`572cedc23493e4a3085e259bf129ceec458418bd`](https://github.com/diegomura/react-pdf/commit/572cedc23493e4a3085e259bf129ceec458418bd)]: + - @react-pdf/renderer@4.7.0 + - @react-pdf/primitives@4.4.0 + - @react-pdf/svg@1.1.1 + ## 3.0.1 ### Patch Changes diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index dad4cefad..b725e13ae 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/mermaid", - "version": "3.0.1", + "version": "4.0.0", "license": "MIT", "description": "Render Mermaid diagrams in react-pdf documents", "author": "Diego Muracciole ", @@ -23,12 +23,12 @@ "lib" ], "dependencies": { - "@react-pdf/primitives": "^4.3.0", - "@react-pdf/svg": "^1.1.0", + "@react-pdf/primitives": "^4.4.0", + "@react-pdf/svg": "^1.1.1", "beautiful-mermaid": "^1.1.3" }, "peerDependencies": { - "@react-pdf/renderer": ">=4.6.1", + "@react-pdf/renderer": ">=4.7.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "devDependencies": { diff --git a/packages/paginate/CHANGELOG.md b/packages/paginate/CHANGELOG.md new file mode 100644 index 000000000..7c1b709be --- /dev/null +++ b/packages/paginate/CHANGELOG.md @@ -0,0 +1,21 @@ +# @react-pdf/paginate + +## 1.0.0 + +### Major Changes + +- [#3501](https://github.com/diegomura/react-pdf/pull/3501) [`cf1348df7bfbc8091ff495320a3ae798569ccc4e`](https://github.com/diegomura/react-pdf/commit/cf1348df7bfbc8091ff495320a3ae798569ccc4e) Thanks [@diegomura](https://github.com/diegomura)! - Box-model public API: FlowNode in, PlacedNode out + + `createPaginator(nodes: FlowNode[])` now takes a tree of boxes — tops, + heights, margins, edges — and derives gaps, edge spacers, and row offsets + internally. The item stream (leaf/spacer/column/row/penalty/lazy) becomes an + implementation detail; `paginate` and the Item types are no longer exported. + Output is `PlacedNode[]`: placed fragments in the caller's vocabulary, with + spacers and synthetic wrappers dissolved into positions. + + Also: columns whose children overlap vertically (flex-wrap) are now demoted + to unsplittable leaves by the engine itself. + +### Minor Changes + +- [#3497](https://github.com/diegomura/react-pdf/pull/3497) [`482d7cd600ffa28c60b5db46e7eb1466398feb7b`](https://github.com/diegomura/react-pdf/commit/482d7cd600ffa28c60b5db46e7eb1466398feb7b) Thanks [@diegomura](https://github.com/diegomura)! - Add `repeat` flag — items re-emit at the head of every continuation of their parent column (repeating table headers), composing with lazy items to re-materialize per page. Add `createPaginator` for stepwise pagination with a different height per page. diff --git a/packages/paginate/package.json b/packages/paginate/package.json index 039bd2367..a6c10fd22 100644 --- a/packages/paginate/package.json +++ b/packages/paginate/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/paginate", - "version": "0.1.0", + "version": "1.0.0", "license": "MIT", "description": "Standalone pagination engine for react-pdf", "author": "Diego Muracciole ", diff --git a/packages/primitives/CHANGELOG.md b/packages/primitives/CHANGELOG.md index 5987d8f71..4c67e8042 100644 --- a/packages/primitives/CHANGELOG.md +++ b/packages/primitives/CHANGELOG.md @@ -1,5 +1,34 @@ # @react-pdf/primitives +## 4.4.0 + +### Minor Changes + +- [#3505](https://github.com/diegomura/react-pdf/pull/3505) [`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae) Thanks [@diegomura](https://github.com/diegomura)! - Experimental pagination engine, opt-in per page + + A new pagination engine ships alongside the current one: content is + measured once and packed into pages instead of relayouting on every split, + making long documents paginate orders of magnitude faster (a 300-page + document drops from ~40s to ~200ms). + + Opt in with `` — any page opting in switches + the whole document. The default behavior is unchanged. + + Under the new engine: + + - `` renders per-page chrome (headers, footers, + sidebars) around the content. The layout component receives + `{ pageNumber, totalPages, subPageNumber, subPageTotalPages }` and the + page content as `children`, and runs once per output page. Using `layout` + implies `experimentalPagination`. + - One `fixed` semantic: in-flow fixed elements repeat at the top of every + page they span; footers are the layout's job. + - `minPresenceAhead` is supported, with one refinement: a trailing element + with nothing after it stays in place instead of moving to its own page. + + The current engine remains the default until the next major, when the new + engine takes over. + ## 4.3.0 ### Minor Changes diff --git a/packages/primitives/package.json b/packages/primitives/package.json index 52cf74aa0..425fae2d1 100644 --- a/packages/primitives/package.json +++ b/packages/primitives/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/primitives", - "version": "4.3.0", + "version": "4.4.0", "license": "MIT", "description": "Define uninitialized elements", "author": "Diego Muracciole ", diff --git a/packages/render/CHANGELOG.md b/packages/render/CHANGELOG.md index 675dc823d..fc39f054f 100644 --- a/packages/render/CHANGELOG.md +++ b/packages/render/CHANGELOG.md @@ -1,5 +1,14 @@ # @react-pdf/render +## 4.6.2 + +### Patch Changes + +- Updated dependencies [[`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae), [`cb445c063adf87c2f250d11f7c36a71c7695bc61`](https://github.com/diegomura/react-pdf/commit/cb445c063adf87c2f250d11f7c36a71c7695bc61)]: + - @react-pdf/primitives@4.4.0 + - @react-pdf/types@2.12.0 + - @react-pdf/textkit@6.4.2 + ## 4.6.1 ### Patch Changes diff --git a/packages/render/package.json b/packages/render/package.json index 625ae2aa7..15aa2ebe3 100644 --- a/packages/render/package.json +++ b/packages/render/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/render", - "version": "4.6.1", + "version": "4.6.2", "license": "MIT", "description": "A render engine for Node and the browser", "author": "Diego Muracciole ", @@ -21,9 +21,9 @@ "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/fns": "3.1.3", - "@react-pdf/primitives": "^4.3.0", - "@react-pdf/textkit": "^6.4.1", - "@react-pdf/types": "^2.11.3", + "@react-pdf/primitives": "^4.4.0", + "@react-pdf/textkit": "^6.4.2", + "@react-pdf/types": "^2.12.0", "abs-svg-path": "^0.1.1", "color-string": "^2.1.4", "normalize-svg-path": "^1.1.0", @@ -31,7 +31,7 @@ "svg-arc-to-cubic-bezier": "^3.2.0" }, "devDependencies": { - "@react-pdf/layout": "^4.7.1", + "@react-pdf/layout": "^5.0.0", "@types/abs-svg-path": "^0.1.3", "@types/pdfkit": "^0.13.9" }, diff --git a/packages/renderer/CHANGELOG.md b/packages/renderer/CHANGELOG.md index 2f5c94f9e..623a5927a 100644 --- a/packages/renderer/CHANGELOG.md +++ b/packages/renderer/CHANGELOG.md @@ -1,5 +1,55 @@ # @react-pdf/renderer +## 4.7.0 + +### Minor Changes + +- [#3505](https://github.com/diegomura/react-pdf/pull/3505) [`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae) Thanks [@diegomura](https://github.com/diegomura)! - Experimental pagination engine, opt-in per page + + A new pagination engine ships alongside the current one: content is + measured once and packed into pages instead of relayouting on every split, + making long documents paginate orders of magnitude faster (a 300-page + document drops from ~40s to ~200ms). + + Opt in with `` — any page opting in switches + the whole document. The default behavior is unchanged. + + Under the new engine: + + - `` renders per-page chrome (headers, footers, + sidebars) around the content. The layout component receives + `{ pageNumber, totalPages, subPageNumber, subPageTotalPages }` and the + page content as `children`, and runs once per output page. Using `layout` + implies `experimentalPagination`. + - One `fixed` semantic: in-flow fixed elements repeat at the top of every + page they span; footers are the layout's job. + - `minPresenceAhead` is supported, with one refinement: a trailing element + with nothing after it stays in place instead of moving to its own page. + + The current engine remains the default until the next major, when the new + engine takes over. + +- [#3500](https://github.com/diegomura/react-pdf/pull/3500) [`572cedc23493e4a3085e259bf129ceec458418bd`](https://github.com/diegomura/react-pdf/commit/572cedc23493e4a3085e259bf129ceec458418bd) Thanks [@diegomura](https://github.com/diegomura)! - Move render-prop element conversion from layout to the renderer + + Render props are now wrapped at the reconciler boundary: by the time layout + calls them they return internal instances, not React elements. Layout's + `createInstances` is deleted and `resolvePagination` consumes instances + directly. + + **Breaking (layout):** anyone calling `@react-pdf/layout` directly with + trees whose render props return React elements must convert the result + before handing it to layout — the contract is now instance arrays. Users of + `@react-pdf/renderer` are unaffected: the renderer performs the conversion. + +### Patch Changes + +- Updated dependencies [[`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae), [`572cedc23493e4a3085e259bf129ceec458418bd`](https://github.com/diegomura/react-pdf/commit/572cedc23493e4a3085e259bf129ceec458418bd)]: + - @react-pdf/layout@5.0.0 + - @react-pdf/primitives@4.4.0 + - @react-pdf/types@2.12.0 + - @react-pdf/render@4.6.2 + - @react-pdf/font@4.0.11 + ## 4.6.1 ### Patch Changes diff --git a/packages/renderer/package.json b/packages/renderer/package.json index df952afcc..12f836f23 100644 --- a/packages/renderer/package.json +++ b/packages/renderer/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/renderer", - "version": "4.6.1", + "version": "4.7.0", "license": "MIT", "description": "Create PDF files on the browser and server", "author": "Diego Muracciole ", @@ -25,13 +25,13 @@ "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/fns": "3.1.3", - "@react-pdf/font": "^4.0.10", - "@react-pdf/layout": "^4.7.1", + "@react-pdf/font": "^4.0.11", + "@react-pdf/layout": "^5.0.0", "@react-pdf/pdfkit": "^6.0.1", - "@react-pdf/primitives": "^4.3.0", + "@react-pdf/primitives": "^4.4.0", "@react-pdf/reconciler": "^2.0.0", - "@react-pdf/render": "^4.6.1", - "@react-pdf/types": "^2.11.3", + "@react-pdf/render": "^4.6.2", + "@react-pdf/types": "^2.12.0", "events": "^3.3.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", diff --git a/packages/stylesheet/CHANGELOG.md b/packages/stylesheet/CHANGELOG.md index bfe29494a..a6b9f7faa 100644 --- a/packages/stylesheet/CHANGELOG.md +++ b/packages/stylesheet/CHANGELOG.md @@ -1,5 +1,14 @@ # @react-pdf/stylesheet +## 6.2.4 + +### Patch Changes + +- [#3496](https://github.com/diegomura/react-pdf/pull/3496) [`d38d17759b3856ab64c69101bd359aace4b532fc`](https://github.com/diegomura/react-pdf/commit/d38d17759b3856ab64c69101bd359aace4b532fc) Thanks [@diegomura](https://github.com/diegomura)! - Bump media-engine to v2.0.0 + +- Updated dependencies [[`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae)]: + - @react-pdf/types@2.12.0 + ## 6.2.3 ### Patch Changes diff --git a/packages/stylesheet/package.json b/packages/stylesheet/package.json index 06f661fbd..a843d4883 100644 --- a/packages/stylesheet/package.json +++ b/packages/stylesheet/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/stylesheet", - "version": "6.2.3", + "version": "6.2.4", "license": "MIT", "description": "A styles engine for Node and the browser", "author": "Diego Muracciole ", @@ -21,7 +21,7 @@ }, "dependencies": { "@react-pdf/fns": "3.1.3", - "@react-pdf/types": "^2.11.3", + "@react-pdf/types": "^2.12.0", "color-string": "^2.1.4", "hsl-to-hex": "^1.0.0", "media-engine": "^2.0.0", diff --git a/packages/svg/CHANGELOG.md b/packages/svg/CHANGELOG.md index dc41c0502..84fb10289 100644 --- a/packages/svg/CHANGELOG.md +++ b/packages/svg/CHANGELOG.md @@ -1,5 +1,12 @@ # @react-pdf/svg +## 1.1.1 + +### Patch Changes + +- Updated dependencies [[`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae)]: + - @react-pdf/primitives@4.4.0 + ## 1.1.0 ### Minor Changes diff --git a/packages/svg/package.json b/packages/svg/package.json index bf417129e..e21821141 100644 --- a/packages/svg/package.json +++ b/packages/svg/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/svg", - "version": "1.1.0", + "version": "1.1.1", "license": "MIT", "description": "SVG parsing for react-pdf", "author": "Diego Muracciole ", @@ -23,7 +23,7 @@ "lib" ], "dependencies": { - "@react-pdf/primitives": "^4.3.0" + "@react-pdf/primitives": "^4.4.0" }, "devDependencies": { "@vitejs/plugin-react": "^4.2.1", diff --git a/packages/textkit/CHANGELOG.md b/packages/textkit/CHANGELOG.md index 2add843c3..c3a5e92a6 100644 --- a/packages/textkit/CHANGELOG.md +++ b/packages/textkit/CHANGELOG.md @@ -1,5 +1,11 @@ # @react-pdf/textkit +## 6.4.2 + +### Patch Changes + +- [#3495](https://github.com/diegomura/react-pdf/pull/3495) [`cb445c063adf87c2f250d11f7c36a71c7695bc61`](https://github.com/diegomura/react-pdf/commit/cb445c063adf87c2f250d11f7c36a71c7695bc61) Thanks [@diegomura](https://github.com/diegomura)! - Use @react-pdf/hyphenate for text layout, and skip whitespace when splitting words into syllables. + ## 6.4.1 ### Patch Changes diff --git a/packages/textkit/package.json b/packages/textkit/package.json index 31341808d..7a6cc2f2a 100644 --- a/packages/textkit/package.json +++ b/packages/textkit/package.json @@ -1,7 +1,7 @@ { "name": "@react-pdf/textkit", "license": "MIT", - "version": "6.4.1", + "version": "6.4.2", "description": "An advanced text layout framework", "type": "module", "main": "./lib/textkit.js", diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 7b40fa859..5186cdf08 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,41 @@ # @react-pdf/types +## 2.12.0 + +### Minor Changes + +- [#3505](https://github.com/diegomura/react-pdf/pull/3505) [`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae) Thanks [@diegomura](https://github.com/diegomura)! - Experimental pagination engine, opt-in per page + + A new pagination engine ships alongside the current one: content is + measured once and packed into pages instead of relayouting on every split, + making long documents paginate orders of magnitude faster (a 300-page + document drops from ~40s to ~200ms). + + Opt in with `` — any page opting in switches + the whole document. The default behavior is unchanged. + + Under the new engine: + + - `` renders per-page chrome (headers, footers, + sidebars) around the content. The layout component receives + `{ pageNumber, totalPages, subPageNumber, subPageTotalPages }` and the + page content as `children`, and runs once per output page. Using `layout` + implies `experimentalPagination`. + - One `fixed` semantic: in-flow fixed elements repeat at the top of every + page they span; footers are the layout's job. + - `minPresenceAhead` is supported, with one refinement: a trailing element + with nothing after it stays in place instead of moving to its own page. + + The current engine remains the default until the next major, when the new + engine takes over. + +### Patch Changes + +- Updated dependencies [[`d38d17759b3856ab64c69101bd359aace4b532fc`](https://github.com/diegomura/react-pdf/commit/d38d17759b3856ab64c69101bd359aace4b532fc), [`ae9a9983e8bd8b63c3873000531a8307e22c7bae`](https://github.com/diegomura/react-pdf/commit/ae9a9983e8bd8b63c3873000531a8307e22c7bae)]: + - @react-pdf/stylesheet@6.2.4 + - @react-pdf/primitives@4.4.0 + - @react-pdf/font@4.0.11 + ## 2.11.3 ### Patch Changes diff --git a/packages/types/package.json b/packages/types/package.json index 310fd45ba..74986f492 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/types", - "version": "2.11.3", + "version": "2.12.0", "license": "MIT", "description": "React-pdf TypeScript definitions", "author": "Diego Muracciole ", @@ -12,8 +12,8 @@ "directory": "packages/types" }, "dependencies": { - "@react-pdf/font": "^4.0.10", - "@react-pdf/primitives": "^4.3.0", - "@react-pdf/stylesheet": "^6.2.3" + "@react-pdf/font": "^4.0.11", + "@react-pdf/primitives": "^4.4.0", + "@react-pdf/stylesheet": "^6.2.4" } }