UNPKG

qrcode-vue3

Version:

Add a style and an image to your QR code Vue3

113 lines (108 loc) 2.26 kB
import qrTypes from "../constants/qrTypes"; import errorCorrectionLevels from "../constants/errorCorrectionLevels"; import type { DotType, GradientType, CornerSquareType, CornerDotType, TypeNumber, ErrorCorrectionLevel, Mode } from "../types"; export type Gradient = { type: GradientType; rotation?: number; colorStops: { offset: number; color: string; }[]; }; export interface IQrOptionsType { typeNumber?: TypeNumber; mode?: Mode; errorCorrectionLevel?: ErrorCorrectionLevel; } export type Options = { width?: number; height?: number; margin?: number; data?: string; image?: string; qrOptions?: IQrOptionsType; imageOptions?: { hideBackgroundDots?: boolean; imageSize?: number; crossOrigin?: string; margin?: number; }; dotsOptions?: { type?: DotType; color?: string; gradient?: Gradient; }; cornersSquareOptions?: { type?: CornerSquareType; color?: string; gradient?: Gradient; }; cornersDotOptions?: { type?: CornerDotType; color?: string; gradient?: Gradient; }; backgroundOptions?: { color?: string; gradient?: Gradient; }; }; export interface RequiredOptions extends Options { width: number; height: number; margin: number; data: string; qrOptions: { typeNumber: TypeNumber; mode?: Mode; errorCorrectionLevel: ErrorCorrectionLevel; }; imageOptions: { hideBackgroundDots: boolean; imageSize: number; crossOrigin?: string; margin: number; }; dotsOptions: { type: DotType; color: string; gradient?: Gradient; }; backgroundOptions: { color: string; gradient?: Gradient; }; } const defaultOptions: RequiredOptions = { width: 300, height: 300, data: "", margin: 0, qrOptions: { typeNumber: qrTypes[0], mode: undefined, errorCorrectionLevel: errorCorrectionLevels.Q }, imageOptions: { hideBackgroundDots: true, imageSize: 0.4, crossOrigin: undefined, margin: 0 }, dotsOptions: { type: "square", color: "#000" }, backgroundOptions: { color: "#fff" } }; export default defaultOptions;