{"version":3,"file":"index.cjs","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  textSize: number;\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  textSize = 12,\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\ttextSize,\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\t\t\t  fontSize: textSize, \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","_React$Component","_inheritsLoose","props","_this","call","state","hasError","getDerivedStateFromError","error","_proto","prototype","componentDidCatch","errorInfo","console","log","render","React","createElement","children","Component","Barcode","_ref","value","_ref$format","format","_ref$width","width","_ref$height","height","text","_ref$textSize","textSize","_ref$textColor","textColor","_ref$lineColor","lineColor","_ref$background","background","onError","_useState","useState","bars","setBars","_useState2","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","View","style","styles","svgContainer","Svg","fill","Path","d","join","Text","color","fontSize","textAlign","StyleSheet","create","alignItems","padding"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAA0B,IAEpBA,aAAc,0BAAAC,gBAAA,EAAA;EAAAC,cAAA,CAAAF,aAAA,EAAAC,gBAAA,CAAA,CAAA;EAIlB,SAAAD,aAAAA,CAAYG,KAAK,EAAA;AAAA,IAAA,IAAAC,KAAA,CAAA;AACfA,IAAAA,KAAA,GAAAH,gBAAA,CAAAI,IAAA,CAAA,IAAA,EAAMF,KAAK,CAAC,IAAA,IAAA,CAAA;IACZC,KAAA,CAAKE,KAAK,GAAG;AAAEC,MAAAA,QAAQ,EAAE,KAAA;KAAO,CAAA;AAAC,IAAA,OAAAH,KAAA,CAAA;AACnC,GAAA;AAACJ,EAAAA,aAAA,CAEMQ,wBAAwB,GAA/B,SAAAA,wBAAAA,CAAgCC,KAAK,EAAA;IACnC,OAAO;AAAEF,MAAAA,QAAQ,EAAE,IAAA;KAAM,CAAA;GAC1B,CAAA;AAAA,EAAA,IAAAG,MAAA,GAAAV,aAAA,CAAAW,SAAA,CAAA;EAAAD,MAAA,CAEDE,iBAAiB,GAAjB,SAAAA,kBAAkBH,KAAU,EAAEI,SAAc,EAAA;AAC1CC,IAAAA,OAAO,CAACC,GAAG,CAACN,KAAK,EAAEI,SAAS,CAAC,CAAA;GAC9B,CAAA;AAAAH,EAAAA,MAAA,CAEDM,MAAM,GAAN,SAAAA,SAAM;AACJ,IAAA,IAAI,IAAI,CAACV,KAAK,CAACC,QAAQ,EAAE;AACvB;AACA,MAAA,oBAAOU,yBAAA,CAAAC,aAAA,CAAA,IAAA,EAAA,IAAA,EAAI,uBAAyB,CAAC,CAAA;AACtC,KAAA;AAED,IAAA,OAAO,IAAI,CAACf,KAAK,CAACgB,QAAQ,CAAA;GAC3B,CAAA;AAAA,EAAA,OAAAnB,aAAA,CAAA;AAAA,CAxByBiB,CAAAA,yBAAK,CAACG,SAGjC,CAAA;;ACeD,IAAMC,OAAO,GAAG,SAAVA,OAAOA,CAAAC,IAAA,EAWD;AAAA,EAAA,IAVVC,KAAK,GAAAD,IAAA,CAALC,KAAK;IAAAC,WAAA,GAAAF,IAAA,CACLG,MAAM;AAANA,IAAAA,MAAM,GAAAD,WAAA,KAAG,KAAA,CAAA,GAAA,SAAS,GAAAA,WAAA;IAAAE,UAAA,GAAAJ,IAAA,CAClBK,KAAK;AAALA,IAAAA,KAAK,GAAAD,UAAA,KAAG,KAAA,CAAA,GAAA,CAAC,GAAAA,UAAA;IAAAE,WAAA,GAAAN,IAAA,CACTO,MAAM;AAANA,IAAAA,MAAM,GAAAD,WAAA,KAAG,KAAA,CAAA,GAAA,GAAG,GAAAA,WAAA;IACZE,IAAI,GAAAR,IAAA,CAAJQ,IAAI;IAAAC,aAAA,GAAAT,IAAA,CACJU,QAAQ;AAARA,IAAAA,QAAQ,GAAAD,aAAA,KAAG,KAAA,CAAA,GAAA,EAAE,GAAAA,aAAA;IAAAE,cAAA,GAAAX,IAAA,CACbY,SAAS;AAATA,IAAAA,SAAS,GAAAD,cAAA,KAAG,KAAA,CAAA,GAAA,SAAS,GAAAA,cAAA;IAAAE,cAAA,GAAAb,IAAA,CACrBc,SAAS;AAATA,IAAAA,SAAS,GAAAD,cAAA,KAAG,KAAA,CAAA,GAAA,SAAS,GAAAA,cAAA;IAAAE,eAAA,GAAAf,IAAA,CACrBgB,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAG,KAAA,CAAA,GAAA,SAAS,GAAAA,eAAA;IACtBE,OAAO,GAAAjB,IAAA,CAAPiB,OAAO,CAAA;AAEP,EAAA,IAAAC,SAAA,GAAwBC,cAAQ,CAAC,EAAE,CAAC;AAA7BC,IAAAA,IAAI,GAAAF,SAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,OAAO,GAAAH,SAAA,CAAA,CAAA,CAAA,CAAA;AACpB,EAAA,IAAAI,UAAA,GAAwCH,cAAQ,CAAC,CAAC,CAAC;AAA5CI,IAAAA,YAAY,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,eAAe,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AAEpC,EAAA,IAAMzC,KAAK,GAAG;AACZoB,IAAAA,KAAK,EAALA,KAAK;AACLE,IAAAA,MAAM,EAANA,MAAM;AACNE,IAAAA,KAAK,EAALA,KAAK;AACLE,IAAAA,MAAM,EAANA,MAAM;AACNC,IAAAA,IAAI,EAAJA,IAAI;AACPE,IAAAA,QAAQ,EAARA,QAAQ;AACLE,IAAAA,SAAS,EAATA,SAAS;AACTE,IAAAA,SAAS,EAATA,SAAS;AACTE,IAAAA,UAAU,EAAVA,UAAU;AACVC,IAAAA,OAAO,EAAPA,OAAAA;GACD,CAAA;AAEDQ,EAAAA,eAAS,CAAC,YAAK;AACbC,IAAAA,MAAM,EAAE,CAAA;AACV,GAAC,EAAE,CAACzB,KAAK,CAAC,CAAC,CAAA;AAEX,EAAA,IAAMyB,MAAM,GAAG,SAATA,MAAMA,GAAQ;AAClB,IAAA,IAAMC,OAAO,GAAGC,4BAAQ,CAACzB,MAAM,CAAC,CAAA;IAChC,IAAM0B,OAAO,GAAGC,MAAM,CAAC7B,KAAK,EAAE0B,OAAO,EAAE9C,KAAK,CAAC,CAAA;AAE7C,IAAA,IAAIgD,OAAO,EAAE;AACXR,MAAAA,OAAO,CAACU,cAAc,CAACF,OAAO,EAAEhD,KAAK,CAAC,CAAC,CAAA;MACvC2C,eAAe,CAACK,OAAO,CAACG,IAAI,CAACC,MAAM,GAAG5B,KAAK,CAAC,CAAA;AAC7C,KAAA;GACF,CAAA;EAED,IAAM0B,cAAc,GAAG,SAAjBA,cAAcA,CAAIG,QAAQ,EAAEC,OAAc,EAAI;IAClD,IAAMC,KAAK,GAAG,EAAE,CAAA;AAChB;AACA,IAAA,IAAMC,MAAM,GAAGH,QAAQ,CAACF,IAAI,CAAA;IAE5B,IAAIM,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAIC,CAAC,GAAG,CAAC,CAAA;IACT,IAAIC,KAAK,GAAG,CAAC,CAAA;AAEb,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,MAAM,CAACJ,MAAM,EAAEQ,CAAC,EAAE,EAAE;AACtCF,MAAAA,CAAC,GAAGE,CAAC,GAAGN,OAAO,CAAC9B,KAAK,CAAA;AACrB,MAAA,IAAIgC,MAAM,CAACI,CAAC,CAAC,KAAK,GAAG,EAAE;AACrBH,QAAAA,QAAQ,EAAE,CAAA;AACX,OAAA,MAAM,IAAIA,QAAQ,GAAG,CAAC,EAAE;QACvBF,KAAK,CAACA,KAAK,CAACH,MAAM,CAAC,GAAGS,QAAQ,CAC5BH,CAAC,GAAGJ,OAAO,CAAC9B,KAAK,GAAGiC,QAAQ,EAC5BE,KAAK,EACLL,OAAO,CAAC9B,KAAK,GAAGiC,QAAQ,EACxBH,OAAO,CAAC5B,MAAM,CACf,CAAA;AACD+B,QAAAA,QAAQ,GAAG,CAAC,CAAA;AACb,OAAA;AACF,KAAA;AAED;IACA,IAAIA,QAAQ,GAAG,CAAC,EAAE;AAChBF,MAAAA,KAAK,CAACA,KAAK,CAACH,MAAM,CAAC,GAAGS,QAAQ,CAC5BH,CAAC,GAAGJ,OAAO,CAAC9B,KAAK,IAAIiC,QAAQ,GAAG,CAAC,CAAC,EAClCE,KAAK,EACLL,OAAO,CAAC9B,KAAK,GAAGiC,QAAQ,EACxBH,OAAO,CAAC5B,MAAM,CACf,CAAA;AACF,KAAA;AAED,IAAA,OAAO6B,KAAK,CAAA;GACb,CAAA;AAED,EAAA,IAAMM,QAAQ,GAAG,SAAXA,QAAQA,CAAIH,CAAC,EAAEI,CAAC,EAAEtC,KAAK,EAAEE,MAAM,EAAI;IACvC,OAAWgC,GAAAA,GAAAA,CAAC,SAAII,CAAC,GAAA,GAAA,GAAItC,KAAK,GAAIE,GAAAA,GAAAA,MAAM,UAAKF,KAAK,GAAA,GAAA,CAAA;GAC/C,CAAA;AAED;EACA,IAAMyB,MAAM,GAAG,SAATA,MAAMA,CAAItB,IAAY,EAAEoC,OAAY,EAAET,OAAc,EAAI;AAC5D;IACA,IAAI,OAAO3B,IAAI,KAAK,QAAQ,IAAIA,IAAI,CAACyB,MAAM,KAAK,CAAC,EAAE;MACjD,IAAIE,OAAO,CAAClB,OAAO,EAAE;QACnBkB,OAAO,CAAClB,OAAO,CAAC,IAAI4B,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAA;AACtE,QAAA,OAAA;AACD,OAAA;AACD,MAAA,MAAM,IAAIA,KAAK,CAAC,0CAA0C,CAAC,CAAA;AAC5D,KAAA;AAED,IAAA,IAAIlB,OAAO,CAAA;IAEX,IAAI;AACFA,MAAAA,OAAO,GAAG,IAAIiB,OAAO,CAACpC,IAAI,EAAE2B,OAAO,CAAC,CAAA;KACrC,CAAC,OAAOhD,KAAK,EAAE;AACd;MACA,IAAIgD,OAAO,CAAClB,OAAO,EAAE;QACnBkB,OAAO,CAAClB,OAAO,CAAC,IAAI4B,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAA;AACrD,QAAA,OAAA;AACD,OAAA;AACD,MAAA,MAAM,IAAIA,KAAK,CAAC,yBAAyB,CAAC,CAAA;AAC3C,KAAA;AAED;AACA,IAAA,IAAI,CAAClB,OAAO,CAACmB,KAAK,EAAE,EAAE;MACpB,IAAIX,OAAO,CAAClB,OAAO,EAAE;QACnBkB,OAAO,CAAClB,OAAO,CAAC,IAAI4B,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAA;AAClE,QAAA,OAAA;AACD,OAAA;AACD,MAAA,MAAM,IAAIA,KAAK,CAAC,sCAAsC,CAAC,CAAA;AACxD,KAAA;AAED;AACA;AACA;AACA;AACA;AACA,IAAA,IAAMhB,OAAO,GAAGF,OAAO,CAACG,MAAM,EAAE,CAAA;AAChC,IAAA,OAAOD,OAAO,CAAA;GACf,CAAA;AAED,EAAA,IAAMkB,eAAe,GAAG;AACtBC,IAAAA,eAAe,EAAEhC,UAAAA;GAClB,CAAA;EACD,oBACErB,yBAAA,CAAAC,aAAA,CAAClB,aAAa,qBACZiB,yBAAA,CAAAC,aAAA,CAACqD,gBAAI,EAAA;AAACC,IAAAA,KAAK,EAAE,CAACC,MAAM,CAACC,YAAY,EAAEL,eAAe,CAAA;AAAE,GAAA,eAClDpD,yBAAA,CAAAC,aAAA,CAACyD,uBAAG,EAAA;AAAC9C,IAAAA,MAAM,EAAEA,MAAO;AAACF,IAAAA,KAAK,EAAEkB,YAAa;AAAC+B,IAAAA,IAAI,EAAExC,SAAAA;AAAU,GAAA,eACxDnB,yBAAA,CAAAC,aAAA,CAAC2D,QAAI,EAAA;AAACC,IAAAA,CAAC,EAAEpC,IAAI,CAACqC,IAAI,CAAC,GAAG,CAAA;AAAE,GAC1B,CAAK,CACL,EAAC,OAAOjD,IAAI,KAAK,WAAW,iBAC1Bb,yBAAA,CAAAC,aAAA,CAAC8D,gBAAI,EAAA;AACHR,IAAAA,KAAK,EAAE;AACLS,MAAAA,KAAK,EAAE/C,SAAS;AAChBP,MAAAA,KAAK,EAAEkB,YAAY;AAC5BqC,MAAAA,QAAQ,EAAElD,QAAQ;AACTmD,MAAAA,SAAS,EAAE,QAAA;AACZ,KAAA;GAEArD,EAAAA,IACG,CAEJ,CACO,CAAC,CAAA;AAEpB,EAAC;AAED,IAAM2C,MAAM,GAAGW,sBAAU,CAACC,MAAM,CAAC;AAC/BX,EAAAA,YAAY,EAAE;AACZY,IAAAA,UAAU,EAAE,QAAQ;AACpBC,IAAAA,OAAO,EAAE,EAAA;AACV,GAAA;AACF,CAAA,CAAC;;;;"}