fansunited-frontend-core 0.0.52 → 0.0.53
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 +38 -3
- package/api/betslipApi.d.ts +18 -1
- package/api/betslipApi.d.ts.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.es.js +712 -700
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -98,6 +98,7 @@ import {
|
|
|
98
98
|
BetslipOutcomeLabels,
|
|
99
99
|
BetslipLabels,
|
|
100
100
|
BetslipProps,
|
|
101
|
+
BetslipState,
|
|
101
102
|
PredictorBetslipConfig,
|
|
102
103
|
} from "fansunited-frontend-core";
|
|
103
104
|
```
|
|
@@ -268,8 +269,10 @@ initializeI18n("en");
|
|
|
268
269
|
|
|
269
270
|
`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
|
|
|
272
|
+
> **Important:** Always import `betslipApi` from `fansunited-frontend-components`, not from `fansunited-frontend-core`. The Betslip widget bundles its own copy of the command bus; importing from the components package guarantees you use the same singleton instance the widget is listening on.
|
|
273
|
+
|
|
271
274
|
```tsx
|
|
272
|
-
import { betslipApi } from "fansunited-frontend-
|
|
275
|
+
import { betslipApi } from "fansunited-frontend-components";
|
|
273
276
|
|
|
274
277
|
// Add a selection. If the same eventId + market already exists, the outcome is replaced.
|
|
275
278
|
betslipApi.setSelection("fb:m:451678:FT_1X2:1");
|
|
@@ -280,6 +283,38 @@ betslipApi.removeSelection("fb:m:451678:FT_1X2:1");
|
|
|
280
283
|
|
|
281
284
|
**Selection ID format:** `"{eventId}:{market}:{outcome}"`, for example `"fb:m:451678:FT_1X2:1"`.
|
|
282
285
|
|
|
286
|
+
#### Reading betslip state
|
|
287
|
+
|
|
288
|
+
`betslipApi` also exposes the current betslip state through a snapshot accessor and a reactive subscription:
|
|
289
|
+
|
|
290
|
+
```tsx
|
|
291
|
+
import { betslipApi } from "fansunited-frontend-components";
|
|
292
|
+
import type { BetslipState } from "fansunited-frontend-components";
|
|
293
|
+
|
|
294
|
+
// One-shot snapshot — returns the last known state immediately
|
|
295
|
+
const { selections, stake, totalOdds } = betslipApi.getState();
|
|
296
|
+
|
|
297
|
+
// Reactive subscription — fires whenever selections, stake, or odds change
|
|
298
|
+
const unsubscribe = betslipApi.subscribe((state: BetslipState) => {
|
|
299
|
+
console.log("selections:", state.selections.length);
|
|
300
|
+
console.log("stake:", state.stake);
|
|
301
|
+
console.log("totalOdds:", state.totalOdds);
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
// Call unsubscribe() to stop receiving updates
|
|
305
|
+
unsubscribe();
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
**`BetslipState` shape:**
|
|
309
|
+
|
|
310
|
+
```ts
|
|
311
|
+
interface BetslipState {
|
|
312
|
+
selections: BetslipSelectionInput[]; // current raw selections
|
|
313
|
+
stake: number; // parsed numeric stake (0 when empty)
|
|
314
|
+
totalOdds: number; // product of all selection decimal odds (0 when no selections)
|
|
315
|
+
}
|
|
316
|
+
```
|
|
317
|
+
|
|
283
318
|
The typical integration pattern is:
|
|
284
319
|
|
|
285
320
|
```tsx
|
|
@@ -287,9 +322,9 @@ The typical integration pattern is:
|
|
|
287
322
|
<Betslip sdk={sdk} language="en" />
|
|
288
323
|
|
|
289
324
|
// 2. From anywhere in your app — e.g. a match card — call betslipApi
|
|
290
|
-
import { betslipApi } from "fansunited-frontend-
|
|
325
|
+
import { betslipApi } from "fansunited-frontend-components";
|
|
291
326
|
|
|
292
|
-
function MatchCard({ eventId, market, outcome
|
|
327
|
+
function MatchCard({ eventId, market, outcome }) {
|
|
293
328
|
const selectionId = `${eventId}:${market}:${outcome}`;
|
|
294
329
|
|
|
295
330
|
return (
|
package/api/betslipApi.d.ts
CHANGED
|
@@ -1,10 +1,21 @@
|
|
|
1
|
+
import { BetslipSelectionInput } from '../interfaces/interfaces';
|
|
2
|
+
|
|
3
|
+
export interface BetslipState {
|
|
4
|
+
selections: BetslipSelectionInput[];
|
|
5
|
+
stake: number;
|
|
6
|
+
totalOdds: number;
|
|
7
|
+
}
|
|
1
8
|
interface BetslipApi {
|
|
2
9
|
/** Upsert a selection. If the same eventId + market already exists, the outcome is replaced. */
|
|
3
10
|
setSelection(id: string): void;
|
|
4
11
|
/** Remove a selection by its exact id ("eventId:market:outcome"). No-op if not present. */
|
|
5
12
|
removeSelection(id: string): void;
|
|
13
|
+
/** Returns a snapshot of the current betslip state. */
|
|
14
|
+
getState(): BetslipState;
|
|
15
|
+
/** Subscribe to state changes. Returns an unsubscribe function. */
|
|
16
|
+
subscribe(listener: (state: BetslipState) => void): () => void;
|
|
6
17
|
}
|
|
7
|
-
type Handler = BetslipApi
|
|
18
|
+
type Handler = Pick<BetslipApi, "setSelection" | "removeSelection">;
|
|
8
19
|
/**
|
|
9
20
|
* Singleton command bus. BetslipShell registers its internal state handlers on mount
|
|
10
21
|
* (_mount) and clears them on unmount (_unmount). Calls made before mount are queued
|
|
@@ -14,12 +25,18 @@ type Handler = BetslipApi;
|
|
|
14
25
|
declare class BetslipBus implements BetslipApi {
|
|
15
26
|
private handler;
|
|
16
27
|
private queue;
|
|
28
|
+
private listeners;
|
|
29
|
+
private lastState;
|
|
17
30
|
/** Called by BetslipShell on mount. Replays any queued pre-mount calls. */
|
|
18
31
|
_mount(h: Handler): void;
|
|
19
32
|
/** Called by BetslipShell on unmount. */
|
|
20
33
|
_unmount(): void;
|
|
34
|
+
/** Called by BetslipStateBridge whenever context state changes. */
|
|
35
|
+
_notify(state: BetslipState): void;
|
|
21
36
|
setSelection(id: string): void;
|
|
22
37
|
removeSelection(id: string): void;
|
|
38
|
+
getState(): BetslipState;
|
|
39
|
+
subscribe(listener: (state: BetslipState) => void): () => void;
|
|
23
40
|
}
|
|
24
41
|
export declare const betslipApi: BetslipBus;
|
|
25
42
|
export {};
|
package/api/betslipApi.d.ts.map
CHANGED
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"betslipApi.d.ts","sourceRoot":"","sources":["../../src/api/betslipApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,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;IAClC,uDAAuD;IACvD,QAAQ,IAAI,YAAY,CAAC;IACzB,mEAAmE;IACnE,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAChE;AAED,KAAK,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,GAAG,iBAAiB,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,cAAM,UAAW,YAAW,UAAU;IACpC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,SAAS,CAAiD;IAClE,OAAO,CAAC,SAAS,CAA4D;IAE7E,2EAA2E;IAC3E,MAAM,CAAC,CAAC,EAAE,OAAO;IAMjB,yCAAyC;IACzC,QAAQ;IAIR,mEAAmE;IACnE,OAAO,CAAC,KAAK,EAAE,YAAY;IAK3B,YAAY,CAAC,EAAE,EAAE,MAAM;IAMvB,eAAe,CAAC,EAAE,EAAE,MAAM;IAI1B,QAAQ,IAAI,YAAY;IAIxB,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI;CAI/D;AAED,eAAO,MAAM,UAAU,YAAmB,CAAC"}
|
package/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const version: string;
|
|
2
2
|
export * from './constants/constants';
|
|
3
3
|
export { betslipApi } from './api/betslipApi';
|
|
4
|
+
export type { BetslipState } from './api/betslipApi';
|
|
4
5
|
export * from './functions/functions';
|
|
5
6
|
export * from './interfaces/interfaces';
|
|
6
7
|
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":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|