UNPKG

@solid-bricks/barcode

Version:
35 lines (34 loc) 1.29 kB
import JsBarcode from 'jsbarcode'; import { createMemo, mergeProps, createEffect, on } from 'solid-js'; import { Dynamic } from 'solid-js/web'; const defaultProps = { as: 'svg', onError: console.error, }; export function Barcode(props) { const local = mergeProps(defaultProps, props); let elemRef; createEffect(on(() => [local.value, local.options, local.as], () => { try { JsBarcode(elemRef, local.value, Object.assign({}, local.options)); } catch (err) { local.onError?.(err); } })); const memoClassList = createMemo(() => { let elemPropsClassList, elemPropsClass, localClass; if (local.elemProps) { elemPropsClassList = local.elemProps.classList; elemPropsClass = local.elemProps.class != null ? { [local.elemProps.class]: !!local.elemProps.class } : null; } if (local.class != null) { localClass = { [local.class + '']: !!local.class }; } return Object.assign({}, elemPropsClassList, elemPropsClass, local.classList, localClass); }); return (<Dynamic {...local.elemProps} class={undefined} component={local.as} ref={elemRef} classList={memoClassList()}/>); }