@embedpdf/plugin-print 1.0.17 → 1.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),r=require("@embedpdf/plugin-render"),t=require("@embedpdf/models"),n="print",a={id:n,name:"Print Plugin",version:"1.0.0",provides:["print"],requires:["render"],optional:[],defaultConfig:{enabled:!0}};var i=(e=>(e.Normal="normal",e.High="high",e))(i||{}),s=(e=>(e.Current="current",e.All="all",e.Custom="custom",e))(s||{});const o=class extends e.BasePlugin{constructor(e,t,n){var a;super(e,t),this.config=n,this.renderCapability=null==(a=this.registry.getPlugin(r.RenderPlugin.id))?void 0:a.provides()}async initialize(e){}buildCapability(){return{preparePrint:this.preparePrint.bind(this),parsePageRange:this.parsePageRange.bind(this)}}async preparePrint(e,r,t){var n;const a=this.coreState.core;if(!a.document)throw new Error("No document loaded");const i=this.getPagesToPrint(e,a.document.pages.length),s=i.length,o=(null==(n=this.config)?void 0:n.batchSize)||3;null==r||r({current:0,total:s,status:"preparing",message:`Preparing to render ${s} page${1!==s?"s":""}...`});const l=this.getScaleFactor(e.quality);for(let g=0;g<i.length;g+=o){const n=Math.min(g+o,i.length),a=i.slice(g,n).map((async(n,a)=>{null==r||r({current:g+a,total:s,status:"rendering",message:`Rendering page ${n+1}...`});const i=await this.renderPage(n,l,1,e.includeAnnotations);null==t||t({pageIndex:n,blob:i})}));await Promise.all(a)}null==r||r({current:s,total:s,status:"complete",message:"All pages rendered successfully"})}async renderPage(e,r,n,a){return new Promise(((i,s)=>{this.renderCapability.renderPage({pageIndex:e,scaleFactor:r,dpr:n,rotation:t.Rotation.Degree0,options:{withAnnotations:a}}).wait((e=>i(e)),(r=>s(new Error(`Failed to render page ${e+1}: ${r.reason.message||"Unknown error"}`))))}))}getScaleFactor(e){switch(e){case i.High:return 1.5;case i.Normal:default:return 1}}getPagesToPrint(e,r){const{pageRange:t}=e;switch(t.type){case s.Current:return void 0!==t.currentPage?[t.currentPage]:[0];case s.All:return Array.from({length:r},((e,r)=>r));case s.Custom:return t.pages?t.pages.filter((e=>e>=0&&e<r)).sort(((e,r)=>e-r)):[0];default:return[0]}}parsePageRange(e){var r;try{const t=(null==(r=this.coreState.core.document)?void 0:r.pages.length)||0,n=[],a=e.split(",").map((e=>e.trim()));for(const e of a)if(e.includes("-")){const[r,a]=e.split("-").map((e=>parseInt(e.trim())));if(isNaN(r)||isNaN(a))return{pages:[],isValid:!1,error:`Invalid range: ${e}`};if(r>a)return{pages:[],isValid:!1,error:`Invalid range: ${e} (start > end)`};for(let e=r;e<=a;e++)e>=1&&e<=t&&n.push(e-1)}else{const r=parseInt(e);if(isNaN(r))return{pages:[],isValid:!1,error:`Invalid page number: ${e}`};r>=1&&r<=t&&n.push(r-1)}return{pages:[...new Set(n)].sort(((e,r)=>e-r)),isValid:!0}}catch(t){return{pages:[],isValid:!1,error:`Parsing error: ${t instanceof Error?t.message:"Unknown error"}`}}}};o.id="print";let l=o;const g={manifest:a,create:(e,r,t)=>new l(n,e,t),reducer:()=>{},initialState:{}};exports.PRINT_PLUGIN_ID=n,exports.PageRangeType=s,exports.PrintPlugin=l,exports.PrintPluginPackage=g,exports.PrintQuality=i,exports.manifest=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),r=require("@embedpdf/plugin-render"),t="print",n={id:t,name:"Print Plugin",version:"1.0.0",provides:["print"],requires:["render"],optional:[],defaultConfig:{enabled:!0}};var a=(e=>(e.Normal="normal",e.High="high",e))(a||{}),s=(e=>(e.Current="current",e.All="all",e.Custom="custom",e))(s||{});const i=class extends e.BasePlugin{constructor(e,t,n){var a;super(e,t),this.config=n,this.renderCapability=null==(a=this.registry.getPlugin(r.RenderPlugin.id))?void 0:a.provides()}async initialize(e){}buildCapability(){return{preparePrint:this.preparePrint.bind(this),parsePageRange:this.parsePageRange.bind(this)}}async preparePrint(e,r,t){var n;const a=this.coreState.core;if(!a.document)throw new Error("No document loaded");const s=this.getPagesToPrint(e,a.document.pages.length),i=s.length,o=(null==(n=this.config)?void 0:n.batchSize)||3;null==r||r({current:0,total:i,status:"preparing",message:`Preparing to render ${i} page${1!==i?"s":""}...`});const l=this.getScaleFactor(e.quality);for(let g=0;g<s.length;g+=o){const n=Math.min(g+o,s.length),a=s.slice(g,n).map((async(n,a)=>{null==r||r({current:g+a,total:i,status:"rendering",message:`Rendering page ${n+1}...`});const s=await this.renderPage(n,{scaleFactor:l,dpr:1,withAnnotations:e.includeAnnotations});null==t||t({pageIndex:n,blob:s})}));await Promise.all(a)}null==r||r({current:i,total:i,status:"complete",message:"All pages rendered successfully"})}async renderPage(e,r){return new Promise(((t,n)=>{this.renderCapability.renderPage({pageIndex:e,options:r}).wait((e=>t(e)),(r=>n(new Error(`Failed to render page ${e+1}: ${r.reason.message||"Unknown error"}`))))}))}getScaleFactor(e){switch(e){case a.High:return 1.5;case a.Normal:default:return 1}}getPagesToPrint(e,r){const{pageRange:t}=e;switch(t.type){case s.Current:return void 0!==t.currentPage?[t.currentPage]:[0];case s.All:return Array.from({length:r},((e,r)=>r));case s.Custom:return t.pages?t.pages.filter((e=>e>=0&&e<r)).sort(((e,r)=>e-r)):[0];default:return[0]}}parsePageRange(e){var r;try{const t=(null==(r=this.coreState.core.document)?void 0:r.pages.length)||0,n=[],a=e.split(",").map((e=>e.trim()));for(const e of a)if(e.includes("-")){const[r,a]=e.split("-").map((e=>parseInt(e.trim())));if(isNaN(r)||isNaN(a))return{pages:[],isValid:!1,error:`Invalid range: ${e}`};if(r>a)return{pages:[],isValid:!1,error:`Invalid range: ${e} (start > end)`};for(let e=r;e<=a;e++)e>=1&&e<=t&&n.push(e-1)}else{const r=parseInt(e);if(isNaN(r))return{pages:[],isValid:!1,error:`Invalid page number: ${e}`};r>=1&&r<=t&&n.push(r-1)}return{pages:[...new Set(n)].sort(((e,r)=>e-r)),isValid:!0}}catch(t){return{pages:[],isValid:!1,error:`Parsing error: ${t instanceof Error?t.message:"Unknown error"}`}}}};i.id="print";let o=i;const l={manifest:n,create:(e,r)=>new o(t,e,r),reducer:()=>{},initialState:{}};exports.PRINT_PLUGIN_ID=t,exports.PageRangeType=s,exports.PrintPlugin=o,exports.PrintPluginPackage=l,exports.PrintQuality=a,exports.manifest=n;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/lib/manifest.ts","../src/lib/types.ts","../src/lib/print-plugin.ts","../src/lib/index.ts"],"sourcesContent":["import { PluginManifest } from '@embedpdf/core';\nimport { PrintPluginConfig } from './types';\n\nexport const PRINT_PLUGIN_ID = 'print';\n\nexport const manifest: PluginManifest<PrintPluginConfig> = {\n id: PRINT_PLUGIN_ID,\n name: 'Print Plugin',\n version: '1.0.0',\n provides: ['print'],\n requires: ['render'],\n optional: [],\n defaultConfig: {\n enabled: true,\n },\n};\n","import { BasePluginConfig } from '@embedpdf/core';\n\nexport interface PrintPluginConfig extends BasePluginConfig {\n defaultQuality?: PrintQuality;\n defaultIncludeAnnotations?: boolean;\n batchSize?: number;\n}\n\nexport enum PrintQuality {\n Normal = 'normal',\n High = 'high',\n}\n\nexport enum PageRangeType {\n Current = 'current',\n All = 'all',\n Custom = 'custom',\n}\n\nexport interface PageRangeCurrent {\n type: PageRangeType.Current;\n currentPage: number;\n}\n\nexport interface PageRangeAll {\n type: PageRangeType.All;\n}\n\nexport interface PageRangeCustom {\n type: PageRangeType.Custom;\n pages: number[];\n}\n\nexport type PageRange = PageRangeCurrent | PageRangeAll | PageRangeCustom;\n\nexport interface PrintOptions {\n pageRange: PageRange;\n includeAnnotations: boolean;\n quality: PrintQuality;\n}\n\nexport interface PrintProgress {\n current: number;\n total: number;\n status: 'preparing' | 'rendering' | 'complete' | 'error';\n message?: string;\n}\n\nexport interface PrintData {\n blobs: Blob[];\n options: PrintOptions;\n totalPages: number;\n}\n\nexport interface ParsedPageRange {\n pages: number[];\n isValid: boolean;\n error?: string;\n}\n\nexport interface PrintPageResult {\n pageIndex: number;\n blob: Blob;\n}\n\nexport interface PrintCapability {\n preparePrint: (\n options: PrintOptions,\n onProgress?: (progress: PrintProgress) => void,\n onPageReady?: (result: PrintPageResult) => void,\n ) => Promise<void>;\n parsePageRange: (rangeString: string) => ParsedPageRange;\n}\n","import { BasePlugin, PluginRegistry } from '@embedpdf/core';\nimport { RenderCapability, RenderPlugin } from '@embedpdf/plugin-render';\n\nimport {\n PageRangeType,\n ParsedPageRange,\n PrintOptions,\n PrintPageResult,\n PrintPluginConfig,\n PrintProgress,\n PrintQuality,\n} from './types';\nimport { PrintCapability } from './types';\nimport { Rotation } from '@embedpdf/models';\n\nexport class PrintPlugin extends BasePlugin<PrintPluginConfig, PrintCapability> {\n static readonly id = 'print' as const;\n\n private readonly renderCapability: RenderCapability;\n private readonly config: PrintPluginConfig;\n\n constructor(id: string, registry: PluginRegistry, config: PrintPluginConfig) {\n super(id, registry);\n\n this.config = config;\n this.renderCapability = this.registry.getPlugin<RenderPlugin>(RenderPlugin.id)?.provides()!;\n }\n\n async initialize(_config: PrintPluginConfig): Promise<void> {}\n\n protected buildCapability(): PrintCapability {\n return {\n preparePrint: this.preparePrint.bind(this),\n parsePageRange: this.parsePageRange.bind(this),\n };\n }\n\n private async preparePrint(\n options: PrintOptions,\n onProgress?: (progress: PrintProgress) => void,\n onPageReady?: (result: PrintPageResult) => void,\n ): Promise<void> {\n const coreState = this.coreState.core;\n\n if (!coreState.document) {\n throw new Error('No document loaded');\n }\n\n const pagesToPrint = this.getPagesToPrint(options, coreState.document.pages.length);\n const totalPages = pagesToPrint.length;\n const batchSize = this.config?.batchSize || 3; // Render 3 pages concurrently by default\n\n onProgress?.({\n current: 0,\n total: totalPages,\n status: 'preparing',\n message: `Preparing to render ${totalPages} page${totalPages !== 1 ? 's' : ''}...`,\n });\n\n const scaleFactor = this.getScaleFactor(options.quality);\n const dpr = 1;\n\n // Process pages in batches to avoid memory issues\n for (let batchStart = 0; batchStart < pagesToPrint.length; batchStart += batchSize) {\n const batchEnd = Math.min(batchStart + batchSize, pagesToPrint.length);\n const batch = pagesToPrint.slice(batchStart, batchEnd);\n\n // Render batch concurrently\n const batchPromises = batch.map(async (pageIndex, batchIndex) => {\n const overallIndex = batchStart + batchIndex;\n\n onProgress?.({\n current: overallIndex,\n total: totalPages,\n status: 'rendering',\n message: `Rendering page ${pageIndex + 1}...`,\n });\n\n const blob = await this.renderPage(pageIndex, scaleFactor, dpr, options.includeAnnotations);\n\n // Send page ready immediately after rendering\n onPageReady?.({\n pageIndex,\n blob,\n });\n\n return;\n });\n\n // Wait for batch to complete\n await Promise.all(batchPromises);\n }\n\n onProgress?.({\n current: totalPages,\n total: totalPages,\n status: 'complete',\n message: 'All pages rendered successfully',\n });\n }\n\n private async renderPage(\n pageIndex: number,\n scaleFactor: number,\n dpr: number,\n withAnnotations: boolean,\n ): Promise<Blob> {\n return new Promise((resolve, reject) => {\n const renderTask = this.renderCapability.renderPage({\n pageIndex,\n scaleFactor,\n dpr,\n rotation: Rotation.Degree0,\n options: {\n withAnnotations,\n },\n });\n\n renderTask.wait(\n (blob) => resolve(blob),\n (error) =>\n reject(\n new Error(\n `Failed to render page ${pageIndex + 1}: ${error.reason.message || 'Unknown error'}`,\n ),\n ),\n );\n });\n }\n\n private getScaleFactor(quality: PrintQuality): number {\n switch (quality) {\n case PrintQuality.High:\n return 1.5; // Higher resolution for better print quality\n case PrintQuality.Normal:\n default:\n return 1; // Standard print resolution\n }\n }\n\n private getPagesToPrint(options: PrintOptions, totalPages: number): number[] {\n const { pageRange } = options;\n\n switch (pageRange.type) {\n case PageRangeType.Current:\n return pageRange.currentPage !== undefined ? [pageRange.currentPage] : [0];\n\n case PageRangeType.All:\n return Array.from({ length: totalPages }, (_, i) => i);\n\n case PageRangeType.Custom:\n if (!pageRange.pages) return [0];\n return pageRange.pages\n .filter((page) => page >= 0 && page < totalPages)\n .sort((a, b) => a - b);\n\n default:\n return [0];\n }\n }\n\n private parsePageRange(rangeString: string): ParsedPageRange {\n try {\n const totalPages = this.coreState.core.document?.pages.length || 0;\n const pages: number[] = [];\n const parts = rangeString.split(',').map((s) => s.trim());\n\n for (const part of parts) {\n if (part.includes('-')) {\n // Handle range like \"5-10\"\n const [start, end] = part.split('-').map((s) => parseInt(s.trim()));\n\n if (isNaN(start) || isNaN(end)) {\n return { pages: [], isValid: false, error: `Invalid range: ${part}` };\n }\n\n if (start > end) {\n return { pages: [], isValid: false, error: `Invalid range: ${part} (start > end)` };\n }\n\n for (let i = start; i <= end; i++) {\n if (i >= 1 && i <= totalPages) {\n pages.push(i - 1); // Convert to 0-based index\n }\n }\n } else {\n // Handle single page\n const pageNum = parseInt(part);\n\n if (isNaN(pageNum)) {\n return { pages: [], isValid: false, error: `Invalid page number: ${part}` };\n }\n\n if (pageNum >= 1 && pageNum <= totalPages) {\n pages.push(pageNum - 1); // Convert to 0-based index\n }\n }\n }\n\n // Remove duplicates and sort\n const uniquePages = [...new Set(pages)].sort((a, b) => a - b);\n\n return {\n pages: uniquePages,\n isValid: true,\n };\n } catch (error) {\n return {\n pages: [],\n isValid: false,\n error: `Parsing error: ${error instanceof Error ? error.message : 'Unknown error'}`,\n };\n }\n }\n}\n","import { PluginPackage } from '@embedpdf/core';\nimport { manifest, PRINT_PLUGIN_ID } from './manifest';\nimport { PrintPluginConfig } from './types';\nimport { PrintPlugin } from './print-plugin';\n\nexport const PrintPluginPackage: PluginPackage<PrintPlugin, PrintPluginConfig> = {\n manifest,\n create: (registry, _engine, config) => new PrintPlugin(PRINT_PLUGIN_ID, registry, config),\n reducer: () => {},\n initialState: {},\n};\n\nexport * from './print-plugin';\nexport * from './types';\nexport * from './manifest';\n"],"names":["PRINT_PLUGIN_ID","manifest","id","name","version","provides","requires","optional","defaultConfig","enabled","PrintQuality","PageRangeType","_PrintPlugin","BasePlugin","constructor","registry","config","super","this","renderCapability","_a","getPlugin","RenderPlugin","initialize","_config","buildCapability","preparePrint","bind","parsePageRange","options","onProgress","onPageReady","coreState","core","document","Error","pagesToPrint","getPagesToPrint","pages","length","totalPages","batchSize","current","total","status","message","scaleFactor","getScaleFactor","quality","batchStart","batchEnd","Math","min","batchPromises","slice","map","async","pageIndex","batchIndex","blob","renderPage","includeAnnotations","Promise","all","dpr","withAnnotations","resolve","reject","rotation","Rotation","Degree0","wait","error","reason","High","Normal","pageRange","type","Current","currentPage","All","Array","from","_","i","Custom","filter","page","sort","a","b","rangeString","parts","split","s","trim","part","includes","start","end","parseInt","isNaN","isValid","push","pageNum","Set","PrintPlugin","PrintPluginPackage","create","_engine","reducer","initialState"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/lib/manifest.ts","../src/lib/types.ts","../src/lib/print-plugin.ts","../src/lib/index.ts"],"sourcesContent":["import { PluginManifest } from '@embedpdf/core';\nimport { PrintPluginConfig } from './types';\n\nexport const PRINT_PLUGIN_ID = 'print';\n\nexport const manifest: PluginManifest<PrintPluginConfig> = {\n id: PRINT_PLUGIN_ID,\n name: 'Print Plugin',\n version: '1.0.0',\n provides: ['print'],\n requires: ['render'],\n optional: [],\n defaultConfig: {\n enabled: true,\n },\n};\n","import { BasePluginConfig } from '@embedpdf/core';\n\nexport interface PrintPluginConfig extends BasePluginConfig {\n defaultQuality?: PrintQuality;\n defaultIncludeAnnotations?: boolean;\n batchSize?: number;\n}\n\nexport enum PrintQuality {\n Normal = 'normal',\n High = 'high',\n}\n\nexport enum PageRangeType {\n Current = 'current',\n All = 'all',\n Custom = 'custom',\n}\n\nexport interface PageRangeCurrent {\n type: PageRangeType.Current;\n currentPage: number;\n}\n\nexport interface PageRangeAll {\n type: PageRangeType.All;\n}\n\nexport interface PageRangeCustom {\n type: PageRangeType.Custom;\n pages: number[];\n}\n\nexport type PageRange = PageRangeCurrent | PageRangeAll | PageRangeCustom;\n\nexport interface PrintOptions {\n pageRange: PageRange;\n includeAnnotations: boolean;\n quality: PrintQuality;\n}\n\nexport interface PrintProgress {\n current: number;\n total: number;\n status: 'preparing' | 'rendering' | 'complete' | 'error';\n message?: string;\n}\n\nexport interface PrintData {\n blobs: Blob[];\n options: PrintOptions;\n totalPages: number;\n}\n\nexport interface ParsedPageRange {\n pages: number[];\n isValid: boolean;\n error?: string;\n}\n\nexport interface PrintPageResult {\n pageIndex: number;\n blob: Blob;\n}\n\nexport interface PrintCapability {\n preparePrint: (\n options: PrintOptions,\n onProgress?: (progress: PrintProgress) => void,\n onPageReady?: (result: PrintPageResult) => void,\n ) => Promise<void>;\n parsePageRange: (rangeString: string) => ParsedPageRange;\n}\n","import { BasePlugin, PluginRegistry } from '@embedpdf/core';\nimport { RenderCapability, RenderPlugin } from '@embedpdf/plugin-render';\n\nimport {\n PageRangeType,\n ParsedPageRange,\n PrintOptions,\n PrintPageResult,\n PrintPluginConfig,\n PrintProgress,\n PrintQuality,\n} from './types';\nimport { PrintCapability } from './types';\nimport { PdfRenderPageOptions, Rotation } from '@embedpdf/models';\n\nexport class PrintPlugin extends BasePlugin<PrintPluginConfig, PrintCapability> {\n static readonly id = 'print' as const;\n\n private readonly renderCapability: RenderCapability;\n private readonly config: PrintPluginConfig;\n\n constructor(id: string, registry: PluginRegistry, config: PrintPluginConfig) {\n super(id, registry);\n\n this.config = config;\n this.renderCapability = this.registry.getPlugin<RenderPlugin>(RenderPlugin.id)?.provides()!;\n }\n\n async initialize(_config: PrintPluginConfig): Promise<void> {}\n\n protected buildCapability(): PrintCapability {\n return {\n preparePrint: this.preparePrint.bind(this),\n parsePageRange: this.parsePageRange.bind(this),\n };\n }\n\n private async preparePrint(\n options: PrintOptions,\n onProgress?: (progress: PrintProgress) => void,\n onPageReady?: (result: PrintPageResult) => void,\n ): Promise<void> {\n const coreState = this.coreState.core;\n\n if (!coreState.document) {\n throw new Error('No document loaded');\n }\n\n const pagesToPrint = this.getPagesToPrint(options, coreState.document.pages.length);\n const totalPages = pagesToPrint.length;\n const batchSize = this.config?.batchSize || 3; // Render 3 pages concurrently by default\n\n onProgress?.({\n current: 0,\n total: totalPages,\n status: 'preparing',\n message: `Preparing to render ${totalPages} page${totalPages !== 1 ? 's' : ''}...`,\n });\n\n const scaleFactor = this.getScaleFactor(options.quality);\n const dpr = 1;\n\n // Process pages in batches to avoid memory issues\n for (let batchStart = 0; batchStart < pagesToPrint.length; batchStart += batchSize) {\n const batchEnd = Math.min(batchStart + batchSize, pagesToPrint.length);\n const batch = pagesToPrint.slice(batchStart, batchEnd);\n\n // Render batch concurrently\n const batchPromises = batch.map(async (pageIndex, batchIndex) => {\n const overallIndex = batchStart + batchIndex;\n\n onProgress?.({\n current: overallIndex,\n total: totalPages,\n status: 'rendering',\n message: `Rendering page ${pageIndex + 1}...`,\n });\n\n const blob = await this.renderPage(pageIndex, {\n scaleFactor,\n dpr,\n withAnnotations: options.includeAnnotations,\n });\n\n // Send page ready immediately after rendering\n onPageReady?.({\n pageIndex,\n blob,\n });\n\n return;\n });\n\n // Wait for batch to complete\n await Promise.all(batchPromises);\n }\n\n onProgress?.({\n current: totalPages,\n total: totalPages,\n status: 'complete',\n message: 'All pages rendered successfully',\n });\n }\n\n private async renderPage(pageIndex: number, options: PdfRenderPageOptions): Promise<Blob> {\n return new Promise((resolve, reject) => {\n const renderTask = this.renderCapability.renderPage({\n pageIndex,\n options,\n });\n\n renderTask.wait(\n (blob) => resolve(blob),\n (error) =>\n reject(\n new Error(\n `Failed to render page ${pageIndex + 1}: ${error.reason.message || 'Unknown error'}`,\n ),\n ),\n );\n });\n }\n\n private getScaleFactor(quality: PrintQuality): number {\n switch (quality) {\n case PrintQuality.High:\n return 1.5; // Higher resolution for better print quality\n case PrintQuality.Normal:\n default:\n return 1; // Standard print resolution\n }\n }\n\n private getPagesToPrint(options: PrintOptions, totalPages: number): number[] {\n const { pageRange } = options;\n\n switch (pageRange.type) {\n case PageRangeType.Current:\n return pageRange.currentPage !== undefined ? [pageRange.currentPage] : [0];\n\n case PageRangeType.All:\n return Array.from({ length: totalPages }, (_, i) => i);\n\n case PageRangeType.Custom:\n if (!pageRange.pages) return [0];\n return pageRange.pages\n .filter((page) => page >= 0 && page < totalPages)\n .sort((a, b) => a - b);\n\n default:\n return [0];\n }\n }\n\n private parsePageRange(rangeString: string): ParsedPageRange {\n try {\n const totalPages = this.coreState.core.document?.pages.length || 0;\n const pages: number[] = [];\n const parts = rangeString.split(',').map((s) => s.trim());\n\n for (const part of parts) {\n if (part.includes('-')) {\n // Handle range like \"5-10\"\n const [start, end] = part.split('-').map((s) => parseInt(s.trim()));\n\n if (isNaN(start) || isNaN(end)) {\n return { pages: [], isValid: false, error: `Invalid range: ${part}` };\n }\n\n if (start > end) {\n return { pages: [], isValid: false, error: `Invalid range: ${part} (start > end)` };\n }\n\n for (let i = start; i <= end; i++) {\n if (i >= 1 && i <= totalPages) {\n pages.push(i - 1); // Convert to 0-based index\n }\n }\n } else {\n // Handle single page\n const pageNum = parseInt(part);\n\n if (isNaN(pageNum)) {\n return { pages: [], isValid: false, error: `Invalid page number: ${part}` };\n }\n\n if (pageNum >= 1 && pageNum <= totalPages) {\n pages.push(pageNum - 1); // Convert to 0-based index\n }\n }\n }\n\n // Remove duplicates and sort\n const uniquePages = [...new Set(pages)].sort((a, b) => a - b);\n\n return {\n pages: uniquePages,\n isValid: true,\n };\n } catch (error) {\n return {\n pages: [],\n isValid: false,\n error: `Parsing error: ${error instanceof Error ? error.message : 'Unknown error'}`,\n };\n }\n }\n}\n","import { PluginPackage } from '@embedpdf/core';\nimport { manifest, PRINT_PLUGIN_ID } from './manifest';\nimport { PrintPluginConfig } from './types';\nimport { PrintPlugin } from './print-plugin';\n\nexport const PrintPluginPackage: PluginPackage<PrintPlugin, PrintPluginConfig> = {\n manifest,\n create: (registry, config) => new PrintPlugin(PRINT_PLUGIN_ID, registry, config),\n reducer: () => {},\n initialState: {},\n};\n\nexport * from './print-plugin';\nexport * from './types';\nexport * from './manifest';\n"],"names":["PRINT_PLUGIN_ID","manifest","id","name","version","provides","requires","optional","defaultConfig","enabled","PrintQuality","PageRangeType","_PrintPlugin","BasePlugin","constructor","registry","config","super","this","renderCapability","_a","getPlugin","RenderPlugin","initialize","_config","buildCapability","preparePrint","bind","parsePageRange","options","onProgress","onPageReady","coreState","core","document","Error","pagesToPrint","getPagesToPrint","pages","length","totalPages","batchSize","current","total","status","message","scaleFactor","getScaleFactor","quality","batchStart","batchEnd","Math","min","batchPromises","slice","map","async","pageIndex","batchIndex","blob","renderPage","dpr","withAnnotations","includeAnnotations","Promise","all","resolve","reject","wait","error","reason","High","Normal","pageRange","type","Current","currentPage","All","Array","from","_","i","Custom","filter","page","sort","a","b","rangeString","parts","split","s","trim","part","includes","start","end","parseInt","isNaN","isValid","push","pageNum","Set","PrintPlugin","PrintPluginPackage","create","reducer","initialState"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import { BasePlugin } from "@embedpdf/core";
2
2
  import { RenderPlugin } from "@embedpdf/plugin-render";
3
- import { Rotation } from "@embedpdf/models";
4
3
  const PRINT_PLUGIN_ID = "print";
5
4
  const manifest = {
6
5
  id: PRINT_PLUGIN_ID,
@@ -67,7 +66,11 @@ const _PrintPlugin = class _PrintPlugin extends BasePlugin {
67
66
  status: "rendering",
68
67
  message: `Rendering page ${pageIndex + 1}...`
69
68
  });
70
- const blob = await this.renderPage(pageIndex, scaleFactor, dpr, options.includeAnnotations);
69
+ const blob = await this.renderPage(pageIndex, {
70
+ scaleFactor,
71
+ dpr,
72
+ withAnnotations: options.includeAnnotations
73
+ });
71
74
  onPageReady == null ? void 0 : onPageReady({
72
75
  pageIndex,
73
76
  blob
@@ -83,16 +86,11 @@ const _PrintPlugin = class _PrintPlugin extends BasePlugin {
83
86
  message: "All pages rendered successfully"
84
87
  });
85
88
  }
86
- async renderPage(pageIndex, scaleFactor, dpr, withAnnotations) {
89
+ async renderPage(pageIndex, options) {
87
90
  return new Promise((resolve, reject) => {
88
91
  const renderTask = this.renderCapability.renderPage({
89
92
  pageIndex,
90
- scaleFactor,
91
- dpr,
92
- rotation: Rotation.Degree0,
93
- options: {
94
- withAnnotations
95
- }
93
+ options
96
94
  });
97
95
  renderTask.wait(
98
96
  (blob) => resolve(blob),
@@ -176,7 +174,7 @@ _PrintPlugin.id = "print";
176
174
  let PrintPlugin = _PrintPlugin;
177
175
  const PrintPluginPackage = {
178
176
  manifest,
179
- create: (registry, _engine, config) => new PrintPlugin(PRINT_PLUGIN_ID, registry, config),
177
+ create: (registry, config) => new PrintPlugin(PRINT_PLUGIN_ID, registry, config),
180
178
  reducer: () => {
181
179
  },
182
180
  initialState: {}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/lib/manifest.ts","../src/lib/types.ts","../src/lib/print-plugin.ts","../src/lib/index.ts"],"sourcesContent":["import { PluginManifest } from '@embedpdf/core';\nimport { PrintPluginConfig } from './types';\n\nexport const PRINT_PLUGIN_ID = 'print';\n\nexport const manifest: PluginManifest<PrintPluginConfig> = {\n id: PRINT_PLUGIN_ID,\n name: 'Print Plugin',\n version: '1.0.0',\n provides: ['print'],\n requires: ['render'],\n optional: [],\n defaultConfig: {\n enabled: true,\n },\n};\n","import { BasePluginConfig } from '@embedpdf/core';\n\nexport interface PrintPluginConfig extends BasePluginConfig {\n defaultQuality?: PrintQuality;\n defaultIncludeAnnotations?: boolean;\n batchSize?: number;\n}\n\nexport enum PrintQuality {\n Normal = 'normal',\n High = 'high',\n}\n\nexport enum PageRangeType {\n Current = 'current',\n All = 'all',\n Custom = 'custom',\n}\n\nexport interface PageRangeCurrent {\n type: PageRangeType.Current;\n currentPage: number;\n}\n\nexport interface PageRangeAll {\n type: PageRangeType.All;\n}\n\nexport interface PageRangeCustom {\n type: PageRangeType.Custom;\n pages: number[];\n}\n\nexport type PageRange = PageRangeCurrent | PageRangeAll | PageRangeCustom;\n\nexport interface PrintOptions {\n pageRange: PageRange;\n includeAnnotations: boolean;\n quality: PrintQuality;\n}\n\nexport interface PrintProgress {\n current: number;\n total: number;\n status: 'preparing' | 'rendering' | 'complete' | 'error';\n message?: string;\n}\n\nexport interface PrintData {\n blobs: Blob[];\n options: PrintOptions;\n totalPages: number;\n}\n\nexport interface ParsedPageRange {\n pages: number[];\n isValid: boolean;\n error?: string;\n}\n\nexport interface PrintPageResult {\n pageIndex: number;\n blob: Blob;\n}\n\nexport interface PrintCapability {\n preparePrint: (\n options: PrintOptions,\n onProgress?: (progress: PrintProgress) => void,\n onPageReady?: (result: PrintPageResult) => void,\n ) => Promise<void>;\n parsePageRange: (rangeString: string) => ParsedPageRange;\n}\n","import { BasePlugin, PluginRegistry } from '@embedpdf/core';\nimport { RenderCapability, RenderPlugin } from '@embedpdf/plugin-render';\n\nimport {\n PageRangeType,\n ParsedPageRange,\n PrintOptions,\n PrintPageResult,\n PrintPluginConfig,\n PrintProgress,\n PrintQuality,\n} from './types';\nimport { PrintCapability } from './types';\nimport { Rotation } from '@embedpdf/models';\n\nexport class PrintPlugin extends BasePlugin<PrintPluginConfig, PrintCapability> {\n static readonly id = 'print' as const;\n\n private readonly renderCapability: RenderCapability;\n private readonly config: PrintPluginConfig;\n\n constructor(id: string, registry: PluginRegistry, config: PrintPluginConfig) {\n super(id, registry);\n\n this.config = config;\n this.renderCapability = this.registry.getPlugin<RenderPlugin>(RenderPlugin.id)?.provides()!;\n }\n\n async initialize(_config: PrintPluginConfig): Promise<void> {}\n\n protected buildCapability(): PrintCapability {\n return {\n preparePrint: this.preparePrint.bind(this),\n parsePageRange: this.parsePageRange.bind(this),\n };\n }\n\n private async preparePrint(\n options: PrintOptions,\n onProgress?: (progress: PrintProgress) => void,\n onPageReady?: (result: PrintPageResult) => void,\n ): Promise<void> {\n const coreState = this.coreState.core;\n\n if (!coreState.document) {\n throw new Error('No document loaded');\n }\n\n const pagesToPrint = this.getPagesToPrint(options, coreState.document.pages.length);\n const totalPages = pagesToPrint.length;\n const batchSize = this.config?.batchSize || 3; // Render 3 pages concurrently by default\n\n onProgress?.({\n current: 0,\n total: totalPages,\n status: 'preparing',\n message: `Preparing to render ${totalPages} page${totalPages !== 1 ? 's' : ''}...`,\n });\n\n const scaleFactor = this.getScaleFactor(options.quality);\n const dpr = 1;\n\n // Process pages in batches to avoid memory issues\n for (let batchStart = 0; batchStart < pagesToPrint.length; batchStart += batchSize) {\n const batchEnd = Math.min(batchStart + batchSize, pagesToPrint.length);\n const batch = pagesToPrint.slice(batchStart, batchEnd);\n\n // Render batch concurrently\n const batchPromises = batch.map(async (pageIndex, batchIndex) => {\n const overallIndex = batchStart + batchIndex;\n\n onProgress?.({\n current: overallIndex,\n total: totalPages,\n status: 'rendering',\n message: `Rendering page ${pageIndex + 1}...`,\n });\n\n const blob = await this.renderPage(pageIndex, scaleFactor, dpr, options.includeAnnotations);\n\n // Send page ready immediately after rendering\n onPageReady?.({\n pageIndex,\n blob,\n });\n\n return;\n });\n\n // Wait for batch to complete\n await Promise.all(batchPromises);\n }\n\n onProgress?.({\n current: totalPages,\n total: totalPages,\n status: 'complete',\n message: 'All pages rendered successfully',\n });\n }\n\n private async renderPage(\n pageIndex: number,\n scaleFactor: number,\n dpr: number,\n withAnnotations: boolean,\n ): Promise<Blob> {\n return new Promise((resolve, reject) => {\n const renderTask = this.renderCapability.renderPage({\n pageIndex,\n scaleFactor,\n dpr,\n rotation: Rotation.Degree0,\n options: {\n withAnnotations,\n },\n });\n\n renderTask.wait(\n (blob) => resolve(blob),\n (error) =>\n reject(\n new Error(\n `Failed to render page ${pageIndex + 1}: ${error.reason.message || 'Unknown error'}`,\n ),\n ),\n );\n });\n }\n\n private getScaleFactor(quality: PrintQuality): number {\n switch (quality) {\n case PrintQuality.High:\n return 1.5; // Higher resolution for better print quality\n case PrintQuality.Normal:\n default:\n return 1; // Standard print resolution\n }\n }\n\n private getPagesToPrint(options: PrintOptions, totalPages: number): number[] {\n const { pageRange } = options;\n\n switch (pageRange.type) {\n case PageRangeType.Current:\n return pageRange.currentPage !== undefined ? [pageRange.currentPage] : [0];\n\n case PageRangeType.All:\n return Array.from({ length: totalPages }, (_, i) => i);\n\n case PageRangeType.Custom:\n if (!pageRange.pages) return [0];\n return pageRange.pages\n .filter((page) => page >= 0 && page < totalPages)\n .sort((a, b) => a - b);\n\n default:\n return [0];\n }\n }\n\n private parsePageRange(rangeString: string): ParsedPageRange {\n try {\n const totalPages = this.coreState.core.document?.pages.length || 0;\n const pages: number[] = [];\n const parts = rangeString.split(',').map((s) => s.trim());\n\n for (const part of parts) {\n if (part.includes('-')) {\n // Handle range like \"5-10\"\n const [start, end] = part.split('-').map((s) => parseInt(s.trim()));\n\n if (isNaN(start) || isNaN(end)) {\n return { pages: [], isValid: false, error: `Invalid range: ${part}` };\n }\n\n if (start > end) {\n return { pages: [], isValid: false, error: `Invalid range: ${part} (start > end)` };\n }\n\n for (let i = start; i <= end; i++) {\n if (i >= 1 && i <= totalPages) {\n pages.push(i - 1); // Convert to 0-based index\n }\n }\n } else {\n // Handle single page\n const pageNum = parseInt(part);\n\n if (isNaN(pageNum)) {\n return { pages: [], isValid: false, error: `Invalid page number: ${part}` };\n }\n\n if (pageNum >= 1 && pageNum <= totalPages) {\n pages.push(pageNum - 1); // Convert to 0-based index\n }\n }\n }\n\n // Remove duplicates and sort\n const uniquePages = [...new Set(pages)].sort((a, b) => a - b);\n\n return {\n pages: uniquePages,\n isValid: true,\n };\n } catch (error) {\n return {\n pages: [],\n isValid: false,\n error: `Parsing error: ${error instanceof Error ? error.message : 'Unknown error'}`,\n };\n }\n }\n}\n","import { PluginPackage } from '@embedpdf/core';\nimport { manifest, PRINT_PLUGIN_ID } from './manifest';\nimport { PrintPluginConfig } from './types';\nimport { PrintPlugin } from './print-plugin';\n\nexport const PrintPluginPackage: PluginPackage<PrintPlugin, PrintPluginConfig> = {\n manifest,\n create: (registry, _engine, config) => new PrintPlugin(PRINT_PLUGIN_ID, registry, config),\n reducer: () => {},\n initialState: {},\n};\n\nexport * from './print-plugin';\nexport * from './types';\nexport * from './manifest';\n"],"names":["PrintQuality","PageRangeType"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/lib/manifest.ts","../src/lib/types.ts","../src/lib/print-plugin.ts","../src/lib/index.ts"],"sourcesContent":["import { PluginManifest } from '@embedpdf/core';\nimport { PrintPluginConfig } from './types';\n\nexport const PRINT_PLUGIN_ID = 'print';\n\nexport const manifest: PluginManifest<PrintPluginConfig> = {\n id: PRINT_PLUGIN_ID,\n name: 'Print Plugin',\n version: '1.0.0',\n provides: ['print'],\n requires: ['render'],\n optional: [],\n defaultConfig: {\n enabled: true,\n },\n};\n","import { BasePluginConfig } from '@embedpdf/core';\n\nexport interface PrintPluginConfig extends BasePluginConfig {\n defaultQuality?: PrintQuality;\n defaultIncludeAnnotations?: boolean;\n batchSize?: number;\n}\n\nexport enum PrintQuality {\n Normal = 'normal',\n High = 'high',\n}\n\nexport enum PageRangeType {\n Current = 'current',\n All = 'all',\n Custom = 'custom',\n}\n\nexport interface PageRangeCurrent {\n type: PageRangeType.Current;\n currentPage: number;\n}\n\nexport interface PageRangeAll {\n type: PageRangeType.All;\n}\n\nexport interface PageRangeCustom {\n type: PageRangeType.Custom;\n pages: number[];\n}\n\nexport type PageRange = PageRangeCurrent | PageRangeAll | PageRangeCustom;\n\nexport interface PrintOptions {\n pageRange: PageRange;\n includeAnnotations: boolean;\n quality: PrintQuality;\n}\n\nexport interface PrintProgress {\n current: number;\n total: number;\n status: 'preparing' | 'rendering' | 'complete' | 'error';\n message?: string;\n}\n\nexport interface PrintData {\n blobs: Blob[];\n options: PrintOptions;\n totalPages: number;\n}\n\nexport interface ParsedPageRange {\n pages: number[];\n isValid: boolean;\n error?: string;\n}\n\nexport interface PrintPageResult {\n pageIndex: number;\n blob: Blob;\n}\n\nexport interface PrintCapability {\n preparePrint: (\n options: PrintOptions,\n onProgress?: (progress: PrintProgress) => void,\n onPageReady?: (result: PrintPageResult) => void,\n ) => Promise<void>;\n parsePageRange: (rangeString: string) => ParsedPageRange;\n}\n","import { BasePlugin, PluginRegistry } from '@embedpdf/core';\nimport { RenderCapability, RenderPlugin } from '@embedpdf/plugin-render';\n\nimport {\n PageRangeType,\n ParsedPageRange,\n PrintOptions,\n PrintPageResult,\n PrintPluginConfig,\n PrintProgress,\n PrintQuality,\n} from './types';\nimport { PrintCapability } from './types';\nimport { PdfRenderPageOptions, Rotation } from '@embedpdf/models';\n\nexport class PrintPlugin extends BasePlugin<PrintPluginConfig, PrintCapability> {\n static readonly id = 'print' as const;\n\n private readonly renderCapability: RenderCapability;\n private readonly config: PrintPluginConfig;\n\n constructor(id: string, registry: PluginRegistry, config: PrintPluginConfig) {\n super(id, registry);\n\n this.config = config;\n this.renderCapability = this.registry.getPlugin<RenderPlugin>(RenderPlugin.id)?.provides()!;\n }\n\n async initialize(_config: PrintPluginConfig): Promise<void> {}\n\n protected buildCapability(): PrintCapability {\n return {\n preparePrint: this.preparePrint.bind(this),\n parsePageRange: this.parsePageRange.bind(this),\n };\n }\n\n private async preparePrint(\n options: PrintOptions,\n onProgress?: (progress: PrintProgress) => void,\n onPageReady?: (result: PrintPageResult) => void,\n ): Promise<void> {\n const coreState = this.coreState.core;\n\n if (!coreState.document) {\n throw new Error('No document loaded');\n }\n\n const pagesToPrint = this.getPagesToPrint(options, coreState.document.pages.length);\n const totalPages = pagesToPrint.length;\n const batchSize = this.config?.batchSize || 3; // Render 3 pages concurrently by default\n\n onProgress?.({\n current: 0,\n total: totalPages,\n status: 'preparing',\n message: `Preparing to render ${totalPages} page${totalPages !== 1 ? 's' : ''}...`,\n });\n\n const scaleFactor = this.getScaleFactor(options.quality);\n const dpr = 1;\n\n // Process pages in batches to avoid memory issues\n for (let batchStart = 0; batchStart < pagesToPrint.length; batchStart += batchSize) {\n const batchEnd = Math.min(batchStart + batchSize, pagesToPrint.length);\n const batch = pagesToPrint.slice(batchStart, batchEnd);\n\n // Render batch concurrently\n const batchPromises = batch.map(async (pageIndex, batchIndex) => {\n const overallIndex = batchStart + batchIndex;\n\n onProgress?.({\n current: overallIndex,\n total: totalPages,\n status: 'rendering',\n message: `Rendering page ${pageIndex + 1}...`,\n });\n\n const blob = await this.renderPage(pageIndex, {\n scaleFactor,\n dpr,\n withAnnotations: options.includeAnnotations,\n });\n\n // Send page ready immediately after rendering\n onPageReady?.({\n pageIndex,\n blob,\n });\n\n return;\n });\n\n // Wait for batch to complete\n await Promise.all(batchPromises);\n }\n\n onProgress?.({\n current: totalPages,\n total: totalPages,\n status: 'complete',\n message: 'All pages rendered successfully',\n });\n }\n\n private async renderPage(pageIndex: number, options: PdfRenderPageOptions): Promise<Blob> {\n return new Promise((resolve, reject) => {\n const renderTask = this.renderCapability.renderPage({\n pageIndex,\n options,\n });\n\n renderTask.wait(\n (blob) => resolve(blob),\n (error) =>\n reject(\n new Error(\n `Failed to render page ${pageIndex + 1}: ${error.reason.message || 'Unknown error'}`,\n ),\n ),\n );\n });\n }\n\n private getScaleFactor(quality: PrintQuality): number {\n switch (quality) {\n case PrintQuality.High:\n return 1.5; // Higher resolution for better print quality\n case PrintQuality.Normal:\n default:\n return 1; // Standard print resolution\n }\n }\n\n private getPagesToPrint(options: PrintOptions, totalPages: number): number[] {\n const { pageRange } = options;\n\n switch (pageRange.type) {\n case PageRangeType.Current:\n return pageRange.currentPage !== undefined ? [pageRange.currentPage] : [0];\n\n case PageRangeType.All:\n return Array.from({ length: totalPages }, (_, i) => i);\n\n case PageRangeType.Custom:\n if (!pageRange.pages) return [0];\n return pageRange.pages\n .filter((page) => page >= 0 && page < totalPages)\n .sort((a, b) => a - b);\n\n default:\n return [0];\n }\n }\n\n private parsePageRange(rangeString: string): ParsedPageRange {\n try {\n const totalPages = this.coreState.core.document?.pages.length || 0;\n const pages: number[] = [];\n const parts = rangeString.split(',').map((s) => s.trim());\n\n for (const part of parts) {\n if (part.includes('-')) {\n // Handle range like \"5-10\"\n const [start, end] = part.split('-').map((s) => parseInt(s.trim()));\n\n if (isNaN(start) || isNaN(end)) {\n return { pages: [], isValid: false, error: `Invalid range: ${part}` };\n }\n\n if (start > end) {\n return { pages: [], isValid: false, error: `Invalid range: ${part} (start > end)` };\n }\n\n for (let i = start; i <= end; i++) {\n if (i >= 1 && i <= totalPages) {\n pages.push(i - 1); // Convert to 0-based index\n }\n }\n } else {\n // Handle single page\n const pageNum = parseInt(part);\n\n if (isNaN(pageNum)) {\n return { pages: [], isValid: false, error: `Invalid page number: ${part}` };\n }\n\n if (pageNum >= 1 && pageNum <= totalPages) {\n pages.push(pageNum - 1); // Convert to 0-based index\n }\n }\n }\n\n // Remove duplicates and sort\n const uniquePages = [...new Set(pages)].sort((a, b) => a - b);\n\n return {\n pages: uniquePages,\n isValid: true,\n };\n } catch (error) {\n return {\n pages: [],\n isValid: false,\n error: `Parsing error: ${error instanceof Error ? error.message : 'Unknown error'}`,\n };\n }\n }\n}\n","import { PluginPackage } from '@embedpdf/core';\nimport { manifest, PRINT_PLUGIN_ID } from './manifest';\nimport { PrintPluginConfig } from './types';\nimport { PrintPlugin } from './print-plugin';\n\nexport const PrintPluginPackage: PluginPackage<PrintPlugin, PrintPluginConfig> = {\n manifest,\n create: (registry, config) => new PrintPlugin(PRINT_PLUGIN_ID, registry, config),\n reducer: () => {},\n initialState: {},\n};\n\nexport * from './print-plugin';\nexport * from './types';\nexport * from './manifest';\n"],"names":["PrintQuality","PageRangeType"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@embedpdf/plugin-print",
3
- "version": "1.0.17",
3
+ "version": "1.0.19",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",
@@ -23,21 +23,21 @@
23
23
  }
24
24
  },
25
25
  "dependencies": {
26
- "@embedpdf/models": "1.0.17"
26
+ "@embedpdf/models": "1.0.19"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/react": "^18.2.0",
30
30
  "@types/react-dom": "^18.2.0",
31
31
  "typescript": "^5.0.0",
32
- "@embedpdf/plugin-render": "1.0.17",
33
- "@embedpdf/build": "1.0.0"
32
+ "@embedpdf/build": "1.0.0",
33
+ "@embedpdf/plugin-render": "1.0.19"
34
34
  },
35
35
  "peerDependencies": {
36
36
  "react": ">=18.0.0",
37
37
  "react-dom": ">=18.0.0",
38
38
  "preact": "^10.26.4",
39
- "@embedpdf/plugin-render": "1.0.17",
40
- "@embedpdf/core": "1.0.17"
39
+ "@embedpdf/core": "1.0.19",
40
+ "@embedpdf/plugin-render": "1.0.19"
41
41
  },
42
42
  "files": [
43
43
  "dist",