diff --git a/.changeset/nine-ways-walk.md b/.changeset/nine-ways-walk.md deleted file mode 100644 index d6a3b9a6d..000000000 --- a/.changeset/nine-ways-walk.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@react-pdf/examples": patch -"@react-pdf/layout": patch ---- - -fix: font selection regression diff --git a/.changeset/old-otters-marry.md b/.changeset/old-otters-marry.md new file mode 100644 index 000000000..92e6ac418 --- /dev/null +++ b/.changeset/old-otters-marry.md @@ -0,0 +1,6 @@ +--- +"@react-pdf/stylesheet": minor +"@react-pdf/layout": minor +--- + +Changed unit behavior according to PDF spec. Please note that all unitless values are considered as user unit which is a 72dpi equality of the value. This is according to PDF spec and ensures a consistent layout independent of the dpi setting. diff --git a/.changeset/pretty-jars-begin.md b/.changeset/pretty-jars-begin.md deleted file mode 100644 index aa5edf5c6..000000000 --- a/.changeset/pretty-jars-begin.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@react-pdf/layout': minor -'@react-pdf/pdfkit': minor -'@react-pdf/render': minor -'@react-pdf/stylesheet': minor -'@react-pdf/types': minor ---- - -fix: fix dpi \ No newline at end of file diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 19fb38715..d8bd9a2a1 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -24,7 +24,7 @@ Here I present a quick guide about how to setup your development environment exa ### 1. Clone react-pdf project -This goes without saying but first you need to download the code +This goes without saying but first you need to download the code: ```sh git clone https://github.com/diegomura/react-pdf.git @@ -33,14 +33,14 @@ cd react-pdf ### 2. Install Node 18 -If you have `nvm` installed all you have to do is +If you have `nvm` installed all you have to do is: ```sh nvm install 18 nvm use ``` -Other versions should work although I can't guarantee it +Other versions should work although I can't guarantee it. ### 3. Install dependencies and boostrap monorepo @@ -48,7 +48,6 @@ We need to download this project dependencies in order to make it work. Because ```sh yarn install -yarn bootstrap ``` ### 4. Build & watch codebase @@ -61,13 +60,13 @@ yarn watch ### 5. Setup testing project -Now that we have react-pdf built and running, we need to setup a testing project to use as a development target. This might not be the more straighforward way to set up your dev environment but enables to use the lib as an "external" agent, just as final users will do. It's also extensible for testing in different environmens, whether it is a web or node project, or electron or native app. I usually have a web project (just a plain [create react app](https://reactjs.org/docs/create-a-new-react-app.html) project, and a Node one. +Now that we have react-pdf built and running, we need to setup a testing project to use as a development target. This might not be the most straightforward way to set up your dev environment but enables use of the lib as an "external" agent, just as end users will do. It's also extensible for testing in different environments, whether it is a web or node project, or electron or native app. I usually have a web project (just a plain [create react app](https://reactjs.org/docs/create-a-new-react-app.html) project), and a Node one. ### 6. Link your react-pdf build to your testing project Now all we have to do is make our testing project point to our react-pdf watch instance so we can apply changes to it and see them working. For that I use `yarn link`. -On another terminal +On another terminal: ```sh cd react-pdf/packages/renderer # navigate to react-pdf renderer package diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0904e0be5..262e733b8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,7 +3,10 @@ name: CI on: pull_request: branches: - - master + - '**' + push: + branches: + - '**' concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 41923896e..b40d5bf80 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,7 +22,7 @@ jobs: matrix: # We aim to test all maintained LTS versions of Node.js as well as the latest stable version node_version: [18, 20, 21] - react_version: [16, 17, 18] + react_version: [16, 17, 18, 19] steps: - name: Checkout diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz new file mode 100644 index 000000000..76f16128c Binary files /dev/null and b/.yarn/install-state.gz differ diff --git a/README.md b/README.md index 1b618b9d8..8c0f5b35a 100644 --- a/README.md +++ b/README.md @@ -3,16 +3,19 @@

React renderer for creating PDF files on the browser and server

- + - - + + - + - - + + + + +

