react-datatrans-light-box
Version:
Datatrans Lightbox component for React apps
1 lines • 3.46 kB
Source Map (JSON)
{"version":3,"sources":["../src/Lightbox.tsx","../src/index.ts"],"sourcesContent":["import { useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { DatatransLightboxConfig, GlobalDatatransApi } from './Datatrans'\n\nconst getUrl = (production: boolean) => production\n ? 'https://pay.datatrans.com/upp/payment/js/datatrans-2.0.0.global.min.js'\n : 'https://pay.sandbox.datatrans.com/upp/payment/js/datatrans-2.0.0.global.min.js'\n\nexport interface LightboxProps {\n production: boolean\n transactionId: string\n onLoaded?: () => void\n onOpened?: () => void\n onCancelled?: () => void\n onError?: (error: { message: string; detail: string }) => void // eslint-disable-line no-unused-vars\n}\n\ndeclare let window: Window & {\n Datatrans?: GlobalDatatransApi\n}\n\nconst startPayment = (config: DatatransLightboxConfig) => {\n if (window.Datatrans) {\n window.Datatrans.startPayment(config)\n }\n}\n\nconst cleanupLightbox = () => {\n if (window.Datatrans) {\n try {\n window.Datatrans.close()\n } catch (err) {} // eslint-disable-line no-empty\n }\n}\n\nconst Lightbox = (props: LightboxProps) => {\n useEffect(() => {\n const { production } = props\n const config =\n {\n transactionId: props.transactionId,\n loaded: props.onLoaded,\n opened: props.onOpened,\n closed: props.onCancelled,\n error: props.onError\n }\n const scriptSource = getUrl(production)\n\n if (document.querySelector('script[src=\"' + scriptSource + '\"]')) {\n startPayment(config)\n\n return cleanupLightbox\n }\n\n const script = document.createElement('script')\n script.src = scriptSource\n script.onload = () => {\n startPayment(config)\n }\n\n document.body.appendChild(script)\n\n return cleanupLightbox\n }, [])\n\n return null\n}\n\nexport default Lightbox\n\nLightbox.propTypes = {\n transactionId: PropTypes.string.isRequired,\n\n production: PropTypes.bool,\n\n onLoaded: PropTypes.func,\n onOpened: PropTypes.func,\n onCancelled: PropTypes.func,\n onError: PropTypes.func\n}\n\nLightbox.defaultProps = {\n onLoaded() {},\n onOpened() {},\n onCancelled() {},\n onError() {},\n production: false\n}\n","import Lightbox from './Lightbox'\nexport type { DatatransLightboxConfig } from './Datatrans'\n\nexport default Lightbox\n"],"mappings":";AAAA,SAAS,iBAAiB;AAC1B,OAAO,eAAe;AAGtB,IAAM,SAAS,CAAC,eAAwB,aACpC,2EACA;AAeJ,IAAM,eAAe,CAAC,WAAoC;AACxD,MAAI,OAAO,WAAW;AACpB,WAAO,UAAU,aAAa,MAAM;AAAA,EACtC;AACF;AAEA,IAAM,kBAAkB,MAAM;AAC5B,MAAI,OAAO,WAAW;AACpB,QAAI;AACF,aAAO,UAAU,MAAM;AAAA,IACzB,SAAS,KAAP;AAAA,IAAa;AAAA,EACjB;AACF;AAEA,IAAM,WAAW,CAAC,UAAyB;AACzC,YAAU,MAAM;AACd,UAAM,EAAE,WAAW,IAAI;AACvB,UAAM,SACJ;AAAA,MACE,eAAe,MAAM;AAAA,MACrB,QAAQ,MAAM;AAAA,MACd,QAAQ,MAAM;AAAA,MACd,QAAQ,MAAM;AAAA,MACd,OAAO,MAAM;AAAA,IACf;AACF,UAAM,eAAe,OAAO,UAAU;AAEtC,QAAI,SAAS,cAAc,iBAAiB,eAAe,IAAI,GAAG;AAChE,mBAAa,MAAM;AAEnB,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,WAAO,MAAM;AACb,WAAO,SAAS,MAAM;AACpB,mBAAa,MAAM;AAAA,IACrB;AAEA,aAAS,KAAK,YAAY,MAAM;AAEhC,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;AAEA,IAAO,mBAAQ;AAEf,SAAS,YAAY;AAAA,EACnB,eAAe,UAAU,OAAO;AAAA,EAEhC,YAAY,UAAU;AAAA,EAEtB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,aAAa,UAAU;AAAA,EACvB,SAAS,UAAU;AACrB;AAEA,SAAS,eAAe;AAAA,EACtB,WAAW;AAAA,EAAC;AAAA,EACZ,WAAW;AAAA,EAAC;AAAA,EACZ,cAAc;AAAA,EAAC;AAAA,EACf,UAAU;AAAA,EAAC;AAAA,EACX,YAAY;AACd;;;ACpFA,IAAO,cAAQ;","names":[]}