@ordereat-uy/printer-bridge-react 0.0.5

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.
@@ -0,0 +1,16 @@
1
+ import { type ReactNode } from 'react';
2
+ import { PrintBridgeClient, type BridgeClientOptions, type BridgeConnectionStatus, type WsEvent } from '@ordereat-uy/printer-bridge-client';
3
+ interface BridgeContextValue {
4
+ client: PrintBridgeClient;
5
+ status: BridgeConnectionStatus;
6
+ subscribe: (handler: (event: WsEvent) => void) => () => void;
7
+ }
8
+ export interface BridgeProviderProps {
9
+ children: ReactNode;
10
+ url?: string;
11
+ options?: BridgeClientOptions;
12
+ }
13
+ export declare function BridgeProvider({ children, url, options }: BridgeProviderProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function useBridgeContext(): BridgeContextValue;
15
+ export {};
16
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EACL,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,OAAO,EACb,MAAM,oCAAoC,CAAC;AAE5C,UAAU,kBAAkB;IAC1B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;CAC9D;AAID,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,mBAAmB,2CAkD7E;AAED,wBAAgB,gBAAgB,IAAI,kBAAkB,CAMrD"}
@@ -0,0 +1,51 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useEffect, useRef, useState, useMemo, } from 'react';
3
+ import { PrintBridgeClient, } from '@ordereat-uy/printer-bridge-client';
4
+ const BridgeContext = createContext(null);
5
+ export function BridgeProvider({ children, url, options }) {
6
+ const clientRef = useRef(null);
7
+ const [status, setStatus] = useState('disconnected');
8
+ // Create client once
9
+ if (!clientRef.current) {
10
+ clientRef.current = new PrintBridgeClient({
11
+ url: url ?? options?.url,
12
+ ...options,
13
+ });
14
+ }
15
+ const client = clientRef.current;
16
+ useEffect(() => {
17
+ // Track connection status changes by polling client.status
18
+ // (since the client doesn't emit status events natively, we use WS events)
19
+ const unsubscribe = client.on((event) => {
20
+ if (event.type === 'bridge:status' && event.status === 'ready') {
21
+ setStatus('connected');
22
+ }
23
+ });
24
+ // Connect to bridge
25
+ client.connect();
26
+ setStatus('connecting');
27
+ // Poll status as backup since WebSocket events drive the primary updates
28
+ const statusInterval = setInterval(() => {
29
+ setStatus(client.status);
30
+ }, 1000);
31
+ return () => {
32
+ clearInterval(statusInterval);
33
+ unsubscribe();
34
+ client.disconnect();
35
+ };
36
+ }, [client]);
37
+ const contextValue = useMemo(() => ({
38
+ client,
39
+ status,
40
+ subscribe: (handler) => client.on(handler),
41
+ }), [client, status]);
42
+ return (_jsx(BridgeContext.Provider, { value: contextValue, children: children }));
43
+ }
44
+ export function useBridgeContext() {
45
+ const ctx = useContext(BridgeContext);
46
+ if (!ctx) {
47
+ throw new Error('useBridge/usePrinters/usePrint must be used within <BridgeProvider>');
48
+ }
49
+ return ctx;
50
+ }
51
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,UAAU,EACV,SAAS,EACT,MAAM,EACN,QAAQ,EACR,OAAO,GAER,MAAM,OAAO,CAAC;AACf,OAAO,EACL,iBAAiB,GAIlB,MAAM,oCAAoC,CAAC;AAQ5C,MAAM,aAAa,GAAG,aAAa,CAA4B,IAAI,CAAC,CAAC;AAQrE,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAuB;IAC5E,MAAM,SAAS,GAAG,MAAM,CAA2B,IAAI,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAyB,cAAc,CAAC,CAAC;IAE7E,qBAAqB;IACrB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvB,SAAS,CAAC,OAAO,GAAG,IAAI,iBAAiB,CAAC;YACxC,GAAG,EAAE,GAAG,IAAI,OAAO,EAAE,GAAG;YACxB,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;IAEjC,SAAS,CAAC,GAAG,EAAE;QACb,2DAA2D;QAC3D,2EAA2E;QAC3E,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,KAAc,EAAE,EAAE;YAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC/D,SAAS,CAAC,WAAW,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,SAAS,CAAC,YAAY,CAAC,CAAC;QAExB,yEAAyE;QACzE,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;YACtC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,cAAc,CAAC,CAAC;YAC9B,WAAW,EAAE,CAAC;YACd,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,YAAY,GAAG,OAAO,CAAqB,GAAG,EAAE,CAAC,CAAC;QACtD,MAAM;QACN,MAAM;QACN,SAAS,EAAE,CAAC,OAAiC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC;KACrE,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAEtB,OAAO,CACL,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YACxC,QAAQ,GACc,CAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { PrintBridgeClient, BridgeConnectionStatus } from '@ordereat-uy/printer-bridge-client';
2
+ export interface UseBridgeReturn {
3
+ status: BridgeConnectionStatus;
4
+ isReady: boolean;
5
+ client: PrintBridgeClient;
6
+ }
7
+ export declare function useBridge(): UseBridgeReturn;
8
+ //# sourceMappingURL=use-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-bridge.d.ts","sourceRoot":"","sources":["../../src/hooks/use-bridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEpG,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,wBAAgB,SAAS,IAAI,eAAe,CAQ3C"}
@@ -0,0 +1,10 @@
1
+ import { useBridgeContext } from '../context.js';
2
+ export function useBridge() {
3
+ const { client, status } = useBridgeContext();
4
+ return {
5
+ status,
6
+ isReady: status === 'connected',
7
+ client,
8
+ };
9
+ }
10
+ //# sourceMappingURL=use-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-bridge.js","sourceRoot":"","sources":["../../src/hooks/use-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AASjD,MAAM,UAAU,SAAS;IACvB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAE9C,OAAO;QACL,MAAM;QACN,OAAO,EAAE,MAAM,KAAK,WAAW;QAC/B,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { PrintJob, PrintResponse } from '@ordereat-uy/printer-bridge-client';
2
+ export interface UsePrintReturn {
3
+ print: (printerKey: string, data: Uint8Array | ArrayBuffer) => Promise<PrintResponse>;
4
+ lastJob: PrintJob | null;
5
+ jobs: PrintJob[];
6
+ isLoading: boolean;
7
+ error: string | null;
8
+ }
9
+ export declare function usePrint(): UsePrintReturn;
10
+ //# sourceMappingURL=use-print.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-print.d.ts","sourceRoot":"","sources":["../../src/hooks/use-print.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAW,MAAM,oCAAoC,CAAC;AAE3F,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,WAAW,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACtF,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wBAAgB,QAAQ,IAAI,cAAc,CAoFzC"}
@@ -0,0 +1,65 @@
1
+ import { useState, useEffect, useCallback } from 'react';
2
+ import { useBridgeContext } from '../context.js';
3
+ export function usePrint() {
4
+ const { client, subscribe } = useBridgeContext();
5
+ const [lastJob, setLastJob] = useState(null);
6
+ const [jobs, setJobs] = useState([]);
7
+ const [isLoading, setIsLoading] = useState(false);
8
+ const [error, setError] = useState(null);
9
+ // Listen for job events
10
+ useEffect(() => {
11
+ const unsubscribe = subscribe((event) => {
12
+ switch (event.type) {
13
+ case 'job:queued':
14
+ setJobs((prev) => [event.job, ...prev].slice(0, 20));
15
+ setLastJob(event.job);
16
+ break;
17
+ case 'job:started':
18
+ setJobs((prev) => prev.map((j) => j.id === event.jobId ? { ...j, status: 'printing' } : j));
19
+ setLastJob((prev) => prev?.id === event.jobId ? { ...prev, status: 'printing' } : prev);
20
+ break;
21
+ case 'job:completed':
22
+ setJobs((prev) => prev.map((j) => j.id === event.jobId
23
+ ? { ...j, status: 'completed', completedAt: new Date().toISOString() }
24
+ : j));
25
+ setLastJob((prev) => prev?.id === event.jobId
26
+ ? { ...prev, status: 'completed', completedAt: new Date().toISOString() }
27
+ : prev);
28
+ setIsLoading(false);
29
+ break;
30
+ case 'job:failed':
31
+ setJobs((prev) => prev.map((j) => j.id === event.jobId
32
+ ? { ...j, status: 'failed', error: event.error, completedAt: new Date().toISOString() }
33
+ : j));
34
+ setLastJob((prev) => prev?.id === event.jobId
35
+ ? { ...prev, status: 'failed', error: event.error, completedAt: new Date().toISOString() }
36
+ : prev);
37
+ setError(event.error);
38
+ setIsLoading(false);
39
+ break;
40
+ }
41
+ });
42
+ return unsubscribe;
43
+ }, [subscribe]);
44
+ const print = useCallback(async (printerKey, data) => {
45
+ setIsLoading(true);
46
+ setError(null);
47
+ try {
48
+ return await client.print(printerKey, data);
49
+ }
50
+ catch (err) {
51
+ const message = err instanceof Error ? err.message : String(err);
52
+ setError(message);
53
+ setIsLoading(false);
54
+ throw err;
55
+ }
56
+ }, [client]);
57
+ return {
58
+ print,
59
+ lastJob,
60
+ jobs,
61
+ isLoading,
62
+ error,
63
+ };
64
+ }
65
+ //# sourceMappingURL=use-print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-print.js","sourceRoot":"","sources":["../../src/hooks/use-print.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAWjD,MAAM,UAAU,QAAQ;IACtB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACjD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAkB,IAAI,CAAC,CAAC;IAC9D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAa,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,wBAAwB;IACxB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,KAAc,EAAE,EAAE;YAC/C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,YAAY;oBACf,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBACrD,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACR,KAAK,aAAa;oBAChB,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACb,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,UAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,CACjE,CACF,CAAC;oBACF,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,CAClB,IAAI,EAAE,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAClE,CAAC;oBACF,MAAM;gBACR,KAAK,eAAe;oBAClB,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACb,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK;wBAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,WAAoB,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;wBAC/E,CAAC,CAAC,CAAC,CACN,CACF,CAAC;oBACF,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,CAClB,IAAI,EAAE,EAAE,KAAK,KAAK,CAAC,KAAK;wBACtB,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;wBACzE,CAAC,CAAC,IAAI,CACT,CAAC;oBACF,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,MAAM;gBACR,KAAK,YAAY;oBACf,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACb,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK;wBAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,QAAiB,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;wBAChG,CAAC,CAAC,CAAC,CACN,CACF,CAAC;oBACF,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,CAClB,IAAI,EAAE,EAAE,KAAK,KAAK,CAAC,KAAK;wBACtB,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;wBAC1F,CAAC,CAAC,IAAI,CACT,CAAC;oBACF,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACtB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,MAAM;YACV,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,KAAK,GAAG,WAAW,CACvB,KAAK,EAAE,UAAkB,EAAE,IAA8B,EAAE,EAAE;QAC3D,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,OAAO;QACL,KAAK;QACL,OAAO;QACP,IAAI;QACJ,SAAS;QACT,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { AvailablePrinter, PrinterConfig } from '@ordereat-uy/printer-bridge-client';
2
+ export interface UsePrintersReturn {
3
+ available: AvailablePrinter[];
4
+ configured: PrinterConfig[];
5
+ isLoading: boolean;
6
+ error: string | null;
7
+ refresh: () => Promise<void>;
8
+ addPrinter: (config: {
9
+ id: string;
10
+ name: string;
11
+ address: string;
12
+ enabled?: boolean;
13
+ }) => Promise<PrinterConfig>;
14
+ updatePrinter: (id: string, updates: Partial<Omit<PrinterConfig, 'id'>>) => Promise<PrinterConfig>;
15
+ removePrinter: (id: string) => Promise<void>;
16
+ }
17
+ export declare function usePrinters(): UsePrintersReturn;
18
+ //# sourceMappingURL=use-printers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-printers.d.ts","sourceRoot":"","sources":["../../src/hooks/use-printers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAW,MAAM,oCAAoC,CAAC;AAEnG,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,UAAU,EAAE,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACjH,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACnG,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED,wBAAgB,WAAW,IAAI,iBAAiB,CAoF/C"}
@@ -0,0 +1,67 @@
1
+ import { useState, useEffect, useCallback } from 'react';
2
+ import { useBridgeContext } from '../context.js';
3
+ export function usePrinters() {
4
+ const { client, status, subscribe } = useBridgeContext();
5
+ const [available, setAvailable] = useState([]);
6
+ const [configured, setConfigured] = useState([]);
7
+ const [isLoading, setIsLoading] = useState(false);
8
+ const [error, setError] = useState(null);
9
+ const refresh = useCallback(async () => {
10
+ setIsLoading(true);
11
+ setError(null);
12
+ try {
13
+ const result = await client.getPrinters();
14
+ setAvailable(result.available);
15
+ setConfigured(result.configured);
16
+ }
17
+ catch (err) {
18
+ setError(err instanceof Error ? err.message : String(err));
19
+ }
20
+ finally {
21
+ setIsLoading(false);
22
+ }
23
+ }, [client]);
24
+ // Fetch on mount and when connection status changes to connected
25
+ useEffect(() => {
26
+ if (status === 'connected') {
27
+ void refresh();
28
+ }
29
+ }, [status, refresh]);
30
+ // Listen for printer status/missing events to update configured printers
31
+ useEffect(() => {
32
+ const unsubscribe = subscribe((event) => {
33
+ if (event.type === 'printer:status') {
34
+ setConfigured((prev) => prev.map((p) => p.id === event.printerId ? { ...p, status: event.status } : p));
35
+ }
36
+ else if (event.type === 'printer:missing') {
37
+ setConfigured((prev) => prev.map((p) => p.id === event.printerId ? { ...p, status: 'missing' } : p));
38
+ }
39
+ });
40
+ return unsubscribe;
41
+ }, [subscribe]);
42
+ const addPrinter = useCallback(async (config) => {
43
+ const printer = await client.addPrinter(config);
44
+ await refresh();
45
+ return printer;
46
+ }, [client, refresh]);
47
+ const updatePrinter = useCallback(async (id, updates) => {
48
+ const printer = await client.updatePrinter(id, updates);
49
+ await refresh();
50
+ return printer;
51
+ }, [client, refresh]);
52
+ const removePrinter = useCallback(async (id) => {
53
+ await client.removePrinter(id);
54
+ await refresh();
55
+ }, [client, refresh]);
56
+ return {
57
+ available,
58
+ configured,
59
+ isLoading,
60
+ error,
61
+ refresh,
62
+ addPrinter,
63
+ updatePrinter,
64
+ removePrinter,
65
+ };
66
+ }
67
+ //# sourceMappingURL=use-printers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-printers.js","sourceRoot":"","sources":["../../src/hooks/use-printers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { BridgeProvider, type BridgeProviderProps } from './context.js';
2
+ export { useBridge, type UseBridgeReturn } from './hooks/use-bridge.js';
3
+ export { usePrinters, type UsePrintersReturn } from './hooks/use-printers.js';
4
+ export { usePrint, type UsePrintReturn } from './hooks/use-print.js';
5
+ export type { PrintBridgeClient, AvailablePrinter, BridgeClientOptions, BridgeConnectionStatus, BridgeStatusResponse, PrinterConfig, PrinterStatus, PrintJob, PrintResponse, WsEvent, } from '@ordereat-uy/printer-bridge-client';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGrE,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,aAAa,EACb,OAAO,GACR,MAAM,oCAAoC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export { BridgeProvider } from './context.js';
2
+ export { useBridge } from './hooks/use-bridge.js';
3
+ export { usePrinters } from './hooks/use-printers.js';
4
+ export { usePrint } from './hooks/use-print.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA4B,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,SAAS,EAAwB,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,WAAW,EAA0B,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAuB,MAAM,sBAAsB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@ordereat-uy/printer-bridge-react",
3
+ "version": "0.0.5",
4
+ "license": "MIT",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/juanmanuelrot/oe-printing-bridge"
8
+ },
9
+ "type": "module",
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "main": "dist/index.js",
14
+ "types": "dist/index.d.ts",
15
+ "exports": {
16
+ ".": {
17
+ "import": "./dist/index.js",
18
+ "types": "./dist/index.d.ts"
19
+ }
20
+ },
21
+ "scripts": {
22
+ "dev": "tsc --watch",
23
+ "build": "tsc"
24
+ },
25
+ "dependencies": {
26
+ "@ordereat-uy/printer-bridge-client": "0.0.5"
27
+ },
28
+ "peerDependencies": {
29
+ "react": ">=17"
30
+ },
31
+ "devDependencies": {
32
+ "@types/react": "^19.0.0",
33
+ "react": "^19.0.0",
34
+ "typescript": "^5.7.3"
35
+ }
36
+ }