├── .gitignore
├── examples
├── nextjs
│ ├── .eslintrc.json
│ ├── .gitignore
│ ├── README.md
│ ├── app
│ │ ├── Pdf.tsx
│ │ ├── favicon.ico
│ │ ├── layout.tsx
│ │ └── page.tsx
│ ├── next.config.js
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── postcss.config.js
│ ├── tailwind.config.ts
│ └── tsconfig.json
└── vite
│ ├── .gitignore
│ ├── index.html
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── public
│ └── vite.svg
│ ├── src
│ ├── App.tsx
│ ├── index.css
│ ├── main.tsx
│ └── vite-env.d.ts
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ └── vite.config.ts
├── package.json
├── pnpm-lock.yaml
├── readme.md
├── src
├── index.test.ts
├── index.ts
├── properties.ts
└── utils.ts
└── tsconfig.json
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 |
--------------------------------------------------------------------------------
/examples/nextjs/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "next/core-web-vitals"
3 | }
4 |
--------------------------------------------------------------------------------
/examples/nextjs/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # next.js
13 | /.next/
14 | /out/
15 |
16 | # production
17 | /build
18 |
19 | # misc
20 | .DS_Store
21 | *.pem
22 |
23 | # debug
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 |
28 | # local env files
29 | .env*.local
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 |
--------------------------------------------------------------------------------
/examples/nextjs/README.md:
--------------------------------------------------------------------------------
1 | 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).
2 |
3 | ## Getting Started
4 |
5 | First, run the development server:
6 |
7 | ```bash
8 | npm run dev
9 | # or
10 | yarn dev
11 | # or
12 | pnpm dev
13 | ```
14 |
15 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
16 |
17 | You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file.
18 |
19 | [API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`.
20 |
21 | The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
22 |
23 | This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
24 |
25 | ## Learn More
26 |
27 | To learn more about Next.js, take a look at the following resources:
28 |
29 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
30 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
31 |
32 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
33 |
34 | ## Deploy on Vercel
35 |
36 | 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.
37 |
38 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
39 |
--------------------------------------------------------------------------------
/examples/nextjs/app/Pdf.tsx:
--------------------------------------------------------------------------------
1 | import { PDFViewer, Document, Page, Text, View } from "@react-pdf/renderer";
2 | import { createTw } from "../../../src";
3 |
4 | const tw = createTw({
5 | theme: {
6 | extend: {
7 | colors: {
8 | custom: "cornflowerblue",
9 | },
10 | },
11 | },
12 | });
13 |
14 | export default function Pdf() {
15 | return (
16 |
17 |
18 |
19 | {[...Array(12)].map((_, i) => (
20 |
25 |
26 | Section {i + 1}
27 |
28 |
29 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla
30 | semper efficitur libero in laoreet. Sed iaculis, magna suscipit
31 | placerat commodo, risus turpis tincidunt ligula, ac euismod
32 | justo sem id risus. Nullam euismod vestibulum leo, mollis
33 | maximus sapien luctus in. Vivamus malesuada vulputate ornare.
34 | Mauris ut accumsan felis. Vivamus enim urna, ultrices eu eros
35 | ac, bibendum vehicula eros. Praesent ipsum orci, molestie
36 | gravida tristique at, dapibus vitae est. Phasellus lectus nulla,
37 | consequat eu mi ut, tempus pulvinar neque.
38 |
39 |
40 | ))}
41 |
42 |
43 |
44 | );
45 | }
46 |
--------------------------------------------------------------------------------
/examples/nextjs/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aanckar/react-pdf-tailwind/8f90f2cadd92672bed282ebdf940f90bbc7f6941/examples/nextjs/app/favicon.ico
--------------------------------------------------------------------------------
/examples/nextjs/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import type { Metadata } from "next";
2 |
3 | export const metadata: Metadata = {
4 | title: "Next.js example",
5 | description: "Example of react-pdf-tailwind in Next.js",
6 | };
7 |
8 | export default function RootLayout({
9 | children,
10 | }: {
11 | children: React.ReactNode;
12 | }) {
13 | return (
14 |
15 |
{children}
16 |
17 | );
18 | }
19 |
--------------------------------------------------------------------------------
/examples/nextjs/app/page.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 |
3 | import dynamic from "next/dynamic";
4 |
5 | const ClientPdf = dynamic(() => import("./Pdf"), {
6 | ssr: false,
7 | });
8 |
9 | export default function HomePage() {
10 | return ;
11 | }
12 |
--------------------------------------------------------------------------------
/examples/nextjs/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {
3 | transpilePackages: ["../../../src"],
4 | };
5 |
6 | module.exports = nextConfig;
7 |
--------------------------------------------------------------------------------
/examples/nextjs/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-pdf-tailwind-nextjs-example",
3 | "version": "0.0.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "next build",
8 | "start": "next start",
9 | "lint": "next lint"
10 | },
11 | "dependencies": {
12 | "@react-pdf/renderer": "^3.1.14",
13 | "react": "^18",
14 | "react-dom": "^18",
15 | "next": "14.0.4"
16 | },
17 | "devDependencies": {
18 | "typescript": "^5",
19 | "@types/node": "^20",
20 | "@types/react": "^18",
21 | "@types/react-dom": "^18",
22 | "autoprefixer": "^10.0.1",
23 | "postcss": "^8",
24 | "tailwindcss": "^3.3.0",
25 | "eslint": "^8",
26 | "eslint-config-next": "14.0.4"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/examples/nextjs/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | };
7 |
--------------------------------------------------------------------------------
/examples/nextjs/tailwind.config.ts:
--------------------------------------------------------------------------------
1 | import type { Config } from "tailwindcss";
2 |
3 | const config: Config = {
4 | content: [
5 | "./pages/**/*.{js,ts,jsx,tsx,mdx}",
6 | "./components/**/*.{js,ts,jsx,tsx,mdx}",
7 | "./app/**/*.{js,ts,jsx,tsx,mdx}",
8 | ],
9 | theme: {
10 | extend: {
11 | backgroundImage: {
12 | "gradient-radial": "radial-gradient(var(--tw-gradient-stops))",
13 | "gradient-conic":
14 | "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))",
15 | },
16 | },
17 | },
18 | plugins: [],
19 | };
20 | export default config;
21 |
--------------------------------------------------------------------------------
/examples/nextjs/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "noEmit": true,
9 | "esModuleInterop": true,
10 | "module": "esnext",
11 | "moduleResolution": "bundler",
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "jsx": "preserve",
15 | "incremental": true,
16 | "plugins": [
17 | {
18 | "name": "next"
19 | }
20 | ],
21 | "paths": {
22 | "@/*": ["./*"]
23 | }
24 | },
25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
26 | "exclude": ["node_modules"]
27 | }
28 |
--------------------------------------------------------------------------------
/examples/vite/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/examples/vite/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite example
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/examples/vite/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-pdf-tailwind-vite-example",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "tsc && vite build",
9 | "preview": "vite preview"
10 | },
11 | "dependencies": {
12 | "@react-pdf/renderer": "^3.1.14",
13 | "events": "^3.3.0",
14 | "react": "^18.2.0",
15 | "react-dom": "^18.2.0"
16 | },
17 | "devDependencies": {
18 | "@types/react": "^18.2.45",
19 | "@types/react-dom": "^18.2.18",
20 | "@vitejs/plugin-react": "^4.2.1",
21 | "typescript": "^5.3.3",
22 | "vite": "^5.0.10"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/examples/vite/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | dependencies:
8 | '@react-pdf/renderer':
9 | specifier: ^3.1.14
10 | version: 3.1.14(react@18.2.0)
11 | events:
12 | specifier: ^3.3.0
13 | version: 3.3.0
14 | react:
15 | specifier: ^18.2.0
16 | version: 18.2.0
17 | react-dom:
18 | specifier: ^18.2.0
19 | version: 18.2.0(react@18.2.0)
20 |
21 | devDependencies:
22 | '@types/react':
23 | specifier: ^18.2.45
24 | version: 18.2.45
25 | '@types/react-dom':
26 | specifier: ^18.2.18
27 | version: 18.2.18
28 | '@vitejs/plugin-react':
29 | specifier: ^4.2.1
30 | version: 4.2.1(vite@5.0.10)
31 | typescript:
32 | specifier: ^5.3.3
33 | version: 5.3.3
34 | vite:
35 | specifier: ^5.0.10
36 | version: 5.0.10
37 |
38 | packages:
39 |
40 | /@ampproject/remapping@2.2.1:
41 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
42 | engines: {node: '>=6.0.0'}
43 | dependencies:
44 | '@jridgewell/gen-mapping': 0.3.3
45 | '@jridgewell/trace-mapping': 0.3.20
46 | dev: true
47 |
48 | /@babel/code-frame@7.23.5:
49 | resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
50 | engines: {node: '>=6.9.0'}
51 | dependencies:
52 | '@babel/highlight': 7.23.4
53 | chalk: 2.4.2
54 | dev: true
55 |
56 | /@babel/compat-data@7.23.5:
57 | resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==}
58 | engines: {node: '>=6.9.0'}
59 | dev: true
60 |
61 | /@babel/core@7.23.6:
62 | resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==}
63 | engines: {node: '>=6.9.0'}
64 | dependencies:
65 | '@ampproject/remapping': 2.2.1
66 | '@babel/code-frame': 7.23.5
67 | '@babel/generator': 7.23.6
68 | '@babel/helper-compilation-targets': 7.23.6
69 | '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6)
70 | '@babel/helpers': 7.23.6
71 | '@babel/parser': 7.23.6
72 | '@babel/template': 7.22.15
73 | '@babel/traverse': 7.23.6
74 | '@babel/types': 7.23.6
75 | convert-source-map: 2.0.0
76 | debug: 4.3.4
77 | gensync: 1.0.0-beta.2
78 | json5: 2.2.3
79 | semver: 6.3.1
80 | transitivePeerDependencies:
81 | - supports-color
82 | dev: true
83 |
84 | /@babel/generator@7.23.6:
85 | resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==}
86 | engines: {node: '>=6.9.0'}
87 | dependencies:
88 | '@babel/types': 7.23.6
89 | '@jridgewell/gen-mapping': 0.3.3
90 | '@jridgewell/trace-mapping': 0.3.20
91 | jsesc: 2.5.2
92 | dev: true
93 |
94 | /@babel/helper-compilation-targets@7.23.6:
95 | resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==}
96 | engines: {node: '>=6.9.0'}
97 | dependencies:
98 | '@babel/compat-data': 7.23.5
99 | '@babel/helper-validator-option': 7.23.5
100 | browserslist: 4.22.2
101 | lru-cache: 5.1.1
102 | semver: 6.3.1
103 | dev: true
104 |
105 | /@babel/helper-environment-visitor@7.22.20:
106 | resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
107 | engines: {node: '>=6.9.0'}
108 | dev: true
109 |
110 | /@babel/helper-function-name@7.23.0:
111 | resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
112 | engines: {node: '>=6.9.0'}
113 | dependencies:
114 | '@babel/template': 7.22.15
115 | '@babel/types': 7.23.6
116 | dev: true
117 |
118 | /@babel/helper-hoist-variables@7.22.5:
119 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
120 | engines: {node: '>=6.9.0'}
121 | dependencies:
122 | '@babel/types': 7.23.6
123 | dev: true
124 |
125 | /@babel/helper-module-imports@7.22.15:
126 | resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==}
127 | engines: {node: '>=6.9.0'}
128 | dependencies:
129 | '@babel/types': 7.23.6
130 | dev: true
131 |
132 | /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6):
133 | resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==}
134 | engines: {node: '>=6.9.0'}
135 | peerDependencies:
136 | '@babel/core': ^7.0.0
137 | dependencies:
138 | '@babel/core': 7.23.6
139 | '@babel/helper-environment-visitor': 7.22.20
140 | '@babel/helper-module-imports': 7.22.15
141 | '@babel/helper-simple-access': 7.22.5
142 | '@babel/helper-split-export-declaration': 7.22.6
143 | '@babel/helper-validator-identifier': 7.22.20
144 | dev: true
145 |
146 | /@babel/helper-plugin-utils@7.22.5:
147 | resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==}
148 | engines: {node: '>=6.9.0'}
149 | dev: true
150 |
151 | /@babel/helper-simple-access@7.22.5:
152 | resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
153 | engines: {node: '>=6.9.0'}
154 | dependencies:
155 | '@babel/types': 7.23.6
156 | dev: true
157 |
158 | /@babel/helper-split-export-declaration@7.22.6:
159 | resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
160 | engines: {node: '>=6.9.0'}
161 | dependencies:
162 | '@babel/types': 7.23.6
163 | dev: true
164 |
165 | /@babel/helper-string-parser@7.23.4:
166 | resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==}
167 | engines: {node: '>=6.9.0'}
168 | dev: true
169 |
170 | /@babel/helper-validator-identifier@7.22.20:
171 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
172 | engines: {node: '>=6.9.0'}
173 | dev: true
174 |
175 | /@babel/helper-validator-option@7.23.5:
176 | resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
177 | engines: {node: '>=6.9.0'}
178 | dev: true
179 |
180 | /@babel/helpers@7.23.6:
181 | resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==}
182 | engines: {node: '>=6.9.0'}
183 | dependencies:
184 | '@babel/template': 7.22.15
185 | '@babel/traverse': 7.23.6
186 | '@babel/types': 7.23.6
187 | transitivePeerDependencies:
188 | - supports-color
189 | dev: true
190 |
191 | /@babel/highlight@7.23.4:
192 | resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
193 | engines: {node: '>=6.9.0'}
194 | dependencies:
195 | '@babel/helper-validator-identifier': 7.22.20
196 | chalk: 2.4.2
197 | js-tokens: 4.0.0
198 | dev: true
199 |
200 | /@babel/parser@7.23.6:
201 | resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==}
202 | engines: {node: '>=6.0.0'}
203 | hasBin: true
204 | dependencies:
205 | '@babel/types': 7.23.6
206 | dev: true
207 |
208 | /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.6):
209 | resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==}
210 | engines: {node: '>=6.9.0'}
211 | peerDependencies:
212 | '@babel/core': ^7.0.0-0
213 | dependencies:
214 | '@babel/core': 7.23.6
215 | '@babel/helper-plugin-utils': 7.22.5
216 | dev: true
217 |
218 | /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.6):
219 | resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==}
220 | engines: {node: '>=6.9.0'}
221 | peerDependencies:
222 | '@babel/core': ^7.0.0-0
223 | dependencies:
224 | '@babel/core': 7.23.6
225 | '@babel/helper-plugin-utils': 7.22.5
226 | dev: true
227 |
228 | /@babel/runtime@7.23.6:
229 | resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==}
230 | engines: {node: '>=6.9.0'}
231 | dependencies:
232 | regenerator-runtime: 0.14.1
233 | dev: false
234 |
235 | /@babel/template@7.22.15:
236 | resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
237 | engines: {node: '>=6.9.0'}
238 | dependencies:
239 | '@babel/code-frame': 7.23.5
240 | '@babel/parser': 7.23.6
241 | '@babel/types': 7.23.6
242 | dev: true
243 |
244 | /@babel/traverse@7.23.6:
245 | resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==}
246 | engines: {node: '>=6.9.0'}
247 | dependencies:
248 | '@babel/code-frame': 7.23.5
249 | '@babel/generator': 7.23.6
250 | '@babel/helper-environment-visitor': 7.22.20
251 | '@babel/helper-function-name': 7.23.0
252 | '@babel/helper-hoist-variables': 7.22.5
253 | '@babel/helper-split-export-declaration': 7.22.6
254 | '@babel/parser': 7.23.6
255 | '@babel/types': 7.23.6
256 | debug: 4.3.4
257 | globals: 11.12.0
258 | transitivePeerDependencies:
259 | - supports-color
260 | dev: true
261 |
262 | /@babel/types@7.23.6:
263 | resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==}
264 | engines: {node: '>=6.9.0'}
265 | dependencies:
266 | '@babel/helper-string-parser': 7.23.4
267 | '@babel/helper-validator-identifier': 7.22.20
268 | to-fast-properties: 2.0.0
269 | dev: true
270 |
271 | /@esbuild/android-arm64@0.19.9:
272 | resolution: {integrity: sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==}
273 | engines: {node: '>=12'}
274 | cpu: [arm64]
275 | os: [android]
276 | requiresBuild: true
277 | dev: true
278 | optional: true
279 |
280 | /@esbuild/android-arm@0.19.9:
281 | resolution: {integrity: sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==}
282 | engines: {node: '>=12'}
283 | cpu: [arm]
284 | os: [android]
285 | requiresBuild: true
286 | dev: true
287 | optional: true
288 |
289 | /@esbuild/android-x64@0.19.9:
290 | resolution: {integrity: sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==}
291 | engines: {node: '>=12'}
292 | cpu: [x64]
293 | os: [android]
294 | requiresBuild: true
295 | dev: true
296 | optional: true
297 |
298 | /@esbuild/darwin-arm64@0.19.9:
299 | resolution: {integrity: sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==}
300 | engines: {node: '>=12'}
301 | cpu: [arm64]
302 | os: [darwin]
303 | requiresBuild: true
304 | dev: true
305 | optional: true
306 |
307 | /@esbuild/darwin-x64@0.19.9:
308 | resolution: {integrity: sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==}
309 | engines: {node: '>=12'}
310 | cpu: [x64]
311 | os: [darwin]
312 | requiresBuild: true
313 | dev: true
314 | optional: true
315 |
316 | /@esbuild/freebsd-arm64@0.19.9:
317 | resolution: {integrity: sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==}
318 | engines: {node: '>=12'}
319 | cpu: [arm64]
320 | os: [freebsd]
321 | requiresBuild: true
322 | dev: true
323 | optional: true
324 |
325 | /@esbuild/freebsd-x64@0.19.9:
326 | resolution: {integrity: sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==}
327 | engines: {node: '>=12'}
328 | cpu: [x64]
329 | os: [freebsd]
330 | requiresBuild: true
331 | dev: true
332 | optional: true
333 |
334 | /@esbuild/linux-arm64@0.19.9:
335 | resolution: {integrity: sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==}
336 | engines: {node: '>=12'}
337 | cpu: [arm64]
338 | os: [linux]
339 | requiresBuild: true
340 | dev: true
341 | optional: true
342 |
343 | /@esbuild/linux-arm@0.19.9:
344 | resolution: {integrity: sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==}
345 | engines: {node: '>=12'}
346 | cpu: [arm]
347 | os: [linux]
348 | requiresBuild: true
349 | dev: true
350 | optional: true
351 |
352 | /@esbuild/linux-ia32@0.19.9:
353 | resolution: {integrity: sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==}
354 | engines: {node: '>=12'}
355 | cpu: [ia32]
356 | os: [linux]
357 | requiresBuild: true
358 | dev: true
359 | optional: true
360 |
361 | /@esbuild/linux-loong64@0.19.9:
362 | resolution: {integrity: sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==}
363 | engines: {node: '>=12'}
364 | cpu: [loong64]
365 | os: [linux]
366 | requiresBuild: true
367 | dev: true
368 | optional: true
369 |
370 | /@esbuild/linux-mips64el@0.19.9:
371 | resolution: {integrity: sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==}
372 | engines: {node: '>=12'}
373 | cpu: [mips64el]
374 | os: [linux]
375 | requiresBuild: true
376 | dev: true
377 | optional: true
378 |
379 | /@esbuild/linux-ppc64@0.19.9:
380 | resolution: {integrity: sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==}
381 | engines: {node: '>=12'}
382 | cpu: [ppc64]
383 | os: [linux]
384 | requiresBuild: true
385 | dev: true
386 | optional: true
387 |
388 | /@esbuild/linux-riscv64@0.19.9:
389 | resolution: {integrity: sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==}
390 | engines: {node: '>=12'}
391 | cpu: [riscv64]
392 | os: [linux]
393 | requiresBuild: true
394 | dev: true
395 | optional: true
396 |
397 | /@esbuild/linux-s390x@0.19.9:
398 | resolution: {integrity: sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==}
399 | engines: {node: '>=12'}
400 | cpu: [s390x]
401 | os: [linux]
402 | requiresBuild: true
403 | dev: true
404 | optional: true
405 |
406 | /@esbuild/linux-x64@0.19.9:
407 | resolution: {integrity: sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A==}
408 | engines: {node: '>=12'}
409 | cpu: [x64]
410 | os: [linux]
411 | requiresBuild: true
412 | dev: true
413 | optional: true
414 |
415 | /@esbuild/netbsd-x64@0.19.9:
416 | resolution: {integrity: sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==}
417 | engines: {node: '>=12'}
418 | cpu: [x64]
419 | os: [netbsd]
420 | requiresBuild: true
421 | dev: true
422 | optional: true
423 |
424 | /@esbuild/openbsd-x64@0.19.9:
425 | resolution: {integrity: sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==}
426 | engines: {node: '>=12'}
427 | cpu: [x64]
428 | os: [openbsd]
429 | requiresBuild: true
430 | dev: true
431 | optional: true
432 |
433 | /@esbuild/sunos-x64@0.19.9:
434 | resolution: {integrity: sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==}
435 | engines: {node: '>=12'}
436 | cpu: [x64]
437 | os: [sunos]
438 | requiresBuild: true
439 | dev: true
440 | optional: true
441 |
442 | /@esbuild/win32-arm64@0.19.9:
443 | resolution: {integrity: sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==}
444 | engines: {node: '>=12'}
445 | cpu: [arm64]
446 | os: [win32]
447 | requiresBuild: true
448 | dev: true
449 | optional: true
450 |
451 | /@esbuild/win32-ia32@0.19.9:
452 | resolution: {integrity: sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==}
453 | engines: {node: '>=12'}
454 | cpu: [ia32]
455 | os: [win32]
456 | requiresBuild: true
457 | dev: true
458 | optional: true
459 |
460 | /@esbuild/win32-x64@0.19.9:
461 | resolution: {integrity: sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==}
462 | engines: {node: '>=12'}
463 | cpu: [x64]
464 | os: [win32]
465 | requiresBuild: true
466 | dev: true
467 | optional: true
468 |
469 | /@jridgewell/gen-mapping@0.3.3:
470 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
471 | engines: {node: '>=6.0.0'}
472 | dependencies:
473 | '@jridgewell/set-array': 1.1.2
474 | '@jridgewell/sourcemap-codec': 1.4.15
475 | '@jridgewell/trace-mapping': 0.3.20
476 | dev: true
477 |
478 | /@jridgewell/resolve-uri@3.1.1:
479 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
480 | engines: {node: '>=6.0.0'}
481 | dev: true
482 |
483 | /@jridgewell/set-array@1.1.2:
484 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
485 | engines: {node: '>=6.0.0'}
486 | dev: true
487 |
488 | /@jridgewell/sourcemap-codec@1.4.15:
489 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
490 | dev: true
491 |
492 | /@jridgewell/trace-mapping@0.3.20:
493 | resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
494 | dependencies:
495 | '@jridgewell/resolve-uri': 3.1.1
496 | '@jridgewell/sourcemap-codec': 1.4.15
497 | dev: true
498 |
499 | /@react-pdf/fns@2.0.1:
500 | resolution: {integrity: sha512-/vgecczzFYBQFkgUupH+sxXhLWQtBwdwCgweyh25XOlR4NZuaMD/UVUDl4loFHhRQqDMQq37lkTcchh7zzW6ug==}
501 | dependencies:
502 | '@babel/runtime': 7.23.6
503 | dev: false
504 |
505 | /@react-pdf/font@2.3.7:
506 | resolution: {integrity: sha512-NoCieWea6c1mCpDBoyjPbUEC1qXa+S/M7+8vYPZ71aTMgX7co3gQc2e6YKwrSQeQP+BsBq3LSVhjI2ETXfcytw==}
507 | dependencies:
508 | '@babel/runtime': 7.23.6
509 | '@react-pdf/types': 2.3.4
510 | cross-fetch: 3.1.8
511 | fontkit: 2.0.2
512 | is-url: 1.2.4
513 | transitivePeerDependencies:
514 | - encoding
515 | dev: false
516 |
517 | /@react-pdf/image@2.2.2:
518 | resolution: {integrity: sha512-990JvRZuhsnHyAGd7gvmhfr+4/5PAHLH9IgDstaEDLEq2eFAIQFuNM7k3D6kjKgV1mM7Jqif3CWqrcHBF3jrJw==}
519 | dependencies:
520 | '@babel/runtime': 7.23.6
521 | '@react-pdf/png-js': 2.2.0
522 | cross-fetch: 3.1.8
523 | transitivePeerDependencies:
524 | - encoding
525 | dev: false
526 |
527 | /@react-pdf/layout@3.6.3:
528 | resolution: {integrity: sha512-w6ACZ9o18Q5wbzsY9a4KW2Gqn6Drt3AN/kb/I6SBz/L7PAJ9rPQBIDq/s5qZJ+/WwWy33rcC8WC1givtDhjCHQ==}
529 | dependencies:
530 | '@babel/runtime': 7.23.6
531 | '@react-pdf/fns': 2.0.1
532 | '@react-pdf/image': 2.2.2
533 | '@react-pdf/pdfkit': 3.0.2
534 | '@react-pdf/primitives': 3.0.1
535 | '@react-pdf/stylesheet': 4.1.8
536 | '@react-pdf/textkit': 4.2.0
537 | '@react-pdf/types': 2.3.4
538 | '@react-pdf/yoga': 4.1.2
539 | cross-fetch: 3.1.8
540 | emoji-regex: 10.3.0
541 | queue: 6.0.2
542 | transitivePeerDependencies:
543 | - encoding
544 | dev: false
545 |
546 | /@react-pdf/pdfkit@3.0.2:
547 | resolution: {integrity: sha512-+m5rwNCwyEH6lmnZWpsQJvdqb6YaCCR0nMWrc/KKDwznuPMrGmGWyNxqCja+bQPORcHZyl6Cd/iFL0glyB3QGw==}
548 | dependencies:
549 | '@babel/runtime': 7.23.6
550 | '@react-pdf/png-js': 2.2.0
551 | browserify-zlib: 0.2.0
552 | crypto-js: 4.2.0
553 | fontkit: 2.0.2
554 | vite-compatible-readable-stream: 3.6.1
555 | dev: false
556 |
557 | /@react-pdf/png-js@2.2.0:
558 | resolution: {integrity: sha512-csZU5lfNW73tq7s7zB/1rWXGro+Z9cQhxtsXwxS418TSszHUiM6PwddouiKJxdGhbVLjRIcuuFVa0aR5cDOC6w==}
559 | dependencies:
560 | browserify-zlib: 0.2.0
561 | dev: false
562 |
563 | /@react-pdf/primitives@3.0.1:
564 | resolution: {integrity: sha512-0HGcknrLNwyhxe+SZCBL29JY4M85mXKdvTZE9uhjNbADGgTc8wVnkc5+e4S/lDvugbVISXyuIhZnYwtK9eDnyQ==}
565 | dev: false
566 |
567 | /@react-pdf/render@3.2.7:
568 | resolution: {integrity: sha512-fAgbbAAkVL0hpcf1vUJLHxuPjPBqZuq8nors7fCwvoatBBwOWP9fza7IDPeFKN7+ZOnfmIZzes8Kc/DNHzJohw==}
569 | dependencies:
570 | '@babel/runtime': 7.23.6
571 | '@react-pdf/fns': 2.0.1
572 | '@react-pdf/primitives': 3.0.1
573 | '@react-pdf/textkit': 4.2.0
574 | '@react-pdf/types': 2.3.4
575 | abs-svg-path: 0.1.1
576 | color-string: 1.9.1
577 | normalize-svg-path: 1.1.0
578 | parse-svg-path: 0.1.2
579 | svg-arc-to-cubic-bezier: 3.2.0
580 | dev: false
581 |
582 | /@react-pdf/renderer@3.1.14(react@18.2.0):
583 | resolution: {integrity: sha512-Qk29uTamH6q+drK/YmiFbuQQ+yutesfIe+wyrsXFoUJUutIiDIaibO6zByMkhWb3M6CMt6NvG3NLHio1OF8U6Q==}
584 | peerDependencies:
585 | react: ^16.8.6 || ^17.0.0 || ^18.0.0
586 | dependencies:
587 | '@babel/runtime': 7.23.6
588 | '@react-pdf/font': 2.3.7
589 | '@react-pdf/layout': 3.6.3
590 | '@react-pdf/pdfkit': 3.0.2
591 | '@react-pdf/primitives': 3.0.1
592 | '@react-pdf/render': 3.2.7
593 | '@react-pdf/types': 2.3.4
594 | events: 3.3.0
595 | object-assign: 4.1.1
596 | prop-types: 15.8.1
597 | queue: 6.0.2
598 | react: 18.2.0
599 | scheduler: 0.17.0
600 | transitivePeerDependencies:
601 | - encoding
602 | dev: false
603 |
604 | /@react-pdf/stylesheet@4.1.8:
605 | resolution: {integrity: sha512-/EuB9RBsH3YYRj8mwzImaul619MvX3rsHNF4h8LnlwDOuBehPA3L/fHrikfPqtJvHqK2ty3GXnkw0HG5SQpMzw==}
606 | dependencies:
607 | '@babel/runtime': 7.23.6
608 | '@react-pdf/fns': 2.0.1
609 | '@react-pdf/types': 2.3.4
610 | color-string: 1.9.1
611 | hsl-to-hex: 1.0.0
612 | media-engine: 1.0.3
613 | postcss-value-parser: 4.2.0
614 | dev: false
615 |
616 | /@react-pdf/textkit@4.2.0:
617 | resolution: {integrity: sha512-R90pEOW6NdhUx4p99iROvKmwB06IRYdXMhh0QcmUeoPOLe64ZdMfs3LZliNUWgI5fCmq71J+nv868i/EakFPDg==}
618 | dependencies:
619 | '@babel/runtime': 7.23.6
620 | '@react-pdf/fns': 2.0.1
621 | hyphen: 1.9.1
622 | unicode-properties: 1.4.1
623 | dev: false
624 |
625 | /@react-pdf/types@2.3.4:
626 | resolution: {integrity: sha512-vGGz21BTE05EktBbotbd7fjC0Yi8A/lOSIpzd7L7aF1XY+vyIHlQVb35DWCipM1p/6XN4cr9etGAmm1e4Mtmjw==}
627 | dev: false
628 |
629 | /@react-pdf/yoga@4.1.2:
630 | resolution: {integrity: sha512-OlMZkFrJDj4GyKZ70thiObwwPVZ52B7mlPyfzwa+sgwsioqHXg9nMWOO+7SQFNUbbOGagMUu0bCuTv+iXYZuaQ==}
631 | dependencies:
632 | '@babel/runtime': 7.23.6
633 | dev: false
634 |
635 | /@rollup/rollup-android-arm-eabi@4.9.1:
636 | resolution: {integrity: sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==}
637 | cpu: [arm]
638 | os: [android]
639 | requiresBuild: true
640 | dev: true
641 | optional: true
642 |
643 | /@rollup/rollup-android-arm64@4.9.1:
644 | resolution: {integrity: sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==}
645 | cpu: [arm64]
646 | os: [android]
647 | requiresBuild: true
648 | dev: true
649 | optional: true
650 |
651 | /@rollup/rollup-darwin-arm64@4.9.1:
652 | resolution: {integrity: sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==}
653 | cpu: [arm64]
654 | os: [darwin]
655 | requiresBuild: true
656 | dev: true
657 | optional: true
658 |
659 | /@rollup/rollup-darwin-x64@4.9.1:
660 | resolution: {integrity: sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==}
661 | cpu: [x64]
662 | os: [darwin]
663 | requiresBuild: true
664 | dev: true
665 | optional: true
666 |
667 | /@rollup/rollup-linux-arm-gnueabihf@4.9.1:
668 | resolution: {integrity: sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==}
669 | cpu: [arm]
670 | os: [linux]
671 | requiresBuild: true
672 | dev: true
673 | optional: true
674 |
675 | /@rollup/rollup-linux-arm64-gnu@4.9.1:
676 | resolution: {integrity: sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==}
677 | cpu: [arm64]
678 | os: [linux]
679 | requiresBuild: true
680 | dev: true
681 | optional: true
682 |
683 | /@rollup/rollup-linux-arm64-musl@4.9.1:
684 | resolution: {integrity: sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==}
685 | cpu: [arm64]
686 | os: [linux]
687 | requiresBuild: true
688 | dev: true
689 | optional: true
690 |
691 | /@rollup/rollup-linux-riscv64-gnu@4.9.1:
692 | resolution: {integrity: sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==}
693 | cpu: [riscv64]
694 | os: [linux]
695 | requiresBuild: true
696 | dev: true
697 | optional: true
698 |
699 | /@rollup/rollup-linux-x64-gnu@4.9.1:
700 | resolution: {integrity: sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==}
701 | cpu: [x64]
702 | os: [linux]
703 | requiresBuild: true
704 | dev: true
705 | optional: true
706 |
707 | /@rollup/rollup-linux-x64-musl@4.9.1:
708 | resolution: {integrity: sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==}
709 | cpu: [x64]
710 | os: [linux]
711 | requiresBuild: true
712 | dev: true
713 | optional: true
714 |
715 | /@rollup/rollup-win32-arm64-msvc@4.9.1:
716 | resolution: {integrity: sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==}
717 | cpu: [arm64]
718 | os: [win32]
719 | requiresBuild: true
720 | dev: true
721 | optional: true
722 |
723 | /@rollup/rollup-win32-ia32-msvc@4.9.1:
724 | resolution: {integrity: sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==}
725 | cpu: [ia32]
726 | os: [win32]
727 | requiresBuild: true
728 | dev: true
729 | optional: true
730 |
731 | /@rollup/rollup-win32-x64-msvc@4.9.1:
732 | resolution: {integrity: sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==}
733 | cpu: [x64]
734 | os: [win32]
735 | requiresBuild: true
736 | dev: true
737 | optional: true
738 |
739 | /@swc/helpers@0.4.14:
740 | resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==}
741 | dependencies:
742 | tslib: 2.6.2
743 | dev: false
744 |
745 | /@swc/helpers@0.4.36:
746 | resolution: {integrity: sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==}
747 | dependencies:
748 | legacy-swc-helpers: /@swc/helpers@0.4.14
749 | tslib: 2.6.2
750 | dev: false
751 |
752 | /@types/babel__core@7.20.5:
753 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
754 | dependencies:
755 | '@babel/parser': 7.23.6
756 | '@babel/types': 7.23.6
757 | '@types/babel__generator': 7.6.8
758 | '@types/babel__template': 7.4.4
759 | '@types/babel__traverse': 7.20.4
760 | dev: true
761 |
762 | /@types/babel__generator@7.6.8:
763 | resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
764 | dependencies:
765 | '@babel/types': 7.23.6
766 | dev: true
767 |
768 | /@types/babel__template@7.4.4:
769 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
770 | dependencies:
771 | '@babel/parser': 7.23.6
772 | '@babel/types': 7.23.6
773 | dev: true
774 |
775 | /@types/babel__traverse@7.20.4:
776 | resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==}
777 | dependencies:
778 | '@babel/types': 7.23.6
779 | dev: true
780 |
781 | /@types/prop-types@15.7.11:
782 | resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==}
783 | dev: true
784 |
785 | /@types/react-dom@18.2.18:
786 | resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==}
787 | dependencies:
788 | '@types/react': 18.2.45
789 | dev: true
790 |
791 | /@types/react@18.2.45:
792 | resolution: {integrity: sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==}
793 | dependencies:
794 | '@types/prop-types': 15.7.11
795 | '@types/scheduler': 0.16.8
796 | csstype: 3.1.3
797 | dev: true
798 |
799 | /@types/scheduler@0.16.8:
800 | resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==}
801 | dev: true
802 |
803 | /@vitejs/plugin-react@4.2.1(vite@5.0.10):
804 | resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==}
805 | engines: {node: ^14.18.0 || >=16.0.0}
806 | peerDependencies:
807 | vite: ^4.2.0 || ^5.0.0
808 | dependencies:
809 | '@babel/core': 7.23.6
810 | '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.6)
811 | '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.6)
812 | '@types/babel__core': 7.20.5
813 | react-refresh: 0.14.0
814 | vite: 5.0.10
815 | transitivePeerDependencies:
816 | - supports-color
817 | dev: true
818 |
819 | /abs-svg-path@0.1.1:
820 | resolution: {integrity: sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==}
821 | dev: false
822 |
823 | /ansi-styles@3.2.1:
824 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
825 | engines: {node: '>=4'}
826 | dependencies:
827 | color-convert: 1.9.3
828 | dev: true
829 |
830 | /base64-js@1.5.1:
831 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
832 | dev: false
833 |
834 | /brotli@1.3.3:
835 | resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==}
836 | dependencies:
837 | base64-js: 1.5.1
838 | dev: false
839 |
840 | /browserify-zlib@0.2.0:
841 | resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==}
842 | dependencies:
843 | pako: 1.0.11
844 | dev: false
845 |
846 | /browserslist@4.22.2:
847 | resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==}
848 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
849 | hasBin: true
850 | dependencies:
851 | caniuse-lite: 1.0.30001570
852 | electron-to-chromium: 1.4.614
853 | node-releases: 2.0.14
854 | update-browserslist-db: 1.0.13(browserslist@4.22.2)
855 | dev: true
856 |
857 | /caniuse-lite@1.0.30001570:
858 | resolution: {integrity: sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==}
859 | dev: true
860 |
861 | /chalk@2.4.2:
862 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
863 | engines: {node: '>=4'}
864 | dependencies:
865 | ansi-styles: 3.2.1
866 | escape-string-regexp: 1.0.5
867 | supports-color: 5.5.0
868 | dev: true
869 |
870 | /clone@2.1.2:
871 | resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
872 | engines: {node: '>=0.8'}
873 | dev: false
874 |
875 | /color-convert@1.9.3:
876 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
877 | dependencies:
878 | color-name: 1.1.3
879 | dev: true
880 |
881 | /color-name@1.1.3:
882 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
883 | dev: true
884 |
885 | /color-name@1.1.4:
886 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
887 | dev: false
888 |
889 | /color-string@1.9.1:
890 | resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
891 | dependencies:
892 | color-name: 1.1.4
893 | simple-swizzle: 0.2.2
894 | dev: false
895 |
896 | /convert-source-map@2.0.0:
897 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
898 | dev: true
899 |
900 | /cross-fetch@3.1.8:
901 | resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==}
902 | dependencies:
903 | node-fetch: 2.7.0
904 | transitivePeerDependencies:
905 | - encoding
906 | dev: false
907 |
908 | /crypto-js@4.2.0:
909 | resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
910 | dev: false
911 |
912 | /csstype@3.1.3:
913 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
914 | dev: true
915 |
916 | /debug@4.3.4:
917 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
918 | engines: {node: '>=6.0'}
919 | peerDependencies:
920 | supports-color: '*'
921 | peerDependenciesMeta:
922 | supports-color:
923 | optional: true
924 | dependencies:
925 | ms: 2.1.2
926 | dev: true
927 |
928 | /dfa@1.2.0:
929 | resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==}
930 | dev: false
931 |
932 | /electron-to-chromium@1.4.614:
933 | resolution: {integrity: sha512-X4ze/9Sc3QWs6h92yerwqv7aB/uU8vCjZcrMjA8N9R1pjMFRe44dLsck5FzLilOYvcXuDn93B+bpGYyufc70gQ==}
934 | dev: true
935 |
936 | /emoji-regex@10.3.0:
937 | resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
938 | dev: false
939 |
940 | /esbuild@0.19.9:
941 | resolution: {integrity: sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==}
942 | engines: {node: '>=12'}
943 | hasBin: true
944 | requiresBuild: true
945 | optionalDependencies:
946 | '@esbuild/android-arm': 0.19.9
947 | '@esbuild/android-arm64': 0.19.9
948 | '@esbuild/android-x64': 0.19.9
949 | '@esbuild/darwin-arm64': 0.19.9
950 | '@esbuild/darwin-x64': 0.19.9
951 | '@esbuild/freebsd-arm64': 0.19.9
952 | '@esbuild/freebsd-x64': 0.19.9
953 | '@esbuild/linux-arm': 0.19.9
954 | '@esbuild/linux-arm64': 0.19.9
955 | '@esbuild/linux-ia32': 0.19.9
956 | '@esbuild/linux-loong64': 0.19.9
957 | '@esbuild/linux-mips64el': 0.19.9
958 | '@esbuild/linux-ppc64': 0.19.9
959 | '@esbuild/linux-riscv64': 0.19.9
960 | '@esbuild/linux-s390x': 0.19.9
961 | '@esbuild/linux-x64': 0.19.9
962 | '@esbuild/netbsd-x64': 0.19.9
963 | '@esbuild/openbsd-x64': 0.19.9
964 | '@esbuild/sunos-x64': 0.19.9
965 | '@esbuild/win32-arm64': 0.19.9
966 | '@esbuild/win32-ia32': 0.19.9
967 | '@esbuild/win32-x64': 0.19.9
968 | dev: true
969 |
970 | /escalade@3.1.1:
971 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
972 | engines: {node: '>=6'}
973 | dev: true
974 |
975 | /escape-string-regexp@1.0.5:
976 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
977 | engines: {node: '>=0.8.0'}
978 | dev: true
979 |
980 | /events@3.3.0:
981 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
982 | engines: {node: '>=0.8.x'}
983 | dev: false
984 |
985 | /fast-deep-equal@3.1.3:
986 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
987 | dev: false
988 |
989 | /fontkit@2.0.2:
990 | resolution: {integrity: sha512-jc4k5Yr8iov8QfS6u8w2CnHWVmbOGtdBtOXMze5Y+QD966Rx6PEVWXSEGwXlsDlKtu1G12cJjcsybnqhSk/+LA==}
991 | dependencies:
992 | '@swc/helpers': 0.4.36
993 | brotli: 1.3.3
994 | clone: 2.1.2
995 | dfa: 1.2.0
996 | fast-deep-equal: 3.1.3
997 | restructure: 3.0.0
998 | tiny-inflate: 1.0.3
999 | unicode-properties: 1.4.1
1000 | unicode-trie: 2.0.0
1001 | dev: false
1002 |
1003 | /fsevents@2.3.3:
1004 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1005 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1006 | os: [darwin]
1007 | requiresBuild: true
1008 | dev: true
1009 | optional: true
1010 |
1011 | /gensync@1.0.0-beta.2:
1012 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
1013 | engines: {node: '>=6.9.0'}
1014 | dev: true
1015 |
1016 | /globals@11.12.0:
1017 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
1018 | engines: {node: '>=4'}
1019 | dev: true
1020 |
1021 | /has-flag@3.0.0:
1022 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
1023 | engines: {node: '>=4'}
1024 | dev: true
1025 |
1026 | /hsl-to-hex@1.0.0:
1027 | resolution: {integrity: sha512-K6GVpucS5wFf44X0h2bLVRDsycgJmf9FF2elg+CrqD8GcFU8c6vYhgXn8NjUkFCwj+xDFb70qgLbTUm6sxwPmA==}
1028 | dependencies:
1029 | hsl-to-rgb-for-reals: 1.1.1
1030 | dev: false
1031 |
1032 | /hsl-to-rgb-for-reals@1.1.1:
1033 | resolution: {integrity: sha512-LgOWAkrN0rFaQpfdWBQlv/VhkOxb5AsBjk6NQVx4yEzWS923T07X0M1Y0VNko2H52HeSpZrZNNMJ0aFqsdVzQg==}
1034 | dev: false
1035 |
1036 | /hyphen@1.9.1:
1037 | resolution: {integrity: sha512-fIPVvM6BUW+878xne+wwIcBjMxeKpoADmxNTjKMocUQWiGOvwyEfZEG95IeL/t4Su6nbfbXeYDUnz62pxzLPmw==}
1038 | dev: false
1039 |
1040 | /inherits@2.0.4:
1041 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1042 | dev: false
1043 |
1044 | /is-arrayish@0.3.2:
1045 | resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
1046 | dev: false
1047 |
1048 | /is-url@1.2.4:
1049 | resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==}
1050 | dev: false
1051 |
1052 | /js-tokens@4.0.0:
1053 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1054 |
1055 | /jsesc@2.5.2:
1056 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
1057 | engines: {node: '>=4'}
1058 | hasBin: true
1059 | dev: true
1060 |
1061 | /json5@2.2.3:
1062 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
1063 | engines: {node: '>=6'}
1064 | hasBin: true
1065 | dev: true
1066 |
1067 | /loose-envify@1.4.0:
1068 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
1069 | hasBin: true
1070 | dependencies:
1071 | js-tokens: 4.0.0
1072 | dev: false
1073 |
1074 | /lru-cache@5.1.1:
1075 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
1076 | dependencies:
1077 | yallist: 3.1.1
1078 | dev: true
1079 |
1080 | /media-engine@1.0.3:
1081 | resolution: {integrity: sha512-aa5tG6sDoK+k70B9iEX1NeyfT8ObCKhNDs6lJVpwF6r8vhUfuKMslIcirq6HIUYuuUYLefcEQOn9bSBOvawtwg==}
1082 | dev: false
1083 |
1084 | /ms@2.1.2:
1085 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1086 | dev: true
1087 |
1088 | /nanoid@3.3.7:
1089 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
1090 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1091 | hasBin: true
1092 | dev: true
1093 |
1094 | /node-fetch@2.7.0:
1095 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
1096 | engines: {node: 4.x || >=6.0.0}
1097 | peerDependencies:
1098 | encoding: ^0.1.0
1099 | peerDependenciesMeta:
1100 | encoding:
1101 | optional: true
1102 | dependencies:
1103 | whatwg-url: 5.0.0
1104 | dev: false
1105 |
1106 | /node-releases@2.0.14:
1107 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
1108 | dev: true
1109 |
1110 | /normalize-svg-path@1.1.0:
1111 | resolution: {integrity: sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==}
1112 | dependencies:
1113 | svg-arc-to-cubic-bezier: 3.2.0
1114 | dev: false
1115 |
1116 | /object-assign@4.1.1:
1117 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1118 | engines: {node: '>=0.10.0'}
1119 | dev: false
1120 |
1121 | /pako@0.2.9:
1122 | resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
1123 | dev: false
1124 |
1125 | /pako@1.0.11:
1126 | resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
1127 | dev: false
1128 |
1129 | /parse-svg-path@0.1.2:
1130 | resolution: {integrity: sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==}
1131 | dev: false
1132 |
1133 | /picocolors@1.0.0:
1134 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
1135 | dev: true
1136 |
1137 | /postcss-value-parser@4.2.0:
1138 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
1139 | dev: false
1140 |
1141 | /postcss@8.4.32:
1142 | resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==}
1143 | engines: {node: ^10 || ^12 || >=14}
1144 | dependencies:
1145 | nanoid: 3.3.7
1146 | picocolors: 1.0.0
1147 | source-map-js: 1.0.2
1148 | dev: true
1149 |
1150 | /prop-types@15.8.1:
1151 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
1152 | dependencies:
1153 | loose-envify: 1.4.0
1154 | object-assign: 4.1.1
1155 | react-is: 16.13.1
1156 | dev: false
1157 |
1158 | /queue@6.0.2:
1159 | resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==}
1160 | dependencies:
1161 | inherits: 2.0.4
1162 | dev: false
1163 |
1164 | /react-dom@18.2.0(react@18.2.0):
1165 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
1166 | peerDependencies:
1167 | react: ^18.2.0
1168 | dependencies:
1169 | loose-envify: 1.4.0
1170 | react: 18.2.0
1171 | scheduler: 0.23.0
1172 | dev: false
1173 |
1174 | /react-is@16.13.1:
1175 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
1176 | dev: false
1177 |
1178 | /react-refresh@0.14.0:
1179 | resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==}
1180 | engines: {node: '>=0.10.0'}
1181 | dev: true
1182 |
1183 | /react@18.2.0:
1184 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
1185 | engines: {node: '>=0.10.0'}
1186 | dependencies:
1187 | loose-envify: 1.4.0
1188 | dev: false
1189 |
1190 | /regenerator-runtime@0.14.1:
1191 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
1192 | dev: false
1193 |
1194 | /restructure@3.0.0:
1195 | resolution: {integrity: sha512-Xj8/MEIhhfj9X2rmD9iJ4Gga9EFqVlpMj3vfLnV2r/Mh5jRMryNV+6lWh9GdJtDBcBSPIqzRdfBQ3wDtNFv/uw==}
1196 | dev: false
1197 |
1198 | /rollup@4.9.1:
1199 | resolution: {integrity: sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==}
1200 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1201 | hasBin: true
1202 | optionalDependencies:
1203 | '@rollup/rollup-android-arm-eabi': 4.9.1
1204 | '@rollup/rollup-android-arm64': 4.9.1
1205 | '@rollup/rollup-darwin-arm64': 4.9.1
1206 | '@rollup/rollup-darwin-x64': 4.9.1
1207 | '@rollup/rollup-linux-arm-gnueabihf': 4.9.1
1208 | '@rollup/rollup-linux-arm64-gnu': 4.9.1
1209 | '@rollup/rollup-linux-arm64-musl': 4.9.1
1210 | '@rollup/rollup-linux-riscv64-gnu': 4.9.1
1211 | '@rollup/rollup-linux-x64-gnu': 4.9.1
1212 | '@rollup/rollup-linux-x64-musl': 4.9.1
1213 | '@rollup/rollup-win32-arm64-msvc': 4.9.1
1214 | '@rollup/rollup-win32-ia32-msvc': 4.9.1
1215 | '@rollup/rollup-win32-x64-msvc': 4.9.1
1216 | fsevents: 2.3.3
1217 | dev: true
1218 |
1219 | /safe-buffer@5.2.1:
1220 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
1221 | dev: false
1222 |
1223 | /scheduler@0.17.0:
1224 | resolution: {integrity: sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA==}
1225 | dependencies:
1226 | loose-envify: 1.4.0
1227 | object-assign: 4.1.1
1228 | dev: false
1229 |
1230 | /scheduler@0.23.0:
1231 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
1232 | dependencies:
1233 | loose-envify: 1.4.0
1234 | dev: false
1235 |
1236 | /semver@6.3.1:
1237 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
1238 | hasBin: true
1239 | dev: true
1240 |
1241 | /simple-swizzle@0.2.2:
1242 | resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
1243 | dependencies:
1244 | is-arrayish: 0.3.2
1245 | dev: false
1246 |
1247 | /source-map-js@1.0.2:
1248 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
1249 | engines: {node: '>=0.10.0'}
1250 | dev: true
1251 |
1252 | /string_decoder@1.3.0:
1253 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
1254 | dependencies:
1255 | safe-buffer: 5.2.1
1256 | dev: false
1257 |
1258 | /supports-color@5.5.0:
1259 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
1260 | engines: {node: '>=4'}
1261 | dependencies:
1262 | has-flag: 3.0.0
1263 | dev: true
1264 |
1265 | /svg-arc-to-cubic-bezier@3.2.0:
1266 | resolution: {integrity: sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==}
1267 | dev: false
1268 |
1269 | /tiny-inflate@1.0.3:
1270 | resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==}
1271 | dev: false
1272 |
1273 | /to-fast-properties@2.0.0:
1274 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
1275 | engines: {node: '>=4'}
1276 | dev: true
1277 |
1278 | /tr46@0.0.3:
1279 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
1280 | dev: false
1281 |
1282 | /tslib@2.6.2:
1283 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
1284 | dev: false
1285 |
1286 | /typescript@5.3.3:
1287 | resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
1288 | engines: {node: '>=14.17'}
1289 | hasBin: true
1290 | dev: true
1291 |
1292 | /unicode-properties@1.4.1:
1293 | resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==}
1294 | dependencies:
1295 | base64-js: 1.5.1
1296 | unicode-trie: 2.0.0
1297 | dev: false
1298 |
1299 | /unicode-trie@2.0.0:
1300 | resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==}
1301 | dependencies:
1302 | pako: 0.2.9
1303 | tiny-inflate: 1.0.3
1304 | dev: false
1305 |
1306 | /update-browserslist-db@1.0.13(browserslist@4.22.2):
1307 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
1308 | hasBin: true
1309 | peerDependencies:
1310 | browserslist: '>= 4.21.0'
1311 | dependencies:
1312 | browserslist: 4.22.2
1313 | escalade: 3.1.1
1314 | picocolors: 1.0.0
1315 | dev: true
1316 |
1317 | /util-deprecate@1.0.2:
1318 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1319 | dev: false
1320 |
1321 | /vite-compatible-readable-stream@3.6.1:
1322 | resolution: {integrity: sha512-t20zYkrSf868+j/p31cRIGN28Phrjm3nRSLR2fyc2tiWi4cZGVdv68yNlwnIINTkMTmPoMiSlc0OadaO7DXZaQ==}
1323 | engines: {node: '>= 6'}
1324 | dependencies:
1325 | inherits: 2.0.4
1326 | string_decoder: 1.3.0
1327 | util-deprecate: 1.0.2
1328 | dev: false
1329 |
1330 | /vite@5.0.10:
1331 | resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==}
1332 | engines: {node: ^18.0.0 || >=20.0.0}
1333 | hasBin: true
1334 | peerDependencies:
1335 | '@types/node': ^18.0.0 || >=20.0.0
1336 | less: '*'
1337 | lightningcss: ^1.21.0
1338 | sass: '*'
1339 | stylus: '*'
1340 | sugarss: '*'
1341 | terser: ^5.4.0
1342 | peerDependenciesMeta:
1343 | '@types/node':
1344 | optional: true
1345 | less:
1346 | optional: true
1347 | lightningcss:
1348 | optional: true
1349 | sass:
1350 | optional: true
1351 | stylus:
1352 | optional: true
1353 | sugarss:
1354 | optional: true
1355 | terser:
1356 | optional: true
1357 | dependencies:
1358 | esbuild: 0.19.9
1359 | postcss: 8.4.32
1360 | rollup: 4.9.1
1361 | optionalDependencies:
1362 | fsevents: 2.3.3
1363 | dev: true
1364 |
1365 | /webidl-conversions@3.0.1:
1366 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
1367 | dev: false
1368 |
1369 | /whatwg-url@5.0.0:
1370 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
1371 | dependencies:
1372 | tr46: 0.0.3
1373 | webidl-conversions: 3.0.1
1374 | dev: false
1375 |
1376 | /yallist@3.1.1:
1377 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
1378 | dev: true
1379 |
--------------------------------------------------------------------------------
/examples/vite/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/vite/src/App.tsx:
--------------------------------------------------------------------------------
1 | import { PDFViewer, Document, Page, Text, View } from "@react-pdf/renderer";
2 | import { createTw } from "../../../src";
3 |
4 | const tw = createTw({
5 | theme: {
6 | extend: {
7 | colors: {
8 | custom: "cornflowerblue",
9 | },
10 | },
11 | },
12 | });
13 |
14 | export default function App() {
15 | return (
16 |
17 |
18 |
19 |
20 | {[...Array(12)].map((_, i) => (
21 |
26 |
27 | Section {i + 1}
28 |
29 |
30 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla
31 | semper efficitur libero in laoreet. Sed iaculis, magna
32 | suscipit placerat commodo, risus turpis tincidunt ligula, ac
33 | euismod justo sem id risus. Nullam euismod vestibulum leo,
34 | mollis maximus sapien luctus in. Vivamus malesuada vulputate
35 | ornare. Mauris ut accumsan felis. Vivamus enim urna, ultrices
36 | eu eros ac, bibendum vehicula eros. Praesent ipsum orci,
37 | molestie gravida tristique at, dapibus vitae est. Phasellus
38 | lectus nulla, consequat eu mi ut, tempus pulvinar neque.
39 |
40 |
41 | ))}
42 |
43 |
44 |
45 |
46 | );
47 | }
48 |
--------------------------------------------------------------------------------
/examples/vite/src/index.css:
--------------------------------------------------------------------------------
1 | main {
2 | max-width: 1200px;
3 | margin: 1rem auto;
4 | }
5 |
--------------------------------------------------------------------------------
/examples/vite/src/main.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom/client";
3 | import App from "./App";
4 | import "./index.css";
5 |
6 | ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
7 |
8 |
9 |
10 | );
11 |
--------------------------------------------------------------------------------
/examples/vite/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/examples/vite/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "useDefineForClassFields": true,
5 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
6 | "allowJs": false,
7 | "skipLibCheck": true,
8 | "esModuleInterop": false,
9 | "allowSyntheticDefaultImports": true,
10 | "strict": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "module": "ESNext",
13 | "moduleResolution": "Node",
14 | "resolveJsonModule": true,
15 | "isolatedModules": true,
16 | "noEmit": true,
17 | "jsx": "react-jsx"
18 | },
19 | "include": ["src"],
20 | "references": [{ "path": "./tsconfig.node.json" }]
21 | }
22 |
--------------------------------------------------------------------------------
/examples/vite/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "module": "ESNext",
5 | "moduleResolution": "Node",
6 | "allowSyntheticDefaultImports": true
7 | },
8 | "include": ["vite.config.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/examples/vite/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [react()],
7 | })
8 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-pdf-tailwind",
3 | "version": "2.3.0",
4 | "description": "Use Tailwind CSS to style PDFs created with react-pdf",
5 | "keywords": [
6 | "tailwind",
7 | "react",
8 | "pdf"
9 | ],
10 | "author": "Andreas Anckar",
11 | "homepage": "https://github.com/aanckar/react-pdf-tailwind",
12 | "license": "MIT",
13 | "main": "dist/index.js",
14 | "module": "dist/index.mjs",
15 | "typings": "dist/index.d.ts",
16 | "scripts": {
17 | "build": "tsup src/index.ts --format cjs,esm --dts",
18 | "dev": "tsup src/index.ts --watch",
19 | "lint": "tsc",
20 | "test": "vitest",
21 | "test:run": "vitest --run"
22 | },
23 | "files": [
24 | "dist"
25 | ],
26 | "dependencies": {
27 | "@react-pdf/renderer": "^3.1.14",
28 | "tailwindcss": "^3.3.6"
29 | },
30 | "devDependencies": {
31 | "@react-pdf/types": "^2.3.4",
32 | "@types/node": "^20.10.4",
33 | "tsup": "^8.0.1",
34 | "typescript": "^5.3.3",
35 | "vitest": "^1.0.4"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | dependencies:
8 | '@react-pdf/renderer':
9 | specifier: ^3.1.14
10 | version: 3.1.14(react@18.2.0)
11 | tailwindcss:
12 | specifier: ^3.3.6
13 | version: 3.3.6
14 |
15 | devDependencies:
16 | '@react-pdf/types':
17 | specifier: ^2.3.4
18 | version: 2.3.4
19 | '@types/node':
20 | specifier: ^20.10.4
21 | version: 20.10.4
22 | tsup:
23 | specifier: ^8.0.1
24 | version: 8.0.1(postcss@8.4.32)(typescript@5.3.3)
25 | typescript:
26 | specifier: ^5.3.3
27 | version: 5.3.3
28 | vitest:
29 | specifier: ^1.0.4
30 | version: 1.0.4(@types/node@20.10.4)
31 |
32 | packages:
33 |
34 | /@alloc/quick-lru@5.2.0:
35 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
36 | engines: {node: '>=10'}
37 | dev: false
38 |
39 | /@babel/runtime@7.23.6:
40 | resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==}
41 | engines: {node: '>=6.9.0'}
42 | dependencies:
43 | regenerator-runtime: 0.14.1
44 | dev: false
45 |
46 | /@esbuild/android-arm64@0.19.9:
47 | resolution: {integrity: sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==}
48 | engines: {node: '>=12'}
49 | cpu: [arm64]
50 | os: [android]
51 | requiresBuild: true
52 | dev: true
53 | optional: true
54 |
55 | /@esbuild/android-arm@0.19.9:
56 | resolution: {integrity: sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==}
57 | engines: {node: '>=12'}
58 | cpu: [arm]
59 | os: [android]
60 | requiresBuild: true
61 | dev: true
62 | optional: true
63 |
64 | /@esbuild/android-x64@0.19.9:
65 | resolution: {integrity: sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==}
66 | engines: {node: '>=12'}
67 | cpu: [x64]
68 | os: [android]
69 | requiresBuild: true
70 | dev: true
71 | optional: true
72 |
73 | /@esbuild/darwin-arm64@0.19.9:
74 | resolution: {integrity: sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==}
75 | engines: {node: '>=12'}
76 | cpu: [arm64]
77 | os: [darwin]
78 | requiresBuild: true
79 | dev: true
80 | optional: true
81 |
82 | /@esbuild/darwin-x64@0.19.9:
83 | resolution: {integrity: sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==}
84 | engines: {node: '>=12'}
85 | cpu: [x64]
86 | os: [darwin]
87 | requiresBuild: true
88 | dev: true
89 | optional: true
90 |
91 | /@esbuild/freebsd-arm64@0.19.9:
92 | resolution: {integrity: sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==}
93 | engines: {node: '>=12'}
94 | cpu: [arm64]
95 | os: [freebsd]
96 | requiresBuild: true
97 | dev: true
98 | optional: true
99 |
100 | /@esbuild/freebsd-x64@0.19.9:
101 | resolution: {integrity: sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==}
102 | engines: {node: '>=12'}
103 | cpu: [x64]
104 | os: [freebsd]
105 | requiresBuild: true
106 | dev: true
107 | optional: true
108 |
109 | /@esbuild/linux-arm64@0.19.9:
110 | resolution: {integrity: sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==}
111 | engines: {node: '>=12'}
112 | cpu: [arm64]
113 | os: [linux]
114 | requiresBuild: true
115 | dev: true
116 | optional: true
117 |
118 | /@esbuild/linux-arm@0.19.9:
119 | resolution: {integrity: sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==}
120 | engines: {node: '>=12'}
121 | cpu: [arm]
122 | os: [linux]
123 | requiresBuild: true
124 | dev: true
125 | optional: true
126 |
127 | /@esbuild/linux-ia32@0.19.9:
128 | resolution: {integrity: sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==}
129 | engines: {node: '>=12'}
130 | cpu: [ia32]
131 | os: [linux]
132 | requiresBuild: true
133 | dev: true
134 | optional: true
135 |
136 | /@esbuild/linux-loong64@0.19.9:
137 | resolution: {integrity: sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==}
138 | engines: {node: '>=12'}
139 | cpu: [loong64]
140 | os: [linux]
141 | requiresBuild: true
142 | dev: true
143 | optional: true
144 |
145 | /@esbuild/linux-mips64el@0.19.9:
146 | resolution: {integrity: sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==}
147 | engines: {node: '>=12'}
148 | cpu: [mips64el]
149 | os: [linux]
150 | requiresBuild: true
151 | dev: true
152 | optional: true
153 |
154 | /@esbuild/linux-ppc64@0.19.9:
155 | resolution: {integrity: sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==}
156 | engines: {node: '>=12'}
157 | cpu: [ppc64]
158 | os: [linux]
159 | requiresBuild: true
160 | dev: true
161 | optional: true
162 |
163 | /@esbuild/linux-riscv64@0.19.9:
164 | resolution: {integrity: sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==}
165 | engines: {node: '>=12'}
166 | cpu: [riscv64]
167 | os: [linux]
168 | requiresBuild: true
169 | dev: true
170 | optional: true
171 |
172 | /@esbuild/linux-s390x@0.19.9:
173 | resolution: {integrity: sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==}
174 | engines: {node: '>=12'}
175 | cpu: [s390x]
176 | os: [linux]
177 | requiresBuild: true
178 | dev: true
179 | optional: true
180 |
181 | /@esbuild/linux-x64@0.19.9:
182 | resolution: {integrity: sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A==}
183 | engines: {node: '>=12'}
184 | cpu: [x64]
185 | os: [linux]
186 | requiresBuild: true
187 | dev: true
188 | optional: true
189 |
190 | /@esbuild/netbsd-x64@0.19.9:
191 | resolution: {integrity: sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==}
192 | engines: {node: '>=12'}
193 | cpu: [x64]
194 | os: [netbsd]
195 | requiresBuild: true
196 | dev: true
197 | optional: true
198 |
199 | /@esbuild/openbsd-x64@0.19.9:
200 | resolution: {integrity: sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==}
201 | engines: {node: '>=12'}
202 | cpu: [x64]
203 | os: [openbsd]
204 | requiresBuild: true
205 | dev: true
206 | optional: true
207 |
208 | /@esbuild/sunos-x64@0.19.9:
209 | resolution: {integrity: sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==}
210 | engines: {node: '>=12'}
211 | cpu: [x64]
212 | os: [sunos]
213 | requiresBuild: true
214 | dev: true
215 | optional: true
216 |
217 | /@esbuild/win32-arm64@0.19.9:
218 | resolution: {integrity: sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==}
219 | engines: {node: '>=12'}
220 | cpu: [arm64]
221 | os: [win32]
222 | requiresBuild: true
223 | dev: true
224 | optional: true
225 |
226 | /@esbuild/win32-ia32@0.19.9:
227 | resolution: {integrity: sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==}
228 | engines: {node: '>=12'}
229 | cpu: [ia32]
230 | os: [win32]
231 | requiresBuild: true
232 | dev: true
233 | optional: true
234 |
235 | /@esbuild/win32-x64@0.19.9:
236 | resolution: {integrity: sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==}
237 | engines: {node: '>=12'}
238 | cpu: [x64]
239 | os: [win32]
240 | requiresBuild: true
241 | dev: true
242 | optional: true
243 |
244 | /@jest/schemas@29.6.3:
245 | resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
246 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
247 | dependencies:
248 | '@sinclair/typebox': 0.27.8
249 | dev: true
250 |
251 | /@jridgewell/gen-mapping@0.3.3:
252 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
253 | engines: {node: '>=6.0.0'}
254 | dependencies:
255 | '@jridgewell/set-array': 1.1.2
256 | '@jridgewell/sourcemap-codec': 1.4.15
257 | '@jridgewell/trace-mapping': 0.3.20
258 |
259 | /@jridgewell/resolve-uri@3.1.1:
260 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
261 | engines: {node: '>=6.0.0'}
262 |
263 | /@jridgewell/set-array@1.1.2:
264 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
265 | engines: {node: '>=6.0.0'}
266 |
267 | /@jridgewell/sourcemap-codec@1.4.15:
268 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
269 |
270 | /@jridgewell/trace-mapping@0.3.20:
271 | resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
272 | dependencies:
273 | '@jridgewell/resolve-uri': 3.1.1
274 | '@jridgewell/sourcemap-codec': 1.4.15
275 |
276 | /@nodelib/fs.scandir@2.1.5:
277 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
278 | engines: {node: '>= 8'}
279 | dependencies:
280 | '@nodelib/fs.stat': 2.0.5
281 | run-parallel: 1.2.0
282 |
283 | /@nodelib/fs.stat@2.0.5:
284 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
285 | engines: {node: '>= 8'}
286 |
287 | /@nodelib/fs.walk@1.2.8:
288 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
289 | engines: {node: '>= 8'}
290 | dependencies:
291 | '@nodelib/fs.scandir': 2.1.5
292 | fastq: 1.15.0
293 |
294 | /@react-pdf/fns@2.0.1:
295 | resolution: {integrity: sha512-/vgecczzFYBQFkgUupH+sxXhLWQtBwdwCgweyh25XOlR4NZuaMD/UVUDl4loFHhRQqDMQq37lkTcchh7zzW6ug==}
296 | dependencies:
297 | '@babel/runtime': 7.23.6
298 | dev: false
299 |
300 | /@react-pdf/font@2.3.7:
301 | resolution: {integrity: sha512-NoCieWea6c1mCpDBoyjPbUEC1qXa+S/M7+8vYPZ71aTMgX7co3gQc2e6YKwrSQeQP+BsBq3LSVhjI2ETXfcytw==}
302 | dependencies:
303 | '@babel/runtime': 7.23.6
304 | '@react-pdf/types': 2.3.4
305 | cross-fetch: 3.1.8
306 | fontkit: 2.0.2
307 | is-url: 1.2.4
308 | transitivePeerDependencies:
309 | - encoding
310 | dev: false
311 |
312 | /@react-pdf/image@2.2.2:
313 | resolution: {integrity: sha512-990JvRZuhsnHyAGd7gvmhfr+4/5PAHLH9IgDstaEDLEq2eFAIQFuNM7k3D6kjKgV1mM7Jqif3CWqrcHBF3jrJw==}
314 | dependencies:
315 | '@babel/runtime': 7.23.6
316 | '@react-pdf/png-js': 2.2.0
317 | cross-fetch: 3.1.8
318 | transitivePeerDependencies:
319 | - encoding
320 | dev: false
321 |
322 | /@react-pdf/layout@3.6.3:
323 | resolution: {integrity: sha512-w6ACZ9o18Q5wbzsY9a4KW2Gqn6Drt3AN/kb/I6SBz/L7PAJ9rPQBIDq/s5qZJ+/WwWy33rcC8WC1givtDhjCHQ==}
324 | dependencies:
325 | '@babel/runtime': 7.23.6
326 | '@react-pdf/fns': 2.0.1
327 | '@react-pdf/image': 2.2.2
328 | '@react-pdf/pdfkit': 3.0.2
329 | '@react-pdf/primitives': 3.0.1
330 | '@react-pdf/stylesheet': 4.1.8
331 | '@react-pdf/textkit': 4.2.0
332 | '@react-pdf/types': 2.3.4
333 | '@react-pdf/yoga': 4.1.2
334 | cross-fetch: 3.1.8
335 | emoji-regex: 10.3.0
336 | queue: 6.0.2
337 | transitivePeerDependencies:
338 | - encoding
339 | dev: false
340 |
341 | /@react-pdf/pdfkit@3.0.2:
342 | resolution: {integrity: sha512-+m5rwNCwyEH6lmnZWpsQJvdqb6YaCCR0nMWrc/KKDwznuPMrGmGWyNxqCja+bQPORcHZyl6Cd/iFL0glyB3QGw==}
343 | dependencies:
344 | '@babel/runtime': 7.23.6
345 | '@react-pdf/png-js': 2.2.0
346 | browserify-zlib: 0.2.0
347 | crypto-js: 4.2.0
348 | fontkit: 2.0.2
349 | vite-compatible-readable-stream: 3.6.1
350 | dev: false
351 |
352 | /@react-pdf/png-js@2.2.0:
353 | resolution: {integrity: sha512-csZU5lfNW73tq7s7zB/1rWXGro+Z9cQhxtsXwxS418TSszHUiM6PwddouiKJxdGhbVLjRIcuuFVa0aR5cDOC6w==}
354 | dependencies:
355 | browserify-zlib: 0.2.0
356 | dev: false
357 |
358 | /@react-pdf/primitives@3.0.1:
359 | resolution: {integrity: sha512-0HGcknrLNwyhxe+SZCBL29JY4M85mXKdvTZE9uhjNbADGgTc8wVnkc5+e4S/lDvugbVISXyuIhZnYwtK9eDnyQ==}
360 | dev: false
361 |
362 | /@react-pdf/render@3.2.7:
363 | resolution: {integrity: sha512-fAgbbAAkVL0hpcf1vUJLHxuPjPBqZuq8nors7fCwvoatBBwOWP9fza7IDPeFKN7+ZOnfmIZzes8Kc/DNHzJohw==}
364 | dependencies:
365 | '@babel/runtime': 7.23.6
366 | '@react-pdf/fns': 2.0.1
367 | '@react-pdf/primitives': 3.0.1
368 | '@react-pdf/textkit': 4.2.0
369 | '@react-pdf/types': 2.3.4
370 | abs-svg-path: 0.1.1
371 | color-string: 1.9.1
372 | normalize-svg-path: 1.1.0
373 | parse-svg-path: 0.1.2
374 | svg-arc-to-cubic-bezier: 3.2.0
375 | dev: false
376 |
377 | /@react-pdf/renderer@3.1.14(react@18.2.0):
378 | resolution: {integrity: sha512-Qk29uTamH6q+drK/YmiFbuQQ+yutesfIe+wyrsXFoUJUutIiDIaibO6zByMkhWb3M6CMt6NvG3NLHio1OF8U6Q==}
379 | peerDependencies:
380 | react: ^16.8.6 || ^17.0.0 || ^18.0.0
381 | dependencies:
382 | '@babel/runtime': 7.23.6
383 | '@react-pdf/font': 2.3.7
384 | '@react-pdf/layout': 3.6.3
385 | '@react-pdf/pdfkit': 3.0.2
386 | '@react-pdf/primitives': 3.0.1
387 | '@react-pdf/render': 3.2.7
388 | '@react-pdf/types': 2.3.4
389 | events: 3.3.0
390 | object-assign: 4.1.1
391 | prop-types: 15.8.1
392 | queue: 6.0.2
393 | react: 18.2.0
394 | scheduler: 0.17.0
395 | transitivePeerDependencies:
396 | - encoding
397 | dev: false
398 |
399 | /@react-pdf/stylesheet@4.1.8:
400 | resolution: {integrity: sha512-/EuB9RBsH3YYRj8mwzImaul619MvX3rsHNF4h8LnlwDOuBehPA3L/fHrikfPqtJvHqK2ty3GXnkw0HG5SQpMzw==}
401 | dependencies:
402 | '@babel/runtime': 7.23.6
403 | '@react-pdf/fns': 2.0.1
404 | '@react-pdf/types': 2.3.4
405 | color-string: 1.9.1
406 | hsl-to-hex: 1.0.0
407 | media-engine: 1.0.3
408 | postcss-value-parser: 4.2.0
409 | dev: false
410 |
411 | /@react-pdf/textkit@4.2.0:
412 | resolution: {integrity: sha512-R90pEOW6NdhUx4p99iROvKmwB06IRYdXMhh0QcmUeoPOLe64ZdMfs3LZliNUWgI5fCmq71J+nv868i/EakFPDg==}
413 | dependencies:
414 | '@babel/runtime': 7.23.6
415 | '@react-pdf/fns': 2.0.1
416 | hyphen: 1.9.1
417 | unicode-properties: 1.4.1
418 | dev: false
419 |
420 | /@react-pdf/types@2.3.4:
421 | resolution: {integrity: sha512-vGGz21BTE05EktBbotbd7fjC0Yi8A/lOSIpzd7L7aF1XY+vyIHlQVb35DWCipM1p/6XN4cr9etGAmm1e4Mtmjw==}
422 |
423 | /@react-pdf/yoga@4.1.2:
424 | resolution: {integrity: sha512-OlMZkFrJDj4GyKZ70thiObwwPVZ52B7mlPyfzwa+sgwsioqHXg9nMWOO+7SQFNUbbOGagMUu0bCuTv+iXYZuaQ==}
425 | dependencies:
426 | '@babel/runtime': 7.23.6
427 | dev: false
428 |
429 | /@rollup/rollup-android-arm-eabi@4.9.1:
430 | resolution: {integrity: sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==}
431 | cpu: [arm]
432 | os: [android]
433 | requiresBuild: true
434 | dev: true
435 | optional: true
436 |
437 | /@rollup/rollup-android-arm64@4.9.1:
438 | resolution: {integrity: sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==}
439 | cpu: [arm64]
440 | os: [android]
441 | requiresBuild: true
442 | dev: true
443 | optional: true
444 |
445 | /@rollup/rollup-darwin-arm64@4.9.1:
446 | resolution: {integrity: sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==}
447 | cpu: [arm64]
448 | os: [darwin]
449 | requiresBuild: true
450 | dev: true
451 | optional: true
452 |
453 | /@rollup/rollup-darwin-x64@4.9.1:
454 | resolution: {integrity: sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==}
455 | cpu: [x64]
456 | os: [darwin]
457 | requiresBuild: true
458 | dev: true
459 | optional: true
460 |
461 | /@rollup/rollup-linux-arm-gnueabihf@4.9.1:
462 | resolution: {integrity: sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==}
463 | cpu: [arm]
464 | os: [linux]
465 | requiresBuild: true
466 | dev: true
467 | optional: true
468 |
469 | /@rollup/rollup-linux-arm64-gnu@4.9.1:
470 | resolution: {integrity: sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==}
471 | cpu: [arm64]
472 | os: [linux]
473 | requiresBuild: true
474 | dev: true
475 | optional: true
476 |
477 | /@rollup/rollup-linux-arm64-musl@4.9.1:
478 | resolution: {integrity: sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==}
479 | cpu: [arm64]
480 | os: [linux]
481 | requiresBuild: true
482 | dev: true
483 | optional: true
484 |
485 | /@rollup/rollup-linux-riscv64-gnu@4.9.1:
486 | resolution: {integrity: sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==}
487 | cpu: [riscv64]
488 | os: [linux]
489 | requiresBuild: true
490 | dev: true
491 | optional: true
492 |
493 | /@rollup/rollup-linux-x64-gnu@4.9.1:
494 | resolution: {integrity: sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==}
495 | cpu: [x64]
496 | os: [linux]
497 | requiresBuild: true
498 | dev: true
499 | optional: true
500 |
501 | /@rollup/rollup-linux-x64-musl@4.9.1:
502 | resolution: {integrity: sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==}
503 | cpu: [x64]
504 | os: [linux]
505 | requiresBuild: true
506 | dev: true
507 | optional: true
508 |
509 | /@rollup/rollup-win32-arm64-msvc@4.9.1:
510 | resolution: {integrity: sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==}
511 | cpu: [arm64]
512 | os: [win32]
513 | requiresBuild: true
514 | dev: true
515 | optional: true
516 |
517 | /@rollup/rollup-win32-ia32-msvc@4.9.1:
518 | resolution: {integrity: sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==}
519 | cpu: [ia32]
520 | os: [win32]
521 | requiresBuild: true
522 | dev: true
523 | optional: true
524 |
525 | /@rollup/rollup-win32-x64-msvc@4.9.1:
526 | resolution: {integrity: sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==}
527 | cpu: [x64]
528 | os: [win32]
529 | requiresBuild: true
530 | dev: true
531 | optional: true
532 |
533 | /@sinclair/typebox@0.27.8:
534 | resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
535 | dev: true
536 |
537 | /@swc/helpers@0.4.14:
538 | resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==}
539 | dependencies:
540 | tslib: 2.6.2
541 | dev: false
542 |
543 | /@swc/helpers@0.4.36:
544 | resolution: {integrity: sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==}
545 | dependencies:
546 | legacy-swc-helpers: /@swc/helpers@0.4.14
547 | tslib: 2.6.2
548 | dev: false
549 |
550 | /@types/node@20.10.4:
551 | resolution: {integrity: sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==}
552 | dependencies:
553 | undici-types: 5.26.5
554 | dev: true
555 |
556 | /@vitest/expect@1.0.4:
557 | resolution: {integrity: sha512-/NRN9N88qjg3dkhmFcCBwhn/Ie4h064pY3iv7WLRsDJW7dXnEgeoa8W9zy7gIPluhz6CkgqiB3HmpIXgmEY5dQ==}
558 | dependencies:
559 | '@vitest/spy': 1.0.4
560 | '@vitest/utils': 1.0.4
561 | chai: 4.3.10
562 | dev: true
563 |
564 | /@vitest/runner@1.0.4:
565 | resolution: {integrity: sha512-rhOQ9FZTEkV41JWXozFM8YgOqaG9zA7QXbhg5gy6mFOVqh4PcupirIJ+wN7QjeJt8S8nJRYuZH1OjJjsbxAXTQ==}
566 | dependencies:
567 | '@vitest/utils': 1.0.4
568 | p-limit: 5.0.0
569 | pathe: 1.1.1
570 | dev: true
571 |
572 | /@vitest/snapshot@1.0.4:
573 | resolution: {integrity: sha512-vkfXUrNyNRA/Gzsp2lpyJxh94vU2OHT1amoD6WuvUAA12n32xeVZQ0KjjQIf8F6u7bcq2A2k969fMVxEsxeKYA==}
574 | dependencies:
575 | magic-string: 0.30.5
576 | pathe: 1.1.1
577 | pretty-format: 29.7.0
578 | dev: true
579 |
580 | /@vitest/spy@1.0.4:
581 | resolution: {integrity: sha512-9ojTFRL1AJVh0hvfzAQpm0QS6xIS+1HFIw94kl/1ucTfGCaj1LV/iuJU4Y6cdR03EzPDygxTHwE1JOm+5RCcvA==}
582 | dependencies:
583 | tinyspy: 2.2.0
584 | dev: true
585 |
586 | /@vitest/utils@1.0.4:
587 | resolution: {integrity: sha512-gsswWDXxtt0QvtK/y/LWukN7sGMYmnCcv1qv05CsY6cU/Y1zpGX1QuvLs+GO1inczpE6Owixeel3ShkjhYtGfA==}
588 | dependencies:
589 | diff-sequences: 29.6.3
590 | loupe: 2.3.7
591 | pretty-format: 29.7.0
592 | dev: true
593 |
594 | /abs-svg-path@0.1.1:
595 | resolution: {integrity: sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==}
596 | dev: false
597 |
598 | /acorn-walk@8.3.1:
599 | resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==}
600 | engines: {node: '>=0.4.0'}
601 | dev: true
602 |
603 | /acorn@8.11.2:
604 | resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
605 | engines: {node: '>=0.4.0'}
606 | hasBin: true
607 | dev: true
608 |
609 | /ansi-styles@5.2.0:
610 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
611 | engines: {node: '>=10'}
612 | dev: true
613 |
614 | /any-promise@1.3.0:
615 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
616 |
617 | /anymatch@3.1.3:
618 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
619 | engines: {node: '>= 8'}
620 | dependencies:
621 | normalize-path: 3.0.0
622 | picomatch: 2.3.1
623 |
624 | /arg@5.0.2:
625 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
626 | dev: false
627 |
628 | /array-union@2.1.0:
629 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
630 | engines: {node: '>=8'}
631 | dev: true
632 |
633 | /assertion-error@1.1.0:
634 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
635 | dev: true
636 |
637 | /balanced-match@1.0.2:
638 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
639 |
640 | /base64-js@1.5.1:
641 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
642 | dev: false
643 |
644 | /binary-extensions@2.2.0:
645 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
646 | engines: {node: '>=8'}
647 |
648 | /brace-expansion@1.1.11:
649 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
650 | dependencies:
651 | balanced-match: 1.0.2
652 | concat-map: 0.0.1
653 |
654 | /braces@3.0.2:
655 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
656 | engines: {node: '>=8'}
657 | dependencies:
658 | fill-range: 7.0.1
659 |
660 | /brotli@1.3.3:
661 | resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==}
662 | dependencies:
663 | base64-js: 1.5.1
664 | dev: false
665 |
666 | /browserify-zlib@0.2.0:
667 | resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==}
668 | dependencies:
669 | pako: 1.0.11
670 | dev: false
671 |
672 | /bundle-require@4.0.2(esbuild@0.19.9):
673 | resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==}
674 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
675 | peerDependencies:
676 | esbuild: '>=0.17'
677 | dependencies:
678 | esbuild: 0.19.9
679 | load-tsconfig: 0.2.5
680 | dev: true
681 |
682 | /cac@6.7.14:
683 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
684 | engines: {node: '>=8'}
685 | dev: true
686 |
687 | /camelcase-css@2.0.1:
688 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
689 | engines: {node: '>= 6'}
690 | dev: false
691 |
692 | /chai@4.3.10:
693 | resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==}
694 | engines: {node: '>=4'}
695 | dependencies:
696 | assertion-error: 1.1.0
697 | check-error: 1.0.3
698 | deep-eql: 4.1.3
699 | get-func-name: 2.0.2
700 | loupe: 2.3.7
701 | pathval: 1.1.1
702 | type-detect: 4.0.8
703 | dev: true
704 |
705 | /check-error@1.0.3:
706 | resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
707 | dependencies:
708 | get-func-name: 2.0.2
709 | dev: true
710 |
711 | /chokidar@3.5.3:
712 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
713 | engines: {node: '>= 8.10.0'}
714 | dependencies:
715 | anymatch: 3.1.3
716 | braces: 3.0.2
717 | glob-parent: 5.1.2
718 | is-binary-path: 2.1.0
719 | is-glob: 4.0.3
720 | normalize-path: 3.0.0
721 | readdirp: 3.6.0
722 | optionalDependencies:
723 | fsevents: 2.3.3
724 |
725 | /clone@2.1.2:
726 | resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
727 | engines: {node: '>=0.8'}
728 | dev: false
729 |
730 | /color-name@1.1.4:
731 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
732 | dev: false
733 |
734 | /color-string@1.9.1:
735 | resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
736 | dependencies:
737 | color-name: 1.1.4
738 | simple-swizzle: 0.2.2
739 | dev: false
740 |
741 | /commander@4.1.1:
742 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
743 | engines: {node: '>= 6'}
744 |
745 | /concat-map@0.0.1:
746 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
747 |
748 | /cross-fetch@3.1.8:
749 | resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==}
750 | dependencies:
751 | node-fetch: 2.7.0
752 | transitivePeerDependencies:
753 | - encoding
754 | dev: false
755 |
756 | /cross-spawn@7.0.3:
757 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
758 | engines: {node: '>= 8'}
759 | dependencies:
760 | path-key: 3.1.1
761 | shebang-command: 2.0.0
762 | which: 2.0.2
763 | dev: true
764 |
765 | /crypto-js@4.2.0:
766 | resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
767 | dev: false
768 |
769 | /cssesc@3.0.0:
770 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
771 | engines: {node: '>=4'}
772 | hasBin: true
773 | dev: false
774 |
775 | /debug@4.3.4:
776 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
777 | engines: {node: '>=6.0'}
778 | peerDependencies:
779 | supports-color: '*'
780 | peerDependenciesMeta:
781 | supports-color:
782 | optional: true
783 | dependencies:
784 | ms: 2.1.2
785 | dev: true
786 |
787 | /deep-eql@4.1.3:
788 | resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==}
789 | engines: {node: '>=6'}
790 | dependencies:
791 | type-detect: 4.0.8
792 | dev: true
793 |
794 | /dfa@1.2.0:
795 | resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==}
796 | dev: false
797 |
798 | /didyoumean@1.2.2:
799 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
800 | dev: false
801 |
802 | /diff-sequences@29.6.3:
803 | resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
804 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
805 | dev: true
806 |
807 | /dir-glob@3.0.1:
808 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
809 | engines: {node: '>=8'}
810 | dependencies:
811 | path-type: 4.0.0
812 | dev: true
813 |
814 | /dlv@1.1.3:
815 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
816 | dev: false
817 |
818 | /emoji-regex@10.3.0:
819 | resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
820 | dev: false
821 |
822 | /esbuild@0.19.9:
823 | resolution: {integrity: sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==}
824 | engines: {node: '>=12'}
825 | hasBin: true
826 | requiresBuild: true
827 | optionalDependencies:
828 | '@esbuild/android-arm': 0.19.9
829 | '@esbuild/android-arm64': 0.19.9
830 | '@esbuild/android-x64': 0.19.9
831 | '@esbuild/darwin-arm64': 0.19.9
832 | '@esbuild/darwin-x64': 0.19.9
833 | '@esbuild/freebsd-arm64': 0.19.9
834 | '@esbuild/freebsd-x64': 0.19.9
835 | '@esbuild/linux-arm': 0.19.9
836 | '@esbuild/linux-arm64': 0.19.9
837 | '@esbuild/linux-ia32': 0.19.9
838 | '@esbuild/linux-loong64': 0.19.9
839 | '@esbuild/linux-mips64el': 0.19.9
840 | '@esbuild/linux-ppc64': 0.19.9
841 | '@esbuild/linux-riscv64': 0.19.9
842 | '@esbuild/linux-s390x': 0.19.9
843 | '@esbuild/linux-x64': 0.19.9
844 | '@esbuild/netbsd-x64': 0.19.9
845 | '@esbuild/openbsd-x64': 0.19.9
846 | '@esbuild/sunos-x64': 0.19.9
847 | '@esbuild/win32-arm64': 0.19.9
848 | '@esbuild/win32-ia32': 0.19.9
849 | '@esbuild/win32-x64': 0.19.9
850 | dev: true
851 |
852 | /events@3.3.0:
853 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
854 | engines: {node: '>=0.8.x'}
855 | dev: false
856 |
857 | /execa@5.1.1:
858 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
859 | engines: {node: '>=10'}
860 | dependencies:
861 | cross-spawn: 7.0.3
862 | get-stream: 6.0.1
863 | human-signals: 2.1.0
864 | is-stream: 2.0.1
865 | merge-stream: 2.0.0
866 | npm-run-path: 4.0.1
867 | onetime: 5.1.2
868 | signal-exit: 3.0.7
869 | strip-final-newline: 2.0.0
870 | dev: true
871 |
872 | /execa@8.0.1:
873 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
874 | engines: {node: '>=16.17'}
875 | dependencies:
876 | cross-spawn: 7.0.3
877 | get-stream: 8.0.1
878 | human-signals: 5.0.0
879 | is-stream: 3.0.0
880 | merge-stream: 2.0.0
881 | npm-run-path: 5.1.0
882 | onetime: 6.0.0
883 | signal-exit: 4.1.0
884 | strip-final-newline: 3.0.0
885 | dev: true
886 |
887 | /fast-deep-equal@3.1.3:
888 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
889 | dev: false
890 |
891 | /fast-glob@3.3.2:
892 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
893 | engines: {node: '>=8.6.0'}
894 | dependencies:
895 | '@nodelib/fs.stat': 2.0.5
896 | '@nodelib/fs.walk': 1.2.8
897 | glob-parent: 5.1.2
898 | merge2: 1.4.1
899 | micromatch: 4.0.5
900 |
901 | /fastq@1.15.0:
902 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
903 | dependencies:
904 | reusify: 1.0.4
905 |
906 | /fill-range@7.0.1:
907 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
908 | engines: {node: '>=8'}
909 | dependencies:
910 | to-regex-range: 5.0.1
911 |
912 | /fontkit@2.0.2:
913 | resolution: {integrity: sha512-jc4k5Yr8iov8QfS6u8w2CnHWVmbOGtdBtOXMze5Y+QD966Rx6PEVWXSEGwXlsDlKtu1G12cJjcsybnqhSk/+LA==}
914 | dependencies:
915 | '@swc/helpers': 0.4.36
916 | brotli: 1.3.3
917 | clone: 2.1.2
918 | dfa: 1.2.0
919 | fast-deep-equal: 3.1.3
920 | restructure: 3.0.0
921 | tiny-inflate: 1.0.3
922 | unicode-properties: 1.4.1
923 | unicode-trie: 2.0.0
924 | dev: false
925 |
926 | /fs.realpath@1.0.0:
927 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
928 |
929 | /fsevents@2.3.3:
930 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
931 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
932 | os: [darwin]
933 | requiresBuild: true
934 | optional: true
935 |
936 | /function-bind@1.1.2:
937 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
938 | dev: false
939 |
940 | /get-func-name@2.0.2:
941 | resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
942 | dev: true
943 |
944 | /get-stream@6.0.1:
945 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
946 | engines: {node: '>=10'}
947 | dev: true
948 |
949 | /get-stream@8.0.1:
950 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
951 | engines: {node: '>=16'}
952 | dev: true
953 |
954 | /glob-parent@5.1.2:
955 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
956 | engines: {node: '>= 6'}
957 | dependencies:
958 | is-glob: 4.0.3
959 |
960 | /glob-parent@6.0.2:
961 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
962 | engines: {node: '>=10.13.0'}
963 | dependencies:
964 | is-glob: 4.0.3
965 | dev: false
966 |
967 | /glob@7.1.6:
968 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
969 | dependencies:
970 | fs.realpath: 1.0.0
971 | inflight: 1.0.6
972 | inherits: 2.0.4
973 | minimatch: 3.1.2
974 | once: 1.4.0
975 | path-is-absolute: 1.0.1
976 |
977 | /globby@11.1.0:
978 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
979 | engines: {node: '>=10'}
980 | dependencies:
981 | array-union: 2.1.0
982 | dir-glob: 3.0.1
983 | fast-glob: 3.3.2
984 | ignore: 5.3.0
985 | merge2: 1.4.1
986 | slash: 3.0.0
987 | dev: true
988 |
989 | /hasown@2.0.0:
990 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
991 | engines: {node: '>= 0.4'}
992 | dependencies:
993 | function-bind: 1.1.2
994 | dev: false
995 |
996 | /hsl-to-hex@1.0.0:
997 | resolution: {integrity: sha512-K6GVpucS5wFf44X0h2bLVRDsycgJmf9FF2elg+CrqD8GcFU8c6vYhgXn8NjUkFCwj+xDFb70qgLbTUm6sxwPmA==}
998 | dependencies:
999 | hsl-to-rgb-for-reals: 1.1.1
1000 | dev: false
1001 |
1002 | /hsl-to-rgb-for-reals@1.1.1:
1003 | resolution: {integrity: sha512-LgOWAkrN0rFaQpfdWBQlv/VhkOxb5AsBjk6NQVx4yEzWS923T07X0M1Y0VNko2H52HeSpZrZNNMJ0aFqsdVzQg==}
1004 | dev: false
1005 |
1006 | /human-signals@2.1.0:
1007 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
1008 | engines: {node: '>=10.17.0'}
1009 | dev: true
1010 |
1011 | /human-signals@5.0.0:
1012 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
1013 | engines: {node: '>=16.17.0'}
1014 | dev: true
1015 |
1016 | /hyphen@1.9.1:
1017 | resolution: {integrity: sha512-fIPVvM6BUW+878xne+wwIcBjMxeKpoADmxNTjKMocUQWiGOvwyEfZEG95IeL/t4Su6nbfbXeYDUnz62pxzLPmw==}
1018 | dev: false
1019 |
1020 | /ignore@5.3.0:
1021 | resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==}
1022 | engines: {node: '>= 4'}
1023 | dev: true
1024 |
1025 | /inflight@1.0.6:
1026 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1027 | dependencies:
1028 | once: 1.4.0
1029 | wrappy: 1.0.2
1030 |
1031 | /inherits@2.0.4:
1032 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1033 |
1034 | /is-arrayish@0.3.2:
1035 | resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
1036 | dev: false
1037 |
1038 | /is-binary-path@2.1.0:
1039 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1040 | engines: {node: '>=8'}
1041 | dependencies:
1042 | binary-extensions: 2.2.0
1043 |
1044 | /is-core-module@2.13.1:
1045 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
1046 | dependencies:
1047 | hasown: 2.0.0
1048 | dev: false
1049 |
1050 | /is-extglob@2.1.1:
1051 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1052 | engines: {node: '>=0.10.0'}
1053 |
1054 | /is-glob@4.0.3:
1055 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1056 | engines: {node: '>=0.10.0'}
1057 | dependencies:
1058 | is-extglob: 2.1.1
1059 |
1060 | /is-number@7.0.0:
1061 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1062 | engines: {node: '>=0.12.0'}
1063 |
1064 | /is-stream@2.0.1:
1065 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
1066 | engines: {node: '>=8'}
1067 | dev: true
1068 |
1069 | /is-stream@3.0.0:
1070 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
1071 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1072 | dev: true
1073 |
1074 | /is-url@1.2.4:
1075 | resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==}
1076 | dev: false
1077 |
1078 | /isexe@2.0.0:
1079 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1080 | dev: true
1081 |
1082 | /jiti@1.21.0:
1083 | resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
1084 | hasBin: true
1085 | dev: false
1086 |
1087 | /joycon@3.1.1:
1088 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
1089 | engines: {node: '>=10'}
1090 | dev: true
1091 |
1092 | /js-tokens@4.0.0:
1093 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1094 | dev: false
1095 |
1096 | /jsonc-parser@3.2.0:
1097 | resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
1098 | dev: true
1099 |
1100 | /lilconfig@2.1.0:
1101 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
1102 | engines: {node: '>=10'}
1103 | dev: false
1104 |
1105 | /lilconfig@3.0.0:
1106 | resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==}
1107 | engines: {node: '>=14'}
1108 |
1109 | /lines-and-columns@1.2.4:
1110 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1111 |
1112 | /load-tsconfig@0.2.5:
1113 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
1114 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1115 | dev: true
1116 |
1117 | /local-pkg@0.5.0:
1118 | resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
1119 | engines: {node: '>=14'}
1120 | dependencies:
1121 | mlly: 1.4.2
1122 | pkg-types: 1.0.3
1123 | dev: true
1124 |
1125 | /lodash.sortby@4.7.0:
1126 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
1127 | dev: true
1128 |
1129 | /loose-envify@1.4.0:
1130 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
1131 | hasBin: true
1132 | dependencies:
1133 | js-tokens: 4.0.0
1134 | dev: false
1135 |
1136 | /loupe@2.3.7:
1137 | resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
1138 | dependencies:
1139 | get-func-name: 2.0.2
1140 | dev: true
1141 |
1142 | /magic-string@0.30.5:
1143 | resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==}
1144 | engines: {node: '>=12'}
1145 | dependencies:
1146 | '@jridgewell/sourcemap-codec': 1.4.15
1147 | dev: true
1148 |
1149 | /media-engine@1.0.3:
1150 | resolution: {integrity: sha512-aa5tG6sDoK+k70B9iEX1NeyfT8ObCKhNDs6lJVpwF6r8vhUfuKMslIcirq6HIUYuuUYLefcEQOn9bSBOvawtwg==}
1151 | dev: false
1152 |
1153 | /merge-stream@2.0.0:
1154 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
1155 | dev: true
1156 |
1157 | /merge2@1.4.1:
1158 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1159 | engines: {node: '>= 8'}
1160 |
1161 | /micromatch@4.0.5:
1162 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1163 | engines: {node: '>=8.6'}
1164 | dependencies:
1165 | braces: 3.0.2
1166 | picomatch: 2.3.1
1167 |
1168 | /mimic-fn@2.1.0:
1169 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
1170 | engines: {node: '>=6'}
1171 | dev: true
1172 |
1173 | /mimic-fn@4.0.0:
1174 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
1175 | engines: {node: '>=12'}
1176 | dev: true
1177 |
1178 | /minimatch@3.1.2:
1179 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1180 | dependencies:
1181 | brace-expansion: 1.1.11
1182 |
1183 | /mlly@1.4.2:
1184 | resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==}
1185 | dependencies:
1186 | acorn: 8.11.2
1187 | pathe: 1.1.1
1188 | pkg-types: 1.0.3
1189 | ufo: 1.3.2
1190 | dev: true
1191 |
1192 | /ms@2.1.2:
1193 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1194 | dev: true
1195 |
1196 | /mz@2.7.0:
1197 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
1198 | dependencies:
1199 | any-promise: 1.3.0
1200 | object-assign: 4.1.1
1201 | thenify-all: 1.6.0
1202 |
1203 | /nanoid@3.3.7:
1204 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
1205 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1206 | hasBin: true
1207 |
1208 | /node-fetch@2.7.0:
1209 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
1210 | engines: {node: 4.x || >=6.0.0}
1211 | peerDependencies:
1212 | encoding: ^0.1.0
1213 | peerDependenciesMeta:
1214 | encoding:
1215 | optional: true
1216 | dependencies:
1217 | whatwg-url: 5.0.0
1218 | dev: false
1219 |
1220 | /normalize-path@3.0.0:
1221 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1222 | engines: {node: '>=0.10.0'}
1223 |
1224 | /normalize-svg-path@1.1.0:
1225 | resolution: {integrity: sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==}
1226 | dependencies:
1227 | svg-arc-to-cubic-bezier: 3.2.0
1228 | dev: false
1229 |
1230 | /npm-run-path@4.0.1:
1231 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
1232 | engines: {node: '>=8'}
1233 | dependencies:
1234 | path-key: 3.1.1
1235 | dev: true
1236 |
1237 | /npm-run-path@5.1.0:
1238 | resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
1239 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1240 | dependencies:
1241 | path-key: 4.0.0
1242 | dev: true
1243 |
1244 | /object-assign@4.1.1:
1245 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1246 | engines: {node: '>=0.10.0'}
1247 |
1248 | /object-hash@3.0.0:
1249 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
1250 | engines: {node: '>= 6'}
1251 | dev: false
1252 |
1253 | /once@1.4.0:
1254 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1255 | dependencies:
1256 | wrappy: 1.0.2
1257 |
1258 | /onetime@5.1.2:
1259 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
1260 | engines: {node: '>=6'}
1261 | dependencies:
1262 | mimic-fn: 2.1.0
1263 | dev: true
1264 |
1265 | /onetime@6.0.0:
1266 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
1267 | engines: {node: '>=12'}
1268 | dependencies:
1269 | mimic-fn: 4.0.0
1270 | dev: true
1271 |
1272 | /p-limit@5.0.0:
1273 | resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==}
1274 | engines: {node: '>=18'}
1275 | dependencies:
1276 | yocto-queue: 1.0.0
1277 | dev: true
1278 |
1279 | /pako@0.2.9:
1280 | resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
1281 | dev: false
1282 |
1283 | /pako@1.0.11:
1284 | resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
1285 | dev: false
1286 |
1287 | /parse-svg-path@0.1.2:
1288 | resolution: {integrity: sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==}
1289 | dev: false
1290 |
1291 | /path-is-absolute@1.0.1:
1292 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1293 | engines: {node: '>=0.10.0'}
1294 |
1295 | /path-key@3.1.1:
1296 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1297 | engines: {node: '>=8'}
1298 | dev: true
1299 |
1300 | /path-key@4.0.0:
1301 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
1302 | engines: {node: '>=12'}
1303 | dev: true
1304 |
1305 | /path-parse@1.0.7:
1306 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1307 | dev: false
1308 |
1309 | /path-type@4.0.0:
1310 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1311 | engines: {node: '>=8'}
1312 | dev: true
1313 |
1314 | /pathe@1.1.1:
1315 | resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==}
1316 | dev: true
1317 |
1318 | /pathval@1.1.1:
1319 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
1320 | dev: true
1321 |
1322 | /picocolors@1.0.0:
1323 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
1324 |
1325 | /picomatch@2.3.1:
1326 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1327 | engines: {node: '>=8.6'}
1328 |
1329 | /pify@2.3.0:
1330 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
1331 | engines: {node: '>=0.10.0'}
1332 | dev: false
1333 |
1334 | /pirates@4.0.6:
1335 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
1336 | engines: {node: '>= 6'}
1337 |
1338 | /pkg-types@1.0.3:
1339 | resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==}
1340 | dependencies:
1341 | jsonc-parser: 3.2.0
1342 | mlly: 1.4.2
1343 | pathe: 1.1.1
1344 | dev: true
1345 |
1346 | /postcss-import@15.1.0(postcss@8.4.32):
1347 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
1348 | engines: {node: '>=14.0.0'}
1349 | peerDependencies:
1350 | postcss: ^8.0.0
1351 | dependencies:
1352 | postcss: 8.4.32
1353 | postcss-value-parser: 4.2.0
1354 | read-cache: 1.0.0
1355 | resolve: 1.22.8
1356 | dev: false
1357 |
1358 | /postcss-js@4.0.1(postcss@8.4.32):
1359 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
1360 | engines: {node: ^12 || ^14 || >= 16}
1361 | peerDependencies:
1362 | postcss: ^8.4.21
1363 | dependencies:
1364 | camelcase-css: 2.0.1
1365 | postcss: 8.4.32
1366 | dev: false
1367 |
1368 | /postcss-load-config@4.0.2(postcss@8.4.32):
1369 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
1370 | engines: {node: '>= 14'}
1371 | peerDependencies:
1372 | postcss: '>=8.0.9'
1373 | ts-node: '>=9.0.0'
1374 | peerDependenciesMeta:
1375 | postcss:
1376 | optional: true
1377 | ts-node:
1378 | optional: true
1379 | dependencies:
1380 | lilconfig: 3.0.0
1381 | postcss: 8.4.32
1382 | yaml: 2.3.4
1383 |
1384 | /postcss-nested@6.0.1(postcss@8.4.32):
1385 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
1386 | engines: {node: '>=12.0'}
1387 | peerDependencies:
1388 | postcss: ^8.2.14
1389 | dependencies:
1390 | postcss: 8.4.32
1391 | postcss-selector-parser: 6.0.13
1392 | dev: false
1393 |
1394 | /postcss-selector-parser@6.0.13:
1395 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
1396 | engines: {node: '>=4'}
1397 | dependencies:
1398 | cssesc: 3.0.0
1399 | util-deprecate: 1.0.2
1400 | dev: false
1401 |
1402 | /postcss-value-parser@4.2.0:
1403 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
1404 | dev: false
1405 |
1406 | /postcss@8.4.32:
1407 | resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==}
1408 | engines: {node: ^10 || ^12 || >=14}
1409 | dependencies:
1410 | nanoid: 3.3.7
1411 | picocolors: 1.0.0
1412 | source-map-js: 1.0.2
1413 |
1414 | /pretty-format@29.7.0:
1415 | resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
1416 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1417 | dependencies:
1418 | '@jest/schemas': 29.6.3
1419 | ansi-styles: 5.2.0
1420 | react-is: 18.2.0
1421 | dev: true
1422 |
1423 | /prop-types@15.8.1:
1424 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
1425 | dependencies:
1426 | loose-envify: 1.4.0
1427 | object-assign: 4.1.1
1428 | react-is: 16.13.1
1429 | dev: false
1430 |
1431 | /punycode@2.3.1:
1432 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1433 | engines: {node: '>=6'}
1434 | dev: true
1435 |
1436 | /queue-microtask@1.2.3:
1437 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1438 |
1439 | /queue@6.0.2:
1440 | resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==}
1441 | dependencies:
1442 | inherits: 2.0.4
1443 | dev: false
1444 |
1445 | /react-is@16.13.1:
1446 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
1447 | dev: false
1448 |
1449 | /react-is@18.2.0:
1450 | resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
1451 | dev: true
1452 |
1453 | /react@18.2.0:
1454 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
1455 | engines: {node: '>=0.10.0'}
1456 | dependencies:
1457 | loose-envify: 1.4.0
1458 | dev: false
1459 |
1460 | /read-cache@1.0.0:
1461 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
1462 | dependencies:
1463 | pify: 2.3.0
1464 | dev: false
1465 |
1466 | /readdirp@3.6.0:
1467 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
1468 | engines: {node: '>=8.10.0'}
1469 | dependencies:
1470 | picomatch: 2.3.1
1471 |
1472 | /regenerator-runtime@0.14.1:
1473 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
1474 | dev: false
1475 |
1476 | /resolve-from@5.0.0:
1477 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
1478 | engines: {node: '>=8'}
1479 | dev: true
1480 |
1481 | /resolve@1.22.8:
1482 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
1483 | hasBin: true
1484 | dependencies:
1485 | is-core-module: 2.13.1
1486 | path-parse: 1.0.7
1487 | supports-preserve-symlinks-flag: 1.0.0
1488 | dev: false
1489 |
1490 | /restructure@3.0.0:
1491 | resolution: {integrity: sha512-Xj8/MEIhhfj9X2rmD9iJ4Gga9EFqVlpMj3vfLnV2r/Mh5jRMryNV+6lWh9GdJtDBcBSPIqzRdfBQ3wDtNFv/uw==}
1492 | dev: false
1493 |
1494 | /reusify@1.0.4:
1495 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1496 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1497 |
1498 | /rollup@4.9.1:
1499 | resolution: {integrity: sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==}
1500 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1501 | hasBin: true
1502 | optionalDependencies:
1503 | '@rollup/rollup-android-arm-eabi': 4.9.1
1504 | '@rollup/rollup-android-arm64': 4.9.1
1505 | '@rollup/rollup-darwin-arm64': 4.9.1
1506 | '@rollup/rollup-darwin-x64': 4.9.1
1507 | '@rollup/rollup-linux-arm-gnueabihf': 4.9.1
1508 | '@rollup/rollup-linux-arm64-gnu': 4.9.1
1509 | '@rollup/rollup-linux-arm64-musl': 4.9.1
1510 | '@rollup/rollup-linux-riscv64-gnu': 4.9.1
1511 | '@rollup/rollup-linux-x64-gnu': 4.9.1
1512 | '@rollup/rollup-linux-x64-musl': 4.9.1
1513 | '@rollup/rollup-win32-arm64-msvc': 4.9.1
1514 | '@rollup/rollup-win32-ia32-msvc': 4.9.1
1515 | '@rollup/rollup-win32-x64-msvc': 4.9.1
1516 | fsevents: 2.3.3
1517 | dev: true
1518 |
1519 | /run-parallel@1.2.0:
1520 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1521 | dependencies:
1522 | queue-microtask: 1.2.3
1523 |
1524 | /safe-buffer@5.2.1:
1525 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
1526 | dev: false
1527 |
1528 | /scheduler@0.17.0:
1529 | resolution: {integrity: sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA==}
1530 | dependencies:
1531 | loose-envify: 1.4.0
1532 | object-assign: 4.1.1
1533 | dev: false
1534 |
1535 | /shebang-command@2.0.0:
1536 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1537 | engines: {node: '>=8'}
1538 | dependencies:
1539 | shebang-regex: 3.0.0
1540 | dev: true
1541 |
1542 | /shebang-regex@3.0.0:
1543 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1544 | engines: {node: '>=8'}
1545 | dev: true
1546 |
1547 | /siginfo@2.0.0:
1548 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
1549 | dev: true
1550 |
1551 | /signal-exit@3.0.7:
1552 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
1553 | dev: true
1554 |
1555 | /signal-exit@4.1.0:
1556 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
1557 | engines: {node: '>=14'}
1558 | dev: true
1559 |
1560 | /simple-swizzle@0.2.2:
1561 | resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
1562 | dependencies:
1563 | is-arrayish: 0.3.2
1564 | dev: false
1565 |
1566 | /slash@3.0.0:
1567 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1568 | engines: {node: '>=8'}
1569 | dev: true
1570 |
1571 | /source-map-js@1.0.2:
1572 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
1573 | engines: {node: '>=0.10.0'}
1574 |
1575 | /source-map@0.8.0-beta.0:
1576 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
1577 | engines: {node: '>= 8'}
1578 | dependencies:
1579 | whatwg-url: 7.1.0
1580 | dev: true
1581 |
1582 | /stackback@0.0.2:
1583 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
1584 | dev: true
1585 |
1586 | /std-env@3.6.0:
1587 | resolution: {integrity: sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==}
1588 | dev: true
1589 |
1590 | /string_decoder@1.3.0:
1591 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
1592 | dependencies:
1593 | safe-buffer: 5.2.1
1594 | dev: false
1595 |
1596 | /strip-final-newline@2.0.0:
1597 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
1598 | engines: {node: '>=6'}
1599 | dev: true
1600 |
1601 | /strip-final-newline@3.0.0:
1602 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
1603 | engines: {node: '>=12'}
1604 | dev: true
1605 |
1606 | /strip-literal@1.3.0:
1607 | resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==}
1608 | dependencies:
1609 | acorn: 8.11.2
1610 | dev: true
1611 |
1612 | /sucrase@3.34.0:
1613 | resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==}
1614 | engines: {node: '>=8'}
1615 | hasBin: true
1616 | dependencies:
1617 | '@jridgewell/gen-mapping': 0.3.3
1618 | commander: 4.1.1
1619 | glob: 7.1.6
1620 | lines-and-columns: 1.2.4
1621 | mz: 2.7.0
1622 | pirates: 4.0.6
1623 | ts-interface-checker: 0.1.13
1624 |
1625 | /supports-preserve-symlinks-flag@1.0.0:
1626 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1627 | engines: {node: '>= 0.4'}
1628 | dev: false
1629 |
1630 | /svg-arc-to-cubic-bezier@3.2.0:
1631 | resolution: {integrity: sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==}
1632 | dev: false
1633 |
1634 | /tailwindcss@3.3.6:
1635 | resolution: {integrity: sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==}
1636 | engines: {node: '>=14.0.0'}
1637 | hasBin: true
1638 | dependencies:
1639 | '@alloc/quick-lru': 5.2.0
1640 | arg: 5.0.2
1641 | chokidar: 3.5.3
1642 | didyoumean: 1.2.2
1643 | dlv: 1.1.3
1644 | fast-glob: 3.3.2
1645 | glob-parent: 6.0.2
1646 | is-glob: 4.0.3
1647 | jiti: 1.21.0
1648 | lilconfig: 2.1.0
1649 | micromatch: 4.0.5
1650 | normalize-path: 3.0.0
1651 | object-hash: 3.0.0
1652 | picocolors: 1.0.0
1653 | postcss: 8.4.32
1654 | postcss-import: 15.1.0(postcss@8.4.32)
1655 | postcss-js: 4.0.1(postcss@8.4.32)
1656 | postcss-load-config: 4.0.2(postcss@8.4.32)
1657 | postcss-nested: 6.0.1(postcss@8.4.32)
1658 | postcss-selector-parser: 6.0.13
1659 | resolve: 1.22.8
1660 | sucrase: 3.34.0
1661 | transitivePeerDependencies:
1662 | - ts-node
1663 | dev: false
1664 |
1665 | /thenify-all@1.6.0:
1666 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
1667 | engines: {node: '>=0.8'}
1668 | dependencies:
1669 | thenify: 3.3.1
1670 |
1671 | /thenify@3.3.1:
1672 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
1673 | dependencies:
1674 | any-promise: 1.3.0
1675 |
1676 | /tiny-inflate@1.0.3:
1677 | resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==}
1678 | dev: false
1679 |
1680 | /tinybench@2.5.1:
1681 | resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==}
1682 | dev: true
1683 |
1684 | /tinypool@0.8.1:
1685 | resolution: {integrity: sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==}
1686 | engines: {node: '>=14.0.0'}
1687 | dev: true
1688 |
1689 | /tinyspy@2.2.0:
1690 | resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==}
1691 | engines: {node: '>=14.0.0'}
1692 | dev: true
1693 |
1694 | /to-regex-range@5.0.1:
1695 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1696 | engines: {node: '>=8.0'}
1697 | dependencies:
1698 | is-number: 7.0.0
1699 |
1700 | /tr46@0.0.3:
1701 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
1702 | dev: false
1703 |
1704 | /tr46@1.0.1:
1705 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
1706 | dependencies:
1707 | punycode: 2.3.1
1708 | dev: true
1709 |
1710 | /tree-kill@1.2.2:
1711 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
1712 | hasBin: true
1713 | dev: true
1714 |
1715 | /ts-interface-checker@0.1.13:
1716 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
1717 |
1718 | /tslib@2.6.2:
1719 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
1720 | dev: false
1721 |
1722 | /tsup@8.0.1(postcss@8.4.32)(typescript@5.3.3):
1723 | resolution: {integrity: sha512-hvW7gUSG96j53ZTSlT4j/KL0q1Q2l6TqGBFc6/mu/L46IoNWqLLUzLRLP1R8Q7xrJTmkDxxDoojV5uCVs1sVOg==}
1724 | engines: {node: '>=18'}
1725 | hasBin: true
1726 | peerDependencies:
1727 | '@microsoft/api-extractor': ^7.36.0
1728 | '@swc/core': ^1
1729 | postcss: ^8.4.12
1730 | typescript: '>=4.5.0'
1731 | peerDependenciesMeta:
1732 | '@microsoft/api-extractor':
1733 | optional: true
1734 | '@swc/core':
1735 | optional: true
1736 | postcss:
1737 | optional: true
1738 | typescript:
1739 | optional: true
1740 | dependencies:
1741 | bundle-require: 4.0.2(esbuild@0.19.9)
1742 | cac: 6.7.14
1743 | chokidar: 3.5.3
1744 | debug: 4.3.4
1745 | esbuild: 0.19.9
1746 | execa: 5.1.1
1747 | globby: 11.1.0
1748 | joycon: 3.1.1
1749 | postcss: 8.4.32
1750 | postcss-load-config: 4.0.2(postcss@8.4.32)
1751 | resolve-from: 5.0.0
1752 | rollup: 4.9.1
1753 | source-map: 0.8.0-beta.0
1754 | sucrase: 3.34.0
1755 | tree-kill: 1.2.2
1756 | typescript: 5.3.3
1757 | transitivePeerDependencies:
1758 | - supports-color
1759 | - ts-node
1760 | dev: true
1761 |
1762 | /type-detect@4.0.8:
1763 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
1764 | engines: {node: '>=4'}
1765 | dev: true
1766 |
1767 | /typescript@5.3.3:
1768 | resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
1769 | engines: {node: '>=14.17'}
1770 | hasBin: true
1771 | dev: true
1772 |
1773 | /ufo@1.3.2:
1774 | resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==}
1775 | dev: true
1776 |
1777 | /undici-types@5.26.5:
1778 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
1779 | dev: true
1780 |
1781 | /unicode-properties@1.4.1:
1782 | resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==}
1783 | dependencies:
1784 | base64-js: 1.5.1
1785 | unicode-trie: 2.0.0
1786 | dev: false
1787 |
1788 | /unicode-trie@2.0.0:
1789 | resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==}
1790 | dependencies:
1791 | pako: 0.2.9
1792 | tiny-inflate: 1.0.3
1793 | dev: false
1794 |
1795 | /util-deprecate@1.0.2:
1796 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1797 | dev: false
1798 |
1799 | /vite-compatible-readable-stream@3.6.1:
1800 | resolution: {integrity: sha512-t20zYkrSf868+j/p31cRIGN28Phrjm3nRSLR2fyc2tiWi4cZGVdv68yNlwnIINTkMTmPoMiSlc0OadaO7DXZaQ==}
1801 | engines: {node: '>= 6'}
1802 | dependencies:
1803 | inherits: 2.0.4
1804 | string_decoder: 1.3.0
1805 | util-deprecate: 1.0.2
1806 | dev: false
1807 |
1808 | /vite-node@1.0.4(@types/node@20.10.4):
1809 | resolution: {integrity: sha512-9xQQtHdsz5Qn8hqbV7UKqkm8YkJhzT/zr41Dmt5N7AlD8hJXw/Z7y0QiD5I8lnTthV9Rvcvi0QW7PI0Fq83ZPg==}
1810 | engines: {node: ^18.0.0 || >=20.0.0}
1811 | hasBin: true
1812 | dependencies:
1813 | cac: 6.7.14
1814 | debug: 4.3.4
1815 | pathe: 1.1.1
1816 | picocolors: 1.0.0
1817 | vite: 5.0.10(@types/node@20.10.4)
1818 | transitivePeerDependencies:
1819 | - '@types/node'
1820 | - less
1821 | - lightningcss
1822 | - sass
1823 | - stylus
1824 | - sugarss
1825 | - supports-color
1826 | - terser
1827 | dev: true
1828 |
1829 | /vite@5.0.10(@types/node@20.10.4):
1830 | resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==}
1831 | engines: {node: ^18.0.0 || >=20.0.0}
1832 | hasBin: true
1833 | peerDependencies:
1834 | '@types/node': ^18.0.0 || >=20.0.0
1835 | less: '*'
1836 | lightningcss: ^1.21.0
1837 | sass: '*'
1838 | stylus: '*'
1839 | sugarss: '*'
1840 | terser: ^5.4.0
1841 | peerDependenciesMeta:
1842 | '@types/node':
1843 | optional: true
1844 | less:
1845 | optional: true
1846 | lightningcss:
1847 | optional: true
1848 | sass:
1849 | optional: true
1850 | stylus:
1851 | optional: true
1852 | sugarss:
1853 | optional: true
1854 | terser:
1855 | optional: true
1856 | dependencies:
1857 | '@types/node': 20.10.4
1858 | esbuild: 0.19.9
1859 | postcss: 8.4.32
1860 | rollup: 4.9.1
1861 | optionalDependencies:
1862 | fsevents: 2.3.3
1863 | dev: true
1864 |
1865 | /vitest@1.0.4(@types/node@20.10.4):
1866 | resolution: {integrity: sha512-s1GQHp/UOeWEo4+aXDOeFBJwFzL6mjycbQwwKWX2QcYfh/7tIerS59hWQ20mxzupTJluA2SdwiBuWwQHH67ckg==}
1867 | engines: {node: ^18.0.0 || >=20.0.0}
1868 | hasBin: true
1869 | peerDependencies:
1870 | '@edge-runtime/vm': '*'
1871 | '@types/node': ^18.0.0 || >=20.0.0
1872 | '@vitest/browser': ^1.0.0
1873 | '@vitest/ui': ^1.0.0
1874 | happy-dom: '*'
1875 | jsdom: '*'
1876 | peerDependenciesMeta:
1877 | '@edge-runtime/vm':
1878 | optional: true
1879 | '@types/node':
1880 | optional: true
1881 | '@vitest/browser':
1882 | optional: true
1883 | '@vitest/ui':
1884 | optional: true
1885 | happy-dom:
1886 | optional: true
1887 | jsdom:
1888 | optional: true
1889 | dependencies:
1890 | '@types/node': 20.10.4
1891 | '@vitest/expect': 1.0.4
1892 | '@vitest/runner': 1.0.4
1893 | '@vitest/snapshot': 1.0.4
1894 | '@vitest/spy': 1.0.4
1895 | '@vitest/utils': 1.0.4
1896 | acorn-walk: 8.3.1
1897 | cac: 6.7.14
1898 | chai: 4.3.10
1899 | debug: 4.3.4
1900 | execa: 8.0.1
1901 | local-pkg: 0.5.0
1902 | magic-string: 0.30.5
1903 | pathe: 1.1.1
1904 | picocolors: 1.0.0
1905 | std-env: 3.6.0
1906 | strip-literal: 1.3.0
1907 | tinybench: 2.5.1
1908 | tinypool: 0.8.1
1909 | vite: 5.0.10(@types/node@20.10.4)
1910 | vite-node: 1.0.4(@types/node@20.10.4)
1911 | why-is-node-running: 2.2.2
1912 | transitivePeerDependencies:
1913 | - less
1914 | - lightningcss
1915 | - sass
1916 | - stylus
1917 | - sugarss
1918 | - supports-color
1919 | - terser
1920 | dev: true
1921 |
1922 | /webidl-conversions@3.0.1:
1923 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
1924 | dev: false
1925 |
1926 | /webidl-conversions@4.0.2:
1927 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
1928 | dev: true
1929 |
1930 | /whatwg-url@5.0.0:
1931 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
1932 | dependencies:
1933 | tr46: 0.0.3
1934 | webidl-conversions: 3.0.1
1935 | dev: false
1936 |
1937 | /whatwg-url@7.1.0:
1938 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
1939 | dependencies:
1940 | lodash.sortby: 4.7.0
1941 | tr46: 1.0.1
1942 | webidl-conversions: 4.0.2
1943 | dev: true
1944 |
1945 | /which@2.0.2:
1946 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1947 | engines: {node: '>= 8'}
1948 | hasBin: true
1949 | dependencies:
1950 | isexe: 2.0.0
1951 | dev: true
1952 |
1953 | /why-is-node-running@2.2.2:
1954 | resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==}
1955 | engines: {node: '>=8'}
1956 | hasBin: true
1957 | dependencies:
1958 | siginfo: 2.0.0
1959 | stackback: 0.0.2
1960 | dev: true
1961 |
1962 | /wrappy@1.0.2:
1963 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1964 |
1965 | /yaml@2.3.4:
1966 | resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
1967 | engines: {node: '>= 14'}
1968 |
1969 | /yocto-queue@1.0.0:
1970 | resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
1971 | engines: {node: '>=12.20'}
1972 | dev: true
1973 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # React PDF Tailwind
2 |
3 | Use Tailwind CSS to style PDFs created with [react-pdf](https://github.com/diegomura/react-pdf).
4 |
5 | [Try it yourself](https://react-pdf-repl.vercel.app/?cp_code=JYWwDg9gTgLgBAbzgEQgYwK4gKYDsYA0cACgIYDm2RAKtgB6FwBqw2A7nAL5wBmUEIOACIAAlGyk0MALRgAJjwD043HOzioQgNwAoUJFiI4acaRjZqHbnwHDTU2QukxSwADZtgq7Tp1oIuADO8DAcALzGpuaWABQIOnBwMAAW2DgAXIgJiXD05qqZ8Tk5_m7QgYXZxYmYwQKZQv5QuDxlbOoARm4Y2EIEVTmc_cVD2aOcAJS6OvQG8Go8pBhu8DwYuFLAAXAAgmBgMRNZieIwGM1wMQMAPKiYOPgAfAOJ12SUcIHAAF7YYUI7AAsQk-MAAnm4_ghQjEhGBpIDeJC6Ej6NJ-BxWmi2FBSGA4OQ8QihBNOM9qjkEABtAB0dJ2UFxYJiAEYAEwTAC6NJAeJiMQA-kRgEcwo9Li9qtcWOxJRSANbYMFhBDAThy6rBCFQmFCLF0aQsuAgLzSNjSKlsgAMVrAME5cHhiP10lKcA65GkXR6hptJPVFIpOLxKsWbkC2ADgcS5OjOWutAYoO1Kt15gY0jZdDcvACMg6EDcciSeVdGDqIH9sbjOQAythNttVXAANRwFlRmvXRSJmDVuMJvLJyGptiw9MyQKV0n9msAGWgaTgwDAgSwcDkhegn2A8FIOEY_iCDfMZygcFIchXwECaC85Fybl3NLgADllm5SBqKRHwOpcjwPDAHeZ5wE-HTqBAy64GBpCLtgMAvvWxbAJIyw3kQvLkLgpCfOWd5gLu37VGAn5oOoZjGAIIAQJuRBQDe5ZJOchGBEkXh3nI6zwE-5DLKQRCSLkGA3jRxYAFbljAEDEcUv7LsWDFroEL7vm4n6CNgIlTrRcAAG7YMEwAdMs66QhAmGFk-bG8nQoBMYEeKsLgsk5N0UhMV4L4sHp-5MbykJrpeuF6csYAYC45hwNAOHiC-ACySxKXAEUXmg9yOS5NbFDw2DWd5wC-SATF4KAKXNAJKUrAx5FsVpuT8GxkhEB0xl4FxggGckwH8a5iSQSpJC4oZeDwCua6CNAd6WYFMCsASuJ6cAci4TASlzQAjj0F6MCthEmYEfX6bupDYLkwQvsQySkBG6lMZCHlsbgH6VUeEZbZR9UmiljDmOA5ZHeFbhLbFcC4NgW3YDSrndr2s5SooMpsPDiQTKSkrdu82D9t2dxYKNsZTDo6pAA&modules=true) in the `react-pdf-repl` interactive playground.
6 |
7 | ## Example
8 |
9 | ```jsx
10 | import { Document, Page, Text, View, StyleSheet } from "@react-pdf/renderer";
11 | import { createTw } from "react-pdf-tailwind";
12 |
13 | // The 'theme' object is your Tailwind theme config
14 | const tw = createTw({
15 | theme: {
16 | fontFamily: {
17 | sans: ["Comic Sans"],
18 | },
19 | extend: {
20 | colors: {
21 | custom: "#bada55",
22 | },
23 | },
24 | },
25 | });
26 |
27 | export default function MyPdf() {
28 | return (
29 |
30 |
31 |
32 | Section #1
33 |
34 |
35 | Section #2
36 |
37 |
38 |
39 | );
40 | }
41 | ```
42 |
43 | More detailed examples can be found in the [examples](https://github.com/aanckar/react-pdf-tailwind/tree/main/examples) folder.
44 |
45 | ## Installation
46 |
47 | ```js
48 | // Or pnpm, yarn...
49 | npm install react-pdf-tailwind
50 | ```
51 |
52 | ## Usage
53 |
54 | The `createTw` function takes two arguments: the first is a Tailwind config object (which currently only looks at the `theme` settings), and the second is an optional options object with the following defaults:
55 |
56 | ```js
57 | const tw = createTw(
58 | // Tailwind config
59 | {
60 | theme: ...
61 | },
62 | // Additional options
63 | {
64 | // Set the base font size in points (see note below regarding units)
65 | ptPerRem: 12,
66 | }
67 | );
68 | ```
69 |
70 | ## Notes
71 |
72 | - Supports most of the CSS properties that make sense in a PDF context, and are supported by `react-pdf` (see [this list](https://react-pdf.org/styling#valid-css-properties))
73 | - Default font family classes are excluded, since you have to [include your own fonts anyway](https://react-pdf.org/fonts)
74 | - Internally uses `pt` as the default unit (supported units can be found [here](https://react-pdf.org/styling#valid-units)), using the default convention `1rem = 12pt` (this can be changed in the options)
75 | - Since `react-pdf` uses [Yoga](https://yogalayout.com/) internally, some defaults differ from the web standard (for example, `flex-direction` defaults to `column`, which can be fixed by adding the `flex-row` class where needed)
76 | - Modifiers like breakpoints (which could technically make sense) aren't supported yet
77 |
--------------------------------------------------------------------------------
/src/index.test.ts:
--------------------------------------------------------------------------------
1 | import { createTw } from ".";
2 | import { px, rem } from "./utils";
3 | import { describe, test, expect } from "vitest";
4 |
5 | const colors = [
6 | ["inherit", "inherit"],
7 | ["current", "currentColor"],
8 | ["transparent", "transparent"],
9 | ["black", "#000"],
10 | ["white", "#fff"],
11 | ["gray-500", "#6b7280"],
12 | ["badass", "#bada55"],
13 | ["[#bada55]", "#bada55"],
14 | ["[rgb(69,69,69)]", "rgb(69,69,69)"],
15 | ["[hsl(69,69,69)]", "hsl(69,69,69)"],
16 | ];
17 |
18 | const customSpacing = [
19 | ["[6.9rem]", rem(6.9)],
20 | ["[69]", 69],
21 | ];
22 |
23 | const spacing = [
24 | ["0", 0],
25 | ["px", 1],
26 | ["0.5", rem(0.125)],
27 | ["1", rem(0.25)],
28 | ["96", rem(24)],
29 | ["420", rem(69)],
30 | ...customSpacing,
31 | ];
32 |
33 | const inset = [
34 | ["auto", "auto"],
35 | ["1/2", "50%"],
36 | ["1/3", "33.333333%"],
37 | ["2/3", "66.666667%"],
38 | ["1/4", "25%"],
39 | ["2/4", "50%"],
40 | ["3/4", "75%"],
41 | ["full", "100%"],
42 | ...spacing,
43 | ];
44 |
45 | const width = [
46 | ["auto", "auto"],
47 | ["1/2", "50%"],
48 | ["1/3", "33.333333%"],
49 | ["2/3", "66.666667%"],
50 | ["1/4", "25%"],
51 | ["2/4", "50%"],
52 | ["3/4", "75%"],
53 | ["1/5", "20%"],
54 | ["2/5", "40%"],
55 | ["3/5", "60%"],
56 | ["4/5", "80%"],
57 | ["1/6", "16.666667%"],
58 | ["2/6", "33.333333%"],
59 | ["3/6", "50%"],
60 | ["4/6", "66.666667%"],
61 | ["5/6", "83.333333%"],
62 | ["1/12", "8.333333%"],
63 | ["2/12", "16.666667%"],
64 | ["3/12", "25%"],
65 | ["4/12", "33.333333%"],
66 | ["5/12", "41.666667%"],
67 | ["6/12", "50%"],
68 | ["7/12", "58.333333%"],
69 | ["8/12", "66.666667%"],
70 | ["9/12", "75%"],
71 | ["10/12", "83.333333%"],
72 | ["11/12", "91.666667%"],
73 | ...spacing,
74 | ];
75 |
76 | const extendedWidth = [...width, ["full", "100%"], ["screen", "100vw"]];
77 |
78 | const height = [
79 | ["auto", "auto"],
80 | ["1/2", "50%"],
81 | ["1/3", "33.333333%"],
82 | ["2/3", "66.666667%"],
83 | ["1/4", "25%"],
84 | ["2/4", "50%"],
85 | ["3/4", "75%"],
86 | ["1/5", "20%"],
87 | ["2/5", "40%"],
88 | ["3/5", "60%"],
89 | ["4/5", "80%"],
90 | ["1/6", "16.666667%"],
91 | ["2/6", "33.333333%"],
92 | ["3/6", "50%"],
93 | ["4/6", "66.666667%"],
94 | ["5/6", "83.333333%"],
95 | ["full", "100%"],
96 | ["screen", "100vh"],
97 | ...spacing,
98 | ];
99 |
100 | const tw = createTw({
101 | theme: {
102 | fontFamily: {
103 | sans: ["Papyrus", "ignored"],
104 | nice: ["Comic Sans"],
105 | },
106 | extend: {
107 | spacing: {
108 | "420": "69rem",
109 | },
110 | colors: {
111 | badass: "#bada55",
112 | },
113 | },
114 | },
115 | });
116 |
117 | const customPtPerRem = 16;
118 |
119 | const twWithCustomPtPerRem = createTw({}, {ptPerRem: customPtPerRem});
120 |
121 | describe("Layout", () => {
122 | describe("display", () => {
123 | test.each([
124 | ["flex", "flex"],
125 | ["hidden", "none"],
126 | ])("%s", (key, value) => {
127 | expect(tw(key)).toEqual({
128 | display: value,
129 | });
130 | });
131 | });
132 |
133 | describe("object-fit", () => {
134 | test.each([["contain"], ["cover"], ["fill"], ["none"], ["scale-down"]])(
135 | "%s",
136 | (value) => {
137 | expect(tw(`object-${value}`)).toEqual({
138 | objectFit: value,
139 | });
140 | }
141 | );
142 | });
143 |
144 | describe("object-position", () => {
145 | test.each([
146 | ["bottom", "bottom"],
147 | ["center", "center"],
148 | ["left", "left"],
149 | ["left-bottom", "left bottom"],
150 | ["left-top", "left top"],
151 | ["right", "right"],
152 | ["right-bottom", "right bottom"],
153 | ["right-top", "right top"],
154 | ["top", "top"],
155 | ["[69%_69%]", "69% 69%"],
156 | ])("%s", (key, value) => {
157 | expect(tw(`object-${key}`)).toEqual({
158 | objectPosition: value,
159 | });
160 | });
161 | });
162 |
163 | describe("overflow", () => {
164 | test.each([["hidden", { overflow: "hidden" }]])("%s", (key, rule) => {
165 | expect(tw(`overflow-${key}`)).toEqual(rule);
166 | });
167 | });
168 |
169 | describe("position", () => {
170 | test.each([["absolute"], ["relative"]])("%s", (value) => {
171 | expect(tw(value)).toEqual({
172 | position: value,
173 | });
174 | });
175 | });
176 |
177 | describe("top / right / bottom / left", () => {
178 | describe("inset", () => {
179 | test.each(inset)("%s", (key, value) => {
180 | expect(tw(`inset-${key}`)).toEqual({
181 | top: value,
182 | right: value,
183 | bottom: value,
184 | left: value,
185 | });
186 | });
187 | });
188 |
189 | describe("inset-x", () => {
190 | test.each(inset)("%s", (key, value) => {
191 | expect(tw(`inset-x-${key}`)).toEqual({
192 | left: value,
193 | right: value,
194 | });
195 | });
196 | });
197 |
198 | describe("inset-y", () => {
199 | test.each(inset)("%s", (key, value) => {
200 | expect(tw(`inset-y-${key}`)).toEqual({
201 | top: value,
202 | bottom: value,
203 | });
204 | });
205 | });
206 |
207 | describe("top", () => {
208 | test.each(inset)("%s", (key, value) => {
209 | expect(tw(`top-${key}`)).toEqual({
210 | top: value,
211 | });
212 | });
213 | });
214 |
215 | describe("right", () => {
216 | test.each(inset)("%s", (key, value) => {
217 | expect(tw(`right-${key}`)).toEqual({
218 | right: value,
219 | });
220 | });
221 | });
222 |
223 | describe("bottom", () => {
224 | test.each(inset)("%s", (key, value) => {
225 | expect(tw(`bottom-${key}`)).toEqual({
226 | bottom: value,
227 | });
228 | });
229 | });
230 |
231 | describe("left", () => {
232 | test.each(inset)("%s", (key, value) => {
233 | expect(tw(`left-${key}`)).toEqual({
234 | left: value,
235 | });
236 | });
237 | });
238 | });
239 |
240 | describe("z-index", () => {
241 | test.each([
242 | ["0", 0],
243 | ["10", 10],
244 | ["20", 20],
245 | ["30", 30],
246 | ["40", 40],
247 | ["50", 50],
248 | ["auto", "auto"],
249 | ...customSpacing,
250 | ])("%s", (key, value) => {
251 | expect(tw(`z-${key}`)).toEqual({
252 | zIndex: value,
253 | });
254 | });
255 | });
256 | });
257 |
258 | describe("Flexbox", () => {
259 | describe("flex-basis", () => {
260 | test.each(width)("%s", (key, value) => {
261 | expect(tw(`basis-${key}`)).toEqual({
262 | flexBasis: value,
263 | });
264 | });
265 | });
266 |
267 | describe("flex-direction", () => {
268 | test.each([
269 | ["row", "row"],
270 | ["row-reverse", "row-reverse"],
271 | ["col", "column"],
272 | ["col-reverse", "column-reverse"],
273 | ])("%s", (key, value) => {
274 | expect(tw(`flex-${key}`)).toEqual({
275 | flexDirection: value,
276 | });
277 | });
278 | });
279 |
280 | describe("flex-wrap", () => {
281 | test.each([["wrap"], ["wrap-reverse"], ["nowrap"]])("%s", (value) => {
282 | expect(tw(`flex-${value}`)).toEqual({
283 | flexWrap: value,
284 | });
285 | });
286 | });
287 |
288 | describe("flex", () => {
289 | test.each([
290 | ["1", "1 1 0%"],
291 | ["auto", "1 1 auto"],
292 | ["initial", "0 1 auto"],
293 | ["none", "none"],
294 | ["[2_2_0%]", "2 2 0%"],
295 | ])("%s", (key, value) => {
296 | expect(tw(`flex-${key}`)).toEqual({
297 | flex: value,
298 | });
299 | });
300 | });
301 |
302 | describe("gap", () => {
303 | describe("gap", () => {
304 | test.each(spacing)("%s", (key, value) => {
305 | expect(tw(`gap-${key}`)).toEqual({
306 | gap: value,
307 | });
308 | });
309 | });
310 |
311 | describe("gap-x", () => {
312 | test.each(spacing)("%s", (key, value) => {
313 | expect(tw(`gap-x-${key}`)).toEqual({
314 | columnGap: value,
315 | });
316 | });
317 | });
318 |
319 | describe("gap-y", () => {
320 | test.each(spacing)("%s", (key, value) => {
321 | expect(tw(`gap-y-${key}`)).toEqual({
322 | rowGap: value,
323 | });
324 | });
325 | });
326 | });
327 |
328 | describe("flex-grow", () => {
329 | test.each([
330 | ["grow", 1],
331 | ["grow-0", 0],
332 | ["grow-[2]", 2],
333 | ])("%s", (key, value) => {
334 | expect(tw(key)).toEqual({
335 | flexGrow: value,
336 | });
337 | });
338 | });
339 |
340 | describe("flex-shrink", () => {
341 | test.each([
342 | ["shrink", 1],
343 | ["shrink-0", 0],
344 | ["shrink-[2]", 2],
345 | ])("%s", (key, value) => {
346 | expect(tw(key)).toEqual({
347 | flexShrink: value,
348 | });
349 | });
350 | });
351 |
352 | describe("order", () => {
353 | test.each([
354 | ["1", 1],
355 | ["2", 2],
356 | ["3", 3],
357 | ["4", 4],
358 | ["5", 5],
359 | ["6", 6],
360 | ["7", 7],
361 | ["8", 8],
362 | ["9", 9],
363 | ["10", 10],
364 | ["11", 11],
365 | ["12", 12],
366 | ["first", -9999],
367 | ["last", 9999],
368 | ["none", 0],
369 | ])("%s", (key, value) => {
370 | expect(tw(`order-${key}`)).toEqual({
371 | order: value,
372 | });
373 | });
374 | });
375 |
376 | describe("justify-content", () => {
377 | test.each([
378 | ["start", "flex-start"],
379 | ["end", "flex-end"],
380 | ["center", "center"],
381 | ["between", "space-between"],
382 | ["around", "space-around"],
383 | ["evenly", "space-evenly"],
384 | ])("%s", (key, value) => {
385 | expect(tw(`justify-${key}`)).toEqual({
386 | justifyContent: value,
387 | });
388 | });
389 | });
390 |
391 | describe("align-content", () => {
392 | test.each([
393 | ["start", "flex-start"],
394 | ["end", "flex-end"],
395 | ["center", "center"],
396 | ["between", "space-between"],
397 | ["around", "space-around"],
398 | ])("%s", (key, value) => {
399 | expect(tw(`content-${key}`)).toEqual({
400 | alignContent: value,
401 | });
402 | });
403 | });
404 |
405 | describe("align-items", () => {
406 | test.each([
407 | ["start", "flex-start"],
408 | ["end", "flex-end"],
409 | ["center", "center"],
410 | ["baseline", "baseline"],
411 | ["stretch", "stretch"],
412 | ])("%s", (key, value) => {
413 | expect(tw(`items-${key}`)).toEqual({
414 | alignItems: value,
415 | });
416 | });
417 | });
418 |
419 | describe("align-self", () => {
420 | test.each([
421 | ["auto", "auto"],
422 | ["start", "flex-start"],
423 | ["end", "flex-end"],
424 | ["center", "center"],
425 | ["baseline", "baseline"],
426 | ["stretch", "stretch"],
427 | ])("%s", (key, value) => {
428 | expect(tw(`self-${key}`)).toEqual({
429 | alignSelf: value,
430 | });
431 | });
432 | });
433 | });
434 |
435 | describe("Spacing", () => {
436 | describe("padding", () => {
437 | describe("padding", () => {
438 | test.each(spacing)("%s", (key, value) => {
439 | expect(tw(`p-${key}`)).toEqual({
440 | padding: value,
441 | });
442 | });
443 | });
444 |
445 | describe("padding-x", () => {
446 | test.each(spacing)("%s", (key, value) => {
447 | expect(tw(`px-${key}`)).toEqual({
448 | paddingLeft: value,
449 | paddingRight: value,
450 | });
451 | });
452 | });
453 |
454 | describe("padding-y", () => {
455 | test.each(spacing)("%s", (key, value) => {
456 | expect(tw(`py-${key}`)).toEqual({
457 | paddingTop: value,
458 | paddingBottom: value,
459 | });
460 | });
461 | });
462 |
463 | describe("padding-top", () => {
464 | test.each(spacing)("%s", (key, value) => {
465 | expect(tw(`pt-${key}`)).toEqual({
466 | paddingTop: value,
467 | });
468 | });
469 | });
470 |
471 | describe("padding-right", () => {
472 | test.each(spacing)("%s", (key, value) => {
473 | expect(tw(`pr-${key}`)).toEqual({
474 | paddingRight: value,
475 | });
476 | });
477 | });
478 |
479 | describe("padding-bottom", () => {
480 | test.each(spacing)("%s", (key, value) => {
481 | expect(tw(`pb-${key}`)).toEqual({
482 | paddingBottom: value,
483 | });
484 | });
485 | });
486 |
487 | describe("padding-left", () => {
488 | test.each(spacing)("%s", (key, value) => {
489 | expect(tw(`pl-${key}`)).toEqual({
490 | paddingLeft: value,
491 | });
492 | });
493 | });
494 | });
495 |
496 | describe("margin", () => {
497 | describe("margin", () => {
498 | test.each(spacing)("%s", (key, value) => {
499 | expect(tw(`m-${key}`)).toEqual({
500 | margin: value,
501 | });
502 | });
503 | });
504 |
505 | describe("margin-x", () => {
506 | test.each(spacing)("%s", (key, value) => {
507 | expect(tw(`mx-${key}`)).toEqual({
508 | marginLeft: value,
509 | marginRight: value,
510 | });
511 | });
512 | });
513 |
514 | describe("margin-y", () => {
515 | test.each(spacing)("%s", (key, value) => {
516 | expect(tw(`my-${key}`)).toEqual({
517 | marginTop: value,
518 | marginBottom: value,
519 | });
520 | });
521 | });
522 |
523 | describe("margin-top", () => {
524 | test.each(spacing)("%s", (key, value) => {
525 | expect(tw(`mt-${key}`)).toEqual({
526 | marginTop: value,
527 | });
528 | });
529 | });
530 |
531 | describe("margin-right", () => {
532 | test.each(spacing)("%s", (key, value) => {
533 | expect(tw(`mr-${key}`)).toEqual({
534 | marginRight: value,
535 | });
536 | });
537 | });
538 |
539 | describe("margin-bottom", () => {
540 | test.each(spacing)("%s", (key, value) => {
541 | expect(tw(`mb-${key}`)).toEqual({
542 | marginBottom: value,
543 | });
544 | });
545 | });
546 |
547 | describe("margin-left", () => {
548 | test.each(spacing)("%s", (key, value) => {
549 | expect(tw(`ml-${key}`)).toEqual({
550 | marginLeft: value,
551 | });
552 | });
553 | });
554 | });
555 | });
556 |
557 | describe("Sizing", () => {
558 | describe("width", () => {
559 | test.each(extendedWidth)("%s", (key, value) => {
560 | expect(tw(`w-${key}`)).toEqual({
561 | width: value,
562 | });
563 | });
564 | });
565 |
566 | describe("min-width", () => {
567 | test.each([
568 | ["0", 0],
569 | ["full", "100%"],
570 | ["[69rem]", rem(69)],
571 | ])("%s", (key, value) => {
572 | expect(tw(`min-w-${key}`)).toEqual({
573 | minWidth: value,
574 | });
575 | });
576 | });
577 |
578 | describe("max-width", () => {
579 | test.each([
580 | ["0", 0],
581 | ["full", "100%"],
582 | ["[69rem]", rem(69)],
583 | ])("%s", (key, value) => {
584 | expect(tw(`max-w-${key}`)).toEqual({
585 | maxWidth: value,
586 | });
587 | });
588 | });
589 |
590 | describe("height", () => {
591 | test.each(height)("%s", (key, value) => {
592 | expect(tw(`h-${key}`)).toEqual({
593 | height: value,
594 | });
595 | });
596 | });
597 |
598 | describe("min-height", () => {
599 | test.each([
600 | ["0", 0],
601 | ["full", "100%"],
602 | ["[69rem]", rem(69)],
603 | ])("%s", (key, value) => {
604 | expect(tw(`min-h-${key}`)).toEqual({
605 | minHeight: value,
606 | });
607 | });
608 | });
609 |
610 | describe("max-height", () => {
611 | test.each([
612 | ["0", 0],
613 | ["full", "100%"],
614 | ["[69rem]", rem(69)],
615 | ])("%s", (key, value) => {
616 | expect(tw(`max-h-${key}`)).toEqual({
617 | maxHeight: value,
618 | });
619 | });
620 | });
621 | });
622 |
623 | describe("Typography", () => {
624 | test("font-family", () => {
625 | expect(tw("font-sans")).toEqual({
626 | fontFamily: "Papyrus",
627 | });
628 | expect(tw("font-nice")).toEqual({
629 | fontFamily: "Comic Sans",
630 | });
631 | expect(tw("font-[Comic_Sans]")).toEqual({
632 | fontFamily: "Comic Sans",
633 | });
634 | });
635 |
636 | describe("font-size", () => {
637 | test.each([
638 | ["xs", [rem(0.75), 1]],
639 | ["sm", [rem(0.875), 1.25]],
640 | ["base", [rem(1), 1.5]],
641 | ["lg", [rem(1.125), 1.75]],
642 | ["xl", [rem(1.25), 1.75]],
643 | ["2xl", [rem(1.5), 2]],
644 | ["3xl", [rem(1.875), 2.25]],
645 | ["4xl", [rem(2.25), 2.5]],
646 | ["5xl", [rem(3), 1]],
647 | ["6xl", [rem(3.75), 1]],
648 | ["7xl", [rem(4.5), 1]],
649 | ["8xl", [rem(6), 1]],
650 | ["9xl", [rem(8), 1]],
651 | ["[69rem]", [rem(69)]],
652 | ])("%s", (key, [fontSize, lineHeight]) => {
653 | expect(tw(`text-${key}`)).toEqual({
654 | fontSize,
655 | ...(lineHeight ? { lineHeight } : null),
656 | });
657 | });
658 | });
659 |
660 | describe("custom font-size", () => {
661 | test.each([
662 | ["xs", [rem(0.75, customPtPerRem), 1]],
663 | ["sm", [rem(0.875, customPtPerRem), 1.25]],
664 | ["base", [rem(1, customPtPerRem), 1.5]],
665 | ["lg", [rem(1.125, customPtPerRem), 1.75]],
666 | ["xl", [rem(1.25, customPtPerRem), 1.75]],
667 | ["2xl", [rem(1.5, customPtPerRem), 2]],
668 | ["3xl", [rem(1.875, customPtPerRem), 2.25]],
669 | ["4xl", [rem(2.25, customPtPerRem), 2.5]],
670 | ["5xl", [rem(3, customPtPerRem), 1]],
671 | ["6xl", [rem(3.75, customPtPerRem), 1]],
672 | ["7xl", [rem(4.5, customPtPerRem), 1]],
673 | ["8xl", [rem(6, customPtPerRem), 1]],
674 | ["9xl", [rem(8, customPtPerRem), 1]],
675 | ["[69rem]", [rem(69, customPtPerRem)]],
676 | ])("%s", (key, [fontSize, lineHeight]) => {
677 | expect(twWithCustomPtPerRem(`text-${key}`)).toEqual({
678 | fontSize,
679 | ...(lineHeight ? { lineHeight } : null),
680 | });
681 | });
682 | });
683 |
684 | describe("font-style", () => {
685 | test.each([
686 | ["italic", "italic"],
687 | ["not-italic", "normal"],
688 | ])("%s", (key, value) => {
689 | expect(tw(key)).toEqual({
690 | fontStyle: value,
691 | });
692 | });
693 | });
694 |
695 | describe("font-weight", () => {
696 | test.each([
697 | ["thin", 100],
698 | ["extralight", 200],
699 | ["light", 300],
700 | ["normal", 400],
701 | ["medium", 500],
702 | ["semibold", 600],
703 | ["bold", 700],
704 | ["extrabold", 800],
705 | ["black", 900],
706 | ])("%s", (key, value) => {
707 | expect(tw(`font-${key}`)).toEqual({
708 | fontWeight: value,
709 | });
710 | });
711 | });
712 |
713 | describe("letter-spacing", () => {
714 | test.each([
715 | ["tighter", -0.05],
716 | ["tight", -0.025],
717 | ["normal", 0],
718 | ["wide", 0.025],
719 | ["wider", 0.05],
720 | ["widest", 0.1],
721 | ])("%s", (key, value) => {
722 | expect(tw(`tracking-${key}`)).toEqual({
723 | letterSpacing: rem(value),
724 | });
725 | });
726 | });
727 |
728 | describe("line-height", () => {
729 | test.each([
730 | ["none", 1],
731 | ["tight", 1.25],
732 | ["snug", 1.375],
733 | ["normal", 1.5],
734 | ["relaxed", 1.625],
735 | ["loose", 2],
736 | ["3", 0.75],
737 | ["4", 1],
738 | ["5", 1.25],
739 | ["6", 1.5],
740 | ["7", 1.75],
741 | ["8", 2],
742 | ["9", 2.25],
743 | ["10", 2.5],
744 | ])("%s", (key, value) => {
745 | expect(tw(`leading-${key}`)).toEqual({
746 | lineHeight: value,
747 | });
748 | });
749 | });
750 |
751 | describe("text-align", () => {
752 | test.each([["left"], ["center"], ["right"], ["justify"]])("%s", (value) => {
753 | expect(tw(`text-${value}`)).toEqual({
754 | textAlign: value,
755 | });
756 | });
757 | });
758 |
759 | describe("text-color", () => {
760 | test.each(colors)("%s", (key, value) => {
761 | expect(tw(`text-${key}`)).toEqual({
762 | color: value,
763 | });
764 | });
765 | });
766 |
767 | describe("text-decoration", () => {
768 | test.each([
769 | ["underline", "underline"],
770 | ["line-through", "line-through"],
771 | ["no-underline", "none"],
772 | ])("%s", (key, value) => {
773 | expect(tw(key)).toEqual({
774 | textDecoration: value,
775 | });
776 | });
777 | });
778 |
779 | describe("text-decoration-color", () => {
780 | test.each(colors)("%s", (key, value) => {
781 | expect(tw(`decoration-${key}`)).toEqual({
782 | textDecorationColor: value,
783 | });
784 | });
785 | });
786 |
787 | describe("text-align", () => {
788 | test.each([["solid"], ["double"], ["dotted"], ["dashed"], ["wavy"]])(
789 | "%s",
790 | (value) => {
791 | expect(tw(`decoration-${value}`)).toEqual({
792 | textDecorationStyle: value,
793 | });
794 | }
795 | );
796 | });
797 |
798 | describe("text-overflow", () => {
799 | test.each([
800 | [
801 | "truncate",
802 | {
803 | overflow: "hidden",
804 | textOverflow: "ellipsis",
805 | },
806 | ],
807 | [
808 | "text-ellipsis",
809 | {
810 | textOverflow: "ellipsis",
811 | },
812 | ],
813 | ])("%s", (key, value) => {
814 | expect(tw(key)).toEqual(value);
815 | });
816 | });
817 |
818 | describe("text-indent", () => {
819 | test.each([
820 | ["0", 0],
821 | ["px", 1],
822 | ["1", rem(0.25)],
823 | ["96", rem(24)],
824 | ])("%s", (key, value) => {
825 | expect(tw(`indent-${key}`)).toEqual({
826 | textIndent: value,
827 | });
828 | });
829 | });
830 |
831 | describe("text-transform", () => {
832 | test.each([
833 | ["uppercase", "uppercase"],
834 | ["lowercase", "lowercase"],
835 | ["capitalize", "capitalize"],
836 | ])("%s", (key, value) => {
837 | expect(tw(key)).toEqual({
838 | textTransform: value,
839 | });
840 | });
841 | });
842 | });
843 |
844 | describe("Backgrounds", () => {
845 | describe("background-color", () => {
846 | test.each([
847 | ["inherit", "inherit"],
848 | ["current", "currentColor"],
849 | ["transparent", "transparent"],
850 | ])("%s", (key, value) => {
851 | expect(tw(`bg-${key}`)).toEqual({
852 | backgroundColor: value,
853 | });
854 | });
855 |
856 | test.each(colors)("%s", (key, value) => {
857 | expect(tw(`bg-${key}`)).toEqual({
858 | backgroundColor: value,
859 | });
860 | });
861 | });
862 | });
863 |
864 | describe("Borders", () => {
865 | const borderRadii = [
866 | ["none", 0],
867 | ["sm", rem(0.125)],
868 | ["DEFAULT", rem(0.25)],
869 | ["md", rem(0.375)],
870 | ["lg", rem(0.5)],
871 | ["xl", rem(0.75)],
872 | ["2xl", rem(1)],
873 | ["3xl", rem(1.5)],
874 | ["full", 9999],
875 | ...customSpacing,
876 | ];
877 | describe("border-radius", () => {
878 | describe("border-radius", () => {
879 | test.each(borderRadii)("%s", (key, value) => {
880 | expect(tw(`rounded-${key}`)).toEqual({
881 | borderRadius: value,
882 | });
883 | });
884 | });
885 |
886 | describe("border-radius-t", () => {
887 | test.each(borderRadii)("%s", (key, value) => {
888 | expect(tw(`rounded-t-${key}`)).toEqual({
889 | borderTopLeftRadius: value,
890 | borderTopRightRadius: value,
891 | });
892 | });
893 | });
894 |
895 | describe("border-radius-r", () => {
896 | test.each(borderRadii)("%s", (key, value) => {
897 | expect(tw(`rounded-r-${key}`)).toEqual({
898 | borderTopRightRadius: value,
899 | borderBottomRightRadius: value,
900 | });
901 | });
902 | });
903 |
904 | describe("border-radius-b", () => {
905 | test.each(borderRadii)("%s", (key, value) => {
906 | expect(tw(`rounded-b-${key}`)).toEqual({
907 | borderBottomRightRadius: value,
908 | borderBottomLeftRadius: value,
909 | });
910 | });
911 | });
912 |
913 | describe("border-radius-l", () => {
914 | test.each(borderRadii)("%s", (key, value) => {
915 | expect(tw(`rounded-l-${key}`)).toEqual({
916 | borderBottomLeftRadius: value,
917 | borderTopLeftRadius: value,
918 | });
919 | });
920 | });
921 |
922 | describe("border-radius-tl", () => {
923 | test.each(borderRadii)("%s", (key, value) => {
924 | expect(tw(`rounded-tl-${key}`)).toEqual({
925 | borderTopLeftRadius: value,
926 | });
927 | });
928 | });
929 |
930 | describe("border-radius-tr", () => {
931 | test.each(borderRadii)("%s", (key, value) => {
932 | expect(tw(`rounded-tr-${key}`)).toEqual({
933 | borderTopRightRadius: value,
934 | });
935 | });
936 | });
937 |
938 | describe("border-radius-br", () => {
939 | test.each(borderRadii)("%s", (key, value) => {
940 | expect(tw(`rounded-br-${key}`)).toEqual({
941 | borderBottomRightRadius: value,
942 | });
943 | });
944 | });
945 |
946 | describe("border-radius-bl", () => {
947 | test.each(borderRadii)("%s", (key, value) => {
948 | expect(tw(`rounded-bl-${key}`)).toEqual({
949 | borderBottomLeftRadius: value,
950 | });
951 | });
952 | });
953 | });
954 |
955 | describe("border-width", () => {
956 | const borderWidths = [
957 | ["DEFAULT", 1],
958 | [0, 0],
959 | [2, 2],
960 | [4, 4],
961 | [8, 8],
962 | ...customSpacing,
963 | ];
964 |
965 | describe("border-width", () => {
966 | test.each(borderWidths)("%s", (key, value) => {
967 | expect(tw(`border-${key}`)).toEqual({
968 | borderWidth: value,
969 | });
970 | });
971 | });
972 |
973 | describe("border-width-x", () => {
974 | test.each(borderWidths)("%s", (key, value) => {
975 | expect(tw(`border-x-${key}`)).toEqual({
976 | borderLeftWidth: value,
977 | borderRightWidth: value,
978 | });
979 | });
980 | });
981 |
982 | describe("border-width-y", () => {
983 | test.each(borderWidths)("%s", (key, value) => {
984 | expect(tw(`border-y-${key}`)).toEqual({
985 | borderTopWidth: value,
986 | borderBottomWidth: value,
987 | });
988 | });
989 | });
990 |
991 | describe("border-width-t", () => {
992 | test.each(borderWidths)("%s", (key, value) => {
993 | expect(tw(`border-t-${key}`)).toEqual({
994 | borderTopWidth: value,
995 | });
996 | });
997 | });
998 |
999 | describe("border-width-r", () => {
1000 | test.each(borderWidths)("%s", (key, value) => {
1001 | expect(tw(`border-r-${key}`)).toEqual({
1002 | borderRightWidth: value,
1003 | });
1004 | });
1005 | });
1006 |
1007 | describe("border-width-b", () => {
1008 | test.each(borderWidths)("%s", (key, value) => {
1009 | expect(tw(`border-b-${key}`)).toEqual({
1010 | borderBottomWidth: value,
1011 | });
1012 | });
1013 | });
1014 |
1015 | describe("border-width-l", () => {
1016 | test.each(borderWidths)("%s", (key, value) => {
1017 | expect(tw(`border-l-${key}`)).toEqual({
1018 | borderLeftWidth: value,
1019 | });
1020 | });
1021 | });
1022 | });
1023 |
1024 | describe("border-color", () => {
1025 | describe("border-color", () => {
1026 | test.each(colors)("%s", (key, value) => {
1027 | expect(tw(`border-${key}`)).toEqual({
1028 | borderColor: value,
1029 | });
1030 | });
1031 | });
1032 |
1033 | describe("border-color-x", () => {
1034 | test.each(colors)("%s", (key, value) => {
1035 | expect(tw(`border-x-${key}`)).toEqual({
1036 | borderLeftColor: value,
1037 | borderRightColor: value,
1038 | });
1039 | });
1040 | });
1041 |
1042 | describe("border-color-y", () => {
1043 | test.each(colors)("%s", (key, value) => {
1044 | expect(tw(`border-y-${key}`)).toEqual({
1045 | borderTopColor: value,
1046 | borderBottomColor: value,
1047 | });
1048 | });
1049 | });
1050 |
1051 | describe("border-color-t", () => {
1052 | test.each(colors)("%s", (key, value) => {
1053 | expect(tw(`border-t-${key}`)).toEqual({
1054 | borderTopColor: value,
1055 | });
1056 | });
1057 | });
1058 |
1059 | describe("border-color-r", () => {
1060 | test.each(colors)("%s", (key, value) => {
1061 | expect(tw(`border-r-${key}`)).toEqual({
1062 | borderRightColor: value,
1063 | });
1064 | });
1065 | });
1066 |
1067 | describe("border-color-b", () => {
1068 | test.each(colors)("%s", (key, value) => {
1069 | expect(tw(`border-b-${key}`)).toEqual({
1070 | borderBottomColor: value,
1071 | });
1072 | });
1073 | });
1074 |
1075 | describe("border-color-l", () => {
1076 | test.each(colors)("%s", (key, value) => {
1077 | expect(tw(`border-l-${key}`)).toEqual({
1078 | borderLeftColor: value,
1079 | });
1080 | });
1081 | });
1082 | });
1083 |
1084 | describe("border-style", () => {
1085 | test.each([["solid"], ["dashed"], ["dotted"]])("%s", (value) => {
1086 | expect(tw(`border-${value}`)).toEqual({
1087 | borderStyle: value,
1088 | });
1089 | });
1090 | });
1091 | });
1092 |
1093 | describe("Effects", () => {
1094 | describe("opacity", () => {
1095 | test.each([
1096 | [0, 0],
1097 | [5, 0.05],
1098 | [10, 0.1],
1099 | [20, 0.2],
1100 | [25, 0.25],
1101 | [30, 0.3],
1102 | [40, 0.4],
1103 | [50, 0.5],
1104 | [60, 0.6],
1105 | [70, 0.7],
1106 | [75, 0.75],
1107 | [80, 0.8],
1108 | [90, 0.9],
1109 | [95, 0.95],
1110 | [100, 1],
1111 | ])("%s", (key, value) => {
1112 | expect(tw(`opacity-${key}`)).toEqual({
1113 | opacity: value,
1114 | });
1115 | });
1116 | });
1117 | });
1118 |
1119 | describe("Transforms", () => {
1120 | describe("scale", () => {
1121 | const scale = [
1122 | [0, 0],
1123 | [50, 0.5],
1124 | [75, 0.75],
1125 | [90, 0.9],
1126 | [95, 0.95],
1127 | [100, 1],
1128 | [105, 1.05],
1129 | [110, 1.1],
1130 | [125, 1.25],
1131 | [150, 1.5],
1132 | ...customSpacing,
1133 | ];
1134 |
1135 | describe("scale", () => {
1136 | test.each(scale)("%s", (key, value) => {
1137 | expect(tw(`scale-${key}`)).toEqual({
1138 | transform: `scale(${value})`,
1139 | });
1140 | });
1141 | });
1142 |
1143 | describe("scale-x", () => {
1144 | test.each(scale)("%s", (key, value) => {
1145 | expect(tw(`scale-x-${key}`)).toEqual({
1146 | transform: `scaleX(${value})`,
1147 | });
1148 | });
1149 | });
1150 |
1151 | describe("scale-y", () => {
1152 | test.each(scale)("%s", (key, value) => {
1153 | expect(tw(`scale-y-${key}`)).toEqual({
1154 | transform: `scaleY(${value})`,
1155 | });
1156 | });
1157 | });
1158 | });
1159 |
1160 | describe("rotate", () => {
1161 | const scale = [
1162 | [0, "0deg"],
1163 | [1, "1deg"],
1164 | [2, "2deg"],
1165 | [3, "3deg"],
1166 | [6, "6deg"],
1167 | [12, "12deg"],
1168 | [45, "45deg"],
1169 | [90, "90deg"],
1170 | [180, "180deg"],
1171 | ["[69deg]", "69deg"],
1172 | ];
1173 |
1174 | test.each(scale)("%s", (key, value) => {
1175 | expect(tw(`rotate-${key}`)).toEqual({
1176 | transform: `rotate(${value})`,
1177 | });
1178 | });
1179 | });
1180 |
1181 | describe("translate", () => {
1182 | const scale = [
1183 | ["1/2", "50%"],
1184 | ["1/3", "33.333333%"],
1185 | ["2/3", "66.666667%"],
1186 | ["1/4", "25%"],
1187 | ["2/4", "50%"],
1188 | ["3/4", "75%"],
1189 | ["full", "100%"],
1190 | ...spacing,
1191 | ...customSpacing,
1192 | ];
1193 |
1194 | describe("translate", () => {
1195 | test.each(scale)("%s", (key, value) => {
1196 | expect(tw(`translate-${key}`)).toEqual({
1197 | transform: `translate(${value})`,
1198 | });
1199 | });
1200 | });
1201 |
1202 | describe("translate-x", () => {
1203 | test.each(scale)("%s", (key, value) => {
1204 | expect(tw(`translate-x-${key}`)).toEqual({
1205 | transform: `translateX(${value})`,
1206 | });
1207 | });
1208 | });
1209 |
1210 | describe("translate-y", () => {
1211 | test.each(scale)("%s", (key, value) => {
1212 | expect(tw(`translate-y-${key}`)).toEqual({
1213 | transform: `translateY(${value})`,
1214 | });
1215 | });
1216 | });
1217 | });
1218 |
1219 | describe("transform-origin", () => {
1220 | const scale = [
1221 | ["center", "center"],
1222 | ["top", "top"],
1223 | ["top-right", "top right"],
1224 | ["right", "right"],
1225 | ["bottom-right", "bottom right"],
1226 | ["bottom", "bottom"],
1227 | ["bottom-left", "bottom left"],
1228 | ["left", "left"],
1229 | ["top-left", "top left"],
1230 | ["[69%_42%]", "69% 42%"],
1231 | ];
1232 |
1233 | test.each(scale)("%s", (key, value) => {
1234 | expect(tw(`origin-${key}`)).toEqual({
1235 | transformOrigin: value,
1236 | });
1237 | });
1238 | });
1239 | });
1240 |
1241 | describe("Combinations", () => {
1242 | test("Misc", () => {
1243 | expect(tw("w-24 h-12 max-w-screen-md text-gray-500")).toEqual({
1244 | width: rem(6),
1245 | height: rem(3),
1246 | maxWidth: px(768),
1247 | color: "#6b7280",
1248 | });
1249 | });
1250 |
1251 | test("Negative values", () => {
1252 | expect(
1253 | tw(
1254 | "-z-10 -top-1 -right-full -bottom-1/2 -left-2 -translate-1 -scale-50 -rotate-45 -order-1 -m-2"
1255 | )
1256 | ).toEqual({
1257 | zIndex: -10,
1258 | top: rem(-0.25),
1259 | right: "-100%",
1260 | bottom: "-50%",
1261 | left: rem(-0.5),
1262 | transform: `translate(${rem(-0.25)}) scale(-0.5) rotate(-45deg)`,
1263 | order: -1,
1264 | margin: rem(-0.5),
1265 | });
1266 | });
1267 | });
1268 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import resolveConfig from "tailwindcss/resolveConfig.js";
2 | import type { Config as TailwindConfig } from "tailwindcss";
3 | import type { Style } from "@react-pdf/types";
4 | import { capitalize, isNumeric, px, rem } from "./utils";
5 | import {
6 | type ScaledProperty,
7 | isNegativeProperty,
8 | isScaledProperty,
9 | exactUtilities,
10 | utilityPatterns,
11 | } from "./properties";
12 |
13 | export type Theme = Record<
14 | ScaledProperty,
15 | Record
16 | > & {
17 | colors: Record<
18 | string,
19 | Record | string | undefined
20 | >;
21 | };
22 |
23 | type Config = Omit;
24 |
25 | interface ResolvedConfig {
26 | theme: Theme;
27 | }
28 |
29 | type Options = {
30 | ptPerRem?: number;
31 | }
32 |
33 | export function createTw(config: Config, options?: Options) {
34 | // We're using a stricter subset of Tailwind, so we can cast the config to a narrower type
35 | const resolvedConfig = resolveConfig({
36 | // Disable Tailwind content warning
37 | content: ["./dummy/path.js"],
38 | theme: config.theme ?? {},
39 | }) as unknown as ResolvedConfig;
40 |
41 | const theme = resolvedConfig.theme;
42 |
43 | const cache: Record = {};
44 |
45 | function transformValue(
46 | value: string | number | undefined,
47 | property?: string,
48 | isNegative?: boolean
49 | ) {
50 | if (value === undefined) {
51 | return undefined;
52 | }
53 |
54 | const sign = isNegative ? -1 : 1;
55 |
56 | if (typeof value === "number") {
57 | return sign * value;
58 | }
59 |
60 | switch (property) {
61 | case "lineHeight":
62 | // react-pdf only supports unitless line-heights
63 | // https://github.com/diegomura/react-pdf/issues/912
64 | if (value.endsWith("rem")) {
65 | return sign * Number(value.replace("rem", ""));
66 | }
67 | return sign * Number(value);
68 |
69 | default:
70 | if (value.endsWith("px")) {
71 | return px(sign * Number(value.replace("px", "")));
72 | }
73 | if (value.endsWith("rem")) {
74 | return rem(sign * Number(value.replace("rem", "")), options?.ptPerRem);
75 | }
76 | if (value.endsWith("em")) {
77 | return rem(sign * Number(value.replace("em", "")), options?.ptPerRem);
78 | }
79 | if (isNegative && property && isNegativeProperty(property)) {
80 | const suffix = ["deg", "%"].find((i) => value.endsWith(i));
81 | if (suffix) {
82 | return `${sign * Number(value.replace(suffix, ""))}${suffix}`;
83 | }
84 | }
85 | if (isNumeric(value)) {
86 | return sign * Number(value);
87 | }
88 | return value;
89 | }
90 | }
91 |
92 | function getCustomValue(value: string) {
93 | if (value.startsWith("[") && value.endsWith("]")) {
94 | return value.slice(1, value.length - 1).replaceAll("_", " ");
95 | }
96 | return undefined;
97 | }
98 |
99 | interface Value {
100 | value: string | number | undefined;
101 | type?: "color" | "unit" | "numeric" | "other";
102 | isCustom?: boolean;
103 | additionalProperties?: Style;
104 | }
105 |
106 | function parseValue(
107 | value: string,
108 | property?: string,
109 | isNegative?: boolean
110 | ): Value {
111 | const valueParts = value.split("-");
112 |
113 | // Custom value
114 | const customValue = getCustomValue(value);
115 | if (customValue) {
116 | // Color
117 | if (
118 | ["#", "rgb", "hsl"].some((prefix) => customValue.startsWith(prefix))
119 | ) {
120 | return {
121 | value: customValue,
122 | type: "color",
123 | isCustom: true,
124 | };
125 | }
126 | // Unit
127 | if (["px", "rem"].some((suffix) => customValue.endsWith(suffix))) {
128 | return {
129 | value: transformValue(customValue, property, isNegative),
130 | type: "unit",
131 | isCustom: true,
132 | };
133 | }
134 | // Other
135 | return {
136 | value: transformValue(customValue, property, isNegative),
137 | type: "other",
138 | isCustom: true,
139 | };
140 | }
141 |
142 | // Color
143 | // Exception for "font-weight: black" (not a color)
144 | if (
145 | valueParts[0] &&
146 | valueParts[0] in theme.colors &&
147 | property !== "fontWeight"
148 | ) {
149 | // TODO alpha colors like gray-500/50 etc
150 | const color = theme.colors[valueParts[0]];
151 | return {
152 | value:
153 | typeof color === "string"
154 | ? color
155 | : valueParts[1]
156 | ? color?.[valueParts[1]]
157 | : undefined,
158 | type: "color" as const,
159 | isCustom: false,
160 | additionalProperties: undefined,
161 | };
162 | }
163 |
164 | if (valueParts.length === 0 || !property) {
165 | return {
166 | value: undefined,
167 | };
168 | }
169 |
170 | // Scaled properties
171 | const maybeScaledProperty = ["top", "right", "bottom", "left"].includes(
172 | property
173 | )
174 | ? "inset"
175 | : property;
176 |
177 | if (isScaledProperty(maybeScaledProperty)) {
178 | const result = theme[maybeScaledProperty][value];
179 |
180 | // Some utilities may set multiple properties
181 | // eg: text-2xl => ["1.5rem", { lineHeight: "2rem"}]
182 | if (Array.isArray(result)) {
183 | const additionalProperties =
184 | result[1] && result[1] !== null && typeof result[1] === "object"
185 | ? Object.fromEntries(
186 | Object.entries(result[1]).map(([key, value]) => [
187 | key,
188 | transformValue(value, key),
189 | ])
190 | )
191 | : null;
192 |
193 | return {
194 | value: transformValue(result[0], property, isNegative),
195 | type: "unit",
196 | isCustom: false,
197 | ...(additionalProperties ? { additionalProperties } : null),
198 | };
199 | }
200 |
201 | return {
202 | value: transformValue(result, property, isNegative),
203 | type: "unit",
204 | isCustom: false,
205 | };
206 | }
207 |
208 | // No match
209 | return {
210 | value: undefined,
211 | };
212 | }
213 |
214 | function parseUtility(
215 | className: string
216 | ): Style | Record | undefined {
217 | const modifierParts = className.split(":");
218 | const utilityStr = modifierParts[modifierParts.length - 1];
219 |
220 | // Exact utilities
221 | if (utilityStr && utilityStr in exactUtilities) {
222 | return exactUtilities[utilityStr];
223 | }
224 |
225 | // Utility patterns
226 | const isNegative = utilityStr ? utilityStr.startsWith("-") : false;
227 | const utilityParts = utilityStr
228 | ? utilityStr.slice(isNegative ? 1 : 0).split("-")
229 | : [];
230 |
231 | const matchingUtilityPatternKey = Object.keys(utilityPatterns).find(
232 | (key) => {
233 | const keyParts = key.split("-");
234 | const comparisonKey = utilityParts.slice(0, keyParts.length).join("-");
235 | return key === comparisonKey;
236 | }
237 | );
238 |
239 | if (matchingUtilityPatternKey) {
240 | const rawValue = className.split(`${matchingUtilityPatternKey}-`)[1];
241 | const pattern = utilityPatterns[matchingUtilityPatternKey];
242 | const property = Array.isArray(pattern) ? pattern[0] : pattern;
243 | const mappedProperties = Array.isArray(pattern)
244 | ? Array.isArray(pattern[1])
245 | ? pattern[1]
246 | : [pattern[1]]
247 | : [pattern];
248 |
249 | if (!rawValue || (isNegative && !isNegativeProperty(property))) {
250 | return undefined;
251 | }
252 |
253 | const { value, additionalProperties } = parseValue(
254 | rawValue,
255 | property,
256 | isNegative
257 | );
258 |
259 | return {
260 | ...Object.fromEntries(mappedProperties.map((prop) => [prop, value])),
261 | ...(additionalProperties ?? null),
262 | };
263 | }
264 |
265 | // Special utilities
266 | switch (utilityParts[0]) {
267 | case "inset": {
268 | const direction = ["x", "y"].find((i) => i === utilityParts[1]);
269 | const valueStr = utilityParts.slice(direction ? 2 : 1).join("-");
270 | const { value } = parseValue(valueStr, "inset", isNegative);
271 | switch (direction) {
272 | case "x":
273 | return {
274 | left: value,
275 | right: value,
276 | };
277 | case "y":
278 | return {
279 | top: value,
280 | bottom: value,
281 | };
282 | default:
283 | return {
284 | top: value,
285 | right: value,
286 | bottom: value,
287 | left: value,
288 | };
289 | }
290 | }
291 |
292 | case "font": {
293 | const valueStr = utilityParts.slice(1).join("-");
294 | const customValue = getCustomValue(valueStr);
295 | if (customValue) {
296 | if (isNumeric(customValue)) {
297 | return {
298 | fontWeight: parseInt(customValue),
299 | };
300 | }
301 | return {
302 | fontFamily: customValue,
303 | };
304 | }
305 | if (theme.fontFamily && valueStr in theme.fontFamily) {
306 | const { value } = parseValue(valueStr, "fontFamily");
307 | return {
308 | fontFamily: value,
309 | };
310 | }
311 | const { value } = parseValue(valueStr, "fontWeight");
312 | return {
313 | fontWeight: value,
314 | };
315 | }
316 |
317 | case "text": {
318 | const valueStr = utilityParts.slice(1).join("-");
319 | const { value, additionalProperties, type } = parseValue(
320 | valueStr,
321 | "fontSize"
322 | );
323 | if (type === "color") {
324 | return { color: value };
325 | }
326 | return { fontSize: value, ...additionalProperties };
327 | }
328 |
329 | case "decoration": {
330 | const valueStr = utilityParts.slice(1).join("-");
331 | const { value, type } = parseValue(valueStr, "textDecorationColor");
332 | if (type === "color") {
333 | return {
334 | textDecorationColor: value,
335 | };
336 | }
337 | // Only decoration color (not thickness) supported for now
338 | return undefined;
339 | }
340 |
341 | case "rounded": {
342 | const direction = ["t", "r", "b", "l", "tl", "tr", "br", "bl"].find(
343 | (i) => i === utilityParts[1]
344 | );
345 | const valueStr = utilityParts.slice(direction ? 2 : 1).join("-");
346 | const { value } = parseValue(valueStr || "DEFAULT", "borderRadius");
347 | switch (direction) {
348 | case "t":
349 | return {
350 | borderTopLeftRadius: value,
351 | borderTopRightRadius: value,
352 | };
353 | case "r":
354 | return {
355 | borderTopRightRadius: value,
356 | borderBottomRightRadius: value,
357 | };
358 | case "b":
359 | return {
360 | borderBottomRightRadius: value,
361 | borderBottomLeftRadius: value,
362 | };
363 | case "l":
364 | return {
365 | borderBottomLeftRadius: value,
366 | borderTopLeftRadius: value,
367 | };
368 | case "tl":
369 | return {
370 | borderTopLeftRadius: value,
371 | };
372 | case "tr":
373 | return {
374 | borderTopRightRadius: value,
375 | };
376 | case "br":
377 | return {
378 | borderBottomRightRadius: value,
379 | };
380 | case "bl":
381 | return {
382 | borderBottomLeftRadius: value,
383 | };
384 | default:
385 | return {
386 | borderRadius: value,
387 | };
388 | }
389 | }
390 |
391 | case "border": {
392 | // Border width or color
393 | const direction = ["x", "y", "t", "r", "b", "l"].find(
394 | (i) => i === utilityParts[1]
395 | );
396 | const valueStr = utilityParts.slice(direction ? 2 : 1).join("-");
397 | const { value, type } = parseValue(
398 | valueStr || "DEFAULT",
399 | "borderWidth"
400 | );
401 | const propertySuffix = capitalize(type === "color" ? "color" : "width");
402 | switch (direction) {
403 | case "x":
404 | return {
405 | [`borderLeft${propertySuffix}`]: value,
406 | [`borderRight${propertySuffix}`]: value,
407 | };
408 | case "y":
409 | return {
410 | [`borderTop${propertySuffix}`]: value,
411 | [`borderBottom${propertySuffix}`]: value,
412 | };
413 | case "t":
414 | return { [`borderTop${propertySuffix}`]: value };
415 | case "r":
416 | return { [`borderRight${propertySuffix}`]: value };
417 | case "b":
418 | return { [`borderBottom${propertySuffix}`]: value };
419 | case "l":
420 | return { [`borderLeft${propertySuffix}`]: value };
421 | default:
422 | return {
423 | [`border${propertySuffix}`]: value,
424 | };
425 | }
426 | }
427 |
428 | case "scale": {
429 | const direction = ["x", "y"].find((i) => i === utilityParts[1]);
430 | const valueStr = utilityParts.slice(direction ? 2 : 1).join("-");
431 | const { value } = parseValue(valueStr, "scale", isNegative);
432 | switch (direction) {
433 | case "x":
434 | return {
435 | transform: `scaleX(${value})`,
436 | };
437 | case "y":
438 | return {
439 | transform: `scaleY(${value})`,
440 | };
441 | default:
442 | return {
443 | transform: `scale(${value})`,
444 | };
445 | }
446 | }
447 |
448 | case "rotate": {
449 | const { value } = parseValue(
450 | utilityParts.slice(1).join("-"),
451 | "rotate",
452 | isNegative
453 | );
454 | return {
455 | transform: `rotate(${value})`,
456 | };
457 | }
458 |
459 | case "translate": {
460 | const direction = ["x", "y"].find((i) => i === utilityParts[1]);
461 | const valueStr = utilityParts.slice(direction ? 2 : 1).join("-");
462 | const { value } = parseValue(valueStr, "translate", isNegative);
463 | switch (direction) {
464 | case "x":
465 | return {
466 | transform: `translateX(${value})`,
467 | };
468 | case "y":
469 | return {
470 | transform: `translateY(${value})`,
471 | };
472 | default:
473 | return {
474 | transform: `translate(${value})`,
475 | };
476 | }
477 | }
478 | }
479 |
480 | // No match
481 | return undefined;
482 | }
483 |
484 | function handleInvalidClassName(className: string) {
485 | console.warn(`react-pdf-tailwind: Invalid class "${className}"`);
486 | }
487 |
488 | return function (input: string) {
489 | const classNames = input.split(" ").map((i) => i.trim());
490 | return classNames
491 | .map((className) => {
492 | if (className in cache) {
493 | return cache[className];
494 | }
495 | const parsed = parseUtility(className);
496 | if (
497 | parsed &&
498 | Object.values(parsed).every((v) => typeof v !== "undefined")
499 | ) {
500 | cache[className] = parsed;
501 | return parsed;
502 | } else {
503 | handleInvalidClassName(className);
504 | }
505 | return undefined;
506 | })
507 | .reduce