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()}/>);
}
