UNPKG

@techolution-ai/computer-vision

Version:

A JavaScript/TypeScript library for computer vision applications, providing tools for image processing, scanning, and MQTT-based messaging.

1 lines 4.16 kB
{"version":3,"sources":["../../../src/scanner/status.tsx"],"sourcesContent":["import React, { ReactNode, useMemo } from 'react'\nimport StatusItem, { IStatusItemProps } from './status-item'\n// @ts-ignore\nimport IdleGIF from '../assets/idle.gif'\n\nimport './styles/status.css'\nimport ScanComplete from './scan-complete'\n\ntype TStatusItem =\n | {\n message: string\n icon?: string | React.ReactNode\n render?: IStatusItemProps['render']\n slotProps?: IStatusItemProps['slotProps']\n }\n | {\n render: IStatusItemProps['render']\n message?: string\n icon?: string\n slotProps?: IStatusItemProps['slotProps']\n }\n\nexport type TStatusMap = {\n [key: string]: TStatusItem\n}\n\ninterface IStatusesProps extends React.HtmlHTMLAttributes<HTMLDivElement> {\n children: ReactNode\n status: string\n // onSetup: (defaultStatusList: TDefaultStatusList) => void\n statusMap: TStatusMap | null\n}\n\nexport const defaultStatusMap: TStatusMap = {\n idle: {\n message: 'Place an object in the screening zone',\n icon: IdleGIF,\n slotProps: {\n icon: {\n style: {\n width: '150px',\n height: '150px',\n },\n },\n },\n },\n motion: {\n message: 'Motion detected',\n },\n scanning: {\n message: 'Scanning for details',\n },\n not_recognized: {\n message:\n 'Product not recognized. Please hold the product closer to the camera',\n },\n product_placement: {\n message: 'Place the product with the label facing up in the scanning area',\n },\n center_scan: {\n message: 'Move product label inside scanning zone',\n },\n glare_scan: {\n message: 'Move product label to avoid glare',\n },\n scanned: {\n render: () => <ScanComplete />,\n },\n camera_loading: {\n message: 'Loading Camera ...',\n },\n}\n\nexport default function ScannerStatus({\n children,\n status,\n // onSetup,\n statusMap,\n ...restProps\n}: IStatusesProps) {\n // useEffect(() => {\n // onSetup(defaultStatusList)\n // }, [])\n\n const finalStatusMap = useMemo(() => {\n return statusMap ?? defaultStatusMap\n }, [statusMap])\n\n const findStatusByKeyword = () => {\n if (!status) return null\n\n const statusDetails = finalStatusMap[status]\n\n if (!statusDetails) return <StatusItem message={status} />\n return (\n <StatusItem\n message={statusDetails.message}\n icon={statusDetails.icon}\n render={statusDetails.render}\n slotProps={'slotProps' in statusDetails ? statusDetails.slotProps : {}}\n />\n )\n }\n\n return (\n <div\n {...restProps}\n style={{\n position: 'relative',\n ...restProps.style,\n }}\n >\n {children}\n {findStatusByKeyword()}\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA0C;AAC1C,yBAA6C;AAE7C,kBAAoB;AAEpB,oBAAO;AACP,2BAAyB;AA4DP;AAjCX,IAAM,mBAA+B;AAAA,EAC1C,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,MAAM,YAAAA;AAAA,IACN,WAAW;AAAA,MACT,MAAM;AAAA,QACJ,OAAO;AAAA,UACL,OAAO;AAAA,UACP,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA,UAAU;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,gBAAgB;AAAA,IACd,SACE;AAAA,EACJ;AAAA,EACA,mBAAmB;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,aAAa;AAAA,IACX,SAAS;AAAA,EACX;AAAA,EACA,YAAY;AAAA,IACV,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,QAAQ,MAAM,4CAAC,qBAAAC,SAAA,EAAa;AAAA,EAC9B;AAAA,EACA,gBAAgB;AAAA,IACd,SAAS;AAAA,EACX;AACF;AAEe,SAAR,cAA+B;AAAA,EACpC;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA,GAAG;AACL,GAAmB;AAKjB,QAAM,qBAAiB,sBAAQ,MAAM;AACnC,WAAO,aAAa;AAAA,EACtB,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,sBAAsB,MAAM;AAChC,QAAI,CAAC,OAAQ,QAAO;AAEpB,UAAM,gBAAgB,eAAe,MAAM;AAE3C,QAAI,CAAC,cAAe,QAAO,4CAAC,mBAAAC,SAAA,EAAW,SAAS,QAAQ;AACxD,WACE;AAAA,MAAC,mBAAAA;AAAA,MAAA;AAAA,QACC,SAAS,cAAc;AAAA,QACvB,MAAM,cAAc;AAAA,QACpB,QAAQ,cAAc;AAAA,QACtB,WAAW,eAAe,gBAAgB,cAAc,YAAY,CAAC;AAAA;AAAA,IACvE;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,OAAO;AAAA,QACL,UAAU;AAAA,QACV,GAAG,UAAU;AAAA,MACf;AAAA,MAEC;AAAA;AAAA,QACA,oBAAoB;AAAA;AAAA;AAAA,EACvB;AAEJ;","names":["IdleGIF","ScanComplete","StatusItem"]}