diff --git a/examples/vue-quasar/.browserslistrc b/examples/vue-quasar/.browserslistrc
new file mode 100644
index 00000000..dc3bc09a
--- /dev/null
+++ b/examples/vue-quasar/.browserslistrc
@@ -0,0 +1,4 @@
+> 1%
+last 2 versions
+not dead
+not ie 11
diff --git a/examples/vue-quasar/.editorconfig b/examples/vue-quasar/.editorconfig
new file mode 100644
index 00000000..ecea360f
--- /dev/null
+++ b/examples/vue-quasar/.editorconfig
@@ -0,0 +1,6 @@
+[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue}]
+charset = utf-8
+indent_size = 2
+indent_style = space
+insert_final_newline = true
+trim_trailing_whitespace = true
diff --git a/examples/vue-quasar/.gitignore b/examples/vue-quasar/.gitignore
new file mode 100644
index 00000000..11f5d714
--- /dev/null
+++ b/examples/vue-quasar/.gitignore
@@ -0,0 +1,22 @@
+.DS_Store
+node_modules
+/dist
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/examples/vue-quasar/README.md b/examples/vue-quasar/README.md
new file mode 100644
index 00000000..a2129faf
--- /dev/null
+++ b/examples/vue-quasar/README.md
@@ -0,0 +1,118 @@
+
+
+
+
+
+
EmbedPDF
+
+
+
+

+

