UNPKG

@wtechtec/qr-generator-core

Version:

A powerful QR code generator with customizable styling options

256 lines (255 loc) 7.2 kB
import type { CanvasConfig } from '../types/qr-generator'; export interface QRGeneratorConfig { text: string; width: number; height: number; qrPosition: { x: number; y: number; }; qrSize: { width: number; height: number; }; qrOptions: { typeNumber: number; mode: 'Numeric' | 'Alphanumeric' | 'Byte' | 'Kanji'; errorCorrectionLevel: 'L' | 'M' | 'Q' | 'H'; }; imageOptions: { hideBackgroundDots: boolean; imageSize: number; margin: number; crossOrigin: string; }; dotsOptions: { color: string; type: 'rounded' | 'dots' | 'classy' | 'classy-rounded' | 'square' | 'extra-rounded'; gradient?: { type: 'linear' | 'radial'; rotation: number; colorStops: any; }; }; backgroundOptions: { color: string; gradient?: { type: 'linear' | 'radial'; rotation: number; colorStops: any; }; }; cornersSquareOptions: { color: string; type: 'dot' | 'square' | 'extra-rounded'; gradient?: { type: 'linear' | 'radial'; rotation: number; colorStops: Array<{ offset: number; color: string; }>; }; }; cornersDotOptions: { color: string; type: 'dot' | 'square'; gradient?: { type: 'linear' | 'radial'; rotation: number; colorStops: Array<{ offset: number; color: string; }>; }; }; logo?: { src: string; size: number; position?: { x: number; y: number; }; }; exportOptions: { format: 'png' | 'jpeg' | 'svg'; quality: number; borderRadius: number; }; backgrounds?: Array<{ src: string; position: { x: number; y: number; }; size: { width: number; height: number; }; mode: 'fill' | 'contain' | 'cover' | 'stretch'; zIndex: number; opacity: number; }>; texts?: Array<{ content: string; position: { x: number; y: number; }; fontSize: number; color: string; fontFamily: string; fontWeight: number; zIndex: number; opacity: number; textAlign?: 'left' | 'center' | 'right'; lineHeight?: number; }>; htmlModules?: Array<{ content: string; position: { x: number; y: number; }; size: { width: number; height: number; }; zIndex: number; opacity: number; }>; } export interface PlatformQRGeneratorConfig extends CanvasConfig { exportOptions?: { scale?: number; useCORS?: boolean; allowTaint?: boolean; backgroundColor?: string; logging?: boolean; }; } export declare const defaultConfig: Partial<QRGeneratorConfig>; export declare const calculateDefaultQRSettings: (canvasWidth: number, canvasHeight: number, qrRatio?: number) => { qrPosition: { x: number; y: number; }; qrSize: { width: number; height: number; }; }; export declare class PlatformQRGenerator { private config; private previewElement; private isInitialized; constructor(config: PlatformQRGeneratorConfig); initialize(previewElement: HTMLElement): void; updateConfig(newConfig: Partial<PlatformQRGeneratorConfig>): void; getConfig(): PlatformQRGeneratorConfig; private checkInitialized; createSnapshot(): Promise<HTMLCanvasElement>; private applyRoundedCorners; exportAsPNG(options?: { quality?: number; borderRadius?: number; scale?: number; }): Promise<Blob>; exportAsDataURL(options?: { quality?: number; borderRadius?: number; scale?: number; }): Promise<string>; downloadAsPNG(filename?: string, options?: { quality?: number; borderRadius?: number; scale?: number; }): Promise<void>; getPreviewInfo(): { width: number; height: number; element: HTMLElement | null; }; generateConfigString(): string; loadFromConfigString(configString: string): void; destroy(): void; validateConfig(): { isValid: boolean; errors: string[]; }; getEstimatedFileSize(): Promise<number>; } export declare const createPlatformQRGenerator: (config: PlatformQRGeneratorConfig) => PlatformQRGenerator; export declare const exportPreviewAsPNG: (previewElement: HTMLElement, config: PlatformQRGeneratorConfig, options?: { quality?: number; borderRadius?: number; scale?: number; }) => Promise<Blob>; export declare const exportPreviewAsDataURL: (previewElement: HTMLElement, config: PlatformQRGeneratorConfig, options?: { quality?: number; borderRadius?: number; scale?: number; }) => Promise<string>; export declare class QRGenerator { private config; private container; private qrCode; private isRendered; constructor(config: Partial<QRGeneratorConfig>); private createCanvas; private createGradientStyle; private getObjectFitStyle; private addBackgrounds; private addQRCode; private addTexts; private addHtmlModules; render(): Promise<HTMLDivElement>; exportAsPNG(options?: { scale?: number; quality?: number; useCORS?: boolean; allowTaint?: boolean; }): Promise<Blob>; exportAsDataURL(options?: { scale?: number; quality?: number; useCORS?: boolean; allowTaint?: boolean; }): Promise<string>; downloadAsPNG(filename?: string, options?: { scale?: number; quality?: number; useCORS?: boolean; allowTaint?: boolean; }): Promise<void>; getPreviewElement(): HTMLDivElement | null; updateConfig(newConfig: Partial<QRGeneratorConfig>): void; getConfig(): QRGeneratorConfig; getConfigString(): string; loadFromConfigString(configString: string): void; validateConfig(): { isValid: boolean; errors: string[]; }; cleanup(): void; destroy(): void; } export declare const createQRGenerator: (config: Partial<QRGeneratorConfig>) => QRGenerator; export declare const generateQRAsPNG: (config: Partial<QRGeneratorConfig>, exportOptions?: { scale?: number; quality?: number; useCORS?: boolean; allowTaint?: boolean; }) => Promise<Blob>; export declare const generateQRAsDataURL: (config: Partial<QRGeneratorConfig>, exportOptions?: { scale?: number; quality?: number; useCORS?: boolean; allowTaint?: boolean; }) => Promise<string>; export declare const generateAndDownloadQR: (config: Partial<QRGeneratorConfig>, filename?: string, exportOptions?: { scale?: number; quality?: number; useCORS?: boolean; allowTaint?: boolean; }) => Promise<void>;