# choco-barcode-scanner

> Barcode scanner for web

Latest version **1.6.0** (published 2023-09-14) · MIT license · 0 weekly downloads

## Install

```sh
npm install choco-barcode-scanner
pnpm add choco-barcode-scanner
yarn add choco-barcode-scanner
bun add choco-barcode-scanner
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.6.0 |
| Published | 2023-09-14 |
| First published | 2023-08-13 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 2 |
| Unpacked size | 61.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Asatulla |
| Maintainers | bixxter |
| Keywords | typescript, barcode, detector, scanner, barcode scanner, barcode detector, штрихкод, штрих код, сканер, детектор |

## Links

- npm: https://www.npmjs.com/package/choco-barcode-scanner
- Repository: https://github.com/chocofamilyme/choco-barcode
- Homepage: https://github.com/chocofamilyme/choco-barcode#readme
- Issues: https://github.com/chocofamilyme/choco-barcode/issues
- npm.io page: https://npm.io/package/choco-barcode-scanner

## Dependencies (2)

- [@undecaf/zbar-wasm](https://npm.io/package/@undecaf/zbar-wasm.md) ^0.9.16
- [@undecaf/barcode-detector-polyfill](https://npm.io/package/@undecaf/barcode-detector-polyfill.md) ^0.9.20

## Alternatives

- [@openai/codex-sdk](https://npm.io/package/@openai/codex-sdk.md) — 731.4K weekly downloads
- [babel-plugin-transform-react-jsx](https://npm.io/package/babel-plugin-transform-react-jsx.md) — 565.0K weekly downloads
- [babel-helper-remove-or-void](https://npm.io/package/babel-helper-remove-or-void.md) — 508.5K weekly downloads
- [@pnpm/store-controller-types](https://npm.io/package/@pnpm/store-controller-types.md) — 186.9K weekly downloads
- [react-native-signature-canvas](https://npm.io/package/react-native-signature-canvas.md) — 155.6K weekly downloads

## Recent versions

- 1.6.0 (latest) — 2023-09-14
- 1.5.4 — 2023-09-01
- 1.5.3 — 2023-08-31
- 1.5.2 — 2023-08-25
- 1.5.1 — 2023-08-24
- 1.5.0 — 2023-08-24
- 1.4.0 — 2023-08-23
- 1.3.0 — 2023-08-23
- 1.2.0 — 2023-08-21
- 1.1.0 — 2023-08-21
- 1.0.0 — 2023-08-13

## README

# Choco Barcode Scanner 🔎

### Установка

```
npm i choco-barcode-scanner
```

или

```
yarn add choco-barcode-scanner
```

### Поддерживаемые форматы

```typescript
enum BarcodeFormats {
    codabar = 'codabar',
    code_39 = 'code_39',
    code_93 = 'code_93',
    code_128 = 'code_128',
    databar = 'databar',
    databar_exp = 'databar_exp',
    ean_2 = 'ean_2',
    ean_5 = 'ean_5',
    ean_8 = 'ean_8',
    ean_13 = 'ean_13',
    ean_13_2 = 'ean_13+2',
    ean_13_5 = 'ean_13+5',
    isbn_10 = 'isbn_10',
    isbn_13 = 'isbn_13',
    isbn_13_2 = 'isbn_13+2',
    isbn_13_5 = 'isbn_13+5',
    itf = 'itf',
    qr_code = 'qr_code',
    sq_code = 'sq_code',
    upc_a = 'upc_a',
    upc_e = 'upc_e'
}
```

### Метод init

Инициализирует сканер штрихкода с заданными параметрами.

-   **payload.container**: Контейнер, в котором будет отображаться видео с камеры.
-   **payload.formats**: Массив форматов штрихкодов для сканирования.
-   **payload.settings**: Настройки камеры.
-   **payload.onSuccess**: Колбэк, который вызывается при успешном сканировании.

Типизация:

```typescript
interface BarcodeInitPayload {
    container?: string | HTMLElement;
    formats?: BarcodeFormats[];
    settings?: MediaTrackSettings;
    onSuccess: (barcodes: string[]) => void;
}
```

Пример использования vanilla js:

```javascript
import { BarcodeScanner } from 'choco-barcode-scanner';

BarcodeScanner.init({
    container: 'barcode-container',
    formats: ['ean_13', 'ean_8'],
    settings: {
        width: 640,
        height: 480,
    },
    onSuccess: barcodes => {}
}).catch(error => {
    if (error.message === 'NOT_ALLOWED') {
        // Пользователь не разрешил доступ к камере
    }

    if(error.message === 'NO_CONTAINER''){
        // Указан неверный контейнер
    }
});
```

### Метод destroy

Уничтожает сканер штрихкода.

```javascript
BarcodeScanner.destroy();
```

### Пример использования с Vue:

```javascript
<template>
    <div id="barcode-container"></div>
</template>

<script>
import { onMounted, onUnmounted } from 'vue';
import { BarcodeScanner } from 'choco-barcode-scanner';

export default {
    setup() {
        const onSuccess = barcodes => {
            console.log(barcodes);
        };

        onMounted(() => {
            BarcodeScanner.init({
                container: 'barcode-container',
                formats: ['ean_13', 'ean_8'],
                onSuccess
            }).catch(error => {
                if (error === 'NOT_ALLOWED') {
                    // Пользователь не разрешил доступ к камере
                }
            });
        });

        onUnmounted(() => {
            BarcodeScanner.destroy();
        });
    }
};
</script>
```

---
_Source: https://npm.io/package/choco-barcode-scanner · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
