@operato/scene-label 7.0.1 → 7.3.19

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.
@@ -1,127 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
-
5
- import { Component, ComponentNature, HTMLOverlayElement } from '@hatiolab/things-scene'
6
- import { OxInputBarcode } from '@operato/input' // TODO make '@operato/input/ox-input-barcode.js' work.
7
-
8
- const NATURE: ComponentNature = {
9
- mutable: false,
10
- resizable: true,
11
- rotatable: true,
12
- properties: [
13
- {
14
- type: 'checkbox',
15
- label: 'without-enter',
16
- name: 'withoutEnter'
17
- },
18
- {
19
- type: 'checkbox',
20
- label: 'english-only',
21
- name: 'englishOnly'
22
- },
23
- {
24
- type: 'checkbox',
25
- label: 'select-after-change',
26
- name: 'selectAfterChange'
27
- },
28
- {
29
- type: 'checkbox',
30
- label: 'autofocus',
31
- name: 'autofocus'
32
- },
33
- {
34
- type: 'checkbox',
35
- label: 'hide-keyboard',
36
- name: 'hideKeyboard'
37
- }
38
- ],
39
- help: 'scene/component/barcode-scanner'
40
- }
41
-
42
- export default class BarcodeScanner extends HTMLOverlayElement {
43
- private _data: any
44
-
45
- get nature() {
46
- return NATURE
47
- }
48
-
49
- get data() {
50
- return this._data
51
- }
52
-
53
- set data(data) {
54
- this._data = data
55
- this.executeMappings() // 이전 데이터와 비교하지 않고 매핑을 실행하기 위함
56
- }
57
-
58
- select() {
59
- ;(this.element as OxInputBarcode).input.select()
60
- }
61
-
62
- dispose() {
63
- super.dispose()
64
- }
65
-
66
- ready() {
67
- super.ready()
68
- var scanInput = this.element as OxInputBarcode
69
-
70
- scanInput.addEventListener('change', (e: Event) => {
71
- this.data = scanInput.value
72
- })
73
-
74
- // 스캔 시 컴포넌트 데이터 세팅
75
- var scan = scanInput.scan
76
- scanInput.scan = (e: MouseEvent) =>
77
- scan.call(scanInput, e).then(() => {
78
- if (scanInput.input) this.data = scanInput.input.value
79
- })
80
- }
81
-
82
- createElement() {
83
- super.createElement()
84
-
85
- if (this.app.isViewMode) {
86
- const { hideKeyboard, autofocus } = this.state
87
-
88
- if (hideKeyboard) {
89
- requestAnimationFrame(() => {
90
- const input = (this.element as OxInputBarcode).input
91
- input.addEventListener('focusin', e => {
92
- input.setAttribute('readonly', '')
93
- this.select()
94
-
95
- requestAnimationFrame(() => {
96
- input.removeAttribute('readonly')
97
- })
98
- })
99
- })
100
- }
101
-
102
- if (autofocus) {
103
- requestAnimationFrame(() => {
104
- this.select()
105
- })
106
- }
107
- }
108
- }
109
-
110
- setElementProperties(input: OxInputBarcode) {
111
- const { withoutEnter = false, englishOnly = false, selectAfterChange = false } = this.state
112
-
113
- input.style.setProperty('--input-font', 'initial')
114
-
115
- input.withoutEnter = withoutEnter
116
- input.englishOnly = englishOnly
117
- input.selectAfterChange = selectAfterChange
118
-
119
- input.value = this._data = this.text
120
- }
121
-
122
- get tagName() {
123
- return 'ox-input-barcode'
124
- }
125
- }
126
-
127
- Component.register('barcode-scanner', BarcodeScanner)
package/src/barcode.ts DELETED
@@ -1,328 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
-
5
- // 참고 웹페이지.
6
- // http://www.neodynamic.com/Products/Help/BarcodeWinControl2.5/working_barcode_symbologies.htm
7
- // const BARCODE_REGEXP = {
8
- // 'code11': /^[0-9\-]*$/,
9
- // 'codebar': /^[A-D][0-9\+$:\-/.]*[A-D]$/,
10
- // 'code39': {
11
- // 'normal': /^[0-9A-Z\-.$/\+%\*\s]*$/,
12
- // 'extended': /^[\000-\177]*$/
13
- // },
14
- // 'code93': {
15
- // 'normal': /^[0-9A-Z\-.$/\+%\*\s]*$/,
16
- // 'extended': /^[\000-\177]*$/
17
- // },
18
- // 'code128': {
19
- // 'auto': /^[\000-\177]*$/,
20
- // 'A': /^[\000-\137]*$/,
21
- // 'B': /^[\040-\177]*$/,
22
- // 'C': /^(([0-9]{2})+?)*$/
23
- // },
24
- // 'datamatrix': /^[\x00-\xff]*$/, // 멀티바이트 캐릭터는 안됨 ?
25
- // 'ean8': /^\d{1,}$/,
26
- // 'ean13': /^\d{1,}$/,
27
- // 'industrial2of5': /^\d{1,}$/,
28
- // 'interleaved2of5': /^\d{1,}$/,
29
- // 'isbn': /((978[\--– ])?[0-9][0-9\--– ]{10}[\--– ][0-9xX])|((978)?[0-9]{9}[0-9Xx])/,
30
- // 'msi': /^\d{1,}$/,
31
- // 'pdf417': {
32
- // 'text-compaction': /^[\011\012\015\040-\177]*$/,
33
- // 'binary-compaction': /^[\x00-\xff]*$/
34
- // },
35
- // 'planet': /^\d{1,}$/,
36
- // 'postnet': /^\d{1,}$/,
37
- // 'ean128': /^[\000-\177\xC8\xCA-\xCD]*$/,
38
- // 'upca': /^\d{1,}$/,
39
- // 'upce': /^\d{1,}$/
40
- // };
41
-
42
- /* opts 예제 - https://github.com/bwipp/postscriptbarcode/wiki/Options-Reference
43
- * includecheck, includecheckintext, includetext, textfont, textsize, textgaps, textxalign, textyalign, textxoffset, textyoffset
44
- * showborder, borderwidth, borderleft, borderright, bordertop, borderbottom, barcolor, backgroundcolor, bordercolor, textcolor
45
- * parse, parsefnc, height, width, inkspread, inkspreadh, inkspreadv,
46
- * addontextxoffset, addontextyoffset, addontextfont, addontextsize
47
- * guardwhitespace, guardwidth, guardheight, guardleftpos, guardrightpos, guardleftypos, guardrightypos
48
- */
49
-
50
- // symdesc["code39"].opts = "includetext textxalign=center textgaps=2";
51
- // symdesc["interleaved2of5"].opts = "includetext textxalign=center textgaps=1.5";
52
- // symdesc["code93"].opts = "includetext textxalign=center textgaps=2";
53
- // symdesc["ean13"].opts = "includetext";
54
- // symdesc["ean8"].opts = "includetext";
55
-
56
- import bwipjs from 'bwip-js'
57
-
58
- import { Component, ComponentNature, error, Properties, RectPath, Shape } from '@hatiolab/things-scene'
59
-
60
- const NATURE: ComponentNature = {
61
- mutable: false,
62
- resizable: true,
63
- rotatable: true,
64
- properties: [
65
- {
66
- type: 'select',
67
- label: 'symbol',
68
- name: 'symbol',
69
- property: {
70
- options: [
71
- { value: 'auspost', display: 'AusPost 4 State Customer Code' },
72
- { value: 'azteccode', display: 'Aztec Code' },
73
- { value: 'azteccodecompact', display: 'Compact Aztec Code' },
74
- { value: 'aztecrune', display: 'Aztec Runes' },
75
- { value: 'bc412', display: 'BC412' },
76
- { value: 'channelcode', display: 'Channel Code' },
77
- { value: 'codablockf', display: 'Codablock F' },
78
- { value: 'code11', display: 'Code 11' },
79
- { value: 'code128', display: 'Code 128' },
80
- { value: 'code16k', display: 'Code 16K' },
81
- { value: 'code2of5', display: 'Code 25' },
82
- { value: 'code32', display: 'Italian Pharmacode' },
83
- { value: 'code39', display: 'Code 39' },
84
- { value: 'code39ext', display: 'Code 39 Extended' },
85
- { value: 'code49', display: 'Code 49' },
86
- { value: 'code93', display: 'Code 93' },
87
- { value: 'code93ext', display: 'Code 93 Extended' },
88
- { value: 'codeone', display: 'Code One' },
89
- { value: 'coop2of5', display: 'COOP 2 of 5' },
90
- { value: 'daft', display: 'Custom 4 state symbology' },
91
- { value: 'databarexpanded', display: 'GS1 DataBar Expanded' },
92
- {
93
- value: 'databarexpandedcomposite',
94
- display: 'GS1 DataBar Expanded Composite'
95
- },
96
- {
97
- value: 'databarexpandedstacked',
98
- display: 'GS1 DataBar Expanded Stacked'
99
- },
100
- {
101
- value: 'databarexpandedstackedcomposite',
102
- display: 'GS1 DataBar Expanded Stacked Composite'
103
- },
104
- { value: 'databarlimited', display: 'GS1 DataBar Limited' },
105
- {
106
- value: 'databarlimitedcomposite',
107
- display: 'GS1 DataBar Limited Composite'
108
- },
109
- { value: 'databaromni', display: 'GS1 DataBar Omnidirectional' },
110
- {
111
- value: 'databaromnicomposite',
112
- display: 'GS1 DataBar Omnidirectional Composite'
113
- },
114
- { value: 'databarstacked', display: 'GS1 DataBar Stacked' },
115
- {
116
- value: 'databarstackedcomposite',
117
- display: 'GS1 DataBar Stacked Composite'
118
- },
119
- {
120
- value: 'databarstackedomni',
121
- display: 'GS1 DataBar Stacked Omnidirectional'
122
- },
123
- {
124
- value: 'databarstackedomnicomposite',
125
- display: 'GS1 DataBar Stacked Omnidirectional Composite'
126
- },
127
- { value: 'databartruncated', display: 'GS1 DataBar Truncated' },
128
- {
129
- value: 'databartruncatedcomposite',
130
- display: 'GS1 DataBar Truncated Composite'
131
- },
132
- { value: 'datalogic2of5', display: 'Datalogic 2 of 5' },
133
- { value: 'datamatrix', display: 'Data Matrix' },
134
- {
135
- value: 'datamatrixrectangular',
136
- display: 'Data Matrix Rectangular'
137
- },
138
- { value: 'dotcode', display: 'DotCode' },
139
- { value: 'ean13', display: 'EAN-13' },
140
- { value: 'ean13composite', display: 'EAN-13 Composite' },
141
- { value: 'ean14', display: 'GS1-14' },
142
- { value: 'ean2', display: 'EAN-2 (2 digit addon)' },
143
- { value: 'ean5', display: 'EAN-5 (5 digit addon)' },
144
- { value: 'ean8', display: 'EAN-8' },
145
- { value: 'ean8composite', display: 'EAN-8 Composite' },
146
- { value: 'flattermarken', display: 'Flattermarken' },
147
- { value: 'gs1-128', display: 'GS1-128' },
148
- { value: 'gs1-128composite', display: 'GS1-128 Composite' },
149
- { value: 'gs1-cc', display: 'GS1 Composite 2D Component' },
150
- { value: 'gs1datamatrix', display: 'GS1 Data Matrix' },
151
- {
152
- value: 'gs1datamatrixrectangular',
153
- display: 'GS1 Data Matrix Rectangular'
154
- },
155
- {
156
- value: 'gs1northamericancoupon',
157
- display: 'GS1 North American Coupon'
158
- },
159
- { value: 'gs1qrcode', display: 'GS1 QR Code' },
160
- { value: 'hanxin', display: 'Han Xin Code' },
161
- { value: 'hibcazteccode', display: 'HIBC Aztec Code' },
162
- { value: 'hibccodablockf', display: 'HIBC Codablock F' },
163
- { value: 'hibccode128', display: 'HIBC Code 128' },
164
- { value: 'hibccode39', display: 'HIBC Code 39' },
165
- { value: 'hibcdatamatrix', display: 'HIBC Data Matrix' },
166
- {
167
- value: 'hibcdatamatrixrectangular',
168
- display: 'HIBC Data Matrix Rectangular'
169
- },
170
- { value: 'hibcmicropdf417', display: 'HIBC MicroPDF417' },
171
- { value: 'hibcpdf417', display: 'HIBC PDF417' },
172
- { value: 'hibcqrcode', display: 'HIBC QR Code' },
173
- { value: 'iata2of5', display: 'IATA 2 of 5' },
174
- { value: 'identcode', display: 'Deutsche Post Identcode' },
175
- { value: 'industrial2of5', display: 'Industrial 2 of 5' },
176
- { value: 'interleaved2of5', display: 'Interleaved 2 of 5 (ITF)' },
177
- { value: 'isbn', display: 'ISBN' },
178
- { value: 'ismn', display: 'ISMN' },
179
- { value: 'issn', display: 'ISSN' },
180
- { value: 'itf14', display: 'ITF-14' },
181
- { value: 'japanpost', display: 'Japan Post 4 State Customer Code' },
182
- { value: 'kix', display: 'Royal Dutch TPG Post KIX' },
183
- { value: 'leitcode', display: 'Deutsche Post Leitcode' },
184
- { value: 'matrix2of5', display: 'Matrix 2 of 5' },
185
- { value: 'maxicode', display: 'MaxiCode' },
186
- { value: 'micropdf417', display: 'MicroPDF417' },
187
- { value: 'microqrcode', display: 'Micro QR Code' },
188
- { value: 'msi', display: 'MSI Modified Plessey' },
189
- { value: 'onecode', display: 'USPS Intelligent Mail' },
190
- { value: 'pdf417', display: 'PDF417' },
191
- { value: 'pdf417compact', display: 'Compact PDF417' },
192
- { value: 'pharmacode', display: 'Pharmaceutical Binary Code' },
193
- { value: 'pharmacode2', display: 'Two-track Pharmacode' },
194
- { value: 'planet', display: 'USPS PLANET' },
195
- { value: 'plessey', display: 'Plessey UK' },
196
- { value: 'posicode', display: 'PosiCode' },
197
- { value: 'postnet', display: 'USPS POSTNET' },
198
- { value: 'pzn', display: 'Pharmazentralnummer (PZN)' },
199
- { value: 'qrcode', display: 'QR Code' },
200
- { value: 'rationalizedCodabar', display: 'Codabar' },
201
- { value: 'raw', display: 'Custom 1D symbology' },
202
- { value: 'royalmail', display: 'Royal Mail 4 State Customer Code' },
203
- { value: 'sscc18', display: 'SSCC-18' },
204
- { value: 'symbol', display: 'Miscellaneous symbols' },
205
- { value: 'telepen', display: 'Telepen' },
206
- { value: 'telepennumeric', display: 'Telepen Numeric' },
207
- { value: 'ultracode', display: 'Ultracode' },
208
- { value: 'upca', display: 'UPC-A' },
209
- { value: 'upcacomposite', display: 'UPC-A Composite' },
210
- { value: 'upce', display: 'UPC-E' },
211
- { value: 'upcecomposite', display: 'UPC-E Composite' }
212
- ]
213
- }
214
- },
215
- {
216
- type: 'number',
217
- label: 'paddingwidth',
218
- name: 'paddingwidth'
219
- },
220
- {
221
- type: 'number',
222
- label: 'paddingheight',
223
- name: 'paddingheight'
224
- },
225
- {
226
- type: 'checkbox',
227
- label: 'monochrome',
228
- name: 'monochrome'
229
- },
230
- {
231
- type: 'checkbox',
232
- label: 'show-text',
233
- name: 'showText'
234
- }
235
- ],
236
- 'value-property': 'text'
237
- }
238
-
239
- const REDRAW_PROPS = ['symbol', 'text', 'showText', 'height', 'width', 'paddingwidth', 'paddingheight']
240
-
241
- export default class Barcode extends RectPath(Shape) {
242
- private _canvas?: HTMLCanvasElement
243
- private _image: any
244
-
245
- get nature() {
246
- return NATURE
247
- }
248
-
249
- get canvas() {
250
- if (!this._canvas) {
251
- this._canvas = document.createElement('canvas')
252
-
253
- this._canvas.style.display = 'none'
254
- this._canvas.height = 1
255
- this._canvas.width = 1
256
- }
257
-
258
- return this._canvas
259
- }
260
-
261
- dispose() {
262
- super.dispose()
263
- }
264
-
265
- ready() {
266
- super.ready()
267
- this.buildImage()
268
- }
269
-
270
- buildImage() {
271
- var { symbol, text, width, height, includetext, textAlign, paddingwidth = 0, paddingheight = 0 } = this.state
272
-
273
- if (!text) {
274
- console.warn('barcode text is not specified.')
275
- return
276
- }
277
-
278
- this.canvas.width = width
279
- this.canvas.height = height
280
-
281
- try {
282
- //@ts-ignore
283
- this._image = bwipjs.toCanvas(this.canvas, {
284
- bcid: symbol, // Barcode type
285
- text, // Text to encode
286
- height, // Bar height, in millimeters
287
- width,
288
- includetext, // Show human-readable text
289
- textxalign: textAlign || 'center', // Always good to set this
290
- paddingwidth,
291
- paddingheight
292
- })
293
- } catch (err) {
294
- delete this._image
295
- error(err)
296
- } finally {
297
- this.invalidate()
298
- }
299
- }
300
-
301
- render(context: CanvasRenderingContext2D) {
302
- var { left, top, width, height } = this.state
303
-
304
- try {
305
- if (this._image) {
306
- // don't change to this.drawImage(context, ..) - this._image is canvas.
307
- context.drawImage(this._image, left, top, width, height)
308
- }
309
- } catch (e) {
310
- error(e)
311
- }
312
- }
313
-
314
- drawText() {
315
- // to nothing
316
- }
317
-
318
- onchange(props: Properties) {
319
- for (let prop of REDRAW_PROPS) {
320
- if (prop in props) {
321
- this.buildImage()
322
- return
323
- }
324
- }
325
- }
326
- }
327
-
328
- Component.register('barcode', Barcode)
package/src/bitmap.ts DELETED
@@ -1,163 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- // file : bwip-js/lib/canvas.js
5
- //
6
- // bwip-js bitmap interface for an HTML canvas.
7
- //
8
- // Copyright (c) 2011-2016 Mark Warren
9
- //
10
- // Licensed MIT. See the LICENSE file in the bwip-js root directory
11
- // for the extended copyright notice.
12
-
13
- // bgcolor is optional, defaults to #fff.
14
- export default class Bitmap {
15
- bgcolor?: string
16
- clr = [0, 0, 0]
17
- pts = [] as any[]
18
- minx = 0 // min-x
19
- miny = 0 // min-y
20
- maxx = 0 // max-x
21
- maxy = 0 // max-y
22
- padx = 0 // padding-x
23
- pady = 0 // padding-y
24
-
25
- constructor(bgcolor: string) {
26
- this.bgcolor = bgcolor
27
- }
28
-
29
- pad(x: number, y: number) {
30
- this.padx = x
31
- this.pady = y
32
- }
33
-
34
- color(r: number, g: number, b: number) {
35
- this.clr = [r, g, b]
36
- }
37
-
38
- // Sets the minimim size for the drawing surface (can grow larger).
39
- // BWIPP has logic for borders (padding) that without this custom call
40
- // gets lost. See custom/ren*.ps.
41
- extent(llx: number, lly: number, urx: number, ury: number) {
42
- llx = Math.floor(llx)
43
- lly = Math.floor(lly)
44
- urx = Math.floor(urx)
45
- ury = Math.floor(ury)
46
- if (this.minx > llx) this.minx = llx
47
- if (this.miny > lly) this.miny = lly
48
- if (this.maxx < urx) this.maxx = urx
49
- if (this.maxy < ury) this.maxy = ury
50
- }
51
-
52
- // a is the alpha-level of the pixel [0 .. 255]
53
- set(x: number, y: number, a: number) {
54
- x = Math.floor(x)
55
- y = Math.floor(y)
56
- this.pts.push([x, y, this.clr, a])
57
- if (this.minx > x) this.minx = x
58
- if (this.miny > y) this.miny = y
59
- if (this.maxx < x) this.maxx = x
60
- if (this.maxy < y) this.maxy = y
61
- }
62
-
63
- error(cvs: HTMLCanvasElement) {
64
- cvs.width = 64
65
- cvs.height = 64
66
-
67
- var ctx = cvs.getContext('2d') as CanvasRenderingContext2D
68
-
69
- ctx.beginPath()
70
-
71
- ctx.rect(0, 0, cvs.width, cvs.height)
72
- ctx.moveTo(0, 0)
73
- ctx.lineTo(cvs.width, cvs.height)
74
- ctx.moveTo(cvs.width, 0)
75
- ctx.lineTo(0, cvs.height)
76
-
77
- ctx.lineWidth = 5
78
- ctx.strokeStyle = '#ff0000'
79
- ctx.stroke()
80
-
81
- return cvs.toDataURL()
82
- }
83
-
84
- show(cvsid: string | HTMLCanvasElement, rot: 'R' | 'L' | 'N' | 'I') {
85
- var cvs = cvsid instanceof HTMLCanvasElement ? cvsid : (document.getElementById(cvsid) as HTMLCanvasElement)
86
-
87
- if (this.pts.length == 0) {
88
- cvs.width = 32
89
- cvs.height = 32
90
- cvs.getContext('2d')?.clearRect(0, 0, cvs.width, cvs.height)
91
- cvs.style.visibility = 'visible'
92
- return
93
- }
94
-
95
- if (rot == 'R' || rot == 'L') {
96
- var h = this.maxx - this.minx + 1
97
- var w = this.maxy - this.miny + 1
98
- } else {
99
- var w = this.maxx - this.minx + 1
100
- var h = this.maxy - this.miny + 1
101
- }
102
-
103
- cvs.width = w + 2 * this.padx
104
- cvs.height = h + 2 * this.pady
105
-
106
- // Convert from cmyk?
107
- if (this.bgcolor && this.bgcolor.length == 8) {
108
- let c = parseInt(this.bgcolor.substr(0, 2), 16) / 255
109
- let m = parseInt(this.bgcolor.substr(2, 2), 16) / 255
110
- let y = parseInt(this.bgcolor.substr(4, 2), 16) / 255
111
- let k = parseInt(this.bgcolor.substr(6, 2), 16) / 255
112
- let r = Math.floor((1 - c) * (1 - k) * 255)
113
- let g = Math.floor((1 - m) * (1 - k) * 255)
114
- let b = Math.floor((1 - y) * (1 - k) * 255)
115
- this.bgcolor = 'rgb(' + r + ',' + g + ',' + b + ')'
116
- } else if (this.bgcolor) {
117
- this.bgcolor = '#' + this.bgcolor
118
- }
119
-
120
- var ctx = cvs.getContext('2d') as CanvasRenderingContext2D
121
- ctx.fillStyle = this.bgcolor || '#fff'
122
- ctx.fillRect(0, 0, cvs.width, cvs.height)
123
- ctx.fillStyle = '#000'
124
-
125
- var id = ctx.getImageData(0, 0, cvs.width, cvs.height)
126
- var dat = id.data
127
-
128
- for (let i = 0; i < this.pts.length; i++) {
129
- // PostScript builds bottom-up, we build top-down.
130
- let x = this.pts[i][0] - this.minx
131
- let y = this.pts[i][1] - this.miny
132
- let c = this.pts[i][2] as number[]
133
- let a = this.pts[i][3] / 255
134
-
135
- if (rot == 'N') {
136
- y = h - y - 1 // Invert y
137
- } else if (rot == 'I') {
138
- x = w - x - 1 // Invert x
139
- } else {
140
- y = w - y // Invert y
141
- if (rot == 'L') {
142
- var t = y
143
- y = h - x - 1
144
- x = t - 1
145
- } else {
146
- var t = x
147
- x = w - y
148
- y = t
149
- }
150
- }
151
-
152
- var idx = (y * id.width + x) * 4
153
- dat[idx + 0] = (dat[idx + 0] * (1 - a) + c[0] * a) | 0
154
- dat[idx + 1] = (dat[idx + 1] * (1 - a) + c[1] * a) | 0
155
- dat[idx + 2] = (dat[idx + 2] * (1 - a) + c[2] * a) | 0
156
- dat[idx + 3] = 255
157
- }
158
-
159
- ctx.putImageData(id, this.padx, this.pady)
160
-
161
- return cvs.toDataURL()
162
- }
163
- }
package/src/index.ts DELETED
@@ -1,5 +0,0 @@
1
- import Barcode from "./barcode";
2
-
3
- import BarcodeScanner from "./barcode-scanner";
4
- import LabelPrinter from "./label-printer";
5
- export default [Barcode, BarcodeScanner, LabelPrinter];