First commit
This commit is contained in:
385
node_modules/swissqrbill/lib/esm/svg/character-width.d.ts
generated
vendored
Normal file
385
node_modules/swissqrbill/lib/esm/svg/character-width.d.ts
generated
vendored
Normal file
@@ -0,0 +1,385 @@
|
||||
export declare const arial8pt: {
|
||||
100: number;
|
||||
101: number;
|
||||
102: number;
|
||||
103: number;
|
||||
104: number;
|
||||
105: number;
|
||||
106: number;
|
||||
107: number;
|
||||
108: number;
|
||||
109: number;
|
||||
110: number;
|
||||
111: number;
|
||||
112: number;
|
||||
113: number;
|
||||
114: number;
|
||||
115: number;
|
||||
116: number;
|
||||
117: number;
|
||||
118: number;
|
||||
119: number;
|
||||
120: number;
|
||||
121: number;
|
||||
122: number;
|
||||
123: number;
|
||||
124: number;
|
||||
125: number;
|
||||
126: number;
|
||||
160: number;
|
||||
161: number;
|
||||
162: number;
|
||||
163: number;
|
||||
164: number;
|
||||
165: number;
|
||||
166: number;
|
||||
167: number;
|
||||
168: number;
|
||||
169: number;
|
||||
170: number;
|
||||
171: number;
|
||||
172: number;
|
||||
173: number;
|
||||
174: number;
|
||||
175: number;
|
||||
176: number;
|
||||
177: number;
|
||||
178: number;
|
||||
179: number;
|
||||
180: number;
|
||||
181: number;
|
||||
182: number;
|
||||
183: number;
|
||||
184: number;
|
||||
185: number;
|
||||
186: number;
|
||||
187: number;
|
||||
188: number;
|
||||
189: number;
|
||||
190: number;
|
||||
191: number;
|
||||
192: number;
|
||||
193: number;
|
||||
194: number;
|
||||
195: number;
|
||||
196: number;
|
||||
197: number;
|
||||
198: number;
|
||||
199: number;
|
||||
200: number;
|
||||
201: number;
|
||||
202: number;
|
||||
203: number;
|
||||
204: number;
|
||||
205: number;
|
||||
206: number;
|
||||
207: number;
|
||||
208: number;
|
||||
209: number;
|
||||
210: number;
|
||||
211: number;
|
||||
212: number;
|
||||
213: number;
|
||||
214: number;
|
||||
215: number;
|
||||
216: number;
|
||||
217: number;
|
||||
218: number;
|
||||
219: number;
|
||||
220: number;
|
||||
221: number;
|
||||
222: number;
|
||||
223: number;
|
||||
224: number;
|
||||
225: number;
|
||||
226: number;
|
||||
227: number;
|
||||
228: number;
|
||||
229: number;
|
||||
230: number;
|
||||
231: number;
|
||||
232: number;
|
||||
233: number;
|
||||
234: number;
|
||||
235: number;
|
||||
236: number;
|
||||
237: number;
|
||||
238: number;
|
||||
239: number;
|
||||
240: number;
|
||||
241: number;
|
||||
242: number;
|
||||
243: number;
|
||||
244: number;
|
||||
245: number;
|
||||
246: number;
|
||||
247: number;
|
||||
248: number;
|
||||
249: number;
|
||||
250: number;
|
||||
251: number;
|
||||
252: number;
|
||||
253: number;
|
||||
254: number;
|
||||
32: number;
|
||||
33: number;
|
||||
34: number;
|
||||
35: number;
|
||||
36: number;
|
||||
37: number;
|
||||
38: number;
|
||||
39: number;
|
||||
40: number;
|
||||
41: number;
|
||||
42: number;
|
||||
43: number;
|
||||
44: number;
|
||||
45: number;
|
||||
46: number;
|
||||
47: number;
|
||||
48: number;
|
||||
49: number;
|
||||
50: number;
|
||||
51: number;
|
||||
52: number;
|
||||
53: number;
|
||||
54: number;
|
||||
55: number;
|
||||
56: number;
|
||||
57: number;
|
||||
58: number;
|
||||
59: number;
|
||||
60: number;
|
||||
61: number;
|
||||
62: number;
|
||||
63: number;
|
||||
64: number;
|
||||
65: number;
|
||||
66: number;
|
||||
67: number;
|
||||
68: number;
|
||||
69: number;
|
||||
70: number;
|
||||
71: number;
|
||||
72: number;
|
||||
73: number;
|
||||
74: number;
|
||||
75: number;
|
||||
76: number;
|
||||
77: number;
|
||||
78: number;
|
||||
79: number;
|
||||
80: number;
|
||||
81: number;
|
||||
82: number;
|
||||
83: number;
|
||||
84: number;
|
||||
85: number;
|
||||
86: number;
|
||||
87: number;
|
||||
88: number;
|
||||
89: number;
|
||||
90: number;
|
||||
91: number;
|
||||
92: number;
|
||||
93: number;
|
||||
94: number;
|
||||
95: number;
|
||||
96: number;
|
||||
97: number;
|
||||
98: number;
|
||||
99: number;
|
||||
};
|
||||
export declare const arial10pt: {
|
||||
100: number;
|
||||
101: number;
|
||||
102: number;
|
||||
103: number;
|
||||
104: number;
|
||||
105: number;
|
||||
106: number;
|
||||
107: number;
|
||||
108: number;
|
||||
109: number;
|
||||
110: number;
|
||||
111: number;
|
||||
112: number;
|
||||
113: number;
|
||||
114: number;
|
||||
115: number;
|
||||
116: number;
|
||||
117: number;
|
||||
118: number;
|
||||
119: number;
|
||||
120: number;
|
||||
121: number;
|
||||
122: number;
|
||||
123: number;
|
||||
124: number;
|
||||
125: number;
|
||||
126: number;
|
||||
160: number;
|
||||
161: number;
|
||||
162: number;
|
||||
163: number;
|
||||
164: number;
|
||||
165: number;
|
||||
166: number;
|
||||
167: number;
|
||||
168: number;
|
||||
169: number;
|
||||
170: number;
|
||||
171: number;
|
||||
172: number;
|
||||
173: number;
|
||||
174: number;
|
||||
175: number;
|
||||
176: number;
|
||||
177: number;
|
||||
178: number;
|
||||
179: number;
|
||||
180: number;
|
||||
181: number;
|
||||
182: number;
|
||||
183: number;
|
||||
184: number;
|
||||
185: number;
|
||||
186: number;
|
||||
187: number;
|
||||
188: number;
|
||||
189: number;
|
||||
190: number;
|
||||
191: number;
|
||||
192: number;
|
||||
193: number;
|
||||
194: number;
|
||||
195: number;
|
||||
196: number;
|
||||
197: number;
|
||||
198: number;
|
||||
199: number;
|
||||
200: number;
|
||||
201: number;
|
||||
202: number;
|
||||
203: number;
|
||||
204: number;
|
||||
205: number;
|
||||
206: number;
|
||||
207: number;
|
||||
208: number;
|
||||
209: number;
|
||||
210: number;
|
||||
211: number;
|
||||
212: number;
|
||||
213: number;
|
||||
214: number;
|
||||
215: number;
|
||||
216: number;
|
||||
217: number;
|
||||
218: number;
|
||||
219: number;
|
||||
220: number;
|
||||
221: number;
|
||||
222: number;
|
||||
223: number;
|
||||
224: number;
|
||||
225: number;
|
||||
226: number;
|
||||
227: number;
|
||||
228: number;
|
||||
229: number;
|
||||
230: number;
|
||||
231: number;
|
||||
232: number;
|
||||
233: number;
|
||||
234: number;
|
||||
235: number;
|
||||
236: number;
|
||||
237: number;
|
||||
238: number;
|
||||
239: number;
|
||||
240: number;
|
||||
241: number;
|
||||
242: number;
|
||||
243: number;
|
||||
244: number;
|
||||
245: number;
|
||||
246: number;
|
||||
247: number;
|
||||
248: number;
|
||||
249: number;
|
||||
250: number;
|
||||
251: number;
|
||||
252: number;
|
||||
253: number;
|
||||
254: number;
|
||||
32: number;
|
||||
33: number;
|
||||
34: number;
|
||||
35: number;
|
||||
36: number;
|
||||
37: number;
|
||||
38: number;
|
||||
39: number;
|
||||
40: number;
|
||||
41: number;
|
||||
42: number;
|
||||
43: number;
|
||||
44: number;
|
||||
45: number;
|
||||
46: number;
|
||||
47: number;
|
||||
48: number;
|
||||
49: number;
|
||||
50: number;
|
||||
51: number;
|
||||
52: number;
|
||||
53: number;
|
||||
54: number;
|
||||
55: number;
|
||||
56: number;
|
||||
57: number;
|
||||
58: number;
|
||||
59: number;
|
||||
60: number;
|
||||
61: number;
|
||||
62: number;
|
||||
63: number;
|
||||
64: number;
|
||||
65: number;
|
||||
66: number;
|
||||
67: number;
|
||||
68: number;
|
||||
69: number;
|
||||
70: number;
|
||||
71: number;
|
||||
72: number;
|
||||
73: number;
|
||||
74: number;
|
||||
75: number;
|
||||
76: number;
|
||||
77: number;
|
||||
78: number;
|
||||
79: number;
|
||||
80: number;
|
||||
81: number;
|
||||
82: number;
|
||||
83: number;
|
||||
84: number;
|
||||
85: number;
|
||||
86: number;
|
||||
87: number;
|
||||
88: number;
|
||||
89: number;
|
||||
90: number;
|
||||
91: number;
|
||||
92: number;
|
||||
93: number;
|
||||
94: number;
|
||||
95: number;
|
||||
96: number;
|
||||
97: number;
|
||||
98: number;
|
||||
99: number;
|
||||
};
|
||||
export declare function calculateTextWidth(text: string, size: "10pt" | "8pt"): number;
|
||||
402
node_modules/swissqrbill/lib/esm/svg/character-width.js
generated
vendored
Normal file
402
node_modules/swissqrbill/lib/esm/svg/character-width.js
generated
vendored
Normal file
@@ -0,0 +1,402 @@
|
||||
const arial8pt = {
|
||||
100: 6.11767578125,
|
||||
101: 6.11767578125,
|
||||
102: 3.05615234375,
|
||||
103: 6.11767578125,
|
||||
104: 6.11767578125,
|
||||
105: 2.44384765625,
|
||||
106: 2.44384765625,
|
||||
107: 5.5,
|
||||
108: 2.44384765625,
|
||||
109: 9.1630859375,
|
||||
110: 6.11767578125,
|
||||
111: 6.11767578125,
|
||||
112: 6.11767578125,
|
||||
113: 6.11767578125,
|
||||
114: 3.6630859375,
|
||||
115: 5.5,
|
||||
116: 3.05615234375,
|
||||
117: 6.11767578125,
|
||||
118: 5.5,
|
||||
119: 7.94384765625,
|
||||
120: 5.5,
|
||||
121: 5.5,
|
||||
122: 5.5,
|
||||
123: 3.673828125,
|
||||
124: 2.857421875,
|
||||
125: 3.673828125,
|
||||
126: 6.423828125,
|
||||
160: 3.05615234375,
|
||||
161: 3.6630859375,
|
||||
162: 6.11767578125,
|
||||
163: 6.11767578125,
|
||||
164: 6.11767578125,
|
||||
165: 6.11767578125,
|
||||
166: 2.857421875,
|
||||
167: 6.11767578125,
|
||||
168: 3.6630859375,
|
||||
169: 8.10498046875,
|
||||
170: 4.0712890625,
|
||||
171: 6.11767578125,
|
||||
172: 6.423828125,
|
||||
173: 0,
|
||||
174: 8.10498046875,
|
||||
175: 6.07470703125,
|
||||
176: 4.39892578125,
|
||||
177: 6.037109375,
|
||||
178: 3.6630859375,
|
||||
179: 3.6630859375,
|
||||
180: 3.6630859375,
|
||||
181: 6.337890625,
|
||||
182: 5.908203125,
|
||||
183: 3.6630859375,
|
||||
184: 3.6630859375,
|
||||
185: 3.6630859375,
|
||||
186: 4.017578125,
|
||||
187: 6.11767578125,
|
||||
188: 9.173828125,
|
||||
189: 9.173828125,
|
||||
190: 9.173828125,
|
||||
191: 6.71923828125,
|
||||
192: 7.3369140625,
|
||||
193: 7.3369140625,
|
||||
194: 7.3369140625,
|
||||
195: 7.3369140625,
|
||||
196: 7.3369140625,
|
||||
197: 7.3369140625,
|
||||
198: 11,
|
||||
199: 7.94384765625,
|
||||
200: 7.3369140625,
|
||||
201: 7.3369140625,
|
||||
202: 7.3369140625,
|
||||
203: 7.3369140625,
|
||||
204: 3.05615234375,
|
||||
205: 3.05615234375,
|
||||
206: 3.05615234375,
|
||||
207: 3.05615234375,
|
||||
208: 7.94384765625,
|
||||
209: 7.94384765625,
|
||||
210: 8.55615234375,
|
||||
211: 8.55615234375,
|
||||
212: 8.55615234375,
|
||||
213: 8.55615234375,
|
||||
214: 8.55615234375,
|
||||
215: 6.423828125,
|
||||
216: 8.55615234375,
|
||||
217: 7.94384765625,
|
||||
218: 7.94384765625,
|
||||
219: 7.94384765625,
|
||||
220: 7.94384765625,
|
||||
221: 7.3369140625,
|
||||
222: 7.3369140625,
|
||||
223: 6.71923828125,
|
||||
224: 6.11767578125,
|
||||
225: 6.11767578125,
|
||||
226: 6.11767578125,
|
||||
227: 6.11767578125,
|
||||
228: 6.11767578125,
|
||||
229: 6.11767578125,
|
||||
230: 9.78076171875,
|
||||
231: 5.5,
|
||||
232: 6.11767578125,
|
||||
233: 6.11767578125,
|
||||
234: 6.11767578125,
|
||||
235: 6.11767578125,
|
||||
236: 3.05615234375,
|
||||
237: 3.05615234375,
|
||||
238: 3.05615234375,
|
||||
239: 3.05615234375,
|
||||
240: 6.11767578125,
|
||||
241: 6.11767578125,
|
||||
242: 6.11767578125,
|
||||
243: 6.11767578125,
|
||||
244: 6.11767578125,
|
||||
245: 6.11767578125,
|
||||
246: 6.11767578125,
|
||||
247: 6.037109375,
|
||||
248: 6.71923828125,
|
||||
249: 6.11767578125,
|
||||
250: 6.11767578125,
|
||||
251: 6.11767578125,
|
||||
252: 6.11767578125,
|
||||
253: 5.5,
|
||||
254: 6.11767578125,
|
||||
32: 3.05615234375,
|
||||
33: 3.05615234375,
|
||||
34: 3.90478515625,
|
||||
35: 6.11767578125,
|
||||
36: 6.11767578125,
|
||||
37: 9.78076171875,
|
||||
38: 7.3369140625,
|
||||
39: 2.10009765625,
|
||||
40: 3.6630859375,
|
||||
41: 3.6630859375,
|
||||
42: 4.28076171875,
|
||||
43: 6.423828125,
|
||||
44: 3.05615234375,
|
||||
45: 3.6630859375,
|
||||
46: 3.05615234375,
|
||||
47: 3.05615234375,
|
||||
48: 6.11767578125,
|
||||
49: 6.11767578125,
|
||||
50: 6.11767578125,
|
||||
51: 6.11767578125,
|
||||
52: 6.11767578125,
|
||||
53: 6.11767578125,
|
||||
54: 6.11767578125,
|
||||
55: 6.11767578125,
|
||||
56: 6.11767578125,
|
||||
57: 6.11767578125,
|
||||
58: 3.05615234375,
|
||||
59: 3.05615234375,
|
||||
60: 6.423828125,
|
||||
61: 6.423828125,
|
||||
62: 6.423828125,
|
||||
63: 6.11767578125,
|
||||
64: 11.16650390625,
|
||||
65: 7.3369140625,
|
||||
66: 7.3369140625,
|
||||
67: 7.94384765625,
|
||||
68: 7.94384765625,
|
||||
69: 7.3369140625,
|
||||
70: 6.71923828125,
|
||||
71: 8.55615234375,
|
||||
72: 7.94384765625,
|
||||
73: 3.05615234375,
|
||||
74: 5.5,
|
||||
75: 7.3369140625,
|
||||
76: 6.11767578125,
|
||||
77: 9.1630859375,
|
||||
78: 7.94384765625,
|
||||
79: 8.55615234375,
|
||||
80: 7.3369140625,
|
||||
81: 8.55615234375,
|
||||
82: 7.94384765625,
|
||||
83: 7.3369140625,
|
||||
84: 6.71923828125,
|
||||
85: 7.94384765625,
|
||||
86: 7.3369140625,
|
||||
87: 10.38232421875,
|
||||
88: 7.3369140625,
|
||||
89: 7.3369140625,
|
||||
90: 6.71923828125,
|
||||
91: 3.05615234375,
|
||||
92: 3.05615234375,
|
||||
93: 3.05615234375,
|
||||
94: 5.16162109375,
|
||||
95: 6.11767578125,
|
||||
96: 3.6630859375,
|
||||
97: 6.11767578125,
|
||||
98: 6.11767578125,
|
||||
99: 5.5
|
||||
};
|
||||
const arial10pt = {
|
||||
100: 7.22998046875,
|
||||
101: 7.22998046875,
|
||||
102: 3.61181640625,
|
||||
103: 7.22998046875,
|
||||
104: 7.22998046875,
|
||||
105: 2.88818359375,
|
||||
106: 2.88818359375,
|
||||
107: 6.5,
|
||||
108: 2.88818359375,
|
||||
109: 10.8291015625,
|
||||
110: 7.22998046875,
|
||||
111: 7.22998046875,
|
||||
112: 7.22998046875,
|
||||
113: 7.22998046875,
|
||||
114: 4.3291015625,
|
||||
115: 6.5,
|
||||
116: 3.61181640625,
|
||||
117: 7.22998046875,
|
||||
118: 6.5,
|
||||
119: 9.38818359375,
|
||||
120: 6.5,
|
||||
121: 6.5,
|
||||
122: 6.5,
|
||||
123: 4.341796875,
|
||||
124: 3.376953125,
|
||||
125: 4.341796875,
|
||||
126: 7.591796875,
|
||||
160: 3.61181640625,
|
||||
161: 4.3291015625,
|
||||
162: 7.22998046875,
|
||||
163: 7.22998046875,
|
||||
164: 7.22998046875,
|
||||
165: 7.22998046875,
|
||||
166: 3.376953125,
|
||||
167: 7.22998046875,
|
||||
168: 4.3291015625,
|
||||
169: 9.57861328125,
|
||||
170: 4.8115234375,
|
||||
171: 7.22998046875,
|
||||
172: 7.591796875,
|
||||
173: 0,
|
||||
174: 9.57861328125,
|
||||
175: 7.17919921875,
|
||||
176: 5.19873046875,
|
||||
177: 7.134765625,
|
||||
178: 4.3291015625,
|
||||
179: 4.3291015625,
|
||||
180: 4.3291015625,
|
||||
181: 7.490234375,
|
||||
182: 6.982421875,
|
||||
183: 4.3291015625,
|
||||
184: 4.3291015625,
|
||||
185: 4.3291015625,
|
||||
186: 4.748046875,
|
||||
187: 7.22998046875,
|
||||
188: 10.841796875,
|
||||
189: 10.841796875,
|
||||
190: 10.841796875,
|
||||
191: 7.94091796875,
|
||||
192: 8.6708984375,
|
||||
193: 8.6708984375,
|
||||
194: 8.6708984375,
|
||||
195: 8.6708984375,
|
||||
196: 8.6708984375,
|
||||
197: 8.6708984375,
|
||||
198: 13,
|
||||
199: 9.38818359375,
|
||||
200: 8.6708984375,
|
||||
201: 8.6708984375,
|
||||
202: 8.6708984375,
|
||||
203: 8.6708984375,
|
||||
204: 3.61181640625,
|
||||
205: 3.61181640625,
|
||||
206: 3.61181640625,
|
||||
207: 3.61181640625,
|
||||
208: 9.38818359375,
|
||||
209: 9.38818359375,
|
||||
210: 10.11181640625,
|
||||
211: 10.11181640625,
|
||||
212: 10.11181640625,
|
||||
213: 10.11181640625,
|
||||
214: 10.11181640625,
|
||||
215: 7.591796875,
|
||||
216: 10.11181640625,
|
||||
217: 9.38818359375,
|
||||
218: 9.38818359375,
|
||||
219: 9.38818359375,
|
||||
220: 9.38818359375,
|
||||
221: 8.6708984375,
|
||||
222: 8.6708984375,
|
||||
223: 7.94091796875,
|
||||
224: 7.22998046875,
|
||||
225: 7.22998046875,
|
||||
226: 7.22998046875,
|
||||
227: 7.22998046875,
|
||||
228: 7.22998046875,
|
||||
229: 7.22998046875,
|
||||
230: 11.55908203125,
|
||||
231: 6.5,
|
||||
232: 7.22998046875,
|
||||
233: 7.22998046875,
|
||||
234: 7.22998046875,
|
||||
235: 7.22998046875,
|
||||
236: 3.61181640625,
|
||||
237: 3.61181640625,
|
||||
238: 3.61181640625,
|
||||
239: 3.61181640625,
|
||||
240: 7.22998046875,
|
||||
241: 7.22998046875,
|
||||
242: 7.22998046875,
|
||||
243: 7.22998046875,
|
||||
244: 7.22998046875,
|
||||
245: 7.22998046875,
|
||||
246: 7.22998046875,
|
||||
247: 7.134765625,
|
||||
248: 7.94091796875,
|
||||
249: 7.22998046875,
|
||||
250: 7.22998046875,
|
||||
251: 7.22998046875,
|
||||
252: 7.22998046875,
|
||||
253: 6.5,
|
||||
254: 7.22998046875,
|
||||
32: 3.61181640625,
|
||||
33: 3.61181640625,
|
||||
34: 4.61474609375,
|
||||
35: 7.22998046875,
|
||||
36: 7.22998046875,
|
||||
37: 11.55908203125,
|
||||
38: 8.6708984375,
|
||||
39: 2.48193359375,
|
||||
40: 4.3291015625,
|
||||
41: 4.3291015625,
|
||||
42: 5.05908203125,
|
||||
43: 7.591796875,
|
||||
44: 3.61181640625,
|
||||
45: 4.3291015625,
|
||||
46: 3.61181640625,
|
||||
47: 3.61181640625,
|
||||
48: 7.22998046875,
|
||||
49: 7.22998046875,
|
||||
50: 7.22998046875,
|
||||
51: 7.22998046875,
|
||||
52: 7.22998046875,
|
||||
53: 7.22998046875,
|
||||
54: 7.22998046875,
|
||||
55: 7.22998046875,
|
||||
56: 7.22998046875,
|
||||
57: 7.22998046875,
|
||||
58: 3.61181640625,
|
||||
59: 3.61181640625,
|
||||
60: 7.591796875,
|
||||
61: 7.591796875,
|
||||
62: 7.591796875,
|
||||
63: 7.22998046875,
|
||||
64: 13.19677734375,
|
||||
65: 8.6708984375,
|
||||
66: 8.6708984375,
|
||||
67: 9.38818359375,
|
||||
68: 9.38818359375,
|
||||
69: 8.6708984375,
|
||||
70: 7.94091796875,
|
||||
71: 10.11181640625,
|
||||
72: 9.38818359375,
|
||||
73: 3.61181640625,
|
||||
74: 6.5,
|
||||
75: 8.6708984375,
|
||||
76: 7.22998046875,
|
||||
77: 10.8291015625,
|
||||
78: 9.38818359375,
|
||||
79: 10.11181640625,
|
||||
80: 8.6708984375,
|
||||
81: 10.11181640625,
|
||||
82: 9.38818359375,
|
||||
83: 8.6708984375,
|
||||
84: 7.94091796875,
|
||||
85: 9.38818359375,
|
||||
86: 8.6708984375,
|
||||
87: 12.27001953125,
|
||||
88: 8.6708984375,
|
||||
89: 8.6708984375,
|
||||
90: 7.94091796875,
|
||||
91: 3.61181640625,
|
||||
92: 3.61181640625,
|
||||
93: 3.61181640625,
|
||||
94: 6.10009765625,
|
||||
95: 7.22998046875,
|
||||
96: 4.3291015625,
|
||||
97: 7.22998046875,
|
||||
98: 7.22998046875,
|
||||
99: 6.5
|
||||
};
|
||||
function calculateTextWidth(text, size) {
|
||||
let width = 0;
|
||||
if (size === "8pt") {
|
||||
for (let c = 0; c < text.length; c++) {
|
||||
width += arial8pt[text.charCodeAt(c)];
|
||||
}
|
||||
} else if (size === "10pt") {
|
||||
for (let c = 0; c < text.length; c++) {
|
||||
width += arial10pt[text.charCodeAt(c)];
|
||||
}
|
||||
}
|
||||
return width;
|
||||
}
|
||||
export {
|
||||
arial10pt,
|
||||
arial8pt,
|
||||
calculateTextWidth
|
||||
};
|
||||
2
node_modules/swissqrbill/lib/esm/svg/index.d.ts
generated
vendored
Normal file
2
node_modules/swissqrbill/lib/esm/svg/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export * from './swissqrbill.js';
|
||||
export * from './swissqrcode.js';
|
||||
6
node_modules/swissqrbill/lib/esm/svg/index.js
generated
vendored
Normal file
6
node_modules/swissqrbill/lib/esm/svg/index.js
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
import { SwissQRBill } from "./swissqrbill.js";
|
||||
import { SwissQRCode } from "./swissqrcode.js";
|
||||
export {
|
||||
SwissQRBill,
|
||||
SwissQRCode
|
||||
};
|
||||
62
node_modules/swissqrbill/lib/esm/svg/swissqrbill.d.ts
generated
vendored
Normal file
62
node_modules/swissqrbill/lib/esm/svg/swissqrbill.d.ts
generated
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
import { SVG } from 'svg-engine';
|
||||
import { Data, SVGOptions } from '../shared/types.js';
|
||||
/**
|
||||
* The SwissQRBill class creates the Payment Part with the QR Code as an SVG.
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* const data = {
|
||||
* amount: 1994.75,
|
||||
* creditor: {
|
||||
* account: "CH44 3199 9123 0008 8901 2",
|
||||
* address: "Musterstrasse",
|
||||
* buildingNumber: 7,
|
||||
* city: "Musterstadt",
|
||||
* country: "CH",
|
||||
* name: "SwissQRBill",
|
||||
* zip: 1234
|
||||
* },
|
||||
* currency: "CHF",
|
||||
* debtor: {
|
||||
* address: "Musterstrasse",
|
||||
* buildingNumber: 1,
|
||||
* city: "Musterstadt",
|
||||
* country: "CH",
|
||||
* name: "Peter Muster",
|
||||
* zip: 1234
|
||||
* },
|
||||
* reference: "21 00000 00003 13947 14300 09017"
|
||||
* };
|
||||
*
|
||||
* const svg = new SwissQRBill(data);
|
||||
* writeFileSync("qr-bill.svg", svg.toString());
|
||||
* ```
|
||||
*/
|
||||
export declare class SwissQRBill {
|
||||
instance: SVG;
|
||||
private scissors;
|
||||
private outlines;
|
||||
private language;
|
||||
private font;
|
||||
private data;
|
||||
constructor(data: Data, options?: SVGOptions);
|
||||
/**
|
||||
* Outputs the SVG as a string.
|
||||
*
|
||||
* @returns The outerHTML of the SVG.
|
||||
*/
|
||||
toString(): string;
|
||||
/**
|
||||
* Returns the SVG element.
|
||||
*
|
||||
* @returns The SVG element.
|
||||
*/
|
||||
get element(): SVGElement;
|
||||
private _render;
|
||||
private _renderQRCode;
|
||||
private _formatAddress;
|
||||
private _getLineCountOfText;
|
||||
private _fitTextToWidth;
|
||||
private _ellipsis;
|
||||
private _addRectangle;
|
||||
}
|
||||
329
node_modules/swissqrbill/lib/esm/svg/swissqrbill.js
generated
vendored
Normal file
329
node_modules/swissqrbill/lib/esm/svg/swissqrbill.js
generated
vendored
Normal file
@@ -0,0 +1,329 @@
|
||||
import { SVG } from "svg-engine";
|
||||
import { cleanData } from "../shared/cleaner.js";
|
||||
import { translations } from "../shared/translations.js";
|
||||
import { validateData } from "../shared/validator.js";
|
||||
import { SwissQRCode } from "./swissqrcode.js";
|
||||
import { mm2px, formatIBAN, formatReference, pt2mm, formatAmount, getReferenceType } from "../shared/utils.js";
|
||||
import { calculateTextWidth } from "./character-width.js";
|
||||
class SwissQRBill {
|
||||
constructor(data, options) {
|
||||
this.scissors = true;
|
||||
this.outlines = true;
|
||||
this.language = "DE";
|
||||
this.font = "Arial";
|
||||
this.data = data;
|
||||
this.data = cleanData(this.data);
|
||||
validateData(this.data);
|
||||
this.language = (options == null ? void 0 : options.language) !== void 0 ? options.language : this.language;
|
||||
this.outlines = (options == null ? void 0 : options.outlines) !== void 0 ? options.outlines : this.outlines;
|
||||
this.font = (options == null ? void 0 : options.fontName) !== void 0 ? options.fontName : this.font;
|
||||
this.scissors = (options == null ? void 0 : options.scissors) !== void 0 ? options.scissors : this.scissors;
|
||||
this.instance = new SVG();
|
||||
this.instance.width("210mm");
|
||||
this.instance.height("105mm");
|
||||
this._render();
|
||||
}
|
||||
/**
|
||||
* Outputs the SVG as a string.
|
||||
*
|
||||
* @returns The outerHTML of the SVG.
|
||||
*/
|
||||
toString() {
|
||||
return this.instance.outerHTML;
|
||||
}
|
||||
/**
|
||||
* Returns the SVG element.
|
||||
*
|
||||
* @returns The SVG element.
|
||||
*/
|
||||
get element() {
|
||||
return this.instance.element;
|
||||
}
|
||||
_render() {
|
||||
const formattedCreditorAddress = this._formatAddress(this.data.creditor);
|
||||
let receiptLineCount = 0;
|
||||
let paymentPartLineCount = 0;
|
||||
this.instance.addRect(0, 0, "100%", "100%").fill("#fff");
|
||||
if (this.outlines) {
|
||||
this.instance.addLine("62mm", "0mm", "62mm", "105mm").stroke(1, "dashed", "black");
|
||||
}
|
||||
if (this.scissors) {
|
||||
const scissorsCenter = "M8.55299 18.3969C9.54465 17.5748 9.51074 16.0915 9.08357 14.9829L6.47473 8.02261C7.58167 5.9986 7.26467 3.99833 7.80373 3.99833C8.22582 3.99833 8.13259 4.38482 9.23105 4.32719C10.2854 4.27125 11.0652 3.1711 10.9957 2.13197C11.0025 1.09115 10.2041 0.0130391 9.1056 0.00456339C7.99867 -0.0734135 6.96972 0.858918 6.89683 1.95907C6.70527 3.24907 7.48674 5.53413 5.56613 6.60547C4.09305 5.80705 4.08797 4.38991 4.16255 3.10838C4.22358 2.04552 3.91845 0.76738 2.87424 0.260531C1.87241 -0.229367 0.446794 0.25036 0.139972 1.37594C-0.277034 2.51168 0.250156 4.07122 1.55541 4.34244C2.56233 4.55095 3.03528 3.83729 3.40143 4.1119C3.67774 4.31871 3.5167 5.62906 4.566 7.96667L1.908 15.5033C1.64356 16.456 1.65204 17.6206 2.58776 18.463L5.5424 10.6484L8.55299 18.3969ZM10.1634 2.87953C9.55143 3.97629 7.88849 3.88645 7.56641 2.74731C7.20704 1.71666 8.20887 0.397838 9.32767 0.726697C10.2447 0.919943 10.5821 2.12858 10.1634 2.87953ZM3.36753 2.927C2.94544 4.07122 1.00789 3.87797 0.746835 2.71341C0.479001 1.94042 0.8638 0.836881 1.77409 0.758904C2.88102 0.608036 3.87946 1.90821 3.36753 2.927Z";
|
||||
const scissorsSVG = this.instance.addSVG("11px", "19px").x(mm2px(62) - 5.25).y("30pt");
|
||||
scissorsSVG.addPath(scissorsCenter).fill("black");
|
||||
}
|
||||
const receiptContainer = this.instance.addSVG().x("5mm").y("5mm");
|
||||
const receiptTextContainer = receiptContainer.addText();
|
||||
receiptTextContainer.addTSpan(translations[this.language].receipt).x(0).y(0).dy("11pt").fontFamily(this.font).fontWeight("bold").fontSize("11pt");
|
||||
receiptTextContainer.addTSpan(translations[this.language].account).x(0).y("7mm").dy("9pt").fontFamily(this.font).fontWeight("bold").fontSize("6pt");
|
||||
receiptTextContainer.addTSpan(formatIBAN(this.data.creditor.account)).x(0).dy("9pt").fontFamily(this.font).fontWeight("normal").fontSize("8pt");
|
||||
receiptLineCount++;
|
||||
let receiptCreditorAddressLines = [];
|
||||
for (const line of formattedCreditorAddress) {
|
||||
const messageLines = this._fitTextToWidth(line, mm2px(52), 2, "8pt");
|
||||
receiptCreditorAddressLines = [...receiptCreditorAddressLines, ...messageLines];
|
||||
}
|
||||
for (const line of receiptCreditorAddressLines) {
|
||||
receiptLineCount++;
|
||||
receiptTextContainer.addTSpan(line).x(0).dy("9pt").fontFamily(this.font).fontWeight("normal").fontSize("8pt");
|
||||
}
|
||||
if (this.data.reference !== void 0) {
|
||||
receiptTextContainer.addTSpan(translations[this.language].reference).x(0).dy("18pt").fontFamily(this.font).fontWeight("bold").fontSize("6pt");
|
||||
receiptTextContainer.addTSpan(formatReference(this.data.reference)).x(0).dy("9pt").fontFamily(this.font).fontWeight("normal").fontSize("8pt");
|
||||
receiptLineCount++;
|
||||
}
|
||||
if (this.data.debtor !== void 0) {
|
||||
const formattedDebtorAddress = this._formatAddress(this.data.debtor);
|
||||
receiptTextContainer.addTSpan(translations[this.language].payableBy).x(0).dy("18pt").fontFamily(this.font).fontWeight("bold").fontSize("6pt");
|
||||
let receiptDebtorAddressLines = [];
|
||||
for (const line of formattedDebtorAddress) {
|
||||
const messageLines = this._fitTextToWidth(line, mm2px(52), 2, "8pt");
|
||||
receiptDebtorAddressLines = [...receiptDebtorAddressLines, ...messageLines];
|
||||
}
|
||||
for (const line of receiptDebtorAddressLines) {
|
||||
receiptTextContainer.addTSpan(line).x(0).dy("9pt").fontFamily(this.font).fontWeight("normal").fontSize("8pt");
|
||||
}
|
||||
} else {
|
||||
receiptTextContainer.addTSpan(translations[this.language].payableByName).x(0).dy("18pt").fontFamily(this.font).fontWeight("bold").fontSize("6pt");
|
||||
const referenceHeight = this.data.reference !== void 0 ? pt2mm(18) : 0;
|
||||
this._addRectangle(
|
||||
5,
|
||||
12 + pt2mm(9) + receiptLineCount * pt2mm(9) + pt2mm(referenceHeight) + pt2mm(18) + 1,
|
||||
52,
|
||||
20
|
||||
);
|
||||
}
|
||||
const amountContainer = receiptContainer.addText().y("63mm");
|
||||
amountContainer.addTSpan(translations[this.language].currency).x(0).dy("6pt").fontFamily(this.font).fontWeight("bold").fontSize("6pt");
|
||||
const amountXPosition = this.data.amount === void 0 ? 13 : 22;
|
||||
amountContainer.addTSpan(translations[this.language].amount).x(`${amountXPosition}mm`).fontFamily(this.font).fontWeight("bold").fontSize("6pt");
|
||||
amountContainer.addTSpan(this.data.currency).x(0).dy("11pt").fontFamily(this.font).fontWeight("normal").fontSize("8pt");
|
||||
if (this.data.amount !== void 0) {
|
||||
amountContainer.addTSpan(formatAmount(this.data.amount)).x(`${amountXPosition}mm`).fontFamily(this.font).fontWeight("normal").fontSize("8pt");
|
||||
} else {
|
||||
this._addRectangle(27, 68, 30, 10);
|
||||
}
|
||||
amountContainer.addTSpan(translations[this.language].acceptancePoint).x("52mm").y("82mm").textAlign("right").fontFamily(this.font).fontWeight("bold").fontSize("6pt");
|
||||
const paymentPartContainer = this.instance.addSVG().x("67mm").y("5mm");
|
||||
paymentPartContainer.addText(translations[this.language].paymentPart).x(0).y(0).dy("11pt").fontFamily(this.font).fontWeight("bold").fontSize("11pt");
|
||||
this._renderQRCode();
|
||||
const paymentPartMiddleTextContainer = paymentPartContainer.addText().y("63mm");
|
||||
paymentPartMiddleTextContainer.addTSpan(translations[this.language].currency).x(0).dy("8pt").fontFamily(this.font).fontWeight("bold").fontSize("8pt");
|
||||
paymentPartMiddleTextContainer.addTSpan(translations[this.language].amount).x("22mm").fontFamily(this.font).fontWeight("bold").fontSize("8pt");
|
||||
paymentPartMiddleTextContainer.addTSpan(this.data.currency).x(0).dy("13pt").fontFamily(this.font).fontWeight("normal").fontSize("10pt");
|
||||
if (this.data.amount !== void 0) {
|
||||
paymentPartMiddleTextContainer.addTSpan(formatAmount(this.data.amount)).x("22mm").fontFamily(this.font).fontWeight("normal").fontSize("10pt");
|
||||
} else {
|
||||
this._addRectangle(
|
||||
78,
|
||||
68 + pt2mm(8) + pt2mm(5),
|
||||
40,
|
||||
15
|
||||
);
|
||||
}
|
||||
const alternativeSchemeContainer = paymentPartContainer.addText().x(0).y("90mm");
|
||||
if (this.data.av1 !== void 0) {
|
||||
const [scheme, data] = this.data.av1.split(/(\/.+)/);
|
||||
alternativeSchemeContainer.addTSpan(scheme).x(0).fontFamily(this.font).fontWeight("bold").fontSize("7pt");
|
||||
alternativeSchemeContainer.addTSpan(this.data.av1.length > 90 ? `${data.substr(0, 87)}...` : data).fontFamily(this.font).fontWeight("normal").fontSize("7pt");
|
||||
}
|
||||
if (this.data.av2 !== void 0) {
|
||||
const [scheme, data] = this.data.av2.split(/(\/.+)/);
|
||||
alternativeSchemeContainer.addTSpan(scheme).x(0).dy("8pt").fontFamily(this.font).fontWeight("bold").fontSize("7pt");
|
||||
alternativeSchemeContainer.addTSpan(this.data.av2.length > 90 ? `${data.substr(0, 87)}...` : data).fontFamily(this.font).fontWeight("normal").fontSize("7pt");
|
||||
}
|
||||
const paymentPartDebtorContainer = this.instance.addSVG().x("118mm").y("5mm");
|
||||
const paymentPartRightTextContainer = paymentPartDebtorContainer.addText();
|
||||
paymentPartRightTextContainer.addTSpan(translations[this.language].account).x(0).y(0).dy("11pt").fontFamily(this.font).fontWeight("bold").fontSize("8pt");
|
||||
paymentPartRightTextContainer.addTSpan(formatIBAN(this.data.creditor.account)).x(0).dy("11pt").fontFamily(this.font).fontWeight("normal").fontSize("10pt");
|
||||
paymentPartLineCount++;
|
||||
let paymentPartCreditorAddressLines = [];
|
||||
for (const line of formattedCreditorAddress) {
|
||||
const messageLines = this._fitTextToWidth(line, mm2px(52), 2, "8pt");
|
||||
paymentPartCreditorAddressLines = [...paymentPartCreditorAddressLines, ...messageLines];
|
||||
}
|
||||
for (const line of paymentPartCreditorAddressLines) {
|
||||
paymentPartRightTextContainer.addTSpan(line).x(0).dy("11pt").fontFamily(this.font).fontWeight("normal").fontSize("10pt");
|
||||
paymentPartLineCount++;
|
||||
}
|
||||
if (this.data.reference !== void 0) {
|
||||
paymentPartRightTextContainer.addTSpan(translations[this.language].reference).x(0).dy("22pt").fontFamily(this.font).fontWeight("bold").fontSize("8pt");
|
||||
paymentPartRightTextContainer.addTSpan(formatReference(this.data.reference)).x(0).dy("11pt").fontFamily(this.font).fontWeight("normal").fontSize("10pt");
|
||||
paymentPartLineCount++;
|
||||
}
|
||||
if (this.data.message !== void 0 || this.data.additionalInformation !== void 0) {
|
||||
paymentPartRightTextContainer.addTSpan(translations[this.language].additionalInformation).x(0).dy("22pt").fontFamily(this.font).fontWeight("bold").fontSize("8pt");
|
||||
const referenceType = getReferenceType(this.data.reference);
|
||||
const maxLines = referenceType === "QRR" || referenceType === "SCOR" ? 3 : 4;
|
||||
const lengthInPixel = mm2px(87);
|
||||
this._getLineCountOfText(this.data.message, lengthInPixel, "10pt");
|
||||
const linesOfAdditionalInformation = this._getLineCountOfText(this.data.additionalInformation, lengthInPixel, "10pt");
|
||||
if (this.data.additionalInformation !== void 0) {
|
||||
if (referenceType === "QRR" || referenceType === "SCOR") {
|
||||
if (this.data.message !== void 0) {
|
||||
paymentPartRightTextContainer.addTSpan(this._ellipsis(this.data.message, lengthInPixel, "10pt")).x(0).dy("11pt").fontFamily(this.font).fontWeight("normal").fontSize("10pt");
|
||||
paymentPartLineCount++;
|
||||
}
|
||||
} else {
|
||||
if (this.data.message !== void 0) {
|
||||
const maxLinesOfMessage = maxLines - linesOfAdditionalInformation;
|
||||
const messageLines = this._fitTextToWidth(this.data.message, lengthInPixel, maxLinesOfMessage, "10pt");
|
||||
for (let i = 0; i < maxLinesOfMessage; i++) {
|
||||
paymentPartRightTextContainer.addTSpan(messageLines[i]).x(0).dy("11pt").fontFamily(this.font).fontWeight("normal").fontSize("10pt");
|
||||
paymentPartLineCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
const additionalInformationLines = this._fitTextToWidth(this.data.additionalInformation, lengthInPixel, linesOfAdditionalInformation, "10pt");
|
||||
for (let i = 0; i < linesOfAdditionalInformation; i++) {
|
||||
paymentPartRightTextContainer.addTSpan(additionalInformationLines[i]).x(0).dy("11pt").fontFamily(this.font).fontWeight("normal").fontSize("10pt");
|
||||
paymentPartLineCount++;
|
||||
}
|
||||
} else if (this.data.message !== void 0) {
|
||||
const messageLines = this._fitTextToWidth(this.data.message, lengthInPixel, maxLines, "10pt");
|
||||
for (let i = 0; i < maxLines; i++) {
|
||||
paymentPartRightTextContainer.addTSpan(messageLines[i]).x(0).dy("11pt").fontFamily(this.font).fontWeight("normal").fontSize("10pt");
|
||||
paymentPartLineCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.data.debtor !== void 0) {
|
||||
const formattedDebtorAddress = this._formatAddress(this.data.debtor);
|
||||
paymentPartRightTextContainer.addTSpan(translations[this.language].payableBy).x(0).dy("22pt").fontFamily(this.font).fontWeight("bold").fontSize("8pt");
|
||||
let paymentPartDebtorAddressLines = [];
|
||||
for (const line of formattedDebtorAddress) {
|
||||
const messageLines = this._fitTextToWidth(line, mm2px(52), 2, "8pt");
|
||||
paymentPartDebtorAddressLines = [...paymentPartDebtorAddressLines, ...messageLines];
|
||||
}
|
||||
for (const line of paymentPartDebtorAddressLines) {
|
||||
paymentPartRightTextContainer.addTSpan(line).x(0).dy("11pt").fontFamily(this.font).fontWeight("normal").fontSize("10pt");
|
||||
}
|
||||
} else {
|
||||
paymentPartRightTextContainer.addTSpan(translations[this.language].payableByName).x(0).dy("22pt").fontFamily(this.font).fontWeight("bold").fontSize("8pt");
|
||||
const referenceHeight = this.data.reference !== void 0 ? pt2mm(22) : 0;
|
||||
const additionalInformationHeight = this.data.additionalInformation !== void 0 || this.data.message !== void 0 ? pt2mm(22) : 0;
|
||||
this._addRectangle(
|
||||
118,
|
||||
5 + pt2mm(11) + paymentPartLineCount * pt2mm(11) + referenceHeight + additionalInformationHeight + pt2mm(22) + 1,
|
||||
65,
|
||||
25
|
||||
);
|
||||
}
|
||||
}
|
||||
_renderQRCode() {
|
||||
const qrCode = new SwissQRCode(this.data);
|
||||
qrCode.instance.x("67mm").y("17mm");
|
||||
this.instance.appendInstance(qrCode.instance);
|
||||
}
|
||||
_formatAddress(data) {
|
||||
const countryPrefix = data.country !== "CH" ? `${data.country} - ` : "";
|
||||
if (data.buildingNumber !== void 0) {
|
||||
return [data.name, `${data.address} ${data.buildingNumber}`, `${countryPrefix}${data.zip} ${data.city}`];
|
||||
} else {
|
||||
return [data.name, data.address, `${countryPrefix}${data.zip} ${data.city}`];
|
||||
}
|
||||
}
|
||||
_getLineCountOfText(text, lengthInPixel, size) {
|
||||
if (text === void 0) {
|
||||
return 0;
|
||||
} else {
|
||||
let lines = 0;
|
||||
let remainder = calculateTextWidth(text, size);
|
||||
while (remainder > 1) {
|
||||
lines++;
|
||||
remainder -= lengthInPixel;
|
||||
}
|
||||
return lines;
|
||||
}
|
||||
}
|
||||
_fitTextToWidth(text, lengthInPixel, maxLines, size) {
|
||||
var _a;
|
||||
const remainder = text.split(/([ |-])/g);
|
||||
let lines = [];
|
||||
let currentLine = "";
|
||||
const checkCurrentLine = (currentLine2) => {
|
||||
const lines2 = [];
|
||||
let leftover = "";
|
||||
if (calculateTextWidth(currentLine2, size) > lengthInPixel) {
|
||||
const currentWordRemainder = currentLine2.split("");
|
||||
let currentWord = "";
|
||||
while (currentWordRemainder.length > 0) {
|
||||
if (calculateTextWidth(currentWord, size) <= lengthInPixel) {
|
||||
currentWord += currentWordRemainder.shift();
|
||||
} else {
|
||||
lines2.push(currentWord);
|
||||
currentWord = "";
|
||||
}
|
||||
}
|
||||
if (currentWord !== "") {
|
||||
leftover = currentWord;
|
||||
}
|
||||
} else {
|
||||
lines2.push(currentLine2);
|
||||
}
|
||||
return { leftover, lines: lines2 };
|
||||
};
|
||||
while (remainder.length > 0) {
|
||||
const nextWord = remainder.shift();
|
||||
const separator = (_a = remainder.shift()) != null ? _a : "";
|
||||
if (calculateTextWidth(currentLine + nextWord + separator, size) <= lengthInPixel) {
|
||||
currentLine += nextWord + separator;
|
||||
} else {
|
||||
if (currentLine !== "") {
|
||||
const { leftover, lines: newLines } = checkCurrentLine(currentLine);
|
||||
lines.push(...newLines);
|
||||
currentLine = leftover + nextWord + separator;
|
||||
} else {
|
||||
currentLine = nextWord + separator;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (currentLine !== "" && currentLine !== " ") {
|
||||
const { leftover, lines: newLines } = checkCurrentLine(currentLine);
|
||||
lines.push(...newLines);
|
||||
if (leftover !== "") {
|
||||
lines.push(leftover);
|
||||
}
|
||||
}
|
||||
if (lines.length > maxLines) {
|
||||
lines = lines.slice(0, maxLines);
|
||||
lines[lines.length - 1] = this._ellipsis(lines[lines.length - 1], lengthInPixel, size);
|
||||
}
|
||||
return lines;
|
||||
}
|
||||
_ellipsis(text, lengthInPixel, size) {
|
||||
let result = "";
|
||||
if (calculateTextWidth(text, size) > lengthInPixel) {
|
||||
for (let c = 0; c < text.length; c++) {
|
||||
if (calculateTextWidth(`${result}${text[c]}...`, size) <= lengthInPixel) {
|
||||
result += text[c];
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return text;
|
||||
}
|
||||
if (result.substr(-1) === " ") {
|
||||
result = result.slice(0, -1);
|
||||
}
|
||||
return `${result}...`;
|
||||
}
|
||||
_addRectangle(x, y, width, height) {
|
||||
const container = this.instance.addSVG(`${width}mm`, `${height}mm`);
|
||||
container.x(`${x}mm`).y(`${y}mm`);
|
||||
const length = 3;
|
||||
container.addLine("0mm", "0mm", `${length}mm`, "0mm").stroke(".75pt", "solid", "black");
|
||||
container.addLine(`${width - length}mm`, "0mm", `${width}mm`, "0mm").stroke(".75pt", "solid", "black");
|
||||
container.addLine(`${width}mm`, "0mm", `${width}mm`, `${length}mm`).stroke(".75pt", "solid", "black");
|
||||
container.addLine(`${width}mm`, `${height - length}mm`, `${width}mm`, `${height}mm`).stroke(".75pt", "solid", "black");
|
||||
container.addLine(`${width - length}mm`, `${height}mm`, `${width}mm`, `${height}mm`).stroke(".75pt", "solid", "black");
|
||||
container.addLine("0mm", `${height}mm`, `${length}mm`, `${height}mm`).stroke(".75pt", "solid", "black");
|
||||
container.addLine("0mm", `${height - length}mm`, "0mm", `${height}mm`).stroke(".75pt", "solid", "black");
|
||||
container.addLine("0mm", "0mm", "0mm", `${length}mm`).stroke(".75pt", "solid", "black");
|
||||
return container;
|
||||
}
|
||||
}
|
||||
export {
|
||||
SwissQRBill
|
||||
};
|
||||
25
node_modules/swissqrbill/lib/esm/svg/swissqrcode.d.ts
generated
vendored
Normal file
25
node_modules/swissqrbill/lib/esm/svg/swissqrcode.d.ts
generated
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
import { SVG } from 'svg-engine';
|
||||
import { Data } from '../shared/types.js';
|
||||
export declare class SwissQRCode {
|
||||
instance: SVG;
|
||||
/**
|
||||
* Creates a Swiss QR Code.
|
||||
*
|
||||
* @param data The data to be encoded in the QR code.
|
||||
* @param size The size of the QR code in mm.
|
||||
* @throws { ValidationError } Throws an error if the data is invalid.
|
||||
*/
|
||||
constructor(data: Data, size?: number);
|
||||
/**
|
||||
* Outputs the SVG as a string.
|
||||
*
|
||||
* @returns The outerHTML of the SVG element.
|
||||
*/
|
||||
toString(): string;
|
||||
/**
|
||||
* Returns the SVG element.
|
||||
*
|
||||
* @returns The SVG element.
|
||||
*/
|
||||
get element(): SVGElement;
|
||||
}
|
||||
51
node_modules/swissqrbill/lib/esm/svg/swissqrcode.js
generated
vendored
Normal file
51
node_modules/swissqrbill/lib/esm/svg/swissqrcode.js
generated
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
import { SVG } from "svg-engine";
|
||||
import { renderQRCode, renderSwissCross } from "../shared/qr-code.js";
|
||||
class SwissQRCode {
|
||||
/**
|
||||
* Creates a Swiss QR Code.
|
||||
*
|
||||
* @param data The data to be encoded in the QR code.
|
||||
* @param size The size of the QR code in mm.
|
||||
* @throws { ValidationError } Throws an error if the data is invalid.
|
||||
*/
|
||||
constructor(data, size = 46) {
|
||||
this.instance = new SVG();
|
||||
this.instance.width(`${size}mm`);
|
||||
this.instance.height(`${size}mm`);
|
||||
renderQRCode(data, size, (xPos, yPos, blockSize) => {
|
||||
this.instance.addRect(
|
||||
`${xPos}mm`,
|
||||
`${yPos}mm`,
|
||||
`${blockSize}mm`,
|
||||
`${blockSize}mm`
|
||||
).fill("black");
|
||||
});
|
||||
renderSwissCross(size, (xPos, yPos, width, height, fillColor) => {
|
||||
this.instance.addRect(
|
||||
`${xPos}mm`,
|
||||
`${yPos}mm`,
|
||||
`${width}mm`,
|
||||
`${height}mm`
|
||||
).fill(fillColor);
|
||||
});
|
||||
}
|
||||
/**
|
||||
* Outputs the SVG as a string.
|
||||
*
|
||||
* @returns The outerHTML of the SVG element.
|
||||
*/
|
||||
toString() {
|
||||
return this.instance.outerHTML;
|
||||
}
|
||||
/**
|
||||
* Returns the SVG element.
|
||||
*
|
||||
* @returns The SVG element.
|
||||
*/
|
||||
get element() {
|
||||
return this.instance.element;
|
||||
}
|
||||
}
|
||||
export {
|
||||
SwissQRCode
|
||||
};
|
||||
Reference in New Issue
Block a user