@solid-bricks/barcode
Version:
A solid-js component that renders barcodes
60 lines (49 loc) • 1.59 kB
JavaScript
import { createComponent, Dynamic, mergeProps as mergeProps$1 } from 'solid-js/web';
import JsBarcode from 'jsbarcode';
import { mergeProps, createEffect, on, createMemo } from 'solid-js';
const defaultProps = {
as: 'svg',
onError: console.error
};
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) {
var _local$onError;
(_local$onError = local.onError) === null || _local$onError === void 0 ? void 0 : _local$onError.call(local, 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 createComponent(Dynamic, mergeProps$1(() => local.elemProps, {
"class": undefined,
get component() {
return local.as;
},
ref(r$) {
const _ref$ = elemRef;
typeof _ref$ === "function" ? _ref$(r$) : elemRef = r$;
},
get classList() {
return memoClassList();
}
}));
}
export { Barcode };
//# sourceMappingURL=index.js.map