qrcode.vue 3.9.1 → 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 +14 -0
- package/README-zh_cn.md +51 -1
- package/README.md +51 -1
- package/README.zh-hant.md +360 -0
- package/dist/index.d.ts +7 -42
- package/dist/qrcode.vue.browser.js +52 -15
- package/dist/qrcode.vue.browser.min.js +2 -2
- package/dist/qrcode.vue.cjs.js +52 -15
- package/dist/qrcode.vue.esm.js +53 -16
- package/package.json +10 -8
package/dist/index.d.ts
CHANGED
|
@@ -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,38 +37,32 @@ 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
|
};
|
|
@@ -102,38 +97,32 @@ export declare const QrcodeSvg: import("vue").DefineComponent<ExtractPropTypes<{
|
|
|
102
97
|
};
|
|
103
98
|
margin: {
|
|
104
99
|
type: NumberConstructor;
|
|
105
|
-
required: boolean;
|
|
106
100
|
default: number;
|
|
101
|
+
validator: (m: any) => boolean;
|
|
107
102
|
};
|
|
108
103
|
imageSettings: {
|
|
109
104
|
type: PropType<ImageSettings>;
|
|
110
|
-
required: boolean;
|
|
111
105
|
default: () => {};
|
|
112
106
|
};
|
|
113
107
|
gradient: {
|
|
114
108
|
type: BooleanConstructor;
|
|
115
|
-
required: boolean;
|
|
116
109
|
default: boolean;
|
|
117
110
|
};
|
|
118
111
|
gradientType: {
|
|
119
112
|
type: PropType<GradientType>;
|
|
120
|
-
required: boolean;
|
|
121
113
|
default: string;
|
|
122
114
|
validator: (t: any) => boolean;
|
|
123
115
|
};
|
|
124
116
|
gradientStartColor: {
|
|
125
117
|
type: StringConstructor;
|
|
126
|
-
required: boolean;
|
|
127
118
|
default: string;
|
|
128
119
|
};
|
|
129
120
|
gradientEndColor: {
|
|
130
121
|
type: StringConstructor;
|
|
131
|
-
required: boolean;
|
|
132
122
|
default: string;
|
|
133
123
|
};
|
|
134
124
|
radius: {
|
|
135
125
|
type: NumberConstructor;
|
|
136
|
-
required: boolean;
|
|
137
126
|
default: number;
|
|
138
127
|
validator: (r: any) => boolean;
|
|
139
128
|
};
|
|
@@ -180,38 +169,32 @@ export declare const QrcodeCanvas: import("vue").DefineComponent<ExtractPropType
|
|
|
180
169
|
};
|
|
181
170
|
margin: {
|
|
182
171
|
type: NumberConstructor;
|
|
183
|
-
required: boolean;
|
|
184
172
|
default: number;
|
|
173
|
+
validator: (m: any) => boolean;
|
|
185
174
|
};
|
|
186
175
|
imageSettings: {
|
|
187
176
|
type: PropType<ImageSettings>;
|
|
188
|
-
required: boolean;
|
|
189
177
|
default: () => {};
|
|
190
178
|
};
|
|
191
179
|
gradient: {
|
|
192
180
|
type: BooleanConstructor;
|
|
193
|
-
required: boolean;
|
|
194
181
|
default: boolean;
|
|
195
182
|
};
|
|
196
183
|
gradientType: {
|
|
197
184
|
type: PropType<GradientType>;
|
|
198
|
-
required: boolean;
|
|
199
185
|
default: string;
|
|
200
186
|
validator: (t: any) => boolean;
|
|
201
187
|
};
|
|
202
188
|
gradientStartColor: {
|
|
203
189
|
type: StringConstructor;
|
|
204
|
-
required: boolean;
|
|
205
190
|
default: string;
|
|
206
191
|
};
|
|
207
192
|
gradientEndColor: {
|
|
208
193
|
type: StringConstructor;
|
|
209
|
-
required: boolean;
|
|
210
194
|
default: string;
|
|
211
195
|
};
|
|
212
196
|
radius: {
|
|
213
197
|
type: NumberConstructor;
|
|
214
|
-
required: boolean;
|
|
215
198
|
default: number;
|
|
216
199
|
validator: (r: any) => boolean;
|
|
217
200
|
};
|
|
@@ -246,38 +229,32 @@ export declare const QrcodeCanvas: import("vue").DefineComponent<ExtractPropType
|
|
|
246
229
|
};
|
|
247
230
|
margin: {
|
|
248
231
|
type: NumberConstructor;
|
|
249
|
-
required: boolean;
|
|
250
232
|
default: number;
|
|
233
|
+
validator: (m: any) => boolean;
|
|
251
234
|
};
|
|
252
235
|
imageSettings: {
|
|
253
236
|
type: PropType<ImageSettings>;
|
|
254
|
-
required: boolean;
|
|
255
237
|
default: () => {};
|
|
256
238
|
};
|
|
257
239
|
gradient: {
|
|
258
240
|
type: BooleanConstructor;
|
|
259
|
-
required: boolean;
|
|
260
241
|
default: boolean;
|
|
261
242
|
};
|
|
262
243
|
gradientType: {
|
|
263
244
|
type: PropType<GradientType>;
|
|
264
|
-
required: boolean;
|
|
265
245
|
default: string;
|
|
266
246
|
validator: (t: any) => boolean;
|
|
267
247
|
};
|
|
268
248
|
gradientStartColor: {
|
|
269
249
|
type: StringConstructor;
|
|
270
|
-
required: boolean;
|
|
271
250
|
default: string;
|
|
272
251
|
};
|
|
273
252
|
gradientEndColor: {
|
|
274
253
|
type: StringConstructor;
|
|
275
|
-
required: boolean;
|
|
276
254
|
default: string;
|
|
277
255
|
};
|
|
278
256
|
radius: {
|
|
279
257
|
type: NumberConstructor;
|
|
280
|
-
required: boolean;
|
|
281
258
|
default: number;
|
|
282
259
|
validator: (r: any) => boolean;
|
|
283
260
|
};
|
|
@@ -330,38 +307,32 @@ declare const QrcodeVue: import("vue").DefineComponent<ExtractPropTypes<{
|
|
|
330
307
|
};
|
|
331
308
|
margin: {
|
|
332
309
|
type: NumberConstructor;
|
|
333
|
-
required: boolean;
|
|
334
310
|
default: number;
|
|
311
|
+
validator: (m: any) => boolean;
|
|
335
312
|
};
|
|
336
313
|
imageSettings: {
|
|
337
314
|
type: PropType<ImageSettings>;
|
|
338
|
-
required: boolean;
|
|
339
315
|
default: () => {};
|
|
340
316
|
};
|
|
341
317
|
gradient: {
|
|
342
318
|
type: BooleanConstructor;
|
|
343
|
-
required: boolean;
|
|
344
319
|
default: boolean;
|
|
345
320
|
};
|
|
346
321
|
gradientType: {
|
|
347
322
|
type: PropType<GradientType>;
|
|
348
|
-
required: boolean;
|
|
349
323
|
default: string;
|
|
350
324
|
validator: (t: any) => boolean;
|
|
351
325
|
};
|
|
352
326
|
gradientStartColor: {
|
|
353
327
|
type: StringConstructor;
|
|
354
|
-
required: boolean;
|
|
355
328
|
default: string;
|
|
356
329
|
};
|
|
357
330
|
gradientEndColor: {
|
|
358
331
|
type: StringConstructor;
|
|
359
|
-
required: boolean;
|
|
360
332
|
default: string;
|
|
361
333
|
};
|
|
362
334
|
radius: {
|
|
363
335
|
type: NumberConstructor;
|
|
364
|
-
required: boolean;
|
|
365
336
|
default: number;
|
|
366
337
|
validator: (r: any) => boolean;
|
|
367
338
|
};
|
|
@@ -402,38 +373,32 @@ declare const QrcodeVue: import("vue").DefineComponent<ExtractPropTypes<{
|
|
|
402
373
|
};
|
|
403
374
|
margin: {
|
|
404
375
|
type: NumberConstructor;
|
|
405
|
-
required: boolean;
|
|
406
376
|
default: number;
|
|
377
|
+
validator: (m: any) => boolean;
|
|
407
378
|
};
|
|
408
379
|
imageSettings: {
|
|
409
380
|
type: PropType<ImageSettings>;
|
|
410
|
-
required: boolean;
|
|
411
381
|
default: () => {};
|
|
412
382
|
};
|
|
413
383
|
gradient: {
|
|
414
384
|
type: BooleanConstructor;
|
|
415
|
-
required: boolean;
|
|
416
385
|
default: boolean;
|
|
417
386
|
};
|
|
418
387
|
gradientType: {
|
|
419
388
|
type: PropType<GradientType>;
|
|
420
|
-
required: boolean;
|
|
421
389
|
default: string;
|
|
422
390
|
validator: (t: any) => boolean;
|
|
423
391
|
};
|
|
424
392
|
gradientStartColor: {
|
|
425
393
|
type: StringConstructor;
|
|
426
|
-
required: boolean;
|
|
427
394
|
default: string;
|
|
428
395
|
};
|
|
429
396
|
gradientEndColor: {
|
|
430
397
|
type: StringConstructor;
|
|
431
|
-
required: boolean;
|
|
432
398
|
default: string;
|
|
433
399
|
};
|
|
434
400
|
radius: {
|
|
435
401
|
type: NumberConstructor;
|
|
436
|
-
required: boolean;
|
|
437
402
|
default: number;
|
|
438
403
|
validator: (r: any) => boolean;
|
|
439
404
|
};
|
|
@@ -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.
|
|
@@ -1073,6 +1073,14 @@ function useQRCode(props) {
|
|
|
1073
1073
|
});
|
|
1074
1074
|
return { margin: margin, numCells: numCells, cells: cells, fgPath: fgPath, imageProps: imageProps, imageBorderProps: imageBorderProps };
|
|
1075
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
|
+
}
|
|
1076
1084
|
var QRCodeProps = {
|
|
1077
1085
|
value: {
|
|
1078
1086
|
type: String,
|
|
@@ -1098,38 +1106,32 @@ var QRCodeProps = {
|
|
|
1098
1106
|
},
|
|
1099
1107
|
margin: {
|
|
1100
1108
|
type: Number,
|
|
1101
|
-
required: false,
|
|
1102
1109
|
default: DEFAULT_MARGIN,
|
|
1110
|
+
validator: function (m) { return m >= 0; },
|
|
1103
1111
|
},
|
|
1104
1112
|
imageSettings: {
|
|
1105
1113
|
type: Object,
|
|
1106
|
-
required: false,
|
|
1107
1114
|
default: function () { return ({}); },
|
|
1108
1115
|
},
|
|
1109
1116
|
gradient: {
|
|
1110
1117
|
type: Boolean,
|
|
1111
|
-
required: false,
|
|
1112
1118
|
default: false,
|
|
1113
1119
|
},
|
|
1114
1120
|
gradientType: {
|
|
1115
1121
|
type: String,
|
|
1116
|
-
required: false,
|
|
1117
1122
|
default: 'linear',
|
|
1118
1123
|
validator: function (t) { return ['linear', 'radial'].indexOf(t) > -1; },
|
|
1119
1124
|
},
|
|
1120
1125
|
gradientStartColor: {
|
|
1121
1126
|
type: String,
|
|
1122
|
-
required: false,
|
|
1123
1127
|
default: '#000',
|
|
1124
1128
|
},
|
|
1125
1129
|
gradientEndColor: {
|
|
1126
1130
|
type: String,
|
|
1127
|
-
required: false,
|
|
1128
1131
|
default: '#fff',
|
|
1129
1132
|
},
|
|
1130
1133
|
radius: {
|
|
1131
1134
|
type: Number,
|
|
1132
|
-
required: false,
|
|
1133
1135
|
default: 0,
|
|
1134
1136
|
validator: function (r) { return !isNaN(r) && r >= 0 && r <= 0.5; },
|
|
1135
1137
|
},
|
|
@@ -1147,8 +1149,9 @@ var QRCodeVueProps = __assign(__assign({}, QRCodeProps), { renderAs: {
|
|
|
1147
1149
|
var QrcodeSvg = vue.defineComponent({
|
|
1148
1150
|
name: 'QRCodeSvg',
|
|
1149
1151
|
props: QRCodeProps,
|
|
1150
|
-
setup: function (props) {
|
|
1152
|
+
setup: function (props, ctx) {
|
|
1151
1153
|
var _a = useQRCode(props), numCells = _a.numCells, fgPath = _a.fgPath, imageProps = _a.imageProps, imageBorderProps = _a.imageBorderProps;
|
|
1154
|
+
var svgEl = vue.ref();
|
|
1152
1155
|
var uid = getUid(props.id);
|
|
1153
1156
|
var qrGradientId = "qrcode.vue-gradient-".concat(uid);
|
|
1154
1157
|
var qrLogoClipPathId = "qrcode.vue-logo-clip-path-".concat(uid);
|
|
@@ -1197,15 +1200,32 @@ var QrcodeSvg = vue.defineComponent({
|
|
|
1197
1200
|
}),
|
|
1198
1201
|
]);
|
|
1199
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
|
+
});
|
|
1200
1220
|
return function () { return vue.h('svg', {
|
|
1221
|
+
ref: svgEl,
|
|
1201
1222
|
width: props.size,
|
|
1202
1223
|
height: props.size,
|
|
1203
1224
|
xmlns: 'http://www.w3.org/2000/svg',
|
|
1204
1225
|
viewBox: "0 0 ".concat(numCells.value, " ").concat(numCells.value),
|
|
1205
1226
|
role: 'img',
|
|
1206
|
-
'aria-label': props.value,
|
|
1207
1227
|
}, [
|
|
1208
|
-
vue.h('defs', {}, [gradientVNode.value, clipPathVNode.value]),
|
|
1228
|
+
vue.h('defs', {}, [gradientVNode.value, clipPathVNode.value].filter(Boolean)),
|
|
1209
1229
|
vue.h('rect', {
|
|
1210
1230
|
width: '100%',
|
|
1211
1231
|
height: '100%',
|
|
@@ -1224,7 +1244,7 @@ var QrcodeSvg = vue.defineComponent({
|
|
|
1224
1244
|
rx: imageBorderProps.value.borderRadius,
|
|
1225
1245
|
ry: imageBorderProps.value.borderRadius,
|
|
1226
1246
|
}),
|
|
1227
|
-
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)),
|
|
1228
1248
|
]); };
|
|
1229
1249
|
},
|
|
1230
1250
|
});
|
|
@@ -1310,12 +1330,23 @@ var QrcodeCanvas = vue.defineComponent({
|
|
|
1310
1330
|
}
|
|
1311
1331
|
};
|
|
1312
1332
|
vue.onMounted(generate);
|
|
1313
|
-
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
|
+
});
|
|
1314
1344
|
return function () { return vue.h(vue.Fragment, [
|
|
1315
|
-
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") }) })),
|
|
1316
1346
|
props.imageSettings.src && vue.h('img', {
|
|
1317
1347
|
ref: imageEl,
|
|
1318
1348
|
src: props.imageSettings.src,
|
|
1349
|
+
crossorigin: props.imageSettings.crossOrigin,
|
|
1319
1350
|
style: { display: 'none' },
|
|
1320
1351
|
onLoad: generate,
|
|
1321
1352
|
})
|
|
@@ -1325,8 +1356,14 @@ var QrcodeCanvas = vue.defineComponent({
|
|
|
1325
1356
|
var QrcodeVue = vue.defineComponent({
|
|
1326
1357
|
name: 'Qrcode',
|
|
1327
1358
|
props: QRCodeVueProps,
|
|
1328
|
-
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
|
+
});
|
|
1329
1365
|
return function () { return vue.h(props.renderAs === 'svg' ? QrcodeSvg : QrcodeCanvas, {
|
|
1366
|
+
ref: childRef,
|
|
1330
1367
|
value: props.value,
|
|
1331
1368
|
size: props.size,
|
|
1332
1369
|
margin: props.margin,
|
|
@@ -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,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=[],y=0,w=e;w.length>y;y++){var E=w[y];r(E.mode.modeBits,4,m),r(E.numChars,E.mode.numCharCountBits(d),m);for(var C=0,M=E.getData();M.length>C;C++){m.push(M[C])}}o(m.length==c);var R=8*t.getNumDataCodewords(d,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(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}}var c={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}},id:{type:String,required:!1}},h=n(n({},c),{renderAs:{type:String,required:!1,default:"canvas",validator:function(e){return["canvas","svg"].indexOf(e)>-1}}}),f=t.defineComponent({name:"QRCodeSvg",props:c,setup:function(e){var r=d(e),o=r.numCells,a=r.fgPath,u=r.imageProps,s=r.imageBorderProps,l=e.id||"v-".concat(i++),c="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:c},"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(c,")"):e.foreground,d:a.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:c,setup:function(e,r){var o=d(e),i=o.margin,a=o.cells,s=o.numCells,l=o.fgPath,c=o.imageProps,h=o.imageBorderProps,f=t.ref(null),v=t.ref(null),g=function(e,t,r,n,o,i){e.beginPath(),e.roundRect?e.roundRect(t,r,n,o,i):e.rect(t,r,n,o)},p=function(){var t=e.size,r=e.background,n=e.foreground,o=e.gradient,d=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"===d?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)):a.value.forEach(function(e,t){e.forEach(function(e,r){e&&w.fillRect(r+i.value,t+i.value,1,1)})}),e.imageSettings.src&&E&&0!==E.naturalWidth&&0!==E.naturalHeight&&c.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=c.value.borderRadius;A>0?(w.save(),g(w,c.value.x,c.value.y,c.value.width,c.value.height,A),w.clip(),w.drawImage(E,c.value.x,c.value.y,c.value.width,c.value.height),w.restore()):w.drawImage(E,c.value.x,c.value.y,c.value.width,c.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,id:e.id})}}});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})});
|
package/dist/qrcode.vue.cjs.js
CHANGED
|
@@ -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.
|
|
@@ -1073,6 +1073,14 @@ function useQRCode(props) {
|
|
|
1073
1073
|
});
|
|
1074
1074
|
return { margin: margin, numCells: numCells, cells: cells, fgPath: fgPath, imageProps: imageProps, imageBorderProps: imageBorderProps };
|
|
1075
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
|
+
}
|
|
1076
1084
|
var QRCodeProps = {
|
|
1077
1085
|
value: {
|
|
1078
1086
|
type: String,
|
|
@@ -1098,38 +1106,32 @@ var QRCodeProps = {
|
|
|
1098
1106
|
},
|
|
1099
1107
|
margin: {
|
|
1100
1108
|
type: Number,
|
|
1101
|
-
required: false,
|
|
1102
1109
|
default: DEFAULT_MARGIN,
|
|
1110
|
+
validator: function (m) { return m >= 0; },
|
|
1103
1111
|
},
|
|
1104
1112
|
imageSettings: {
|
|
1105
1113
|
type: Object,
|
|
1106
|
-
required: false,
|
|
1107
1114
|
default: function () { return ({}); },
|
|
1108
1115
|
},
|
|
1109
1116
|
gradient: {
|
|
1110
1117
|
type: Boolean,
|
|
1111
|
-
required: false,
|
|
1112
1118
|
default: false,
|
|
1113
1119
|
},
|
|
1114
1120
|
gradientType: {
|
|
1115
1121
|
type: String,
|
|
1116
|
-
required: false,
|
|
1117
1122
|
default: 'linear',
|
|
1118
1123
|
validator: function (t) { return ['linear', 'radial'].indexOf(t) > -1; },
|
|
1119
1124
|
},
|
|
1120
1125
|
gradientStartColor: {
|
|
1121
1126
|
type: String,
|
|
1122
|
-
required: false,
|
|
1123
1127
|
default: '#000',
|
|
1124
1128
|
},
|
|
1125
1129
|
gradientEndColor: {
|
|
1126
1130
|
type: String,
|
|
1127
|
-
required: false,
|
|
1128
1131
|
default: '#fff',
|
|
1129
1132
|
},
|
|
1130
1133
|
radius: {
|
|
1131
1134
|
type: Number,
|
|
1132
|
-
required: false,
|
|
1133
1135
|
default: 0,
|
|
1134
1136
|
validator: function (r) { return !isNaN(r) && r >= 0 && r <= 0.5; },
|
|
1135
1137
|
},
|
|
@@ -1147,8 +1149,9 @@ var QRCodeVueProps = __assign(__assign({}, QRCodeProps), { renderAs: {
|
|
|
1147
1149
|
var QrcodeSvg = vue.defineComponent({
|
|
1148
1150
|
name: 'QRCodeSvg',
|
|
1149
1151
|
props: QRCodeProps,
|
|
1150
|
-
setup: function (props) {
|
|
1152
|
+
setup: function (props, ctx) {
|
|
1151
1153
|
var _a = useQRCode(props), numCells = _a.numCells, fgPath = _a.fgPath, imageProps = _a.imageProps, imageBorderProps = _a.imageBorderProps;
|
|
1154
|
+
var svgEl = vue.ref();
|
|
1152
1155
|
var uid = getUid(props.id);
|
|
1153
1156
|
var qrGradientId = "qrcode.vue-gradient-".concat(uid);
|
|
1154
1157
|
var qrLogoClipPathId = "qrcode.vue-logo-clip-path-".concat(uid);
|
|
@@ -1197,15 +1200,32 @@ var QrcodeSvg = vue.defineComponent({
|
|
|
1197
1200
|
}),
|
|
1198
1201
|
]);
|
|
1199
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
|
+
});
|
|
1200
1220
|
return function () { return vue.h('svg', {
|
|
1221
|
+
ref: svgEl,
|
|
1201
1222
|
width: props.size,
|
|
1202
1223
|
height: props.size,
|
|
1203
1224
|
xmlns: 'http://www.w3.org/2000/svg',
|
|
1204
1225
|
viewBox: "0 0 ".concat(numCells.value, " ").concat(numCells.value),
|
|
1205
1226
|
role: 'img',
|
|
1206
|
-
'aria-label': props.value,
|
|
1207
1227
|
}, [
|
|
1208
|
-
vue.h('defs', {}, [gradientVNode.value, clipPathVNode.value]),
|
|
1228
|
+
vue.h('defs', {}, [gradientVNode.value, clipPathVNode.value].filter(Boolean)),
|
|
1209
1229
|
vue.h('rect', {
|
|
1210
1230
|
width: '100%',
|
|
1211
1231
|
height: '100%',
|
|
@@ -1224,7 +1244,7 @@ var QrcodeSvg = vue.defineComponent({
|
|
|
1224
1244
|
rx: imageBorderProps.value.borderRadius,
|
|
1225
1245
|
ry: imageBorderProps.value.borderRadius,
|
|
1226
1246
|
}),
|
|
1227
|
-
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)),
|
|
1228
1248
|
]); };
|
|
1229
1249
|
},
|
|
1230
1250
|
});
|
|
@@ -1310,12 +1330,23 @@ var QrcodeCanvas = vue.defineComponent({
|
|
|
1310
1330
|
}
|
|
1311
1331
|
};
|
|
1312
1332
|
vue.onMounted(generate);
|
|
1313
|
-
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
|
+
});
|
|
1314
1344
|
return function () { return vue.h(vue.Fragment, [
|
|
1315
|
-
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") }) })),
|
|
1316
1346
|
props.imageSettings.src && vue.h('img', {
|
|
1317
1347
|
ref: imageEl,
|
|
1318
1348
|
src: props.imageSettings.src,
|
|
1349
|
+
crossorigin: props.imageSettings.crossOrigin,
|
|
1319
1350
|
style: { display: 'none' },
|
|
1320
1351
|
onLoad: generate,
|
|
1321
1352
|
})
|
|
@@ -1325,8 +1356,14 @@ var QrcodeCanvas = vue.defineComponent({
|
|
|
1325
1356
|
var QrcodeVue = vue.defineComponent({
|
|
1326
1357
|
name: 'Qrcode',
|
|
1327
1358
|
props: QRCodeVueProps,
|
|
1328
|
-
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
|
+
});
|
|
1329
1365
|
return function () { return vue.h(props.renderAs === 'svg' ? QrcodeSvg : QrcodeCanvas, {
|
|
1366
|
+
ref: childRef,
|
|
1330
1367
|
value: props.value,
|
|
1331
1368
|
size: props.size,
|
|
1332
1369
|
margin: props.margin,
|