Skip to content

eedrxs/nexgo-webview-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nexgo-sdk

TypeScript SDK for Nexgo device APIs including Printer, Scanner, Pinpad, and Beeper.

Installation

npm install nexgo-sdk

Features

  • 🎯 Framework-agnostic core - Use with any JavaScript framework or vanilla JS
  • ⚛️ React hooks - Optional React-specific hooks for easy integration
  • 📦 TypeScript support - Full type definitions included
  • 🌲 Tree-shakeable - Import only what you need
  • 🔌 Modular - Use individual devices or the complete SDK

Usage

Vanilla JavaScript / TypeScript

import { NexgoSDK } from 'nexgo-sdk';

// Initialize the SDK
const nexgo = new NexgoSDK();

// Check device availability
console.log(nexgo.getAvailability());
// { printer: true, scanner: true, pinpad: true, beeper: true }

// Use the printer
nexgo.printer.initPrinter();
nexgo.printer.appendPrnStr('Hello World', 24, AlignEnum.CENTER);
nexgo.printer.startPrint();

// Use the scanner
nexgo.scanner.onScan((result) => {
  console.log('Scanned:', result.data);
});
nexgo.scanner.startScan();

// Use the beeper
nexgo.beeper.success(); // Quick success beep

Use Individual Devices

import { NexgoPrinter, NexgoScanner } from 'nexgo-sdk';

const printer = new NexgoPrinter();
const scanner = new NexgoScanner();

if (printer.isAvailable()) {
  printer.initPrinter();
  // ... use printer
}

React Hooks

import { useNexgo } from 'nexgo-sdk/react';
import { AlignEnum } from 'nexgo-sdk';

function MyComponent() {
  const { printer, scanner, beeper, isReady, availability } = useNexgo();

  const handlePrint = () => {
    if (!printer.isReady) return;
  
    printer.printer.initPrinter();
    printer.printer.appendPrnStr('Receipt', 32, AlignEnum.CENTER, true);
    printer.printer.appendPrnStr('Item 1', 24, AlignEnum.LEFT);
    printer.printer.feedPaper(2);
    printer.printer.startPrint();
  
    beeper.success(); // Success beep
  };

  const handleScan = () => {
    if (!scanner.isReady) return;
    scanner.startScan({ timeout: 30000 });
  };

  // Access scan results
  useEffect(() => {
    if (scanner.lastScan?.success) {
      console.log('Scanned:', scanner.lastScan.data);
      beeper.notification();
    }
  }, [scanner.lastScan]);

  return (
    <div>
      <button onClick={handlePrint} disabled={!printer.isReady}>
        Print
      </button>
      <button onClick={handleScan} disabled={!scanner.isReady}>
        Scan
      </button>
    </div>
  );
}

Individual React Hooks

import { usePrinter, useScanner, useBeeper } from 'nexgo-sdk/react';

function PrintComponent() {
  const { printer, isReady, error } = usePrinter();
  
  if (error) return <div>Error: {error}</div>;
  if (!isReady) return <div>Printer not available</div>;
  
  // Use printer...
}

API Reference

Core Classes

NexgoSDK

Main SDK class providing access to all devices.

const nexgo = new NexgoSDK();

// Properties
nexgo.printer: NexgoPrinter
nexgo.scanner: NexgoScanner
nexgo.pinpad: NexgoPinpad
nexgo.beeper: NexgoBeeper

// Methods
nexgo.isFullyAvailable(): boolean
nexgo.getAvailability(): { printer: boolean, scanner: boolean, ... }
nexgo.initAll(): { printer: SdkResult, scanner: SdkResult, ... }

NexgoPrinter

const printer = new NexgoPrinter();

// Initialization
printer.initPrinter(): SdkResult
printer.getStatus(): SdkResult

// Printing
printer.appendPrnStr(text, fontSize, align, bold?): SdkResult
printer.appendImage(bitmap, align): SdkResult
printer.appendBarcode(content, width, height, textPos, format, align, showHri?): SdkResult
printer.appendQRcode(content, size, align): SdkResult

// Configuration
printer.setLetterSpacing(spacing): void
printer.setGray(level): void

// Control
printer.feedPaper(lines): void
printer.cutPaper(): void
printer.startPrint(): void
printer.printTest(): void

NexgoScanner

const scanner = new NexgoScanner();

scanner.initScanner(): SdkResult
scanner.startScan(config?): void
scanner.stopScan(): void
scanner.getLastScanResult(): ScanResult | null
scanner.onScan(callback: (result: ScanResult) => void): void
scanner.offScan(): void

NexgoPinpad

const pinpad = new NexgoPinpad();

pinpad.initPinpad(): SdkResult
pinpad.startPinEntry(config?): void
pinpad.cancelPinEntry(): void
pinpad.getEncryptedPin(): PinResult | null
pinpad.onPinEntry(callback: (result: PinResult) => void): void
pinpad.offPinEntry(): void

NexgoBeeper

const beeper = new NexgoBeeper();

beeper.initBeeper(): SdkResult
beeper.beep(duration?): void
beeper.beepTone(tone, duration?): void

// Convenience methods
beeper.success(): void
beeper.error(): void
beeper.warning(): void
beeper.notification(): void
beeper.stopBeep(): void

React Hooks

useNexgo()

const {
  isReady,
  availability,
  printer,
  scanner,
  pinpad,
  beeper
} = useNexgo();

usePrinter()

const { printer, isReady, error } = usePrinter();

useScanner()

const {
  scanner,
  isReady,
  error,
  lastScan,
  startScan,
  stopScan
} = useScanner();

usePinpad()

const {
  pinpad,
  isReady,
  error,
  lastPin,
  startPinEntry,
  cancelPinEntry
} = usePinpad();

useBeeper()

const {
  beeper,
  isReady,
  error,
  beep,
  beepTone,
  success,
  error: errorBeep,
  warning,
  notification,
  stopBeep
} = useBeeper();

Enums

import {
  SdkResult,
  AlignEnum,
  BarcodeFormatEnum,
  GrayLevelEnum,
  ScanDecodeType,
  BeeperTone,
  BeeperDuration,
  PinEntryMode
} from 'nexgo-sdk';

TypeScript

This package includes full TypeScript definitions. All types are exported:

import type {
  FontEntity,
  LineOptionEntity,
  ScanResult,
  ScannerConfig,
  PinResult,
  PinpadConfig
} from 'nexgo-sdk';

Requirements

  • This SDK requires the Nexgo native APIs to be available in the runtime environment (typically an Android WebView with Nexgo device support)
  • React hooks require React 16.8.0 or higher

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors