// labelGen.js — generates a label preview (barcode rendered via JsBarcode to canvas) // and builds ZPL for Zebra printing. export function formatPhone(raw) { const digits = String(raw ?? '').replace(/\D/g, ''); if (digits.length === 10) { return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`; } if (digits.length === 11 && digits[0] === '1') { return `(${digits.slice(1, 4)}) ${digits.slice(4, 7)}-${digits.slice(7)}`; } return raw ?? ''; } // Returns { html, svgIdForId, svgIdForSn } — caller renders serial barcode via renderBarcode() export function buildLabelHTML(asset, prefix = 'lbl') { const assetName = asset.name ?? 'Unknown Asset'; const serial = asset.asset_serial ?? asset.serial ?? asset.serial_number ?? ''; const customerName = asset.customer?.business_name ?? asset.customer?.business_then_name ?? asset.customer?.name ?? ''; const customerPhone = formatPhone(asset.customer?.phone ?? asset.customer?.mobile ?? ''); const customLine = asset.custom_line ?? ''; const logoSrc = '/assets/logo-swirl.png'; const svgIdForSn = `${prefix}-sn`; const html = `