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/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.9.1
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(__assign({ href: props.imageSettings.src }, imageProps.value), (imageProps.value.borderRadius > 0 ? { 'clip-path': "url(#".concat(qrLogoClipPathId, ")") } : {}))),
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', 'aria-label': props.value, style: __assign(__assign({}, ctx.attrs.style), { width: "".concat(props.size, "px"), height: "".concat(props.size, "px") }) })),
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.9.1
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})});
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * qrcode.vue v3.9.1
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(__assign({ href: props.imageSettings.src }, imageProps.value), (imageProps.value.borderRadius > 0 ? { 'clip-path': "url(#".concat(qrLogoClipPathId, ")") } : {}))),
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', 'aria-label': props.value, style: __assign(__assign({}, ctx.attrs.style), { width: "".concat(props.size, "px"), height: "".concat(props.size, "px") }) })),
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,