+
+
+
+# Vue Quasar PDF Viewer Example
+
+This example shows how to build a fully‑featured PDF viewer with **EmbedPDF**, **Vue 3** and **Quasar 2**. It demonstrates how to combine EmbedPDF’s plugin system with Quasar components to create a polished reading experience that feels right at home in any Vue + Quasar project.
+
+- **Live demo:** _(coming soon)_
+- **Docs:** [https://www.embedpdf.com](https://www.embedpdf.com)
+
+---
+
+## Key features on display
+
+| Feature | Plugin(s) |
+| ---------------------------------------------------------- | --------------------------------------------------------------------------------- |
+| Virtualised scrolling with smooth page rendering | `@embedpdf/plugin-scroll` + `@embedpdf/plugin-render` + `@embedpdf/plugin-tiling` |
+| Zoom controls (fit page, fit width, marquee zoom, presets) | `@embedpdf/plugin-zoom` |
+| Pan/hand tool | `@embedpdf/plugin-pan` |
+| Rotate pages | `@embedpdf/plugin-rotate` |
+| Single and spread layouts | `@embedpdf/plugin-spread` |
+| In‑document text search | `@embedpdf/plugin-search` |
+| Thumbnail sidebar navigation | `@embedpdf/plugin-thumbnail` |
+| Annotation tools (text, shapes, stamp) | `@embedpdf/plugin-annotation` |
+| Redaction tools (text selection, marquee) | `@embedpdf/plugin-redaction` |
+| File picker, download & print | `@embedpdf/plugin-loader`, `@embedpdf/plugin-export`, `@embedpdf/plugin-print` |
+| Fullscreen support | `@embedpdf/plugin-fullscreen` |
+
+The UI around these plugins is built with Quasar’s `QHeader`, `QDrawer`, `QMenu`, `QBtn`, and companion components. On mobile, the side drawers collapse into a bottom-sheet style `QDialog` for a more native feel.
+
+---
+
+## Quick start
+
+> **Prerequisites**
+>
+> - Node 18 or newer
+> - **pnpm** 10 (recommended) or a recent pnpm 8/9
+
+1. **Clone the repo** (or your fork) and install dependencies:
+
+ ```bash
+ git clone https://github.com/embedpdf/embed-pdf-viewer.git
+ cd embed-pdf-viewer
+ pnpm install
+ ```
+
+2. **Build the core packages** once so that the example can import them:
+
+ ```bash
+ pnpm run build --filter "./packages/*"
+ # or keep them rebuilt automatically while you work:
+ pnpm watch build --filter "./packages/*"
+ ```
+
+3. **Run the example dev server**:
+
+ ```bash
+ pnpm --filter @embedpdf/example-vue-quasar run dev
+ ```
+
+ Vite will start on [http://localhost:3000](http://localhost:3000) and open the browser automatically.
+
+---
+
+## Building a production bundle
+
+To create an optimized build (under `examples/vue-quasar/dist`):
+
+```bash
+pnpm --filter @embedpdf/example-vue-quasar run build
+```
+
+The output is a static site you can deploy to any CDN or static host.
+
+---
+
+## Folder layout
+
+```
+examples/vue-quasar
+├── public/ # Static assets (favicon)
+└── src/
+ ├── components/ # Quasar‑based UI parts (Toolbar, Search, …)
+ │ └── drawer-system/ # Reusable logic for side drawers/bottom sheets
+ ├── plugins/ # Quasar plugin setup
+ ├── App.vue # Root Vue component
+ ├── Application.vue # Main viewer shell and plugin wiring
+ └── main.ts # Vue entry + theming
+```
+
+The PDFium WebAssembly bundle is loaded automatically by the `usePdfiumEngine` hook in `src/Application.vue`, which passes it to EmbedPDF’s **WebWorkerEngine**.
+
+---
+
+## Customisation tips
+
+- **Swap icons or colours:** The UI uses standard Quasar components and props, so styling tweaks are straightforward.
+- **Add or remove plugins:** Open `src/Application.vue` and edit the `plugins` array.
+
+For deep dives, check the [EmbedPDF documentation](https://www.embedpdf.com) and the source of this example.
+
+---
+
+## License
+
+Example code is released under the MIT license, the same as EmbedPDF itself.
diff --git a/examples/vue-quasar/components.d.ts b/examples/vue-quasar/components.d.ts
new file mode 100644
index 00000000..0d251be4
--- /dev/null
+++ b/examples/vue-quasar/components.d.ts
@@ -0,0 +1,26 @@
+/* eslint-disable */
+// @ts-nocheck
+// Generated by unplugin-vue-components
+// Read more: https://github.com/vuejs/core/pull/3399
+// biome-ignore lint: disable
+export {};
+
+/* prettier-ignore */
+declare module 'vue' {
+ export interface GlobalComponents {
+ AnnotationSelectionMenu: typeof import('./src/components/AnnotationSelectionMenu.vue')['default']
+ AnnotationToolbar: typeof import('./src/components/AnnotationToolbar.vue')['default']
+ Application: typeof import('./src/components/Application.vue')['default']
+ Drawer: typeof import('./src/components/drawer-system/Drawer.vue')['default']
+ DrawerProvider: typeof import('./src/components/drawer-system/DrawerProvider.vue')['default']
+ DrawerToggleButton: typeof import('./src/components/drawer-system/DrawerToggleButton.vue')['default']
+ PageControls: typeof import('./src/components/PageControls.vue')['default']
+ PrintDialog: typeof import('./src/components/PrintDialog.vue')['default']
+ RedactionSelectionMenu: typeof import('./src/components/RedactionSelectionMenu.vue')['default']
+ RedactToolbar: typeof import('./src/components/RedactToolbar.vue')['default']
+ Search: typeof import('./src/components/Search.vue')['default']
+ Sidebar: typeof import('./src/components/Sidebar.vue')['default']
+ Toolbar: typeof import('./src/components/Toolbar.vue')['default']
+ ZoomControls: typeof import('./src/components/ZoomControls.vue')['default']
+ }
+}
diff --git a/examples/vue-quasar/env.d.ts b/examples/vue-quasar/env.d.ts
new file mode 100644
index 00000000..11f02fe2
--- /dev/null
+++ b/examples/vue-quasar/env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/examples/vue-quasar/index.html b/examples/vue-quasar/index.html
new file mode 100644
index 00000000..c25b2c0c
--- /dev/null
+++ b/examples/vue-quasar/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ EmbedPDF + Vue + Quasar
+
+
+
+
+
+
diff --git a/examples/vue-quasar/package.json b/examples/vue-quasar/package.json
new file mode 100644
index 00000000..7209b1cf
--- /dev/null
+++ b/examples/vue-quasar/package.json
@@ -0,0 +1,53 @@
+{
+ "name": "@embedpdf/example-vue-quasar",
+ "private": true,
+ "type": "module",
+ "license": "MIT",
+ "version": "0.0.0",
+ "scripts": {
+ "dev": "vite",
+ "build": "run-p type-check \"build-only {@}\" --",
+ "preview": "vite preview",
+ "build-only": "vite build",
+ "type-check": "vue-tsc --build --force"
+ },
+ "dependencies": {
+ "@embedpdf/core": "workspace:*",
+ "@embedpdf/engines": "workspace:*",
+ "@embedpdf/models": "workspace:*",
+ "@embedpdf/plugin-loader": "workspace:*",
+ "@embedpdf/plugin-viewport": "workspace:*",
+ "@embedpdf/plugin-scroll": "workspace:*",
+ "@embedpdf/plugin-render": "workspace:*",
+ "@embedpdf/plugin-tiling": "workspace:*",
+ "@embedpdf/plugin-interaction-manager": "workspace:*",
+ "@embedpdf/plugin-selection": "workspace:*",
+ "@embedpdf/plugin-rotate": "workspace:*",
+ "@embedpdf/plugin-fullscreen": "workspace:*",
+ "@embedpdf/plugin-zoom": "workspace:*",
+ "@embedpdf/plugin-pan": "workspace:*",
+ "@embedpdf/plugin-export": "workspace:*",
+ "@embedpdf/plugin-spread": "workspace:*",
+ "@embedpdf/plugin-print": "workspace:*",
+ "@embedpdf/plugin-search": "workspace:*",
+ "@embedpdf/plugin-annotation": "workspace:*",
+ "@embedpdf/plugin-redaction": "workspace:*",
+ "@embedpdf/plugin-thumbnail": "workspace:*",
+ "@embedpdf/utils": "workspace:*",
+ "@quasar/extras": "^1.17.0",
+ "quasar": "^2.16.0",
+ "vue": "^3.5.0"
+ },
+ "devDependencies": {
+ "@tsconfig/node22": "^22.0.0",
+ "@types/node": "^22.9.0",
+ "@vitejs/plugin-vue": "^5.2.3",
+ "@vue/tsconfig": "^0.7.0",
+ "@quasar/vite-plugin": "^1.10.0",
+ "npm-run-all2": "^7.0.2",
+ "sass-embedded": "^1.89.2",
+ "typescript": "^5.7.3",
+ "vite": "^6.3.5",
+ "vue-tsc": "^3.0.1"
+ }
+}
diff --git a/examples/vue-quasar/public/favicon.ico b/examples/vue-quasar/public/favicon.ico
new file mode 100644
index 00000000..5ed37164
Binary files /dev/null and b/examples/vue-quasar/public/favicon.ico differ
diff --git a/examples/vue-quasar/src/App.vue b/examples/vue-quasar/src/App.vue
new file mode 100644
index 00000000..1f26297c
--- /dev/null
+++ b/examples/vue-quasar/src/App.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/examples/vue-quasar/src/components/AnnotationSelectionMenu.vue b/examples/vue-quasar/src/components/AnnotationSelectionMenu.vue
new file mode 100644
index 00000000..de602de8
--- /dev/null
+++ b/examples/vue-quasar/src/components/AnnotationSelectionMenu.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
diff --git a/examples/vue-quasar/src/components/AnnotationToolbar.vue b/examples/vue-quasar/src/components/AnnotationToolbar.vue
new file mode 100644
index 00000000..17f5cca0
--- /dev/null
+++ b/examples/vue-quasar/src/components/AnnotationToolbar.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+ Free Text
+
+
+ Ink
+
+
+ Circle
+
+
+ Rectangle
+
+
+ Arrow
+
+
+ Approved Stamp
+
+
+
+
+
+
diff --git a/examples/vue-quasar/src/components/Application.vue b/examples/vue-quasar/src/components/Application.vue
new file mode 100644
index 00000000..cf151787
--- /dev/null
+++ b/examples/vue-quasar/src/components/Application.vue
@@ -0,0 +1,386 @@
+
+
+
+
+
+
+
+
Loading PDF engine...
+
+
+
+
+
+ Error
+ {{ engineError.message }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/vue-quasar/src/components/PageControls.vue b/examples/vue-quasar/src/components/PageControls.vue
new file mode 100644
index 00000000..ca2eca20
--- /dev/null
+++ b/examples/vue-quasar/src/components/PageControls.vue
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/vue-quasar/src/components/PrintDialog.vue b/examples/vue-quasar/src/components/PrintDialog.vue
new file mode 100644
index 00000000..9bcb2c0c
--- /dev/null
+++ b/examples/vue-quasar/src/components/PrintDialog.vue
@@ -0,0 +1,141 @@
+
+
+
+
+ Print Settings
+
+
+
+
+
Pages to print
+
+
+
+ Total pages in document: {{ state.totalPages }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/vue-quasar/src/components/RedactToolbar.vue b/examples/vue-quasar/src/components/RedactToolbar.vue
new file mode 100644
index 00000000..948cff15
--- /dev/null
+++ b/examples/vue-quasar/src/components/RedactToolbar.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+ Redact Text
+
+
+ Marquee Redact
+
+
+
+ Apply Pending Redactions
+
+
+ Clear Pending Redactions
+
+
+
+
+
+
diff --git a/examples/vue-quasar/src/components/RedactionSelectionMenu.vue b/examples/vue-quasar/src/components/RedactionSelectionMenu.vue
new file mode 100644
index 00000000..1092d15a
--- /dev/null
+++ b/examples/vue-quasar/src/components/RedactionSelectionMenu.vue
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
diff --git a/examples/vue-quasar/src/components/Search.vue b/examples/vue-quasar/src/components/Search.vue
new file mode 100644
index 00000000..5f02b158
--- /dev/null
+++ b/examples/vue-quasar/src/components/Search.vue
@@ -0,0 +1,219 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ handleFlagChange(MatchFlag.MatchCase, !!checked)"
+ />
+ handleFlagChange(MatchFlag.MatchWholeWord, !!checked)"
+ />
+
+
+
+
+
+
+
+ {{ state.total }} results found
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/vue-quasar/src/components/Sidebar.vue b/examples/vue-quasar/src/components/Sidebar.vue
new file mode 100644
index 00000000..d64d5ac8
--- /dev/null
+++ b/examples/vue-quasar/src/components/Sidebar.vue
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
diff --git a/examples/vue-quasar/src/components/Toolbar.vue b/examples/vue-quasar/src/components/Toolbar.vue
new file mode 100644
index 00000000..35526b6c
--- /dev/null
+++ b/examples/vue-quasar/src/components/Toolbar.vue
@@ -0,0 +1,331 @@
+
+
+
+
+
+
+
diff --git a/examples/vue-quasar/src/components/ZoomControls.vue b/examples/vue-quasar/src/components/ZoomControls.vue
new file mode 100644
index 00000000..eb8e819c
--- /dev/null
+++ b/examples/vue-quasar/src/components/ZoomControls.vue
@@ -0,0 +1,176 @@
+
+
+
+
+
+ {{ zoomPercentage }}%
+
+
+
+
+
+
+
+
+ Zoom Out
+
+
+
+
+ Zoom In
+
+
+
+
+
diff --git a/examples/vue-quasar/src/components/drawer-system/Drawer.vue b/examples/vue-quasar/src/components/drawer-system/Drawer.vue
new file mode 100644
index 00000000..79dcaf87
--- /dev/null
+++ b/examples/vue-quasar/src/components/drawer-system/Drawer.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ activeComponent.label }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/vue-quasar/src/components/drawer-system/DrawerProvider.vue b/examples/vue-quasar/src/components/drawer-system/DrawerProvider.vue
new file mode 100644
index 00000000..3dd62871
--- /dev/null
+++ b/examples/vue-quasar/src/components/drawer-system/DrawerProvider.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
diff --git a/examples/vue-quasar/src/components/drawer-system/DrawerToggleButton.vue b/examples/vue-quasar/src/components/drawer-system/DrawerToggleButton.vue
new file mode 100644
index 00000000..77a63edc
--- /dev/null
+++ b/examples/vue-quasar/src/components/drawer-system/DrawerToggleButton.vue
@@ -0,0 +1,53 @@
+
+
+
+
+ {{ component.label }}
+
+
diff --git a/examples/vue-quasar/src/components/drawer-system/types.ts b/examples/vue-quasar/src/components/drawer-system/types.ts
new file mode 100644
index 00000000..d4f8c926
--- /dev/null
+++ b/examples/vue-quasar/src/components/drawer-system/types.ts
@@ -0,0 +1,15 @@
+export type DrawerPosition = 'left' | 'right';
+
+export interface DrawerComponent {
+ id: string;
+ component: any; // Vue component
+ icon: string; // Material Design Icon name
+ label: string;
+ position: DrawerPosition;
+ props?: Record;
+}
+
+export interface DrawerState {
+ isOpen: boolean;
+ activeComponentId: string | null;
+}
diff --git a/examples/vue-quasar/src/main.ts b/examples/vue-quasar/src/main.ts
new file mode 100644
index 00000000..ddd108b0
--- /dev/null
+++ b/examples/vue-quasar/src/main.ts
@@ -0,0 +1,20 @@
+/**
+ * main.ts
+ *
+ * Bootstraps Quasar and other plugins then mounts the App.
+ */
+
+// Plugins
+import { registerPlugins } from '@/plugins';
+
+// Components
+import App from './App.vue';
+
+// Composables
+import { createApp } from 'vue';
+
+const app = createApp(App);
+
+registerPlugins(app);
+
+app.mount('#app');
diff --git a/examples/vue-quasar/src/plugins/README.md b/examples/vue-quasar/src/plugins/README.md
new file mode 100644
index 00000000..62201c7c
--- /dev/null
+++ b/examples/vue-quasar/src/plugins/README.md
@@ -0,0 +1,3 @@
+# Plugins
+
+Plugins are a way to extend the functionality of your Vue application. Use this folder for registering plugins that you want to use globally.
diff --git a/examples/vue-quasar/src/plugins/index.ts b/examples/vue-quasar/src/plugins/index.ts
new file mode 100644
index 00000000..cd1f5a2f
--- /dev/null
+++ b/examples/vue-quasar/src/plugins/index.ts
@@ -0,0 +1,17 @@
+/**
+ * plugins/index.ts
+ *
+ * Automatically included in `./src/main.ts`
+ */
+
+// Plugins
+import quasar from './quasar';
+
+// Types
+import type { App } from 'vue';
+
+export function registerPlugins(app: App) {
+ app.use(quasar, {
+ config: {},
+ });
+}
diff --git a/examples/vue-quasar/src/plugins/quasar.ts b/examples/vue-quasar/src/plugins/quasar.ts
new file mode 100644
index 00000000..ac69a55a
--- /dev/null
+++ b/examples/vue-quasar/src/plugins/quasar.ts
@@ -0,0 +1,15 @@
+/**
+ * plugins/quasar.ts
+ *
+ * Framework documentation: https://quasar.dev
+ */
+
+import { Quasar } from 'quasar';
+
+// Base styles + icon sets
+import 'quasar/src/css/index.sass';
+import '@quasar/extras/roboto-font/roboto-font.css';
+import '@quasar/extras/mdi-v7/mdi-v7.css';
+import '@quasar/extras/material-icons/material-icons.css';
+
+export default Quasar;
diff --git a/examples/vue-quasar/tsconfig.app.json b/examples/vue-quasar/tsconfig.app.json
new file mode 100644
index 00000000..e14c754d
--- /dev/null
+++ b/examples/vue-quasar/tsconfig.app.json
@@ -0,0 +1,14 @@
+{
+ "extends": "@vue/tsconfig/tsconfig.dom.json",
+ "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
+ "exclude": ["src/**/__tests__/*"],
+ "compilerOptions": {
+ "composite": true,
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
+
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ }
+}
diff --git a/examples/vue-quasar/tsconfig.json b/examples/vue-quasar/tsconfig.json
new file mode 100644
index 00000000..66b5e570
--- /dev/null
+++ b/examples/vue-quasar/tsconfig.json
@@ -0,0 +1,11 @@
+{
+ "files": [],
+ "references": [
+ {
+ "path": "./tsconfig.node.json"
+ },
+ {
+ "path": "./tsconfig.app.json"
+ }
+ ]
+}
diff --git a/examples/vue-quasar/tsconfig.node.json b/examples/vue-quasar/tsconfig.node.json
new file mode 100644
index 00000000..5a0c6a54
--- /dev/null
+++ b/examples/vue-quasar/tsconfig.node.json
@@ -0,0 +1,19 @@
+{
+ "extends": "@tsconfig/node22/tsconfig.json",
+ "include": [
+ "vite.config.*",
+ "vitest.config.*",
+ "cypress.config.*",
+ "nightwatch.conf.*",
+ "playwright.config.*"
+ ],
+ "compilerOptions": {
+ "composite": true,
+ "noEmit": true,
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
+
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "types": ["node"]
+ }
+}
diff --git a/examples/vue-quasar/vite.config.mts b/examples/vue-quasar/vite.config.mts
new file mode 100644
index 00000000..375d6382
--- /dev/null
+++ b/examples/vue-quasar/vite.config.mts
@@ -0,0 +1,45 @@
+// Plugins
+import Vue from '@vitejs/plugin-vue'
+import { quasar, transformAssetUrls } from '@quasar/vite-plugin'
+
+// Utilities
+import { defineConfig } from 'vite'
+import { fileURLToPath, URL } from 'node:url'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [
+ Vue({
+ template: { transformAssetUrls },
+ }),
+ quasar(),
+ ],
+ define: { 'process.env': {} },
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('src', import.meta.url)),
+ },
+ extensions: [
+ '.js',
+ '.json',
+ '.jsx',
+ '.mjs',
+ '.ts',
+ '.tsx',
+ '.vue',
+ ],
+ },
+ server: {
+ port: 3000,
+ },
+ css: {
+ preprocessorOptions: {
+ sass: {
+ api: 'modern-compiler',
+ },
+ scss: {
+ api: 'modern-compiler',
+ },
+ },
+ },
+})
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 08b1016f..df271e68 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -304,6 +304,115 @@ importers:
specifier: ^6.3.5
version: 6.3.5(@types/node@22.16.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.39.0)(yaml@2.8.0)
+ examples/vue-quasar:
+ dependencies:
+ '@embedpdf/core':
+ specifier: workspace:*
+ version: link:../../packages/core
+ '@embedpdf/engines':
+ specifier: workspace:*
+ version: link:../../packages/engines
+ '@embedpdf/models':
+ specifier: workspace:*
+ version: link:../../packages/models
+ '@embedpdf/plugin-annotation':
+ specifier: workspace:*
+ version: link:../../packages/plugin-annotation
+ '@embedpdf/plugin-export':
+ specifier: workspace:*
+ version: link:../../packages/plugin-export
+ '@embedpdf/plugin-fullscreen':
+ specifier: workspace:*
+ version: link:../../packages/plugin-fullscreen
+ '@embedpdf/plugin-interaction-manager':
+ specifier: workspace:*
+ version: link:../../packages/plugin-interaction-manager
+ '@embedpdf/plugin-loader':
+ specifier: workspace:*
+ version: link:../../packages/plugin-loader
+ '@embedpdf/plugin-pan':
+ specifier: workspace:*
+ version: link:../../packages/plugin-pan
+ '@embedpdf/plugin-print':
+ specifier: workspace:*
+ version: link:../../packages/plugin-print
+ '@embedpdf/plugin-redaction':
+ specifier: workspace:*
+ version: link:../../packages/plugin-redaction
+ '@embedpdf/plugin-render':
+ specifier: workspace:*
+ version: link:../../packages/plugin-render
+ '@embedpdf/plugin-rotate':
+ specifier: workspace:*
+ version: link:../../packages/plugin-rotate
+ '@embedpdf/plugin-scroll':
+ specifier: workspace:*
+ version: link:../../packages/plugin-scroll
+ '@embedpdf/plugin-search':
+ specifier: workspace:*
+ version: link:../../packages/plugin-search
+ '@embedpdf/plugin-selection':
+ specifier: workspace:*
+ version: link:../../packages/plugin-selection
+ '@embedpdf/plugin-spread':
+ specifier: workspace:*
+ version: link:../../packages/plugin-spread
+ '@embedpdf/plugin-thumbnail':
+ specifier: workspace:*
+ version: link:../../packages/plugin-thumbnail
+ '@embedpdf/plugin-tiling':
+ specifier: workspace:*
+ version: link:../../packages/plugin-tiling
+ '@embedpdf/plugin-viewport':
+ specifier: workspace:*
+ version: link:../../packages/plugin-viewport
+ '@embedpdf/plugin-zoom':
+ specifier: workspace:*
+ version: link:../../packages/plugin-zoom
+ '@embedpdf/utils':
+ specifier: workspace:*
+ version: link:../../packages/utils
+ '@quasar/extras':
+ specifier: ^1.17.0
+ version: 1.17.0
+ quasar:
+ specifier: ^2.16.0
+ version: 2.18.5
+ vue:
+ specifier: ^3.5.0
+ version: 3.5.17(typescript@5.9.3)
+ devDependencies:
+ '@quasar/vite-plugin':
+ specifier: ^1.10.0
+ version: 1.10.0(@vitejs/plugin-vue@5.2.4(vite@6.3.5(@types/node@22.16.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.39.0)(yaml@2.8.0))(vue@3.5.17(typescript@5.9.3)))(quasar@2.18.5)(vite@6.3.5(@types/node@22.16.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.39.0)(yaml@2.8.0))(vue@3.5.17(typescript@5.9.3))
+ '@tsconfig/node22':
+ specifier: ^22.0.0
+ version: 22.0.2
+ '@types/node':
+ specifier: ^22.0.0
+ version: 22.16.4
+ '@vitejs/plugin-vue':
+ specifier: ^5.2.3
+ version: 5.2.4(vite@6.3.5(@types/node@22.16.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.39.0)(yaml@2.8.0))(vue@3.5.17(typescript@5.9.3))
+ '@vue/tsconfig':
+ specifier: ^0.7.0
+ version: 0.7.0(typescript@5.9.3)(vue@3.5.17(typescript@5.9.3))
+ npm-run-all2:
+ specifier: ^7.0.2
+ version: 7.0.2
+ sass-embedded:
+ specifier: ^1.89.2
+ version: 1.91.0
+ typescript:
+ specifier: ^5.7.3
+ version: 5.9.3
+ vite:
+ specifier: ^6.3.5
+ version: 6.3.5(@types/node@22.16.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.39.0)(yaml@2.8.0)
+ vue-tsc:
+ specifier: ^3.0.1
+ version: 3.0.6(typescript@5.9.3)
+
examples/vue-tailwind:
dependencies:
'@embedpdf/core':
@@ -3790,6 +3899,18 @@ packages:
'@popperjs/core@2.11.8':
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
+ '@quasar/extras@1.17.0':
+ resolution: {integrity: sha512-KqAHdSJfIDauiR1nJ8rqHWT0diqD0QradZKoVIZJAilHAvgwyPIY7MbyR2z4RIMkUIMUSqBZcbshMpEw+9A30w==}
+
+ '@quasar/vite-plugin@1.10.0':
+ resolution: {integrity: sha512-4PJoTclz4ZjAfyqe0+hlkKcFJt0e2NX3Ac3hy8ILqUPdtZ24nCo5/xEHvTxZGBQMKRPwwePbO8CVs4n9EKJEug==}
+ engines: {node: '>=20'}
+ peerDependencies:
+ '@vitejs/plugin-vue': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0
+ quasar: ^2.16.0
+ vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
+ vue: ^3.0.0
+
'@react-aria/focus@3.19.1':
resolution: {integrity: sha512-bix9Bu1Ue7RPcYmjwcjhB14BMu2qzfJ3tMQLqDc9pweJA66nOw8DThy3IfVr8Z7j2PHktOLf9kcbiZpydKHqzg==}
peerDependencies:
@@ -9000,6 +9121,10 @@ packages:
quansync@0.2.10:
resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==}
+ quasar@2.18.5:
+ resolution: {integrity: sha512-5ItDSsNjqBVRrC7SqcdvT1F5mghVyJ/KmaWNwnaT5mM91a7gWpT/d7wTCIFxxDbWLZdkHKI+cpdudEqnfcSw9A==}
+ engines: {node: '>= 10.18.1', npm: '>= 6.13.4', yarn: '>= 1.21.1'}
+
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@@ -12947,6 +13072,15 @@ snapshots:
'@popperjs/core@2.11.8': {}
+ '@quasar/extras@1.17.0': {}
+
+ '@quasar/vite-plugin@1.10.0(@vitejs/plugin-vue@5.2.4(vite@6.3.5(@types/node@22.16.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.39.0)(yaml@2.8.0))(vue@3.5.17(typescript@5.9.3)))(quasar@2.18.5)(vite@6.3.5(@types/node@22.16.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.39.0)(yaml@2.8.0))(vue@3.5.17(typescript@5.9.3))':
+ dependencies:
+ '@vitejs/plugin-vue': 5.2.4(vite@6.3.5(@types/node@22.16.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.39.0)(yaml@2.8.0))(vue@3.5.17(typescript@5.9.3))
+ quasar: 2.18.5
+ vite: 6.3.5(@types/node@22.16.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.39.0)(yaml@2.8.0)
+ vue: 3.5.17(typescript@5.9.3)
+
'@react-aria/focus@3.19.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-aria/interactions': 3.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -14222,6 +14356,11 @@ snapshots:
typescript: 5.9.2
vue: 3.5.17(typescript@5.9.2)
+ '@vue/tsconfig@0.7.0(typescript@5.9.3)(vue@3.5.17(typescript@5.9.3))':
+ optionalDependencies:
+ typescript: 5.9.3
+ vue: 3.5.17(typescript@5.9.3)
+
'@vuetify/loader-shared@2.1.1(vue@3.5.17(typescript@5.9.2))(vuetify@3.9.5)':
dependencies:
upath: 2.0.1
@@ -19441,6 +19580,8 @@ snapshots:
quansync@0.2.10: {}
+ quasar@2.18.5: {}
+
queue-microtask@1.2.3: {}
railroad-diagrams@1.0.0: {}
@@ -21262,6 +21403,12 @@ snapshots:
'@vue/language-core': 3.0.6(typescript@5.9.2)
typescript: 5.9.2
+ vue-tsc@3.0.6(typescript@5.9.3):
+ dependencies:
+ '@volar/typescript': 2.4.23
+ '@vue/language-core': 3.0.6(typescript@5.9.3)
+ typescript: 5.9.3
+
vue@3.5.17(typescript@5.7.3):
dependencies:
'@vue/compiler-dom': 3.5.17