UNPKG

razorpay-react-sdk

Version:

A simple Razorpay integration package for React & Next.js with TypeScript support.

3 lines (2 loc) 1.77 kB
import n,{useMemo as t,useCallback as o,createContext as e,useContext as r}from"react";function i(n,t,o,e){return new(o||(o=Promise))((function(r,i){function c(n){try{s(e.next(n))}catch(n){i(n)}}function a(n){try{s(e.throw(n))}catch(n){i(n)}}function s(n){var t;n.done?r(n.value):(t=n.value,t instanceof o?t:new o((function(n){n(t)}))).then(c,a)}s((e=e.apply(n,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;class c{static loadScript(){return i(this,void 0,void 0,(function*(){return new Promise(((n,t)=>{if(this.scriptLoaded)return n(!0);const o=document.createElement("script");o.src="https://checkout.razorpay.com/v1/checkout.js",o.async=!0,o.onload=()=>{this.scriptLoaded=!0,n(!0)},o.onerror=()=>t(new Error("Error while loading razorpay script")),document.body.appendChild(o)}))}))}static openPayment(n){return i(this,void 0,void 0,(function*(){if(!(yield this.loadScript()))throw new Error("Failed to load Razorpay SDK");new window.Razorpay(n).open()}))}}function a(n){const e=t((()=>"undefined"!=typeof window),[]);return o((t=>i(this,void 0,void 0,(function*(){e&&(yield c.openPayment(Object.assign(Object.assign({},n),t)))}))),[n])}c.scriptLoaded=!1;const s=e(null);function d({options:t,children:o}){if(!t.key)throw new Error("RazorpayProvider must be provided with a key.");return n.createElement(s.Provider,{value:t},o)}function u(n){const e=t((()=>"undefined"!=typeof window),[]),a=r(s);if(!a)throw new Error("useRazorpay must be used within a RazorpayProvider");return o((t=>i(this,void 0,void 0,(function*(){e&&(yield c.openPayment(Object.assign(Object.assign(Object.assign({},a),n),t)))}))),[a])}export{c as RazorpayClient,d as RazorpayProvider,a as useRazorpay,u as useRazorpayFromProvider}; //# sourceMappingURL=index.js.map