@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 +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +8 -10
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
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=
|
|
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
|
package/dist/index.cjs.map
CHANGED
|
@@ -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,
|
|
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,
|
|
89
|
+
async renderPage(pageIndex, options) {
|
|
87
90
|
return new Promise((resolve, reject) => {
|
|
88
91
|
const renderTask = this.renderCapability.renderPage({
|
|
89
92
|
pageIndex,
|
|
90
|
-
|
|
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,
|
|
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":";;AAGO,MAAM,kBAAkB;AAExB,MAAM,WAA8C;AAAA,EACzD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,UAAU,CAAC,OAAO;AAAA,EAClB,UAAU,CAAC,QAAQ;AAAA,EACnB,UAAU,CAAC;AAAA,EACX,eAAe;AAAA,IACb,SAAS;AAAA,EAAA;AAEb;ACPY,IAAA,iCAAAA,kBAAL;AACLA,gBAAA,QAAS,IAAA;AACTA,gBAAA,MAAO,IAAA;AAFGA,SAAAA;AAAA,GAAA,gBAAA,CAAA,CAAA;AAKA,IAAA,kCAAAC,mBAAL;AACLA,iBAAA,SAAU,IAAA;AACVA,iBAAA,KAAM,IAAA;AACNA,iBAAA,QAAS,IAAA;AAHCA,SAAAA;AAAA,GAAA,iBAAA,CAAA,CAAA;ACEL,MAAM,eAAN,MAAM,qBAAoB,WAA+C;AAAA,EAM9E,YAAY,IAAY,UAA0B,QAA2B;;AAC3E,UAAM,IAAI,QAAQ;AAElB,SAAK,SAAS;AACd,SAAK,oBAAmB,UAAK,SAAS,UAAwB,aAAa,EAAE,MAArD,mBAAwD;AAAA,EAAS;AAAA,EAG3F,MAAM,WAAW,SAA2C;AAAA,EAAA;AAAA,EAElD,kBAAmC;AACpC,WAAA;AAAA,MACL,cAAc,KAAK,aAAa,KAAK,IAAI;AAAA,MACzC,gBAAgB,KAAK,eAAe,KAAK,IAAI;AAAA,IAC/C;AAAA,EAAA;AAAA,EAGF,MAAc,aACZ,SACA,YACA,aACe;;AACT,UAAA,YAAY,KAAK,UAAU;AAE7B,QAAA,CAAC,UAAU,UAAU;AACjB,YAAA,IAAI,MAAM,oBAAoB;AAAA,IAAA;AAGtC,UAAM,eAAe,KAAK,gBAAgB,SAAS,UAAU,SAAS,MAAM,MAAM;AAClF,UAAM,aAAa,aAAa;AAC1B,UAAA,cAAY,UAAK,WAAL,mBAAa,cAAa;AAE/B,6CAAA;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS,uBAAuB,UAAU,QAAQ,eAAe,IAAI,MAAM,EAAE;AAAA,IAAA;AAG/E,UAAM,cAAc,KAAK,eAAe,QAAQ,OAAO;AACvD,UAAM,MAAM;AAGZ,aAAS,aAAa,GAAG,aAAa,aAAa,QAAQ,cAAc,WAAW;AAClF,YAAM,WAAW,KAAK,IAAI,aAAa,WAAW,aAAa,MAAM;AACrE,YAAM,QAAQ,aAAa,MAAM,YAAY,QAAQ;AAGrD,YAAM,gBAAgB,MAAM,IAAI,OAAO,WAAW,eAAe;AAC/D,cAAM,eAAe,aAAa;AAErB,iDAAA;AAAA,UACX,SAAS;AAAA,UACT,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,SAAS,kBAAkB,YAAY,CAAC;AAAA,QAAA;AAG1C,cAAM,OAAO,MAAM,KAAK,WAAW,WAAW;AAAA,UAC5C;AAAA,UACA;AAAA,UACA,iBAAiB,QAAQ;AAAA,QAAA,CAC1B;AAGa,mDAAA;AAAA,UACZ;AAAA,UACA;AAAA,QAAA;AAGF;AAAA,MAAA,CACD;AAGK,YAAA,QAAQ,IAAI,aAAa;AAAA,IAAA;AAGpB,6CAAA;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,IAAA;AAAA,EACV;AAAA,EAGH,MAAc,WAAW,WAAmB,SAA8C;AACxF,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAChC,YAAA,aAAa,KAAK,iBAAiB,WAAW;AAAA,QAClD;AAAA,QACA;AAAA,MAAA,CACD;AAEU,iBAAA;AAAA,QACT,CAAC,SAAS,QAAQ,IAAI;AAAA,QACtB,CAAC,UACC;AAAA,UACE,IAAI;AAAA,YACF,yBAAyB,YAAY,CAAC,KAAK,MAAM,OAAO,WAAW,eAAe;AAAA,UAAA;AAAA,QACpF;AAAA,MAEN;AAAA,IAAA,CACD;AAAA,EAAA;AAAA,EAGK,eAAe,SAA+B;AACpD,YAAQ,SAAS;AAAA,MACf,KAAK,aAAa;AACT,eAAA;AAAA;AAAA,MACT,KAAK,aAAa;AAAA,MAClB;AACS,eAAA;AAAA,IAAA;AAAA,EACX;AAAA,EAGM,gBAAgB,SAAuB,YAA8B;AACrE,UAAA,EAAE,cAAc;AAEtB,YAAQ,UAAU,MAAM;AAAA,MACtB,KAAK,cAAc;AACV,eAAA,UAAU,gBAAgB,SAAY,CAAC,UAAU,WAAW,IAAI,CAAC,CAAC;AAAA,MAE3E,KAAK,cAAc;AACV,eAAA,MAAM,KAAK,EAAE,QAAQ,cAAc,CAAC,GAAG,MAAM,CAAC;AAAA,MAEvD,KAAK,cAAc;AACjB,YAAI,CAAC,UAAU,MAAO,QAAO,CAAC,CAAC;AAC/B,eAAO,UAAU,MACd,OAAO,CAAC,SAAS,QAAQ,KAAK,OAAO,UAAU,EAC/C,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,MAEzB;AACE,eAAO,CAAC,CAAC;AAAA,IAAA;AAAA,EACb;AAAA,EAGM,eAAe,aAAsC;;AACvD,QAAA;AACF,YAAM,eAAa,UAAK,UAAU,KAAK,aAApB,mBAA8B,MAAM,WAAU;AACjE,YAAM,QAAkB,CAAC;AACnB,YAAA,QAAQ,YAAY,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM;AAExD,iBAAW,QAAQ,OAAO;AACpB,YAAA,KAAK,SAAS,GAAG,GAAG;AAEtB,gBAAM,CAAC,OAAO,GAAG,IAAI,KAAK,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,SAAS,EAAE,KAAM,CAAA,CAAC;AAElE,cAAI,MAAM,KAAK,KAAK,MAAM,GAAG,GAAG;AACvB,mBAAA,EAAE,OAAO,CAAC,GAAG,SAAS,OAAO,OAAO,kBAAkB,IAAI,GAAG;AAAA,UAAA;AAGtE,cAAI,QAAQ,KAAK;AACR,mBAAA,EAAE,OAAO,CAAC,GAAG,SAAS,OAAO,OAAO,kBAAkB,IAAI,iBAAiB;AAAA,UAAA;AAGpF,mBAAS,IAAI,OAAO,KAAK,KAAK,KAAK;AAC7B,gBAAA,KAAK,KAAK,KAAK,YAAY;AACvB,oBAAA,KAAK,IAAI,CAAC;AAAA,YAAA;AAAA,UAClB;AAAA,QACF,OACK;AAEC,gBAAA,UAAU,SAAS,IAAI;AAEzB,cAAA,MAAM,OAAO,GAAG;AACX,mBAAA,EAAE,OAAO,CAAC,GAAG,SAAS,OAAO,OAAO,wBAAwB,IAAI,GAAG;AAAA,UAAA;AAGxE,cAAA,WAAW,KAAK,WAAW,YAAY;AACnC,kBAAA,KAAK,UAAU,CAAC;AAAA,UAAA;AAAA,QACxB;AAAA,MACF;AAIF,YAAM,cAAc,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAErD,aAAA;AAAA,QACL,OAAO;AAAA,QACP,SAAS;AAAA,MACX;AAAA,aACO,OAAO;AACP,aAAA;AAAA,QACL,OAAO,CAAC;AAAA,QACR,SAAS;AAAA,QACT,OAAO,kBAAkB,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAAA,MACnF;AAAA,IAAA;AAAA,EACF;AAEJ;AAhME,aAAgB,KAAK;AADhB,IAAM,cAAN;ACVA,MAAM,qBAAoE;AAAA,EAC/E;AAAA,EACA,QAAQ,CAAC,UAAU,WAAW,IAAI,YAAY,iBAAiB,UAAU,MAAM;AAAA,EAC/E,SAAS,MAAM;AAAA,EAAC;AAAA,EAChB,cAAc,CAAA;AAChB;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@embedpdf/plugin-print",
|
|
3
|
-
"version": "1.0.
|
|
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.
|
|
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/
|
|
33
|
-
"@embedpdf/
|
|
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/
|
|
40
|
-
"@embedpdf/
|
|
39
|
+
"@embedpdf/core": "1.0.19",
|
|
40
|
+
"@embedpdf/plugin-render": "1.0.19"
|
|
41
41
|
},
|
|
42
42
|
"files": [
|
|
43
43
|
"dist",
|