qrcode.vue 3.9.0 → 3.10.0
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/CHANGELOG.md +24 -0
- package/README-zh_cn.md +85 -13
- package/README.md +85 -13
- package/README.zh-hant.md +360 -0
- package/dist/{src/index.d.ts → index.d.ts} +31 -42
- package/dist/qrcode.vue.browser.js +62 -21
- package/dist/qrcode.vue.browser.min.js +2 -2
- package/dist/qrcode.vue.cjs.js +62 -21
- package/dist/qrcode.vue.esm.js +63 -22
- package/package.json +12 -10
- package/dist/rstest.config.d.ts +0 -2
- package/dist/src/qrcodegen.d.ts +0 -95
|
@@ -10,6 +10,7 @@ export type ImageSettings = {
|
|
|
10
10
|
width?: number;
|
|
11
11
|
excavate?: boolean;
|
|
12
12
|
borderRadius?: number;
|
|
13
|
+
crossOrigin?: 'anonymous' | 'use-credentials' | '';
|
|
13
14
|
};
|
|
14
15
|
export declare const QrcodeSvg: import("vue").DefineComponent<ExtractPropTypes<{
|
|
15
16
|
value: {
|
|
@@ -36,41 +37,39 @@ export declare const QrcodeSvg: import("vue").DefineComponent<ExtractPropTypes<{
|
|
|
36
37
|
};
|
|
37
38
|
margin: {
|
|
38
39
|
type: NumberConstructor;
|
|
39
|
-
required: boolean;
|
|
40
40
|
default: number;
|
|
41
|
+
validator: (m: any) => boolean;
|
|
41
42
|
};
|
|
42
43
|
imageSettings: {
|
|
43
44
|
type: PropType<ImageSettings>;
|
|
44
|
-
required: boolean;
|
|
45
45
|
default: () => {};
|
|
46
46
|
};
|
|
47
47
|
gradient: {
|
|
48
48
|
type: BooleanConstructor;
|
|
49
|
-
required: boolean;
|
|
50
49
|
default: boolean;
|
|
51
50
|
};
|
|
52
51
|
gradientType: {
|
|
53
52
|
type: PropType<GradientType>;
|
|
54
|
-
required: boolean;
|
|
55
53
|
default: string;
|
|
56
54
|
validator: (t: any) => boolean;
|
|
57
55
|
};
|
|
58
56
|
gradientStartColor: {
|
|
59
57
|
type: StringConstructor;
|
|
60
|
-
required: boolean;
|
|
61
58
|
default: string;
|
|
62
59
|
};
|
|
63
60
|
gradientEndColor: {
|
|
64
61
|
type: StringConstructor;
|
|
65
|
-
required: boolean;
|
|
66
62
|
default: string;
|
|
67
63
|
};
|
|
68
64
|
radius: {
|
|
69
65
|
type: NumberConstructor;
|
|
70
|
-
required: boolean;
|
|
71
66
|
default: number;
|
|
72
67
|
validator: (r: any) => boolean;
|
|
73
68
|
};
|
|
69
|
+
id: {
|
|
70
|
+
type: StringConstructor;
|
|
71
|
+
required: boolean;
|
|
72
|
+
};
|
|
74
73
|
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
75
74
|
[key: string]: any;
|
|
76
75
|
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<{
|
|
@@ -98,41 +97,39 @@ export declare const QrcodeSvg: import("vue").DefineComponent<ExtractPropTypes<{
|
|
|
98
97
|
};
|
|
99
98
|
margin: {
|
|
100
99
|
type: NumberConstructor;
|
|
101
|
-
required: boolean;
|
|
102
100
|
default: number;
|
|
101
|
+
validator: (m: any) => boolean;
|
|
103
102
|
};
|
|
104
103
|
imageSettings: {
|
|
105
104
|
type: PropType<ImageSettings>;
|
|
106
|
-
required: boolean;
|
|
107
105
|
default: () => {};
|
|
108
106
|
};
|
|
109
107
|
gradient: {
|
|
110
108
|
type: BooleanConstructor;
|
|
111
|
-
required: boolean;
|
|
112
109
|
default: boolean;
|
|
113
110
|
};
|
|
114
111
|
gradientType: {
|
|
115
112
|
type: PropType<GradientType>;
|
|
116
|
-
required: boolean;
|
|
117
113
|
default: string;
|
|
118
114
|
validator: (t: any) => boolean;
|
|
119
115
|
};
|
|
120
116
|
gradientStartColor: {
|
|
121
117
|
type: StringConstructor;
|
|
122
|
-
required: boolean;
|
|
123
118
|
default: string;
|
|
124
119
|
};
|
|
125
120
|
gradientEndColor: {
|
|
126
121
|
type: StringConstructor;
|
|
127
|
-
required: boolean;
|
|
128
122
|
default: string;
|
|
129
123
|
};
|
|
130
124
|
radius: {
|
|
131
125
|
type: NumberConstructor;
|
|
132
|
-
required: boolean;
|
|
133
126
|
default: number;
|
|
134
127
|
validator: (r: any) => boolean;
|
|
135
128
|
};
|
|
129
|
+
id: {
|
|
130
|
+
type: StringConstructor;
|
|
131
|
+
required: boolean;
|
|
132
|
+
};
|
|
136
133
|
}>> & Readonly<{}>, {
|
|
137
134
|
value: string;
|
|
138
135
|
size: number;
|
|
@@ -172,41 +169,39 @@ export declare const QrcodeCanvas: import("vue").DefineComponent<ExtractPropType
|
|
|
172
169
|
};
|
|
173
170
|
margin: {
|
|
174
171
|
type: NumberConstructor;
|
|
175
|
-
required: boolean;
|
|
176
172
|
default: number;
|
|
173
|
+
validator: (m: any) => boolean;
|
|
177
174
|
};
|
|
178
175
|
imageSettings: {
|
|
179
176
|
type: PropType<ImageSettings>;
|
|
180
|
-
required: boolean;
|
|
181
177
|
default: () => {};
|
|
182
178
|
};
|
|
183
179
|
gradient: {
|
|
184
180
|
type: BooleanConstructor;
|
|
185
|
-
required: boolean;
|
|
186
181
|
default: boolean;
|
|
187
182
|
};
|
|
188
183
|
gradientType: {
|
|
189
184
|
type: PropType<GradientType>;
|
|
190
|
-
required: boolean;
|
|
191
185
|
default: string;
|
|
192
186
|
validator: (t: any) => boolean;
|
|
193
187
|
};
|
|
194
188
|
gradientStartColor: {
|
|
195
189
|
type: StringConstructor;
|
|
196
|
-
required: boolean;
|
|
197
190
|
default: string;
|
|
198
191
|
};
|
|
199
192
|
gradientEndColor: {
|
|
200
193
|
type: StringConstructor;
|
|
201
|
-
required: boolean;
|
|
202
194
|
default: string;
|
|
203
195
|
};
|
|
204
196
|
radius: {
|
|
205
197
|
type: NumberConstructor;
|
|
206
|
-
required: boolean;
|
|
207
198
|
default: number;
|
|
208
199
|
validator: (r: any) => boolean;
|
|
209
200
|
};
|
|
201
|
+
id: {
|
|
202
|
+
type: StringConstructor;
|
|
203
|
+
required: boolean;
|
|
204
|
+
};
|
|
210
205
|
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
211
206
|
[key: string]: any;
|
|
212
207
|
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<{
|
|
@@ -234,41 +229,39 @@ export declare const QrcodeCanvas: import("vue").DefineComponent<ExtractPropType
|
|
|
234
229
|
};
|
|
235
230
|
margin: {
|
|
236
231
|
type: NumberConstructor;
|
|
237
|
-
required: boolean;
|
|
238
232
|
default: number;
|
|
233
|
+
validator: (m: any) => boolean;
|
|
239
234
|
};
|
|
240
235
|
imageSettings: {
|
|
241
236
|
type: PropType<ImageSettings>;
|
|
242
|
-
required: boolean;
|
|
243
237
|
default: () => {};
|
|
244
238
|
};
|
|
245
239
|
gradient: {
|
|
246
240
|
type: BooleanConstructor;
|
|
247
|
-
required: boolean;
|
|
248
241
|
default: boolean;
|
|
249
242
|
};
|
|
250
243
|
gradientType: {
|
|
251
244
|
type: PropType<GradientType>;
|
|
252
|
-
required: boolean;
|
|
253
245
|
default: string;
|
|
254
246
|
validator: (t: any) => boolean;
|
|
255
247
|
};
|
|
256
248
|
gradientStartColor: {
|
|
257
249
|
type: StringConstructor;
|
|
258
|
-
required: boolean;
|
|
259
250
|
default: string;
|
|
260
251
|
};
|
|
261
252
|
gradientEndColor: {
|
|
262
253
|
type: StringConstructor;
|
|
263
|
-
required: boolean;
|
|
264
254
|
default: string;
|
|
265
255
|
};
|
|
266
256
|
radius: {
|
|
267
257
|
type: NumberConstructor;
|
|
268
|
-
required: boolean;
|
|
269
258
|
default: number;
|
|
270
259
|
validator: (r: any) => boolean;
|
|
271
260
|
};
|
|
261
|
+
id: {
|
|
262
|
+
type: StringConstructor;
|
|
263
|
+
required: boolean;
|
|
264
|
+
};
|
|
272
265
|
}>> & Readonly<{}>, {
|
|
273
266
|
value: string;
|
|
274
267
|
size: number;
|
|
@@ -314,41 +307,39 @@ declare const QrcodeVue: import("vue").DefineComponent<ExtractPropTypes<{
|
|
|
314
307
|
};
|
|
315
308
|
margin: {
|
|
316
309
|
type: NumberConstructor;
|
|
317
|
-
required: boolean;
|
|
318
310
|
default: number;
|
|
311
|
+
validator: (m: any) => boolean;
|
|
319
312
|
};
|
|
320
313
|
imageSettings: {
|
|
321
314
|
type: PropType<ImageSettings>;
|
|
322
|
-
required: boolean;
|
|
323
315
|
default: () => {};
|
|
324
316
|
};
|
|
325
317
|
gradient: {
|
|
326
318
|
type: BooleanConstructor;
|
|
327
|
-
required: boolean;
|
|
328
319
|
default: boolean;
|
|
329
320
|
};
|
|
330
321
|
gradientType: {
|
|
331
322
|
type: PropType<GradientType>;
|
|
332
|
-
required: boolean;
|
|
333
323
|
default: string;
|
|
334
324
|
validator: (t: any) => boolean;
|
|
335
325
|
};
|
|
336
326
|
gradientStartColor: {
|
|
337
327
|
type: StringConstructor;
|
|
338
|
-
required: boolean;
|
|
339
328
|
default: string;
|
|
340
329
|
};
|
|
341
330
|
gradientEndColor: {
|
|
342
331
|
type: StringConstructor;
|
|
343
|
-
required: boolean;
|
|
344
332
|
default: string;
|
|
345
333
|
};
|
|
346
334
|
radius: {
|
|
347
335
|
type: NumberConstructor;
|
|
348
|
-
required: boolean;
|
|
349
336
|
default: number;
|
|
350
337
|
validator: (r: any) => boolean;
|
|
351
338
|
};
|
|
339
|
+
id: {
|
|
340
|
+
type: StringConstructor;
|
|
341
|
+
required: boolean;
|
|
342
|
+
};
|
|
352
343
|
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
353
344
|
[key: string]: any;
|
|
354
345
|
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<{
|
|
@@ -382,41 +373,39 @@ declare const QrcodeVue: import("vue").DefineComponent<ExtractPropTypes<{
|
|
|
382
373
|
};
|
|
383
374
|
margin: {
|
|
384
375
|
type: NumberConstructor;
|
|
385
|
-
required: boolean;
|
|
386
376
|
default: number;
|
|
377
|
+
validator: (m: any) => boolean;
|
|
387
378
|
};
|
|
388
379
|
imageSettings: {
|
|
389
380
|
type: PropType<ImageSettings>;
|
|
390
|
-
required: boolean;
|
|
391
381
|
default: () => {};
|
|
392
382
|
};
|
|
393
383
|
gradient: {
|
|
394
384
|
type: BooleanConstructor;
|
|
395
|
-
required: boolean;
|
|
396
385
|
default: boolean;
|
|
397
386
|
};
|
|
398
387
|
gradientType: {
|
|
399
388
|
type: PropType<GradientType>;
|
|
400
|
-
required: boolean;
|
|
401
389
|
default: string;
|
|
402
390
|
validator: (t: any) => boolean;
|
|
403
391
|
};
|
|
404
392
|
gradientStartColor: {
|
|
405
393
|
type: StringConstructor;
|
|
406
|
-
required: boolean;
|
|
407
394
|
default: string;
|
|
408
395
|
};
|
|
409
396
|
gradientEndColor: {
|
|
410
397
|
type: StringConstructor;
|
|
411
|
-
required: boolean;
|
|
412
398
|
default: string;
|
|
413
399
|
};
|
|
414
400
|
radius: {
|
|
415
401
|
type: NumberConstructor;
|
|
416
|
-
required: boolean;
|
|
417
402
|
default: number;
|
|
418
403
|
validator: (r: any) => boolean;
|
|
419
404
|
};
|
|
405
|
+
id: {
|
|
406
|
+
type: StringConstructor;
|
|
407
|
+
required: boolean;
|
|
408
|
+
};
|
|
420
409
|
}>> & Readonly<{}>, {
|
|
421
410
|
value: string;
|
|
422
411
|
size: number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* qrcode.vue v3.
|
|
2
|
+
* qrcode.vue v3.10.0
|
|
3
3
|
* A Vue.js component to generate QRCode. Both support Vue 2 and Vue 3
|
|
4
4
|
* © 2017-PRESENT @scopewu(https://github.com/scopewu)
|
|
5
5
|
* MIT License.
|
|
@@ -910,11 +910,10 @@ var qrcodegen;
|
|
|
910
910
|
var QR = qrcodegen;
|
|
911
911
|
|
|
912
912
|
var _uid = 0;
|
|
913
|
-
function getUid() {
|
|
914
|
-
if (
|
|
915
|
-
return
|
|
916
|
-
|
|
917
|
-
return "vue-".concat(Math.random().toString(36).slice(2), "-").concat(_uid++);
|
|
913
|
+
function getUid(id) {
|
|
914
|
+
if (id)
|
|
915
|
+
return id;
|
|
916
|
+
return "v-".concat(_uid++);
|
|
918
917
|
}
|
|
919
918
|
var defaultErrorCorrectLevel = 'L';
|
|
920
919
|
var DEFAULT_QR_SIZE = 100;
|
|
@@ -1074,6 +1073,14 @@ function useQRCode(props) {
|
|
|
1074
1073
|
});
|
|
1075
1074
|
return { margin: margin, numCells: numCells, cells: cells, fgPath: fgPath, imageProps: imageProps, imageBorderProps: imageBorderProps };
|
|
1076
1075
|
}
|
|
1076
|
+
function downloadDataURLAsFile(data, filename) {
|
|
1077
|
+
var link = document.createElement('a');
|
|
1078
|
+
link.download = filename;
|
|
1079
|
+
link.href = data;
|
|
1080
|
+
document.body.appendChild(link);
|
|
1081
|
+
link.click();
|
|
1082
|
+
document.body.removeChild(link);
|
|
1083
|
+
}
|
|
1077
1084
|
var QRCodeProps = {
|
|
1078
1085
|
value: {
|
|
1079
1086
|
type: String,
|
|
@@ -1099,41 +1106,39 @@ var QRCodeProps = {
|
|
|
1099
1106
|
},
|
|
1100
1107
|
margin: {
|
|
1101
1108
|
type: Number,
|
|
1102
|
-
required: false,
|
|
1103
1109
|
default: DEFAULT_MARGIN,
|
|
1110
|
+
validator: function (m) { return m >= 0; },
|
|
1104
1111
|
},
|
|
1105
1112
|
imageSettings: {
|
|
1106
1113
|
type: Object,
|
|
1107
|
-
required: false,
|
|
1108
1114
|
default: function () { return ({}); },
|
|
1109
1115
|
},
|
|
1110
1116
|
gradient: {
|
|
1111
1117
|
type: Boolean,
|
|
1112
|
-
required: false,
|
|
1113
1118
|
default: false,
|
|
1114
1119
|
},
|
|
1115
1120
|
gradientType: {
|
|
1116
1121
|
type: String,
|
|
1117
|
-
required: false,
|
|
1118
1122
|
default: 'linear',
|
|
1119
1123
|
validator: function (t) { return ['linear', 'radial'].indexOf(t) > -1; },
|
|
1120
1124
|
},
|
|
1121
1125
|
gradientStartColor: {
|
|
1122
1126
|
type: String,
|
|
1123
|
-
required: false,
|
|
1124
1127
|
default: '#000',
|
|
1125
1128
|
},
|
|
1126
1129
|
gradientEndColor: {
|
|
1127
1130
|
type: String,
|
|
1128
|
-
required: false,
|
|
1129
1131
|
default: '#fff',
|
|
1130
1132
|
},
|
|
1131
1133
|
radius: {
|
|
1132
1134
|
type: Number,
|
|
1133
|
-
required: false,
|
|
1134
1135
|
default: 0,
|
|
1135
1136
|
validator: function (r) { return !isNaN(r) && r >= 0 && r <= 0.5; },
|
|
1136
1137
|
},
|
|
1138
|
+
id: {
|
|
1139
|
+
type: String,
|
|
1140
|
+
required: false,
|
|
1141
|
+
},
|
|
1137
1142
|
};
|
|
1138
1143
|
var QRCodeVueProps = __assign(__assign({}, QRCodeProps), { renderAs: {
|
|
1139
1144
|
type: String,
|
|
@@ -1144,9 +1149,10 @@ var QRCodeVueProps = __assign(__assign({}, QRCodeProps), { renderAs: {
|
|
|
1144
1149
|
var QrcodeSvg = vue.defineComponent({
|
|
1145
1150
|
name: 'QRCodeSvg',
|
|
1146
1151
|
props: QRCodeProps,
|
|
1147
|
-
setup: function (props) {
|
|
1152
|
+
setup: function (props, ctx) {
|
|
1148
1153
|
var _a = useQRCode(props), numCells = _a.numCells, fgPath = _a.fgPath, imageProps = _a.imageProps, imageBorderProps = _a.imageBorderProps;
|
|
1149
|
-
var
|
|
1154
|
+
var svgEl = vue.ref();
|
|
1155
|
+
var uid = getUid(props.id);
|
|
1150
1156
|
var qrGradientId = "qrcode.vue-gradient-".concat(uid);
|
|
1151
1157
|
var qrLogoClipPathId = "qrcode.vue-logo-clip-path-".concat(uid);
|
|
1152
1158
|
var gradientVNode = vue.computed(function () {
|
|
@@ -1194,15 +1200,32 @@ var QrcodeSvg = vue.defineComponent({
|
|
|
1194
1200
|
}),
|
|
1195
1201
|
]);
|
|
1196
1202
|
});
|
|
1203
|
+
var getSvgDataURL = function (svg) { return 'data:image/svg+xml;charset=utf-8,' +
|
|
1204
|
+
encodeURIComponent('<?xml version="1.0" standalone="no"?>' + new XMLSerializer().serializeToString(svg)); };
|
|
1205
|
+
ctx.expose({
|
|
1206
|
+
toDataURL: function () {
|
|
1207
|
+
var svg = svgEl.value;
|
|
1208
|
+
if (!svg)
|
|
1209
|
+
return;
|
|
1210
|
+
return getSvgDataURL(svg);
|
|
1211
|
+
},
|
|
1212
|
+
download: function (filename) {
|
|
1213
|
+
if (filename === void 0) { filename = 'qrcode.svg'; }
|
|
1214
|
+
var svg = svgEl.value;
|
|
1215
|
+
if (!svg)
|
|
1216
|
+
return;
|
|
1217
|
+
downloadDataURLAsFile(getSvgDataURL(svg), filename);
|
|
1218
|
+
},
|
|
1219
|
+
});
|
|
1197
1220
|
return function () { return vue.h('svg', {
|
|
1221
|
+
ref: svgEl,
|
|
1198
1222
|
width: props.size,
|
|
1199
1223
|
height: props.size,
|
|
1200
1224
|
xmlns: 'http://www.w3.org/2000/svg',
|
|
1201
1225
|
viewBox: "0 0 ".concat(numCells.value, " ").concat(numCells.value),
|
|
1202
1226
|
role: 'img',
|
|
1203
|
-
'aria-label': props.value,
|
|
1204
1227
|
}, [
|
|
1205
|
-
vue.h('defs', {}, [gradientVNode.value, clipPathVNode.value]),
|
|
1228
|
+
vue.h('defs', {}, [gradientVNode.value, clipPathVNode.value].filter(Boolean)),
|
|
1206
1229
|
vue.h('rect', {
|
|
1207
1230
|
width: '100%',
|
|
1208
1231
|
height: '100%',
|
|
@@ -1221,7 +1244,7 @@ var QrcodeSvg = vue.defineComponent({
|
|
|
1221
1244
|
rx: imageBorderProps.value.borderRadius,
|
|
1222
1245
|
ry: imageBorderProps.value.borderRadius,
|
|
1223
1246
|
}),
|
|
1224
|
-
props.imageSettings.src && imageProps.value && vue.h('image', __assign(
|
|
1247
|
+
props.imageSettings.src && imageProps.value && vue.h('image', __assign({ href: props.imageSettings.src, crossorigin: props.imageSettings.crossOrigin, 'clip-path': imageProps.value.borderRadius > 0 ? "url(#".concat(qrLogoClipPathId, ")") : void 0 }, imageProps.value)),
|
|
1225
1248
|
]); };
|
|
1226
1249
|
},
|
|
1227
1250
|
});
|
|
@@ -1307,12 +1330,23 @@ var QrcodeCanvas = vue.defineComponent({
|
|
|
1307
1330
|
}
|
|
1308
1331
|
};
|
|
1309
1332
|
vue.onMounted(generate);
|
|
1310
|
-
vue.watchEffect(generate);
|
|
1333
|
+
vue.watchEffect(generate, { flush: 'post' });
|
|
1334
|
+
ctx.expose({
|
|
1335
|
+
toDataURL: function (type, quality) { var _a; return (_a = canvasEl.value) === null || _a === void 0 ? void 0 : _a.toDataURL(type, quality); },
|
|
1336
|
+
download: function (filename) {
|
|
1337
|
+
if (filename === void 0) { filename = 'qrcode.png'; }
|
|
1338
|
+
var canvas = canvasEl.value;
|
|
1339
|
+
if (!canvas)
|
|
1340
|
+
return;
|
|
1341
|
+
downloadDataURLAsFile(canvas.toDataURL('image/png'), filename);
|
|
1342
|
+
},
|
|
1343
|
+
});
|
|
1311
1344
|
return function () { return vue.h(vue.Fragment, [
|
|
1312
|
-
vue.h('canvas', __assign(__assign({}, ctx.attrs), { ref: canvasEl, role: 'img',
|
|
1345
|
+
vue.h('canvas', __assign(__assign({}, ctx.attrs), { ref: canvasEl, role: 'img', style: __assign(__assign({}, ctx.attrs.style), { width: "".concat(props.size, "px"), height: "".concat(props.size, "px") }) })),
|
|
1313
1346
|
props.imageSettings.src && vue.h('img', {
|
|
1314
1347
|
ref: imageEl,
|
|
1315
1348
|
src: props.imageSettings.src,
|
|
1349
|
+
crossorigin: props.imageSettings.crossOrigin,
|
|
1316
1350
|
style: { display: 'none' },
|
|
1317
1351
|
onLoad: generate,
|
|
1318
1352
|
})
|
|
@@ -1322,8 +1356,14 @@ var QrcodeCanvas = vue.defineComponent({
|
|
|
1322
1356
|
var QrcodeVue = vue.defineComponent({
|
|
1323
1357
|
name: 'Qrcode',
|
|
1324
1358
|
props: QRCodeVueProps,
|
|
1325
|
-
setup: function (props) {
|
|
1359
|
+
setup: function (props, ctx) {
|
|
1360
|
+
var childRef = vue.ref();
|
|
1361
|
+
ctx.expose({
|
|
1362
|
+
toDataURL: function (type, quality) { var _a, _b; return (_b = (_a = childRef.value) === null || _a === void 0 ? void 0 : _a.toDataURL) === null || _b === void 0 ? void 0 : _b.call(_a, type, quality); },
|
|
1363
|
+
download: function (filename) { var _a, _b; return (_b = (_a = childRef.value) === null || _a === void 0 ? void 0 : _a.download) === null || _b === void 0 ? void 0 : _b.call(_a, filename); },
|
|
1364
|
+
});
|
|
1326
1365
|
return function () { return vue.h(props.renderAs === 'svg' ? QrcodeSvg : QrcodeCanvas, {
|
|
1366
|
+
ref: childRef,
|
|
1327
1367
|
value: props.value,
|
|
1328
1368
|
size: props.size,
|
|
1329
1369
|
margin: props.margin,
|
|
@@ -1336,6 +1376,7 @@ var QrcodeVue = vue.defineComponent({
|
|
|
1336
1376
|
gradientStartColor: props.gradientStartColor,
|
|
1337
1377
|
gradientEndColor: props.gradientEndColor,
|
|
1338
1378
|
radius: props.radius,
|
|
1379
|
+
id: props.id,
|
|
1339
1380
|
}); };
|
|
1340
1381
|
},
|
|
1341
1382
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* qrcode.vue v3.
|
|
2
|
+
* qrcode.vue v3.10.0
|
|
3
3
|
* A Vue.js component to generate QRCode. Both support Vue 2 and Vue 3
|
|
4
4
|
* © 2017-PRESENT @scopewu(https://github.com/scopewu)
|
|
5
5
|
* MIT License.
|
|
6
6
|
*/
|
|
7
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).QrcodeVue={},e.Vue)}(this,function(e,t){"use strict";var r,n=function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;n>r;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},n.apply(this,arguments)};"function"==typeof SuppressedError&&SuppressedError,function(e){var t=function(){function t(e,r,n,a){if(this.version=e,this.errorCorrectionLevel=r,this.modules=[],this.isFunction=[],t.MIN_VERSION>e||e>t.MAX_VERSION)throw new RangeError("Version value out of range");if(-1>a||a>7)throw new RangeError("Mask value out of range");this.size=4*e+17;for(var i=[],u=0;this.size>u;u++)i.push(!1);for(u=0;this.size>u;u++)this.modules.push(i.slice()),this.isFunction.push(i.slice());this.drawFunctionPatterns();var s=this.addEccAndInterleave(n);if(this.drawCodewords(s),-1==a){var l=1e9;for(u=0;8>u;u++){this.applyMask(u),this.drawFormatBits(u);var c=this.getPenaltyScore();l>c&&(a=u,l=c),this.applyMask(u)}}o(a>=0&&7>=a),this.mask=a,this.applyMask(a),this.drawFormatBits(a),this.isFunction=[]}return t.encodeText=function(r,n){var o=e.QrSegment.makeSegments(r);return t.encodeSegments(o,n)},t.encodeBinary=function(r,n){var o=e.QrSegment.makeBytes(r);return t.encodeSegments([o],n)},t.encodeSegments=function(e,n,i,u,s,l){if(void 0===i&&(i=1),void 0===u&&(u=40),void 0===s&&(s=-1),void 0===l&&(l=!0),t.MIN_VERSION>i||i>u||u>t.MAX_VERSION||-1>s||s>7)throw new RangeError("Invalid value");var c,d;for(c=i;;c++){var h=8*t.getNumDataCodewords(c,n),f=a.getTotalBits(e,c);if(h>=f){d=f;break}if(c>=u)throw new RangeError("Data too long")}for(var v=0,g=[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH];g.length>v;v++){var p=g[v];l&&d<=8*t.getNumDataCodewords(c,p)&&(n=p)}for(var m=[],y=0,w=e;w.length>y;y++){var E=w[y];r(E.mode.modeBits,4,m),r(E.numChars,E.mode.numCharCountBits(c),m);for(var C=0,M=E.getData();M.length>C;C++){m.push(M[C])}}o(m.length==d);var R=8*t.getNumDataCodewords(c,n);o(R>=m.length),r(0,Math.min(4,R-m.length),m),r(0,(8-m.length%8)%8,m),o(m.length%8==0);for(var S=236;R>m.length;S^=253)r(S,8,m);for(var A=[];m.length>8*A.length;)A.push(0);return m.forEach(function(e,t){return A[t>>>3]|=e<<7-(7&t)}),new t(c,n,A,s)},t.prototype.getModule=function(e,t){return e>=0&&this.size>e&&t>=0&&this.size>t&&this.modules[t][e]},t.prototype.getModules=function(){return this.modules},t.prototype.drawFunctionPatterns=function(){for(var e=0;this.size>e;e++)this.setFunctionModule(6,e,e%2==0),this.setFunctionModule(e,6,e%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);var t=this.getAlignmentPatternPositions(),r=t.length;for(e=0;r>e;e++)for(var n=0;r>n;n++)0==e&&0==n||0==e&&n==r-1||e==r-1&&0==n||this.drawAlignmentPattern(t[e],t[n]);this.drawFormatBits(0),this.drawVersion()},t.prototype.drawFormatBits=function(e){for(var t=this.errorCorrectionLevel.formatBits<<3|e,r=t,a=0;10>a;a++)r=r<<1^1335*(r>>>9);var i=21522^(t<<10|r);o(i>>>15==0);for(a=0;5>=a;a++)this.setFunctionModule(8,a,n(i,a));this.setFunctionModule(8,7,n(i,6)),this.setFunctionModule(8,8,n(i,7)),this.setFunctionModule(7,8,n(i,8));for(a=9;15>a;a++)this.setFunctionModule(14-a,8,n(i,a));for(a=0;8>a;a++)this.setFunctionModule(this.size-1-a,8,n(i,a));for(a=8;15>a;a++)this.setFunctionModule(8,this.size-15+a,n(i,a));this.setFunctionModule(8,this.size-8,!0)},t.prototype.drawVersion=function(){if(this.version>=7){for(var e=this.version,t=0;12>t;t++)e=e<<1^7973*(e>>>11);var r=this.version<<12|e;o(r>>>18==0);for(t=0;18>t;t++){var a=n(r,t),i=this.size-11+t%3,u=Math.floor(t/3);this.setFunctionModule(i,u,a),this.setFunctionModule(u,i,a)}}},t.prototype.drawFinderPattern=function(e,t){for(var r=-4;4>=r;r++)for(var n=-4;4>=n;n++){var o=Math.max(Math.abs(n),Math.abs(r)),a=e+n,i=t+r;a>=0&&this.size>a&&i>=0&&this.size>i&&this.setFunctionModule(a,i,2!=o&&4!=o)}},t.prototype.drawAlignmentPattern=function(e,t){for(var r=-2;2>=r;r++)for(var n=-2;2>=n;n++)this.setFunctionModule(e+n,t+r,1!=Math.max(Math.abs(n),Math.abs(r)))},t.prototype.setFunctionModule=function(e,t,r){this.modules[t][e]=r,this.isFunction[t][e]=!0},t.prototype.addEccAndInterleave=function(e){var r=this.version,n=this.errorCorrectionLevel;if(e.length!=t.getNumDataCodewords(r,n))throw new RangeError("Invalid argument");for(var a=t.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][r],i=t.ECC_CODEWORDS_PER_BLOCK[n.ordinal][r],u=Math.floor(t.getNumRawDataModules(r)/8),s=a-u%a,l=Math.floor(u/a),c=[],d=t.reedSolomonComputeDivisor(i),h=0,f=0;a>h;h++){var v=e.slice(f,f+l-i+(s>h?0:1));f+=v.length;var g=t.reedSolomonComputeRemainder(v,d);s>h&&v.push(0),c.push(v.concat(g))}var p=[],m=function(e){c.forEach(function(t,r){e==l-i&&s>r||p.push(t[e])})};for(h=0;c[0].length>h;h++)m(h);return o(p.length==u),p},t.prototype.drawCodewords=function(e){if(e.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw new RangeError("Invalid argument");for(var r=0,a=this.size-1;a>=1;a-=2){6==a&&(a=5);for(var i=0;this.size>i;i++)for(var u=0;2>u;u++){var s=a-u,l=!(a+1&2)?this.size-1-i:i;!this.isFunction[l][s]&&8*e.length>r&&(this.modules[l][s]=n(e[r>>>3],7-(7&r)),r++)}}o(r==8*e.length)},t.prototype.applyMask=function(e){if(0>e||e>7)throw new RangeError("Mask value out of range");for(var t=0;this.size>t;t++)for(var r=0;this.size>r;r++){var n=void 0;switch(e){case 0:n=(r+t)%2==0;break;case 1:n=t%2==0;break;case 2:n=r%3==0;break;case 3:n=(r+t)%3==0;break;case 4:n=(Math.floor(r/3)+Math.floor(t/2))%2==0;break;case 5:n=r*t%2+r*t%3==0;break;case 6:n=(r*t%2+r*t%3)%2==0;break;case 7:n=((r+t)%2+r*t%3)%2==0;break;default:throw Error("Unreachable")}!this.isFunction[t][r]&&n&&(this.modules[t][r]=!this.modules[t][r])}},t.prototype.getPenaltyScore=function(){for(var e=0,r=0;this.size>r;r++){for(var n=!1,a=0,i=[0,0,0,0,0,0,0],u=0;this.size>u;u++)this.modules[r][u]==n?5==++a?e+=t.PENALTY_N1:a>5&&e++:(this.finderPenaltyAddHistory(a,i),n||(e+=this.finderPenaltyCountPatterns(i)*t.PENALTY_N3),n=this.modules[r][u],a=1);e+=this.finderPenaltyTerminateAndCount(n,a,i)*t.PENALTY_N3}for(u=0;this.size>u;u++){n=!1;var s=0;for(i=[0,0,0,0,0,0,0],r=0;this.size>r;r++)this.modules[r][u]==n?5==++s?e+=t.PENALTY_N1:s>5&&e++:(this.finderPenaltyAddHistory(s,i),n||(e+=this.finderPenaltyCountPatterns(i)*t.PENALTY_N3),n=this.modules[r][u],s=1);e+=this.finderPenaltyTerminateAndCount(n,s,i)*t.PENALTY_N3}for(r=0;this.size-1>r;r++)for(u=0;this.size-1>u;u++){var l=this.modules[r][u];l==this.modules[r][u+1]&&l==this.modules[r+1][u]&&l==this.modules[r+1][u+1]&&(e+=t.PENALTY_N2)}for(var c=0,d=0,h=this.modules;h.length>d;d++){c=h[d].reduce(function(e,t){return e+(t?1:0)},c)}var f=this.size*this.size,v=Math.ceil(Math.abs(20*c-10*f)/f)-1;return o(v>=0&&9>=v),o((e+=v*t.PENALTY_N4)>=0&&2568888>=e),e},t.prototype.getAlignmentPatternPositions=function(){if(1==this.version)return[];for(var e=Math.floor(this.version/7)+2,t=2*Math.floor((8*this.version+3*e+5)/(4*e-4)),r=[6],n=this.size-7;e>r.length;n-=t)r.splice(1,0,n);return r},t.getNumRawDataModules=function(e){if(t.MIN_VERSION>e||e>t.MAX_VERSION)throw new RangeError("Version number out of range");var r=(16*e+128)*e+64;if(e>=2){var n=Math.floor(e/7)+2;r-=(25*n-10)*n-55,7>e||(r-=36)}return o(r>=208&&29648>=r),r},t.getNumDataCodewords=function(e,r){return Math.floor(t.getNumRawDataModules(e)/8)-t.ECC_CODEWORDS_PER_BLOCK[r.ordinal][e]*t.NUM_ERROR_CORRECTION_BLOCKS[r.ordinal][e]},t.reedSolomonComputeDivisor=function(e){if(1>e||e>255)throw new RangeError("Degree out of range");for(var r=[],n=0;e-1>n;n++)r.push(0);r.push(1);var o=1;for(n=0;e>n;n++){for(var a=0;r.length>a;a++)r[a]=t.reedSolomonMultiply(r[a],o),r.length>a+1&&(r[a]^=r[a+1]);o=t.reedSolomonMultiply(o,2)}return r},t.reedSolomonComputeRemainder=function(e,r){for(var n=r.map(function(e){return 0}),o=function(e){var o=e^n.shift();n.push(0),r.forEach(function(e,r){return n[r]^=t.reedSolomonMultiply(e,o)})},a=0,i=e;i.length>a;a++){o(i[a])}return n},t.reedSolomonMultiply=function(e,t){if(e>>>8!=0||t>>>8!=0)throw new RangeError("Byte out of range");for(var r=0,n=7;n>=0;n--)r=r<<1^285*(r>>>7),r^=(t>>>n&1)*e;return o(r>>>8==0),r},t.prototype.finderPenaltyCountPatterns=function(e){var t=e[1];o(3*this.size>=t);var r=t>0&&e[2]==t&&e[3]==3*t&&e[4]==t&&e[5]==t;return(!r||4*t>e[0]||t>e[6]?0:1)+(!r||4*t>e[6]||t>e[0]?0:1)},t.prototype.finderPenaltyTerminateAndCount=function(e,t,r){return e&&(this.finderPenaltyAddHistory(t,r),t=0),this.finderPenaltyAddHistory(t+=this.size,r),this.finderPenaltyCountPatterns(r)},t.prototype.finderPenaltyAddHistory=function(e,t){0==t[0]&&(e+=this.size),t.pop(),t.unshift(e)},t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],t}();function r(e,t,r){if(0>t||t>31||e>>>t!=0)throw new RangeError("Value out of range");for(var n=t-1;n>=0;n--)r.push(e>>>n&1)}function n(e,t){return!!(e>>>t&1)}function o(e){if(!e)throw Error("Assertion error")}e.QrCode=t;var a=function(){function e(e,t,r){if(this.mode=e,this.numChars=t,this.bitData=r,0>t)throw new RangeError("Invalid argument");this.bitData=r.slice()}return e.makeBytes=function(t){for(var n=[],o=0,a=t;a.length>o;o++){r(a[o],8,n)}return new e(e.Mode.BYTE,t.length,n)},e.makeNumeric=function(t){if(!e.isNumeric(t))throw new RangeError("String contains non-numeric characters");for(var n=[],o=0;t.length>o;){var a=Math.min(t.length-o,3);r(parseInt(t.substring(o,o+a),10),3*a+1,n),o+=a}return new e(e.Mode.NUMERIC,t.length,n)},e.makeAlphanumeric=function(t){if(!e.isAlphanumeric(t))throw new RangeError("String contains unencodable characters in alphanumeric mode");var n,o=[];for(n=0;t.length>=n+2;n+=2){var a=45*e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(n));r(a+=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(n+1)),11,o)}return t.length>n&&r(e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(n)),6,o),new e(e.Mode.ALPHANUMERIC,t.length,o)},e.makeSegments=function(t){return""==t?[]:e.isNumeric(t)?[e.makeNumeric(t)]:e.isAlphanumeric(t)?[e.makeAlphanumeric(t)]:[e.makeBytes(e.toUtf8ByteArray(t))]},e.makeEci=function(t){var n=[];if(0>t)throw new RangeError("ECI assignment value out of range");if(128>t)r(t,8,n);else if(16384>t)r(2,2,n),r(t,14,n);else{if(t>=1e6)throw new RangeError("ECI assignment value out of range");r(6,3,n),r(t,21,n)}return new e(e.Mode.ECI,0,n)},e.isNumeric=function(t){return e.NUMERIC_REGEX.test(t)},e.isAlphanumeric=function(t){return e.ALPHANUMERIC_REGEX.test(t)},e.prototype.getData=function(){return this.bitData.slice()},e.getTotalBits=function(e,t){for(var r=0,n=0,o=e;o.length>n;n++){var a=o[n],i=a.mode.numCharCountBits(t);if(a.numChars>=1<<i)return 1/0;r+=4+i+a.bitData.length}return r},e.toUtf8ByteArray=function(e){e=encodeURI(e);for(var t=[],r=0;e.length>r;r++)"%"!=e.charAt(r)?t.push(e.charCodeAt(r)):(t.push(parseInt(e.substring(r+1,r+3),16)),r+=2);return t},e.NUMERIC_REGEX=/^[0-9]*$/,e.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\/:-]*$/,e.ALPHANUMERIC_CHARSET="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",e}();e.QrSegment=a}(r||(r={})),function(e){var t,r;t=e.QrCode||(e.QrCode={}),r=function(){function e(e,t){this.ordinal=e,this.formatBits=t}return e.LOW=new e(0,1),e.MEDIUM=new e(1,0),e.QUARTILE=new e(2,3),e.HIGH=new e(3,2),e}(),t.Ecc=r}(r||(r={})),function(e){var t,r;t=e.QrSegment||(e.QrSegment={}),r=function(){function e(e,t){this.modeBits=e,this.numBitsCharCount=t}return e.prototype.numCharCountBits=function(e){return this.numBitsCharCount[Math.floor((e+7)/17)]},e.NUMERIC=new e(1,[10,12,14]),e.ALPHANUMERIC=new e(2,[9,11,13]),e.BYTE=new e(4,[8,16,16]),e.KANJI=new e(8,[8,10,12]),e.ECI=new e(7,[0,0,0]),e}(),t.Mode=r}(r||(r={}));var o=r,a=0;var i={L:o.QrCode.Ecc.LOW,M:o.QrCode.Ecc.MEDIUM,Q:o.QrCode.Ecc.QUARTILE,H:o.QrCode.Ecc.HIGH},u=function(){try{(new Path2D).addPath(new Path2D)}catch(e){return!1}return!0}();function s(e){return e in i}function l(e,t,r){var n=t>0&&e[t-1][r],o=e.length-1>t&&e[t+1][r],a=r>0&&e[t][r-1],i=e[t].length-1>r&&e[t][r+1];return{nw:!n&&!a,ne:!n&&!i,se:!o&&!i,sw:!o&&!a}}function c(e){var r=t.computed(function(){var t;return(null!==(t=e.margin)&&void 0!==t?t:0)>>>0}),n=t.computed(function(){var t=s(e.level)?e.level:"L";return o.QrCode.encodeText(e.value,i[t]).getModules()}),a=t.computed(function(){return n.value.length+2*r.value}),u=t.computed(function(){return e.radius>0?function(e,t,r){void 0===t&&(t=0),void 0===r&&(r=0);for(var n=[],o=Math.min(r,.5),a=0;e.length>a;a++)for(var i=0;e[a].length>i;i++)if(e[a][i]){var u=l(e,a,i),s=u.nw,c=u.ne,d=u.se,h=u.sw,f=i+t,v=a+t;n.push("M".concat(f+(s?o:0)," ").concat(v),"L".concat(f+1-(c?o:0)," ").concat(v)),c&&n.push("A".concat(o," ").concat(o," 0 0 1 ").concat(f+1," ").concat(v+o)),n.push("L".concat(f+1," ").concat(v+1-(d?o:0))),d&&n.push("A".concat(o," ").concat(o," 0 0 1 ").concat(f+1-o," ").concat(v+1)),n.push("L".concat(f+(h?o:0)," ").concat(v+1)),h&&n.push("A".concat(o," ").concat(o," 0 0 1 ").concat(f," ").concat(v+1-o)),n.push("L".concat(f," ").concat(v+(s?o:0))),s&&n.push("A".concat(o," ").concat(o," 0 0 1 ").concat(f+o," ").concat(v)),n.push("z")}return n.join("")}(n.value,r.value,e.radius):function(e,t){void 0===t&&(t=0);for(var r=[],n=0;e.length>n;n++)for(var o=e[n],a=null,i=0;o.length>i;i++){var u=o[i];if(u||null===a)if(i!==o.length-1)u&&null===a&&(a=i);else{if(!u)continue;r.push(null===a?"M".concat(i+t,",").concat(n+t," h1v1H").concat(i+t,"z"):"M".concat(a+t,",").concat(n+t," h").concat(i+1-a,"v1H").concat(a+t,"z"))}else r.push("M".concat(a+t," ").concat(n+t,"h").concat(i-a,"v1H").concat(a+t,"z")),a=null}return r.join("")}(n.value,r.value)}),c=t.computed(function(){if(!e.imageSettings.src)return null;var t=function(e,t,r,n){var o=n.width,a=n.height,i=n.x,u=n.y,s=e.length+2*r,l=Math.floor(.1*t),c=s/t,d=(o||l)*c,h=(a||l)*c;return{x:null==i?e.length/2-d/2:i*c,y:null==u?e.length/2-h/2:u*c,h:h,w:d,borderRadius:(n.borderRadius||0)*c}}(n.value,e.size,r.value,e.imageSettings);return{x:t.x+r.value,y:t.y+r.value,width:t.w,height:t.h,borderRadius:t.borderRadius}}),d=t.computed(function(){if(!e.imageSettings.excavate||!c.value)return null;var t=2/(e.size/a.value);return{x:c.value.x-t,y:c.value.y-t,width:c.value.width+2*t,height:c.value.height+2*t,borderRadius:c.value.borderRadius}});return{margin:r,numCells:a,cells:n,fgPath:u,imageProps:c,imageBorderProps:d}}var d={value:{type:String,required:!0,default:""},size:{type:Number,default:100},level:{type:String,default:"L",validator:function(e){return s(e)}},background:{type:String,default:"#fff"},foreground:{type:String,default:"#000"},margin:{type:Number,required:!1,default:0},imageSettings:{type:Object,required:!1,default:function(){return{}}},gradient:{type:Boolean,required:!1,default:!1},gradientType:{type:String,required:!1,default:"linear",validator:function(e){return["linear","radial"].indexOf(e)>-1}},gradientStartColor:{type:String,required:!1,default:"#000"},gradientEndColor:{type:String,required:!1,default:"#fff"},radius:{type:Number,required:!1,default:0,validator:function(e){return!isNaN(e)&&e>=0&&.5>=e}}},h=n(n({},d),{renderAs:{type:String,required:!1,default:"canvas",validator:function(e){return["canvas","svg"].indexOf(e)>-1}}}),f=t.defineComponent({name:"QRCodeSvg",props:d,setup:function(e){var r=c(e),o=r.numCells,i=r.fgPath,u=r.imageProps,s=r.imageBorderProps,l="function"==typeof t.useId?"".concat(t.useId(),"-").concat(a++):"vue-".concat(Math.random().toString(36).slice(2),"-").concat(a++),d="qrcode.vue-gradient-".concat(l),h="qrcode.vue-logo-clip-path-".concat(l),f=t.computed(function(){return e.gradient?t.h("linear"===e.gradientType?"linearGradient":"radialGradient",n({id:d},"linear"===e.gradientType?{x1:"0%",y1:"0%",x2:"100%",y2:"100%"}:{cx:"50%",cy:"50%",r:"50%",fx:"50%",fy:"50%"}),[t.h("stop",{offset:"0%",style:{stopColor:e.gradientStartColor}}),t.h("stop",{offset:"100%",style:{stopColor:e.gradientEndColor}})]):null}),v=t.computed(function(){if(!u.value)return null;var e=u.value.borderRadius;return e>0?t.h("clipPath",{id:h},[t.h("rect",{x:u.value.x,y:u.value.y,width:u.value.width,height:u.value.height,rx:e,ry:e})]):null});return function(){return t.h("svg",{width:e.size,height:e.size,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(o.value," ").concat(o.value),role:"img","aria-label":e.value},[t.h("defs",{},[f.value,v.value]),t.h("rect",{width:"100%",height:"100%",fill:e.background}),t.h("path",{fill:e.gradient?"url(#".concat(d,")"):e.foreground,d:i.value}),s.value&&t.h("rect",{x:s.value.x,y:s.value.y,width:s.value.width,height:s.value.height,fill:e.background,rx:s.value.borderRadius,ry:s.value.borderRadius}),e.imageSettings.src&&u.value&&t.h("image",n(n({href:e.imageSettings.src},u.value),u.value.borderRadius>0?{"clip-path":"url(#".concat(h,")")}:{}))])}}}),v=t.defineComponent({name:"QRCodeCanvas",props:d,setup:function(e,r){var o=c(e),a=o.margin,i=o.cells,s=o.numCells,l=o.fgPath,d=o.imageProps,h=o.imageBorderProps,f=t.ref(null),v=t.ref(null),g=function(e,t,r,n,o,a){e.beginPath(),e.roundRect?e.roundRect(t,r,n,o,a):e.rect(t,r,n,o)},p=function(){var t=e.size,r=e.background,n=e.foreground,o=e.gradient,c=e.gradientType,p=e.gradientStartColor,m=e.gradientEndColor,y=f.value;if(y){var w=y.getContext("2d");if(w){var E=v.value,C="undefined"!=typeof window&&window.devicePixelRatio||1,M=t/s.value*C;if(y.height=y.width=t*C,w.setTransform(M,0,0,M,0,0),w.fillStyle=r,w.fillRect(0,0,s.value,s.value),o){var R=void 0;(R="linear"===c?w.createLinearGradient(0,0,s.value,s.value):w.createRadialGradient(s.value/2,s.value/2,0,s.value/2,s.value/2,s.value/2)).addColorStop(0,p),R.addColorStop(1,m),w.fillStyle=R}else w.fillStyle=n;if(u?w.fill(new Path2D(l.value)):i.value.forEach(function(e,t){e.forEach(function(e,r){e&&w.fillRect(r+a.value,t+a.value,1,1)})}),e.imageSettings.src&&E&&0!==E.naturalWidth&&0!==E.naturalHeight&&d.value){if(h.value){var S=h.value;w.fillStyle=e.background,g(w,S.x,S.y,S.width,S.height,S.borderRadius),w.fill()}var A=d.value.borderRadius;A>0?(w.save(),g(w,d.value.x,d.value.y,d.value.width,d.value.height,A),w.clip(),w.drawImage(E,d.value.x,d.value.y,d.value.width,d.value.height),w.restore()):w.drawImage(E,d.value.x,d.value.y,d.value.width,d.value.height)}}}};return t.onMounted(p),t.watchEffect(p),function(){return t.h(t.Fragment,[t.h("canvas",n(n({},r.attrs),{ref:f,role:"img","aria-label":e.value,style:n(n({},r.attrs.style),{width:"".concat(e.size,"px"),height:"".concat(e.size,"px")})})),e.imageSettings.src&&t.h("img",{ref:v,src:e.imageSettings.src,style:{display:"none"},onLoad:p})])}}}),g=t.defineComponent({name:"Qrcode",props:h,setup:function(e){return function(){return t.h("svg"===e.renderAs?f:v,{value:e.value,size:e.size,margin:e.margin,level:e.level,background:e.background,foreground:e.foreground,imageSettings:e.imageSettings,gradient:e.gradient,gradientType:e.gradientType,gradientStartColor:e.gradientStartColor,gradientEndColor:e.gradientEndColor,radius:e.radius})}}});e.QrcodeCanvas=v,e.QrcodeSvg=f,e.default=g,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
7
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).QrcodeVue={},e.Vue)}(this,function(e,t){"use strict";var r,n=function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;n>r;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},n.apply(this,arguments)};"function"==typeof SuppressedError&&SuppressedError,function(e){var t=function(){function t(e,r,n,i){if(this.version=e,this.errorCorrectionLevel=r,this.modules=[],this.isFunction=[],t.MIN_VERSION>e||e>t.MAX_VERSION)throw new RangeError("Version value out of range");if(-1>i||i>7)throw new RangeError("Mask value out of range");this.size=4*e+17;for(var a=[],u=0;this.size>u;u++)a.push(!1);for(u=0;this.size>u;u++)this.modules.push(a.slice()),this.isFunction.push(a.slice());this.drawFunctionPatterns();var s=this.addEccAndInterleave(n);if(this.drawCodewords(s),-1==i){var l=1e9;for(u=0;8>u;u++){this.applyMask(u),this.drawFormatBits(u);var d=this.getPenaltyScore();l>d&&(i=u,l=d),this.applyMask(u)}}o(i>=0&&7>=i),this.mask=i,this.applyMask(i),this.drawFormatBits(i),this.isFunction=[]}return t.encodeText=function(r,n){var o=e.QrSegment.makeSegments(r);return t.encodeSegments(o,n)},t.encodeBinary=function(r,n){var o=e.QrSegment.makeBytes(r);return t.encodeSegments([o],n)},t.encodeSegments=function(e,n,a,u,s,l){if(void 0===a&&(a=1),void 0===u&&(u=40),void 0===s&&(s=-1),void 0===l&&(l=!0),t.MIN_VERSION>a||a>u||u>t.MAX_VERSION||-1>s||s>7)throw new RangeError("Invalid value");var d,c;for(d=a;;d++){var h=8*t.getNumDataCodewords(d,n),f=i.getTotalBits(e,d);if(h>=f){c=f;break}if(d>=u)throw new RangeError("Data too long")}for(var v=0,g=[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH];g.length>v;v++){var p=g[v];l&&c<=8*t.getNumDataCodewords(d,p)&&(n=p)}for(var m=[],w=0,y=e;y.length>w;w++){var E=y[w];r(E.mode.modeBits,4,m),r(E.numChars,E.mode.numCharCountBits(d),m);for(var C=0,R=E.getData();R.length>C;C++){m.push(R[C])}}o(m.length==c);var M=8*t.getNumDataCodewords(d,n);o(M>=m.length),r(0,Math.min(4,M-m.length),m),r(0,(8-m.length%8)%8,m),o(m.length%8==0);for(var S=236;M>m.length;S^=253)r(S,8,m);for(var A=[];m.length>8*A.length;)A.push(0);return m.forEach(function(e,t){return A[t>>>3]|=e<<7-(7&t)}),new t(d,n,A,s)},t.prototype.getModule=function(e,t){return e>=0&&this.size>e&&t>=0&&this.size>t&&this.modules[t][e]},t.prototype.getModules=function(){return this.modules},t.prototype.drawFunctionPatterns=function(){for(var e=0;this.size>e;e++)this.setFunctionModule(6,e,e%2==0),this.setFunctionModule(e,6,e%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);var t=this.getAlignmentPatternPositions(),r=t.length;for(e=0;r>e;e++)for(var n=0;r>n;n++)0==e&&0==n||0==e&&n==r-1||e==r-1&&0==n||this.drawAlignmentPattern(t[e],t[n]);this.drawFormatBits(0),this.drawVersion()},t.prototype.drawFormatBits=function(e){for(var t=this.errorCorrectionLevel.formatBits<<3|e,r=t,i=0;10>i;i++)r=r<<1^1335*(r>>>9);var a=21522^(t<<10|r);o(a>>>15==0);for(i=0;5>=i;i++)this.setFunctionModule(8,i,n(a,i));this.setFunctionModule(8,7,n(a,6)),this.setFunctionModule(8,8,n(a,7)),this.setFunctionModule(7,8,n(a,8));for(i=9;15>i;i++)this.setFunctionModule(14-i,8,n(a,i));for(i=0;8>i;i++)this.setFunctionModule(this.size-1-i,8,n(a,i));for(i=8;15>i;i++)this.setFunctionModule(8,this.size-15+i,n(a,i));this.setFunctionModule(8,this.size-8,!0)},t.prototype.drawVersion=function(){if(this.version>=7){for(var e=this.version,t=0;12>t;t++)e=e<<1^7973*(e>>>11);var r=this.version<<12|e;o(r>>>18==0);for(t=0;18>t;t++){var i=n(r,t),a=this.size-11+t%3,u=Math.floor(t/3);this.setFunctionModule(a,u,i),this.setFunctionModule(u,a,i)}}},t.prototype.drawFinderPattern=function(e,t){for(var r=-4;4>=r;r++)for(var n=-4;4>=n;n++){var o=Math.max(Math.abs(n),Math.abs(r)),i=e+n,a=t+r;i>=0&&this.size>i&&a>=0&&this.size>a&&this.setFunctionModule(i,a,2!=o&&4!=o)}},t.prototype.drawAlignmentPattern=function(e,t){for(var r=-2;2>=r;r++)for(var n=-2;2>=n;n++)this.setFunctionModule(e+n,t+r,1!=Math.max(Math.abs(n),Math.abs(r)))},t.prototype.setFunctionModule=function(e,t,r){this.modules[t][e]=r,this.isFunction[t][e]=!0},t.prototype.addEccAndInterleave=function(e){var r=this.version,n=this.errorCorrectionLevel;if(e.length!=t.getNumDataCodewords(r,n))throw new RangeError("Invalid argument");for(var i=t.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][r],a=t.ECC_CODEWORDS_PER_BLOCK[n.ordinal][r],u=Math.floor(t.getNumRawDataModules(r)/8),s=i-u%i,l=Math.floor(u/i),d=[],c=t.reedSolomonComputeDivisor(a),h=0,f=0;i>h;h++){var v=e.slice(f,f+l-a+(s>h?0:1));f+=v.length;var g=t.reedSolomonComputeRemainder(v,c);s>h&&v.push(0),d.push(v.concat(g))}var p=[],m=function(e){d.forEach(function(t,r){e==l-a&&s>r||p.push(t[e])})};for(h=0;d[0].length>h;h++)m(h);return o(p.length==u),p},t.prototype.drawCodewords=function(e){if(e.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw new RangeError("Invalid argument");for(var r=0,i=this.size-1;i>=1;i-=2){6==i&&(i=5);for(var a=0;this.size>a;a++)for(var u=0;2>u;u++){var s=i-u,l=!(i+1&2)?this.size-1-a:a;!this.isFunction[l][s]&&8*e.length>r&&(this.modules[l][s]=n(e[r>>>3],7-(7&r)),r++)}}o(r==8*e.length)},t.prototype.applyMask=function(e){if(0>e||e>7)throw new RangeError("Mask value out of range");for(var t=0;this.size>t;t++)for(var r=0;this.size>r;r++){var n=void 0;switch(e){case 0:n=(r+t)%2==0;break;case 1:n=t%2==0;break;case 2:n=r%3==0;break;case 3:n=(r+t)%3==0;break;case 4:n=(Math.floor(r/3)+Math.floor(t/2))%2==0;break;case 5:n=r*t%2+r*t%3==0;break;case 6:n=(r*t%2+r*t%3)%2==0;break;case 7:n=((r+t)%2+r*t%3)%2==0;break;default:throw Error("Unreachable")}!this.isFunction[t][r]&&n&&(this.modules[t][r]=!this.modules[t][r])}},t.prototype.getPenaltyScore=function(){for(var e=0,r=0;this.size>r;r++){for(var n=!1,i=0,a=[0,0,0,0,0,0,0],u=0;this.size>u;u++)this.modules[r][u]==n?5==++i?e+=t.PENALTY_N1:i>5&&e++:(this.finderPenaltyAddHistory(i,a),n||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),n=this.modules[r][u],i=1);e+=this.finderPenaltyTerminateAndCount(n,i,a)*t.PENALTY_N3}for(u=0;this.size>u;u++){n=!1;var s=0;for(a=[0,0,0,0,0,0,0],r=0;this.size>r;r++)this.modules[r][u]==n?5==++s?e+=t.PENALTY_N1:s>5&&e++:(this.finderPenaltyAddHistory(s,a),n||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),n=this.modules[r][u],s=1);e+=this.finderPenaltyTerminateAndCount(n,s,a)*t.PENALTY_N3}for(r=0;this.size-1>r;r++)for(u=0;this.size-1>u;u++){var l=this.modules[r][u];l==this.modules[r][u+1]&&l==this.modules[r+1][u]&&l==this.modules[r+1][u+1]&&(e+=t.PENALTY_N2)}for(var d=0,c=0,h=this.modules;h.length>c;c++){d=h[c].reduce(function(e,t){return e+(t?1:0)},d)}var f=this.size*this.size,v=Math.ceil(Math.abs(20*d-10*f)/f)-1;return o(v>=0&&9>=v),o((e+=v*t.PENALTY_N4)>=0&&2568888>=e),e},t.prototype.getAlignmentPatternPositions=function(){if(1==this.version)return[];for(var e=Math.floor(this.version/7)+2,t=2*Math.floor((8*this.version+3*e+5)/(4*e-4)),r=[6],n=this.size-7;e>r.length;n-=t)r.splice(1,0,n);return r},t.getNumRawDataModules=function(e){if(t.MIN_VERSION>e||e>t.MAX_VERSION)throw new RangeError("Version number out of range");var r=(16*e+128)*e+64;if(e>=2){var n=Math.floor(e/7)+2;r-=(25*n-10)*n-55,7>e||(r-=36)}return o(r>=208&&29648>=r),r},t.getNumDataCodewords=function(e,r){return Math.floor(t.getNumRawDataModules(e)/8)-t.ECC_CODEWORDS_PER_BLOCK[r.ordinal][e]*t.NUM_ERROR_CORRECTION_BLOCKS[r.ordinal][e]},t.reedSolomonComputeDivisor=function(e){if(1>e||e>255)throw new RangeError("Degree out of range");for(var r=[],n=0;e-1>n;n++)r.push(0);r.push(1);var o=1;for(n=0;e>n;n++){for(var i=0;r.length>i;i++)r[i]=t.reedSolomonMultiply(r[i],o),r.length>i+1&&(r[i]^=r[i+1]);o=t.reedSolomonMultiply(o,2)}return r},t.reedSolomonComputeRemainder=function(e,r){for(var n=r.map(function(e){return 0}),o=function(e){var o=e^n.shift();n.push(0),r.forEach(function(e,r){return n[r]^=t.reedSolomonMultiply(e,o)})},i=0,a=e;a.length>i;i++){o(a[i])}return n},t.reedSolomonMultiply=function(e,t){if(e>>>8!=0||t>>>8!=0)throw new RangeError("Byte out of range");for(var r=0,n=7;n>=0;n--)r=r<<1^285*(r>>>7),r^=(t>>>n&1)*e;return o(r>>>8==0),r},t.prototype.finderPenaltyCountPatterns=function(e){var t=e[1];o(3*this.size>=t);var r=t>0&&e[2]==t&&e[3]==3*t&&e[4]==t&&e[5]==t;return(!r||4*t>e[0]||t>e[6]?0:1)+(!r||4*t>e[6]||t>e[0]?0:1)},t.prototype.finderPenaltyTerminateAndCount=function(e,t,r){return e&&(this.finderPenaltyAddHistory(t,r),t=0),this.finderPenaltyAddHistory(t+=this.size,r),this.finderPenaltyCountPatterns(r)},t.prototype.finderPenaltyAddHistory=function(e,t){0==t[0]&&(e+=this.size),t.pop(),t.unshift(e)},t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],t}();function r(e,t,r){if(0>t||t>31||e>>>t!=0)throw new RangeError("Value out of range");for(var n=t-1;n>=0;n--)r.push(e>>>n&1)}function n(e,t){return!!(e>>>t&1)}function o(e){if(!e)throw Error("Assertion error")}e.QrCode=t;var i=function(){function e(e,t,r){if(this.mode=e,this.numChars=t,this.bitData=r,0>t)throw new RangeError("Invalid argument");this.bitData=r.slice()}return e.makeBytes=function(t){for(var n=[],o=0,i=t;i.length>o;o++){r(i[o],8,n)}return new e(e.Mode.BYTE,t.length,n)},e.makeNumeric=function(t){if(!e.isNumeric(t))throw new RangeError("String contains non-numeric characters");for(var n=[],o=0;t.length>o;){var i=Math.min(t.length-o,3);r(parseInt(t.substring(o,o+i),10),3*i+1,n),o+=i}return new e(e.Mode.NUMERIC,t.length,n)},e.makeAlphanumeric=function(t){if(!e.isAlphanumeric(t))throw new RangeError("String contains unencodable characters in alphanumeric mode");var n,o=[];for(n=0;t.length>=n+2;n+=2){var i=45*e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(n));r(i+=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(n+1)),11,o)}return t.length>n&&r(e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(n)),6,o),new e(e.Mode.ALPHANUMERIC,t.length,o)},e.makeSegments=function(t){return""==t?[]:e.isNumeric(t)?[e.makeNumeric(t)]:e.isAlphanumeric(t)?[e.makeAlphanumeric(t)]:[e.makeBytes(e.toUtf8ByteArray(t))]},e.makeEci=function(t){var n=[];if(0>t)throw new RangeError("ECI assignment value out of range");if(128>t)r(t,8,n);else if(16384>t)r(2,2,n),r(t,14,n);else{if(t>=1e6)throw new RangeError("ECI assignment value out of range");r(6,3,n),r(t,21,n)}return new e(e.Mode.ECI,0,n)},e.isNumeric=function(t){return e.NUMERIC_REGEX.test(t)},e.isAlphanumeric=function(t){return e.ALPHANUMERIC_REGEX.test(t)},e.prototype.getData=function(){return this.bitData.slice()},e.getTotalBits=function(e,t){for(var r=0,n=0,o=e;o.length>n;n++){var i=o[n],a=i.mode.numCharCountBits(t);if(i.numChars>=1<<a)return 1/0;r+=4+a+i.bitData.length}return r},e.toUtf8ByteArray=function(e){e=encodeURI(e);for(var t=[],r=0;e.length>r;r++)"%"!=e.charAt(r)?t.push(e.charCodeAt(r)):(t.push(parseInt(e.substring(r+1,r+3),16)),r+=2);return t},e.NUMERIC_REGEX=/^[0-9]*$/,e.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\/:-]*$/,e.ALPHANUMERIC_CHARSET="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",e}();e.QrSegment=i}(r||(r={})),function(e){var t,r;t=e.QrCode||(e.QrCode={}),r=function(){function e(e,t){this.ordinal=e,this.formatBits=t}return e.LOW=new e(0,1),e.MEDIUM=new e(1,0),e.QUARTILE=new e(2,3),e.HIGH=new e(3,2),e}(),t.Ecc=r}(r||(r={})),function(e){var t,r;t=e.QrSegment||(e.QrSegment={}),r=function(){function e(e,t){this.modeBits=e,this.numBitsCharCount=t}return e.prototype.numCharCountBits=function(e){return this.numBitsCharCount[Math.floor((e+7)/17)]},e.NUMERIC=new e(1,[10,12,14]),e.ALPHANUMERIC=new e(2,[9,11,13]),e.BYTE=new e(4,[8,16,16]),e.KANJI=new e(8,[8,10,12]),e.ECI=new e(7,[0,0,0]),e}(),t.Mode=r}(r||(r={}));var o=r,i=0;var a={L:o.QrCode.Ecc.LOW,M:o.QrCode.Ecc.MEDIUM,Q:o.QrCode.Ecc.QUARTILE,H:o.QrCode.Ecc.HIGH},u=function(){try{(new Path2D).addPath(new Path2D)}catch(e){return!1}return!0}();function s(e){return e in a}function l(e,t,r){var n=t>0&&e[t-1][r],o=e.length-1>t&&e[t+1][r],i=r>0&&e[t][r-1],a=e[t].length-1>r&&e[t][r+1];return{nw:!n&&!i,ne:!n&&!a,se:!o&&!a,sw:!o&&!i}}function d(e){var r=t.computed(function(){var t;return(null!==(t=e.margin)&&void 0!==t?t:0)>>>0}),n=t.computed(function(){var t=s(e.level)?e.level:"L";return o.QrCode.encodeText(e.value,a[t]).getModules()}),i=t.computed(function(){return n.value.length+2*r.value}),u=t.computed(function(){return e.radius>0?function(e,t,r){void 0===t&&(t=0),void 0===r&&(r=0);for(var n=[],o=Math.min(r,.5),i=0;e.length>i;i++)for(var a=0;e[i].length>a;a++)if(e[i][a]){var u=l(e,i,a),s=u.nw,d=u.ne,c=u.se,h=u.sw,f=a+t,v=i+t;n.push("M".concat(f+(s?o:0)," ").concat(v),"L".concat(f+1-(d?o:0)," ").concat(v)),d&&n.push("A".concat(o," ").concat(o," 0 0 1 ").concat(f+1," ").concat(v+o)),n.push("L".concat(f+1," ").concat(v+1-(c?o:0))),c&&n.push("A".concat(o," ").concat(o," 0 0 1 ").concat(f+1-o," ").concat(v+1)),n.push("L".concat(f+(h?o:0)," ").concat(v+1)),h&&n.push("A".concat(o," ").concat(o," 0 0 1 ").concat(f," ").concat(v+1-o)),n.push("L".concat(f," ").concat(v+(s?o:0))),s&&n.push("A".concat(o," ").concat(o," 0 0 1 ").concat(f+o," ").concat(v)),n.push("z")}return n.join("")}(n.value,r.value,e.radius):function(e,t){void 0===t&&(t=0);for(var r=[],n=0;e.length>n;n++)for(var o=e[n],i=null,a=0;o.length>a;a++){var u=o[a];if(u||null===i)if(a!==o.length-1)u&&null===i&&(i=a);else{if(!u)continue;r.push(null===i?"M".concat(a+t,",").concat(n+t," h1v1H").concat(a+t,"z"):"M".concat(i+t,",").concat(n+t," h").concat(a+1-i,"v1H").concat(i+t,"z"))}else r.push("M".concat(i+t," ").concat(n+t,"h").concat(a-i,"v1H").concat(i+t,"z")),i=null}return r.join("")}(n.value,r.value)}),d=t.computed(function(){if(!e.imageSettings.src)return null;var t=function(e,t,r,n){var o=n.width,i=n.height,a=n.x,u=n.y,s=e.length+2*r,l=Math.floor(.1*t),d=s/t,c=(o||l)*d,h=(i||l)*d;return{x:null==a?e.length/2-c/2:a*d,y:null==u?e.length/2-h/2:u*d,h:h,w:c,borderRadius:(n.borderRadius||0)*d}}(n.value,e.size,r.value,e.imageSettings);return{x:t.x+r.value,y:t.y+r.value,width:t.w,height:t.h,borderRadius:t.borderRadius}}),c=t.computed(function(){if(!e.imageSettings.excavate||!d.value)return null;var t=2/(e.size/i.value);return{x:d.value.x-t,y:d.value.y-t,width:d.value.width+2*t,height:d.value.height+2*t,borderRadius:d.value.borderRadius}});return{margin:r,numCells:i,cells:n,fgPath:u,imageProps:d,imageBorderProps:c}}function c(e,t){var r=document.createElement("a");r.download=t,r.href=e,document.body.appendChild(r),r.click(),document.body.removeChild(r)}var h={value:{type:String,required:!0,default:""},size:{type:Number,default:100},level:{type:String,default:"L",validator:function(e){return s(e)}},background:{type:String,default:"#fff"},foreground:{type:String,default:"#000"},margin:{type:Number,default:0,validator:function(e){return e>=0}},imageSettings:{type:Object,default:function(){return{}}},gradient:{type:Boolean,default:!1},gradientType:{type:String,default:"linear",validator:function(e){return["linear","radial"].indexOf(e)>-1}},gradientStartColor:{type:String,default:"#000"},gradientEndColor:{type:String,default:"#fff"},radius:{type:Number,default:0,validator:function(e){return!isNaN(e)&&e>=0&&.5>=e}},id:{type:String,required:!1}},f=n(n({},h),{renderAs:{type:String,required:!1,default:"canvas",validator:function(e){return["canvas","svg"].indexOf(e)>-1}}}),v=t.defineComponent({name:"QRCodeSvg",props:h,setup:function(e,r){var o=d(e),a=o.numCells,u=o.fgPath,s=o.imageProps,l=o.imageBorderProps,h=t.ref(),f=e.id||"v-".concat(i++),v="qrcode.vue-gradient-".concat(f),g="qrcode.vue-logo-clip-path-".concat(f),p=t.computed(function(){return e.gradient?t.h("linear"===e.gradientType?"linearGradient":"radialGradient",n({id:v},"linear"===e.gradientType?{x1:"0%",y1:"0%",x2:"100%",y2:"100%"}:{cx:"50%",cy:"50%",r:"50%",fx:"50%",fy:"50%"}),[t.h("stop",{offset:"0%",style:{stopColor:e.gradientStartColor}}),t.h("stop",{offset:"100%",style:{stopColor:e.gradientEndColor}})]):null}),m=t.computed(function(){if(!s.value)return null;var e=s.value.borderRadius;return e>0?t.h("clipPath",{id:g},[t.h("rect",{x:s.value.x,y:s.value.y,width:s.value.width,height:s.value.height,rx:e,ry:e})]):null}),w=function(e){return"data:image/svg+xml;charset=utf-8,"+encodeURIComponent('<?xml version="1.0" standalone="no"?>'+(new XMLSerializer).serializeToString(e))};return r.expose({toDataURL:function(){var e=h.value;if(e)return w(e)},download:function(e){void 0===e&&(e="qrcode.svg");var t=h.value;t&&c(w(t),e)}}),function(){return t.h("svg",{ref:h,width:e.size,height:e.size,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(a.value," ").concat(a.value),role:"img"},[t.h("defs",{},[p.value,m.value].filter(Boolean)),t.h("rect",{width:"100%",height:"100%",fill:e.background}),t.h("path",{fill:e.gradient?"url(#".concat(v,")"):e.foreground,d:u.value}),l.value&&t.h("rect",{x:l.value.x,y:l.value.y,width:l.value.width,height:l.value.height,fill:e.background,rx:l.value.borderRadius,ry:l.value.borderRadius}),e.imageSettings.src&&s.value&&t.h("image",n({href:e.imageSettings.src,crossorigin:e.imageSettings.crossOrigin,"clip-path":s.value.borderRadius>0?"url(#".concat(g,")"):void 0},s.value))])}}}),g=t.defineComponent({name:"QRCodeCanvas",props:h,setup:function(e,r){var o=d(e),i=o.margin,a=o.cells,s=o.numCells,l=o.fgPath,h=o.imageProps,f=o.imageBorderProps,v=t.ref(null),g=t.ref(null),p=function(e,t,r,n,o,i){e.beginPath(),e.roundRect?e.roundRect(t,r,n,o,i):e.rect(t,r,n,o)},m=function(){var t=e.size,r=e.background,n=e.foreground,o=e.gradient,d=e.gradientType,c=e.gradientStartColor,m=e.gradientEndColor,w=v.value;if(w){var y=w.getContext("2d");if(y){var E=g.value,C="undefined"!=typeof window&&window.devicePixelRatio||1,R=t/s.value*C;if(w.height=w.width=t*C,y.setTransform(R,0,0,R,0,0),y.fillStyle=r,y.fillRect(0,0,s.value,s.value),o){var M=void 0;(M="linear"===d?y.createLinearGradient(0,0,s.value,s.value):y.createRadialGradient(s.value/2,s.value/2,0,s.value/2,s.value/2,s.value/2)).addColorStop(0,c),M.addColorStop(1,m),y.fillStyle=M}else y.fillStyle=n;if(u?y.fill(new Path2D(l.value)):a.value.forEach(function(e,t){e.forEach(function(e,r){e&&y.fillRect(r+i.value,t+i.value,1,1)})}),e.imageSettings.src&&E&&0!==E.naturalWidth&&0!==E.naturalHeight&&h.value){if(f.value){var S=f.value;y.fillStyle=e.background,p(y,S.x,S.y,S.width,S.height,S.borderRadius),y.fill()}var A=h.value.borderRadius;A>0?(y.save(),p(y,h.value.x,h.value.y,h.value.width,h.value.height,A),y.clip(),y.drawImage(E,h.value.x,h.value.y,h.value.width,h.value.height),y.restore()):y.drawImage(E,h.value.x,h.value.y,h.value.width,h.value.height)}}}};return t.onMounted(m),t.watchEffect(m,{flush:"post"}),r.expose({toDataURL:function(e,t){var r;return null===(r=v.value)||void 0===r?void 0:r.toDataURL(e,t)},download:function(e){void 0===e&&(e="qrcode.png");var t=v.value;t&&c(t.toDataURL("image/png"),e)}}),function(){return t.h(t.Fragment,[t.h("canvas",n(n({},r.attrs),{ref:v,role:"img",style:n(n({},r.attrs.style),{width:"".concat(e.size,"px"),height:"".concat(e.size,"px")})})),e.imageSettings.src&&t.h("img",{ref:g,src:e.imageSettings.src,crossorigin:e.imageSettings.crossOrigin,style:{display:"none"},onLoad:m})])}}}),p=t.defineComponent({name:"Qrcode",props:f,setup:function(e,r){var n=t.ref();return r.expose({toDataURL:function(e,t){var r,o;return null===(o=null===(r=n.value)||void 0===r?void 0:r.toDataURL)||void 0===o?void 0:o.call(r,e,t)},download:function(e){var t,r;return null===(r=null===(t=n.value)||void 0===t?void 0:t.download)||void 0===r?void 0:r.call(t,e)}}),function(){return t.h("svg"===e.renderAs?v:g,{ref:n,value:e.value,size:e.size,margin:e.margin,level:e.level,background:e.background,foreground:e.foreground,imageSettings:e.imageSettings,gradient:e.gradient,gradientType:e.gradientType,gradientStartColor:e.gradientStartColor,gradientEndColor:e.gradientEndColor,radius:e.radius,id:e.id})}}});e.QrcodeCanvas=g,e.QrcodeSvg=v,e.default=p,Object.defineProperty(e,"__esModule",{value:!0})});
|