@hyperbook/markdown 0.12.0 → 0.12.2
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/assets/client.js +16 -0
- package/dist/assets/code.css +13 -0
- package/dist/assets/content.css +5 -1
- package/dist/assets/qrcode.js +424 -0
- package/dist/index.js +25 -17
- package/dist/index.js.map +3 -3
- package/package.json +1 -1
package/dist/assets/client.js
CHANGED
|
@@ -36,6 +36,22 @@ var hyperbook = (function () {
|
|
|
36
36
|
|
|
37
37
|
function qrcodeOpen() {
|
|
38
38
|
const qrCodeDialog = document.getElementById("qrcode-dialog");
|
|
39
|
+
const qrcodeEls = qrCodeDialog.getElementsByClassName("make-qrcode");
|
|
40
|
+
const urlEls = qrCodeDialog.getElementsByClassName("url");
|
|
41
|
+
const qrcodeEl = qrcodeEls[0];
|
|
42
|
+
const urlEl = urlEls[0];
|
|
43
|
+
const qrcode = new window.QRCode({
|
|
44
|
+
content: window.location.href,
|
|
45
|
+
padding: 0,
|
|
46
|
+
join: true,
|
|
47
|
+
color: "var(--color-text)",
|
|
48
|
+
container: "svg-viewbox",
|
|
49
|
+
background: "var(--color-background)",
|
|
50
|
+
ecl: "M",
|
|
51
|
+
});
|
|
52
|
+
qrcodeEl.innerHTML = qrcode.svg();
|
|
53
|
+
urlEl.innerHTML = window.location.href;
|
|
54
|
+
|
|
39
55
|
qrCodeDialog.showModal();
|
|
40
56
|
}
|
|
41
57
|
|
package/dist/assets/code.css
CHANGED
|
@@ -2,6 +2,19 @@ pre {
|
|
|
2
2
|
overflow-x: auto;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
|
+
pre:has(code) {
|
|
6
|
+
position: relative;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
pre code:not(:where(.not-content *)) {
|
|
10
|
+
all: unset;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
pre>code {
|
|
14
|
+
counter-reset: line !important;
|
|
15
|
+
overflow-x: auto !important;
|
|
16
|
+
}
|
|
17
|
+
|
|
5
18
|
figure[data-rehype-pretty-code-figure] pre {
|
|
6
19
|
font-size: 85%;
|
|
7
20
|
border-color: var(--color-spacer);
|
package/dist/assets/content.css
CHANGED
|
@@ -456,12 +456,16 @@ figure {
|
|
|
456
456
|
background-color: var(--color-brand);
|
|
457
457
|
}
|
|
458
458
|
|
|
459
|
-
.hyperbook-markdown #qrcode-dialog
|
|
459
|
+
.hyperbook-markdown #qrcode-dialog .make-qrcode {
|
|
460
460
|
width: 100%;
|
|
461
461
|
max-width: 512px;
|
|
462
462
|
margin: 0 auto;
|
|
463
463
|
}
|
|
464
464
|
|
|
465
|
+
.hyperbook-markdown #qrcode-dialog svg {
|
|
466
|
+
width: 100%;
|
|
467
|
+
}
|
|
468
|
+
|
|
465
469
|
.hyperbook-markdown .close-icon {
|
|
466
470
|
background-color: var(--color-text);
|
|
467
471
|
width: 32px;
|
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview
|
|
3
|
+
* - modified davidshimjs/qrcodejs library for use in node.js
|
|
4
|
+
* - Using the 'QRCode for Javascript library'
|
|
5
|
+
* - Fixed dataset of 'QRCode for Javascript library' for support full-spec.
|
|
6
|
+
* - this library has no dependencies.
|
|
7
|
+
*
|
|
8
|
+
* @version 0.9.1 (2016-02-12)
|
|
9
|
+
* @author davidshimjs, papnkukn
|
|
10
|
+
* @see <a href="http://www.d-project.com/" target="_blank">http://www.d-project.com/</a>
|
|
11
|
+
* @see <a href="http://jeromeetienne.github.com/jquery-qrcode/" target="_blank">http://jeromeetienne.github.com/jquery-qrcode/</a>
|
|
12
|
+
* @see <a href="https://github.com/davidshimjs/qrcodejs" target="_blank">https://github.com/davidshimjs/qrcodejs</a>
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
//---------------------------------------------------------------------
|
|
16
|
+
// QRCode for JavaScript
|
|
17
|
+
//
|
|
18
|
+
// Copyright (c) 2009 Kazuhiko Arase
|
|
19
|
+
//
|
|
20
|
+
// URL: http://www.d-project.com/
|
|
21
|
+
//
|
|
22
|
+
// Licensed under the MIT license:
|
|
23
|
+
// http://www.opensource.org/licenses/mit-license.php
|
|
24
|
+
//
|
|
25
|
+
// The word "QR Code" is registered trademark of
|
|
26
|
+
// DENSO WAVE INCORPORATED
|
|
27
|
+
// http://www.denso-wave.com/qrcode/faqpatent-e.html
|
|
28
|
+
//
|
|
29
|
+
//---------------------------------------------------------------------
|
|
30
|
+
function QR8bitByte(data) {
|
|
31
|
+
this.mode = QRMode.MODE_8BIT_BYTE;
|
|
32
|
+
this.data = data;
|
|
33
|
+
this.parsedData = [];
|
|
34
|
+
|
|
35
|
+
// Added to support UTF-8 Characters
|
|
36
|
+
for (var i = 0, l = this.data.length; i < l; i++) {
|
|
37
|
+
var byteArray = [];
|
|
38
|
+
var code = this.data.charCodeAt(i);
|
|
39
|
+
|
|
40
|
+
if (code > 0x10000) {
|
|
41
|
+
byteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18);
|
|
42
|
+
byteArray[1] = 0x80 | ((code & 0x3F000) >>> 12);
|
|
43
|
+
byteArray[2] = 0x80 | ((code & 0xFC0) >>> 6);
|
|
44
|
+
byteArray[3] = 0x80 | (code & 0x3F);
|
|
45
|
+
} else if (code > 0x800) {
|
|
46
|
+
byteArray[0] = 0xE0 | ((code & 0xF000) >>> 12);
|
|
47
|
+
byteArray[1] = 0x80 | ((code & 0xFC0) >>> 6);
|
|
48
|
+
byteArray[2] = 0x80 | (code & 0x3F);
|
|
49
|
+
} else if (code > 0x80) {
|
|
50
|
+
byteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6);
|
|
51
|
+
byteArray[1] = 0x80 | (code & 0x3F);
|
|
52
|
+
} else {
|
|
53
|
+
byteArray[0] = code;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
this.parsedData.push(byteArray);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
this.parsedData = Array.prototype.concat.apply([], this.parsedData);
|
|
60
|
+
|
|
61
|
+
if (this.parsedData.length != this.data.length) {
|
|
62
|
+
this.parsedData.unshift(191);
|
|
63
|
+
this.parsedData.unshift(187);
|
|
64
|
+
this.parsedData.unshift(239);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
QR8bitByte.prototype = {
|
|
69
|
+
getLength: function (buffer) {
|
|
70
|
+
return this.parsedData.length;
|
|
71
|
+
},
|
|
72
|
+
write: function (buffer) {
|
|
73
|
+
for (var i = 0, l = this.parsedData.length; i < l; i++) {
|
|
74
|
+
buffer.put(this.parsedData[i], 8);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
function QRCodeModel(typeNumber, errorCorrectLevel) {
|
|
80
|
+
this.typeNumber = typeNumber;
|
|
81
|
+
this.errorCorrectLevel = errorCorrectLevel;
|
|
82
|
+
this.modules = null;
|
|
83
|
+
this.moduleCount = 0;
|
|
84
|
+
this.dataCache = null;
|
|
85
|
+
this.dataList = [];
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
QRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+","+col);}
|
|
89
|
+
return this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row<this.moduleCount;row++){this.modules[row]=new Array(this.moduleCount);for(var col=0;col<this.moduleCount;col++){this.modules[row][col]=null;}}
|
|
90
|
+
this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(test,maskPattern);if(this.typeNumber>=7){this.setupTypeNumber(test);}
|
|
91
|
+
if(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);}
|
|
92
|
+
this.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}}
|
|
93
|
+
return pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row<this.modules.length;row++){var y=row*cs;for(var col=0;col<this.modules[row].length;col++){var x=col*cs;var dark=this.modules[row][col];if(dark){qr_mc.beginFill(0,100);qr_mc.moveTo(x,y);qr_mc.lineTo(x+cs,y);qr_mc.lineTo(x+cs,y+cs);qr_mc.lineTo(x,y+cs);qr_mc.endFill();}}}
|
|
94
|
+
return qr_mc;},setupTimingPattern:function(){for(var r=8;r<this.moduleCount-8;r++){if(this.modules[r][6]!=null){continue;}
|
|
95
|
+
this.modules[r][6]=(r%2==0);}
|
|
96
|
+
for(var c=8;c<this.moduleCount-8;c++){if(this.modules[6][c]!=null){continue;}
|
|
97
|
+
this.modules[6][c]=(c%2==0);}},setupPositionAdjustPattern:function(){var pos=QRUtil.getPatternPosition(this.typeNumber);for(var i=0;i<pos.length;i++){for(var j=0;j<pos.length;j++){var row=pos[i];var col=pos[j];if(this.modules[row][col]!=null){continue;}
|
|
98
|
+
for(var r=-2;r<=2;r++){for(var c=-2;c<=2;c++){if(r==-2||r==2||c==-2||c==2||(r==0&&c==0)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}}}},setupTypeNumber:function(test){var bits=QRUtil.getBCHTypeNumber(this.typeNumber);for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;}
|
|
99
|
+
for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}}
|
|
100
|
+
for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}}
|
|
101
|
+
this.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex<data.length){dark=(((data[byteIndex]>>>bitIndex)&1)==1);}
|
|
102
|
+
var mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;}
|
|
103
|
+
this.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}}
|
|
104
|
+
row+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;i<dataList.length;i++){var data=dataList[i];buffer.put(data.mode,4);buffer.put(data.getLength(),QRUtil.getLengthInBits(data.mode,typeNumber));data.write(buffer);}
|
|
105
|
+
var totalDataCount=0;for(var i=0;i<rsBlocks.length;i++){totalDataCount+=rsBlocks[i].dataCount;}
|
|
106
|
+
if(buffer.getLengthInBits()>totalDataCount*8){throw new Error("code length overflow. ("
|
|
107
|
+
+buffer.getLengthInBits()
|
|
108
|
+
+">"
|
|
109
|
+
+totalDataCount*8
|
|
110
|
+
+")");}
|
|
111
|
+
if(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);}
|
|
112
|
+
while(buffer.getLengthInBits()%8!=0){buffer.putBit(false);}
|
|
113
|
+
while(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;}
|
|
114
|
+
buffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;}
|
|
115
|
+
buffer.put(QRCodeModel.PAD1,8);}
|
|
116
|
+
return QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r<rsBlocks.length;r++){var dcCount=rsBlocks[r].dataCount;var ecCount=rsBlocks[r].totalCount-dcCount;maxDcCount=Math.max(maxDcCount,dcCount);maxEcCount=Math.max(maxEcCount,ecCount);dcdata[r]=new Array(dcCount);for(var i=0;i<dcdata[r].length;i++){dcdata[r][i]=0xff&buffer.buffer[i+offset];}
|
|
117
|
+
offset+=dcCount;var rsPoly=QRUtil.getErrorCorrectPolynomial(ecCount);var rawPoly=new QRPolynomial(dcdata[r],rsPoly.getLength()-1);var modPoly=rawPoly.mod(rsPoly);ecdata[r]=new Array(rsPoly.getLength()-1);for(var i=0;i<ecdata[r].length;i++){var modIndex=i+modPoly.getLength()-ecdata[r].length;ecdata[r][i]=(modIndex>=0)?modPoly.get(modIndex):0;}}
|
|
118
|
+
var totalCodeCount=0;for(var i=0;i<rsBlocks.length;i++){totalCodeCount+=rsBlocks[i].totalCount;}
|
|
119
|
+
var data=new Array(totalCodeCount);var index=0;for(var i=0;i<maxDcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<dcdata[r].length){data[index++]=dcdata[r][i];}}}
|
|
120
|
+
for(var i=0;i<maxEcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<ecdata[r].length){data[index++]=ecdata[r][i];}}}
|
|
121
|
+
return data;};var QRMode={MODE_NUMBER:1<<0,MODE_ALPHA_NUM:1<<1,MODE_8BIT_BYTE:1<<2,MODE_KANJI:1<<3};var QRErrorCorrectLevel={L:1,M:0,Q:3,H:2};var QRMaskPattern={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var QRUtil={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:(1<<10)|(1<<8)|(1<<5)|(1<<4)|(1<<2)|(1<<1)|(1<<0),G18:(1<<12)|(1<<11)|(1<<10)|(1<<9)|(1<<8)|(1<<5)|(1<<2)|(1<<0),G15_MASK:(1<<14)|(1<<12)|(1<<10)|(1<<4)|(1<<1),getBCHTypeInfo:function(data){var d=data<<10;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)>=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));}
|
|
122
|
+
return((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));}
|
|
123
|
+
return(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;}
|
|
124
|
+
return digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error("bad maskPattern:"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i<errorCorrectLength;i++){a=a.multiply(new QRPolynomial([1,QRMath.gexp(i)],0));}
|
|
125
|
+
return a;},getLengthInBits:function(mode,type){if(1<=type&&type<10){switch(mode){case QRMode.MODE_NUMBER:return 10;case QRMode.MODE_ALPHA_NUM:return 9;case QRMode.MODE_8BIT_BYTE:return 8;case QRMode.MODE_KANJI:return 8;default:throw new Error("mode:"+mode);}}else if(type<27){switch(mode){case QRMode.MODE_NUMBER:return 12;case QRMode.MODE_ALPHA_NUM:return 11;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 10;default:throw new Error("mode:"+mode);}}else if(type<41){switch(mode){case QRMode.MODE_NUMBER:return 14;case QRMode.MODE_ALPHA_NUM:return 13;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 12;default:throw new Error("mode:"+mode);}}else{throw new Error("type:"+type);}},getLostPoint:function(qrCode){var moduleCount=qrCode.getModuleCount();var lostPoint=0;for(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount;col++){var sameCount=0;var dark=qrCode.isDark(row,col);for(var r=-1;r<=1;r++){if(row+r<0||moduleCount<=row+r){continue;}
|
|
126
|
+
for(var c=-1;c<=1;c++){if(col+c<0||moduleCount<=col+c){continue;}
|
|
127
|
+
if(r==0&&c==0){continue;}
|
|
128
|
+
if(dark==qrCode.isDark(row+r,col+c)){sameCount++;}}}
|
|
129
|
+
if(sameCount>5){lostPoint+=(3+sameCount-5);}}}
|
|
130
|
+
for(var row=0;row<moduleCount-1;row++){for(var col=0;col<moduleCount-1;col++){var count=0;if(qrCode.isDark(row,col))count++;if(qrCode.isDark(row+1,col))count++;if(qrCode.isDark(row,col+1))count++;if(qrCode.isDark(row+1,col+1))count++;if(count==0||count==4){lostPoint+=3;}}}
|
|
131
|
+
for(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount-6;col++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row,col+1)&&qrCode.isDark(row,col+2)&&qrCode.isDark(row,col+3)&&qrCode.isDark(row,col+4)&&!qrCode.isDark(row,col+5)&&qrCode.isDark(row,col+6)){lostPoint+=40;}}}
|
|
132
|
+
for(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount-6;row++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row+1,col)&&qrCode.isDark(row+2,col)&&qrCode.isDark(row+3,col)&&qrCode.isDark(row+4,col)&&!qrCode.isDark(row+5,col)&&qrCode.isDark(row+6,col)){lostPoint+=40;}}}
|
|
133
|
+
var darkCount=0;for(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount;row++){if(qrCode.isDark(row,col)){darkCount++;}}}
|
|
134
|
+
var ratio=Math.abs(100*darkCount/moduleCount/moduleCount-50)/5;lostPoint+=ratio*10;return lostPoint;}};var QRMath={glog:function(n){if(n<1){throw new Error("glog("+n+")");}
|
|
135
|
+
return QRMath.LOG_TABLE[n];},gexp:function(n){while(n<0){n+=255;}
|
|
136
|
+
while(n>=256){n-=255;}
|
|
137
|
+
return QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<<i;}
|
|
138
|
+
for(var i=8;i<256;i++){QRMath.EXP_TABLE[i]=QRMath.EXP_TABLE[i-4]^QRMath.EXP_TABLE[i-5]^QRMath.EXP_TABLE[i-6]^QRMath.EXP_TABLE[i-8];}
|
|
139
|
+
for(var i=0;i<255;i++){QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]]=i;}
|
|
140
|
+
function QRPolynomial(num,shift){if(num.length==undefined){throw new Error(num.length+"/"+shift);}
|
|
141
|
+
var offset=0;while(offset<num.length&&num[offset]==0){offset++;}
|
|
142
|
+
this.num=new Array(num.length-offset+shift);for(var i=0;i<num.length-offset;i++){this.num[i]=num[i+offset];}}
|
|
143
|
+
QRPolynomial.prototype={get:function(index){return this.num[index];},getLength:function(){return this.num.length;},multiply:function(e){var num=new Array(this.getLength()+e.getLength()-1);for(var i=0;i<this.getLength();i++){for(var j=0;j<e.getLength();j++){num[i+j]^=QRMath.gexp(QRMath.glog(this.get(i))+QRMath.glog(e.get(j)));}}
|
|
144
|
+
return new QRPolynomial(num,0);},mod:function(e){if(this.getLength()-e.getLength()<0){return this;}
|
|
145
|
+
var ratio=QRMath.glog(this.get(0))-QRMath.glog(e.get(0));var num=new Array(this.getLength());for(var i=0;i<this.getLength();i++){num[i]=this.get(i);}
|
|
146
|
+
for(var i=0;i<e.getLength();i++){num[i]^=QRMath.gexp(QRMath.glog(e.get(i))+ratio);}
|
|
147
|
+
return new QRPolynomial(num,0).mod(e);}};function QRRSBlock(totalCount,dataCount){this.totalCount=totalCount;this.dataCount=dataCount;}
|
|
148
|
+
QRRSBlock.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];QRRSBlock.getRSBlocks=function(typeNumber,errorCorrectLevel){var rsBlock=QRRSBlock.getRsBlockTable(typeNumber,errorCorrectLevel);if(rsBlock==undefined){throw new Error("bad rs block @ typeNumber:"+typeNumber+"/errorCorrectLevel:"+errorCorrectLevel);}
|
|
149
|
+
var length=rsBlock.length/3;var list=[];for(var i=0;i<length;i++){var count=rsBlock[i*3+0];var totalCount=rsBlock[i*3+1];var dataCount=rsBlock[i*3+2];for(var j=0;j<count;j++){list.push(new QRRSBlock(totalCount,dataCount));}}
|
|
150
|
+
return list;};QRRSBlock.getRsBlockTable=function(typeNumber,errorCorrectLevel){switch(errorCorrectLevel){case QRErrorCorrectLevel.L:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+0];case QRErrorCorrectLevel.M:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+1];case QRErrorCorrectLevel.Q:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+2];case QRErrorCorrectLevel.H:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+3];default:return undefined;}};function QRBitBuffer(){this.buffer=[];this.length=0;}
|
|
151
|
+
QRBitBuffer.prototype={get:function(index){var bufIndex=Math.floor(index/8);return((this.buffer[bufIndex]>>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i<length;i++){this.putBit(((num>>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);}
|
|
152
|
+
if(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));}
|
|
153
|
+
this.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
/** Constructor */
|
|
157
|
+
function QRCode(options) {
|
|
158
|
+
var instance = this;
|
|
159
|
+
|
|
160
|
+
//Default options
|
|
161
|
+
this.options = {
|
|
162
|
+
padding: 4,
|
|
163
|
+
width: 256,
|
|
164
|
+
height: 256,
|
|
165
|
+
typeNumber: 4,
|
|
166
|
+
color: "#000000",
|
|
167
|
+
background: "#ffffff",
|
|
168
|
+
ecl: "M"
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
//In case the options is string
|
|
172
|
+
if (typeof options === 'string') {
|
|
173
|
+
options = {
|
|
174
|
+
content: options
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
//Merge options
|
|
179
|
+
if (options) {
|
|
180
|
+
for (var i in options) {
|
|
181
|
+
this.options[i] = options[i];
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if (typeof this.options.content !== 'string') {
|
|
186
|
+
throw new Error("Expected 'content' as string!");
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if (this.options.content.length === 0 /* || this.options.content.length > 7089 */) {
|
|
190
|
+
throw new Error("Expected 'content' to be non-empty!");
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
if (!(this.options.padding >= 0)) {
|
|
194
|
+
throw new Error("Expected 'padding' value to be non-negative!");
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
if (!(this.options.width > 0) || !(this.options.height > 0)) {
|
|
198
|
+
throw new Error("Expected 'width' or 'height' value to be higher than zero!");
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
//Gets the error correction level
|
|
202
|
+
function _getErrorCorrectLevel(ecl) {
|
|
203
|
+
switch (ecl) {
|
|
204
|
+
case "L":
|
|
205
|
+
return QRErrorCorrectLevel.L;
|
|
206
|
+
|
|
207
|
+
case "M":
|
|
208
|
+
return QRErrorCorrectLevel.M;
|
|
209
|
+
|
|
210
|
+
case "Q":
|
|
211
|
+
return QRErrorCorrectLevel.Q;
|
|
212
|
+
|
|
213
|
+
case "H":
|
|
214
|
+
return QRErrorCorrectLevel.H;
|
|
215
|
+
|
|
216
|
+
default:
|
|
217
|
+
throw new Error("Unknwon error correction level: " + ecl);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
//Get type number
|
|
222
|
+
function _getTypeNumber(content, ecl) {
|
|
223
|
+
var length = _getUTF8Length(content);
|
|
224
|
+
|
|
225
|
+
var type = 1;
|
|
226
|
+
var limit = 0;
|
|
227
|
+
for (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {
|
|
228
|
+
var table = QRCodeLimitLength[i];
|
|
229
|
+
if (!table) {
|
|
230
|
+
throw new Error("Content too long: expected " + limit + " but got " + length);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
switch (ecl) {
|
|
234
|
+
case "L":
|
|
235
|
+
limit = table[0];
|
|
236
|
+
break;
|
|
237
|
+
|
|
238
|
+
case "M":
|
|
239
|
+
limit = table[1];
|
|
240
|
+
break;
|
|
241
|
+
|
|
242
|
+
case "Q":
|
|
243
|
+
limit = table[2];
|
|
244
|
+
break;
|
|
245
|
+
|
|
246
|
+
case "H":
|
|
247
|
+
limit = table[3];
|
|
248
|
+
break;
|
|
249
|
+
|
|
250
|
+
default:
|
|
251
|
+
throw new Error("Unknwon error correction level: " + ecl);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
if (length <= limit) {
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
type++;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
if (type > QRCodeLimitLength.length) {
|
|
262
|
+
throw new Error("Content too long");
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
return type;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
//Gets text length
|
|
269
|
+
function _getUTF8Length(content) {
|
|
270
|
+
var result = encodeURI(content).toString().replace(/\%[0-9a-fA-F]{2}/g, 'a');
|
|
271
|
+
return result.length + (result.length != content ? 3 : 0);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
//Generate QR Code matrix
|
|
275
|
+
var content = this.options.content;
|
|
276
|
+
var type = _getTypeNumber(content, this.options.ecl);
|
|
277
|
+
var ecl = _getErrorCorrectLevel(this.options.ecl);
|
|
278
|
+
this.qrcode = new QRCodeModel(type, ecl);
|
|
279
|
+
this.qrcode.addData(content);
|
|
280
|
+
this.qrcode.make();
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/** Generates QR Code as SVG image */
|
|
284
|
+
QRCode.prototype.svg = function(opt) {
|
|
285
|
+
var options = this.options || { };
|
|
286
|
+
var modules = this.qrcode.modules;
|
|
287
|
+
|
|
288
|
+
if (typeof opt == "undefined") {
|
|
289
|
+
opt = { container: options.container || "svg" };
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
//Apply new lines and indents in SVG?
|
|
293
|
+
var pretty = typeof options.pretty != "undefined" ? !!options.pretty : true;
|
|
294
|
+
|
|
295
|
+
var indent = pretty ? ' ' : '';
|
|
296
|
+
var EOL = pretty ? '\r\n' : '';
|
|
297
|
+
var width = options.width;
|
|
298
|
+
var height = options.height;
|
|
299
|
+
var length = modules.length;
|
|
300
|
+
var xsize = width / (length + 2 * options.padding);
|
|
301
|
+
var ysize = height / (length + 2 * options.padding);
|
|
302
|
+
|
|
303
|
+
//Join (union, merge) rectangles into one shape?
|
|
304
|
+
var join = typeof options.join != "undefined" ? !!options.join : false;
|
|
305
|
+
|
|
306
|
+
//Swap the X and Y modules, pull request #2
|
|
307
|
+
var swap = typeof options.swap != "undefined" ? !!options.swap : false;
|
|
308
|
+
|
|
309
|
+
//Apply <?xml...?> declaration in SVG?
|
|
310
|
+
var xmlDeclaration = typeof options.xmlDeclaration != "undefined" ? !!options.xmlDeclaration : true;
|
|
311
|
+
|
|
312
|
+
//Populate with predefined shape instead of "rect" elements, thanks to @kkocdko
|
|
313
|
+
var predefined = typeof options.predefined != "undefined" ? !!options.predefined : false;
|
|
314
|
+
var defs = predefined ? indent + '<defs><path id="qrmodule" d="M0 0 h' + ysize + ' v' + xsize + ' H0 z" style="fill:' + options.color + ';shape-rendering:crispEdges;" /></defs>' + EOL : '';
|
|
315
|
+
|
|
316
|
+
//Background rectangle
|
|
317
|
+
var bgrect = indent + '<rect x="0" y="0" width="' + width + '" height="' + height + '" style="fill:' + options.background + ';shape-rendering:crispEdges;"/>' + EOL;
|
|
318
|
+
|
|
319
|
+
//Rectangles representing modules
|
|
320
|
+
var modrect = '';
|
|
321
|
+
var pathdata = '';
|
|
322
|
+
|
|
323
|
+
for (var y = 0; y < length; y++) {
|
|
324
|
+
for (var x = 0; x < length; x++) {
|
|
325
|
+
var module = modules[x][y];
|
|
326
|
+
if (module) {
|
|
327
|
+
|
|
328
|
+
var px = (x * xsize + options.padding * xsize);
|
|
329
|
+
var py = (y * ysize + options.padding * ysize);
|
|
330
|
+
|
|
331
|
+
//Some users have had issues with the QR Code, thanks to @danioso for the solution
|
|
332
|
+
if (swap) {
|
|
333
|
+
var t = px;
|
|
334
|
+
px = py;
|
|
335
|
+
py = t;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
if (join) {
|
|
339
|
+
//Module as a part of svg path data, thanks to @danioso
|
|
340
|
+
var w = xsize + px
|
|
341
|
+
var h = ysize + py
|
|
342
|
+
|
|
343
|
+
px = (Number.isInteger(px))? Number(px): px.toFixed(2);
|
|
344
|
+
py = (Number.isInteger(py))? Number(py): py.toFixed(2);
|
|
345
|
+
w = (Number.isInteger(w))? Number(w): w.toFixed(2);
|
|
346
|
+
h = (Number.isInteger(h))? Number(h): h.toFixed(2);
|
|
347
|
+
|
|
348
|
+
pathdata += ('M' + px + ',' + py + ' V' + h + ' H' + w + ' V' + py + ' H' + px + ' Z ');
|
|
349
|
+
}
|
|
350
|
+
else if (predefined) {
|
|
351
|
+
//Module as a predefined shape, thanks to @kkocdko
|
|
352
|
+
modrect += indent + '<use x="' + px.toString() + '" y="' + py.toString() + '" href="#qrmodule" />' + EOL;
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
//Module as rectangle element
|
|
356
|
+
modrect += indent + '<rect x="' + px.toString() + '" y="' + py.toString() + '" width="' + xsize + '" height="' + ysize + '" style="fill:' + options.color + ';shape-rendering:crispEdges;"/>' + EOL;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
if (join) {
|
|
363
|
+
modrect = indent + '<path x="0" y="0" style="fill:' + options.color + ';shape-rendering:crispEdges;" d="' + pathdata + '" />';
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
var svg = "";
|
|
367
|
+
switch (opt.container) {
|
|
368
|
+
//Wrapped in SVG document
|
|
369
|
+
case "svg":
|
|
370
|
+
if (xmlDeclaration) {
|
|
371
|
+
svg += '<?xml version="1.0" standalone="yes"?>' + EOL;
|
|
372
|
+
}
|
|
373
|
+
svg += '<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="' + width + '" height="' + height + '">' + EOL;
|
|
374
|
+
svg += defs + bgrect + modrect;
|
|
375
|
+
svg += '</svg>';
|
|
376
|
+
break;
|
|
377
|
+
|
|
378
|
+
//Viewbox for responsive use in a browser, thanks to @danioso
|
|
379
|
+
case "svg-viewbox":
|
|
380
|
+
if (xmlDeclaration) {
|
|
381
|
+
svg += '<?xml version="1.0" standalone="yes"?>' + EOL;
|
|
382
|
+
}
|
|
383
|
+
svg += '<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 ' + width + ' ' + height + '">' + EOL;
|
|
384
|
+
svg += defs + bgrect + modrect;
|
|
385
|
+
svg += '</svg>';
|
|
386
|
+
break;
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
//Wrapped in group element
|
|
390
|
+
case "g":
|
|
391
|
+
svg += '<g width="' + width + '" height="' + height + '">' + EOL;
|
|
392
|
+
svg += defs + bgrect + modrect;
|
|
393
|
+
svg += '</g>';
|
|
394
|
+
break;
|
|
395
|
+
|
|
396
|
+
//Without a container
|
|
397
|
+
default:
|
|
398
|
+
svg += (defs + bgrect + modrect).replace(/^\s+/, ""); //Clear indents on each line
|
|
399
|
+
break;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
return svg;
|
|
403
|
+
};
|
|
404
|
+
|
|
405
|
+
/** Writes QR Code image to a file */
|
|
406
|
+
QRCode.prototype.save = function(file, callback) {
|
|
407
|
+
var data = this.svg();
|
|
408
|
+
if (typeof callback != "function") {
|
|
409
|
+
callback = function(error, result) { };
|
|
410
|
+
}
|
|
411
|
+
try {
|
|
412
|
+
//Package 'fs' is available in node.js but not in a web browser
|
|
413
|
+
var fs = require('fs');
|
|
414
|
+
fs.writeFile(file, data, callback);
|
|
415
|
+
}
|
|
416
|
+
catch (e) {
|
|
417
|
+
//Sorry, 'fs' is not available
|
|
418
|
+
callback(e);
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
|
|
422
|
+
if (typeof module != "undefined") {
|
|
423
|
+
module.exports = QRCode;
|
|
424
|
+
}
|
package/dist/index.js
CHANGED
|
@@ -5186,7 +5186,7 @@ var require_qrcode = __commonJS({
|
|
|
5186
5186
|
this.length++;
|
|
5187
5187
|
} };
|
|
5188
5188
|
var QRCodeLimitLength = [[17, 14, 11, 7], [32, 26, 20, 14], [53, 42, 32, 24], [78, 62, 46, 34], [106, 84, 60, 44], [134, 106, 74, 58], [154, 122, 86, 64], [192, 152, 108, 84], [230, 180, 130, 98], [271, 213, 151, 119], [321, 251, 177, 137], [367, 287, 203, 155], [425, 331, 241, 177], [458, 362, 258, 194], [520, 412, 292, 220], [586, 450, 322, 250], [644, 504, 364, 280], [718, 560, 394, 310], [792, 624, 442, 338], [858, 666, 482, 382], [929, 711, 509, 403], [1003, 779, 565, 439], [1091, 857, 611, 461], [1171, 911, 661, 511], [1273, 997, 715, 535], [1367, 1059, 751, 593], [1465, 1125, 805, 625], [1528, 1190, 868, 658], [1628, 1264, 908, 698], [1732, 1370, 982, 742], [1840, 1452, 1030, 790], [1952, 1538, 1112, 842], [2068, 1628, 1168, 898], [2188, 1722, 1228, 958], [2303, 1809, 1283, 983], [2431, 1911, 1351, 1051], [2563, 1989, 1423, 1093], [2699, 2099, 1499, 1139], [2809, 2213, 1579, 1219], [2953, 2331, 1663, 1273]];
|
|
5189
|
-
function
|
|
5189
|
+
function QRCode2(options) {
|
|
5190
5190
|
var instance = this;
|
|
5191
5191
|
this.options = {
|
|
5192
5192
|
padding: 4,
|
|
@@ -5279,7 +5279,7 @@ var require_qrcode = __commonJS({
|
|
|
5279
5279
|
this.qrcode.addData(content5);
|
|
5280
5280
|
this.qrcode.make();
|
|
5281
5281
|
}
|
|
5282
|
-
|
|
5282
|
+
QRCode2.prototype.svg = function(opt) {
|
|
5283
5283
|
var options = this.options || {};
|
|
5284
5284
|
var modules = this.qrcode.modules;
|
|
5285
5285
|
if (typeof opt == "undefined") {
|
|
@@ -5360,7 +5360,7 @@ var require_qrcode = __commonJS({
|
|
|
5360
5360
|
}
|
|
5361
5361
|
return svg5;
|
|
5362
5362
|
};
|
|
5363
|
-
|
|
5363
|
+
QRCode2.prototype.save = function(file, callback) {
|
|
5364
5364
|
var data = this.svg();
|
|
5365
5365
|
if (typeof callback != "function") {
|
|
5366
5366
|
callback = function(error, result) {
|
|
@@ -5374,7 +5374,7 @@ var require_qrcode = __commonJS({
|
|
|
5374
5374
|
}
|
|
5375
5375
|
};
|
|
5376
5376
|
if (typeof module != "undefined") {
|
|
5377
|
-
module.exports =
|
|
5377
|
+
module.exports = QRCode2;
|
|
5378
5378
|
}
|
|
5379
5379
|
}
|
|
5380
5380
|
});
|
|
@@ -64363,7 +64363,17 @@ HYPERBOOK_ASSETS = "${makeUrl("/", "assets")}"
|
|
|
64363
64363
|
tagName: "script",
|
|
64364
64364
|
properties: {
|
|
64365
64365
|
type: "module",
|
|
64366
|
-
src: makeUrl(["side-drawer.js"], "assets")
|
|
64366
|
+
src: makeUrl(["side-drawer.js"], "assets"),
|
|
64367
|
+
async: true
|
|
64368
|
+
},
|
|
64369
|
+
children: []
|
|
64370
|
+
},
|
|
64371
|
+
{
|
|
64372
|
+
type: "element",
|
|
64373
|
+
tagName: "script",
|
|
64374
|
+
properties: {
|
|
64375
|
+
src: makeUrl(["qrcode.js"], "assets"),
|
|
64376
|
+
async: true
|
|
64367
64377
|
},
|
|
64368
64378
|
children: []
|
|
64369
64379
|
},
|
|
@@ -65917,6 +65927,8 @@ var remarkDirectiveQr_default = (ctx) => () => {
|
|
|
65917
65927
|
padding: 0,
|
|
65918
65928
|
width: realSizes[safeSize],
|
|
65919
65929
|
height: realSizes[safeSize],
|
|
65930
|
+
join: true,
|
|
65931
|
+
container: "svg-viewbox",
|
|
65920
65932
|
color: "#000000",
|
|
65921
65933
|
background: "#ffffff",
|
|
65922
65934
|
ecl: "M"
|
|
@@ -72053,7 +72065,6 @@ var remarkDirectivePagelist_default = (ctx) => () => {
|
|
|
72053
72065
|
};
|
|
72054
72066
|
|
|
72055
72067
|
// src/rehypeQrCode.ts
|
|
72056
|
-
var import_qrcode_svg2 = __toESM(require_qrcode(), 1);
|
|
72057
72068
|
var rehypeQrCode_default = (ctx) => () => {
|
|
72058
72069
|
const qrcode = ctx.config.qrcode || ctx.navigation.current?.qrcode || true;
|
|
72059
72070
|
return (tree, file) => {
|
|
@@ -72061,16 +72072,6 @@ var rehypeQrCode_default = (ctx) => () => {
|
|
|
72061
72072
|
if (!qrcode || !ctx.navigation.current?.href) {
|
|
72062
72073
|
return;
|
|
72063
72074
|
}
|
|
72064
|
-
const qr = new import_qrcode_svg2.default({
|
|
72065
|
-
content: ctx.navigation.current.href,
|
|
72066
|
-
padding: 0,
|
|
72067
|
-
width: 512,
|
|
72068
|
-
height: 512,
|
|
72069
|
-
color: "var(--color-text)",
|
|
72070
|
-
container: "svg-viewbox",
|
|
72071
|
-
background: "var(--color-background)",
|
|
72072
|
-
ecl: "M"
|
|
72073
|
-
}).svg();
|
|
72074
72075
|
const qrcodeDialog = [
|
|
72075
72076
|
{
|
|
72076
72077
|
type: "element",
|
|
@@ -72118,7 +72119,14 @@ var rehypeQrCode_default = (ctx) => () => {
|
|
|
72118
72119
|
}
|
|
72119
72120
|
]
|
|
72120
72121
|
},
|
|
72121
|
-
|
|
72122
|
+
{
|
|
72123
|
+
type: "element",
|
|
72124
|
+
tagName: "div",
|
|
72125
|
+
properties: {
|
|
72126
|
+
class: "make-qrcode"
|
|
72127
|
+
},
|
|
72128
|
+
children: []
|
|
72129
|
+
},
|
|
72122
72130
|
{
|
|
72123
72131
|
type: "element",
|
|
72124
72132
|
tagName: "div",
|