{"version":3,"file":"index.esm.mjs","sources":["../src/ErrorBoundary.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\n\nclass ErrorBoundary extends React.Component<\n  { children: any },\n  { hasError: boolean }\n> {\n  constructor(props) {\n    super(props);\n    this.state = { hasError: false };\n  }\n\n  static getDerivedStateFromError(error) {\n    return { hasError: true };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.log(error, errorInfo);\n  }\n\n  render() {\n    if (this.state.hasError) {\n      // You can render any custom fallback UI\n      return <h1>Something went wrong.</h1>;\n    }\n\n    return this.props.children;\n  }\n}\n\nexport default ErrorBoundary;\n","import React, { useState, useEffect } from 'react';\nimport { View, StyleSheet, Text } from 'react-native';\nimport barcodes from 'jsbarcode/src/barcodes';\nimport Svg, { Path } from 'react-native-svg';\n\nimport ErrorBoundary from './ErrorBoundary';\n\ntype props = {\n  value: string;\n  format: string;\n  width: number;\n  height: number;\n  text?: string;\n  textColor: string;\n  lineColor: string;\n  background: string;\n  onError?: (error: Error) => any;\n};\n\nconst Barcode = ({\n  value,\n  format = 'CODE128',\n  width = 2,\n  height = 100,\n  text,\n  textColor = '#000000',\n  lineColor = '#000000',\n  background = '#ffffff',\n  onError,\n}: props) => {\n  const [bars, setBars] = useState([]);\n  const [barCodeWidth, setBarCodeWidth] = useState(0);\n\n  const props = {\n    value,\n    format,\n    width,\n    height,\n    text,\n    textColor,\n    lineColor,\n    background,\n    onError,\n  };\n\n  useEffect(() => {\n    update();\n  }, [value]);\n\n  const update = () => {\n    const encoder = barcodes[format];\n    const encoded = encode(value, encoder, props);\n\n    if (encoded) {\n      setBars(drawSvgBarCode(encoded, props));\n      setBarCodeWidth(encoded.data.length * width);\n    }\n  };\n\n  const drawSvgBarCode = (encoding, options: props) => {\n    const rects = [];\n    // binary data of barcode\n    const binary = encoding.data;\n\n    let barWidth = 0;\n    let x = 0;\n    let yFrom = 0;\n\n    for (let b = 0; b < binary.length; b++) {\n      x = b * options.width;\n      if (binary[b] === '1') {\n        barWidth++;\n      } else if (barWidth > 0) {\n        rects[rects.length] = drawRect(\n          x - options.width * barWidth,\n          yFrom,\n          options.width * barWidth,\n          options.height,\n        );\n        barWidth = 0;\n      }\n    }\n\n    // Last draw is needed since the barcode ends with 1\n    if (barWidth > 0) {\n      rects[rects.length] = drawRect(\n        x - options.width * (barWidth - 1),\n        yFrom,\n        options.width * barWidth,\n        options.height,\n      );\n    }\n\n    return rects;\n  };\n\n  const drawRect = (x, y, width, height) => {\n    return `M${x},${y}h${width}v${height}h-${width}z`;\n  };\n\n  // encode() handles the Encoder call and builds the binary string to be rendered\n  const encode = (text: string, Encoder: any, options: props) => {\n    // If text is not a non-empty string, throw error.\n    if (typeof text !== 'string' || text.length === 0) {\n      if (options.onError) {\n        options.onError(new Error('Barcode value must be a non-empty string'));\n        return;\n      }\n      throw new Error('Barcode value must be a non-empty string');\n    }\n\n    let encoder;\n\n    try {\n      encoder = new Encoder(text, options);\n    } catch (error) {\n      // If the encoder could not be instantiated, throw error.\n      if (options.onError) {\n        options.onError(new Error('Invalid barcode format.'));\n        return;\n      }\n      throw new Error('Invalid barcode format.');\n    }\n\n    // If the input is not valid for the encoder, throw error.\n    if (!encoder.valid()) {\n      if (options.onError) {\n        options.onError(new Error('Invalid barcode for selected format.'));\n        return;\n      }\n      throw new Error('Invalid barcode for selected format.');\n    }\n\n    // Make a request for the binary data (and other infromation) that should be rendered\n    // encoded stucture is {\n    //  text: 'xxxxx',\n    //  data: '110100100001....'\n    // }\n    const encoded = encoder.encode();\n    return encoded;\n  };\n\n  const backgroundStyle = {\n    backgroundColor: background,\n  };\n  return (\n    <ErrorBoundary>\n      <View style={[styles.svgContainer, backgroundStyle]}>\n        <Svg height={height} width={barCodeWidth} fill={lineColor}>\n          <Path d={bars.join(' ')} />\n        </Svg>\n        {typeof text !== 'undefined' && (\n          <Text\n            style={{\n              color: textColor,\n              width: barCodeWidth,\n              textAlign: 'center',\n            }}\n          >\n            {text}\n          </Text>\n        )}\n      </View>\n    </ErrorBoundary>\n  );\n};\n\nconst styles = StyleSheet.create({\n  svgContainer: {\n    alignItems: 'center',\n    padding: 10,\n  },\n});\n\nexport default Barcode;\n"],"names":["ErrorBoundary","props","state","hasError","getDerivedStateFromError","error","componentDidCatch","errorInfo","console","log","render","children","React","Component","Barcode","value","format","width","height","text","textColor","lineColor","background","onError","useState","bars","setBars","barCodeWidth","setBarCodeWidth","useEffect","update","encoder","barcodes","encoded","encode","drawSvgBarCode","data","length","encoding","options","rects","binary","barWidth","x","yFrom","b","drawRect","y","Encoder","Error","valid","backgroundStyle","backgroundColor","styles","svgContainer","join","color","textAlign","StyleSheet","create","alignItems","padding"],"mappings":";;;;;;;;;;;;;;;;;;;;IAEMA;;;AAIJ,EAAA,SAAA,aAAA,CAAYC,KAAZ,EAAiB;AAAA,IAAA,IAAA,KAAA,CAAA;;AACf,IAAA,KAAA,GAAA,gBAAA,CAAA,IAAA,CAAA,IAAA,EAAMA,KAAN,CAAA,IAAA,IAAA,CAAA;AACA,IAAA,KAAA,CAAKC,KAAL,GAAa;AAAEC,MAAAA,QAAQ,EAAE,KAAA;KAAzB,CAAA;AAFe,IAAA,OAAA,KAAA,CAAA;AAGhB,GAAA;;gBAEMC,2BAAP,SAAgCC,wBAAAA,CAAAA,KAAhC,EAAqC;IACnC,OAAO;AAAEF,MAAAA,QAAQ,EAAE,IAAA;KAAnB,CAAA;;;;;AAGFG,EAAAA,MAAAA,CAAAA,oBAAA,SAAA,iBAAA,CAAkBD,KAAlB,EAA8BE,SAA9B,EAA4C;AAC1CC,IAAAA,OAAO,CAACC,GAAR,CAAYJ,KAAZ,EAAmBE,SAAnB,CAAA,CAAA;;;AAGFG,EAAAA,MAAAA,CAAAA,SAAA,SAAM,MAAA,GAAA;AACJ,IAAA,IAAI,IAAKR,CAAAA,KAAL,CAAWC,QAAf,EAAyB;AACvB;AACA,MAAA,oBAAO,KAAP,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,EAAA,uBAAA,CAAA,CAAA;AACD,KAAA;;IAED,OAAO,IAAA,CAAKF,KAAL,CAAWU,QAAlB,CAAA;;;;AAvBwBC,CAAAA,CAAAA,KAAK,CAACC;;ACiBlC,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAUJ,IAAA,EAAA;EAAA,IATVC,KASU,QATVA,KASU;AAAA,MAAA,WAAA,GAAA,IAAA,CARVC,MAQU;MARVA,MAQU,4BARD,SAQC,GAAA,WAAA;AAAA,MAAA,UAAA,GAAA,IAAA,CAPVC,KAOU;MAPVA,KAOU,2BAPF,CAOE,GAAA,UAAA;AAAA,MAAA,WAAA,GAAA,IAAA,CANVC,MAMU;MANVA,MAMU,4BAND,GAMC,GAAA,WAAA;MALVC,IAKU,QALVA,IAKU;AAAA,MAAA,cAAA,GAAA,IAAA,CAJVC,SAIU;MAJVA,SAIU,+BAJE,SAIF,GAAA,cAAA;AAAA,MAAA,cAAA,GAAA,IAAA,CAHVC,SAGU;MAHVA,SAGU,+BAHE,SAGF,GAAA,cAAA;AAAA,MAAA,eAAA,GAAA,IAAA,CAFVC,UAEU;MAFVA,UAEU,gCAFG,SAEH,GAAA,eAAA;MADVC,OACU,QADVA,OACU,CAAA;;EACV,IAAwBC,SAAAA,GAAAA,QAAQ,CAAC,EAAD,CAAhC;AAAA,MAAOC,IAAP,GAAA,SAAA,CAAA,CAAA,CAAA;AAAA,MAAaC,OAAb,GAAA,SAAA,CAAA,CAAA,CAAA,CAAA;;EACA,IAAwCF,UAAAA,GAAAA,QAAQ,CAAC,CAAD,CAAhD;AAAA,MAAOG,YAAP,GAAA,UAAA,CAAA,CAAA,CAAA;AAAA,MAAqBC,eAArB,GAAA,UAAA,CAAA,CAAA,CAAA,CAAA;;AAEA,EAAA,IAAM3B,KAAK,GAAG;AACZc,IAAAA,KAAK,EAALA,KADY;AAEZC,IAAAA,MAAM,EAANA,MAFY;AAGZC,IAAAA,KAAK,EAALA,KAHY;AAIZC,IAAAA,MAAM,EAANA,MAJY;AAKZC,IAAAA,IAAI,EAAJA,IALY;AAMZC,IAAAA,SAAS,EAATA,SANY;AAOZC,IAAAA,SAAS,EAATA,SAPY;AAQZC,IAAAA,UAAU,EAAVA,UARY;AASZC,IAAAA,OAAO,EAAPA,OAAAA;GATF,CAAA;AAYAM,EAAAA,SAAS,CAAC,YAAK;IACbC,MAAM,EAAA,CAAA;AACP,GAFQ,EAEN,CAACf,KAAD,CAFM,CAAT,CAAA;;AAIA,EAAA,IAAMe,MAAM,GAAG,SAATA,MAAS,GAAK;AAClB,IAAA,IAAMC,OAAO,GAAGC,QAAQ,CAAChB,MAAD,CAAxB,CAAA;IACA,IAAMiB,OAAO,GAAGC,MAAM,CAACnB,KAAD,EAAQgB,OAAR,EAAiB9B,KAAjB,CAAtB,CAAA;;AAEA,IAAA,IAAIgC,OAAJ,EAAa;AACXP,MAAAA,OAAO,CAACS,cAAc,CAACF,OAAD,EAAUhC,KAAV,CAAf,CAAP,CAAA;MACA2B,eAAe,CAACK,OAAO,CAACG,IAAR,CAAaC,MAAb,GAAsBpB,KAAvB,CAAf,CAAA;AACD,KAAA;GAPH,CAAA;;EAUA,IAAMkB,cAAc,GAAG,SAAjBA,cAAiB,CAACG,QAAD,EAAWC,OAAX,EAA6B;AAClD,IAAA,IAAMC,KAAK,GAAG,EAAd,CADkD;;AAGlD,IAAA,IAAMC,MAAM,GAAGH,QAAQ,CAACF,IAAxB,CAAA;IAEA,IAAIM,QAAQ,GAAG,CAAf,CAAA;IACA,IAAIC,CAAC,GAAG,CAAR,CAAA;IACA,IAAIC,KAAK,GAAG,CAAZ,CAAA;;AAEA,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,MAAM,CAACJ,MAA3B,EAAmCQ,CAAC,EAApC,EAAwC;AACtCF,MAAAA,CAAC,GAAGE,CAAC,GAAGN,OAAO,CAACtB,KAAhB,CAAA;;AACA,MAAA,IAAIwB,MAAM,CAACI,CAAD,CAAN,KAAc,GAAlB,EAAuB;QACrBH,QAAQ,EAAA,CAAA;AACT,OAFD,MAEO,IAAIA,QAAQ,GAAG,CAAf,EAAkB;QACvBF,KAAK,CAACA,KAAK,CAACH,MAAP,CAAL,GAAsBS,QAAQ,CAC5BH,CAAC,GAAGJ,OAAO,CAACtB,KAAR,GAAgByB,QADQ,EAE5BE,KAF4B,EAG5BL,OAAO,CAACtB,KAAR,GAAgByB,QAHY,EAI5BH,OAAO,CAACrB,MAJoB,CAA9B,CAAA;AAMAwB,QAAAA,QAAQ,GAAG,CAAX,CAAA;AACD,OAAA;AACF,KAtBiD;;;IAyBlD,IAAIA,QAAQ,GAAG,CAAf,EAAkB;AAChBF,MAAAA,KAAK,CAACA,KAAK,CAACH,MAAP,CAAL,GAAsBS,QAAQ,CAC5BH,CAAC,GAAGJ,OAAO,CAACtB,KAAR,IAAiByB,QAAQ,GAAG,CAA5B,CADwB,EAE5BE,KAF4B,EAG5BL,OAAO,CAACtB,KAAR,GAAgByB,QAHY,EAI5BH,OAAO,CAACrB,MAJoB,CAA9B,CAAA;AAMD,KAAA;;AAED,IAAA,OAAOsB,KAAP,CAAA;GAlCF,CAAA;;AAqCA,EAAA,IAAMM,QAAQ,GAAG,SAAXA,QAAW,CAACH,CAAD,EAAII,CAAJ,EAAO9B,KAAP,EAAcC,MAAd,EAAwB;IACvC,OAAWyB,GAAAA,GAAAA,CAAX,SAAgBI,CAAhB,GAAA,GAAA,GAAqB9B,KAArB,GAA8BC,GAAAA,GAAAA,MAA9B,UAAyCD,KAAzC,GAAA,GAAA,CAAA;AACD,GAFD,CAnEU;;;EAwEV,IAAMiB,MAAM,GAAG,SAATA,MAAS,CAACf,IAAD,EAAe6B,OAAf,EAA6BT,OAA7B,EAA+C;AAC5D;IACA,IAAI,OAAOpB,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,CAACkB,MAAL,KAAgB,CAAhD,EAAmD;MACjD,IAAIE,OAAO,CAAChB,OAAZ,EAAqB;AACnBgB,QAAAA,OAAO,CAAChB,OAAR,CAAgB,IAAI0B,KAAJ,CAAU,0CAAV,CAAhB,CAAA,CAAA;AACA,QAAA,OAAA;AACD,OAAA;;AACD,MAAA,MAAM,IAAIA,KAAJ,CAAU,0CAAV,CAAN,CAAA;AACD,KAAA;;AAED,IAAA,IAAIlB,OAAJ,CAAA;;IAEA,IAAI;AACFA,MAAAA,OAAO,GAAG,IAAIiB,OAAJ,CAAY7B,IAAZ,EAAkBoB,OAAlB,CAAV,CAAA;KADF,CAEE,OAAOlC,KAAP,EAAc;AACd;MACA,IAAIkC,OAAO,CAAChB,OAAZ,EAAqB;AACnBgB,QAAAA,OAAO,CAAChB,OAAR,CAAgB,IAAI0B,KAAJ,CAAU,yBAAV,CAAhB,CAAA,CAAA;AACA,QAAA,OAAA;AACD,OAAA;;AACD,MAAA,MAAM,IAAIA,KAAJ,CAAU,yBAAV,CAAN,CAAA;AACD,KArB2D;;;AAwB5D,IAAA,IAAI,CAAClB,OAAO,CAACmB,KAAR,EAAL,EAAsB;MACpB,IAAIX,OAAO,CAAChB,OAAZ,EAAqB;AACnBgB,QAAAA,OAAO,CAAChB,OAAR,CAAgB,IAAI0B,KAAJ,CAAU,sCAAV,CAAhB,CAAA,CAAA;AACA,QAAA,OAAA;AACD,OAAA;;AACD,MAAA,MAAM,IAAIA,KAAJ,CAAU,sCAAV,CAAN,CAAA;AACD,KA9B2D;AAiC5D;AACA;AACA;AACA;;;AACA,IAAA,IAAMhB,OAAO,GAAGF,OAAO,CAACG,MAAR,EAAhB,CAAA;AACA,IAAA,OAAOD,OAAP,CAAA;GAtCF,CAAA;;AAyCA,EAAA,IAAMkB,eAAe,GAAG;AACtBC,IAAAA,eAAe,EAAE9B,UAAAA;GADnB,CAAA;AAGA,EAAA,oBACE,KAAC,CAAA,aAAA,CAAA,aAAD,EACE,IAAA,eAAA,KAAA,CAAA,aAAA,CAAC,IAAD,EAAA;AAAM,IAAA,KAAK,EAAE,CAAC+B,MAAM,CAACC,YAAR,EAAsBH,eAAtB,CAAA;AAAb,GAAA,eACE,oBAAC,GAAD,EAAA;AAAK,IAAA,MAAM,EAAEjC,MAAb;AAAqB,IAAA,KAAK,EAAES,YAA5B;AAA0C,IAAA,IAAI,EAAEN,SAAAA;AAAhD,GAAA,eACE,oBAAC,IAAD,EAAA;AAAM,IAAA,CAAC,EAAEI,IAAI,CAAC8B,IAAL,CAAU,GAAV,CAAA;GADX,CAAA,CADF,EAIG,OAAOpC,IAAP,KAAgB,WAAhB,iBACC,oBAAC,IAAD,EAAA;AACE,IAAA,KAAK,EAAE;AACLqC,MAAAA,KAAK,EAAEpC,SADF;AAELH,MAAAA,KAAK,EAAEU,YAFF;AAGL8B,MAAAA,SAAS,EAAE,QAAA;AAHN,KAAA;GAMNtC,EAAAA,IAPH,CALJ,CADF,CADF,CAAA;AAoBD,EAlJD;;AAoJA,IAAMkC,MAAM,GAAGK,UAAU,CAACC,MAAX,CAAkB;AAC/BL,EAAAA,YAAY,EAAE;AACZM,IAAAA,UAAU,EAAE,QADA;AAEZC,IAAAA,OAAO,EAAE,EAAA;AAFG,GAAA;AADiB,CAAlB,CAAf;;;;"}