UNPKG

@noaignite/react-centra-checkout

Version:

React components and helpers for Centra checkout api

1 lines 3.27 kB
{"version":3,"sources":["../../src/internal/CentraEvents.ts"],"sourcesContent":["import type * as CentraCheckoutApi from '@noaignite/centra-types'\n\nconst CENTRA_EVENTS = ['centra_checkout_callback', 'centra_checkout_payment_callback'] as const\n\nfunction isValidEvent(eventName: (typeof CENTRA_EVENTS)[number]) {\n if (CENTRA_EVENTS.includes(eventName)) {\n return true\n }\n\n console.error(`@noaignite/react-centra-checkout: There's no event with the name ${eventName}`)\n return false\n}\n\nexport class CentraEvents {\n eventHandlers: {\n centra_checkout_callback?: Set<\n (payload: CentraCheckoutApi.Response<CentraCheckoutApi.SelectionResponse>) => unknown\n >\n centra_checkout_payment_callback?: Set<\n (payload: CentraCheckoutApi.SelectionResponse) => unknown\n >\n }\n\n private static _default?: CentraEvents\n\n constructor() {\n this.eventHandlers = {\n centra_checkout_callback: new Set(),\n centra_checkout_payment_callback: new Set(),\n }\n }\n\n on(\n eventName: (typeof CENTRA_EVENTS)[number],\n callback: (\n response: CentraCheckoutApi.Response<CentraCheckoutApi.SelectionResponse>,\n ) => unknown,\n ) {\n if (isValidEvent(eventName)) {\n this.eventHandlers[eventName]?.add(callback)\n\n return true\n }\n\n return false\n }\n\n off(\n eventName: (typeof CENTRA_EVENTS)[number],\n callback: (\n response: CentraCheckoutApi.Response<CentraCheckoutApi.SelectionResponse>,\n ) => unknown,\n ) {\n if (isValidEvent(eventName)) {\n this.eventHandlers[eventName]?.delete(callback)\n\n return true\n }\n\n return false\n }\n\n dispatch(\n eventName: (typeof CENTRA_EVENTS)[number],\n payload: CentraCheckoutApi.Response<CentraCheckoutApi.SelectionResponse>,\n ) {\n if (isValidEvent(eventName)) {\n this.eventHandlers[eventName]?.forEach((handler) => handler(payload))\n }\n }\n\n public static get default(): CentraEvents {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- TODO: Remove rule disable when appropriate\n if (!CentraEvents._default) {\n CentraEvents._default = new CentraEvents()\n }\n\n return CentraEvents._default\n }\n\n public get default(): CentraEvents {\n return CentraEvents.default\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,IAAM,gBAAgB,CAAC,4BAA4B,kCAAkC;AAErF,SAAS,aAAa,WAA2C;AAC/D,MAAI,cAAc,SAAS,SAAS,GAAG;AACrC,WAAO;AAAA,EACT;AAEA,UAAQ,MAAM,oEAAoE,SAAS,EAAE;AAC7F,SAAO;AACT;AAEO,IAAM,eAAN,MAAM,cAAa;AAAA,EACxB;AAAA,EASA,OAAe;AAAA,EAEf,cAAc;AACZ,SAAK,gBAAgB;AAAA,MACnB,0BAA0B,oBAAI,IAAI;AAAA,MAClC,kCAAkC,oBAAI,IAAI;AAAA,IAC5C;AAAA,EACF;AAAA,EAEA,GACE,WACA,UAGA;AACA,QAAI,aAAa,SAAS,GAAG;AAC3B,WAAK,cAAc,SAAS,GAAG,IAAI,QAAQ;AAE3C,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,IACE,WACA,UAGA;AACA,QAAI,aAAa,SAAS,GAAG;AAC3B,WAAK,cAAc,SAAS,GAAG,OAAO,QAAQ;AAE9C,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,SACE,WACA,SACA;AACA,QAAI,aAAa,SAAS,GAAG;AAC3B,WAAK,cAAc,SAAS,GAAG,QAAQ,CAAC,YAAY,QAAQ,OAAO,CAAC;AAAA,IACtE;AAAA,EACF;AAAA,EAEA,WAAkB,UAAwB;AAExC,QAAI,CAAC,cAAa,UAAU;AAC1B,oBAAa,WAAW,IAAI,cAAa;AAAA,IAC3C;AAEA,WAAO,cAAa;AAAA,EACtB;AAAA,EAEA,IAAW,UAAwB;AACjC,WAAO,cAAa;AAAA,EACtB;AACF;","names":[]}