@noaignite/react-centra-checkout
Version:
React components and helpers for Centra checkout api
1 lines • 3.09 kB
Source Map (JSON)
{"version":3,"file":"CentraEvents.cjs","names":[],"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":";;AAEA,MAAM,gBAAgB,CAAC,4BAA4B,kCAAkC;AAErF,SAAS,aAAa,WAA2C;CAC/D,IAAI,cAAc,SAAS,SAAS,GAClC,OAAO;CAGT,QAAQ,MAAM,oEAAoE,WAAW;CAC7F,OAAO;AACT;AAEA,IAAa,eAAb,MAAa,aAAa;CACxB;CASA,OAAe;CAEf,cAAc;EACZ,KAAK,gBAAgB;GACnB,0CAA0B,IAAI,IAAI;GAClC,kDAAkC,IAAI,IAAI;EAC5C;CACF;CAEA,GACE,WACA,UAGA;EACA,IAAI,aAAa,SAAS,GAAG;GAC3B,KAAK,cAAc,UAAU,EAAE,IAAI,QAAQ;GAE3C,OAAO;EACT;EAEA,OAAO;CACT;CAEA,IACE,WACA,UAGA;EACA,IAAI,aAAa,SAAS,GAAG;GAC3B,KAAK,cAAc,UAAU,EAAE,OAAO,QAAQ;GAE9C,OAAO;EACT;EAEA,OAAO;CACT;CAEA,SACE,WACA,SACA;EACA,IAAI,aAAa,SAAS,GACxB,KAAK,cAAc,UAAU,EAAE,SAAS,YAAY,QAAQ,OAAO,CAAC;CAExE;CAEA,WAAkB,UAAwB;EAExC,IAAI,CAAC,aAAa,UAChB,aAAa,WAAW,IAAI,aAAa;EAG3C,OAAO,aAAa;CACtB;CAEA,IAAW,UAAwB;EACjC,OAAO,aAAa;CACtB;AACF"}