fansunited-frontend-core 0.0.50 → 0.0.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -88,7 +88,17 @@ import {
88
88
  UserState,
89
89
 
90
90
  // Enums
91
- WidgetTemplate
91
+ WidgetTemplate,
92
+
93
+ // Betslip
94
+ BetslipParticipant,
95
+ BetslipCompetition,
96
+ BetslipAthlete,
97
+ BetslipSelectionInput,
98
+ BetslipOutcomeLabels,
99
+ BetslipLabels,
100
+ BetslipProps,
101
+ PredictorBetslipConfig,
92
102
  } from "fansunited-frontend-core";
93
103
  ```
94
104
 
@@ -121,7 +131,13 @@ import {
121
131
  // Hook Types
122
132
  UseLeadFormParams,
123
133
  UseLeadFormReturn,
124
- LeadFormData
134
+ LeadFormData,
135
+
136
+ // Betslip
137
+ BetslipPosition,
138
+ SelectionStatus,
139
+ OddsFormat,
140
+ PredictorBetslipTrigger,
125
141
  } from "fansunited-frontend-core";
126
142
  ```
127
143
 
@@ -248,6 +264,42 @@ import { initializeI18n } from "fansunited-frontend-core";
248
264
  initializeI18n("en");
249
265
  ```
250
266
 
267
+ ### Betslip Command Bus
268
+
269
+ `betslipApi` is a singleton command bus that lets any code — including code that runs **before the `<Betslip />` widget mounts** — add or remove selections programmatically. Pre-mount calls are queued and replayed automatically once the widget registers.
270
+
271
+ ```tsx
272
+ import { betslipApi } from "fansunited-frontend-core";
273
+
274
+ // Add a selection. If the same eventId + market already exists, the outcome is replaced.
275
+ betslipApi.setSelection("fb:m:451678:FT_1X2:1");
276
+
277
+ // Remove a selection by its exact id. No-op if not present or widget is not mounted.
278
+ betslipApi.removeSelection("fb:m:451678:FT_1X2:1");
279
+ ```
280
+
281
+ **Selection ID format:** `"{eventId}:{market}:{outcome}"`, for example `"fb:m:451678:FT_1X2:1"`.
282
+
283
+ The typical integration pattern is:
284
+
285
+ ```tsx
286
+ // 1. Render the Betslip widget once at app root level
287
+ <Betslip sdk={sdk} language="en" />
288
+
289
+ // 2. From anywhere in your app — e.g. a match card — call betslipApi
290
+ import { betslipApi } from "fansunited-frontend-core";
291
+
292
+ function MatchCard({ eventId, market, outcome, participantOne, participantTwo }) {
293
+ const selectionId = `${eventId}:${market}:${outcome}`;
294
+
295
+ return (
296
+ <button onClick={() => betslipApi.setSelection(selectionId)}>
297
+ Add to Betslip
298
+ </button>
299
+ );
300
+ }
301
+ ```
302
+
251
303
  ## Call-to-Action (CTA) Interfaces
252
304
 
253
305
  The package provides several CTA interfaces for different use cases:
@@ -0,0 +1,26 @@
1
+ interface BetslipApi {
2
+ /** Upsert a selection. If the same eventId + market already exists, the outcome is replaced. */
3
+ setSelection(id: string): void;
4
+ /** Remove a selection by its exact id ("eventId:market:outcome"). No-op if not present. */
5
+ removeSelection(id: string): void;
6
+ }
7
+ type Handler = BetslipApi;
8
+ /**
9
+ * Singleton command bus. BetslipShell registers its internal state handlers on mount
10
+ * (_mount) and clears them on unmount (_unmount). Calls made before mount are queued
11
+ * and replayed once the shell registers — this handles consumers that call setSelection
12
+ * before the package has finished mounting.
13
+ */
14
+ declare class BetslipBus implements BetslipApi {
15
+ private handler;
16
+ private queue;
17
+ /** Called by BetslipShell on mount. Replays any queued pre-mount calls. */
18
+ _mount(h: Handler): void;
19
+ /** Called by BetslipShell on unmount. */
20
+ _unmount(): void;
21
+ setSelection(id: string): void;
22
+ removeSelection(id: string): void;
23
+ }
24
+ export declare const betslipApi: BetslipBus;
25
+ export {};
26
+ //# sourceMappingURL=betslipApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"betslipApi.d.ts","sourceRoot":"","sources":["../../src/api/betslipApi.ts"],"names":[],"mappings":"AAAA,UAAU,UAAU;IAClB,gGAAgG;IAChG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,2FAA2F;IAC3F,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,KAAK,OAAO,GAAG,UAAU,CAAC;AAE1B;;;;;GAKG;AACH,cAAM,UAAW,YAAW,UAAU;IACpC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,KAAK,CAAyB;IAEtC,2EAA2E;IAC3E,MAAM,CAAC,CAAC,EAAE,OAAO;IAMjB,yCAAyC;IACzC,QAAQ;IAIR,YAAY,CAAC,EAAE,EAAE,MAAM;IAMvB,eAAe,CAAC,EAAE,EAAE,MAAM;CAG3B;AAED,eAAO,MAAM,UAAU,YAAmB,CAAC"}
package/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export declare const version: string;
2
2
  export * from './constants/constants';
3
+ export { betslipApi } from './api/betslipApi';
3
4
  export * from './functions/functions';
4
5
  export * from './interfaces/interfaces';
5
6
  export * from './types/types';
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,EAAE,MAAyB,CAAC;AAEhD,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAC/F,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,uEAAuE,CAAC;AAC9H,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,oEAAoE,CAAC;AACxH,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,+DAA+D,CAAC;AAClH,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,iEAAiE,CAAC;AACrH,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,yDAAyD,CAAC;AACzG,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,6DAA6D,CAAC;AAC/G,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,qEAAqE,CAAC;AAC3H,OAAO,EAAE,OAAO,IAAI,gCAAgC,EAAE,MAAM,4EAA4E,CAAC;AACzI,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,mEAAmE,CAAC;AACxH,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,6DAA6D,CAAC;AAC/G,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,iEAAiE,CAAC;AACrH,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,yDAAyD,CAAC;AACjH,YAAY,EAAE,gCAAgC,EAAE,MAAM,yDAAyD,CAAC;AAChH,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAC3G,YAAY,EAAE,6BAA6B,EAAE,MAAM,sDAAsD,CAAC;AAC1G,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AAC/G,YAAY,EAAE,+BAA+B,EAAE,MAAM,wDAAwD,CAAC;AAC9G,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AACtG,YAAY,EAAE,+BAA+B,EAAE,MAAM,+CAA+C,CAAC;AACrG,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,kCAAkC,CAAC;AACxE,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,uCAAuC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}