diff --git a/e2e/node-cjs/CHANGELOG.md b/e2e/node-cjs/CHANGELOG.md index fdcc309a7..deb37f385 100644 --- a/e2e/node-cjs/CHANGELOG.md +++ b/e2e/node-cjs/CHANGELOG.md @@ -1,5 +1,75 @@ # @react-pdf/e2e-node-cjs +## 2.0.15 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.5 + +## 2.0.14 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.4 + +## 2.0.13 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.3 + +## 2.0.12 + +### Patch Changes + +- Updated dependencies [[`aab7d958`](https://github.com/diegomura/react-pdf/commit/aab7d95870d9073e4acb004aa0cce9cfa19b7f0e)]: + - @react-pdf/renderer@4.1.2 + +## 2.0.11 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.1 + +## 2.0.10 + +### Patch Changes + +- Updated dependencies [[`52b2f253`](https://github.com/diegomura/react-pdf/commit/52b2f25349bee0c09399bc2e7e5e89db5e1433fd)]: + - @react-pdf/renderer@4.1.0 + +## 2.0.9 + +### Patch Changes + +- Updated dependencies [[`7add014c`](https://github.com/diegomura/react-pdf/commit/7add014c6bc9cff649dd1a56fc47214888613b6b)]: + - @react-pdf/renderer@4.0.2 + +## 2.0.8 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.0.1 + +## 2.0.7 + +### Patch Changes + +- Updated dependencies [[`afe4bcfe`](https://github.com/diegomura/react-pdf/commit/afe4bcfe6f4b991cf22341242fc27d169b758d47), [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119)]: + - @react-pdf/renderer@4.0.0 + +## 2.0.6 + +### Patch Changes + +- Updated dependencies [[`ed94775`](https://github.com/diegomura/react-pdf/commit/ed94775f4d44db0886ff08c71d09f446bace6392)]: + - @react-pdf/renderer@3.4.5 + ## 2.0.5 ### Patch Changes diff --git a/e2e/node-cjs/package.json b/e2e/node-cjs/package.json index e14dc53d5..252d432dd 100644 --- a/e2e/node-cjs/package.json +++ b/e2e/node-cjs/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/e2e-node-cjs", - "version": "2.0.5", + "version": "2.0.15", "license": "MIT", "private": true, "type": "commonjs", @@ -12,7 +12,7 @@ "start": "node ./index.js" }, "dependencies": { - "@react-pdf/renderer": "^3.4.4", + "@react-pdf/renderer": "^4.1.5", "react": "^18.2.0" } } diff --git a/e2e/node-esm/CHANGELOG.md b/e2e/node-esm/CHANGELOG.md index 7a3b984e2..13fc94f3f 100644 --- a/e2e/node-esm/CHANGELOG.md +++ b/e2e/node-esm/CHANGELOG.md @@ -1,5 +1,75 @@ # @react-pdf/e2e-node-esm +## 2.0.15 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.5 + +## 2.0.14 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.4 + +## 2.0.13 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.3 + +## 2.0.12 + +### Patch Changes + +- Updated dependencies [[`aab7d958`](https://github.com/diegomura/react-pdf/commit/aab7d95870d9073e4acb004aa0cce9cfa19b7f0e)]: + - @react-pdf/renderer@4.1.2 + +## 2.0.11 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.1 + +## 2.0.10 + +### Patch Changes + +- Updated dependencies [[`52b2f253`](https://github.com/diegomura/react-pdf/commit/52b2f25349bee0c09399bc2e7e5e89db5e1433fd)]: + - @react-pdf/renderer@4.1.0 + +## 2.0.9 + +### Patch Changes + +- Updated dependencies [[`7add014c`](https://github.com/diegomura/react-pdf/commit/7add014c6bc9cff649dd1a56fc47214888613b6b)]: + - @react-pdf/renderer@4.0.2 + +## 2.0.8 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.0.1 + +## 2.0.7 + +### Patch Changes + +- Updated dependencies [[`afe4bcfe`](https://github.com/diegomura/react-pdf/commit/afe4bcfe6f4b991cf22341242fc27d169b758d47), [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119)]: + - @react-pdf/renderer@4.0.0 + +## 2.0.6 + +### Patch Changes + +- Updated dependencies [[`ed94775`](https://github.com/diegomura/react-pdf/commit/ed94775f4d44db0886ff08c71d09f446bace6392)]: + - @react-pdf/renderer@3.4.5 + ## 2.0.5 ### Patch Changes diff --git a/e2e/node-esm/package.json b/e2e/node-esm/package.json index 3f8956f6d..e3b31a02e 100644 --- a/e2e/node-esm/package.json +++ b/e2e/node-esm/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/e2e-node-esm", - "version": "2.0.5", + "version": "2.0.15", "license": "MIT", "private": true, "type": "module", @@ -12,7 +12,7 @@ "start": "node ./index.js" }, "dependencies": { - "@react-pdf/renderer": "^3.4.4", + "@react-pdf/renderer": "^4.1.5", "react": "^18.2.0" } } diff --git a/lerna.json b/lerna.json index 7c1c56a78..4ca076462 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { "version": "independent", - "packages": ["packages/*", "e2e/*"], + "packages": ["packages/*", "packages/examples/*", "e2e/*"], "npmClient": "yarn" } diff --git a/package.json b/package.json index bc3e7abe5..2551a7bcb 100644 --- a/package.json +++ b/package.json @@ -9,17 +9,17 @@ "repository": "git@github.com:diegomura/react-pdf.git", "workspaces": [ "packages/*", + "packages/examples/*", "e2e/*" ], "scripts": { "prepare": "husky", "build": "lerna run build", "watch": "lerna run watch --parallel", - "bootstrap": "lerna bootstrap", "prepublish": "lerna run build", "lint": "eslint packages", "test": "vitest", - "dev": "lerna run dev --scope @react-pdf/examples", + "dev": "lerna run dev --scope @react-pdf/examples --", "changeset": "changeset", "version-packages": "changeset version", "release": "changeset publish" @@ -65,9 +65,11 @@ "react": "^18.2.0", "react-16": "npm:react@^16.8.0", "react-17": "npm:react@^17.0.0", + "react-19": "npm:react@19.0.0-rc-66855b96-20241106", "react-dom": "^18.2.0", "react-dom-16": "npm:react-dom@^16.8.0", "react-dom-17": "npm:react-dom@^17.0.0", + "react-dom-19": "npm:react-dom@19.0.0-rc-66855b96-20241106", "rimraf": "^2.6.3", "rollup": "^4.9.0", "rollup-plugin-copy": "^3.5.0", diff --git a/packages/examples/dev.sh b/packages/examples/dev.sh new file mode 100755 index 000000000..81ceea2db --- /dev/null +++ b/packages/examples/dev.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# Get the directory of the script +scriptDir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Get the list of directories adjacent to the script +dirs=() +for dir in "$scriptDir"/*/ ; do + [ -d "$dir" ] && dirs+=("$(basename "$dir")") +done + +# Check if any directories were found +if [ ${#dirs[@]} -eq 0 ]; then + echo "No example directories found." + exit 1 +fi + +if [ -n "$1" ]; then + # First argument provided + selectedDir="$1" + if [[ " ${dirs[@]} " =~ " $selectedDir " ]]; then + echo "Selected example: $selectedDir" + else + echo "Example '$selectedDir' does not exist adjacent to the script." + exit 1 + fi +else + # No argument provided, prompt the user to select one + echo "Please select an example:" + select selectedDir in "${dirs[@]}"; do + if [ -n "$selectedDir" ]; then + echo "You selected: $selectedDir" + break + else + echo "Invalid selection." + fi + done +fi + +# Run 'yarn dev' inside the selected directory +cd "$scriptDir/$selectedDir" || { echo "Failed to change directory to $scriptDir/$selectedDir"; exit 1; } + +echo "Running 'yarn dev' in $scriptDir/$selectedDir" +yarn dev diff --git a/packages/examples/next-14/.eslintrc.json b/packages/examples/next-14/.eslintrc.json new file mode 100644 index 000000000..7ab374a36 --- /dev/null +++ b/packages/examples/next-14/.eslintrc.json @@ -0,0 +1,10 @@ +{ + "extends": ["../../../.eslintrc.json", "plugin:react/recommended"], + "rules": { + "react/prop-types": 0, + "jsx-a11y/anchor-is-valid": 0, + "react/jsx-one-expression-per-line": 0, + "react/react-in-jsx-scope": 0, + "import/prefer-default-export": 0 + } +} diff --git a/packages/examples/next-14/.gitignore b/packages/examples/next-14/.gitignore new file mode 100644 index 000000000..fd3dbb571 --- /dev/null +++ b/packages/examples/next-14/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/packages/examples/next-14/CHANGELOG.md b/packages/examples/next-14/CHANGELOG.md new file mode 100644 index 000000000..48319c8d3 --- /dev/null +++ b/packages/examples/next-14/CHANGELOG.md @@ -0,0 +1,57 @@ +# next-14 + +## 0.1.8 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.5 + +## 0.1.7 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.4 + +## 0.1.6 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.3 + +## 0.1.5 + +### Patch Changes + +- Updated dependencies [[`aab7d958`](https://github.com/diegomura/react-pdf/commit/aab7d95870d9073e4acb004aa0cce9cfa19b7f0e)]: + - @react-pdf/renderer@4.1.2 + +## 0.1.4 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.1 + +## 0.1.3 + +### Patch Changes + +- Updated dependencies [[`52b2f253`](https://github.com/diegomura/react-pdf/commit/52b2f25349bee0c09399bc2e7e5e89db5e1433fd)]: + - @react-pdf/renderer@4.1.0 + +## 0.1.2 + +### Patch Changes + +- Updated dependencies [[`7add014c`](https://github.com/diegomura/react-pdf/commit/7add014c6bc9cff649dd1a56fc47214888613b6b)]: + - @react-pdf/renderer@4.0.2 + +## 0.1.1 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.0.1 diff --git a/packages/examples/next-14/README.md b/packages/examples/next-14/README.md new file mode 100644 index 000000000..0dc9ea2bc --- /dev/null +++ b/packages/examples/next-14/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.js`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/packages/examples/next-14/app/favicon.ico b/packages/examples/next-14/app/favicon.ico new file mode 100644 index 000000000..718d6fea4 Binary files /dev/null and b/packages/examples/next-14/app/favicon.ico differ diff --git a/packages/examples/next-14/app/globals.css b/packages/examples/next-14/app/globals.css new file mode 100644 index 000000000..b5c61c956 --- /dev/null +++ b/packages/examples/next-14/app/globals.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/packages/examples/next-14/app/layout.js b/packages/examples/next-14/app/layout.js new file mode 100644 index 000000000..28ca8e9d4 --- /dev/null +++ b/packages/examples/next-14/app/layout.js @@ -0,0 +1,14 @@ +import './globals.css'; + +export const metadata = { + title: 'Create Next App', + description: 'Generated by create next app', +}; + +export default function RootLayout({ children }) { + return ( + + {children} + + ); +} diff --git a/packages/examples/next-14/app/page.js b/packages/examples/next-14/app/page.js new file mode 100644 index 000000000..bfe09efd2 --- /dev/null +++ b/packages/examples/next-14/app/page.js @@ -0,0 +1,32 @@ +'use client'; + +import { + Document, + Page, + PDFViewer, + PDFDownloadLink, + Text, +} from '@react-pdf/renderer'; + +export default function Home() { + const doc = ( + + + Hello world from client + + + ); + + return ( +
+ {doc} + + Download +
+ ); +} diff --git a/packages/examples/next-14/jsconfig.json b/packages/examples/next-14/jsconfig.json new file mode 100644 index 000000000..2a2e4b3bf --- /dev/null +++ b/packages/examples/next-14/jsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "paths": { + "@/*": ["./*"] + } + } +} diff --git a/packages/examples/next-14/next.config.mjs b/packages/examples/next-14/next.config.mjs new file mode 100644 index 000000000..4678774e6 --- /dev/null +++ b/packages/examples/next-14/next.config.mjs @@ -0,0 +1,4 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = {}; + +export default nextConfig; diff --git a/packages/examples/next-14/package.json b/packages/examples/next-14/package.json new file mode 100644 index 000000000..37b0134ee --- /dev/null +++ b/packages/examples/next-14/package.json @@ -0,0 +1,20 @@ +{ + "name": "next-14", + "version": "0.1.8", + "private": true, + "scripts": { + "dev": "next dev", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@react-pdf/renderer": "^4.1.5", + "react": "^18", + "react-dom": "^18", + "next": "14.2.17" + }, + "devDependencies": { + "postcss": "^8", + "tailwindcss": "^3.4.1" + } +} diff --git a/packages/examples/next-14/postcss.config.mjs b/packages/examples/next-14/postcss.config.mjs new file mode 100644 index 000000000..1a69fd2a4 --- /dev/null +++ b/packages/examples/next-14/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/packages/examples/next-14/tailwind.config.js b/packages/examples/next-14/tailwind.config.js new file mode 100644 index 000000000..12db303bc --- /dev/null +++ b/packages/examples/next-14/tailwind.config.js @@ -0,0 +1,17 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + './pages/**/*.{js,ts,jsx,tsx,mdx}', + './components/**/*.{js,ts,jsx,tsx,mdx}', + './app/**/*.{js,ts,jsx,tsx,mdx}', + ], + theme: { + extend: { + colors: { + background: 'var(--background)', + foreground: 'var(--foreground)', + }, + }, + }, + plugins: [], +}; diff --git a/packages/examples/next-15/.eslintrc.json b/packages/examples/next-15/.eslintrc.json new file mode 100644 index 000000000..7ab374a36 --- /dev/null +++ b/packages/examples/next-15/.eslintrc.json @@ -0,0 +1,10 @@ +{ + "extends": ["../../../.eslintrc.json", "plugin:react/recommended"], + "rules": { + "react/prop-types": 0, + "jsx-a11y/anchor-is-valid": 0, + "react/jsx-one-expression-per-line": 0, + "react/react-in-jsx-scope": 0, + "import/prefer-default-export": 0 + } +} diff --git a/packages/examples/next-15/.gitignore b/packages/examples/next-15/.gitignore new file mode 100644 index 000000000..d32cc78b8 --- /dev/null +++ b/packages/examples/next-15/.gitignore @@ -0,0 +1,40 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/packages/examples/next-15/CHANGELOG.md b/packages/examples/next-15/CHANGELOG.md new file mode 100644 index 000000000..d4d112759 --- /dev/null +++ b/packages/examples/next-15/CHANGELOG.md @@ -0,0 +1,57 @@ +# next-15 + +## 0.1.8 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.5 + +## 0.1.7 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.4 + +## 0.1.6 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.3 + +## 0.1.5 + +### Patch Changes + +- Updated dependencies [[`aab7d958`](https://github.com/diegomura/react-pdf/commit/aab7d95870d9073e4acb004aa0cce9cfa19b7f0e)]: + - @react-pdf/renderer@4.1.2 + +## 0.1.4 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.1 + +## 0.1.3 + +### Patch Changes + +- Updated dependencies [[`52b2f253`](https://github.com/diegomura/react-pdf/commit/52b2f25349bee0c09399bc2e7e5e89db5e1433fd)]: + - @react-pdf/renderer@4.1.0 + +## 0.1.2 + +### Patch Changes + +- Updated dependencies [[`7add014c`](https://github.com/diegomura/react-pdf/commit/7add014c6bc9cff649dd1a56fc47214888613b6b)]: + - @react-pdf/renderer@4.0.2 + +## 0.1.1 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.0.1 diff --git a/packages/examples/next-15/README.md b/packages/examples/next-15/README.md new file mode 100644 index 000000000..66bb426ff --- /dev/null +++ b/packages/examples/next-15/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.js`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/packages/examples/next-15/app/favicon.ico b/packages/examples/next-15/app/favicon.ico new file mode 100644 index 000000000..718d6fea4 Binary files /dev/null and b/packages/examples/next-15/app/favicon.ico differ diff --git a/packages/examples/next-15/app/globals.css b/packages/examples/next-15/app/globals.css new file mode 100644 index 000000000..b5c61c956 --- /dev/null +++ b/packages/examples/next-15/app/globals.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/packages/examples/next-15/app/layout.js b/packages/examples/next-15/app/layout.js new file mode 100644 index 000000000..28ca8e9d4 --- /dev/null +++ b/packages/examples/next-15/app/layout.js @@ -0,0 +1,14 @@ +import './globals.css'; + +export const metadata = { + title: 'Create Next App', + description: 'Generated by create next app', +}; + +export default function RootLayout({ children }) { + return ( + + {children} + + ); +} diff --git a/packages/examples/next-15/app/page.js b/packages/examples/next-15/app/page.js new file mode 100644 index 000000000..bfe09efd2 --- /dev/null +++ b/packages/examples/next-15/app/page.js @@ -0,0 +1,32 @@ +'use client'; + +import { + Document, + Page, + PDFViewer, + PDFDownloadLink, + Text, +} from '@react-pdf/renderer'; + +export default function Home() { + const doc = ( + + + Hello world from client + + + ); + + return ( +
+ {doc} + + Download +
+ ); +} diff --git a/packages/examples/next-15/jsconfig.json b/packages/examples/next-15/jsconfig.json new file mode 100644 index 000000000..2a2e4b3bf --- /dev/null +++ b/packages/examples/next-15/jsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "paths": { + "@/*": ["./*"] + } + } +} diff --git a/packages/examples/next-15/next.config.mjs b/packages/examples/next-15/next.config.mjs new file mode 100644 index 000000000..4678774e6 --- /dev/null +++ b/packages/examples/next-15/next.config.mjs @@ -0,0 +1,4 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = {}; + +export default nextConfig; diff --git a/packages/examples/next-15/package.json b/packages/examples/next-15/package.json new file mode 100644 index 000000000..b5f05a7de --- /dev/null +++ b/packages/examples/next-15/package.json @@ -0,0 +1,20 @@ +{ + "name": "next-15", + "version": "0.1.8", + "private": true, + "scripts": { + "dev": "next dev", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@react-pdf/renderer": "^4.1.5", + "react": "19.0.0-rc-66855b96-20241106", + "react-dom": "19.0.0-rc-66855b96-20241106", + "next": "15.0.3" + }, + "devDependencies": { + "postcss": "^8", + "tailwindcss": "^3.4.1" + } +} diff --git a/packages/examples/next-15/postcss.config.mjs b/packages/examples/next-15/postcss.config.mjs new file mode 100644 index 000000000..1a69fd2a4 --- /dev/null +++ b/packages/examples/next-15/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/packages/examples/next-15/public/file.svg b/packages/examples/next-15/public/file.svg new file mode 100644 index 000000000..004145cdd --- /dev/null +++ b/packages/examples/next-15/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/examples/next-15/public/globe.svg b/packages/examples/next-15/public/globe.svg new file mode 100644 index 000000000..567f17b0d --- /dev/null +++ b/packages/examples/next-15/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/examples/next-15/public/next.svg b/packages/examples/next-15/public/next.svg new file mode 100644 index 000000000..5174b28c5 --- /dev/null +++ b/packages/examples/next-15/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/examples/next-15/public/vercel.svg b/packages/examples/next-15/public/vercel.svg new file mode 100644 index 000000000..770539603 --- /dev/null +++ b/packages/examples/next-15/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/examples/next-15/public/window.svg b/packages/examples/next-15/public/window.svg new file mode 100644 index 000000000..b2b2a44f6 --- /dev/null +++ b/packages/examples/next-15/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/examples/next-15/tailwind.config.js b/packages/examples/next-15/tailwind.config.js new file mode 100644 index 000000000..12db303bc --- /dev/null +++ b/packages/examples/next-15/tailwind.config.js @@ -0,0 +1,17 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + './pages/**/*.{js,ts,jsx,tsx,mdx}', + './components/**/*.{js,ts,jsx,tsx,mdx}', + './app/**/*.{js,ts,jsx,tsx,mdx}', + ], + theme: { + extend: { + colors: { + background: 'var(--background)', + foreground: 'var(--foreground)', + }, + }, + }, + plugins: [], +}; diff --git a/packages/examples/package.json b/packages/examples/package.json index 6546e6455..58bb1199a 100644 --- a/packages/examples/package.json +++ b/packages/examples/package.json @@ -1,23 +1,12 @@ { "name": "@react-pdf/examples", - "version": "3.3.1", + "version": "0.0.0", "license": "MIT", "private": true, "author": "Diego Muracciole ", "homepage": "https://github.com/diegomura/react-pdf#readme", "repository": "git@github.com:diegomura/react-pdf.git", "scripts": { - "dev": "vite ./src --open" - }, - "dependencies": { - "@react-pdf/renderer": "^3.4.4" - }, - "devDependencies": { - "@vitejs/plugin-react": "^4.2.1", - "vite": "^5.0.11" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "dev": "./dev.sh" } } diff --git a/packages/examples/src/index.css b/packages/examples/src/index.css deleted file mode 100644 index 98ebbae39..000000000 --- a/packages/examples/src/index.css +++ /dev/null @@ -1,41 +0,0 @@ -@font-face { - font-family: Cairo; - src: url('../public/Cairo-Regular.ttf'); -} -@font-face { - font-family: Rubik; - src: url('../public/Rubik-Regular.ttf'); -} - -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} - -iframe { - width: 100vw; - height: 100vh; -} - -.cairo { - font-family: Cairo; - direction: rtl; -} - -.rubik { - font-family: Rubik; - /* direction: rtl; */ -} - -svg { - background-color: white; -} diff --git a/packages/examples/src/index.jsx b/packages/examples/src/index.jsx deleted file mode 100644 index 23d6c6b82..000000000 --- a/packages/examples/src/index.jsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react'; -import { createRoot } from 'react-dom/client'; - -import { PDFViewer } from '@react-pdf/renderer'; - -import Document from './fontFamilyFallback'; - -import './index.css'; - -const DocumentWrapper = () => { - return ( - <> - - - - - ); -}; - -const MOUNT_ELEMENT = document.createElement('div'); - -document.body.appendChild(MOUNT_ELEMENT); - -const root = createRoot(MOUNT_ELEMENT); // createRoot(container!) if you use TypeScript - -root.render(); diff --git a/packages/examples/src/svgTransform/index.jsx b/packages/examples/src/svgTransform/index.jsx deleted file mode 100644 index 3dddb8670..000000000 --- a/packages/examples/src/svgTransform/index.jsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; -import { Document, Page, Svg, G, Rect } from '@react-pdf/renderer'; - -const App = () => { - return ( - - - - - - - - - - ); -}; - -export default App; diff --git a/packages/examples/.eslintrc.json b/packages/examples/vite/.eslintrc.json similarity index 64% rename from packages/examples/.eslintrc.json rename to packages/examples/vite/.eslintrc.json index acf25ba13..b3fb0a750 100644 --- a/packages/examples/.eslintrc.json +++ b/packages/examples/vite/.eslintrc.json @@ -1,5 +1,5 @@ { - "extends": ["../../.eslintrc.json", "plugin:react/recommended"], + "extends": ["../../../.eslintrc.json", "plugin:react/recommended"], "rules": { "react/prop-types": 0, "jsx-a11y/anchor-is-valid": 0, diff --git a/packages/examples/.gitignore b/packages/examples/vite/.gitignore similarity index 100% rename from packages/examples/.gitignore rename to packages/examples/vite/.gitignore diff --git a/packages/examples/CHANGELOG.md b/packages/examples/vite/CHANGELOG.md similarity index 83% rename from packages/examples/CHANGELOG.md rename to packages/examples/vite/CHANGELOG.md index 5ea0b355f..680401e2a 100644 --- a/packages/examples/CHANGELOG.md +++ b/packages/examples/vite/CHANGELOG.md @@ -1,5 +1,77 @@ # @react-pdf/examples +## 3.3.11 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.5 + +## 3.3.10 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.4 + +## 3.3.9 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.3 + +## 3.3.8 + +### Patch Changes + +- Updated dependencies [[`aab7d958`](https://github.com/diegomura/react-pdf/commit/aab7d95870d9073e4acb004aa0cce9cfa19b7f0e)]: + - @react-pdf/renderer@4.1.2 + +## 3.3.7 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.1.1 + +## 3.3.6 + +### Patch Changes + +- Updated dependencies [[`52b2f253`](https://github.com/diegomura/react-pdf/commit/52b2f25349bee0c09399bc2e7e5e89db5e1433fd)]: + - @react-pdf/renderer@4.1.0 + +## 3.3.5 + +### Patch Changes + +- Updated dependencies [[`7add014c`](https://github.com/diegomura/react-pdf/commit/7add014c6bc9cff649dd1a56fc47214888613b6b)]: + - @react-pdf/renderer@4.0.2 + +## 3.3.4 + +### Patch Changes + +- Updated dependencies []: + - @react-pdf/renderer@4.0.1 + +## 3.3.3 + +### Patch Changes + +- Updated dependencies [[`afe4bcfe`](https://github.com/diegomura/react-pdf/commit/afe4bcfe6f4b991cf22341242fc27d169b758d47), [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119)]: + - @react-pdf/renderer@4.0.0 + +## 3.3.2 + +### Patch Changes + +- [#2747](https://github.com/diegomura/react-pdf/pull/2747) [`5af35ec`](https://github.com/diegomura/react-pdf/commit/5af35ec9743cc0d7bf75f5ca789627517ff35816) Thanks [@andrew-spare](https://github.com/andrew-spare)! - fix: font selection regression + +- Updated dependencies [[`ed94775`](https://github.com/diegomura/react-pdf/commit/ed94775f4d44db0886ff08c71d09f446bace6392)]: + - @react-pdf/renderer@3.4.5 + ## 3.3.1 ### Patch Changes diff --git a/packages/examples/README.md b/packages/examples/vite/README.md similarity index 100% rename from packages/examples/README.md rename to packages/examples/vite/README.md diff --git a/packages/examples/vite/package.json b/packages/examples/vite/package.json new file mode 100644 index 000000000..89c559861 --- /dev/null +++ b/packages/examples/vite/package.json @@ -0,0 +1,27 @@ +{ + "name": "@react-pdf/vite-example", + "version": "3.3.11", + "license": "MIT", + "private": true, + "author": "Diego Muracciole ", + "homepage": "https://github.com/diegomura/react-pdf#readme", + "repository": "git@github.com:diegomura/react-pdf.git", + "scripts": { + "dev": "vite ./src --open", + "build:site": "vite build ./src" + }, + "dependencies": { + "@react-pdf/renderer": "^4.1.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "devDependencies": { + "@vitejs/plugin-react": "^4.2.1", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.47", + "tailwindcss": "^3.4.12", + "vite": "^5.0.11" + } +} diff --git a/packages/examples/vite/postcss.config.js b/packages/examples/vite/postcss.config.js new file mode 100644 index 000000000..12a703d90 --- /dev/null +++ b/packages/examples/vite/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/packages/examples/public/Cairo-Regular.ttf b/packages/examples/vite/public/Cairo-Regular.ttf similarity index 100% rename from packages/examples/public/Cairo-Regular.ttf rename to packages/examples/vite/public/Cairo-Regular.ttf diff --git a/packages/examples/public/NotoSansArabic-Regular.ttf b/packages/examples/vite/public/NotoSansArabic-Regular.ttf similarity index 100% rename from packages/examples/public/NotoSansArabic-Regular.ttf rename to packages/examples/vite/public/NotoSansArabic-Regular.ttf diff --git a/packages/examples/public/Roboto-Black.ttf b/packages/examples/vite/public/Roboto-Black.ttf similarity index 100% rename from packages/examples/public/Roboto-Black.ttf rename to packages/examples/vite/public/Roboto-Black.ttf diff --git a/packages/examples/public/Roboto-BlackItalic.ttf b/packages/examples/vite/public/Roboto-BlackItalic.ttf similarity index 100% rename from packages/examples/public/Roboto-BlackItalic.ttf rename to packages/examples/vite/public/Roboto-BlackItalic.ttf diff --git a/packages/examples/public/Roboto-Bold.ttf b/packages/examples/vite/public/Roboto-Bold.ttf similarity index 100% rename from packages/examples/public/Roboto-Bold.ttf rename to packages/examples/vite/public/Roboto-Bold.ttf diff --git a/packages/examples/public/Roboto-BoldItalic.ttf b/packages/examples/vite/public/Roboto-BoldItalic.ttf similarity index 100% rename from packages/examples/public/Roboto-BoldItalic.ttf rename to packages/examples/vite/public/Roboto-BoldItalic.ttf diff --git a/packages/examples/public/Roboto-Italic.ttf b/packages/examples/vite/public/Roboto-Italic.ttf similarity index 100% rename from packages/examples/public/Roboto-Italic.ttf rename to packages/examples/vite/public/Roboto-Italic.ttf diff --git a/packages/examples/public/Roboto-Light.ttf b/packages/examples/vite/public/Roboto-Light.ttf similarity index 100% rename from packages/examples/public/Roboto-Light.ttf rename to packages/examples/vite/public/Roboto-Light.ttf diff --git a/packages/examples/public/Roboto-LightItalic.ttf b/packages/examples/vite/public/Roboto-LightItalic.ttf similarity index 100% rename from packages/examples/public/Roboto-LightItalic.ttf rename to packages/examples/vite/public/Roboto-LightItalic.ttf diff --git a/packages/examples/public/Roboto-Medium.ttf b/packages/examples/vite/public/Roboto-Medium.ttf similarity index 100% rename from packages/examples/public/Roboto-Medium.ttf rename to packages/examples/vite/public/Roboto-Medium.ttf diff --git a/packages/examples/public/Roboto-MediumItalic.ttf b/packages/examples/vite/public/Roboto-MediumItalic.ttf similarity index 100% rename from packages/examples/public/Roboto-MediumItalic.ttf rename to packages/examples/vite/public/Roboto-MediumItalic.ttf diff --git a/packages/examples/public/Roboto-Regular.ttf b/packages/examples/vite/public/Roboto-Regular.ttf similarity index 100% rename from packages/examples/public/Roboto-Regular.ttf rename to packages/examples/vite/public/Roboto-Regular.ttf diff --git a/packages/examples/public/Roboto-Thin.ttf b/packages/examples/vite/public/Roboto-Thin.ttf similarity index 100% rename from packages/examples/public/Roboto-Thin.ttf rename to packages/examples/vite/public/Roboto-Thin.ttf diff --git a/packages/examples/public/Roboto-ThinItalic.ttf b/packages/examples/vite/public/Roboto-ThinItalic.ttf similarity index 100% rename from packages/examples/public/Roboto-ThinItalic.ttf rename to packages/examples/vite/public/Roboto-ThinItalic.ttf diff --git a/packages/examples/public/Rubik-Regular.ttf b/packages/examples/vite/public/Rubik-Regular.ttf similarity index 100% rename from packages/examples/public/Rubik-Regular.ttf rename to packages/examples/vite/public/Rubik-Regular.ttf diff --git a/packages/examples/public/quijote1.jpg b/packages/examples/vite/public/quijote1.jpg similarity index 100% rename from packages/examples/public/quijote1.jpg rename to packages/examples/vite/public/quijote1.jpg diff --git a/packages/examples/public/quijote2.png b/packages/examples/vite/public/quijote2.png similarity index 100% rename from packages/examples/public/quijote2.png rename to packages/examples/vite/public/quijote2.png diff --git a/packages/examples/src/duplicatedImages/index.jsx b/packages/examples/vite/src/examples/duplicated-images/index.jsx similarity index 85% rename from packages/examples/src/duplicatedImages/index.jsx rename to packages/examples/vite/src/examples/duplicated-images/index.jsx index 473f7fdd1..cca510c5b 100644 --- a/packages/examples/src/duplicatedImages/index.jsx +++ b/packages/examples/vite/src/examples/duplicated-images/index.jsx @@ -4,7 +4,7 @@ import React from 'react'; import { Document, Page, Image, StyleSheet } from '@react-pdf/renderer'; -import Quijote1 from '../../public/quijote1.jpg'; +import Quijote1 from '../../../public/quijote1.jpg'; const styles = StyleSheet.create({ body: { @@ -52,7 +52,7 @@ const MyDoc = () => { ); }; -const App = () => { +const DuplicatedImages = () => { return ( @@ -60,4 +60,9 @@ const App = () => { ); }; -export default App; +export default { + id: 'duplicated-images', + name: 'Duplicated Images', + description: '', + Document: DuplicatedImages, +}; diff --git a/packages/examples/src/ellipsis/index.jsx b/packages/examples/vite/src/examples/ellipsis/index.jsx similarity index 81% rename from packages/examples/src/ellipsis/index.jsx rename to packages/examples/vite/src/examples/ellipsis/index.jsx index fc279f38a..4bdccc4cd 100644 --- a/packages/examples/src/ellipsis/index.jsx +++ b/packages/examples/vite/src/examples/ellipsis/index.jsx @@ -11,7 +11,7 @@ import { Font, } from '@react-pdf/renderer'; -import RobotoFont from '../../public/Roboto-Regular.ttf'; +import RobotoFont from '../../../public/Roboto-Regular.ttf'; const styles = StyleSheet.create({ body: { @@ -48,7 +48,7 @@ const MyDoc = () => { ); }; -const App = () => { +const Ellipsis = () => { return ( @@ -56,4 +56,9 @@ const App = () => { ); }; -export default App; +export default { + id: 'ellipsis', + name: 'Ellipsis', + description: '', + Document: Ellipsis, +}; diff --git a/packages/examples/src/emoji/index.jsx b/packages/examples/vite/src/examples/emoji/index.jsx similarity index 81% rename from packages/examples/src/emoji/index.jsx rename to packages/examples/vite/src/examples/emoji/index.jsx index f24c98ac7..9727fd000 100644 --- a/packages/examples/src/emoji/index.jsx +++ b/packages/examples/vite/src/examples/emoji/index.jsx @@ -23,8 +23,6 @@ const styles = StyleSheet.create({ Font.registerEmojiSource({ format: 'png', url: 'https://cdnjs.cloudflare.com/ajax/libs/twemoji/14.0.2/72x72/', - // url: 'https://cdn.jsdelivr.net/npm/emoji-datasource-apple@15.0.1/img/apple/64/', - // withVariationSelectors: true, }); const Emoji = () => ( @@ -37,4 +35,9 @@ const Emoji = () => ( ); -export default Emoji; +export default { + id: 'emoji', + name: 'Emoji', + description: '', + Document: Emoji, +}; diff --git a/packages/examples/src/fontFamilyFallback/index.jsx b/packages/examples/vite/src/examples/font-family-fallback/index.jsx similarity index 83% rename from packages/examples/src/fontFamilyFallback/index.jsx rename to packages/examples/vite/src/examples/font-family-fallback/index.jsx index ce38bddf7..a948a539c 100644 --- a/packages/examples/src/fontFamilyFallback/index.jsx +++ b/packages/examples/vite/src/examples/font-family-fallback/index.jsx @@ -4,11 +4,11 @@ import React from 'react'; import { Document, Page, Text, StyleSheet, Font } from '@react-pdf/renderer'; -import RobotoFont from '../../public/Roboto-Regular.ttf'; -import RobotoBoldFont from '../../public/Roboto-Bold.ttf'; -import RobotItalicFont from '../../public/Roboto-Italic.ttf'; +import RobotoFont from '../../../public/Roboto-Regular.ttf'; +import RobotoBoldFont from '../../../public/Roboto-Bold.ttf'; +import RobotItalicFont from '../../../public/Roboto-Italic.ttf'; -import NotoSansArabicFont from '../../public/NotoSansArabic-Regular.ttf'; +import NotoSansArabicFont from '../../../public/NotoSansArabic-Regular.ttf'; const styles = StyleSheet.create({ body: { @@ -96,7 +96,7 @@ const MyDoc = () => { ); }; -const App = () => { +const FontFamilyFallback = () => { return ( @@ -104,4 +104,9 @@ const App = () => { ); }; -export default App; +export default { + id: 'font-family-fallback', + name: 'Font Family Fallback', + description: '', + Document: FontFamilyFallback, +}; diff --git a/packages/examples/src/fontWeight/index.jsx b/packages/examples/vite/src/examples/font-weight/index.jsx similarity index 76% rename from packages/examples/src/fontWeight/index.jsx rename to packages/examples/vite/src/examples/font-weight/index.jsx index fd2c62379..40e7c1abf 100644 --- a/packages/examples/src/fontWeight/index.jsx +++ b/packages/examples/vite/src/examples/font-weight/index.jsx @@ -4,10 +4,10 @@ import React from 'react'; import { Document, Page, Text, StyleSheet, Font } from '@react-pdf/renderer'; -import RobotoFont from '../../public/Roboto-Regular.ttf'; -import RobotoFontMedium from '../../public/Roboto-Medium.ttf'; -import RobotoFontBold from '../../public/Roboto-Bold.ttf'; -import RobotoFontBlack from '../../public/Roboto-Black.ttf'; +import RobotoFont from '../../../public/Roboto-Regular.ttf'; +import RobotoFontMedium from '../../../public/Roboto-Medium.ttf'; +import RobotoFontBold from '../../../public/Roboto-Bold.ttf'; +import RobotoFontBlack from '../../../public/Roboto-Black.ttf'; const styles = StyleSheet.create({ body: { @@ -67,7 +67,7 @@ const MyDoc = () => { ); }; -const App = () => { +const FontWeight = () => { return ( @@ -75,4 +75,9 @@ const App = () => { ); }; -export default App; +export default { + id: 'font-weight', + name: 'Font Weight', + description: '', + Document: FontWeight, +}; diff --git a/packages/examples/src/fractals/Fractal.jsx b/packages/examples/vite/src/examples/fractals/Fractal.jsx similarity index 100% rename from packages/examples/src/fractals/Fractal.jsx rename to packages/examples/vite/src/examples/fractals/Fractal.jsx diff --git a/packages/examples/src/fractals/index.jsx b/packages/examples/vite/src/examples/fractals/index.jsx similarity index 79% rename from packages/examples/src/fractals/index.jsx rename to packages/examples/vite/src/examples/fractals/index.jsx index 9c295275a..814a70bdc 100644 --- a/packages/examples/src/fractals/index.jsx +++ b/packages/examples/vite/src/examples/fractals/index.jsx @@ -19,4 +19,9 @@ const Fractals = () => ( ); -export default Fractals; +export default { + id: 'fractals', + name: 'Fractals', + description: '', + Document: Fractals, +}; diff --git a/packages/examples/src/goTo/index.jsx b/packages/examples/vite/src/examples/go-to/index.jsx similarity index 72% rename from packages/examples/src/goTo/index.jsx rename to packages/examples/vite/src/examples/go-to/index.jsx index 755ab865b..96ea6feb4 100644 --- a/packages/examples/src/goTo/index.jsx +++ b/packages/examples/vite/src/examples/go-to/index.jsx @@ -4,7 +4,7 @@ import { Page, Document, Link, View, Image } from '@react-pdf/renderer'; const GoTo = () => ( - Link + Link to Image @@ -14,4 +14,9 @@ const GoTo = () => ( ); -export default GoTo; +export default { + id: 'go-to', + name: 'Go To', + description: '', + Document: GoTo, +}; diff --git a/packages/examples/vite/src/examples/image-stress-test/index.jsx b/packages/examples/vite/src/examples/image-stress-test/index.jsx new file mode 100644 index 000000000..d426d8be0 --- /dev/null +++ b/packages/examples/vite/src/examples/image-stress-test/index.jsx @@ -0,0 +1,110 @@ +import React from 'react'; +import { Document, Page, Image } from '@react-pdf/renderer'; + +const IMAGES = [ + 'https://images.unsplash.com/photo-1726557116827-5f2a95d57cab?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726669251120-46ff8c7ce9a3?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726706805887-0ac0e0d3a721?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726527612459-54b061d9c48d?q=80&w=3432&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726533815259-8fe320ac2493?q=80&w=3474&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726392660865-cbf2dc1459b6?q=80&w=3475&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726533862204-8110e6193fe9?q=80&w=3474&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726688205209-c80317c116d3?q=80&w=3493&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726486896376-4d1340e2f672?q=80&w=3474&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725727532120-8b2d88f47fe3?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726121678240-9126d5017990?q=80&w=3558&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726408093361-238693a8d51d?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1724279797190-8371a9939494?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726090102306-49df28adaf0f?q=80&w=3474&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1723877896976-8eb1cc6f07b1?q=80&w=2821&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725817901136-70a686d60386?q=80&w=3428&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726247419938-a8980d9fa429?q=80&w=3432&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726092707889-c4ef049d22df?q=80&w=3474&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726436877670-020a158bef47?q=80&w=3542&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725610588109-71d0def86e19?q=80&w=3500&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726182916337-38dca644bc65?q=80&w=3474&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725610588095-f117c0e2a921?q=80&w=3500&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726138400966-63461367804d?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726182886720-9bcfa08da27a?q=80&w=3474&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725714356329-f56f6054f169?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726182875049-a8283fed88da?w=800&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxleHBsb3JlLWZlZWR8MjU3fHx8ZW58MHx8fHx8', + 'https://images.unsplash.com/photo-1725882393508-6652bd21b22c?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726059968922-0396248fdaea?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725652800358-ae3a752cfb68?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726044781679-7c3f20a185ec?q=80&w=3329&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725715443838-1574b8eb1c3a?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725714835081-118a2b0456b2?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725961476494-efa87ae3106a?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725714834280-0c7584637d06?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1726041453467-5fa7dce0251d?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725733802754-c2a87bda47b2?q=80&w=3474&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725610588086-b9e38da987f7?q=80&w=3500&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725663656850-7bc515816fcd?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725900737080-54b5a571b38c?q=80&w=3474&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1709141425206-f5cdeab3e718?q=80&w=3301&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725922638181-3dbab8df0f95?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725864832531-f50f4639dd00?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725961475845-a656bc03c758?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1723662887372-b6f42b6ccd50?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725493280276-658ff7d29fd3?q=80&w=3542&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725832062946-2ec9aae5c4e2?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725638265979-4ff4b828ed5c?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725006705487-36dd870acb7a?q=80&w=3304&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725610588145-a508e5cfe90b?q=80&w=3500&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725610588149-adc351ad606d?q=80&w=3500&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725615357444-6123528686cf?q=80&w=3538&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1724589613596-e269be5c0849?q=80&w=3432&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725113114049-31121918636c?q=80&w=3432&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725565175662-3618048d8be2?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1723039914210-a6f13a6931af?q=80&w=3542&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725492114409-01a24b173dbe?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725133306731-fd82b613300f?q=80&w=3542&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725493280155-e8f61af1b65b?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1724582586529-62622e50c0b3?q=80&w=3328&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725493279974-ab7bc4e537c8?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725468697616-e35f25d5b0c4?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725449670931-b53a7cb689b9?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1724123301969-22859c2a3823?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1724437208913-3b82b15fc078?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1724699174715-ac3751fe8995?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725053864071-f37ebb5a9d22?q=80&w=3473&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725042893312-5ec0dea9e369?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725072730410-51ca1348c521?w=800&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxleHBsb3JlLWZlZWR8NjQ1fHx8ZW58MHx8fHx8', + 'https://images.unsplash.com/photo-1724525647096-116d4bacbd5f?q=80&w=3432&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1724596314963-c71d1e58204d?q=80&w=3328&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725113160838-9efa2a25aa0b?q=80&w=3432&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725267385461-cab515fc1bbe?w=800&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxleHBsb3JlLWZlZWR8NjY5fHx8ZW58MHx8fHx8', + 'https://images.unsplash.com/photo-1725067807346-7340abf76b0d?q=80&w=3536&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725181959662-af4acf689235?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1724591634731-5c6004fe6136?q=80&w=3542&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1724748860101-589aa7ee8b29?w=800&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxleHBsb3JlLWZlZWR8NjgyfHx8ZW58MHx8fHx8', + 'https://images.unsplash.com/photo-1724786594301-9a00b6ee8704?q=80&w=3295&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1724963475892-a3274091955e?q=80&w=3432&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725006709387-d820b307a1f2?q=80&w=3538&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1725014880788-9faccc7ca16e?w=800&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxleHBsb3JlLWZlZWR8NzIyfHx8ZW58MHx8fHx8', + 'https://images.unsplash.com/photo-1724908549265-06972c22ca37?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1724858103760-62648ebfa2a3?q=80&w=3130&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1724757090342-59922ed19e39?q=80&w=3300&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', + 'https://images.unsplash.com/photo-1724689545475-67ff5bc78fac?q=80&w=3360&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', +]; + +const ImageStressTest = () => ( + + + {IMAGES.map((src) => ( + + ))} + + +); + +export default { + id: 'image-steess-test', + name: 'Image Stress Test', + description: '', + Document: ImageStressTest, +}; diff --git a/packages/examples/vite/src/examples/index.js b/packages/examples/vite/src/examples/index.js new file mode 100644 index 000000000..676cdfcb0 --- /dev/null +++ b/packages/examples/vite/src/examples/index.js @@ -0,0 +1,45 @@ +import duplicatedImages from './duplicated-images'; +import ellipsis from './ellipsis'; +import emoji from './emoji'; +import fontFamilyFallback from './font-family-fallback'; +import fontWeight from './font-weight'; +import fractals from './fractals'; +import goTo from './go-to'; +import imageStressTest from './image-stress-test'; +import JpgOrientation from './jpg-orientation'; +import knobs from './knobs'; +import link from './link'; +import mediaQueries from './media-queries'; +import minPresenceAhead from './min-presence-ahead'; +import multilineText from './multiline-text'; +import objectFit from './object-fit'; +import pageWrap from './page-wrap'; +import resume from './resume'; +import svg from './svg'; +import svgTransform from './svg-transform'; +import transformOrigin from './transform-origin'; + +const EXAMPLES = [ + duplicatedImages, + ellipsis, + emoji, + fontFamilyFallback, + fontWeight, + fractals, + goTo, + JpgOrientation, + knobs, + link, + mediaQueries, + minPresenceAhead, + multilineText, + objectFit, + pageWrap, + resume, + svg, + svgTransform, + transformOrigin, + imageStressTest, +]; + +export default EXAMPLES; diff --git a/packages/examples/src/jpgOrientation/images/orientation-1.jpeg b/packages/examples/vite/src/examples/jpg-orientation/images/orientation-1.jpeg similarity index 100% rename from packages/examples/src/jpgOrientation/images/orientation-1.jpeg rename to packages/examples/vite/src/examples/jpg-orientation/images/orientation-1.jpeg diff --git a/packages/examples/src/jpgOrientation/images/orientation-2.jpeg b/packages/examples/vite/src/examples/jpg-orientation/images/orientation-2.jpeg similarity index 100% rename from packages/examples/src/jpgOrientation/images/orientation-2.jpeg rename to packages/examples/vite/src/examples/jpg-orientation/images/orientation-2.jpeg diff --git a/packages/examples/src/jpgOrientation/images/orientation-3.jpeg b/packages/examples/vite/src/examples/jpg-orientation/images/orientation-3.jpeg similarity index 100% rename from packages/examples/src/jpgOrientation/images/orientation-3.jpeg rename to packages/examples/vite/src/examples/jpg-orientation/images/orientation-3.jpeg diff --git a/packages/examples/src/jpgOrientation/images/orientation-4.jpeg b/packages/examples/vite/src/examples/jpg-orientation/images/orientation-4.jpeg similarity index 100% rename from packages/examples/src/jpgOrientation/images/orientation-4.jpeg rename to packages/examples/vite/src/examples/jpg-orientation/images/orientation-4.jpeg diff --git a/packages/examples/src/jpgOrientation/images/orientation-5.jpeg b/packages/examples/vite/src/examples/jpg-orientation/images/orientation-5.jpeg similarity index 100% rename from packages/examples/src/jpgOrientation/images/orientation-5.jpeg rename to packages/examples/vite/src/examples/jpg-orientation/images/orientation-5.jpeg diff --git a/packages/examples/src/jpgOrientation/images/orientation-6.jpeg b/packages/examples/vite/src/examples/jpg-orientation/images/orientation-6.jpeg similarity index 100% rename from packages/examples/src/jpgOrientation/images/orientation-6.jpeg rename to packages/examples/vite/src/examples/jpg-orientation/images/orientation-6.jpeg diff --git a/packages/examples/src/jpgOrientation/images/orientation-7.jpeg b/packages/examples/vite/src/examples/jpg-orientation/images/orientation-7.jpeg similarity index 100% rename from packages/examples/src/jpgOrientation/images/orientation-7.jpeg rename to packages/examples/vite/src/examples/jpg-orientation/images/orientation-7.jpeg diff --git a/packages/examples/src/jpgOrientation/images/orientation-8.jpeg b/packages/examples/vite/src/examples/jpg-orientation/images/orientation-8.jpeg similarity index 100% rename from packages/examples/src/jpgOrientation/images/orientation-8.jpeg rename to packages/examples/vite/src/examples/jpg-orientation/images/orientation-8.jpeg diff --git a/packages/examples/src/jpgOrientation/index.jsx b/packages/examples/vite/src/examples/jpg-orientation/index.jsx similarity index 89% rename from packages/examples/src/jpgOrientation/index.jsx rename to packages/examples/vite/src/examples/jpg-orientation/index.jsx index 0748c87dd..aa3ae294e 100644 --- a/packages/examples/src/jpgOrientation/index.jsx +++ b/packages/examples/vite/src/examples/jpg-orientation/index.jsx @@ -10,7 +10,7 @@ import Orientation6 from './images/orientation-6.jpeg'; import Orientation7 from './images/orientation-7.jpeg'; import Orientation8 from './images/orientation-8.jpeg'; -const Emoji = () => ( +const JpgOrientation = () => ( @@ -27,4 +27,9 @@ const Emoji = () => ( ); -export default Emoji; +export default { + id: 'jpg-orientation', + name: 'Jpg Orientation', + description: '', + Document: JpgOrientation, +}; diff --git a/packages/examples/src/knobs/index.jsx b/packages/examples/vite/src/examples/knobs/index.jsx similarity index 94% rename from packages/examples/src/knobs/index.jsx rename to packages/examples/vite/src/examples/knobs/index.jsx index e9e8120fb..ac1275684 100644 --- a/packages/examples/src/knobs/index.jsx +++ b/packages/examples/vite/src/examples/knobs/index.jsx @@ -72,4 +72,9 @@ const Knobs = () => ( ); -export default Knobs; +export default { + id: 'knobs', + name: 'Knobs', + description: '', + Document: Knobs, +}; diff --git a/packages/examples/src/link/index.jsx b/packages/examples/vite/src/examples/link/index.jsx similarity index 87% rename from packages/examples/src/link/index.jsx rename to packages/examples/vite/src/examples/link/index.jsx index 30eb52346..918ee4818 100644 --- a/packages/examples/src/link/index.jsx +++ b/packages/examples/vite/src/examples/link/index.jsx @@ -24,4 +24,9 @@ const LinkExample = () => ( ); -export default LinkExample; +export default { + id: 'link', + name: 'Link', + description: '', + Document: LinkExample, +}; diff --git a/packages/examples/src/mediaQueries/index.jsx b/packages/examples/vite/src/examples/media-queries/index.jsx similarity index 85% rename from packages/examples/src/mediaQueries/index.jsx rename to packages/examples/vite/src/examples/media-queries/index.jsx index 4a99ec6ee..9a7caad03 100644 --- a/packages/examples/src/mediaQueries/index.jsx +++ b/packages/examples/vite/src/examples/media-queries/index.jsx @@ -28,7 +28,7 @@ const MediaComponent = () => ( ); -const mediaQueries = () => ( +const MediaQueries = () => ( @@ -39,4 +39,9 @@ const mediaQueries = () => ( ); -export default mediaQueries; +export default { + id: 'media-queries', + name: 'Media Queries', + description: '', + Document: MediaQueries, +}; diff --git a/packages/examples/src/minPresenceAhead/index.jsx b/packages/examples/vite/src/examples/min-presence-ahead/index.jsx similarity index 87% rename from packages/examples/src/minPresenceAhead/index.jsx rename to packages/examples/vite/src/examples/min-presence-ahead/index.jsx index 24776e7be..36981bba4 100644 --- a/packages/examples/src/minPresenceAhead/index.jsx +++ b/packages/examples/vite/src/examples/min-presence-ahead/index.jsx @@ -43,4 +43,9 @@ const MinPresenceAhead = () => ( ); -export default MinPresenceAhead; +export default { + id: 'min-presence-ahead', + name: 'Min Presence Ahead', + description: '', + Document: MinPresenceAhead, +}; diff --git a/packages/examples/src/multilineText/index.jsx b/packages/examples/vite/src/examples/multiline-text/index.jsx similarity index 73% rename from packages/examples/src/multilineText/index.jsx rename to packages/examples/vite/src/examples/multiline-text/index.jsx index 0d7267879..782abd27c 100644 --- a/packages/examples/src/multilineText/index.jsx +++ b/packages/examples/vite/src/examples/multiline-text/index.jsx @@ -11,17 +11,17 @@ const styles = StyleSheet.create({ }, }); -const Doc = () => ( +const MultilineText = () => ( - + Single line text with{' '} inline text highlighted Again Black Text - + Nested Text with{' '} inline text highlighted in a long, long, long, long, long, long long @@ -31,4 +31,9 @@ const Doc = () => ( ); -export default Doc; +export default { + id: 'multiline-text', + name: 'Multiline Text', + description: '', + Document: MultilineText, +}; diff --git a/packages/examples/src/objectFit/index.jsx b/packages/examples/vite/src/examples/object-fit/index.jsx similarity index 90% rename from packages/examples/src/objectFit/index.jsx rename to packages/examples/vite/src/examples/object-fit/index.jsx index dbf4de92d..6a8a6c6b4 100644 --- a/packages/examples/src/objectFit/index.jsx +++ b/packages/examples/vite/src/examples/object-fit/index.jsx @@ -24,7 +24,7 @@ const styles = StyleSheet.create({ }, }); -const Quixote = () => ( +const ObjectFit = () => ( @@ -52,4 +52,9 @@ const Quixote = () => ( ); -export default Quixote; +export default { + id: 'object-fit', + name: 'Object Fit', + description: '', + Document: ObjectFit, +}; diff --git a/packages/examples/src/pageWrap/index.jsx b/packages/examples/vite/src/examples/page-wrap/index.jsx similarity index 98% rename from packages/examples/src/pageWrap/index.jsx rename to packages/examples/vite/src/examples/page-wrap/index.jsx index a9cafd370..aa8715a13 100644 --- a/packages/examples/src/pageWrap/index.jsx +++ b/packages/examples/vite/src/examples/page-wrap/index.jsx @@ -8,8 +8,8 @@ import { StyleSheet, } from '@react-pdf/renderer'; -import Quijote1 from '../../public/quijote1.jpg'; -import Quijote2 from '../../public/quijote2.png'; +import Quijote1 from '../../../public/quijote1.jpg'; +import Quijote2 from '../../../public/quijote2.png'; Font.register({ family: 'Oswald', @@ -64,7 +64,7 @@ const styles = StyleSheet.create({ }, }); -const Quixote = () => ( +const PageWrap = () => ( @@ -241,4 +241,9 @@ const Quixote = () => ( ); -export default Quixote; +export default { + id: 'page-wrap', + name: 'Page Wrap', + description: '', + Document: PageWrap, +}; diff --git a/packages/examples/src/resume/Education.jsx b/packages/examples/vite/src/examples/resume/Education.jsx similarity index 100% rename from packages/examples/src/resume/Education.jsx rename to packages/examples/vite/src/examples/resume/Education.jsx diff --git a/packages/examples/src/resume/Experience.jsx b/packages/examples/vite/src/examples/resume/Experience.jsx similarity index 100% rename from packages/examples/src/resume/Experience.jsx rename to packages/examples/vite/src/examples/resume/Experience.jsx diff --git a/packages/examples/src/resume/Header.jsx b/packages/examples/vite/src/examples/resume/Header.jsx similarity index 100% rename from packages/examples/src/resume/Header.jsx rename to packages/examples/vite/src/examples/resume/Header.jsx diff --git a/packages/examples/src/resume/List.jsx b/packages/examples/vite/src/examples/resume/List.jsx similarity index 100% rename from packages/examples/src/resume/List.jsx rename to packages/examples/vite/src/examples/resume/List.jsx diff --git a/packages/examples/src/resume/Skills.jsx b/packages/examples/vite/src/examples/resume/Skills.jsx similarity index 100% rename from packages/examples/src/resume/Skills.jsx rename to packages/examples/vite/src/examples/resume/Skills.jsx diff --git a/packages/examples/src/resume/Title.jsx b/packages/examples/vite/src/examples/resume/Title.jsx similarity index 100% rename from packages/examples/src/resume/Title.jsx rename to packages/examples/vite/src/examples/resume/Title.jsx diff --git a/packages/examples/src/resume/index.jsx b/packages/examples/vite/src/examples/resume/index.jsx similarity index 83% rename from packages/examples/src/resume/index.jsx rename to packages/examples/vite/src/examples/resume/index.jsx index 54614e43a..f5a66c29c 100644 --- a/packages/examples/src/resume/index.jsx +++ b/packages/examples/vite/src/examples/resume/index.jsx @@ -76,15 +76,15 @@ Font.register({ src: `https://fonts.gstatic.com/s/lato/v16/S6u9w4BMUTPHh6UVSwiPHA.ttf`, }); +const IMAGE_SRC = + 'https://i.guim.co.uk/img/media/a23aeb1f7ff20bb80f68852da17743b0e557f8ed/0_224_3504_2102/master/3504.jpg?width=1200&height=1200&quality=85&auto=format&fit=crop&s=9e9a99e479ee60270b69ede4d869b20f'; + const Resume = (props) => (
- + @@ -94,7 +94,7 @@ const Resume = (props) => ( ); -const App = () => ( +const ResumeDocument = () => ( ( ); -export default App; +export default { + id: 'resume', + name: 'Resume', + description: '', + Document: ResumeDocument, +}; diff --git a/packages/examples/vite/src/examples/svg-transform/index.jsx b/packages/examples/vite/src/examples/svg-transform/index.jsx new file mode 100644 index 000000000..ed7c60258 --- /dev/null +++ b/packages/examples/vite/src/examples/svg-transform/index.jsx @@ -0,0 +1,37 @@ +/* eslint-disable react/no-array-index-key */ + +import React from 'react'; +import { Document, Page, Svg, G, Rect } from '@react-pdf/renderer'; + +const COLORS = ['red', 'green', 'blue', 'yellow', 'purple']; + +const randBetween = (min, max) => + Math.floor(Math.random() * (max - min + 1) + min); + +const SvgTransform = () => { + return ( + + + + {Array.from({ length: 200 }).map((_, i) => ( + + + + ))} + + + + ); +}; + +export default { + id: 'svg-transform', + name: 'Svg Transform', + description: '', + Document: SvgTransform, +}; diff --git a/packages/examples/src/svg/Heart.jsx b/packages/examples/vite/src/examples/svg/Heart.jsx similarity index 100% rename from packages/examples/src/svg/Heart.jsx rename to packages/examples/vite/src/examples/svg/Heart.jsx diff --git a/packages/examples/src/svg/Star.jsx b/packages/examples/vite/src/examples/svg/Star.jsx similarity index 100% rename from packages/examples/src/svg/Star.jsx rename to packages/examples/vite/src/examples/svg/Star.jsx diff --git a/packages/examples/src/svg/Svg1.jsx b/packages/examples/vite/src/examples/svg/Svg1.jsx similarity index 100% rename from packages/examples/src/svg/Svg1.jsx rename to packages/examples/vite/src/examples/svg/Svg1.jsx diff --git a/packages/examples/src/svg/Svg2.jsx b/packages/examples/vite/src/examples/svg/Svg2.jsx similarity index 100% rename from packages/examples/src/svg/Svg2.jsx rename to packages/examples/vite/src/examples/svg/Svg2.jsx diff --git a/packages/examples/src/svg/Svg4.jsx b/packages/examples/vite/src/examples/svg/Svg4.jsx similarity index 100% rename from packages/examples/src/svg/Svg4.jsx rename to packages/examples/vite/src/examples/svg/Svg4.jsx diff --git a/packages/examples/src/svg/index.jsx b/packages/examples/vite/src/examples/svg/index.jsx similarity index 73% rename from packages/examples/src/svg/index.jsx rename to packages/examples/vite/src/examples/svg/index.jsx index 3ca899955..cd32ca075 100644 --- a/packages/examples/src/svg/index.jsx +++ b/packages/examples/vite/src/examples/svg/index.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import ReactPDF, { Document, Page, StyleSheet } from '@react-pdf/renderer'; +import { Document, Page, StyleSheet } from '@react-pdf/renderer'; import Svg0 from './svg'; import Svg1 from './Svg1'; @@ -8,9 +8,6 @@ import Svg4 from './Svg4'; import Star from './Star'; import Heart from './Heart'; -console.log(`React version: ${React.version}`); -console.log(`React-pdf version: ${ReactPDF.version}`); - const styles = StyleSheet.create({ page: { fontSize: 20, @@ -34,4 +31,9 @@ const App = () => { ); }; -export default App; +export default { + id: 'svg', + name: 'Svg', + description: '', + Document: App, +}; diff --git a/packages/examples/src/svg/svg.jsx b/packages/examples/vite/src/examples/svg/svg.jsx similarity index 100% rename from packages/examples/src/svg/svg.jsx rename to packages/examples/vite/src/examples/svg/svg.jsx diff --git a/packages/examples/src/transformOrigin/index.jsx b/packages/examples/vite/src/examples/transform-origin/index.jsx similarity index 89% rename from packages/examples/src/transformOrigin/index.jsx rename to packages/examples/vite/src/examples/transform-origin/index.jsx index 6b3c00217..c95a5cf0c 100644 --- a/packages/examples/src/transformOrigin/index.jsx +++ b/packages/examples/vite/src/examples/transform-origin/index.jsx @@ -13,7 +13,7 @@ const Box = ({ origin }) => ( /> ); -const App = () => { +const TransformOrigin = () => { return ( @@ -48,4 +48,9 @@ const App = () => { ); }; -export default App; +export default { + id: 'transform-origin', + name: 'Transform Origin', + description: '', + Document: TransformOrigin, +}; diff --git a/packages/examples/vite/src/index.css b/packages/examples/vite/src/index.css new file mode 100644 index 000000000..b5c61c956 --- /dev/null +++ b/packages/examples/vite/src/index.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/packages/examples/src/index.html b/packages/examples/vite/src/index.html similarity index 100% rename from packages/examples/src/index.html rename to packages/examples/vite/src/index.html diff --git a/packages/examples/vite/src/index.jsx b/packages/examples/vite/src/index.jsx new file mode 100644 index 000000000..32e897ab2 --- /dev/null +++ b/packages/examples/vite/src/index.jsx @@ -0,0 +1,59 @@ +import './index.css'; + +import React, { useEffect, useState } from 'react'; +import { createRoot } from 'react-dom/client'; +import { PDFViewer } from '@react-pdf/renderer'; + +import EXAMPLES from './examples'; + +const ExamplesPage = () => { + const [hash, setHash] = useState( + window.location.hash.substring(1) || 'page-wrap', + ); + + const index = EXAMPLES.findIndex((example) => example.id === hash); + + useEffect(() => { + const listener = (event) => + setHash(event.target.location.hash.substring(1)); + + window.addEventListener('popstate', listener); + + return () => window.removeEventListener('popstate', listener); + }); + + const { Document } = EXAMPLES[index]; + + return ( +
+ + +
+ + + +
+
+ ); +}; + +const MOUNT_ELEMENT = document.createElement('div'); + +document.body.appendChild(MOUNT_ELEMENT); + +const root = createRoot(MOUNT_ELEMENT); + +root.render(); diff --git a/packages/examples/vite/tailwind.config.js b/packages/examples/vite/tailwind.config.js new file mode 100644 index 000000000..45dafc411 --- /dev/null +++ b/packages/examples/vite/tailwind.config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ['./src/index.html', './src/**/*.{js,ts,jsx,tsx}'], + theme: { + extend: {}, + }, + plugins: [], +}; diff --git a/packages/examples/vite.config.js b/packages/examples/vite/vite.config.js similarity index 100% rename from packages/examples/vite.config.js rename to packages/examples/vite/vite.config.js diff --git a/packages/fns/CHANGELOG.md b/packages/fns/CHANGELOG.md index e190c7331..c03c6e85c 100644 --- a/packages/fns/CHANGELOG.md +++ b/packages/fns/CHANGELOG.md @@ -1,5 +1,11 @@ # @react-pdf/fns +## 3.0.0 + +### Major Changes + +- [#2871](https://github.com/diegomura/react-pdf/pull/2871) [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119) Thanks [@diegomura](https://github.com/diegomura)! - feat!: drop cjs support + ## 2.2.1 ### Patch Changes diff --git a/packages/fns/package.json b/packages/fns/package.json index 2b733ec7e..b2e8ce4f4 100644 --- a/packages/fns/package.json +++ b/packages/fns/package.json @@ -1,20 +1,12 @@ { "name": "@react-pdf/fns", - "version": "2.2.1", + "version": "3.0.0", "license": "MIT", "description": "React-pdf helper functions", "author": "Diego Muracciole ", "homepage": "https://github.com/diegomura/react-pdf#readme", "type": "module", - "main": "./lib/index.cjs", - "module": "./lib/index.js", - "exports": { - ".": { - "import": "./lib/index.js", - "require": "./lib/index.cjs", - "default": "./lib/index.js" - } - }, + "main": "./lib/index.js", "repository": { "type": "git", "url": "https://github.com/diegomura/react-pdf.git", diff --git a/packages/fns/rollup.config.js b/packages/fns/rollup.config.js index d1188600d..7382d5861 100644 --- a/packages/fns/rollup.config.js +++ b/packages/fns/rollup.config.js @@ -1,20 +1,9 @@ import babel from '@rollup/plugin-babel'; -const cjs = { - exports: 'named', - format: 'cjs', - interop: 'compat', -}; - -const esm = { - format: 'es', -}; - -const getCJS = (override) => Object.assign({}, cjs, override); -const getESM = (override) => Object.assign({}, esm, override); - const input = 'src/index.js'; +const output = { format: 'es', file: 'lib/index.js' }; + const getExternal = () => [/@babel\/runtime/]; const getPlugins = () => [ @@ -27,7 +16,7 @@ const getPlugins = () => [ const config = { input, - output: [getESM({ file: 'lib/index.js' }), getCJS({ file: 'lib/index.cjs' })], + output, external: getExternal(), plugins: getPlugins(), }; diff --git a/packages/font/CHANGELOG.md b/packages/font/CHANGELOG.md index 0a082edf2..cd33a70cb 100644 --- a/packages/font/CHANGELOG.md +++ b/packages/font/CHANGELOG.md @@ -1,5 +1,29 @@ # @react-pdf/font +## 3.0.1 + +### Patch Changes + +- [#2947](https://github.com/diegomura/react-pdf/pull/2947) [`ed562b9b`](https://github.com/diegomura/react-pdf/commit/ed562b9b7f14bc76a1cd83aaaf1dab966bd7540b) Thanks [@diegomura](https://github.com/diegomura)! - feat: remove cross-fetch + +## 3.0.0 + +### Major Changes + +- [#2871](https://github.com/diegomura/react-pdf/pull/2871) [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119) Thanks [@diegomura](https://github.com/diegomura)! - feat!: drop cjs support + +### Patch Changes + +- Updated dependencies [[`46c3047d`](https://github.com/diegomura/react-pdf/commit/46c3047de56ae82f062b72c4910a4e6096eee99f), [`55973278`](https://github.com/diegomura/react-pdf/commit/55973278ac8bc8f703b63844f57d6f155ae8d86f)]: + - @react-pdf/types@2.7.0 + +## 2.5.2 + +### Patch Changes + +- Updated dependencies [[`8e6a832`](https://github.com/diegomura/react-pdf/commit/8e6a8320f86354aff950c296a96bc41a33e9dab2), [`4bafab8`](https://github.com/diegomura/react-pdf/commit/4bafab8455c9003759f48bad20a720baf4ed189b)]: + - @react-pdf/types@2.6.0 + ## 2.5.1 ### Patch Changes diff --git a/packages/font/package.json b/packages/font/package.json index a07acdb0d..8539873b7 100644 --- a/packages/font/package.json +++ b/packages/font/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/font", - "version": "2.5.1", + "version": "3.0.1", "license": "MIT", "description": "Register font and emoji source for react-pdf document", "author": "Diego Muracciole ", @@ -11,18 +11,9 @@ "directory": "packages/font" }, "type": "module", - "main": "./lib/index.cjs", - "module": "./lib/index.js", + "main": "./lib/index.js", "browser": { - "./lib/index.js": "./lib/index.browser.js", - "./lib/index.cjs": "./lib/index.browser.cjs" - }, - "exports": { - ".": { - "import": "./lib/index.js", - "require": "./lib/index.cjs", - "default": "./lib/index.js" - } + "./lib/index.js": "./lib/index.browser.js" }, "scripts": { "test": "vitest", @@ -31,8 +22,7 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/types": "^2.5.0", - "cross-fetch": "^3.1.5", + "@react-pdf/types": "^2.7.0", "fontkit": "^2.0.2", "is-url": "^1.2.4" }, diff --git a/packages/font/rollup.config.js b/packages/font/rollup.config.js index 8383cd4a8..c77d10821 100644 --- a/packages/font/rollup.config.js +++ b/packages/font/rollup.config.js @@ -2,19 +2,6 @@ import babel from '@rollup/plugin-babel'; import replace from '@rollup/plugin-replace'; import pkg from './package.json' assert { type: 'json' }; -const cjs = { - exports: 'named', - format: 'cjs', - interop: 'compat', -}; - -const esm = { - format: 'es', -}; - -const getCJS = (override) => Object.assign({}, cjs, override); -const getESM = (override) => Object.assign({}, esm, override); - const babelConfig = () => ({ babelrc: true, exclude: 'node_modules/**', @@ -35,17 +22,14 @@ const getPlugins = ({ browser }) => [ const serverConfig = { input: './src/index.js', - output: [getESM({ file: 'lib/index.js' }), getCJS({ file: 'lib/index.cjs' })], + output: { format: 'es', file: 'lib/index.js' }, external, plugins: getPlugins({ browser: false }), }; const browserConfig = { input: './src/index.js', - output: [ - getESM({ file: 'lib/index.browser.js' }), - getCJS({ file: 'lib/index.browser.cjs' }), - ], + output: { format: 'es', file: 'lib/index.browser.js' }, external, plugins: getPlugins({ browser: true }), }; diff --git a/packages/font/setupTests.js b/packages/font/setupTests.js index b4dfeb127..3a27ad75f 100644 --- a/packages/font/setupTests.js +++ b/packages/font/setupTests.js @@ -8,5 +8,3 @@ const fetchMocker = createFetchMock(vi); fetchMocker.enableMocks(); global.BROWSER = false; - -vi.mock('cross-fetch', () => ({ default: global.fetch })); diff --git a/packages/font/src/font.js b/packages/font/src/font.js index 8b998206f..0714afd17 100644 --- a/packages/font/src/font.js +++ b/packages/font/src/font.js @@ -1,7 +1,6 @@ /* eslint-disable max-classes-per-file */ import isUrl from 'is-url'; -import fetch from 'cross-fetch'; import * as fontkit from 'fontkit'; const FONT_WEIGHTS = { diff --git a/packages/image/CHANGELOG.md b/packages/image/CHANGELOG.md index 768826309..f19cec3cc 100644 --- a/packages/image/CHANGELOG.md +++ b/packages/image/CHANGELOG.md @@ -1,5 +1,24 @@ # @react-pdf/image +## 3.0.1 + +### Patch Changes + +- [#2947](https://github.com/diegomura/react-pdf/pull/2947) [`ed562b9b`](https://github.com/diegomura/react-pdf/commit/ed562b9b7f14bc76a1cd83aaaf1dab966bd7540b) Thanks [@diegomura](https://github.com/diegomura)! - feat: remove cross-fetch + +## 3.0.0 + +### Major Changes + +- [#2871](https://github.com/diegomura/react-pdf/pull/2871) [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119) Thanks [@diegomura](https://github.com/diegomura)! - feat!: drop cjs support + +### Patch Changes + +- [#2877](https://github.com/diegomura/react-pdf/pull/2877) [`fdcef566`](https://github.com/diegomura/react-pdf/commit/fdcef5666e4eeed542b625d394cdfe60d6346600) Thanks [@Friendseeker](https://github.com/Friendseeker)! - chore: bump jay-peg + +- Updated dependencies [[`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119)]: + - @react-pdf/png-js@3.0.0 + ## 2.3.6 ### Patch Changes diff --git a/packages/image/package.json b/packages/image/package.json index da50039fc..22542d04d 100644 --- a/packages/image/package.json +++ b/packages/image/package.json @@ -1,24 +1,15 @@ { "name": "@react-pdf/image", - "version": "2.3.6", + "version": "3.0.1", "license": "MIT", "description": "Parses the images in png or jpeg format for react-pdf document", "author": "Diego Muracciole ", "homepage": "https://github.com/diegomura/react-pdf#readme", "type": "module", - "main": "./lib/index.cjs", - "module": "./lib/index.js", + "main": "./lib/index.js", "browser": { - "./lib/index.cjs": "./lib/index.browser.cjs", "./lib/index.js": "./lib/index.browser.js" }, - "exports": { - ".": { - "import": "./lib/index.js", - "require": "./lib/index.cjs", - "default": "./lib/index.js" - } - }, "repository": { "type": "git", "url": "https://github.com/diegomura/react-pdf.git", @@ -31,9 +22,8 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/png-js": "^2.3.1", - "cross-fetch": "^3.1.5", - "jay-peg": "^1.0.2" + "@react-pdf/png-js": "^3.0.0", + "jay-peg": "^1.1.1" }, "files": [ "lib" diff --git a/packages/image/rollup.config.js b/packages/image/rollup.config.js index 878073a54..2822f026f 100644 --- a/packages/image/rollup.config.js +++ b/packages/image/rollup.config.js @@ -5,19 +5,6 @@ import nodePolyfills from 'rollup-plugin-polyfill-node'; import pkg from './package.json' assert { type: 'json' }; -const cjs = { - exports: 'named', - format: 'cjs', - interop: 'compat', -}; - -const esm = { - format: 'es', -}; - -const getCJS = (override) => Object.assign({}, cjs, override); -const getESM = (override) => Object.assign({}, esm, override); - const input = './src/index.js'; const babelConfig = () => ({ @@ -50,17 +37,14 @@ const getPlugins = ({ browser }) => [ const serverConfig = { input, - output: [getESM({ file: 'lib/index.js' }), getCJS({ file: 'lib/index.cjs' })], + output: { format: 'es', file: 'lib/index.js' }, external: getExternal({ browser: false }), plugins: getPlugins({ browser: false }), }; const browserConfig = { input, - output: [ - getESM({ file: 'lib/index.browser.js' }), - getCJS({ file: 'lib/index.browser.cjs' }), - ], + output: { format: 'es', file: 'lib/index.browser.js' }, external: getExternal({ browser: true }), plugins: getPlugins({ browser: true }), }; diff --git a/packages/image/src/resolve.js b/packages/image/src/resolve.js index c5d272ff0..167b9badf 100644 --- a/packages/image/src/resolve.js +++ b/packages/image/src/resolve.js @@ -1,7 +1,6 @@ import fs from 'fs'; import url from 'url'; import path from 'path'; -import fetch from 'cross-fetch'; import PNG from './png'; import JPEG from './jpeg'; diff --git a/packages/image/vitest.setup.js b/packages/image/vitest.setup.js index bd58b0f73..e4f801de7 100644 --- a/packages/image/vitest.setup.js +++ b/packages/image/vitest.setup.js @@ -6,5 +6,3 @@ const fetchMocker = createFetchMock(vi); fetchMocker.enableMocks(); global.BROWSER = false; - -vi.mock('cross-fetch', () => ({ default: global.fetch })); diff --git a/packages/layout/CHANGELOG.md b/packages/layout/CHANGELOG.md index eeb758754..9337f9a58 100644 --- a/packages/layout/CHANGELOG.md +++ b/packages/layout/CHANGELOG.md @@ -1,5 +1,91 @@ # @react-pdf/layout +## 4.1.3 + +### Patch Changes + +- Updated dependencies [[`00bfdc1e`](https://github.com/diegomura/react-pdf/commit/00bfdc1e5a6c673d2de7b3ab09d5020e932562fb)]: + - @react-pdf/textkit@5.0.1 + +## 4.1.2 + +### Patch Changes + +- [#2955](https://github.com/diegomura/react-pdf/pull/2955) [`425f1183`](https://github.com/diegomura/react-pdf/commit/425f1183bba9a83fd5712a1371abb6cea2ed8fca) Thanks [@diegomura](https://github.com/diegomura)! - feat: support rem units + +- [#2952](https://github.com/diegomura/react-pdf/pull/2952) [`2c3c887e`](https://github.com/diegomura/react-pdf/commit/2c3c887ea2d3aed2863f49bff375d08feaf975aa) Thanks [@diegomura](https://github.com/diegomura)! - feat: support multiple line-height units + +- Updated dependencies [[`425f1183`](https://github.com/diegomura/react-pdf/commit/425f1183bba9a83fd5712a1371abb6cea2ed8fca), [`2c3c887e`](https://github.com/diegomura/react-pdf/commit/2c3c887ea2d3aed2863f49bff375d08feaf975aa)]: + - @react-pdf/stylesheet@5.1.0 + +## 4.1.1 + +### Patch Changes + +- [#2947](https://github.com/diegomura/react-pdf/pull/2947) [`ed562b9b`](https://github.com/diegomura/react-pdf/commit/ed562b9b7f14bc76a1cd83aaaf1dab966bd7540b) Thanks [@diegomura](https://github.com/diegomura)! - feat: remove cross-fetch + +- Updated dependencies [[`ed562b9b`](https://github.com/diegomura/react-pdf/commit/ed562b9b7f14bc76a1cd83aaaf1dab966bd7540b), [`77e480cd`](https://github.com/diegomura/react-pdf/commit/77e480cdd161270ac07453525dfaf993e2d3f17f)]: + - @react-pdf/image@3.0.1 + - @react-pdf/stylesheet@5.0.1 + +## 4.1.0 + +### Minor Changes + +- [#2736](https://github.com/diegomura/react-pdf/pull/2736) [`b242e59a`](https://github.com/diegomura/react-pdf/commit/b242e59a14a856e280c9fcbad81f707248819721) Thanks [@siketyan](https://github.com/siketyan)! - Use monochrome emojis contained in the font family if no emoji source available + +## 4.0.1 + +### Patch Changes + +- [#2878](https://github.com/diegomura/react-pdf/pull/2878) [`58f9a047`](https://github.com/diegomura/react-pdf/commit/58f9a04740ed1331ef1dfa9999fb43c0ee10fa5b) Thanks [@jmezzacappa](https://github.com/jmezzacappa)! - Prevent Yoga init from running more than once + +## 4.0.0 + +### Major Changes + +- [#2711](https://github.com/diegomura/react-pdf/pull/2711) [`42570321`](https://github.com/diegomura/react-pdf/commit/42570321af54bf331ca81f09a102664cd9f7c46a) Thanks [@wojtekmaj](https://github.com/wojtekmaj)! - Update Yoga to 3.0 + +- [#2871](https://github.com/diegomura/react-pdf/pull/2871) [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119) Thanks [@diegomura](https://github.com/diegomura)! - feat!: drop cjs support + +### Minor Changes + +- [#2876](https://github.com/diegomura/react-pdf/pull/2876) [`afe4bcfe`](https://github.com/diegomura/react-pdf/commit/afe4bcfe6f4b991cf22341242fc27d169b758d47) Thanks [@diegomura](https://github.com/diegomura)! - feat: add gap percentage support + +- [#2875](https://github.com/diegomura/react-pdf/pull/2875) [`46c3047d`](https://github.com/diegomura/react-pdf/commit/46c3047de56ae82f062b72c4910a4e6096eee99f) Thanks [@diegomura](https://github.com/diegomura)! - feat: add position: static support + +- [#2874](https://github.com/diegomura/react-pdf/pull/2874) [`55973278`](https://github.com/diegomura/react-pdf/commit/55973278ac8bc8f703b63844f57d6f155ae8d86f) Thanks [@diegomura](https://github.com/diegomura)! - feat: add align-content: space-evenly support + +### Patch Changes + +- Updated dependencies [[`fdcef566`](https://github.com/diegomura/react-pdf/commit/fdcef5666e4eeed542b625d394cdfe60d6346600), [`46c3047d`](https://github.com/diegomura/react-pdf/commit/46c3047de56ae82f062b72c4910a4e6096eee99f), [`55973278`](https://github.com/diegomura/react-pdf/commit/55973278ac8bc8f703b63844f57d6f155ae8d86f), [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119)]: + - @react-pdf/pdfkit@4.0.0 + - @react-pdf/image@3.0.0 + - @react-pdf/types@2.7.0 + - @react-pdf/primitives@4.0.0 + - @react-pdf/stylesheet@5.0.0 + - @react-pdf/textkit@5.0.0 + - @react-pdf/fns@3.0.0 + +## 3.13.0 + +### Minor Changes + +- [#2771](https://github.com/diegomura/react-pdf/pull/2771) [`8e6a832`](https://github.com/diegomura/react-pdf/commit/8e6a8320f86354aff950c296a96bc41a33e9dab2) Thanks [@nikischin](https://github.com/nikischin)! - fix: fix dpi + +### Patch Changes + +- [#2864](https://github.com/diegomura/react-pdf/pull/2864) [`e425ca4`](https://github.com/diegomura/react-pdf/commit/e425ca4add7eb353b6282a40fd1020aad0da36c4) Thanks [@nnaku](https://github.com/nnaku)! - Prevent loading yoga-layout wasm binaries more than once + +- [#2822](https://github.com/diegomura/react-pdf/pull/2822) [`e42a79a`](https://github.com/diegomura/react-pdf/commit/e42a79a3857932a4ebc89feb6e4d2c891280d633) Thanks [@mantljosh](https://github.com/mantljosh)! - fix: prevent infinite loop while splitting pages + +- [#2747](https://github.com/diegomura/react-pdf/pull/2747) [`5af35ec`](https://github.com/diegomura/react-pdf/commit/5af35ec9743cc0d7bf75f5ca789627517ff35816) Thanks [@andrew-spare](https://github.com/andrew-spare)! - fix: font selection regression + +- Updated dependencies [[`8e6a832`](https://github.com/diegomura/react-pdf/commit/8e6a8320f86354aff950c296a96bc41a33e9dab2), [`4bafab8`](https://github.com/diegomura/react-pdf/commit/4bafab8455c9003759f48bad20a720baf4ed189b)]: + - @react-pdf/pdfkit@3.2.0 + - @react-pdf/stylesheet@4.3.0 + - @react-pdf/types@2.6.0 + ## 3.12.1 ### Patch Changes diff --git a/packages/layout/package.json b/packages/layout/package.json index 05f76b27f..25fb1f6d9 100644 --- a/packages/layout/package.json +++ b/packages/layout/package.json @@ -1,20 +1,12 @@ { "name": "@react-pdf/layout", - "version": "3.12.1", + "version": "4.1.3", "license": "MIT", "description": "Resolve overall document component's layout", "author": "Diego Muracciole ", "homepage": "https://github.com/diegomura/react-pdf#readme", "type": "module", - "main": "./lib/index.cjs", - "module": "./lib/index.js", - "exports": { - ".": { - "import": "./lib/index.js", - "require": "./lib/index.cjs", - "default": "./lib/index.js" - } - }, + "main": "./lib/index.js", "repository": { "type": "git", "url": "https://github.com/diegomura/react-pdf.git", @@ -27,17 +19,16 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/fns": "2.2.1", - "@react-pdf/image": "^2.3.6", - "@react-pdf/pdfkit": "^3.1.10", - "@react-pdf/primitives": "^3.1.1", - "@react-pdf/stylesheet": "^4.2.5", - "@react-pdf/textkit": "^4.4.1", - "@react-pdf/types": "^2.5.0", - "cross-fetch": "^3.1.5", + "@react-pdf/fns": "3.0.0", + "@react-pdf/image": "^3.0.1", + "@react-pdf/pdfkit": "^4.0.0", + "@react-pdf/primitives": "^4.0.0", + "@react-pdf/stylesheet": "^5.1.0", + "@react-pdf/textkit": "^5.0.1", + "@react-pdf/types": "^2.7.0", "emoji-regex": "^10.3.0", "queue": "^6.0.1", - "yoga-layout": "^2.0.1" + "yoga-layout": "^3.1.0" }, "files": [ "lib" diff --git a/packages/layout/rollup.config.js b/packages/layout/rollup.config.js index 849ee121b..9f1ba6640 100644 --- a/packages/layout/rollup.config.js +++ b/packages/layout/rollup.config.js @@ -2,21 +2,9 @@ import babel from '@rollup/plugin-babel'; import pkg from './package.json' assert { type: 'json' }; -const cjs = { - exports: 'named', - format: 'cjs', - interop: 'compat', -}; - -const esm = { - format: 'es', -}; - -const getCJS = (override) => Object.assign({}, cjs, override); -const getESM = (override) => Object.assign({}, esm, override); - -const configBase = { +const config = { input: 'src/index.js', + output: { format: 'es', file: 'lib/index.js' }, external: Object.keys(pkg.dependencies).concat( /@babel\/runtime/, /@react-pdf/, @@ -30,8 +18,4 @@ const configBase = { ], }; -const config = Object.assign({}, configBase, { - output: [getESM({ file: 'lib/index.js' }), getCJS({ file: 'lib/index.cjs' })], -}); - export default config; diff --git a/packages/layout/setupTests.js b/packages/layout/setupTests.js index b4dfeb127..3a27ad75f 100644 --- a/packages/layout/setupTests.js +++ b/packages/layout/setupTests.js @@ -8,5 +8,3 @@ const fetchMocker = createFetchMock(vi); fetchMocker.enableMocks(); global.BROWSER = false; - -vi.mock('cross-fetch', () => ({ default: global.fetch })); diff --git a/packages/layout/src/image/measureImage.js b/packages/layout/src/image/measureImage.js index 3ebf99662..9d7dff004 100644 --- a/packages/layout/src/image/measureImage.js +++ b/packages/layout/src/image/measureImage.js @@ -1,4 +1,4 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import getRatio from './getRatio'; import getMargin from '../node/getMargin'; diff --git a/packages/layout/src/node/getBorderWidth.js b/packages/layout/src/node/getBorderWidth.js index a31e38946..b261bfe4e 100644 --- a/packages/layout/src/node/getBorderWidth.js +++ b/packages/layout/src/node/getBorderWidth.js @@ -1,4 +1,4 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; const getComputedBorder = (yogaNode, edge) => yogaNode ? yogaNode.getComputedBorder(edge) : 0; diff --git a/packages/layout/src/node/getMargin.js b/packages/layout/src/node/getMargin.js index d664acef5..d55109e8e 100644 --- a/packages/layout/src/node/getMargin.js +++ b/packages/layout/src/node/getMargin.js @@ -1,4 +1,4 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; const getComputedMargin = (node, edge) => { const { yogaNode } = node; diff --git a/packages/layout/src/node/getPadding.js b/packages/layout/src/node/getPadding.js index f9f732a84..09217580e 100644 --- a/packages/layout/src/node/getPadding.js +++ b/packages/layout/src/node/getPadding.js @@ -1,4 +1,4 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; const getComputedPadding = (node, edge) => { const { yogaNode } = node; diff --git a/packages/layout/src/node/setAlign.js b/packages/layout/src/node/setAlign.js index 6b3deecd6..4b5a5639f 100644 --- a/packages/layout/src/node/setAlign.js +++ b/packages/layout/src/node/setAlign.js @@ -1,4 +1,4 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import { upperFirst } from '@react-pdf/fns'; const ALIGN = { @@ -9,6 +9,7 @@ const ALIGN = { baseline: Yoga.Align.Baseline, 'space-between': Yoga.Align.SpaceBetween, 'space-around': Yoga.Align.SpaceAround, + 'space-evenly': Yoga.Align.SpaceEvenly, }; /** diff --git a/packages/layout/src/node/setBorderWidth.js b/packages/layout/src/node/setBorderWidth.js index a3691a499..78d806ae9 100644 --- a/packages/layout/src/node/setBorderWidth.js +++ b/packages/layout/src/node/setBorderWidth.js @@ -1,4 +1,4 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setYogaValue from './setYogaValue'; diff --git a/packages/layout/src/node/setDisplay.js b/packages/layout/src/node/setDisplay.js index 9d4973d9c..0d4b7c824 100644 --- a/packages/layout/src/node/setDisplay.js +++ b/packages/layout/src/node/setDisplay.js @@ -1,4 +1,4 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; /** * @typedef {Function} NodeInstanceWrapper diff --git a/packages/layout/src/node/setFlexDirection.js b/packages/layout/src/node/setFlexDirection.js index 8ec137a3e..ea5295533 100644 --- a/packages/layout/src/node/setFlexDirection.js +++ b/packages/layout/src/node/setFlexDirection.js @@ -1,4 +1,4 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; const FLEX_DIRECTIONS = { row: Yoga.FlexDirection.Row, diff --git a/packages/layout/src/node/setFlexWrap.js b/packages/layout/src/node/setFlexWrap.js index 787666409..9c5e12d2b 100644 --- a/packages/layout/src/node/setFlexWrap.js +++ b/packages/layout/src/node/setFlexWrap.js @@ -1,4 +1,4 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; const FLEX_WRAP = { wrap: Yoga.Wrap.Wrap, diff --git a/packages/layout/src/node/setGap.js b/packages/layout/src/node/setGap.js index 021333c8b..ddb5396b1 100644 --- a/packages/layout/src/node/setGap.js +++ b/packages/layout/src/node/setGap.js @@ -1,5 +1,5 @@ -import * as Yoga from 'yoga-layout'; -import { isNil, matchPercent } from '@react-pdf/fns'; +import * as Yoga from 'yoga-layout/load'; +import { isNil } from '@react-pdf/fns'; /** * @typedef {Function} NodeInstanceWrapper @@ -7,21 +7,6 @@ import { isNil, matchPercent } from '@react-pdf/fns'; * @returns {Object} node instance */ -/** - * Check if value is a percentage and throw error if so - * - * @param {string} attr property - * @param {unknown} value - * @returns {void} - */ -const checkPercents = (attr, value) => { - const percent = matchPercent(value); - - if (percent) { - throw new Error(`You can't pass percentage values to ${attr} property`); - } -}; - /** * Set rowGap value to node's Yoga instance * @@ -32,7 +17,6 @@ export const setRowGap = (value) => (node) => { const { yogaNode } = node; if (!isNil(value) && yogaNode) { - checkPercents('rowGap', value); yogaNode.setGap(Yoga.Gutter.Row, value); } @@ -49,7 +33,6 @@ export const setColumnGap = (value) => (node) => { const { yogaNode } = node; if (!isNil(value) && yogaNode) { - checkPercents('columnGap', value); yogaNode.setGap(Yoga.Gutter.Column, value); } diff --git a/packages/layout/src/node/setJustifyContent.js b/packages/layout/src/node/setJustifyContent.js index a1638f65f..b09524f7b 100644 --- a/packages/layout/src/node/setJustifyContent.js +++ b/packages/layout/src/node/setJustifyContent.js @@ -1,4 +1,4 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import { isNil } from '@react-pdf/fns'; const JUSTIFY_CONTENT = { diff --git a/packages/layout/src/node/setMargin.js b/packages/layout/src/node/setMargin.js index 77ee525c2..90eace89c 100644 --- a/packages/layout/src/node/setMargin.js +++ b/packages/layout/src/node/setMargin.js @@ -1,4 +1,4 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setYogaValue from './setYogaValue'; diff --git a/packages/layout/src/node/setOverflow.js b/packages/layout/src/node/setOverflow.js index 1f2263d83..3dc9a0a08 100644 --- a/packages/layout/src/node/setOverflow.js +++ b/packages/layout/src/node/setOverflow.js @@ -1,4 +1,4 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import { isNil } from '@react-pdf/fns'; const OVERFLOW = { diff --git a/packages/layout/src/node/setPadding.js b/packages/layout/src/node/setPadding.js index 6979beb77..9382597cf 100644 --- a/packages/layout/src/node/setPadding.js +++ b/packages/layout/src/node/setPadding.js @@ -1,4 +1,4 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setYogaValue from './setYogaValue'; diff --git a/packages/layout/src/node/setPosition.js b/packages/layout/src/node/setPosition.js index ce5dce518..10d26b961 100644 --- a/packages/layout/src/node/setPosition.js +++ b/packages/layout/src/node/setPosition.js @@ -1,4 +1,4 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setYogaValue from './setYogaValue'; diff --git a/packages/layout/src/node/setPositionType.js b/packages/layout/src/node/setPositionType.js index e41f99a8a..705910be0 100644 --- a/packages/layout/src/node/setPositionType.js +++ b/packages/layout/src/node/setPositionType.js @@ -1,6 +1,12 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import { isNil } from '@react-pdf/fns'; +const POSITION = { + absolute: Yoga.PositionType.Absolute, + relative: Yoga.PositionType.Relative, + static: Yoga.PositionType.Static, +}; + /** * @typedef {Function} NodeInstanceWrapper * @param {Object} node node instance @@ -17,11 +23,7 @@ const setPositionType = (value) => (node) => { const { yogaNode } = node; if (!isNil(value) && yogaNode) { - yogaNode.setPositionType( - value === 'absolute' - ? Yoga.PositionType.Absolute - : Yoga.PositionType.Relative, - ); + yogaNode.setPositionType(POSITION[value]); } return node; diff --git a/packages/layout/src/page/getSize.js b/packages/layout/src/page/getSize.js index 4fe676a2d..f78533009 100644 --- a/packages/layout/src/page/getSize.js +++ b/packages/layout/src/page/getSize.js @@ -1,5 +1,6 @@ import isLandscape from './isLandscape'; +// Page sizes for 72dpi. 72dpi is used internally by pdfkit. const PAGE_SIZES = { '4A0': [4767.87, 6740.79], '2A0': [3370.39, 4767.87], @@ -54,11 +55,58 @@ const PAGE_SIZES = { ID1: [153, 243], }; +/** + * Parses scalar value in value and unit pairs + * + * @param {string} value scalar value + * @returns {Object} parsed value + */ +const parseValue = (value) => { + const match = /^(-?\d*\.?\d+)(in|mm|cm|pt|px)?$/g.exec(value); + + return match + ? { value: parseFloat(match[1]), unit: match[2] || 'pt' } + : { value, unit: undefined }; +}; + +/** + * Transform given scalar value to 72dpi equivalent of size + * + * @param {string} value styles value + * @param {number} inputDpi user defined dpi + * @returns {Object} transformed value + */ +const transformUnit = (value, inputDpi) => { + const scalar = parseValue(value); + + const outputDpi = 72; + const mmFactor = (1 / 25.4) * outputDpi; + const cmFactor = (1 / 2.54) * outputDpi; + + switch (scalar.unit) { + case 'in': + return scalar.value * outputDpi; + case 'mm': + return scalar.value * mmFactor; + case 'cm': + return scalar.value * cmFactor; + case 'px': + return Math.round(scalar.value * (outputDpi / inputDpi)); + default: + return scalar.value; + } +}; + +const transformUnits = ({ width, height }, dpi) => ({ + width: transformUnit(width, dpi), + height: transformUnit(height, dpi), +}); + /** * Transforms array into size object * - * @param {number[]} v array - * @returns {{ width: number, height: number }} size object with width and height + * @param {number[] | string[]} v array + * @returns {{ width: number | string, height: number | string }} size object with width and height */ const toSizeObject = (v) => ({ width: v[0], height: v[1] }); @@ -70,18 +118,6 @@ const toSizeObject = (v) => ({ width: v[0], height: v[1] }); */ const flipSizeObject = (v) => ({ width: v.height, height: v.width }); -/** - * Adjust page size to passed DPI - * - * @param {{ width: number, height: number }} v size object - * @param {number} dpi DPI - * @returns {{ width: number, height: number }} adjusted size object - */ -const adjustDpi = (v, dpi) => ({ - width: v.width ? v.width * (72 / dpi) : v.width, - height: v.height ? v.height * (72 / dpi) : v.height, -}); - /** * Returns size object from a given string * @@ -95,10 +131,10 @@ const getStringSize = (v) => { /** * Returns size object from a single number * - * @param {number} n page size number - * @returns {{ width: number, height: number }} size object with width and height + * @param {number|string} n page size number + * @returns {{ width: number|string, height: number|string }} size object with width and height */ -const getNumberSize = (n) => toSizeObject([n]); +const getNumberSize = (n) => toSizeObject([n, n]); /** * Return page size in an object { width, height } @@ -116,18 +152,14 @@ const getSize = (page) => { * @type {{ width: number, height: number }} */ let size; - if (type === 'string') { size = getStringSize(value); } else if (Array.isArray(value)) { - size = toSizeObject(value); - size = adjustDpi(size, dpi); + size = transformUnits(toSizeObject(value), dpi); } else if (type === 'number') { - size = getNumberSize(value); - size = adjustDpi(size, dpi); + size = transformUnits(getNumberSize(value), dpi); } else { - size = value; - size = adjustDpi(size, dpi); + size = transformUnits(value, dpi); } return isLandscape(page) ? flipSizeObject(size) : size; diff --git a/packages/layout/src/steps/resolvePagination.js b/packages/layout/src/steps/resolvePagination.js index 98d6f3135..02b1db19e 100644 --- a/packages/layout/src/steps/resolvePagination.js +++ b/packages/layout/src/steps/resolvePagination.js @@ -100,13 +100,19 @@ const splitNodes = (height, contentArea, nodes) => { // All children are moved to the next page, it doesn't make sense to show the parent on the current page if (child.children.length > 0 && currentChild.children.length === 0) { - const box = Object.assign({}, child.box, { - top: child.box.top - height, - }); - const next = Object.assign({}, child, { box }); - - currentChildren.push(...futureFixedNodes); - nextChildren.push(next, ...futureNodes); + // But if the current page is empty then we can just include the parent on the current page + if (currentChildren.length === 0) { + currentChildren.push(child, ...futureFixedNodes); + nextChildren.push(...futureNodes); + } else { + const box = Object.assign({}, child.box, { + top: child.box.top - height, + }); + const next = Object.assign({}, child, { box }); + + currentChildren.push(...futureFixedNodes); + nextChildren.push(next, ...futureNodes); + } break; } diff --git a/packages/layout/src/steps/resolveStyles.js b/packages/layout/src/steps/resolveStyles.js index b94637432..6d72a0666 100644 --- a/packages/layout/src/steps/resolveStyles.js +++ b/packages/layout/src/steps/resolveStyles.js @@ -56,11 +56,12 @@ const resolveNodeStyles = (container) => (node) => { * @returns {Object} document page with resolved styles */ export const resolvePageStyles = (page) => { - const dpi = 72; // Removed: page.props?.dpi || 72; + const dpi = page.props?.dpi || 72; const width = page.box?.width || page.style.width; const height = page.box?.height || page.style.height; const orientation = page.props?.orientation || 'portrait'; - const container = { width, height, orientation, dpi }; + const remBase = page.style?.fontSize || 18; + const container = { width, height, orientation, dpi, remBase }; return resolveNodeStyles(container)(page); }; diff --git a/packages/layout/src/svg/layoutText.js b/packages/layout/src/svg/layoutText.js index e29347561..f93d75b57 100644 --- a/packages/layout/src/svg/layoutText.js +++ b/packages/layout/src/svg/layoutText.js @@ -45,10 +45,16 @@ const getFragments = (fontStore, instance) => { const _textDecoration = instance.props.textDecoration; - const obj = fontStore - ? fontStore.getFont({ fontFamily, fontWeight, fontStyle }) - : null; - const font = obj ? obj.data : fontFamily; + const fontFamilies = + typeof fontFamily === 'string' ? [fontFamily] : [...(fontFamily || [])]; + + const font = fontFamilies.map((fontFamilyName) => { + if (typeof fontFamilyName !== 'string') return fontFamilyName; + + const opts = { fontFamily: fontFamilyName, fontWeight, fontStyle }; + const obj = fontStore ? fontStore.getFont(opts) : null; + return obj ? obj.data : fontFamilyName; + }); const attributes = { font, diff --git a/packages/layout/src/svg/measureSvg.js b/packages/layout/src/svg/measureSvg.js index 0c2098ac0..65de8c0a1 100644 --- a/packages/layout/src/svg/measureSvg.js +++ b/packages/layout/src/svg/measureSvg.js @@ -1,4 +1,4 @@ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; const getAspectRatio = (viewbox) => { if (!viewbox) return null; diff --git a/packages/layout/src/text/emoji.js b/packages/layout/src/text/emoji.js index 5f5d77eb4..e3f5bed4f 100644 --- a/packages/layout/src/text/emoji.js +++ b/packages/layout/src/text/emoji.js @@ -69,8 +69,6 @@ export const fetchEmojis = (string, source) => { return promises; }; -const specialCases = ['©️', '®', '™']; // Do not treat these as emojis if emoji not present - export const embedEmojis = (fragments) => { const result = []; @@ -82,8 +80,6 @@ export const embedEmojis = (fragments) => { Array.from(fragment.string.matchAll(regex)).forEach((match) => { const { index } = match; const emoji = match[0]; - const isSpecialCase = specialCases.includes(emoji); - const emojiSize = fragment.attributes.fontSize; const chunk = fragment.string.slice(lastIndex, index + match[0].length); @@ -102,12 +98,10 @@ export const embedEmojis = (fragments) => { }, }, }); - } else if (isSpecialCase) { - result.push({ string: chunk, attributes: fragment.attributes }); } else { - // If no emoji data, we just replace the emoji with a nodef char + // If no emoji data, we try to use emojis in the font result.push({ - string: chunk.replace(match, String.fromCharCode(0)), + string: chunk, attributes: fragment.attributes, }); } diff --git a/packages/layout/src/text/getAttributedString.js b/packages/layout/src/text/getAttributedString.js index 74cbc326f..917daf7d7 100644 --- a/packages/layout/src/text/getAttributedString.js +++ b/packages/layout/src/text/getAttributedString.js @@ -63,6 +63,7 @@ const getFragments = (fontStore, instance, parentLink, level = 0) => { color, opacity, fontSize, + lineHeight, direction, verticalAlign, backgroundColor, @@ -81,7 +82,6 @@ const getFragments = (fontStore, instance, parentLink, level = 0) => { strikeColor: textDecorationColor || color, underlineColor: textDecorationColor || color, link: parentLink || instance.props?.src || instance.props?.href, - lineHeight: lineHeight ? lineHeight * fontSize : null, align: textAlign || (direction === 'rtl' ? 'right' : 'left'), }; diff --git a/packages/layout/src/text/measureText.js b/packages/layout/src/text/measureText.js index 94733e78b..b36af2ec1 100644 --- a/packages/layout/src/text/measureText.js +++ b/packages/layout/src/text/measureText.js @@ -1,6 +1,6 @@ /* eslint-disable no-param-reassign */ -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import layoutText from './layoutText'; import linesWidth from './linesWidth'; diff --git a/packages/layout/src/yoga/index.js b/packages/layout/src/yoga/index.js index 6cea83b69..ab8463b6a 100644 --- a/packages/layout/src/yoga/index.js +++ b/packages/layout/src/yoga/index.js @@ -1,9 +1,14 @@ /* eslint-disable import/prefer-default-export */ -import * as Yoga from 'yoga-layout'; +import { loadYoga as yogaLoadYoga } from 'yoga-layout/load'; + +let instancePromise; export const loadYoga = async () => { - const instance = await Yoga.loadYoga(); + // Yoga WASM binaries must be asynchronously compiled and loaded + // to prevent Event emitter memory leak warnings, Yoga must be loaded only once + const instance = await (instancePromise ??= yogaLoadYoga()); + const config = instance.Config.create(); config.setPointScaleFactor(0); diff --git a/packages/layout/tests/node/getBorderWidth.test.js b/packages/layout/tests/node/getBorderWidth.test.js index de618f3af..f877b4812 100644 --- a/packages/layout/tests/node/getBorderWidth.test.js +++ b/packages/layout/tests/node/getBorderWidth.test.js @@ -1,6 +1,6 @@ import { describe, expect, test } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import getBorderWidth from '../../src/node/getBorderWidth'; diff --git a/packages/layout/tests/node/getMargin.test.js b/packages/layout/tests/node/getMargin.test.js index d22c51aef..7a4f4d206 100644 --- a/packages/layout/tests/node/getMargin.test.js +++ b/packages/layout/tests/node/getMargin.test.js @@ -1,6 +1,6 @@ import { describe, expect, test } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import getMargin from '../../src/node/getMargin'; diff --git a/packages/layout/tests/node/getPadding.test.js b/packages/layout/tests/node/getPadding.test.js index a3fc4efcc..4b99c2c2c 100644 --- a/packages/layout/tests/node/getPadding.test.js +++ b/packages/layout/tests/node/getPadding.test.js @@ -1,6 +1,6 @@ import { describe, expect, test } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import getPadding from '../../src/node/getPadding'; diff --git a/packages/layout/tests/node/setAlignContent.test.js b/packages/layout/tests/node/setAlignContent.test.js index 88f551f27..e66afe4a5 100644 --- a/packages/layout/tests/node/setAlignContent.test.js +++ b/packages/layout/tests/node/setAlignContent.test.js @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setAlignContent from '../../src/node/setAlignContent'; @@ -82,4 +82,12 @@ describe('node setAlignContent', () => { expect(mock.mock.calls[0][0]).toBe(Yoga.Align.SpaceAround); expect(result).toBe(node); }); + + test('Should set space-evenly', () => { + const result = setAlignContent('space-evenly')(node); + + expect(mock.mock.calls).toHaveLength(1); + expect(mock.mock.calls[0][0]).toBe(Yoga.Align.SpaceEvenly); + expect(result).toBe(node); + }); }); diff --git a/packages/layout/tests/node/setAlignItems.test.js b/packages/layout/tests/node/setAlignItems.test.js index 774330c6b..dd094b711 100644 --- a/packages/layout/tests/node/setAlignItems.test.js +++ b/packages/layout/tests/node/setAlignItems.test.js @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setAlignItems from '../../src/node/setAlignItems'; diff --git a/packages/layout/tests/node/setAlignSelf.test.js b/packages/layout/tests/node/setAlignSelf.test.js index a6aa90370..d01bd0fa4 100644 --- a/packages/layout/tests/node/setAlignSelf.test.js +++ b/packages/layout/tests/node/setAlignSelf.test.js @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setAlignSelf from '../../src/node/setAlignSelf'; diff --git a/packages/layout/tests/node/setBorderWidth.test.js b/packages/layout/tests/node/setBorderWidth.test.js index 1fefe2e11..6a350258e 100644 --- a/packages/layout/tests/node/setBorderWidth.test.js +++ b/packages/layout/tests/node/setBorderWidth.test.js @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setBorder, { setBorderTop, diff --git a/packages/layout/tests/node/setDisplay.test.js b/packages/layout/tests/node/setDisplay.test.js index 809a6edfb..d53b5abf9 100644 --- a/packages/layout/tests/node/setDisplay.test.js +++ b/packages/layout/tests/node/setDisplay.test.js @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setDisplay from '../../src/node/setDisplay'; diff --git a/packages/layout/tests/node/setFlexDirection.test.js b/packages/layout/tests/node/setFlexDirection.test.js index e6b84ecd6..0a5917942 100644 --- a/packages/layout/tests/node/setFlexDirection.test.js +++ b/packages/layout/tests/node/setFlexDirection.test.js @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setFlexDirection from '../../src/node/setFlexDirection'; diff --git a/packages/layout/tests/node/setFlexWrap.test.js b/packages/layout/tests/node/setFlexWrap.test.js index c8d298ef4..56a285df6 100644 --- a/packages/layout/tests/node/setFlexWrap.test.js +++ b/packages/layout/tests/node/setFlexWrap.test.js @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setFlexWrap from '../../src/node/setFlexWrap'; diff --git a/packages/layout/tests/node/setJustifyContent.test.js b/packages/layout/tests/node/setJustifyContent.test.js index 489152c78..e517b12e8 100644 --- a/packages/layout/tests/node/setJustifyContent.test.js +++ b/packages/layout/tests/node/setJustifyContent.test.js @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setJustifyContent from '../../src/node/setJustifyContent'; diff --git a/packages/layout/tests/node/setMargin.test.js b/packages/layout/tests/node/setMargin.test.js index 4f5c492b1..488227ece 100644 --- a/packages/layout/tests/node/setMargin.test.js +++ b/packages/layout/tests/node/setMargin.test.js @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setMargin, { setMarginTop, diff --git a/packages/layout/tests/node/setOverflow.test.js b/packages/layout/tests/node/setOverflow.test.js index fed121431..7ff0e8a7f 100644 --- a/packages/layout/tests/node/setOverflow.test.js +++ b/packages/layout/tests/node/setOverflow.test.js @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setOverflow from '../../src/node/setOverflow'; diff --git a/packages/layout/tests/node/setPadding.test.js b/packages/layout/tests/node/setPadding.test.js index 67345f1aa..3d836f826 100644 --- a/packages/layout/tests/node/setPadding.test.js +++ b/packages/layout/tests/node/setPadding.test.js @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setPadding, { setPaddingTop, diff --git a/packages/layout/tests/node/setPosition.test.js b/packages/layout/tests/node/setPosition.test.js index 57fe1e1c8..4e54e9fd2 100644 --- a/packages/layout/tests/node/setPosition.test.js +++ b/packages/layout/tests/node/setPosition.test.js @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setPosition, { setPositionTop, diff --git a/packages/layout/tests/node/setPositionType.test.js b/packages/layout/tests/node/setPositionType.test.js index 135fa0088..528793d4b 100644 --- a/packages/layout/tests/node/setPositionType.test.js +++ b/packages/layout/tests/node/setPositionType.test.js @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; -import * as Yoga from 'yoga-layout'; +import * as Yoga from 'yoga-layout/load'; import setPositionType from '../../src/node/setPositionType'; @@ -34,4 +34,12 @@ describe('node setPositionType', () => { expect(mock.mock.calls[0][0]).toBe(Yoga.PositionType.Absolute); expect(result).toBe(node); }); + + test('Should set static', () => { + const result = setPositionType('static')(node); + + expect(mock.mock.calls).toHaveLength(1); + expect(mock.mock.calls[0][0]).toBe(Yoga.PositionType.Static); + expect(result).toBe(node); + }); }); diff --git a/packages/layout/tests/steps/resolvePagination.test.js b/packages/layout/tests/steps/resolvePagination.test.js index f84ba7215..a71d077e1 100644 --- a/packages/layout/tests/steps/resolvePagination.test.js +++ b/packages/layout/tests/steps/resolvePagination.test.js @@ -249,4 +249,44 @@ describe('pagination step', () => { expect(page2.children.length).toBe(1); expect(page2.children[0].box.height).toBe(40); }); + + test('should not infinitely loop when splitting pages', async () => { + const yoga = await loadYoga(); + + const root = { + type: 'DOCUMENT', + yoga, + children: [ + { + type: 'PAGE', + box: {}, + style: { + height: 400, + }, + children: [ + { + type: 'VIEW', + box: {}, + style: { height: 401 }, + children: [ + { + type: 'VIEW', + box: {}, + style: { + height: 400, + }, + props: { wrap: false, break: true }, + }, + ], + }, + ], + }, + ], + }; + + calcLayout(root); + + // If calcLayout returns then we did not hit an infinite loop + expect(true).toBe(true); + }); }); diff --git a/packages/layout/yoga.js b/packages/layout/yoga.js deleted file mode 100644 index 04ec637a4..000000000 --- a/packages/layout/yoga.js +++ /dev/null @@ -1,7 +0,0 @@ -import yogaModule from 'yoga-layout/sync'; - -// yoga-layout sets default export using non-standard __esModule property, so we need to -// make an additional check in case it's used in a bundler that does not support it. -const Yoga = 'default' in yogaModule ? yogaModule.default : yogaModule; - -export default Yoga; diff --git a/packages/pdfkit/CHANGELOG.md b/packages/pdfkit/CHANGELOG.md index b68b1c0a5..383cc66fb 100644 --- a/packages/pdfkit/CHANGELOG.md +++ b/packages/pdfkit/CHANGELOG.md @@ -1,5 +1,24 @@ # @react-pdf/pdfkit +## 4.0.0 + +### Major Changes + +- [#2871](https://github.com/diegomura/react-pdf/pull/2871) [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119) Thanks [@diegomura](https://github.com/diegomura)! - feat!: drop cjs support + +### Patch Changes + +- [#2877](https://github.com/diegomura/react-pdf/pull/2877) [`fdcef566`](https://github.com/diegomura/react-pdf/commit/fdcef5666e4eeed542b625d394cdfe60d6346600) Thanks [@Friendseeker](https://github.com/Friendseeker)! - chore: bump jay-peg + +- Updated dependencies [[`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119)]: + - @react-pdf/png-js@3.0.0 + +## 3.2.0 + +### Minor Changes + +- [#2771](https://github.com/diegomura/react-pdf/pull/2771) [`8e6a832`](https://github.com/diegomura/react-pdf/commit/8e6a8320f86354aff950c296a96bc41a33e9dab2) Thanks [@nikischin](https://github.com/nikischin)! - fix: fix dpi + ## 3.1.10 ### Patch Changes diff --git a/packages/pdfkit/package.json b/packages/pdfkit/package.json index abf1678d5..e91b7c1ac 100644 --- a/packages/pdfkit/package.json +++ b/packages/pdfkit/package.json @@ -1,21 +1,12 @@ { "name": "@react-pdf/pdfkit", - "version": "3.1.10", + "version": "4.0.0", "license": "MIT", "description": "A PDF generation library for Node.js", "type": "module", - "main": "./lib/pdfkit.cjs", - "module": "./lib/pdfkit.js", + "main": "./lib/pdfkit.js", "browser": { - "./lib/pdfkit.js": "./lib/pdfkit.browser.js", - "./lib/pdfkit.cjs": "./lib/pdfkit.browser.cjs" - }, - "exports": { - ".": { - "import": "./lib/pdfkit.js", - "require": "./lib/pdfkit.cjs", - "default": "./lib/pdfkit.js" - } + "./lib/pdfkit.js": "./lib/pdfkit.browser.js" }, "repository": { "type": "git", @@ -38,11 +29,11 @@ ], "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/png-js": "^2.3.1", + "@react-pdf/png-js": "^3.0.0", "browserify-zlib": "^0.2.0", "crypto-js": "^4.2.0", "fontkit": "^2.0.2", - "jay-peg": "^1.0.2", + "jay-peg": "^1.1.1", "vite-compatible-readable-stream": "^3.6.1" }, "devDependencies": { diff --git a/packages/pdfkit/rollup.config.js b/packages/pdfkit/rollup.config.js index 99689e820..63cb264cf 100644 --- a/packages/pdfkit/rollup.config.js +++ b/packages/pdfkit/rollup.config.js @@ -2,7 +2,6 @@ import babel from '@rollup/plugin-babel'; import json from '@rollup/plugin-json'; import replace from '@rollup/plugin-replace'; import nodeResolve from '@rollup/plugin-node-resolve'; -import terser from '@rollup/plugin-terser'; import ignore from 'rollup-plugin-ignore'; import alias from '@rollup/plugin-alias'; import nodePolyfills from 'rollup-plugin-polyfill-node'; @@ -10,19 +9,6 @@ import commonjs from '@rollup/plugin-commonjs'; import pkg from './package.json' assert { type: 'json' }; -const cjs = { - exports: 'named', - format: 'cjs', - interop: 'compat' -}; - -const esm = { - format: 'es' -}; - -const getCJS = (override) => Object.assign({}, cjs, override); -const getESM = (override) => Object.assign({}, esm, override); - const input = 'src/index.js'; const babelConfig = () => ({ @@ -43,7 +29,7 @@ const getExternal = ({ browser }) => [ ...(browser ? [] : ['fs']) ]; -const getPlugins = ({ browser, minify = false }) => [ +const getPlugins = ({ browser }) => [ json(), ...(browser ? [ @@ -77,52 +63,23 @@ const getPlugins = ({ browser, minify = false }) => [ } }), babel(babelConfig()), - ...(minify ? [terser()] : []) ]; const serverConfig = { input, - output: [ - getESM({ file: 'lib/pdfkit.js' }), - getCJS({ file: 'lib/pdfkit.cjs' }) - ], + output: { format: 'es', file: 'lib/pdfkit.js' }, external: getExternal({ browser: false }), plugins: getPlugins({ browser: false }) }; -const serverProdConfig = { - input, - output: [ - getESM({ file: 'lib/pdfkit.min.js' }), - getCJS({ file: 'lib/pdfkit.min.cjs' }) - ], - external: getExternal({ browser: false }), - plugins: getPlugins({ browser: false, minify: true }) -}; - const browserConfig = { input, - output: [ - getESM({ file: 'lib/pdfkit.browser.js' }), - getCJS({ file: 'lib/pdfkit.browser.cjs' }) - ], + output: { format: 'es', file: 'lib/pdfkit.browser.js' }, external: getExternal({ browser: true }), plugins: getPlugins({ browser: true }) }; -const browserProdConfig = Object.assign({}, browserConfig, { - input, - output: [ - getESM({ file: 'lib/pdfkit.browser.min.js' }), - getCJS({ file: 'lib/pdfkit.browser.min.cjs' }) - ], - external: getExternal({ browser: true }), - plugins: getPlugins({ browser: true, minify: true }) -}); - export default [ serverConfig, - serverProdConfig, browserConfig, - browserProdConfig ]; diff --git a/packages/png-js/CHANGELOG.md b/packages/png-js/CHANGELOG.md index 6a2e32c1b..d9441c8c4 100644 --- a/packages/png-js/CHANGELOG.md +++ b/packages/png-js/CHANGELOG.md @@ -1,5 +1,11 @@ # @react-pdf/png-js +## 3.0.0 + +### Major Changes + +- [#2871](https://github.com/diegomura/react-pdf/pull/2871) [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119) Thanks [@diegomura](https://github.com/diegomura)! - feat!: drop cjs support + ## 2.3.1 ### Patch Changes diff --git a/packages/png-js/package.json b/packages/png-js/package.json index 11d4cf6d9..8bcc562de 100644 --- a/packages/png-js/package.json +++ b/packages/png-js/package.json @@ -1,21 +1,12 @@ { "name": "@react-pdf/png-js", "description": "A PNG decoder in JS", - "version": "2.3.1", + "version": "3.0.0", "license": "MIT", "type": "module", - "main": "./lib/png-js.cjs", - "module": "./lib/png-js.js", + "main": "./lib/png-js.js", "browser": { - "./lib/png-js.js": "./lib/png-js.browser.js", - "./lib/png-js.cjs": "./lib/png-js.browser.cjs" - }, - "exports": { - ".": { - "import": "./lib/png-js.js", - "require": "./lib/png-js.cjs", - "default": "./lib/png-js.js" - } + "./lib/png-js.js": "./lib/png-js.browser.js" }, "repository": { "type": "git", diff --git a/packages/png-js/rollup.config.js b/packages/png-js/rollup.config.js index 97c4f5153..b6d1d7aa6 100644 --- a/packages/png-js/rollup.config.js +++ b/packages/png-js/rollup.config.js @@ -8,19 +8,6 @@ import commonjs from '@rollup/plugin-commonjs'; import pkg from './package.json' assert { type: 'json' }; -const cjs = { - exports: 'named', - format: 'cjs', - interop: 'compat', -}; - -const esm = { - format: 'es', -}; - -const getCJS = (override) => Object.assign({}, cjs, override); -const getESM = (override) => Object.assign({}, esm, override); - const input = 'src/index.js'; const babelConfig = () => ({ @@ -63,20 +50,14 @@ const getPlugins = ({ browser }) => [ const serverConfig = { input, - output: [ - getESM({ file: 'lib/png-js.js' }), - getCJS({ file: 'lib/png-js.cjs' }), - ], + output: { format: 'es', file: 'lib/png-js.js' }, external: getExternal({ browser: false }), plugins: getPlugins({ browser: false }), }; const browserConfig = { input, - output: [ - getESM({ file: 'lib/png-js.browser.js' }), - getCJS({ file: 'lib/png-js.browser.cjs' }), - ], + output: { format: 'es', file: 'lib/png-js.browser.js' }, external: getExternal({ browser: true }), plugins: getPlugins({ browser: true }), }; diff --git a/packages/primitives/CHANGELOG.md b/packages/primitives/CHANGELOG.md index ea1932d16..fab7ead47 100644 --- a/packages/primitives/CHANGELOG.md +++ b/packages/primitives/CHANGELOG.md @@ -1,5 +1,11 @@ # @react-pdf/primitives +## 4.0.0 + +### Major Changes + +- [#2871](https://github.com/diegomura/react-pdf/pull/2871) [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119) Thanks [@diegomura](https://github.com/diegomura)! - feat!: drop cjs support + ## 3.1.1 ### Patch Changes diff --git a/packages/primitives/package.json b/packages/primitives/package.json index b2c95a773..a6bb5ff04 100644 --- a/packages/primitives/package.json +++ b/packages/primitives/package.json @@ -1,27 +1,18 @@ { "name": "@react-pdf/primitives", - "version": "3.1.1", + "version": "4.0.0", "license": "MIT", "description": "Define uninitialized elements", "author": "Diego Muracciole ", "homepage": "https://github.com/diegomura/react-pdf#readme", "type": "module", - "main": "./lib/index.cjs", - "module": "./src/index.js", - "exports": { - ".": { - "import": "./src/index.js", - "require": "./lib/index.cjs", - "default": "./src/index.js" - } - }, + "main": "./src/index.js", "repository": { "type": "git", "url": "https://github.com/diegomura/react-pdf.git", "directory": "packages/primitives" }, "scripts": { - "build": "babel src --out-dir lib && mv lib/index.js lib/index.cjs", "test": "vitest" }, "files": [ diff --git a/packages/reconciler/.gitignore b/packages/reconciler/.gitignore new file mode 100644 index 000000000..a65b41774 --- /dev/null +++ b/packages/reconciler/.gitignore @@ -0,0 +1 @@ +lib diff --git a/packages/reconciler/CHANGELOG.md b/packages/reconciler/CHANGELOG.md new file mode 100644 index 000000000..4c2541701 --- /dev/null +++ b/packages/reconciler/CHANGELOG.md @@ -0,0 +1,33 @@ +# @react-pdf/reconciler + +## 1.1.3 + +### Patch Changes + +- [#2983](https://github.com/diegomura/react-pdf/pull/2983) [`1916e840`](https://github.com/diegomura/react-pdf/commit/1916e8405ce2b566110f2a1d66cfd8b4c4fa34d4) Thanks [@diegomura](https://github.com/diegomura)! - fix: conditional rendering + +- [#2980](https://github.com/diegomura/react-pdf/pull/2980) [`165c70fb`](https://github.com/diegomura/react-pdf/commit/165c70fbd31a7a4520af83b218a03f2f78f486e9) Thanks [@diegomura](https://github.com/diegomura)! - fix(reconciler): missing dependencies + +## 1.1.2 + +### Patch Changes + +- [#2958](https://github.com/diegomura/react-pdf/pull/2958) [`f6e9e113`](https://github.com/diegomura/react-pdf/commit/f6e9e1136f47fe05f86158c76561729b2cc425c4) Thanks [@diegomura](https://github.com/diegomura)! - fix: add scheduler dependency + +## 1.1.1 + +### Patch Changes + +- [#2943](https://github.com/diegomura/react-pdf/pull/2943) [`82192b3a`](https://github.com/diegomura/react-pdf/commit/82192b3a53cf5db62230287e7456dc5bdeee6244) Thanks [@diegomura](https://github.com/diegomura)! - fix: reconciler build + +## 1.1.0 + +### Minor Changes + +- [`52b2f253`](https://github.com/diegomura/react-pdf/commit/52b2f25349bee0c09399bc2e7e5e89db5e1433fd) Thanks [@diegomura](https://github.com/diegomura)! - feat: add React 19 support + +## 1.0.1 + +### Patch Changes + +- [#2936](https://github.com/diegomura/react-pdf/pull/2936) [`7add014c`](https://github.com/diegomura/react-pdf/commit/7add014c6bc9cff649dd1a56fc47214888613b6b) Thanks [@diegomura](https://github.com/diegomura)! - feat: pre-bundle + bump react-reconciler diff --git a/packages/reconciler/README.md b/packages/reconciler/README.md new file mode 100644 index 000000000..bf95723f4 --- /dev/null +++ b/packages/reconciler/README.md @@ -0,0 +1,5 @@ +

+ +

+ +# @react-pdf/reconciler diff --git a/packages/reconciler/build/trim-reconciler.js b/packages/reconciler/build/trim-reconciler.js new file mode 100644 index 000000000..d454b9822 --- /dev/null +++ b/packages/reconciler/build/trim-reconciler.js @@ -0,0 +1,111 @@ +/* eslint-disable import/no-extraneous-dependencies */ + +import * as recast from 'recast'; +import { visit } from 'ast-types'; + +const trueLiteral = recast.types.builders.literal(true); +const falseLiteral = recast.types.builders.literal(false); +const nullLiteral = recast.types.builders.literal(null); + +const KEEP_OPTIONS = { + commitUpdate: true, + commitTextUpdate: true, + removeChildFromContainer: true, + removeChild: true, + insertBefore: true, + appendChildToContainer: true, + appendChild: true, + shouldSetTextContent: true, + getChildHostContext: true, + getRootHostContext: true, + resetTextContent: true, + resetAfterCommit: true, + prepareUpdate: true, + clearContainer: true, + prepareForCommit: true, + getPublicInstance: true, + finalizeInitialChildren: true, + createTextInstance: true, + createInstance: true, + appendInitialChild: true, + noTimeout: true, + getCurrentUpdatePriority: true, + setCurrentUpdatePriority: true, + resolveUpdatePriority: true, + shouldAttemptEagerTransition: true, + requestPostPaintCallback: true, + maySuspendCommit: true, +}; + +const STATIC_OPTIONS = { + useSyncScheduling: { value: true }, + supportsMutation: { value: true }, + isPrimaryRenderer: { value: false }, + warnsIfNotActing: { value: false }, +}; + +const METHOD_KEYS = { + updateContainer: true, + updateContainerSync: true, + createContainer: true, + flushSyncWork: true, +}; + +function clearReconcilerOptions(path) { + const { node } = path; + const objectName = node.object?.name; + const optionName = node.property?.name; + + // If we are not visiting config object, skip. + if (objectName !== '$$$hostConfig' && objectName !== '$$$config') return; + + // If it's an option we want to keep, skip. + if (KEEP_OPTIONS[optionName]) return; + + // If it's an option we want to replace, replace it. + if (STATIC_OPTIONS[optionName]) { + const newValue = STATIC_OPTIONS[optionName].value; + path.replace(newValue ? trueLiteral : falseLiteral); + return; + } + + // Remove option. + path.replace(nullLiteral); +} + +function clearReconcilerMethods(path) { + const { node } = path; + const objectName = node.object?.name; + const optionName = node.property?.name; + + // If we are not visiting an exported method, skip. + if (objectName !== 'exports') return; + + // If it's a method we want to keep, skip. + if (METHOD_KEYS[optionName]) return; + + // Remove method. + path.parent.replace(nullLiteral); +} + +const trimReconciler = () => { + return { + name: 'trim-reconciler', + + transform(code) { + const ast = recast.parse(code); + + visit(ast, { + visitMemberExpression(path) { + clearReconcilerOptions(path); + clearReconcilerMethods(path); + this.traverse(path); + }, + }); + + return { code: recast.print(ast).code }; + }, + }; +}; + +export default trimReconciler; diff --git a/packages/reconciler/package.json b/packages/reconciler/package.json new file mode 100644 index 000000000..e0321e881 --- /dev/null +++ b/packages/reconciler/package.json @@ -0,0 +1,38 @@ +{ + "name": "@react-pdf/reconciler", + "version": "1.1.3", + "license": "MIT", + "description": "Define uninitialized elements", + "author": "Diego Muracciole ", + "homepage": "https://github.com/diegomura/react-pdf#readme", + "type": "module", + "main": "./lib/index.js", + "repository": { + "type": "git", + "url": "https://github.com/diegomura/react-pdf.git", + "directory": "packages/reconciler" + }, + "scripts": { + "build": "rimraf ./lib && rollup -c", + "watch": "rimraf ./lib && rollup -c -w", + "size": "size-limit", + "lint": "eslint src", + "test": "vitest" + }, + "files": [ + "lib" + ], + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "dependencies": { + "object-assign": "^4.1.1", + "scheduler": "0.25.0-rc-603e6108-20241029" + }, + "devDependencies": { + "ast-types": "^0.14.2", + "react-reconciler-23": "npm:react-reconciler@0.23.0", + "react-reconciler-31": "npm:react-reconciler@0.31.0-rc-603e6108-20241029", + "recast": "^0.23.9" + } +} diff --git a/packages/reconciler/rollup.config.js b/packages/reconciler/rollup.config.js new file mode 100644 index 000000000..084f93b32 --- /dev/null +++ b/packages/reconciler/rollup.config.js @@ -0,0 +1,35 @@ +/* eslint-disable import/extensions */ + +import resolve from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; +import terser from '@rollup/plugin-terser'; + +import trimReconciler from './build/trim-reconciler.js'; + +export default [ + { + input: 'src/index.js', + output: { format: 'es', file: 'lib/index.js' }, + external: ['./reconciler-23.js', './reconciler-31.js'], + }, + { + input: 'src/reconciler-23.js', + output: { format: 'es', file: 'lib/reconciler-23.js' }, + plugins: [ + resolve({ resolveOnly: ['react-reconciler-23'] }), + commonjs({ esmExternals: (id) => id === 'scheduler' }), + trimReconciler(), + terser({ compress: { dead_code: true } }), + ], + }, + { + input: 'src/reconciler-31.js', + output: { format: 'es', file: 'lib/reconciler-31.js' }, + plugins: [ + resolve({ resolveOnly: ['react-reconciler-31'] }), + commonjs({ esmExternals: (id) => id === 'scheduler' }), + trimReconciler(), + terser({ compress: { dead_code: true } }), + ], + }, +]; diff --git a/packages/reconciler/src/index.js b/packages/reconciler/src/index.js new file mode 100644 index 000000000..123750fc2 --- /dev/null +++ b/packages/reconciler/src/index.js @@ -0,0 +1,12 @@ +/* eslint-disable import/extensions */ +/* eslint-disable import/no-extraneous-dependencies */ + +import React from 'react'; +import createRendererForReact19 from './reconciler-31.js'; +import createRendererForReact18AndLess from './reconciler-23.js'; + +const isReact19 = React.version.startsWith('19'); + +export default isReact19 + ? createRendererForReact19 + : createRendererForReact18AndLess; diff --git a/packages/renderer/src/utils/propsEqual.js b/packages/reconciler/src/propsEqual.js similarity index 100% rename from packages/renderer/src/utils/propsEqual.js rename to packages/reconciler/src/propsEqual.js diff --git a/packages/reconciler/src/reconciler-23.js b/packages/reconciler/src/reconciler-23.js new file mode 100644 index 000000000..8cd25e383 --- /dev/null +++ b/packages/reconciler/src/reconciler-23.js @@ -0,0 +1,46 @@ +/* eslint-disable import/extensions */ +/* eslint-disable import/no-extraneous-dependencies */ +import Reconciler from 'react-reconciler-23/cjs/react-reconciler.production.min.js'; + +import propsEqual from './propsEqual'; + +const emptyObject = {}; + +const createRenderer = ({ + appendChild, + appendChildToContainer, + commitTextUpdate, + commitUpdate, + createInstance, + createTextInstance, + insertBefore, + removeChild, + removeChildFromContainer, + resetAfterCommit, +}) => { + return Reconciler({ + appendChild, + appendChildToContainer, + appendInitialChild: appendChild, + createInstance, + createTextInstance, + insertBefore, + commitUpdate, + commitTextUpdate, + removeChild, + removeChildFromContainer, + resetAfterCommit, + shouldSetTextContent: () => false, + finalizeInitialChildren: () => false, + getPublicInstance: (instance) => instance, + getRootHostContext: () => emptyObject, + getChildHostContext: () => emptyObject, + prepareForCommit() {}, + clearContainer() {}, + resetTextContent() {}, + prepareUpdate: (element, type, oldProps, newProps) => + !propsEqual(oldProps, newProps), + }); +}; + +export default createRenderer; diff --git a/packages/reconciler/src/reconciler-31.js b/packages/reconciler/src/reconciler-31.js new file mode 100644 index 000000000..c60aed6f0 --- /dev/null +++ b/packages/reconciler/src/reconciler-31.js @@ -0,0 +1,88 @@ +/* eslint-disable import/extensions */ +/* eslint-disable import/no-extraneous-dependencies */ + +import Reconciler from 'react-reconciler-31'; +import { + ConcurrentRoot, + DefaultEventPriority, +} from 'react-reconciler-31/constants'; + +import propsEqual from './propsEqual'; + +const emptyObject = {}; + +const logRecoverableError = console.error; + +const createRenderer = ({ + appendChild, + appendChildToContainer, + commitTextUpdate, + commitUpdate, + createInstance, + createTextInstance, + insertBefore, + removeChild, + removeChildFromContainer, + resetAfterCommit, +}) => { + const _commitUpdate = (instance, type, oldProps, newProps) => { + if (propsEqual(oldProps, newProps)) return; + commitUpdate(instance, null, type, oldProps, newProps); + }; + + const reconciler = Reconciler({ + appendChild, + appendChildToContainer, + appendInitialChild: appendChild, + createInstance, + createTextInstance, + insertBefore, + commitUpdate: _commitUpdate, + commitTextUpdate, + removeChild, + removeChildFromContainer, + resetAfterCommit, + noTimeout: -1, + shouldSetTextContent: () => false, + finalizeInitialChildren: () => false, + getPublicInstance: (instance) => instance, + getRootHostContext: () => emptyObject, + getChildHostContext: () => emptyObject, + prepareForCommit() {}, + clearContainer() {}, + resetTextContent() {}, + getCurrentUpdatePriority: () => DefaultEventPriority, + maySuspendCommit: () => false, + requestPostPaintCallback: () => {}, + resolveUpdatePriority: () => DefaultEventPriority, + setCurrentUpdatePriority: () => {}, + shouldAttemptEagerTransition: () => false, + }); + + const createContainer = (container) => { + return reconciler.createContainer( + container, + ConcurrentRoot, // tag + null, // hydration callbacks + false, // isStrictMode + null, // concurrentUpdatesByDefaultOverride + '', // identifierPrefix + logRecoverableError, // onUncaughtError + logRecoverableError, // onCaughtError + logRecoverableError, // onRecoverableError + null, // transitionCallbacks + ); + }; + + const updateContainer = (doc, mountNode, parentComponent, callback) => { + reconciler.updateContainerSync(doc, mountNode, parentComponent, callback); + reconciler.flushSyncWork(); + }; + + return { + createContainer, + updateContainer, + }; +}; + +export default createRenderer; diff --git a/packages/renderer/tests/propsEqual.test.js b/packages/reconciler/tests/propsEqual.test.js similarity index 95% rename from packages/renderer/tests/propsEqual.test.js rename to packages/reconciler/tests/propsEqual.test.js index 80ad27399..0493dfb08 100644 --- a/packages/renderer/tests/propsEqual.test.js +++ b/packages/reconciler/tests/propsEqual.test.js @@ -1,6 +1,6 @@ import { describe, expect, test } from 'vitest'; -import propsEqual from '../src/utils/propsEqual'; +import propsEqual from '../src/propsEqual'; describe('propsEqual', () => { test('should be true for two empty objects', () => { diff --git a/packages/render/CHANGELOG.md b/packages/render/CHANGELOG.md index 5c3ce1380..a8144c49d 100644 --- a/packages/render/CHANGELOG.md +++ b/packages/render/CHANGELOG.md @@ -1,5 +1,47 @@ # @react-pdf/render +## 4.0.2 + +### Patch Changes + +- Updated dependencies [[`00bfdc1e`](https://github.com/diegomura/react-pdf/commit/00bfdc1e5a6c673d2de7b3ab09d5020e932562fb)]: + - @react-pdf/textkit@5.0.1 + +## 4.0.1 + +### Patch Changes + +- [#2948](https://github.com/diegomura/react-pdf/pull/2948) [`03322a75`](https://github.com/diegomura/react-pdf/commit/03322a756f44863543673ff597582444c180989b) Thanks [@diegomura](https://github.com/diegomura)! - fix: stroke dash array computation + +- [#2945](https://github.com/diegomura/react-pdf/pull/2945) [`b5c0fe64`](https://github.com/diegomura/react-pdf/commit/b5c0fe646108a960a528290b175511842020d600) Thanks [@diegomura](https://github.com/diegomura)! - fix: skew transformation + +## 4.0.0 + +### Major Changes + +- [#2871](https://github.com/diegomura/react-pdf/pull/2871) [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119) Thanks [@diegomura](https://github.com/diegomura)! - feat!: drop cjs support + +### Patch Changes + +- Updated dependencies [[`46c3047d`](https://github.com/diegomura/react-pdf/commit/46c3047de56ae82f062b72c4910a4e6096eee99f), [`55973278`](https://github.com/diegomura/react-pdf/commit/55973278ac8bc8f703b63844f57d6f155ae8d86f), [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119)]: + - @react-pdf/types@2.7.0 + - @react-pdf/primitives@4.0.0 + - @react-pdf/textkit@5.0.0 + - @react-pdf/fns@3.0.0 + +## 3.5.0 + +### Minor Changes + +- [#2771](https://github.com/diegomura/react-pdf/pull/2771) [`8e6a832`](https://github.com/diegomura/react-pdf/commit/8e6a8320f86354aff950c296a96bc41a33e9dab2) Thanks [@nikischin](https://github.com/nikischin)! - fix: fix dpi + +### Patch Changes + +- [#2836](https://github.com/diegomura/react-pdf/pull/2836) [`53bf803`](https://github.com/diegomura/react-pdf/commit/53bf803465f4fecf13531d1a10697c3d4067cf8f) Thanks [@obi-awyss](https://github.com/obi-awyss)! - [fix] "TypeError: renderFn is not a function" + It may also address issue #2644 +- Updated dependencies [[`8e6a832`](https://github.com/diegomura/react-pdf/commit/8e6a8320f86354aff950c296a96bc41a33e9dab2), [`4bafab8`](https://github.com/diegomura/react-pdf/commit/4bafab8455c9003759f48bad20a720baf4ed189b)]: + - @react-pdf/types@2.6.0 + ## 3.4.4 ### Patch Changes diff --git a/packages/render/package.json b/packages/render/package.json index 95e0a0271..5676e8e50 100644 --- a/packages/render/package.json +++ b/packages/render/package.json @@ -1,20 +1,12 @@ { "name": "@react-pdf/render", - "version": "3.4.4", + "version": "4.0.2", "license": "MIT", "description": "A render engine for Node and the browser", "author": "Diego Muracciole ", "homepage": "https://github.com/diegomura/react-pdf#readme", "type": "module", - "main": "./lib/index.cjs", - "module": "./lib/index.js", - "exports": { - ".": { - "import": "./lib/index.js", - "require": "./lib/index.cjs", - "default": "./lib/index.js" - } - }, + "main": "./lib/index.js", "repository": { "type": "git", "url": "https://github.com/diegomura/react-pdf.git", @@ -27,10 +19,10 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/fns": "2.2.1", - "@react-pdf/primitives": "^3.1.1", - "@react-pdf/textkit": "^4.4.1", - "@react-pdf/types": "^2.5.0", + "@react-pdf/fns": "3.0.0", + "@react-pdf/primitives": "^4.0.0", + "@react-pdf/textkit": "^5.0.1", + "@react-pdf/types": "^2.7.0", "abs-svg-path": "^0.1.1", "color-string": "^1.9.1", "normalize-svg-path": "^1.1.0", diff --git a/packages/render/rollup.config.js b/packages/render/rollup.config.js index 5721534f1..da5cd8847 100644 --- a/packages/render/rollup.config.js +++ b/packages/render/rollup.config.js @@ -3,21 +3,9 @@ import babel from '@rollup/plugin-babel'; import pkg from './package.json' assert { type: 'json' }; -const cjs = { - exports: 'named', - format: 'cjs', - interop: 'compat', -}; - -const esm = { - format: 'es', -}; - -const getCJS = (override) => Object.assign({}, cjs, override); -const getESM = (override) => Object.assign({}, esm, override); - -const configBase = { +const config = { input: 'src/index.js', + output: { format: 'es', file: 'lib/index.js' }, external: Object.keys(pkg.dependencies).concat( /@babel\/runtime/, /@react-pdf/, @@ -32,8 +20,4 @@ const configBase = { ], }; -const config = Object.assign({}, configBase, { - output: [getESM({ file: 'lib/index.js' }), getCJS({ file: 'lib/index.cjs' })], -}); - export default config; diff --git a/packages/render/src/index.js b/packages/render/src/index.js index 21d8a6e28..0701c7f73 100644 --- a/packages/render/src/index.js +++ b/packages/render/src/index.js @@ -1,13 +1,10 @@ import renderNode from './primitives/renderNode'; -import addMetadata from './operations/addMetadata'; import addBookmarks from './operations/addBookmarks'; const render = (ctx, doc) => { const pages = doc.children || []; const options = { imageCache: new Map() }; - addMetadata(ctx, doc); - pages.forEach((page) => renderNode(ctx, page, options)); addBookmarks(ctx, doc); diff --git a/packages/render/src/operations/addMetadata.js b/packages/render/src/operations/addMetadata.js deleted file mode 100644 index 877d94639..000000000 --- a/packages/render/src/operations/addMetadata.js +++ /dev/null @@ -1,36 +0,0 @@ -/* eslint-disable no-param-reassign */ - -const setPDFMetadata = (target) => (key, value) => { - if (value) target.info[key] = value; -}; - -/** - * Set document instance metadata - * - * @param {Object} ctx document instance - * @param {Object} doc document root - */ -const addMetadata = (ctx, doc) => { - const setProp = setPDFMetadata(ctx); - - const props = doc.props || {}; - const title = props.title || null; - const author = props.author || null; - const subject = props.subject || null; - const keywords = props.keywords || null; - const creator = props.creator ?? 'react-pdf'; - const producer = props.producer ?? 'react-pdf'; - const creationDate = props.creationDate || new Date(); - const modificationDate = props.modificationDate || null; - - setProp('Title', title); - setProp('Author', author); - setProp('Subject', subject); - setProp('Keywords', keywords); - setProp('Creator', creator); - setProp('Producer', producer); - setProp('CreationDate', creationDate); - setProp('ModificationDate', modificationDate); -}; - -export default addMetadata; diff --git a/packages/render/src/operations/transform.js b/packages/render/src/operations/transform.js index b39010289..2f9cecac8 100644 --- a/packages/render/src/operations/transform.js +++ b/packages/render/src/operations/transform.js @@ -21,8 +21,24 @@ const applySingleTransformation = (ctx, transform, origin) => { } case 'skew': { - const [xAngle, yAngle] = value; - ctx.skew(xAngle, yAngle, { origin }); + const [xAngle = 0, yAngle = 0] = value; + const radx = (xAngle * Math.PI) / 180; + const rady = (yAngle * Math.PI) / 180; + const tanx = Math.tan(radx); + const tany = Math.tan(rady); + + let x = 0; + let y = 0; + + if (origin != null) { + [x, y] = Array.from(origin); + const x1 = x + tanx * y; + const y1 = y + tany * x; + x -= x1; + y -= y1; + } + + ctx.transform(1, tany, tanx, 1, x, y); break; } diff --git a/packages/render/src/primitives/renderSvg.js b/packages/render/src/primitives/renderSvg.js index 4f169410f..d4c0b26ae 100644 --- a/packages/render/src/primitives/renderSvg.js +++ b/packages/render/src/primitives/renderSvg.js @@ -53,7 +53,7 @@ const setLineCap = (ctx, node) => { const setLineDash = (ctx, node) => { const value = node.props?.strokeDasharray || null; - if (value) ctx.dash(value.split(',').map(Number)); + if (value) ctx.dash(value.split(/[\s,]+/).map(Number)); }; const hasLinearGradientFill = (node) => @@ -172,10 +172,10 @@ const renderFns = { const renderNode = (ctx, node) => { const renderFn = renderFns[node.type]; - if (renderFns) { + if (renderFn) { renderFn(ctx, node); } else { - console.warn(`SVG node of type ${node.type} is not currenty supported`); + console.warn(`SVG node of type ${node.type} is not currently supported`); } }; diff --git a/packages/render/tests/operations/addMetadata.test.js b/packages/render/tests/operations/addMetadata.test.js deleted file mode 100644 index f701de676..000000000 --- a/packages/render/tests/operations/addMetadata.test.js +++ /dev/null @@ -1,143 +0,0 @@ -import { describe, expect, test } from 'vitest'; - -import * as P from '@react-pdf/primitives'; - -import createCTX from '../ctx'; -import addMetadata from '../../src/operations/addMetadata'; - -describe('operations addMetadata', () => { - test('should not add title metadata if none provided', () => { - const ctx = createCTX(); - const doc = { type: P.Document }; - - addMetadata(ctx, doc); - - expect(ctx.info.Title).toBeUndefined(); - }); - - test('should add title metadata if provided', () => { - const ctx = createCTX(); - const doc = { type: P.Document, props: { title: 'test' } }; - - addMetadata(ctx, doc); - - expect(ctx.info.Title).toBe('test'); - }); - - test('should not add author metadata if none provided', () => { - const ctx = createCTX(); - const doc = { type: P.Document }; - - addMetadata(ctx, doc); - - expect(ctx.info.Author).toBeUndefined(); - }); - - test('should add author metadata if provided', () => { - const ctx = createCTX(); - const doc = { type: P.Document, props: { author: 'test' } }; - - addMetadata(ctx, doc); - - expect(ctx.info.Author).toBe('test'); - }); - - test('should not add keywords metadata if none provided', () => { - const ctx = createCTX(); - const doc = { type: P.Document }; - - addMetadata(ctx, doc); - - expect(ctx.info.Keywords).toBeUndefined(); - }); - - test('should add keywords metadata if provided', () => { - const ctx = createCTX(); - const doc = { type: P.Document, props: { keywords: 'test' } }; - - addMetadata(ctx, doc); - - expect(ctx.info.Keywords).toBe('test'); - }); - - test('should not add subject metadata if none provided', () => { - const ctx = createCTX(); - const doc = { type: P.Document }; - - addMetadata(ctx, doc); - - expect(ctx.info.Subject).toBeUndefined(); - }); - - test('should add subject metadata if provided', () => { - const ctx = createCTX(); - const doc = { type: P.Document, props: { subject: 'test' } }; - - addMetadata(ctx, doc); - - expect(ctx.info.Subject).toBe('test'); - }); - - test('should add default creator metadata if none provided', () => { - const ctx = createCTX(); - const doc = { type: P.Document }; - - addMetadata(ctx, doc); - - expect(ctx.info.Creator).toBe('react-pdf'); - }); - - test('should add default producer metadata if none provided', () => { - const ctx = createCTX(); - const doc = { type: P.Document }; - - addMetadata(ctx, doc); - - expect(ctx.info.Producer).toBe('react-pdf'); - }); - - test('should add creator metadata if provided', () => { - const ctx = createCTX(); - const doc = { type: P.Document, props: { creator: 'test' } }; - - addMetadata(ctx, doc); - - expect(ctx.info.Creator).toBe('test'); - }); - - test('should add producer metadata if provided', () => { - const ctx = createCTX(); - const doc = { type: P.Document, props: { producer: 'test' } }; - - addMetadata(ctx, doc); - - expect(ctx.info.Producer).toBe('test'); - }); - - test('should add creationDate metadata if provided', () => { - const ctx = createCTX(); - const doc = { type: P.Document, props: { creationDate: 'test' } }; - - addMetadata(ctx, doc); - - expect(ctx.info.CreationDate).toBe('test'); - }); - - test('should not add modificationDate metadata if none provided', () => { - const ctx = createCTX(); - const doc = { type: P.Document }; - - addMetadata(ctx, doc); - - expect(ctx.info.ModificationDate).toBeUndefined(); - }); - - test('should add modificationDate metadata if provided', () => { - const ctx = createCTX(); - const doc = { type: P.Document, props: { modificationDate: 'test' } }; - - addMetadata(ctx, doc); - - expect(ctx.info.ModificationDate).toBe('test'); - }); -}); diff --git a/packages/renderer/CHANGELOG.md b/packages/renderer/CHANGELOG.md index 99de4673d..aac819278 100644 --- a/packages/renderer/CHANGELOG.md +++ b/packages/renderer/CHANGELOG.md @@ -1,5 +1,107 @@ # @react-pdf/renderer +## 4.1.5 + +### Patch Changes + +- Updated dependencies [[`1916e840`](https://github.com/diegomura/react-pdf/commit/1916e8405ce2b566110f2a1d66cfd8b4c4fa34d4), [`165c70fb`](https://github.com/diegomura/react-pdf/commit/165c70fbd31a7a4520af83b218a03f2f78f486e9)]: + - @react-pdf/reconciler@1.1.3 + - @react-pdf/layout@4.1.3 + - @react-pdf/render@4.0.2 + +## 4.1.4 + +### Patch Changes + +- Updated dependencies [[`f6e9e113`](https://github.com/diegomura/react-pdf/commit/f6e9e1136f47fe05f86158c76561729b2cc425c4)]: + - @react-pdf/reconciler@1.1.2 + +## 4.1.3 + +### Patch Changes + +- Updated dependencies [[`425f1183`](https://github.com/diegomura/react-pdf/commit/425f1183bba9a83fd5712a1371abb6cea2ed8fca), [`2c3c887e`](https://github.com/diegomura/react-pdf/commit/2c3c887ea2d3aed2863f49bff375d08feaf975aa)]: + - @react-pdf/layout@4.1.2 + +## 4.1.2 + +### Patch Changes + +- [#2951](https://github.com/diegomura/react-pdf/pull/2951) [`aab7d958`](https://github.com/diegomura/react-pdf/commit/aab7d95870d9073e4acb004aa0cce9cfa19b7f0e) Thanks [@diegomura](https://github.com/diegomura)! - fix: note rendering + +- Updated dependencies [[`03322a75`](https://github.com/diegomura/react-pdf/commit/03322a756f44863543673ff597582444c180989b), [`ed562b9b`](https://github.com/diegomura/react-pdf/commit/ed562b9b7f14bc76a1cd83aaaf1dab966bd7540b), [`b5c0fe64`](https://github.com/diegomura/react-pdf/commit/b5c0fe646108a960a528290b175511842020d600)]: + - @react-pdf/render@4.0.1 + - @react-pdf/font@3.0.1 + - @react-pdf/layout@4.1.1 + +## 4.1.1 + +### Patch Changes + +- Updated dependencies [[`82192b3a`](https://github.com/diegomura/react-pdf/commit/82192b3a53cf5db62230287e7456dc5bdeee6244)]: + - @react-pdf/reconciler@1.1.1 + +## 4.1.0 + +### Minor Changes + +- [`52b2f253`](https://github.com/diegomura/react-pdf/commit/52b2f25349bee0c09399bc2e7e5e89db5e1433fd) Thanks [@diegomura](https://github.com/diegomura)! - feat: add React 19 support + +### Patch Changes + +- Updated dependencies [[`52b2f253`](https://github.com/diegomura/react-pdf/commit/52b2f25349bee0c09399bc2e7e5e89db5e1433fd)]: + - @react-pdf/reconciler@1.1.0 + +## 4.0.2 + +### Patch Changes + +- [#2936](https://github.com/diegomura/react-pdf/pull/2936) [`7add014c`](https://github.com/diegomura/react-pdf/commit/7add014c6bc9cff649dd1a56fc47214888613b6b) Thanks [@diegomura](https://github.com/diegomura)! - feat: pre-bundle + bump react-reconciler + +- Updated dependencies [[`b242e59a`](https://github.com/diegomura/react-pdf/commit/b242e59a14a856e280c9fcbad81f707248819721), [`7add014c`](https://github.com/diegomura/react-pdf/commit/7add014c6bc9cff649dd1a56fc47214888613b6b)]: + - @react-pdf/layout@4.1.0 + - @react-pdf/reconciler@1.0.1 + +## 4.0.1 + +### Patch Changes + +- Updated dependencies [[`58f9a047`](https://github.com/diegomura/react-pdf/commit/58f9a04740ed1331ef1dfa9999fb43c0ee10fa5b)]: + - @react-pdf/layout@4.0.1 + +## 4.0.0 + +### Major Changes + +- [#2871](https://github.com/diegomura/react-pdf/pull/2871) [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119) Thanks [@diegomura](https://github.com/diegomura)! - feat!: drop cjs support + +### Minor Changes + +- [#2876](https://github.com/diegomura/react-pdf/pull/2876) [`afe4bcfe`](https://github.com/diegomura/react-pdf/commit/afe4bcfe6f4b991cf22341242fc27d169b758d47) Thanks [@diegomura](https://github.com/diegomura)! - feat: add gap percentage support + +### Patch Changes + +- Updated dependencies [[`afe4bcfe`](https://github.com/diegomura/react-pdf/commit/afe4bcfe6f4b991cf22341242fc27d169b758d47), [`42570321`](https://github.com/diegomura/react-pdf/commit/42570321af54bf331ca81f09a102664cd9f7c46a), [`fdcef566`](https://github.com/diegomura/react-pdf/commit/fdcef5666e4eeed542b625d394cdfe60d6346600), [`46c3047d`](https://github.com/diegomura/react-pdf/commit/46c3047de56ae82f062b72c4910a4e6096eee99f), [`55973278`](https://github.com/diegomura/react-pdf/commit/55973278ac8bc8f703b63844f57d6f155ae8d86f), [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119)]: + - @react-pdf/layout@4.0.0 + - @react-pdf/pdfkit@4.0.0 + - @react-pdf/types@2.7.0 + - @react-pdf/primitives@4.0.0 + - @react-pdf/render@4.0.0 + - @react-pdf/font@3.0.0 + +## 3.4.5 + +### Patch Changes + +- [#2669](https://github.com/diegomura/react-pdf/pull/2669) [`ed94775`](https://github.com/diegomura/react-pdf/commit/ed94775f4d44db0886ff08c71d09f446bace6392) Thanks [@Finanzasparahippies](https://github.com/Finanzasparahippies)! - fix: download IE checks + +- Updated dependencies [[`e425ca4`](https://github.com/diegomura/react-pdf/commit/e425ca4add7eb353b6282a40fd1020aad0da36c4), [`e42a79a`](https://github.com/diegomura/react-pdf/commit/e42a79a3857932a4ebc89feb6e4d2c891280d633), [`5af35ec`](https://github.com/diegomura/react-pdf/commit/5af35ec9743cc0d7bf75f5ca789627517ff35816), [`53bf803`](https://github.com/diegomura/react-pdf/commit/53bf803465f4fecf13531d1a10697c3d4067cf8f), [`8e6a832`](https://github.com/diegomura/react-pdf/commit/8e6a8320f86354aff950c296a96bc41a33e9dab2), [`4bafab8`](https://github.com/diegomura/react-pdf/commit/4bafab8455c9003759f48bad20a720baf4ed189b)]: + - @react-pdf/layout@3.13.0 + - @react-pdf/render@3.5.0 + - @react-pdf/pdfkit@3.2.0 + - @react-pdf/types@2.6.0 + - @react-pdf/font@2.5.2 + ## 3.4.4 ### Patch Changes diff --git a/packages/renderer/index.d.ts b/packages/renderer/index.d.ts index 7fc8b1ddb..f6857cfcb 100644 --- a/packages/renderer/index.d.ts +++ b/packages/renderer/index.d.ts @@ -1,3 +1,6 @@ +/* eslint-disable react/prefer-stateless-function */ +/* eslint-disable no-unused-vars */ +/* eslint-disable max-classes-per-file */ import * as React from 'react'; import { Style, @@ -14,11 +17,13 @@ import { } from '@react-pdf/types'; declare class ReactPDF { + // eslint-disable-next-line no-use-before-define static default: typeof ReactPDF; } export = ReactPDF; +// eslint-disable-next-line no-redeclare declare namespace ReactPDF { interface Styles { [key: string]: Style; @@ -50,7 +55,7 @@ declare namespace ReactPDF { * used as children of another react-pdf component. In addition, it should * only have childs of type . */ - class Document extends React.Component< + export class Document extends React.Component< React.PropsWithChildren > {} @@ -98,7 +103,9 @@ declare namespace ReactPDF { * you want, but ensure not rendering a page inside any component besides * Document. */ - class Page extends React.Component> {} + export class Page extends React.Component< + React.PropsWithChildren + > {} interface ViewProps extends NodeProps { id?: string; @@ -122,7 +129,9 @@ declare namespace ReactPDF { * The most fundamental component for building a UI and is designed to be * nested inside other views and can have 0 to many children. */ - class View extends React.Component> {} + export class View extends React.Component< + React.PropsWithChildren + > {} interface BaseImageProps extends NodeProps { /** @@ -147,7 +156,7 @@ declare namespace ReactPDF { * A React component for displaying network or local (Node only) JPG or * PNG images, as well as base64 encoded image strings. */ - class Image extends React.Component {} + export class Image extends React.Component {} interface TextProps extends NodeProps { id?: string; @@ -199,7 +208,7 @@ declare namespace ReactPDF { * A React component for displaying text. Text supports nesting of other * Text or Link components to create inline styling. */ - class Text extends React.Component< + export class Text extends React.Component< React.PropsWithChildren | SVGTextProps > {} @@ -222,7 +231,9 @@ declare namespace ReactPDF { * A React component for displaying a hyperlink. Link’s can be nested * inside a Text component, or being inside any other valid primitive. */ - class Link extends React.Component> {} + export class Link extends React.Component< + React.PropsWithChildren + > {} interface FormCommonProps extends NodeProps { name?: string; @@ -312,7 +323,7 @@ declare namespace ReactPDF { children: string; } - class Note extends React.Component {} + export class Note extends React.Component {} interface CanvasProps extends NodeProps { /** @@ -327,7 +338,7 @@ declare namespace ReactPDF { ) => null; } - class Canvas extends React.Component {} + export class Canvas extends React.Component {} interface SVGProps extends NodeProps, SVGPresentationAttributes { /** @@ -344,7 +355,7 @@ declare namespace ReactPDF { /** * The element is a container that defines a new coordinate system and viewport. It is used as the outermost element of SVG documents. */ - class Svg extends React.Component> {} + export class Svg extends React.Component> {} interface LineProps extends SVGPresentationAttributes { style?: SVGPresentationAttributes; @@ -357,7 +368,9 @@ declare namespace ReactPDF { /** * The element is used to create a line. */ - class Line extends React.Component> {} + export class Line extends React.Component< + React.PropsWithChildren + > {} interface PolylineProps extends SVGPresentationAttributes { style?: SVGPresentationAttributes; @@ -367,7 +380,7 @@ declare namespace ReactPDF { /** * The element is used to create any shape that consists of only straight lines (that is connected at several points). */ - class Polyline extends React.Component< + export class Polyline extends React.Component< React.PropsWithChildren > {} @@ -380,7 +393,7 @@ declare namespace ReactPDF { * The element is used to create a graphic that contains at least three sides. * Polygons are made of straight lines, and the shape is "closed" (all the lines connect up). */ - class Polygon extends React.Component< + export class Polygon extends React.Component< React.PropsWithChildren > {} @@ -392,7 +405,9 @@ declare namespace ReactPDF { /** * The element is the most powerful element in the SVG library of basic shapes. It can be used to create lines, curves, arcs, and more. */ - class Path extends React.Component> {} + export class Path extends React.Component< + React.PropsWithChildren + > {} interface RectProps extends SVGPresentationAttributes { style?: SVGPresentationAttributes; @@ -407,7 +422,9 @@ declare namespace ReactPDF { /** * The element is used to create a rectangle and variations of a rectangle shape. */ - class Rect extends React.Component> {} + export class Rect extends React.Component< + React.PropsWithChildren + > {} interface CircleProps extends SVGPresentationAttributes { style?: SVGPresentationAttributes; @@ -419,7 +436,9 @@ declare namespace ReactPDF { /** * The element is used to create a circle. */ - class Circle extends React.Component> {} + export class Circle extends React.Component< + React.PropsWithChildren + > {} interface EllipseProps extends SVGPresentationAttributes { style?: SVGPresentationAttributes; @@ -433,7 +452,7 @@ declare namespace ReactPDF { * The element is used to create an ellipse. * An ellipse is closely related to a circle. The difference is that an ellipse has an x and a y radius that differs from each other, while a circle has equal x and y radius. */ - class Ellipse extends React.Component< + export class Ellipse extends React.Component< React.PropsWithChildren > {} @@ -446,7 +465,9 @@ declare namespace ReactPDF { * The element defines a subtext within a element or another element. * It allows for adjustment of the style and/or position of that subtext as needed. */ - class Tspan extends React.Component> {} + export class Tspan extends React.Component< + React.PropsWithChildren + > {} interface GProps extends SVGPresentationAttributes { style?: Style; @@ -456,7 +477,7 @@ declare namespace ReactPDF { * The SVG element is a container used to group other SVG elements. * Transformations applied to the element are performed on its child elements, and its attributes are inherited by its children. */ - class G extends React.Component> {} + export class G extends React.Component> {} interface StopProps { offset: string | number; @@ -467,14 +488,18 @@ declare namespace ReactPDF { /** * The SVG element defines a color and its position to use on a gradient. This element is always a child of a or element */ - class Stop extends React.Component> {} + export class Stop extends React.Component< + React.PropsWithChildren + > {} interface DefsProps {} /** * The element is used to store graphical objects that will be used at a later time. Objects created inside a element are not rendered directly. To display them you have to reference them */ - class Defs extends React.Component> {} + export class Defs extends React.Component< + React.PropsWithChildren + > {} interface ClipPathProps { id?: string; @@ -484,7 +509,7 @@ declare namespace ReactPDF { * The SVG element defines a clipping path, to be used by the clipPath property. * A clipping path restricts the region to which paint can be applied. Conceptually, parts of the drawing that lie outside of the region bounded by the clipping path are not drawn. */ - class ClipPath extends React.Component< + export class ClipPath extends React.Component< React.PropsWithChildren > {} @@ -499,7 +524,7 @@ declare namespace ReactPDF { /** * The element lets authors define linear gradients that can be applied to fill or stroke of graphical elements. */ - class LinearGradient extends React.Component< + export class LinearGradient extends React.Component< React.PropsWithChildren > {} @@ -515,7 +540,7 @@ declare namespace ReactPDF { /** * The element lets authors define radial gradients that can be applied to fill or stroke of graphical elements. */ - class RadialGradient extends React.Component< + export class RadialGradient extends React.Component< React.PropsWithChildren > {} @@ -536,7 +561,7 @@ declare namespace ReactPDF { * @see https://react-pdf.org/advanced#on-the-fly-rendering * @platform web */ - class BlobProvider extends React.Component {} + export class BlobProvider extends React.Component {} interface PDFViewerProps { width?: number | string; @@ -552,20 +577,19 @@ declare namespace ReactPDF { * Iframe PDF viewer for client-side generated documents. * @platform web */ - class PDFViewer extends React.Component {} + export class PDFViewer extends React.Component {} interface PDFDownloadLinkProps extends Omit, 'href'> { /** PDF filename. Alias for anchor tag `download` attribute. */ fileName?: string; document: React.ReactElement; - children?: - | React.ReactNode - | ((params: BlobProviderParams) => React.ReactNode); - onClick?( - event: React.MouseEvent, - instance: UsePDFInstance, - ): void; + children?: React.ReactNode | React.ReactElement; + onClick?: React.AnchorHTMLAttributes['onClick'] & + (( + event: React.MouseEvent, + instance: UsePDFInstance, + ) => void); } /** @@ -573,7 +597,7 @@ declare namespace ReactPDF { * @see https://react-pdf.org/advanced#on-the-fly-rendering * @platform web */ - class PDFDownloadLink extends React.Component {} + export class PDFDownloadLink extends React.Component {} interface UsePDFInstance { loading: boolean; @@ -586,28 +610,29 @@ declare namespace ReactPDF { * React hook for creating and updating a PDF document instance * @platform web */ - function usePDF(options?: { + export function usePDF(options?: { document?: React.ReactElement; }): [ UsePDFInstance, (newDocument: React.ReactElement) => void, ]; - const Font: FontStore; + export const Font: FontStore; - const StyleSheet: { + export const StyleSheet: { create: (styles: T) => T; }; - const version: any; + export const version: any; - const PDFRenderer: any; + export const PDFRenderer: any; - const pdf: (initialValue?: React.ReactElement) => { + export const pdf: (initialValue?: React.ReactElement) => { container: any; isDirty: () => boolean; toString: () => string; toBlob: () => Promise; + // eslint-disable-next-line no-undef toBuffer: () => Promise; on: (event: 'change', callback: () => void) => void; updateContainer: ( @@ -617,122 +642,33 @@ declare namespace ReactPDF { removeListener: (event: 'change', callback: () => void) => void; }; - const renderToStream: ( + export const renderToStream: ( document: React.ReactElement, + // eslint-disable-next-line no-undef ) => Promise; /** * @deprecated use the `renderToBuffer` method */ - const renderToString: ( + export const renderToString: ( document: React.ReactElement, ) => Promise; - const renderToFile: ( + export const renderToFile: ( document: React.ReactElement, filePath: string, - callback?: (output: NodeJS.ReadableStream, filePath: string) => any, + // eslint-disable-next-line no-undef + callback?: (output: NodeJS.ReadableStream, _filePath: string) => any, + // eslint-disable-next-line no-undef ) => Promise; const render: typeof renderToFile; -} -declare const pdf: typeof ReactPDF.pdf; -declare const Document: typeof ReactPDF.Document; -declare const Page: typeof ReactPDF.Page; -declare const View: typeof ReactPDF.View; -declare const Image: typeof ReactPDF.Image; -declare const Text: typeof ReactPDF.Text; -declare const Canvas: typeof ReactPDF.Canvas; -declare const Link: typeof ReactPDF.Link; -declare const Form: typeof ReactPDF.Form; -declare const FormField: typeof ReactPDF.FormField; -declare const TextInput: typeof ReactPDF.TextInput; -declare const Picker: typeof ReactPDF.Picker; -declare const Checkbox: typeof ReactPDF.Checkbox; -declare const FormList: typeof ReactPDF.FormList; -declare const Note: typeof ReactPDF.Note; -declare const Svg: typeof ReactPDF.Svg; -declare const Line: typeof ReactPDF.Line; -declare const Polyline: typeof ReactPDF.Polyline; -declare const Polygon: typeof ReactPDF.Polygon; -declare const Path: typeof ReactPDF.Path; -declare const Rect: typeof ReactPDF.Rect; -declare const Circle: typeof ReactPDF.Circle; -declare const Ellipse: typeof ReactPDF.Ellipse; -declare const Tspan: typeof ReactPDF.Tspan; -declare const G: typeof ReactPDF.G; -declare const Stop: typeof ReactPDF.Stop; -declare const Defs: typeof ReactPDF.Defs; -declare const ClipPath: typeof ReactPDF.ClipPath; -declare const LinearGradient: typeof ReactPDF.LinearGradient; -declare const RadialGradient: typeof ReactPDF.RadialGradient; -declare const Font: typeof ReactPDF.Font; -declare const StyleSheet: typeof ReactPDF.StyleSheet; -declare const PDFRenderer: typeof ReactPDF.PDFRenderer; -declare const version: typeof ReactPDF.version; -declare const renderToFile: typeof ReactPDF.renderToFile; -declare const renderToStream: typeof ReactPDF.renderToStream; -declare const usePDF: typeof ReactPDF.usePDF; -declare const PDFViewer: typeof ReactPDF.PDFViewer; -declare const BlobProvider: typeof ReactPDF.BlobProvider; -declare const PDFDownloadLink: typeof ReactPDF.PDFDownloadLink; - -export default ReactPDF; - -/** - * Render document into a nodejs buffer - * @platform node - */ -export const renderToBuffer: ( - document: React.ReactElement, -) => Promise; - -/** - * Render document into a string - * @platform node - * @deprecated use the `renderToBuffer` method - */ -export const renderToString: typeof ReactPDF.renderToString; - -export { - pdf, - Document, - Page, - View, - Image, - Text, - Canvas, - Link, - Note, - Svg, - Line, - Polyline, - Polygon, - Path, - Rect, - Circle, - Ellipse, - Tspan, - G, - Stop, - Defs, - ClipPath, - LinearGradient, - RadialGradient, - Font, - StyleSheet, - PDFRenderer, - version, - renderToFile, - renderToStream, - usePDF, - PDFViewer, - BlobProvider, - PDFDownloadLink, - FormField, - TextInput, - Picker, - Checkbox, - FormList, -}; + /** + * Render document into a nodejs buffer + * @platform node + */ + export const renderToBuffer: ( + document: React.ReactElement, + ) => Promise; +} diff --git a/packages/renderer/package.json b/packages/renderer/package.json index 2c5f6c755..4e7913c13 100644 --- a/packages/renderer/package.json +++ b/packages/renderer/package.json @@ -1,23 +1,14 @@ { "name": "@react-pdf/renderer", - "version": "3.4.4", + "version": "4.1.5", "license": "MIT", "description": "Create PDF files on the browser and server", "author": "Diego Muracciole ", "homepage": "https://github.com/diegomura/react-pdf#readme", "type": "module", - "main": "./lib/react-pdf.cjs", - "module": "./lib/react-pdf.js", + "main": "./lib/react-pdf.js", "browser": { - "./lib/react-pdf.js": "./lib/react-pdf.browser.js", - "./lib/react-pdf.cjs": "./lib/react-pdf.browser.cjs" - }, - "exports": { - ".": { - "import": "./lib/react-pdf.js", - "require": "./lib/react-pdf.cjs", - "default": "./lib/react-pdf.js" - } + "./lib/react-pdf.js": "./lib/react-pdf.browser.js" }, "repository": { "type": "git", @@ -33,20 +24,20 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/font": "^2.5.1", - "@react-pdf/layout": "^3.12.1", - "@react-pdf/pdfkit": "^3.1.10", - "@react-pdf/primitives": "^3.1.1", - "@react-pdf/render": "^3.4.4", - "@react-pdf/types": "^2.5.0", + "@react-pdf/font": "^3.0.1", + "@react-pdf/layout": "^4.1.3", + "@react-pdf/pdfkit": "^4.0.0", + "@react-pdf/primitives": "^4.0.0", + "@react-pdf/reconciler": "^1.1.3", + "@react-pdf/render": "^4.0.2", + "@react-pdf/types": "^2.7.0", "events": "^3.3.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "queue": "^6.0.1", - "scheduler": "^0.17.0" + "queue": "^6.0.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "lint-staged": { "*.js": [ @@ -69,7 +60,6 @@ "browserify-zlib": "^0.2.0", "buffer": "^6.0.3", "process": "^0.11.10", - "react-reconciler": "0.23.0", "size-limit": "^11.0.1", "util": "^0.12.4" } diff --git a/packages/renderer/rollup.config.js b/packages/renderer/rollup.config.js index bb8abbfc1..ebcb52bbb 100644 --- a/packages/renderer/rollup.config.js +++ b/packages/renderer/rollup.config.js @@ -2,7 +2,6 @@ import json from '@rollup/plugin-json'; import babel from '@rollup/plugin-babel'; import nodeResolve from '@rollup/plugin-node-resolve'; import replace from '@rollup/plugin-replace'; -import alias from '@rollup/plugin-alias'; import ignore from 'rollup-plugin-ignore'; import terser from '@rollup/plugin-terser'; import commonjs from '@rollup/plugin-commonjs'; @@ -10,21 +9,6 @@ import copy from 'rollup-plugin-copy'; import pkg from './package.json' assert { type: 'json' }; -const cjs = { - exports: 'named', - format: 'cjs', - interop: 'compat', - sourcemap: true, -}; - -const esm = { - format: 'es', - sourcemap: true, -}; - -const getCJS = (override) => Object.assign({}, cjs, override); -const getESM = (override) => Object.assign({}, esm, override); - const nodeInput = './src/node/index.js'; const domInput = './src/dom/index.js'; @@ -39,25 +23,15 @@ const getExternal = ({ browser }) => [ /@babel\/runtime/, 'react/jsx-runtime', ...(browser ? [] : ['fs', 'path', 'url']), - ...Object.keys(pkg.dependencies).filter( - (name) => name !== 'react-reconciler', - ), + ...Object.keys(pkg.dependencies), ...Object.keys(pkg.peerDependencies), ]; const getPlugins = ({ browser, declarationDests, minify = false }) => [ json(), ...(browser ? [ignore(['fs', 'path', 'url'])] : []), - alias({ - entries: { - 'react-reconciler': - 'react-reconciler/cjs/react-reconciler.production.min.js', - }, - }), babel(babelConfig()), - commonjs({ - esmExternals: ['scheduler'], - }), + commonjs(), nodeResolve({ browser, preferBuiltins: !browser }), replace({ preventAssignment: true, @@ -76,10 +50,7 @@ const getPlugins = ({ browser, declarationDests, minify = false }) => [ const serverConfig = { input: nodeInput, - output: [ - getESM({ file: 'lib/react-pdf.js' }), - getCJS({ file: 'lib/react-pdf.cjs' }), - ], + output: { file: 'lib/react-pdf.js', format: 'es', sourcemap: true }, external: getExternal({ browser: false }), plugins: getPlugins({ browser: false, @@ -89,10 +60,7 @@ const serverConfig = { const serverProdConfig = { input: nodeInput, - output: [ - getESM({ file: 'lib/react-pdf.min.js', sourcemap: false }), - getCJS({ file: 'lib/react-pdf.min.cjs', sourcemap: false }), - ], + output: { file: 'lib/react-pdf.min.js', sourcemap: false, format: 'es' }, external: getExternal({ browser: false }), plugins: getPlugins({ browser: false, @@ -103,10 +71,7 @@ const serverProdConfig = { const browserConfig = { input: domInput, - output: [ - getESM({ file: 'lib/react-pdf.browser.js' }), - getCJS({ file: 'lib/react-pdf.browser.cjs' }), - ], + output: { file: 'lib/react-pdf.browser.js', format: 'es', sourcemap: true }, external: getExternal({ browser: true }), plugins: getPlugins({ browser: true, @@ -119,10 +84,7 @@ const browserConfig = { const browserProdConfig = { input: domInput, - output: [ - getESM({ file: 'lib/react-pdf.browser.min.js', sourcemap: false }), - getCJS({ file: 'lib/react-pdf.browser.min.cjs', sourcemap: false }), - ], + output: { file: 'lib/react-pdf.browser.min.js', format: 'es' }, external: getExternal({ browser: true }), plugins: getPlugins({ browser: true, diff --git a/packages/renderer/src/dom/PDFDownloadLink.js b/packages/renderer/src/dom/PDFDownloadLink.js index 66cdcff3f..8c11bd22a 100644 --- a/packages/renderer/src/dom/PDFDownloadLink.js +++ b/packages/renderer/src/dom/PDFDownloadLink.js @@ -22,7 +22,7 @@ export const PDFDownloadLink = ({ } const handleDownloadIE = () => { - if (window.navigator.msSaveBlob) { + if (instance && window.navigator.msSaveBlob) { // IE window.navigator.msSaveBlob(instance.blob, fileName); } diff --git a/packages/renderer/src/index.js b/packages/renderer/src/index.js index c6f3ac4ff..1c04ef7f2 100644 --- a/packages/renderer/src/index.js +++ b/packages/renderer/src/index.js @@ -5,6 +5,7 @@ import layoutDocument from '@react-pdf/layout'; import createRenderer from './renderer'; import packageJson from '../package.json'; +import { omitNils } from './utils'; const { version } = packageJson; @@ -35,7 +36,20 @@ const pdf = (initialValue) => { const render = async (compress = true) => { const props = container.document.props || {}; - const { pdfVersion, language, pageLayout, pageMode } = props; + const { + pdfVersion, + language, + pageLayout, + pageMode, + title, + author, + subject, + keyboards, + creator = 'react-pdf', + producer = 'react-pdf', + creationDate = new Date(), + modificationDate, + } = props; const ctx = new PDFDocument({ compress, @@ -45,6 +59,16 @@ const pdf = (initialValue) => { autoFirstPage: false, pageLayout, pageMode, + info: omitNils({ + Title: title, + Author: author, + Subject: subject, + Keywords: keyboards, + Creator: creator, + Producer: producer, + CreationDate: creationDate, + ModificationDate: modificationDate, + }), }); const layout = await layoutDocument(container.document, fontStore); @@ -84,11 +108,8 @@ const pdf = (initialValue) => { // TODO: rename this method to `toStream` in next major release, because it return stream not a buffer const toBuffer = async () => { - const { - layout: _INTERNAL__LAYOUT__DATA_, - fileStream, - } = await render(); - callOnRender({_INTERNAL__LAYOUT__DATA_}); + const { layout: _INTERNAL__LAYOUT__DATA_, fileStream } = await render(); + callOnRender({ _INTERNAL__LAYOUT__DATA_ }); return fileStream; }; diff --git a/packages/renderer/src/renderer.js b/packages/renderer/src/renderer.js index 026e11b07..9a3183f91 100644 --- a/packages/renderer/src/renderer.js +++ b/packages/renderer/src/renderer.js @@ -1,19 +1,25 @@ /* eslint-disable import/no-extraneous-dependencies */ -/* eslint-disable no-unused-vars */ /* eslint-disable no-param-reassign */ -import ReactFiberReconciler from 'react-reconciler'; -import * as scheduler from 'scheduler'; +import Reconciler from '@react-pdf/reconciler'; -import propsEqual from './utils/propsEqual'; +const createInstance = (type, { style, children, ...props }) => ({ + type, + box: {}, + style: style || {}, + props: props || {}, + children: [], +}); -const emptyObject = {}; +const createTextInstance = (text) => ({ type: 'TEXT_INSTANCE', value: text }); -const appendChild = (parentInstance, child) => { +const appendChild = (parent, child) => { const isParentText = - parentInstance.type === 'TEXT' || - parentInstance.type === 'LINK' || - parentInstance.type === 'TSPAN'; + parent.type === 'TEXT' || + parent.type === 'LINK' || + parent.type === 'TSPAN' || + parent.type === 'NOTE'; + const isChildTextInstance = child.type === 'TEXT_INSTANCE'; const isOrphanTextInstance = isChildTextInstance && !isParentText; @@ -26,123 +32,63 @@ const appendChild = (parentInstance, child) => { return; } - parentInstance.children.push(child); + parent.children.push(child); }; -const createRenderer = ({ onChange = () => {} }) => { - return ReactFiberReconciler({ - schedulePassiveEffects: scheduler.unstable_scheduleCallback, - cancelPassiveEffects: scheduler.unstable_cancelCallback, - - supportsMutation: true, - - isPrimaryRenderer: false, - - warnsIfNotActing: false, - - appendInitialChild: appendChild, - - createInstance(type, { style, children, ...props }) { - return { - type, - box: {}, - style: style || {}, - props: props || {}, - children: [], - }; - }, - - createTextInstance(text, rootContainerInstance) { - return { type: 'TEXT_INSTANCE', value: text }; - }, - - finalizeInitialChildren(element, type, props) { - return false; - }, +const appendChildToContainer = (parentInstance, child) => { + if (parentInstance.type === 'ROOT') { + parentInstance.document = child; + } else { + appendChild(parentInstance, child); + } +}; - getPublicInstance(instance) { - return instance; - }, +const insertBefore = (parentInstance, child, beforeChild) => { + const index = parentInstance.children?.indexOf(beforeChild); - prepareForCommit() { - // Noop - }, + if (index === undefined) return; - clearContainer() { - // Noop - }, + if (index !== -1 && child) parentInstance.children.splice(index, 0, child); +}; - prepareUpdate(element, type, oldProps, newProps) { - return !propsEqual(oldProps, newProps); - }, +const removeChild = (parentInstance, child) => { + const index = parentInstance.children?.indexOf(child); - resetAfterCommit: onChange, + if (index === undefined) return; - resetTextContent(element) { - // Noop - }, + if (index !== -1) parentInstance.children.splice(index, 1); +}; - getRootHostContext() { - return emptyObject; - }, +const removeChildFromContainer = (parentInstance, child) => { + const index = parentInstance.children?.indexOf(child); - getChildHostContext() { - return emptyObject; - }, + if (index === undefined) return; - shouldSetTextContent(type, props) { - return false; - }, + if (index !== -1) parentInstance.children.splice(index, 1); +}; - now: Date.now, +const commitTextUpdate = (textInstance, oldText, newText) => { + textInstance.value = newText; +}; - useSyncScheduling: true, +const commitUpdate = (instance, updatePayload, type, oldProps, newProps) => { + const { style, ...props } = newProps; + instance.props = props; + instance.style = style; +}; +const createRenderer = ({ onChange = () => {} }) => + Reconciler({ appendChild, - - appendChildToContainer(parentInstance, child) { - if (parentInstance.type === 'ROOT') { - parentInstance.document = child; - } else { - appendChild(parentInstance, child); - } - }, - - insertBefore(parentInstance, child, beforeChild) { - const index = parentInstance.children?.indexOf(beforeChild); - - if (index === undefined) return; - - if (index !== -1 && child) - parentInstance.children.splice(index, 0, child); - }, - - removeChild(parentInstance, child) { - const index = parentInstance.children?.indexOf(child); - - if (index === undefined) return; - - if (index !== -1) parentInstance.children.splice(index, 1); - }, - - removeChildFromContainer(parentInstance, child) { - const index = parentInstance.children?.indexOf(child); - - if (index === undefined) return; - - if (index !== -1) parentInstance.children.splice(index, 1); - }, - - commitTextUpdate(textInstance, oldText, newText) { - textInstance.value = newText; - }, - - commitUpdate(instance, updatePayload, type, oldProps, newProps) { - const { style, ...props } = newProps; - instance.props = props; - instance.style = style; - }, + appendChildToContainer, + commitTextUpdate, + commitUpdate, + createInstance, + createTextInstance, + insertBefore, + removeChild, + removeChildFromContainer, + resetAfterCommit: onChange, }); -}; export default createRenderer; diff --git a/packages/renderer/src/utils.js b/packages/renderer/src/utils.js new file mode 100644 index 000000000..067f2582b --- /dev/null +++ b/packages/renderer/src/utils.js @@ -0,0 +1,6 @@ +/* eslint-disable import/prefer-default-export */ + +export const omitNils = (object) => + Object.fromEntries( + Object.entries(object).filter(([, value]) => value !== undefined), + ); diff --git a/packages/renderer/tests/gap.test.jsx b/packages/renderer/tests/gap.test.jsx index 1a5ed0bdc..b99812887 100644 --- a/packages/renderer/tests/gap.test.jsx +++ b/packages/renderer/tests/gap.test.jsx @@ -55,6 +55,34 @@ describe('flex', () => { expect(image).toMatchImageSnapshot(); }); + test('should support percentage gap', async () => { + const image = await mount( + + {items.map((color, index) => ( + + ))} + , + ); + + expect(image).toMatchImageSnapshot(); + }); + test('should support rowGap and columnGap', async () => { const image = await mount( { expect(image).toMatchImageSnapshot(); }); - test('should throw when value is percent', async () => { - expect(mount()).rejects.toThrow( - "You can't pass percentage values to columnGap property", + test('should support percentage rowGap and columnGap', async () => { + const image = await mount( + + {items.map((color, index) => ( + + ))} + , ); + + expect(image).toMatchImageSnapshot(); }); }); diff --git a/packages/renderer/tests/snapshots/gap-test-jsx-tests-gap-test-jsx-flex-should-support-percentage-gap-1-snap.png b/packages/renderer/tests/snapshots/gap-test-jsx-tests-gap-test-jsx-flex-should-support-percentage-gap-1-snap.png new file mode 100644 index 000000000..46eab526e Binary files /dev/null and b/packages/renderer/tests/snapshots/gap-test-jsx-tests-gap-test-jsx-flex-should-support-percentage-gap-1-snap.png differ diff --git a/packages/renderer/tests/snapshots/gap-test-jsx-tests-gap-test-jsx-flex-should-support-percentage-row-gap-and-column-gap-1-snap.png b/packages/renderer/tests/snapshots/gap-test-jsx-tests-gap-test-jsx-flex-should-support-percentage-row-gap-and-column-gap-1-snap.png new file mode 100644 index 000000000..ebf44cccb Binary files /dev/null and b/packages/renderer/tests/snapshots/gap-test-jsx-tests-gap-test-jsx-flex-should-support-percentage-row-gap-and-column-gap-1-snap.png differ diff --git a/packages/stylesheet/CHANGELOG.md b/packages/stylesheet/CHANGELOG.md index dc42adf7b..be5b2fbfc 100644 --- a/packages/stylesheet/CHANGELOG.md +++ b/packages/stylesheet/CHANGELOG.md @@ -1,5 +1,44 @@ # @react-pdf/stylesheet +## 5.1.0 + +### Minor Changes + +- [#2955](https://github.com/diegomura/react-pdf/pull/2955) [`425f1183`](https://github.com/diegomura/react-pdf/commit/425f1183bba9a83fd5712a1371abb6cea2ed8fca) Thanks [@diegomura](https://github.com/diegomura)! - feat: support rem units + +### Patch Changes + +- [#2952](https://github.com/diegomura/react-pdf/pull/2952) [`2c3c887e`](https://github.com/diegomura/react-pdf/commit/2c3c887ea2d3aed2863f49bff375d08feaf975aa) Thanks [@diegomura](https://github.com/diegomura)! - feat: support multiple line-height units + +## 5.0.1 + +### Patch Changes + +- [#2950](https://github.com/diegomura/react-pdf/pull/2950) [`77e480cd`](https://github.com/diegomura/react-pdf/commit/77e480cdd161270ac07453525dfaf993e2d3f17f) Thanks [@diegomura](https://github.com/diegomura)! - feat: accept commas between transformations + +## 5.0.0 + +### Major Changes + +- [#2871](https://github.com/diegomura/react-pdf/pull/2871) [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119) Thanks [@diegomura](https://github.com/diegomura)! - feat!: drop cjs support + +### Patch Changes + +- Updated dependencies [[`46c3047d`](https://github.com/diegomura/react-pdf/commit/46c3047de56ae82f062b72c4910a4e6096eee99f), [`55973278`](https://github.com/diegomura/react-pdf/commit/55973278ac8bc8f703b63844f57d6f155ae8d86f), [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119)]: + - @react-pdf/types@2.7.0 + - @react-pdf/fns@3.0.0 + +## 4.3.0 + +### Minor Changes + +- [#2771](https://github.com/diegomura/react-pdf/pull/2771) [`8e6a832`](https://github.com/diegomura/react-pdf/commit/8e6a8320f86354aff950c296a96bc41a33e9dab2) Thanks [@nikischin](https://github.com/nikischin)! - fix: fix dpi + +### Patch Changes + +- Updated dependencies [[`8e6a832`](https://github.com/diegomura/react-pdf/commit/8e6a8320f86354aff950c296a96bc41a33e9dab2), [`4bafab8`](https://github.com/diegomura/react-pdf/commit/4bafab8455c9003759f48bad20a720baf4ed189b)]: + - @react-pdf/types@2.6.0 + ## 4.2.5 ### Patch Changes diff --git a/packages/stylesheet/package.json b/packages/stylesheet/package.json index 814255fa8..a7c93131f 100644 --- a/packages/stylesheet/package.json +++ b/packages/stylesheet/package.json @@ -1,20 +1,12 @@ { "name": "@react-pdf/stylesheet", - "version": "4.2.5", + "version": "5.1.0", "license": "MIT", "description": "A styles engine for Node and the browser", "author": "Diego Muracciole ", "homepage": "https://github.com/diegomura/react-pdf#readme", "type": "module", - "main": "./lib/index.cjs", - "module": "./lib/index.js", - "exports": { - ".": { - "import": "./lib/index.js", - "require": "./lib/index.cjs", - "default": "./lib/index.js" - } - }, + "main": "./lib/index.js", "repository": { "type": "git", "url": "https://github.com/diegomura/react-pdf.git", @@ -27,8 +19,8 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/fns": "2.2.1", - "@react-pdf/types": "^2.5.0", + "@react-pdf/fns": "3.0.0", + "@react-pdf/types": "^2.7.0", "color-string": "^1.9.1", "hsl-to-hex": "^1.0.0", "media-engine": "^1.0.3", diff --git a/packages/stylesheet/rollup.config.js b/packages/stylesheet/rollup.config.js index 18084bac0..61a4d3cc3 100644 --- a/packages/stylesheet/rollup.config.js +++ b/packages/stylesheet/rollup.config.js @@ -3,19 +3,6 @@ import babel from '@rollup/plugin-babel'; import pkg from './package.json' assert { type: 'json' }; -const cjs = { - exports: 'named', - format: 'cjs', - interop: 'compat', -}; - -const esm = { - format: 'es', -}; - -const getCJS = (override) => Object.assign({}, cjs, override); -const getESM = (override) => Object.assign({}, esm, override); - const input = 'src/index.js'; const getExternal = () => [ @@ -35,7 +22,7 @@ const getPlugins = () => [ const config = { input, - output: [getESM({ file: 'lib/index.js' }), getCJS({ file: 'lib/index.cjs' })], + output: { format: 'es', file: 'lib/index.js' }, external: getExternal(), plugins: getPlugins(), }; diff --git a/packages/stylesheet/src/expand/borders.js b/packages/stylesheet/src/expand/borders.js index da3c531d7..928463880 100644 --- a/packages/stylesheet/src/expand/borders.js +++ b/packages/stylesheet/src/expand/borders.js @@ -1,5 +1,5 @@ const BORDER_SHORTHAND_REGEX = - /(-?\d+(\.\d+)?(px|in|mm|cm|pt|vw|vh|px)?)\s(\S+)\s(.+)/; + /(-?\d+(\.\d+)?(in|mm|cm|pt|vw|vh|px|rem)?)\s(\S+)\s(.+)/; const matchBorderShorthand = (value) => value.match(BORDER_SHORTHAND_REGEX) || []; diff --git a/packages/stylesheet/src/transform/index.js b/packages/stylesheet/src/transform/index.js index 972d3eb34..b55f3e523 100644 --- a/packages/stylesheet/src/transform/index.js +++ b/packages/stylesheet/src/transform/index.js @@ -2,6 +2,7 @@ import transformUnits from './units'; import transformColor from './colors'; import processTransform from './transform'; import processFontWeight from './fontWeight'; +import processLineHeight from './lineHeight'; import processObjectPosition from './objectPosition'; import processTransformOrigin from './transformOrigin'; import castFloat from '../utils/castFloat'; @@ -9,14 +10,15 @@ import castFloat from '../utils/castFloat'; const handlers = { transform: processTransform, fontWeight: processFontWeight, + lineHeight: processLineHeight, objectPositionX: processObjectPosition, objectPositionY: processObjectPosition, transformOriginX: processTransformOrigin, transformOriginY: processTransformOrigin, }; -const transformStyle = (key, value, container) => { - const result = handlers[key] ? handlers[key](value) : value; +const transformStyle = (key, value, styles, container) => { + const result = handlers[key] ? handlers[key](value, styles) : value; return transformColor(transformUnits(container, castFloat(result))); }; @@ -33,16 +35,16 @@ const transformStyle = (key, value, container) => { * @param {Object} container * @returns {Transform} transform function */ -const transform = (container) => (style) => { - if (!style) return style; +const transform = (container) => (styles) => { + if (!styles) return styles; - const propsArray = Object.keys(style); + const propsArray = Object.keys(styles); const resolvedStyle = {}; for (let i = 0; i < propsArray.length; i += 1) { const key = propsArray[i]; - const value = style[key]; - const transformed = transformStyle(key, value, container); + const value = styles[key]; + const transformed = transformStyle(key, value, styles, container); resolvedStyle[key] = transformed; } diff --git a/packages/stylesheet/src/transform/lineHeight.js b/packages/stylesheet/src/transform/lineHeight.js new file mode 100644 index 000000000..47cebf5d3 --- /dev/null +++ b/packages/stylesheet/src/transform/lineHeight.js @@ -0,0 +1,18 @@ +/* eslint-disable no-restricted-globals */ + +import { matchPercent } from '@react-pdf/fns'; + +const processLineHeight = (value, styles) => { + if (value === '') return value; + + const { fontSize = 18 } = styles; + + // Percent values: use this number multiplied by the element's font size + const { percent } = matchPercent(value) || {}; + if (percent) return percent * fontSize; + + // Unitless values: use this number multiplied by the element's font size + return isNaN(value) ? value : value * fontSize; +}; + +export default processLineHeight; diff --git a/packages/stylesheet/src/transform/transform.js b/packages/stylesheet/src/transform/transform.js index 996ac3bcc..a18a5b2ab 100644 --- a/packages/stylesheet/src/transform/transform.js +++ b/packages/stylesheet/src/transform/transform.js @@ -1,5 +1,5 @@ const parse = (transformString) => { - const transforms = transformString.trim().split(/\) |\)/); + const transforms = transformString.trim().split(/\)[ ,]|\)/); // Handle "initial", "inherit", "unset". if (transforms.length === 1) { @@ -15,7 +15,7 @@ const parse = (transformString) => { const [name, rawValue] = transform.split('('); const splitChar = rawValue.indexOf(',') >= 0 ? ',' : ' '; const value = rawValue.split(splitChar).map((val) => val.trim()); - parsed.push({ operation: name, value }); + parsed.push({ operation: name.trim(), value }); } } diff --git a/packages/stylesheet/src/transform/units.js b/packages/stylesheet/src/transform/units.js index 01ec54b2e..75541f80f 100644 --- a/packages/stylesheet/src/transform/units.js +++ b/packages/stylesheet/src/transform/units.js @@ -5,7 +5,7 @@ * @returns {Object} parsed value */ const parseValue = (value) => { - const match = /^(-?\d*\.?\d+)(in|mm|cm|pt|vh|vw|px)?$/g.exec(value); + const match = /^(-?\d*\.?\d+)(in|mm|cm|pt|vh|vw|px|rem)?$/g.exec(value); return match ? { value: parseFloat(match[1]), unit: match[2] || 'pt' } @@ -22,13 +22,16 @@ const parseValue = (value) => { const transformUnit = (container, value) => { const scalar = parseValue(value); - const dpi = 72; // Removed: container.dpi || 72 - const mmFactor = (1 / 25.4) * dpi; - const cmFactor = (1 / 2.54) * dpi; + const outputDpi = 72; + const inputDpi = container.dpi || 72; + const mmFactor = (1 / 25.4) * outputDpi; + const cmFactor = (1 / 2.54) * outputDpi; switch (scalar.unit) { + case 'rem': + return scalar.value * (container.remBase || 18); case 'in': - return scalar.value * dpi; + return scalar.value * outputDpi; case 'mm': return scalar.value * mmFactor; case 'cm': @@ -37,6 +40,8 @@ const transformUnit = (container, value) => { return scalar.value * (container.height / 100); case 'vw': return scalar.value * (container.width / 100); + case 'px': + return Math.round(scalar.value * (outputDpi / inputDpi)); default: return scalar.value; } diff --git a/packages/stylesheet/tests/resolve.test.js b/packages/stylesheet/tests/resolve.test.js index ee978975c..c75e8fbea 100644 --- a/packages/stylesheet/tests/resolve.test.js +++ b/packages/stylesheet/tests/resolve.test.js @@ -581,4 +581,16 @@ describe('stylesheet resolve', () => { expect(styles).toEqual({ fontSize: 10 }); }); + + test('should resolve rem units correctly', () => { + const styles = resolve({ remBase: 10 }, { fontSize: '2rem' }); + + expect(styles).toEqual({ fontSize: 20 }); + }); + + test('should resolve rem units when base not specificed', () => { + const styles = resolve({}, { fontSize: '2rem' }); + + expect(styles).toEqual({ fontSize: 36 }); + }); }); diff --git a/packages/stylesheet/tests/transform.test.js b/packages/stylesheet/tests/transform.test.js index 4190b8201..09182c3db 100644 --- a/packages/stylesheet/tests/transform.test.js +++ b/packages/stylesheet/tests/transform.test.js @@ -2,7 +2,7 @@ import { describe, expect, test } from 'vitest'; import _transformStyles from '../src/transform'; -const CONTAINER = { width: 200, height: 400 }; +const CONTAINER = { width: 200, height: 400, remBase: 10 }; const transformStyles = _transformStyles(CONTAINER); @@ -105,6 +105,56 @@ describe('stylesheet transform', () => { }); }); + describe('transform lineHeight', () => { + test('should transform unitless number amount', () => { + const styles = transformStyles({ lineHeight: 2 }); + + expect(styles.lineHeight).toBe(18 * 2); + }); + + test('should transform unitless number amount with font-size', () => { + const styles = transformStyles({ lineHeight: 2, fontSize: 10 }); + + expect(styles.lineHeight).toBe(10 * 2); + }); + + test('should transform unitless string amount', () => { + const styles = transformStyles({ lineHeight: '2' }); + + expect(styles.lineHeight).toBe(18 * 2); + }); + + test('should transform unitless string amount with font-size', () => { + const styles = transformStyles({ lineHeight: '2', fontSize: 10 }); + + expect(styles.lineHeight).toBe(10 * 2); + }); + + test('should transform percentage amount', () => { + const styles = transformStyles({ lineHeight: '200%' }); + + expect(styles.lineHeight).toBe(18 * 2); + }); + + test('should transform percentage amount with font-size', () => { + const styles = transformStyles({ lineHeight: '200%', fontSize: 10 }); + + expect(styles.lineHeight).toBe(10 * 2); + }); + + test('should transform height px dimensions', () => { + const styles = transformStyles({ lineHeight: '20px' }); + + expect(styles.lineHeight).toBe(20); + }); + + test('should transform width mm dimensions', () => { + const styles = transformStyles({ lineHeight: '20mm' }); + + expect(styles.lineHeight).toBeCloseTo(56.69, 1); + }); + }); + describe('transform colors', () => { test('should keep hex values as they are', () => { const styles = transformStyles({ color: '#0000FF' }); diff --git a/packages/svgkit/CHANGELOG.md b/packages/svgkit/CHANGELOG.md index 594b66311..d2149a0d7 100644 --- a/packages/svgkit/CHANGELOG.md +++ b/packages/svgkit/CHANGELOG.md @@ -1,5 +1,19 @@ # @react-pdf/svgkit +## 2.3.12 + +### Patch Changes + +- Updated dependencies [[`fdcef566`](https://github.com/diegomura/react-pdf/commit/fdcef5666e4eeed542b625d394cdfe60d6346600), [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119)]: + - @react-pdf/pdfkit@4.0.0 + +## 2.3.11 + +### Patch Changes + +- Updated dependencies [[`8e6a832`](https://github.com/diegomura/react-pdf/commit/8e6a8320f86354aff950c296a96bc41a33e9dab2)]: + - @react-pdf/pdfkit@3.2.0 + ## 2.3.10 ### Patch Changes diff --git a/packages/svgkit/package.json b/packages/svgkit/package.json index 4ba555d48..aa3a42938 100644 --- a/packages/svgkit/package.json +++ b/packages/svgkit/package.json @@ -1,7 +1,7 @@ { "name": "@react-pdf/svgkit", "license": "MIT", - "version": "2.3.10", + "version": "2.3.12", "description": "A SVG generation library for Node.js and browser", "type": "module", "main": "./lib/index.js", @@ -23,6 +23,6 @@ ], "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/pdfkit": "^3.1.10" + "@react-pdf/pdfkit": "^4.0.0" } } diff --git a/packages/textkit/CHANGELOG.md b/packages/textkit/CHANGELOG.md index 4f0a3d4d0..b5cbeab8c 100644 --- a/packages/textkit/CHANGELOG.md +++ b/packages/textkit/CHANGELOG.md @@ -1,5 +1,22 @@ # @react-pdf/textkit +## 5.0.1 + +### Patch Changes + +- [#2975](https://github.com/diegomura/react-pdf/pull/2975) [`00bfdc1e`](https://github.com/diegomura/react-pdf/commit/00bfdc1e5a6c673d2de7b3ab09d5020e932562fb) Thanks [@daslaf](https://github.com/daslaf)! - fix issue with indentation shrinking all lines + +## 5.0.0 + +### Major Changes + +- [#2871](https://github.com/diegomura/react-pdf/pull/2871) [`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119) Thanks [@diegomura](https://github.com/diegomura)! - feat!: drop cjs support + +### Patch Changes + +- Updated dependencies [[`70f29a04`](https://github.com/diegomura/react-pdf/commit/70f29a0407b1d56e9a7932b25c0d69132e9b4119)]: + - @react-pdf/fns@3.0.0 + ## 4.4.1 ### Patch Changes diff --git a/packages/textkit/package.json b/packages/textkit/package.json index 28d69e0f6..9b1754393 100644 --- a/packages/textkit/package.json +++ b/packages/textkit/package.json @@ -1,18 +1,10 @@ { "name": "@react-pdf/textkit", "license": "MIT", - "version": "4.4.1", + "version": "5.0.1", "description": "An advanced text layout framework", "type": "module", - "main": "./lib/textkit.cjs", - "module": "./lib/textkit.js", - "exports": { - ".": { - "import": "./lib/textkit.js", - "require": "./lib/textkit.cjs", - "default": "./lib/textkit.js" - } - }, + "main": "./lib/textkit.js", "repository": { "type": "git", "url": "https://github.com/diegomura/react-pdf.git", @@ -32,7 +24,7 @@ ], "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/fns": "2.2.1", + "@react-pdf/fns": "3.0.0", "bidi-js": "^1.0.2", "hyphen": "^1.6.4", "unicode-properties": "^1.4.1" diff --git a/packages/textkit/rollup.config.js b/packages/textkit/rollup.config.js index f2ec1c05b..55e8fc286 100644 --- a/packages/textkit/rollup.config.js +++ b/packages/textkit/rollup.config.js @@ -3,19 +3,6 @@ import localResolve from 'rollup-plugin-local-resolve'; import pkg from './package.json' assert { type: 'json' }; -const cjs = { - exports: 'named', - format: 'cjs', - interop: 'compat', -}; - -const esm = { - format: 'es', -}; - -const getCJS = (override) => Object.assign({}, cjs, override); -const getESM = (override) => Object.assign({}, esm, override); - const babelConfig = () => ({ babelrc: true, exclude: 'node_modules/**', @@ -34,10 +21,7 @@ const getPlugins = () => [localResolve(), babel(babelConfig())]; const config = { input, - output: [ - getESM({ file: 'lib/textkit.js' }), - getCJS({ file: 'lib/textkit.cjs' }), - ], + output: { format: 'es', file: 'lib/textkit.js' }, external: getExternal(), plugins: getPlugins(), }; diff --git a/packages/textkit/src/layout/layoutParagraph.js b/packages/textkit/src/layout/layoutParagraph.js index fec2ffcc0..aec782bd1 100644 --- a/packages/textkit/src/layout/layoutParagraph.js +++ b/packages/textkit/src/layout/layoutParagraph.js @@ -82,7 +82,7 @@ const layoutParagraph = (engines, options) => { const rects = generateLineRects(container, height); const availableWidths = rects.map((r) => r.width); - availableWidths[0] -= indent; + availableWidths.unshift(availableWidths[0] - indent); const lines = engines.linebreaker(options)(paragraph, availableWidths); diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index e3537b03f..ec28be8d6 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,23 @@ # @react-pdf/types +## 2.7.0 + +### Minor Changes + +- [#2875](https://github.com/diegomura/react-pdf/pull/2875) [`46c3047d`](https://github.com/diegomura/react-pdf/commit/46c3047de56ae82f062b72c4910a4e6096eee99f) Thanks [@diegomura](https://github.com/diegomura)! - feat: add position: static support + +- [#2874](https://github.com/diegomura/react-pdf/pull/2874) [`55973278`](https://github.com/diegomura/react-pdf/commit/55973278ac8bc8f703b63844f57d6f155ae8d86f) Thanks [@diegomura](https://github.com/diegomura)! - feat: add align-content: space-evenly support + +## 2.6.0 + +### Minor Changes + +- [#2771](https://github.com/diegomura/react-pdf/pull/2771) [`8e6a832`](https://github.com/diegomura/react-pdf/commit/8e6a8320f86354aff950c296a96bc41a33e9dab2) Thanks [@nikischin](https://github.com/nikischin)! - fix: fix dpi + +### Patch Changes + +- [#2727](https://github.com/diegomura/react-pdf/pull/2727) [`4bafab8`](https://github.com/diegomura/react-pdf/commit/4bafab8455c9003759f48bad20a720baf4ed189b) Thanks [@hendrikmolder](https://github.com/hendrikmolder)! - accept string array for `fontFamily` in stylesheets + ## 2.5.0 ### Minor Changes diff --git a/packages/types/font.d.ts b/packages/types/font.d.ts index 3e6b03731..e04d1ccb8 100644 --- a/packages/types/font.d.ts +++ b/packages/types/font.d.ts @@ -20,7 +20,7 @@ export interface FontDescriptor { interface FontSource { src: string; - fontFamily: string | string[]; + fontFamily: string; fontStyle: FontStyle; fontWeight: number; data: any; diff --git a/packages/types/image.d.ts b/packages/types/image.d.ts index 3843d5824..728dfe3f0 100644 --- a/packages/types/image.d.ts +++ b/packages/types/image.d.ts @@ -10,9 +10,9 @@ type SourceDataBuffer = { data: Buffer; format: 'png' | 'jpg' }; type SourceURLObject = { uri: string; - method: HTTPMethod; - body: any; - headers: any; + method?: HTTPMethod; + body?: any; + headers?: any; credentials?: 'omit' | 'same-origin' | 'include'; }; diff --git a/packages/types/package.json b/packages/types/package.json index c0f82862e..630a61129 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@react-pdf/types", - "version": "2.5.0", + "version": "2.7.0", "license": "MIT", "description": "React-pdf TypeScript definitions", "author": "Diego Muracciole ", diff --git a/packages/types/style.d.ts b/packages/types/style.d.ts index 167feabdf..e6a5f01b7 100644 --- a/packages/types/style.d.ts +++ b/packages/types/style.d.ts @@ -7,7 +7,8 @@ export interface Style { | 'center' | 'stretch' | 'space-between' - | 'space-around'; + | 'space-around' + | 'space-evenly'; alignItems?: 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline'; alignSelf?: | 'auto' @@ -40,7 +41,7 @@ export interface Style { bottom?: number | string; display?: 'flex' | 'none'; left?: number | string; - position?: 'absolute' | 'relative'; + position?: 'absolute' | 'relative' | 'static'; right?: number | string; top?: number | string; overflow?: 'hidden'; @@ -64,7 +65,7 @@ export interface Style { // Text fontSize?: number | string; - fontFamily?: string; + fontFamily?: string | string[]; fontStyle?: string | 'normal'; fontWeight?: | number @@ -96,7 +97,7 @@ export interface Style { textDecorationStyle?: 'dashed' | 'dotted' | 'solid' | string; // ? textIndent?: any; // ? textOverflow?: 'ellipsis'; - textTransform?: 'capitalize' | 'lowercase' | 'uppercase'; + textTransform?: 'capitalize' | 'lowercase' | 'uppercase' | 'none'; verticalAlign?: 'sub' | 'super'; // Sizing/positioning diff --git a/packages/types/svg.d.ts b/packages/types/svg.d.ts index 7d5cfe495..98ecdbf58 100644 --- a/packages/types/svg.d.ts +++ b/packages/types/svg.d.ts @@ -10,7 +10,7 @@ export interface SVGPresentationAttributes { fillRule?: 'nonzero' | 'evenodd'; strokeOpacity?: string | number; textAnchor?: 'start' | 'middle' | 'end'; - strokeLineCap?: 'butt' | 'round' | 'square'; + strokeLinecap?: 'butt' | 'round' | 'square'; strokeLinejoin?: 'butt' | 'round' | 'square'; visibility?: 'visible' | 'hidden' | 'collapse'; clipPath?: string; diff --git a/yarn.lock b/yarn.lock index 588d522d3..9486e3b8f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,11 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -748,8 +753,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-react-jsx-development@^7.18.6", "@babel/plugin-transform-react-jsx-self@^7.23.3": - name "@babel/plugin-transform-react-jsx-development" +"@babel/plugin-transform-react-jsx-development@^7.18.6": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz#ed3e7dadde046cce761a8e3cf003a13d1a7972d9" + integrity sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-self@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz#ed3e7dadde046cce761a8e3cf003a13d1a7972d9" integrity sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ== @@ -1227,121 +1238,243 @@ human-id "^1.0.2" prettier "^2.7.1" +"@emnapi/runtime@^1.2.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.3.1.tgz#0fcaa575afc31f455fd33534c19381cfce6c6f60" + integrity sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw== + dependencies: + tslib "^2.4.0" + "@esbuild/aix-ppc64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz#2acd20be6d4f0458bc8c784103495ff24f13b1d3" integrity sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g== +"@esbuild/aix-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" + integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + "@esbuild/android-arm64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz#b45d000017385c9051a4f03e17078abb935be220" integrity sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q== +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + "@esbuild/android-arm@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.11.tgz#f46f55414e1c3614ac682b29977792131238164c" integrity sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw== +"@esbuild/android-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" + integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + "@esbuild/android-x64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.11.tgz#bfc01e91740b82011ef503c48f548950824922b2" integrity sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg== +"@esbuild/android-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" + integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + "@esbuild/darwin-arm64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz#533fb7f5a08c37121d82c66198263dcc1bed29bf" integrity sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ== +"@esbuild/darwin-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" + integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + "@esbuild/darwin-x64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz#62f3819eff7e4ddc656b7c6815a31cf9a1e7d98e" integrity sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g== +"@esbuild/darwin-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" + integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + "@esbuild/freebsd-arm64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz#d478b4195aa3ca44160272dab85ef8baf4175b4a" integrity sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA== +"@esbuild/freebsd-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" + integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + "@esbuild/freebsd-x64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz#7bdcc1917409178257ca6a1a27fe06e797ec18a2" integrity sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw== +"@esbuild/freebsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" + integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + "@esbuild/linux-arm64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz#58ad4ff11685fcc735d7ff4ca759ab18fcfe4545" integrity sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg== +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + "@esbuild/linux-arm@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz#ce82246d873b5534d34de1e5c1b33026f35e60e3" integrity sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q== +"@esbuild/linux-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" + integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + "@esbuild/linux-ia32@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz#cbae1f313209affc74b80f4390c4c35c6ab83fa4" integrity sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA== +"@esbuild/linux-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" + integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + "@esbuild/linux-loong64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz#5f32aead1c3ec8f4cccdb7ed08b166224d4e9121" integrity sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg== +"@esbuild/linux-loong64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" + integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + "@esbuild/linux-mips64el@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz#38eecf1cbb8c36a616261de858b3c10d03419af9" integrity sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg== +"@esbuild/linux-mips64el@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" + integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + "@esbuild/linux-ppc64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz#9c5725a94e6ec15b93195e5a6afb821628afd912" integrity sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA== +"@esbuild/linux-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" + integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + "@esbuild/linux-riscv64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz#2dc4486d474a2a62bbe5870522a9a600e2acb916" integrity sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ== +"@esbuild/linux-riscv64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" + integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + "@esbuild/linux-s390x@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz#4ad8567df48f7dd4c71ec5b1753b6f37561a65a8" integrity sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q== +"@esbuild/linux-s390x@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" + integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + "@esbuild/linux-x64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz#b7390c4d5184f203ebe7ddaedf073df82a658766" integrity sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA== +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + "@esbuild/netbsd-x64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz#d633c09492a1721377f3bccedb2d821b911e813d" integrity sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ== +"@esbuild/netbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" + integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + "@esbuild/openbsd-x64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz#17388c76e2f01125bf831a68c03a7ffccb65d1a2" integrity sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw== +"@esbuild/openbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" + integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + "@esbuild/sunos-x64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz#e320636f00bb9f4fdf3a80e548cb743370d41767" integrity sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ== +"@esbuild/sunos-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" + integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + "@esbuild/win32-arm64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz#c778b45a496e90b6fc373e2a2bb072f1441fe0ee" integrity sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ== +"@esbuild/win32-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" + integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + "@esbuild/win32-ia32@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz#481a65fee2e5cce74ec44823e6b09ecedcc5194c" integrity sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg== +"@esbuild/win32-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" + integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + "@esbuild/win32-x64@0.19.11": version "0.19.11" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz#a5d300008960bb39677c46bf16f53ec70d8dee04" integrity sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw== +"@esbuild/win32-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" + integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -1398,6 +1531,119 @@ resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== +"@img/sharp-darwin-arm64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz#ef5b5a07862805f1e8145a377c8ba6e98813ca08" + integrity sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ== + optionalDependencies: + "@img/sharp-libvips-darwin-arm64" "1.0.4" + +"@img/sharp-darwin-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz#e03d3451cd9e664faa72948cc70a403ea4063d61" + integrity sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q== + optionalDependencies: + "@img/sharp-libvips-darwin-x64" "1.0.4" + +"@img/sharp-libvips-darwin-arm64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz#447c5026700c01a993c7804eb8af5f6e9868c07f" + integrity sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg== + +"@img/sharp-libvips-darwin-x64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz#e0456f8f7c623f9dbfbdc77383caa72281d86062" + integrity sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ== + +"@img/sharp-libvips-linux-arm64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz#979b1c66c9a91f7ff2893556ef267f90ebe51704" + integrity sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA== + +"@img/sharp-libvips-linux-arm@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz#99f922d4e15216ec205dcb6891b721bfd2884197" + integrity sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g== + +"@img/sharp-libvips-linux-s390x@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz#f8a5eb1f374a082f72b3f45e2fb25b8118a8a5ce" + integrity sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA== + +"@img/sharp-libvips-linux-x64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz#d4c4619cdd157774906e15770ee119931c7ef5e0" + integrity sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw== + +"@img/sharp-libvips-linuxmusl-arm64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz#166778da0f48dd2bded1fa3033cee6b588f0d5d5" + integrity sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA== + +"@img/sharp-libvips-linuxmusl-x64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz#93794e4d7720b077fcad3e02982f2f1c246751ff" + integrity sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw== + +"@img/sharp-linux-arm64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz#edb0697e7a8279c9fc829a60fc35644c4839bb22" + integrity sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA== + optionalDependencies: + "@img/sharp-libvips-linux-arm64" "1.0.4" + +"@img/sharp-linux-arm@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz#422c1a352e7b5832842577dc51602bcd5b6f5eff" + integrity sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ== + optionalDependencies: + "@img/sharp-libvips-linux-arm" "1.0.5" + +"@img/sharp-linux-s390x@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz#f5c077926b48e97e4a04d004dfaf175972059667" + integrity sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q== + optionalDependencies: + "@img/sharp-libvips-linux-s390x" "1.0.4" + +"@img/sharp-linux-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz#d806e0afd71ae6775cc87f0da8f2d03a7c2209cb" + integrity sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA== + optionalDependencies: + "@img/sharp-libvips-linux-x64" "1.0.4" + +"@img/sharp-linuxmusl-arm64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz#252975b915894fb315af5deea174651e208d3d6b" + integrity sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-arm64" "1.0.4" + +"@img/sharp-linuxmusl-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz#3f4609ac5d8ef8ec7dadee80b560961a60fd4f48" + integrity sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64" "1.0.4" + +"@img/sharp-wasm32@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz#6f44f3283069d935bb5ca5813153572f3e6f61a1" + integrity sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg== + dependencies: + "@emnapi/runtime" "^1.2.0" + +"@img/sharp-win32-ia32@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz#1a0c839a40c5351e9885628c85f2e5dfd02b52a9" + integrity sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ== + +"@img/sharp-win32-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz#56f00962ff0c4e0eb93d34a047d29fa995e3e342" + integrity sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -1564,6 +1810,101 @@ semver "^7.3.4" tar "^6.1.0" +"@next/env@14.2.17": + version "14.2.17" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.17.tgz#bcb2c84fca50a38ec5b492d1029b8f41b0900594" + integrity sha512-MCgO7VHxXo8sYR/0z+sk9fGyJJU636JyRmkjc7ZJY8Hurl8df35qG5hoAh5KMs75FLjhlEo9bb2LGe89Y/scDA== + +"@next/env@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/env/-/env-15.0.3.tgz#a2e9bf274743c52b74d30f415f3eba750d51313a" + integrity sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA== + +"@next/swc-darwin-arm64@14.2.17": + version "14.2.17" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.17.tgz#f1e38727eb94cf198f63fddcb19002bd4cc971dc" + integrity sha512-WiOf5nElPknrhRMTipXYTJcUz7+8IAjOYw3vXzj3BYRcVY0hRHKWgTgQ5439EvzQyHEko77XK+yN9x9OJ0oOog== + +"@next/swc-darwin-arm64@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.0.3.tgz#4c40c506cf3d4d87da0204f4cccf39e6bdc46a71" + integrity sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw== + +"@next/swc-darwin-x64@14.2.17": + version "14.2.17" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.17.tgz#e29a17ef28d97c347c7d021f391e13b6c8e4c813" + integrity sha512-29y425wYnL17cvtxrDQWC3CkXe/oRrdt8ie61S03VrpwpPRI0XsnTvtKO06XCisK4alaMnZlf8riwZIbJTaSHQ== + +"@next/swc-darwin-x64@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.3.tgz#8e06cacae3dae279744f9fbe88dea679ec2c1ca3" + integrity sha512-Zxl/TwyXVZPCFSf0u2BNj5sE0F2uR6iSKxWpq4Wlk/Sv9Ob6YCKByQTkV2y6BCic+fkabp9190hyrDdPA/dNrw== + +"@next/swc-linux-arm64-gnu@14.2.17": + version "14.2.17" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.17.tgz#10e99c7aa60cc33f8b7633e045f74be9a43e7b0c" + integrity sha512-SSHLZls3ZwNEHsc+d0ynKS+7Af0Nr8+KTUBAy9pm6xz9SHkJ/TeuEg6W3cbbcMSh6j4ITvrjv3Oi8n27VR+IPw== + +"@next/swc-linux-arm64-gnu@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.3.tgz#c144ad1f21091b9c6e1e330ecc2d56188763191d" + integrity sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw== + +"@next/swc-linux-arm64-musl@14.2.17": + version "14.2.17" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.17.tgz#9a5bb809d3c6aef96c409959aedae28b4e5db53d" + integrity sha512-VFge37us5LNPatB4F7iYeuGs9Dprqe4ZkW7lOEJM91r+Wf8EIdViWHLpIwfdDXinvCdLl6b4VyLpEBwpkctJHA== + +"@next/swc-linux-arm64-musl@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.3.tgz#3ccb71c6703bf421332f177d1bb0e10528bc73a2" + integrity sha512-WkAk6R60mwDjH4lG/JBpb2xHl2/0Vj0ZRu1TIzWuOYfQ9tt9NFsIinI1Epma77JVgy81F32X/AeD+B2cBu/YQA== + +"@next/swc-linux-x64-gnu@14.2.17": + version "14.2.17" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.17.tgz#64e0ce01870e6dc45ae48f676d7cce82aedcdc62" + integrity sha512-aaQlpxUVb9RZ41adlTYVQ3xvYEfBPUC8+6rDgmQ/0l7SvK8S1YNJzPmDPX6a4t0jLtIoNk7j+nroS/pB4nx7vQ== + +"@next/swc-linux-x64-gnu@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.3.tgz#b90aa9b07001b4000427c35ab347a9273cbeebb3" + integrity sha512-gWL/Cta1aPVqIGgDb6nxkqy06DkwJ9gAnKORdHWX1QBbSZZB+biFYPFti8aKIQL7otCE1pjyPaXpFzGeG2OS2w== + +"@next/swc-linux-x64-musl@14.2.17": + version "14.2.17" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.17.tgz#93114164b6ccfc533908193ab9065f0c3970abc3" + integrity sha512-HSyEiFaEY3ay5iATDqEup5WAfrhMATNJm8dYx3ZxL+e9eKv10XKZCwtZByDoLST7CyBmyDz+OFJL1wigyXeaoA== + +"@next/swc-linux-x64-musl@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.3.tgz#0ac9724fb44718fc97bfea971ac3fe17e486590e" + integrity sha512-QQEMwFd8r7C0GxQS62Zcdy6GKx999I/rTO2ubdXEe+MlZk9ZiinsrjwoiBL5/57tfyjikgh6GOU2WRQVUej3UA== + +"@next/swc-win32-arm64-msvc@14.2.17": + version "14.2.17" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.17.tgz#4b99dea02178c112e5c33c742f9ff2a49b3b2939" + integrity sha512-h5qM9Btqv87eYH8ArrnLoAHLyi79oPTP2vlGNSg4CDvUiXgi7l0+5KuEGp5pJoMhjuv9ChRdm7mRlUUACeBt4w== + +"@next/swc-win32-arm64-msvc@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.3.tgz#932437d4cf27814e963ba8ae5f033b4421fab9ca" + integrity sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ== + +"@next/swc-win32-ia32-msvc@14.2.17": + version "14.2.17" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.17.tgz#f1c23955405a259b6d45c65f918575b01bcf0106" + integrity sha512-BD/G++GKSLexQjdyoEUgyo5nClU7er5rK0sE+HlEqnldJSm96CIr/+YOTT063LVTT/dUOeQsNgp5DXr86/K7/A== + +"@next/swc-win32-x64-msvc@14.2.17": + version "14.2.17" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.17.tgz#44f5a4fcd8df1396a8d4326510ca2d92fb809cb3" + integrity sha512-vkQfN1+4V4KqDibkW2q0sJ6CxQuXq5l2ma3z0BRcfIqkAMZiiW67T9yCpwqJKP68QghBtPEFjPAlaqe38O6frw== + +"@next/swc-win32-x64-msvc@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.3.tgz#940a6f7b370cdde0cc67eabe945d9e6d97e0be9f" + integrity sha512-VNAz+HN4OGgvZs6MOoVfnn41kBzT+M+tB+OK4cww6DNyWS6wKaDpaAm/qLeOUbnMh0oVx1+mg0uoYARF69dJyA== + "@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": version "2.1.8-no-fsevents.3" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" @@ -1970,70 +2311,175 @@ estree-walker "^2.0.2" picomatch "^2.3.1" -"@rollup/rollup-android-arm-eabi@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz#66b8d9cb2b3a474d115500f9ebaf43e2126fe496" - integrity sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg== - -"@rollup/rollup-android-arm64@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz#46327d5b86420d2307946bec1535fdf00356e47d" - integrity sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw== - -"@rollup/rollup-darwin-arm64@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz#166987224d2f8b1e2fd28ee90c447d52271d5e90" - integrity sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw== - -"@rollup/rollup-darwin-x64@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz#a2e6e096f74ccea6e2f174454c26aef6bcdd1274" - integrity sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog== - -"@rollup/rollup-linux-arm-gnueabihf@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz#09fcd4c55a2d6160c5865fec708a8e5287f30515" - integrity sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ== - -"@rollup/rollup-linux-arm64-gnu@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz#19a3c0b6315c747ca9acf86e9b710cc2440f83c9" - integrity sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ== - -"@rollup/rollup-linux-arm64-musl@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz#94aaf95fdaf2ad9335983a4552759f98e6b2e850" - integrity sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ== - -"@rollup/rollup-linux-riscv64-gnu@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz#160510e63f4b12618af4013bddf1761cf9fc9880" - integrity sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA== - -"@rollup/rollup-linux-x64-gnu@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz#5ac5d068ce0726bd0a96ca260d5bd93721c0cb98" - integrity sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw== - -"@rollup/rollup-linux-x64-musl@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz#bafa759ab43e8eab9edf242a8259ffb4f2a57a5d" - integrity sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ== - -"@rollup/rollup-win32-arm64-msvc@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz#1cc3416682e5a20d8f088f26657e6e47f8db468e" - integrity sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA== - -"@rollup/rollup-win32-ia32-msvc@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz#7d2251e1aa5e8a1e47c86891fe4547a939503461" - integrity sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ== - -"@rollup/rollup-win32-x64-msvc@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz#2c1fb69e02a3f1506f52698cfdc3a8b6386df9a6" - integrity sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ== +"@rollup/rollup-android-arm-eabi@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz#8b613b9725e8f9479d142970b106b6ae878610d5" + integrity sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w== + +"@rollup/rollup-android-arm-eabi@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.25.0.tgz#3e7eda4c0c1de6d2415343002d742ff95e38dca7" + integrity sha512-CC/ZqFZwlAIbU1wUPisHyV/XRc5RydFrNLtgl3dGYskdwPZdt4HERtKm50a/+DtTlKeCq9IXFEWR+P6blwjqBA== + +"@rollup/rollup-android-arm64@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz#654ca1049189132ff602bfcf8df14c18da1f15fb" + integrity sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA== + +"@rollup/rollup-android-arm64@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.25.0.tgz#04f679231acf7284f1f8a1f7250d0e0944865ba8" + integrity sha512-/Y76tmLGUJqVBXXCfVS8Q8FJqYGhgH4wl4qTA24E9v/IJM0XvJCGQVSW1QZ4J+VURO9h8YCa28sTFacZXwK7Rg== + +"@rollup/rollup-darwin-arm64@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz#6d241d099d1518ef0c2205d96b3fa52e0fe1954b" + integrity sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q== + +"@rollup/rollup-darwin-arm64@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.25.0.tgz#ecea723041621747d0772af93b54752edf26467a" + integrity sha512-YVT6L3UrKTlC0FpCZd0MGA7NVdp7YNaEqkENbWQ7AOVOqd/7VzyHpgIpc1mIaxRAo1ZsJRH45fq8j4N63I/vvg== + +"@rollup/rollup-darwin-x64@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz#42bd19d292a57ee11734c980c4650de26b457791" + integrity sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw== + +"@rollup/rollup-darwin-x64@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.25.0.tgz#28e6e0687092f31e20982fc104779d48c643fc21" + integrity sha512-ZRL+gexs3+ZmmWmGKEU43Bdn67kWnMeWXLFhcVv5Un8FQcx38yulHBA7XR2+KQdYIOtD0yZDWBCudmfj6lQJoA== + +"@rollup/rollup-freebsd-arm64@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.25.0.tgz#99e9173b8aef3d1ef086983da70413988206e530" + integrity sha512-xpEIXhiP27EAylEpreCozozsxWQ2TJbOLSivGfXhU4G1TBVEYtUPi2pOZBnvGXHyOdLAUUhPnJzH3ah5cqF01g== + +"@rollup/rollup-freebsd-x64@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.25.0.tgz#f3a1ef941f8d3c6b2b036484c69a7b2d3d9ebbd7" + integrity sha512-sC5FsmZGlJv5dOcURrsnIK7ngc3Kirnx3as2XU9uER+zjfyqIjdcMVgzy4cOawhsssqzoAX19qmxgJ8a14Qrqw== + +"@rollup/rollup-linux-arm-gnueabihf@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz#f23555ee3d8fe941c5c5fd458cd22b65eb1c2232" + integrity sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.25.0.tgz#9ba6adcc33f26f2a0c6ee658f0bbda4de8da2f75" + integrity sha512-uD/dbLSs1BEPzg564TpRAQ/YvTnCds2XxyOndAO8nJhaQcqQGFgv/DAVko/ZHap3boCvxnzYMa3mTkV/B/3SWA== + +"@rollup/rollup-linux-arm-musleabihf@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz#f3bbd1ae2420f5539d40ac1fde2b38da67779baa" + integrity sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg== + +"@rollup/rollup-linux-arm-musleabihf@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.25.0.tgz#62f2426fa9016ec884f4fa779d7b62d5ba02a41a" + integrity sha512-ZVt/XkrDlQWegDWrwyC3l0OfAF7yeJUF4fq5RMS07YM72BlSfn2fQQ6lPyBNjt+YbczMguPiJoCfaQC2dnflpQ== + +"@rollup/rollup-linux-arm64-gnu@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz#7abe900120113e08a1f90afb84c7c28774054d15" + integrity sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw== + +"@rollup/rollup-linux-arm64-gnu@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.25.0.tgz#f98ec111a231d35e0c6d3404e3d80f67f9d5b9f8" + integrity sha512-qboZ+T0gHAW2kkSDPHxu7quaFaaBlynODXpBVnPxUgvWYaE84xgCKAPEYE+fSMd3Zv5PyFZR+L0tCdYCMAtG0A== + +"@rollup/rollup-linux-arm64-musl@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz#9e655285c8175cd44f57d6a1e8e5dedfbba1d820" + integrity sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA== + +"@rollup/rollup-linux-arm64-musl@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.25.0.tgz#4b36ffb8359f959f2c29afd187603c53368b6723" + integrity sha512-ndWTSEmAaKr88dBuogGH2NZaxe7u2rDoArsejNslugHZ+r44NfWiwjzizVS1nUOHo+n1Z6qV3X60rqE/HlISgw== + +"@rollup/rollup-linux-powerpc64le-gnu@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz#9a79ae6c9e9d8fe83d49e2712ecf4302db5bef5e" + integrity sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg== + +"@rollup/rollup-linux-powerpc64le-gnu@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.25.0.tgz#52f4b39e6783505d168a745b79d86474fde71680" + integrity sha512-BVSQvVa2v5hKwJSy6X7W1fjDex6yZnNKy3Kx1JGimccHft6HV0THTwNtC2zawtNXKUu+S5CjXslilYdKBAadzA== + +"@rollup/rollup-linux-riscv64-gnu@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz#67ac70eca4ace8e2942fabca95164e8874ab8128" + integrity sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA== + +"@rollup/rollup-linux-riscv64-gnu@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.25.0.tgz#49195be7e6a7d68d482b12461e2ea914e31ff977" + integrity sha512-G4hTREQrIdeV0PE2JruzI+vXdRnaK1pg64hemHq2v5fhv8C7WjVaeXc9P5i4Q5UC06d/L+zA0mszYIKl+wY8oA== + +"@rollup/rollup-linux-s390x-gnu@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz#9f883a7440f51a22ed7f99e1d070bd84ea5005fc" + integrity sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q== + +"@rollup/rollup-linux-s390x-gnu@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.25.0.tgz#4b8d50a205eac7b46cdcb9c50d4a6ae5994c02e0" + integrity sha512-9T/w0kQ+upxdkFL9zPVB6zy9vWW1deA3g8IauJxojN4bnz5FwSsUAD034KpXIVX5j5p/rn6XqumBMxfRkcHapQ== + +"@rollup/rollup-linux-x64-gnu@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz#70116ae6c577fe367f58559e2cffb5641a1dd9d0" + integrity sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg== + +"@rollup/rollup-linux-x64-gnu@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.25.0.tgz#dfcceebc5ccac7fc2db19471996026258c81b55f" + integrity sha512-ThcnU0EcMDn+J4B9LD++OgBYxZusuA7iemIIiz5yzEcFg04VZFzdFjuwPdlURmYPZw+fgVrFzj4CA64jSTG4Ig== + +"@rollup/rollup-linux-x64-musl@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz#f473f88219feb07b0b98b53a7923be716d1d182f" + integrity sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g== + +"@rollup/rollup-linux-x64-musl@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.25.0.tgz#192f78bad8429711d63a31dc0a7d3312e2df850e" + integrity sha512-zx71aY2oQxGxAT1JShfhNG79PnjYhMC6voAjzpu/xmMjDnKNf6Nl/xv7YaB/9SIa9jDYf8RBPWEnjcdlhlv1rQ== + +"@rollup/rollup-win32-arm64-msvc@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz#4349482d17f5d1c58604d1c8900540d676f420e0" + integrity sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw== + +"@rollup/rollup-win32-arm64-msvc@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.25.0.tgz#f4ec076579634f780b4e5896ae7f59f3e38e0c60" + integrity sha512-JT8tcjNocMs4CylWY/CxVLnv8e1lE7ff1fi6kbGocWwxDq9pj30IJ28Peb+Y8yiPNSF28oad42ApJB8oUkwGww== + +"@rollup/rollup-win32-ia32-msvc@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz#a6fc39a15db618040ec3c2a24c1e26cb5f4d7422" + integrity sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g== + +"@rollup/rollup-win32-ia32-msvc@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.25.0.tgz#5458eab1929827e4f805cefb90bd09ecf7eeed2b" + integrity sha512-dRLjLsO3dNOfSN6tjyVlG+Msm4IiZnGkuZ7G5NmpzwF9oOc582FZG05+UdfTbz5Jd4buK/wMb6UeHFhG18+OEg== + +"@rollup/rollup-win32-x64-msvc@4.22.4": + version "4.22.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz#3dd5d53e900df2a40841882c02e56f866c04d202" + integrity sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q== + +"@rollup/rollup-win32-x64-msvc@4.25.0": + version "4.25.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.25.0.tgz#93415e7e707e4b156d77c5950b983b58f4bc33f3" + integrity sha512-/RqrIFtLB926frMhZD0a5oDa4eFIbyNEwLLloMTEjmqfwZWXywwVVOVmwTsuyhC9HKkVEZcOOi+KV4U9wmOdlg== "@sigstore/bundle@^1.1.0": version "1.1.0" @@ -2150,6 +2596,26 @@ nanoid "^5.0.4" webpack "^5.89.0" +"@swc/counter@0.1.3", "@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/helpers@0.5.13": + version "0.5.13" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.13.tgz#33e63ff3cd0cade557672bd7888a39ce7d115a8c" + integrity sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w== + dependencies: + tslib "^2.4.0" + +"@swc/helpers@0.5.5": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.5.tgz#12689df71bfc9b21c4f4ca00ae55f2f16c8b77c0" + integrity sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A== + dependencies: + "@swc/counter" "^0.1.3" + tslib "^2.4.0" + "@swc/helpers@^0.4.2": version "0.4.3" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.3.tgz#16593dfc248c53b699d4b5026040f88ddb497012" @@ -2254,7 +2720,7 @@ dependencies: "@babel/types" "^7.3.0" -"@types/eslint-scope@^3.7.3": +"@types/eslint-scope@^3.7.7": version "3.7.7" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== @@ -2275,6 +2741,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/estree@1.0.6", "@types/estree@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + "@types/fs-extra@^8.0.1": version "8.1.5" resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.5.tgz#33aae2962d3b3ec9219b5aca2555ee00274f5927" @@ -2491,125 +2962,125 @@ loupe "^2.3.7" pretty-format "^29.7.0" -"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.12.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== -"@webassemblyjs/helper-buffer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" - integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== -"@webassemblyjs/helper-wasm-section@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" - integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" - -"@webassemblyjs/wasm-gen@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" - integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" - integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - -"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" - integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== - dependencies: - "@webassemblyjs/ast" "1.11.6" +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== + +"@webassemblyjs/wasm-edit@^1.12.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.12.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== + dependencies: + "@webassemblyjs/ast" "1.14.1" "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": @@ -2665,11 +3136,6 @@ abs-svg-path@^0.1.1: resolved "https://registry.yarnpkg.com/abs-svg-path/-/abs-svg-path-0.1.1.tgz#df601c8e8d2ba10d4a76d625e236a9a39c2723bf" integrity sha1-32Acjo0roQ1KdtYl4japo5wnI78= -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -2680,11 +3146,16 @@ acorn-walk@^8.3.2: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== -acorn@^8.10.0, acorn@^8.11.3, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.10.0, acorn@^8.11.3, acorn@^8.8.2, acorn@^8.9.0: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== +acorn@^8.14.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" @@ -2785,6 +3256,11 @@ ansi-styles@^6.1.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -2819,6 +3295,11 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2976,6 +3457,20 @@ ast-types@^0.13.4: dependencies: tslib "^2.0.1" +ast-types@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" + integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== + dependencies: + tslib "^2.0.1" + +ast-types@^0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.16.1.tgz#7a9da1617c9081bc121faafe91711b4c8bb81da2" + integrity sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg== + dependencies: + tslib "^2.0.1" + astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -2998,6 +3493,18 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +autoprefixer@^10.4.20: + version "10.4.20" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" + integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== + dependencies: + browserslist "^4.23.3" + caniuse-lite "^1.0.30001646" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.0.1" + postcss-value-parser "^4.2.0" + available-typed-arrays@^1.0.5, available-typed-arrays@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz#ac812d8ce5a6b976d738e1c45f08d0b00bc7d725" @@ -3121,7 +3628,14 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -3149,15 +3663,25 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.14.5, browserslist@^4.21.5, browserslist@^4.22.2: - version "4.22.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" - integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== +browserslist@^4.21.5, browserslist@^4.22.2: + version "4.23.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" + integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== dependencies: - caniuse-lite "^1.0.30001565" - electron-to-chromium "^1.4.601" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" + caniuse-lite "^1.0.30001646" + electron-to-chromium "^1.5.4" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" + +browserslist@^4.23.3, browserslist@^4.24.0: + version "4.24.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580" + integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== + dependencies: + caniuse-lite "^1.0.30001669" + electron-to-chromium "^1.5.41" + node-releases "^2.0.18" + update-browserslist-db "^1.1.1" buffer-crc32@~0.2.3: version "0.2.13" @@ -3202,6 +3726,13 @@ builtins@^5.0.0: dependencies: semver "^7.0.0" +busboy@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + byte-size@8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-8.1.1.tgz#3424608c62d59de5bfda05d31e0313c6174842ae" @@ -3268,6 +3799,11 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + camelcase-keys@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" @@ -3282,10 +3818,15 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30001565: - version "1.0.30001576" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz#893be772cf8ee6056d6c1e2d07df365b9ec0a5c4" - integrity sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg== +caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001669: + version "1.0.30001680" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz#5380ede637a33b9f9f1fc6045ea99bd142f3da5e" + integrity sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA== + +caniuse-lite@^1.0.30001646: + version "1.0.30001662" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz#3574b22dfec54a3f3b6787331da1040fe8e763ec" + integrity sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA== canvas@^2.11.0, canvas@^2.11.2: version "2.11.2" @@ -3419,6 +3960,11 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== +client-only@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== + cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -3499,7 +4045,7 @@ color-name@^1.0.0, color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.9.1: +color-string@^1.9.0, color-string@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== @@ -3512,6 +4058,14 @@ color-support@^1.1.3: resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +color@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + colorette@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" @@ -3547,7 +4101,7 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.0.1: +commander@^4.0.0, commander@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== @@ -3718,7 +4272,7 @@ cross-fetch@4.0.0: dependencies: node-fetch "^2.6.12" -cross-fetch@^3.0.6, cross-fetch@^3.1.5: +cross-fetch@^3.0.6: version "3.1.8" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== @@ -3756,6 +4310,11 @@ css-tree@^2.3.1: mdn-data "2.0.30" source-map-js "^1.0.1" +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + cssstyle@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-4.0.1.tgz#ef29c598a1e90125c870525490ea4f354db0660a" @@ -3962,6 +4521,11 @@ detect-libc@^1.0.3: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= +detect-libc@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + devtools-protocol@0.0.1203626: version "0.0.1203626" resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1203626.tgz#4366a4c81a7e0d4fd6924e9182c67f1e5941e820" @@ -3972,6 +4536,11 @@ dfa@^1.2.0: resolved "https://registry.yarnpkg.com/dfa/-/dfa-1.2.0.tgz#96ac3204e2d29c49ea5b57af8d92c2ae12790657" integrity sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q== +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + diff-sequences@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" @@ -3984,6 +4553,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -4042,10 +4616,15 @@ ejs@^3.1.7: dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.601: - version "1.4.630" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.630.tgz#1d9f4169653784997bec98975e11a2c05214ce39" - integrity sha512-osHqhtjojpCsACVnuD11xO5g9xaCyw7Qqn/C2KParkMv42i8jrJJgx3g7mkHfpxwhy9MnOJr8+pKOdZ7qzgizg== +electron-to-chromium@^1.5.4: + version "1.5.27" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.27.tgz#5203ce5d6054857d84ba84d3681cbe59132ade78" + integrity sha512-o37j1vZqCoEgBuWWXLHQgTN/KDKe7zwpiY5CPeq2RvUqOyJw9xnrULzZAEVQ5p4h+zjMk7hgtOoPdnLxr7m/jw== + +electron-to-chromium@^1.5.41: + version "1.5.56" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.56.tgz#3213f369efc3a41091c3b2c05bc0f406108ac1df" + integrity sha512-7lXb9dAvimCFdvUMTyucD4mnIndt/xhRKFAlky0CyFogdnNmdPQNoHI23msF/2V4mpTxMzgMdjK4+YRlFlRQZw== emoji-regex@^10.3.0: version "10.3.0" @@ -4076,10 +4655,10 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -enhanced-resolve@^5.15.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" - integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== +enhanced-resolve@^5.17.1: + version "5.17.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" + integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -4257,10 +4836,39 @@ esbuild@^0.19.3: "@esbuild/win32-ia32" "0.19.11" "@esbuild/win32-x64" "0.19.11" -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +esbuild@^0.21.3: + version "0.21.5" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" + integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== + optionalDependencies: + "@esbuild/aix-ppc64" "0.21.5" + "@esbuild/android-arm" "0.21.5" + "@esbuild/android-arm64" "0.21.5" + "@esbuild/android-x64" "0.21.5" + "@esbuild/darwin-arm64" "0.21.5" + "@esbuild/darwin-x64" "0.21.5" + "@esbuild/freebsd-arm64" "0.21.5" + "@esbuild/freebsd-x64" "0.21.5" + "@esbuild/linux-arm" "0.21.5" + "@esbuild/linux-arm64" "0.21.5" + "@esbuild/linux-ia32" "0.21.5" + "@esbuild/linux-loong64" "0.21.5" + "@esbuild/linux-mips64el" "0.21.5" + "@esbuild/linux-ppc64" "0.21.5" + "@esbuild/linux-riscv64" "0.21.5" + "@esbuild/linux-s390x" "0.21.5" + "@esbuild/linux-x64" "0.21.5" + "@esbuild/netbsd-x64" "0.21.5" + "@esbuild/openbsd-x64" "0.21.5" + "@esbuild/sunos-x64" "0.21.5" + "@esbuild/win32-arm64" "0.21.5" + "@esbuild/win32-ia32" "0.21.5" + "@esbuild/win32-x64" "0.21.5" + +escalade@^3.1.1, escalade@^3.1.2, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== escape-string-regexp@^1.0.5: version "1.0.5" @@ -4474,7 +5082,7 @@ espree@^9.6.0, espree@^9.6.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -4626,7 +5234,7 @@ fast-fifo@^1.1.0, fast-fifo@^1.2.0: resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== -fast-glob@^3.0.3, fast-glob@^3.2.9, fast-glob@^3.3.2: +fast-glob@^3.0.3, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -4682,10 +5290,10 @@ filelist@^1.0.4: dependencies: minimatch "^5.0.1" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +fill-range@^7.0.1, fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" @@ -4790,6 +5398,11 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" @@ -5181,7 +5794,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -5925,10 +6538,10 @@ jake@^10.8.5: filelist "^1.0.4" minimatch "^3.1.2" -jay-peg@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jay-peg/-/jay-peg-1.0.2.tgz#17a54d386e472f5f313f3d6e88770b170ea569f4" - integrity sha512-fyV3NVvv6pTys/3BTapBUGAWAuU9rM2gRcgijZHzptd5KKL+s+S7hESFN+wOsbDH1MzFwdlRAXi0aGxS6uiMKg== +jay-peg@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/jay-peg/-/jay-peg-1.1.1.tgz#fdf410b89fa7a295bf74424ffe4c9083dbe7c363" + integrity sha512-D62KEuBxz/ip2gQKOEhk/mx14o7eiFRaU+VNNSP4MOiIkwb/D6B3G1Mfas7C/Fit8EsSV2/IWjZElx/Gs6A4ww== dependencies: restructure "^3.0.0" @@ -5970,6 +6583,11 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" +jiti@^1.21.0: + version "1.21.6" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" + integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -6249,6 +6867,11 @@ libnpmpublish@7.3.0: sigstore "^1.4.0" ssri "^10.0.1" +lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + lilconfig@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc" @@ -6589,13 +7212,13 @@ merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: - braces "^3.0.1" - picomatch "^2.2.3" + braces "^3.0.3" + picomatch "^2.3.1" mime-db@1.51.0: version "1.51.0" @@ -6828,6 +7451,15 @@ mute-stream@~1.0.0: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + nan@^2.17.0: version "2.17.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" @@ -6838,7 +7470,7 @@ nanoid@5.0.4, nanoid@^5.0.4: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.0.4.tgz#d2b608d8169d7da669279127615535705aa52edf" integrity sha512-vAjmBf13gsmhXSgBrtIclinISzFFy22WwCYoyilZlsrRXNIHSwgFQ1bEdjRwMT3aoadeIF6HMuDRlOxzfXV8ig== -nanoid@^3.3.7: +nanoid@^3.3.6, nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== @@ -6870,6 +7502,52 @@ netmask@^2.0.2: resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== +next@14.2.17: + version "14.2.17" + resolved "https://registry.yarnpkg.com/next/-/next-14.2.17.tgz#77a38b11be983ddbbf6c7d1cea3c7e913e8a5445" + integrity sha512-hNo/Zy701DDO3nzKkPmsLRlDfNCtb1OJxFUvjGEl04u7SFa3zwC6hqsOUzMajcaEOEV8ey1GjvByvrg0Qr5AiQ== + dependencies: + "@next/env" "14.2.17" + "@swc/helpers" "0.5.5" + busboy "1.6.0" + caniuse-lite "^1.0.30001579" + graceful-fs "^4.2.11" + postcss "8.4.31" + styled-jsx "5.1.1" + optionalDependencies: + "@next/swc-darwin-arm64" "14.2.17" + "@next/swc-darwin-x64" "14.2.17" + "@next/swc-linux-arm64-gnu" "14.2.17" + "@next/swc-linux-arm64-musl" "14.2.17" + "@next/swc-linux-x64-gnu" "14.2.17" + "@next/swc-linux-x64-musl" "14.2.17" + "@next/swc-win32-arm64-msvc" "14.2.17" + "@next/swc-win32-ia32-msvc" "14.2.17" + "@next/swc-win32-x64-msvc" "14.2.17" + +next@15.0.3: + version "15.0.3" + resolved "https://registry.yarnpkg.com/next/-/next-15.0.3.tgz#804f5b772e7570ef1f088542a59860914d3288e9" + integrity sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw== + dependencies: + "@next/env" "15.0.3" + "@swc/counter" "0.1.3" + "@swc/helpers" "0.5.13" + busboy "1.6.0" + caniuse-lite "^1.0.30001579" + postcss "8.4.31" + styled-jsx "5.1.6" + optionalDependencies: + "@next/swc-darwin-arm64" "15.0.3" + "@next/swc-darwin-x64" "15.0.3" + "@next/swc-linux-arm64-gnu" "15.0.3" + "@next/swc-linux-arm64-musl" "15.0.3" + "@next/swc-linux-x64-gnu" "15.0.3" + "@next/swc-linux-x64-musl" "15.0.3" + "@next/swc-win32-arm64-msvc" "15.0.3" + "@next/swc-win32-x64-msvc" "15.0.3" + sharp "^0.33.5" + node-fetch@2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -6905,10 +7583,10 @@ node-machine-id@1.1.12: resolved "https://registry.yarnpkg.com/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== nopt@^5.0.0: version "5.0.0" @@ -6969,6 +7647,11 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + normalize-svg-path@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/normalize-svg-path/-/normalize-svg-path-1.1.0.tgz#0e614eca23c39f0cffe821d6be6cd17e569a766c" @@ -7179,11 +7862,16 @@ nx@17.2.8, "nx@>=17.1.2 < 18": "@nx/nx-win32-arm64-msvc" "17.2.8" "@nx/nx-win32-x64-msvc" "17.2.8" -object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + object-inspect@^1.13.1, object-inspect@^1.9.0: version "1.13.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" @@ -7632,12 +8320,17 @@ pend@~1.2.0: resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.0, picocolors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: +picocolors@^1.1.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -7662,6 +8355,11 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + pixelmatch@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-5.3.0.tgz#5e5321a7abedfb7962d60dbf345deda87cb9560a" @@ -7702,10 +8400,67 @@ pngjs@^6.0.0: resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-6.0.0.tgz#ca9e5d2aa48db0228a52c419c3308e87720da821" integrity sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg== -postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + dependencies: + lilconfig "^3.0.0" + yaml "^2.3.4" + +postcss-nested@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131" + integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== + dependencies: + postcss-selector-parser "^6.1.1" + +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.1.1: + version "6.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@^8, postcss@^8.4.23, postcss@^8.4.43, postcss@^8.4.47: + version "8.4.49" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" + integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.1" + source-map-js "^1.2.1" postcss@^8.4.32: version "8.4.33" @@ -7918,6 +8673,11 @@ randombytes@^2.1.0: loose-envify "^1.1.0" object-assign "^4.1.1" +"react-19@npm:react@19.0.0-rc-66855b96-20241106": + version "19.0.0-rc-66855b96-20241106" + resolved "https://registry.yarnpkg.com/react/-/react-19.0.0-rc-66855b96-20241106.tgz#f04d7283454a32bdd8e9757db4308b75b9739e56" + integrity sha512-klH7xkT71SxRCx4hb1hly5FJB21Hz0ACyxbXYAECEqssUjtJeFUAaI2U1DgJAzkGEnvEm3DkxuBchMC/9K4ipg== + "react-dom-16@npm:react-dom@^16.8.0": version "16.14.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" @@ -7937,13 +8697,27 @@ randombytes@^2.1.0: object-assign "^4.1.1" scheduler "^0.20.2" -react-dom@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== +"react-dom-19@npm:react-dom@19.0.0-rc-66855b96-20241106": + version "19.0.0-rc-66855b96-20241106" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.0.0-rc-66855b96-20241106.tgz#beba73decfd1b9365a3c83673a298623b15acb0b" + integrity sha512-D25vdaytZ1wFIRiwNU98NPQ/upS2P8Co4/oNoa02PzHbh8deWdepjm5qwZM/46OdSiGv4WSWwxP55RO9obqJEQ== + dependencies: + scheduler "0.25.0-rc-66855b96-20241106" + +react-dom@19.0.0-rc-66855b96-20241106: + version "19.0.0-rc-66855b96-20241106" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.0.0-rc-66855b96-20241106.tgz#beba73decfd1b9365a3c83673a298623b15acb0b" + integrity sha512-D25vdaytZ1wFIRiwNU98NPQ/upS2P8Co4/oNoa02PzHbh8deWdepjm5qwZM/46OdSiGv4WSWwxP55RO9obqJEQ== + dependencies: + scheduler "0.25.0-rc-66855b96-20241106" + +react-dom@^18, react-dom@^18.2.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== dependencies: loose-envify "^1.1.0" - scheduler "^0.23.0" + scheduler "^0.23.2" react-is@^16.13.1: version "16.13.1" @@ -7960,7 +8734,7 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-reconciler@0.23.0: +"react-reconciler-23@npm:react-reconciler@0.23.0": version "0.23.0" resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.23.0.tgz#5f0bfc35dda030b0220c07de11f93131c5d6db63" integrity sha512-vV0KlLimP9a/NuRcM6GRVakkmT6MKSzhfo8K72fjHMnlXMOhz9GlPe+/tCp5CWBkg+lsMUt/CR1nypJBTPfwuw== @@ -7970,18 +8744,37 @@ react-reconciler@0.23.0: prop-types "^15.6.2" scheduler "^0.17.0" +"react-reconciler-31@npm:react-reconciler@0.31.0-rc-603e6108-20241029": + version "0.31.0-rc-603e6108-20241029" + resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.31.0-rc-603e6108-20241029.tgz#548c14190b107e6e8b886e9e1142a1b341efe020" + integrity sha512-zCAmctVyk2efv9DR0GnpHNbd/mVxeWuOGrWeXwx1QXqSGTBWUqzoPEd4jv88e+3U53upXZqb86AMhKf0c9vkLw== + dependencies: + scheduler "0.25.0-rc-603e6108-20241029" + react-refresh@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== -react@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== +react@19.0.0-rc-66855b96-20241106: + version "19.0.0-rc-66855b96-20241106" + resolved "https://registry.yarnpkg.com/react/-/react-19.0.0-rc-66855b96-20241106.tgz#f04d7283454a32bdd8e9757db4308b75b9739e56" + integrity sha512-klH7xkT71SxRCx4hb1hly5FJB21Hz0ACyxbXYAECEqssUjtJeFUAaI2U1DgJAzkGEnvEm3DkxuBchMC/9K4ipg== + +react@^18, react@^18.2.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== dependencies: loose-envify "^1.1.0" +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + read-cmd-shim@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" @@ -8097,6 +8890,17 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +recast@^0.23.9: + version "0.23.9" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.9.tgz#587c5d3a77c2cfcb0c18ccce6da4361528c2587b" + integrity sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q== + dependencies: + ast-types "^0.16.1" + esprima "~4.0.0" + source-map "~0.6.1" + tiny-invariant "^1.3.3" + tslib "^2.0.1" + redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -8207,7 +9011,7 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.22.1, resolve@^1.22.4: +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.4: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -8303,25 +9107,55 @@ rollup-plugin-polyfill-node@^0.13.0: "@rollup/plugin-inject" "^5.0.4" rollup@^4.2.0, rollup@^4.9.0: - version "4.9.6" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.9.6.tgz#4515facb0318ecca254a2ee1315e22e09efc50a0" - integrity sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg== + version "4.22.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.22.4.tgz#4135a6446671cd2a2453e1ad42a45d5973ec3a0f" + integrity sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A== dependencies: "@types/estree" "1.0.5" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.9.6" - "@rollup/rollup-android-arm64" "4.9.6" - "@rollup/rollup-darwin-arm64" "4.9.6" - "@rollup/rollup-darwin-x64" "4.9.6" - "@rollup/rollup-linux-arm-gnueabihf" "4.9.6" - "@rollup/rollup-linux-arm64-gnu" "4.9.6" - "@rollup/rollup-linux-arm64-musl" "4.9.6" - "@rollup/rollup-linux-riscv64-gnu" "4.9.6" - "@rollup/rollup-linux-x64-gnu" "4.9.6" - "@rollup/rollup-linux-x64-musl" "4.9.6" - "@rollup/rollup-win32-arm64-msvc" "4.9.6" - "@rollup/rollup-win32-ia32-msvc" "4.9.6" - "@rollup/rollup-win32-x64-msvc" "4.9.6" + "@rollup/rollup-android-arm-eabi" "4.22.4" + "@rollup/rollup-android-arm64" "4.22.4" + "@rollup/rollup-darwin-arm64" "4.22.4" + "@rollup/rollup-darwin-x64" "4.22.4" + "@rollup/rollup-linux-arm-gnueabihf" "4.22.4" + "@rollup/rollup-linux-arm-musleabihf" "4.22.4" + "@rollup/rollup-linux-arm64-gnu" "4.22.4" + "@rollup/rollup-linux-arm64-musl" "4.22.4" + "@rollup/rollup-linux-powerpc64le-gnu" "4.22.4" + "@rollup/rollup-linux-riscv64-gnu" "4.22.4" + "@rollup/rollup-linux-s390x-gnu" "4.22.4" + "@rollup/rollup-linux-x64-gnu" "4.22.4" + "@rollup/rollup-linux-x64-musl" "4.22.4" + "@rollup/rollup-win32-arm64-msvc" "4.22.4" + "@rollup/rollup-win32-ia32-msvc" "4.22.4" + "@rollup/rollup-win32-x64-msvc" "4.22.4" + fsevents "~2.3.2" + +rollup@^4.20.0: + version "4.25.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.25.0.tgz#74dff4b5c2777dfc490f9711393925da50171787" + integrity sha512-uVbClXmR6wvx5R1M3Od4utyLUxrmOcEm3pAtMphn73Apq19PDtHpgZoEvqH2YnnaNUuvKmg2DgRd2Sqv+odyqg== + dependencies: + "@types/estree" "1.0.6" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.25.0" + "@rollup/rollup-android-arm64" "4.25.0" + "@rollup/rollup-darwin-arm64" "4.25.0" + "@rollup/rollup-darwin-x64" "4.25.0" + "@rollup/rollup-freebsd-arm64" "4.25.0" + "@rollup/rollup-freebsd-x64" "4.25.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.25.0" + "@rollup/rollup-linux-arm-musleabihf" "4.25.0" + "@rollup/rollup-linux-arm64-gnu" "4.25.0" + "@rollup/rollup-linux-arm64-musl" "4.25.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.25.0" + "@rollup/rollup-linux-riscv64-gnu" "4.25.0" + "@rollup/rollup-linux-s390x-gnu" "4.25.0" + "@rollup/rollup-linux-x64-gnu" "4.25.0" + "@rollup/rollup-linux-x64-musl" "4.25.0" + "@rollup/rollup-win32-arm64-msvc" "4.25.0" + "@rollup/rollup-win32-ia32-msvc" "4.25.0" + "@rollup/rollup-win32-x64-msvc" "4.25.0" fsevents "~2.3.2" rrweb-cssom@^0.6.0: @@ -8389,6 +9223,16 @@ saxes@^6.0.0: dependencies: xmlchars "^2.2.0" +scheduler@0.25.0-rc-603e6108-20241029: + version "0.25.0-rc-603e6108-20241029" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0-rc-603e6108-20241029.tgz#684dd96647e104d23e0d29a37f18937daf82df19" + integrity sha512-pFwF6H1XrSdYYNLfOcGlM28/j8CGLu8IvdrxqhjWULe2bPcKiKW4CV+OWqR/9fT52mywx65l7ysNkjLKBda7eA== + +scheduler@0.25.0-rc-66855b96-20241106: + version "0.25.0-rc-66855b96-20241106" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0-rc-66855b96-20241106.tgz#8bbb728eca4de5a5deca1f18370fbce41aee91d1" + integrity sha512-HQXp/Mnp/MMRSXMQF7urNFla+gmtXW/Gr1KliuR0iboTit4KvZRY8KYaq5ccCTAOJiUqQh2rE2F3wgUekmgdlA== + scheduler@^0.17.0: version "0.17.0" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.17.0.tgz#7c9c673e4ec781fac853927916d1c426b6f3ddfe" @@ -8413,10 +9257,10 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== dependencies: loose-envify "^1.1.0" @@ -8458,6 +9302,11 @@ semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semve dependencies: lru-cache "^6.0.0" +semver@^7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + serialize-javascript@^6.0.1: version "6.0.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" @@ -8498,6 +9347,35 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" +sharp@^0.33.5: + version "0.33.5" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.33.5.tgz#13e0e4130cc309d6a9497596715240b2ec0c594e" + integrity sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw== + dependencies: + color "^4.2.3" + detect-libc "^2.0.3" + semver "^7.6.3" + optionalDependencies: + "@img/sharp-darwin-arm64" "0.33.5" + "@img/sharp-darwin-x64" "0.33.5" + "@img/sharp-libvips-darwin-arm64" "1.0.4" + "@img/sharp-libvips-darwin-x64" "1.0.4" + "@img/sharp-libvips-linux-arm" "1.0.5" + "@img/sharp-libvips-linux-arm64" "1.0.4" + "@img/sharp-libvips-linux-s390x" "1.0.4" + "@img/sharp-libvips-linux-x64" "1.0.4" + "@img/sharp-libvips-linuxmusl-arm64" "1.0.4" + "@img/sharp-libvips-linuxmusl-x64" "1.0.4" + "@img/sharp-linux-arm" "0.33.5" + "@img/sharp-linux-arm64" "0.33.5" + "@img/sharp-linux-s390x" "0.33.5" + "@img/sharp-linux-x64" "0.33.5" + "@img/sharp-linuxmusl-arm64" "0.33.5" + "@img/sharp-linuxmusl-x64" "0.33.5" + "@img/sharp-wasm32" "0.33.5" + "@img/sharp-win32-ia32" "0.33.5" + "@img/sharp-win32-x64" "0.33.5" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -8695,10 +9573,10 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" -source-map-js@^1.0.1, source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== source-map-support@~0.5.20: version "0.5.21" @@ -8802,6 +9680,11 @@ stream-transform@^2.1.3: dependencies: mixme "^0.5.1" +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + streamx@^2.15.0: version "2.15.6" resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.15.6.tgz#28bf36997ebc7bf6c08f9eba958735231b833887" @@ -8815,7 +9698,7 @@ string-argv@0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -8833,6 +9716,15 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" @@ -8907,7 +9799,7 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -8921,6 +9813,13 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -8976,6 +9875,33 @@ strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: minimist "^1.2.0" through "^2.3.4" +styled-jsx@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" + integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== + dependencies: + client-only "0.0.1" + +styled-jsx@5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.6.tgz#83b90c077e6c6a80f7f5e8781d0f311b2fe41499" + integrity sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA== + dependencies: + client-only "0.0.1" + +sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "^10.3.10" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -9012,6 +9938,34 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +tailwindcss@^3.4.1, tailwindcss@^3.4.12: + version "3.4.14" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.14.tgz#6dd23a7f54ec197b19159e91e3bb1e55e7aa73ac" + integrity sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.0" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.21.0" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + resolve "^1.22.2" + sucrase "^3.32.0" + tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" @@ -9080,7 +10034,7 @@ term-size@^2.1.0: resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== -terser-webpack-plugin@^5.3.7: +terser-webpack-plugin@^5.3.10: version "5.3.10" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== @@ -9111,6 +10065,20 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -9129,6 +10097,11 @@ tiny-inflate@^1.0.0, tiny-inflate@^1.0.3: resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== +tiny-invariant@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" + integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== + tinybench@^2.5.1: version "2.6.0" resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.6.0.tgz#1423284ee22de07c91b3752c048d2764714b341b" @@ -9202,6 +10175,11 @@ ts-api-utils@^1.0.1: resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.2.1.tgz#f716c7e027494629485b21c0df6180f4d08f5e8b" integrity sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA== +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + tsconfig-paths@^3.15.0: version "3.15.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" @@ -9464,13 +10442,21 @@ upath@2.0.1: resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" + escalade "^3.1.2" + picocolors "^1.0.1" + +update-browserslist-db@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.0" uri-js@^4.2.2: version "4.4.1" @@ -9492,7 +10478,7 @@ urlpattern-polyfill@9.0.0: resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-9.0.0.tgz#bc7e386bb12fd7898b58d1509df21d3c29ab3460" integrity sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g== -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= @@ -9556,7 +10542,7 @@ vite-node@1.2.1: picocolors "^1.0.0" vite "^5.0.0" -vite@^5.0.0, vite@^5.0.11: +vite@^5.0.0: version "5.0.12" resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.12.tgz#8a2ffd4da36c132aec4adafe05d7adde38333c47" integrity sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w== @@ -9567,6 +10553,17 @@ vite@^5.0.0, vite@^5.0.11: optionalDependencies: fsevents "~2.3.3" +vite@^5.0.11: + version "5.4.11" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.11.tgz#3b415cd4aed781a356c1de5a9ebafb837715f6e5" + integrity sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q== + dependencies: + esbuild "^0.21.3" + postcss "^8.4.43" + rollup "^4.20.0" + optionalDependencies: + fsevents "~2.3.3" + vitest-fetch-mock@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/vitest-fetch-mock/-/vitest-fetch-mock-0.2.2.tgz#f6849dcf7a8e862a509e1cee2fa3bb0cb534f468" @@ -9608,10 +10605,10 @@ w3c-xmlserializer@^5.0.0: dependencies: xml-name-validator "^5.0.0" -watchpack@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== +watchpack@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" + integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -9644,33 +10641,32 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.89.0: - version "5.89.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc" - integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.14.5" + version "5.96.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.96.1.tgz#3676d1626d8312b6b10d0c18cc049fba7ac01f0c" + integrity sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.6" + "@webassemblyjs/ast" "^1.12.1" + "@webassemblyjs/wasm-edit" "^1.12.1" + "@webassemblyjs/wasm-parser" "^1.12.1" + acorn "^8.14.0" + browserslist "^4.24.0" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.15.0" + enhanced-resolve "^5.17.1" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" + graceful-fs "^4.2.11" json-parse-even-better-errors "^2.3.1" loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" schema-utils "^3.2.0" tapable "^2.1.1" - terser-webpack-plugin "^5.3.7" - watchpack "^2.4.0" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.1" webpack-sources "^3.2.3" whatwg-encoding@^3.1.1: @@ -9805,7 +10801,7 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -9823,6 +10819,15 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -9930,6 +10935,11 @@ yaml@^1.10.0: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.3.4: + version "2.6.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.0.tgz#14059ad9d0b1680d0f04d3a60fe00f3a857303c3" + integrity sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ== + yargs-parser@21.1.1, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" @@ -10009,7 +11019,7 @@ yocto-queue@^1.0.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== -yoga-layout@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/yoga-layout/-/yoga-layout-2.0.1.tgz#4bc686abe2464f977866650ddccc1dbcf9f0d03c" - integrity sha512-tT/oChyDXelLo2A+UVnlW9GU7CsvFMaEnd9kVFsaiCQonFAXd3xrHhkLYu+suwwosrAEQ746xBU+HvYtm1Zs2Q== +yoga-layout@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/yoga-layout/-/yoga-layout-3.1.0.tgz#04d00d7c2160635640dc79b48e7e4fc6a2fba2b2" + integrity sha512-auzJ8lEovThZIpR8wLGWNo/JEj4VTO79q9/gOJ0dWb3shAYPFdX3t9VN0fC0v+jeQF77STUdCzebLwRMqzn5gQ==