@smoregg/sdk 1.2.0 → 2.0.0
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/dist/cjs/config.cjs.map +1 -1
- package/dist/cjs/controller.cjs +215 -145
- package/dist/cjs/controller.cjs.map +1 -1
- package/dist/cjs/screen.cjs +220 -178
- package/dist/cjs/screen.cjs.map +1 -1
- package/dist/cjs/testing.cjs +160 -151
- package/dist/cjs/testing.cjs.map +1 -1
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/controller.js +216 -146
- package/dist/esm/controller.js.map +1 -1
- package/dist/esm/screen.js +221 -179
- package/dist/esm/screen.js.map +1 -1
- package/dist/esm/testing.js +160 -151
- package/dist/esm/testing.js.map +1 -1
- package/dist/types/config.d.ts +1 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/controller.d.ts +22 -43
- package/dist/types/controller.d.ts.map +1 -1
- package/dist/types/index.d.ts +14 -14
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/screen.d.ts +26 -37
- package/dist/types/screen.d.ts.map +1 -1
- package/dist/types/testing.d.ts +16 -0
- package/dist/types/testing.d.ts.map +1 -1
- package/dist/types/types.d.ts +244 -338
- package/dist/types/types.d.ts.map +1 -1
- package/dist/umd/smore-sdk.umd.js +595 -474
- package/dist/umd/smore-sdk.umd.js.map +1 -1
- package/dist/umd/smore-sdk.umd.min.js +1 -1
- package/dist/umd/smore-sdk.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/SmoreHost.cjs +0 -306
- package/dist/cjs/SmoreHost.cjs.map +0 -1
- package/dist/cjs/SmorePlayer.cjs +0 -229
- package/dist/cjs/SmorePlayer.cjs.map +0 -1
- package/dist/cjs/components/DirectionPad.cjs +0 -68
- package/dist/cjs/components/DirectionPad.cjs.map +0 -1
- package/dist/cjs/components/DirectionPad.module.css.cjs +0 -12
- package/dist/cjs/components/DirectionPad.module.css.cjs.map +0 -1
- package/dist/cjs/components/HoldButton.cjs +0 -57
- package/dist/cjs/components/HoldButton.cjs.map +0 -1
- package/dist/cjs/components/HoldButton.module.css.cjs +0 -12
- package/dist/cjs/components/HoldButton.module.css.cjs.map +0 -1
- package/dist/cjs/components/IframeGameBridge.cjs +0 -115
- package/dist/cjs/components/IframeGameBridge.cjs.map +0 -1
- package/dist/cjs/components/SwipeArea.cjs +0 -58
- package/dist/cjs/components/SwipeArea.cjs.map +0 -1
- package/dist/cjs/components/SwipeArea.module.css.cjs +0 -12
- package/dist/cjs/components/SwipeArea.module.css.cjs.map +0 -1
- package/dist/cjs/components/TapButton.cjs +0 -58
- package/dist/cjs/components/TapButton.cjs.map +0 -1
- package/dist/cjs/components/TapButton.module.css.cjs +0 -12
- package/dist/cjs/components/TapButton.module.css.cjs.map +0 -1
- package/dist/cjs/context/RoomProvider.cjs +0 -118
- package/dist/cjs/context/RoomProvider.cjs.map +0 -1
- package/dist/cjs/hooks/useExternalGames.cjs +0 -49
- package/dist/cjs/hooks/useExternalGames.cjs.map +0 -1
- package/dist/cjs/hooks/useGameHost.cjs +0 -206
- package/dist/cjs/hooks/useGameHost.cjs.map +0 -1
- package/dist/cjs/hooks/useGamePlayer.cjs +0 -134
- package/dist/cjs/hooks/useGamePlayer.cjs.map +0 -1
- package/dist/cjs/iframe/index.cjs +0 -260
- package/dist/cjs/iframe/index.cjs.map +0 -1
- package/dist/cjs/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.cjs +0 -33
- package/dist/cjs/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.cjs.map +0 -1
- package/dist/cjs/server/index.cjs +0 -45
- package/dist/cjs/server/index.cjs.map +0 -1
- package/dist/cjs/transport/DirectTransport.cjs +0 -23
- package/dist/cjs/transport/DirectTransport.cjs.map +0 -1
- package/dist/cjs/utils/connectionMonitor.cjs +0 -77
- package/dist/cjs/utils/connectionMonitor.cjs.map +0 -1
- package/dist/cjs/utils/preloadAssets.cjs +0 -66
- package/dist/cjs/utils/preloadAssets.cjs.map +0 -1
- package/dist/cjs/utils/serverTime.cjs +0 -43
- package/dist/cjs/utils/serverTime.cjs.map +0 -1
- package/dist/esm/SmoreHost.js +0 -304
- package/dist/esm/SmoreHost.js.map +0 -1
- package/dist/esm/SmorePlayer.js +0 -227
- package/dist/esm/SmorePlayer.js.map +0 -1
- package/dist/esm/components/DirectionPad.js +0 -66
- package/dist/esm/components/DirectionPad.js.map +0 -1
- package/dist/esm/components/DirectionPad.module.css.js +0 -8
- package/dist/esm/components/DirectionPad.module.css.js.map +0 -1
- package/dist/esm/components/HoldButton.js +0 -55
- package/dist/esm/components/HoldButton.js.map +0 -1
- package/dist/esm/components/HoldButton.module.css.js +0 -8
- package/dist/esm/components/HoldButton.module.css.js.map +0 -1
- package/dist/esm/components/IframeGameBridge.js +0 -113
- package/dist/esm/components/IframeGameBridge.js.map +0 -1
- package/dist/esm/components/SwipeArea.js +0 -56
- package/dist/esm/components/SwipeArea.js.map +0 -1
- package/dist/esm/components/SwipeArea.module.css.js +0 -8
- package/dist/esm/components/SwipeArea.module.css.js.map +0 -1
- package/dist/esm/components/TapButton.js +0 -56
- package/dist/esm/components/TapButton.js.map +0 -1
- package/dist/esm/components/TapButton.module.css.js +0 -8
- package/dist/esm/components/TapButton.module.css.js.map +0 -1
- package/dist/esm/context/RoomProvider.js +0 -109
- package/dist/esm/context/RoomProvider.js.map +0 -1
- package/dist/esm/hooks/useExternalGames.js +0 -47
- package/dist/esm/hooks/useExternalGames.js.map +0 -1
- package/dist/esm/hooks/useGameHost.js +0 -204
- package/dist/esm/hooks/useGameHost.js.map +0 -1
- package/dist/esm/hooks/useGamePlayer.js +0 -132
- package/dist/esm/hooks/useGamePlayer.js.map +0 -1
- package/dist/esm/iframe/index.js +0 -257
- package/dist/esm/iframe/index.js.map +0 -1
- package/dist/esm/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js +0 -29
- package/dist/esm/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
- package/dist/esm/server/index.js +0 -43
- package/dist/esm/server/index.js.map +0 -1
- package/dist/esm/transport/DirectTransport.js +0 -21
- package/dist/esm/transport/DirectTransport.js.map +0 -1
- package/dist/esm/utils/connectionMonitor.js +0 -75
- package/dist/esm/utils/connectionMonitor.js.map +0 -1
- package/dist/esm/utils/preloadAssets.js +0 -63
- package/dist/esm/utils/preloadAssets.js.map +0 -1
- package/dist/esm/utils/serverTime.js +0 -41
- package/dist/esm/utils/serverTime.js.map +0 -1
- package/dist/types/SmoreHost.d.ts +0 -187
- package/dist/types/SmoreHost.d.ts.map +0 -1
- package/dist/types/SmorePlayer.d.ts +0 -146
- package/dist/types/SmorePlayer.d.ts.map +0 -1
- package/dist/types/components/DirectionPad.d.ts +0 -21
- package/dist/types/components/DirectionPad.d.ts.map +0 -1
- package/dist/types/components/HoldButton.d.ts +0 -22
- package/dist/types/components/HoldButton.d.ts.map +0 -1
- package/dist/types/components/IframeGameBridge.d.ts +0 -38
- package/dist/types/components/IframeGameBridge.d.ts.map +0 -1
- package/dist/types/components/SwipeArea.d.ts +0 -19
- package/dist/types/components/SwipeArea.d.ts.map +0 -1
- package/dist/types/components/TapButton.d.ts +0 -19
- package/dist/types/components/TapButton.d.ts.map +0 -1
- package/dist/types/components/index.d.ts +0 -6
- package/dist/types/components/index.d.ts.map +0 -1
- package/dist/types/context/RoomProvider.d.ts +0 -69
- package/dist/types/context/RoomProvider.d.ts.map +0 -1
- package/dist/types/context/index.d.ts +0 -3
- package/dist/types/context/index.d.ts.map +0 -1
- package/dist/types/dev/DevSimulator.d.ts +0 -31
- package/dist/types/dev/DevSimulator.d.ts.map +0 -1
- package/dist/types/dev/index.d.ts +0 -2
- package/dist/types/dev/index.d.ts.map +0 -1
- package/dist/types/hooks/index.d.ts +0 -7
- package/dist/types/hooks/index.d.ts.map +0 -1
- package/dist/types/hooks/useExternalGames.d.ts +0 -32
- package/dist/types/hooks/useExternalGames.d.ts.map +0 -1
- package/dist/types/hooks/useGameHost.d.ts +0 -67
- package/dist/types/hooks/useGameHost.d.ts.map +0 -1
- package/dist/types/hooks/useGamePlayer.d.ts +0 -55
- package/dist/types/hooks/useGamePlayer.d.ts.map +0 -1
- package/dist/types/iframe/IframeRoomProvider.d.ts +0 -31
- package/dist/types/iframe/IframeRoomProvider.d.ts.map +0 -1
- package/dist/types/iframe/index.d.ts +0 -18
- package/dist/types/iframe/index.d.ts.map +0 -1
- package/dist/types/iframe/vanilla-entry.d.ts +0 -7
- package/dist/types/iframe/vanilla-entry.d.ts.map +0 -1
- package/dist/types/iframe/vanilla.d.ts +0 -49
- package/dist/types/iframe/vanilla.d.ts.map +0 -1
- package/dist/types/server/createGameRelay.d.ts +0 -26
- package/dist/types/server/createGameRelay.d.ts.map +0 -1
- package/dist/types/server/index.d.ts +0 -3
- package/dist/types/server/index.d.ts.map +0 -1
- package/dist/types/utils/connectionMonitor.d.ts +0 -57
- package/dist/types/utils/connectionMonitor.d.ts.map +0 -1
- package/dist/types/utils/index.d.ts +0 -7
- package/dist/types/utils/index.d.ts.map +0 -1
- package/dist/types/utils/preloadAssets.d.ts +0 -29
- package/dist/types/utils/preloadAssets.d.ts.map +0 -1
- package/dist/types/utils/serverTime.d.ts +0 -28
- package/dist/types/utils/serverTime.d.ts.map +0 -1
- package/dist/umd/smore-sdk-iframe.umd.js +0 -266
- package/dist/umd/smore-sdk-iframe.umd.js.map +0 -1
- package/dist/umd/smore-sdk-iframe.umd.min.js +0 -2
- package/dist/umd/smore-sdk-iframe.umd.min.js.map +0 -1
- package/dist/umd/smore-sdk-vanilla.umd.js +0 -1275
- package/dist/umd/smore-sdk-vanilla.umd.js.map +0 -1
- package/dist/umd/smore-sdk-vanilla.umd.min.js +0 -2
- package/dist/umd/smore-sdk-vanilla.umd.min.js.map +0 -1
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SmorePlayer - Unified Player-side class for the S'MORE SDK (AirConsole style)
|
|
3
|
-
*
|
|
4
|
-
* Works in any environment: React, Phaser, Vanilla JS.
|
|
5
|
-
* Automatically detects iframe vs bundled environment.
|
|
6
|
-
*
|
|
7
|
-
* @example Iframe game (auto-detection)
|
|
8
|
-
* ```ts
|
|
9
|
-
* const player = new SmorePlayer({
|
|
10
|
-
* onReady: () => console.log('Ready! My index:', player.myIndex),
|
|
11
|
-
* listeners: {
|
|
12
|
-
* 'phase-update': (data) => handlePhaseUpdate(data),
|
|
13
|
-
* },
|
|
14
|
-
* });
|
|
15
|
-
*
|
|
16
|
-
* // Later
|
|
17
|
-
* player.send('tap', { timestamp: Date.now() });
|
|
18
|
-
* ```
|
|
19
|
-
*
|
|
20
|
-
* @example Bundled game (direct socket)
|
|
21
|
-
* ```ts
|
|
22
|
-
* const player = new SmorePlayer({
|
|
23
|
-
* socket,
|
|
24
|
-
* roomCode: 'ABCD',
|
|
25
|
-
* myIndex: 0,
|
|
26
|
-
* isLeader: true,
|
|
27
|
-
* listeners: { ... },
|
|
28
|
-
* });
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
import type { Socket } from 'socket.io-client';
|
|
32
|
-
/**
|
|
33
|
-
* Player information.
|
|
34
|
-
*/
|
|
35
|
-
export interface SmorePlayerInfo {
|
|
36
|
-
/** Player index (0, 1, 2, ...) */
|
|
37
|
-
playerIndex: number;
|
|
38
|
-
/** Player's chosen nickname */
|
|
39
|
-
nickname: string;
|
|
40
|
-
/** Whether player is currently connected */
|
|
41
|
-
connected: boolean;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Configuration for SmorePlayer constructor.
|
|
45
|
-
*/
|
|
46
|
-
export interface SmorePlayerConfig {
|
|
47
|
-
/** Called when the player is ready and initialized (iframe games only) */
|
|
48
|
-
onReady?: () => void;
|
|
49
|
-
/** Called when another player joins the room */
|
|
50
|
-
onPlayerJoin?: (playerIndex: number) => void;
|
|
51
|
-
/** Called when another player leaves the room */
|
|
52
|
-
onPlayerLeave?: (playerIndex: number) => void;
|
|
53
|
-
/**
|
|
54
|
-
* Event listeners for specific events.
|
|
55
|
-
* Keys are event names (no colons), values are handler functions.
|
|
56
|
-
* Handler receives (data) only - player side doesn't need playerIndex.
|
|
57
|
-
*/
|
|
58
|
-
listeners?: Record<string, (data: any) => void>;
|
|
59
|
-
/** Socket.IO socket instance (bundled games only) */
|
|
60
|
-
socket?: Socket;
|
|
61
|
-
/** Room code (bundled games only) */
|
|
62
|
-
roomCode?: string;
|
|
63
|
-
/** My player index (bundled games only) */
|
|
64
|
-
myIndex?: number;
|
|
65
|
-
/** Am I the leader? (bundled games only) */
|
|
66
|
-
isLeader?: boolean;
|
|
67
|
-
/** Parent window origin for postMessage validation (iframe games) */
|
|
68
|
-
parentOrigin?: string;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* SmorePlayer - Main player-side class for game development.
|
|
72
|
-
*
|
|
73
|
-
* Automatically detects iframe vs bundled environment:
|
|
74
|
-
* - Iframe: Uses PostMessageTransport, waits for smore:init from parent
|
|
75
|
-
* - Bundled: Uses DirectTransport with provided socket
|
|
76
|
-
*/
|
|
77
|
-
export declare class SmorePlayer {
|
|
78
|
-
private transport;
|
|
79
|
-
private config;
|
|
80
|
-
private _roomCode;
|
|
81
|
-
private _myIndex;
|
|
82
|
-
private _isLeader;
|
|
83
|
-
private _isReady;
|
|
84
|
-
private _isDestroyed;
|
|
85
|
-
private boundMessageHandler;
|
|
86
|
-
private registeredHandlers;
|
|
87
|
-
constructor(config?: SmorePlayerConfig);
|
|
88
|
-
private initBundled;
|
|
89
|
-
private initIframe;
|
|
90
|
-
private setupEventHandlers;
|
|
91
|
-
private registerHandler;
|
|
92
|
-
/**
|
|
93
|
-
* Get my player index (0, 1, 2, ...).
|
|
94
|
-
*/
|
|
95
|
-
get myIndex(): number;
|
|
96
|
-
/**
|
|
97
|
-
* Check if I am the room leader.
|
|
98
|
-
*/
|
|
99
|
-
get isLeader(): boolean;
|
|
100
|
-
/**
|
|
101
|
-
* Get the room code.
|
|
102
|
-
*/
|
|
103
|
-
get roomCode(): string;
|
|
104
|
-
/**
|
|
105
|
-
* Check if the player is initialized and ready.
|
|
106
|
-
*/
|
|
107
|
-
get isReady(): boolean;
|
|
108
|
-
/**
|
|
109
|
-
* Send an event to the host.
|
|
110
|
-
*
|
|
111
|
-
* @param event - Event name (no colons allowed)
|
|
112
|
-
* @param data - Optional data payload
|
|
113
|
-
*
|
|
114
|
-
* @example
|
|
115
|
-
* ```ts
|
|
116
|
-
* player.send('tap', { timestamp: Date.now() });
|
|
117
|
-
* player.send('answer', { choice: 2 });
|
|
118
|
-
* ```
|
|
119
|
-
*/
|
|
120
|
-
send(event: string, data?: any): void;
|
|
121
|
-
/**
|
|
122
|
-
* Add a listener for a specific event after construction.
|
|
123
|
-
*
|
|
124
|
-
* @param event - Event name (no colons allowed)
|
|
125
|
-
* @param handler - Handler function (data) => void
|
|
126
|
-
* @returns Cleanup function to remove the listener
|
|
127
|
-
*
|
|
128
|
-
* @example
|
|
129
|
-
* ```ts
|
|
130
|
-
* const cleanup = player.on('phase-update', (data) => {
|
|
131
|
-
* console.log('New phase:', data.phase);
|
|
132
|
-
* });
|
|
133
|
-
*
|
|
134
|
-
* // Later
|
|
135
|
-
* cleanup();
|
|
136
|
-
* ```
|
|
137
|
-
*/
|
|
138
|
-
on(event: string, handler: (data: any) => void): () => void;
|
|
139
|
-
/**
|
|
140
|
-
* Clean up all resources.
|
|
141
|
-
* Call this when unmounting/destroying the game.
|
|
142
|
-
*/
|
|
143
|
-
destroy(): void;
|
|
144
|
-
private ensureReady;
|
|
145
|
-
}
|
|
146
|
-
//# sourceMappingURL=SmorePlayer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SmorePlayer.d.ts","sourceRoot":"","sources":["../../src/SmorePlayer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAsC/C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAGhC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,gDAAgD;IAChD,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7C,iDAAiD;IACjD,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;IAIhD,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IAInB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD;;;;;;GAMG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,mBAAmB,CAA4C;IACvE,OAAO,CAAC,kBAAkB,CAAgE;gBAE9E,MAAM,GAAE,iBAAsB;IAwB1C,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,UAAU;IAkDlB,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAMD;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAMrC;;;;;;;;;;;;;;;;OAgBG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAgB3D;;;OAGG;IACH,OAAO,IAAI,IAAI;IA6Bf,OAAO,CAAC,WAAW;CAQpB"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* S'MORE Game SDK - DirectionPad Component
|
|
3
|
-
*
|
|
4
|
-
* 4-direction or 2-direction control pad
|
|
5
|
-
*/
|
|
6
|
-
import type { DirectionPadProps } from '../types';
|
|
7
|
-
/**
|
|
8
|
-
* DirectionPad - For directional input
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```tsx
|
|
12
|
-
* // 4 directions
|
|
13
|
-
* <DirectionPad onDirection={(dir) => send('move', { direction: dir })} />
|
|
14
|
-
*
|
|
15
|
-
* // Left/Right only
|
|
16
|
-
* <DirectionPad leftRightOnly onDirection={(dir) => send('move', { direction: dir })} />
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
export declare function DirectionPad({ onDirection, leftRightOnly, upDownOnly, className, }: DirectionPadProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
-
export default DirectionPad;
|
|
21
|
-
//# sourceMappingURL=DirectionPad.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DirectionPad.d.ts","sourceRoot":"","sources":["../../../src/components/DirectionPad.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGlD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,EAC3B,WAAW,EACX,aAAqB,EACrB,UAAkB,EAClB,SAAS,GACV,EAAE,iBAAiB,2CAwEnB;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* S'MORE Game SDK - HoldButton Component
|
|
3
|
-
*
|
|
4
|
-
* Button that detects hold start/end events
|
|
5
|
-
*/
|
|
6
|
-
import type { HoldButtonProps } from '../types';
|
|
7
|
-
/**
|
|
8
|
-
* HoldButton - For hold/release input patterns
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```tsx
|
|
12
|
-
* <HoldButton
|
|
13
|
-
* onHoldStart={() => send('charge', { type: 'start' })}
|
|
14
|
-
* onHoldEnd={() => send('charge', { type: 'end' })}
|
|
15
|
-
* >
|
|
16
|
-
* HOLD
|
|
17
|
-
* </HoldButton>
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export declare function HoldButton({ onHoldStart, onHoldEnd, children, className, disabled, }: HoldButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
-
export default HoldButton;
|
|
22
|
-
//# sourceMappingURL=HoldButton.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HoldButton.d.ts","sourceRoot":"","sources":["../../../src/components/HoldButton.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGhD;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAgB,GACjB,EAAE,eAAe,2CAiDjB;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IframeGameBridge - Parent-side bridge between iframe and Socket.IO.
|
|
3
|
-
*
|
|
4
|
-
* Renders an iframe loading the external game URL.
|
|
5
|
-
* Bridges postMessage ↔ Socket.IO:
|
|
6
|
-
* - iframe sends `smore:emit` → bridge relays to `socket.emit()` as-is
|
|
7
|
-
* - socket receives events → bridge relays to iframe via `smore:event` as-is
|
|
8
|
-
*
|
|
9
|
-
* No event translation is performed; events are passed through unchanged.
|
|
10
|
-
*
|
|
11
|
-
* Used by GameOverlay (host) and GameView (player) when the game type is 'external'.
|
|
12
|
-
*/
|
|
13
|
-
import React from 'react';
|
|
14
|
-
import type { Socket } from 'socket.io-client';
|
|
15
|
-
interface Player {
|
|
16
|
-
playerIndex: number;
|
|
17
|
-
name: string;
|
|
18
|
-
connected?: boolean;
|
|
19
|
-
}
|
|
20
|
-
export interface IframeGameBridgeProps {
|
|
21
|
-
gameId: string;
|
|
22
|
-
url: string;
|
|
23
|
-
socket: Socket;
|
|
24
|
-
side: 'host' | 'player';
|
|
25
|
-
roomCode: string;
|
|
26
|
-
players: Player[];
|
|
27
|
-
leaderId: string | null;
|
|
28
|
-
myIndex?: number;
|
|
29
|
-
isLeader?: boolean;
|
|
30
|
-
onReady?: () => void;
|
|
31
|
-
onLoaded?: () => void;
|
|
32
|
-
onGameOver?: (results: any) => void;
|
|
33
|
-
style?: React.CSSProperties;
|
|
34
|
-
className?: string;
|
|
35
|
-
}
|
|
36
|
-
export declare const IframeGameBridge: React.FC<IframeGameBridgeProps>;
|
|
37
|
-
export {};
|
|
38
|
-
//# sourceMappingURL=IframeGameBridge.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IframeGameBridge.d.ts","sourceRoot":"","sources":["../../../src/components/IframeGameBridge.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAyC,MAAM,OAAO,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAI/C,UAAU,MAAM;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACpC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA+H5D,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* S'MORE Game SDK - SwipeArea Component
|
|
3
|
-
*
|
|
4
|
-
* Detects swipe gestures
|
|
5
|
-
*/
|
|
6
|
-
import type { SwipeAreaProps } from '../types';
|
|
7
|
-
/**
|
|
8
|
-
* SwipeArea - For swipe gesture input
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```tsx
|
|
12
|
-
* <SwipeArea onSwipe={(dir) => send('swipe', { direction: dir })}>
|
|
13
|
-
* <div>Swipe here!</div>
|
|
14
|
-
* </SwipeArea>
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
export declare function SwipeArea({ onSwipe, threshold, children, className, }: SwipeAreaProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
-
export default SwipeArea;
|
|
19
|
-
//# sourceMappingURL=SwipeArea.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SwipeArea.d.ts","sourceRoot":"","sources":["../../../src/components/SwipeArea.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,SAAc,EACd,QAAQ,EACR,SAAS,GACV,EAAE,cAAc,2CAqDhB;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* S'MORE Game SDK - TapButton Component
|
|
3
|
-
*
|
|
4
|
-
* Optimized touch button with haptic feedback
|
|
5
|
-
*/
|
|
6
|
-
import type { TapButtonProps } from '../types';
|
|
7
|
-
/**
|
|
8
|
-
* TapButton - Optimized for mobile touch input
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```tsx
|
|
12
|
-
* <TapButton onTap={() => send('tap')}>
|
|
13
|
-
* TAP!
|
|
14
|
-
* </TapButton>
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
export declare function TapButton({ onTap, children, className, disabled, }: TapButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
-
export default TapButton;
|
|
19
|
-
//# sourceMappingURL=TapButton.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TapButton.d.ts","sourceRoot":"","sources":["../../../src/components/TapButton.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,SAAS,EACT,QAAgB,GACjB,EAAE,cAAc,2CAmDhB;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* RoomProvider - SDK Room Context
|
|
3
|
-
*
|
|
4
|
-
* Foundation context that all other SDK hooks depend on.
|
|
5
|
-
* Provides room state (players, roomCode, leaderId) for both host and player sides.
|
|
6
|
-
*
|
|
7
|
-
* Also provides a Transport abstraction via TransportContext.
|
|
8
|
-
* - HostRoomProvider / PlayerRoomProvider create a DirectTransport from the socket.
|
|
9
|
-
* - IframeRoomProvider (external) provides a PostMessageTransport.
|
|
10
|
-
*
|
|
11
|
-
* Usage:
|
|
12
|
-
* - Host: <HostRoomProvider roomCode={...} players={...} leaderId={...} socket={...}>
|
|
13
|
-
* - Player: <PlayerRoomProvider roomCode={...} players={...} leaderId={...} myIndex={...} isLeader={...} socket={...} isConnected={...}>
|
|
14
|
-
*/
|
|
15
|
-
import React from 'react';
|
|
16
|
-
import type { Player } from '@smoregg/shared';
|
|
17
|
-
import type { Socket } from 'socket.io-client';
|
|
18
|
-
import type { Transport } from '../transport/types';
|
|
19
|
-
declare const TransportContext: React.Context<Transport | null>;
|
|
20
|
-
export declare function useTransport(): Transport;
|
|
21
|
-
export { TransportContext };
|
|
22
|
-
export interface RoomState {
|
|
23
|
-
roomCode: string;
|
|
24
|
-
players: Player[];
|
|
25
|
-
connectedPlayers: Player[];
|
|
26
|
-
leaderId: string | null;
|
|
27
|
-
}
|
|
28
|
-
export interface HostRoomState extends RoomState {
|
|
29
|
-
socket: Socket;
|
|
30
|
-
}
|
|
31
|
-
export interface PlayerRoomState extends RoomState {
|
|
32
|
-
myIndex: number;
|
|
33
|
-
isLeader: boolean;
|
|
34
|
-
socket: Socket;
|
|
35
|
-
isConnected: boolean;
|
|
36
|
-
}
|
|
37
|
-
export interface RoomContextValue {
|
|
38
|
-
roomCode: string;
|
|
39
|
-
players: Player[];
|
|
40
|
-
connectedPlayers: Player[];
|
|
41
|
-
leaderId: string | null;
|
|
42
|
-
side: 'host' | 'player';
|
|
43
|
-
host: HostRoomState | null;
|
|
44
|
-
player: PlayerRoomState | null;
|
|
45
|
-
}
|
|
46
|
-
export declare const RoomContext: React.Context<RoomContextValue | null>;
|
|
47
|
-
interface HostRoomProviderProps {
|
|
48
|
-
roomCode: string;
|
|
49
|
-
players: Player[];
|
|
50
|
-
leaderId: string | null;
|
|
51
|
-
socket: Socket;
|
|
52
|
-
children: React.ReactNode;
|
|
53
|
-
}
|
|
54
|
-
export declare const HostRoomProvider: React.FC<HostRoomProviderProps>;
|
|
55
|
-
interface PlayerRoomProviderProps {
|
|
56
|
-
roomCode: string;
|
|
57
|
-
players: Player[];
|
|
58
|
-
leaderId: string | null;
|
|
59
|
-
myIndex: number;
|
|
60
|
-
isLeader: boolean;
|
|
61
|
-
socket: Socket;
|
|
62
|
-
isConnected: boolean;
|
|
63
|
-
children: React.ReactNode;
|
|
64
|
-
}
|
|
65
|
-
export declare const PlayerRoomProvider: React.FC<PlayerRoomProviderProps>;
|
|
66
|
-
export declare function useRoom(): RoomContextValue;
|
|
67
|
-
export declare function useHostRoom(): HostRoomState;
|
|
68
|
-
export declare function usePlayerRoom(): PlayerRoomState;
|
|
69
|
-
//# sourceMappingURL=RoomProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RoomProvider.d.ts","sourceRoot":"","sources":["../../../src/context/RoomProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAA6C,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAKpD,QAAA,MAAM,gBAAgB,iCAAwC,CAAC;AAE/D,wBAAgB,YAAY,IAAI,SAAS,CAMxC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAI5B,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;CAChC;AAID,eAAO,MAAM,WAAW,wCAA+C,CAAC;AAIxE,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAqC5D,CAAC;AAIF,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAiDhE,CAAC;AAIF,wBAAgB,OAAO,IAAI,gBAAgB,CAM1C;AAED,wBAAgB,WAAW,IAAI,aAAa,CAM3C;AAED,wBAAgB,aAAa,IAAI,eAAe,CAM/C"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { HostRoomProvider, PlayerRoomProvider, useRoom, useHostRoom, usePlayerRoom, useTransport, TransportContext, } from './RoomProvider';
|
|
2
|
-
export type { RoomState, HostRoomState, PlayerRoomState, RoomContextValue, } from './RoomProvider';
|
|
3
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,EACP,WAAW,EACX,aAAa,EACb,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,SAAS,EACT,aAAa,EACb,eAAe,EACf,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DevSimulator - Local development tool for testing iframe games without a server.
|
|
3
|
-
*
|
|
4
|
-
* Renders a host iframe and N player iframes side by side.
|
|
5
|
-
* Routes postMessage between iframes directly (no Socket.IO needed).
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* ```tsx
|
|
9
|
-
* import { DevSimulator } from '@smoregg/sdk/dev';
|
|
10
|
-
*
|
|
11
|
-
* function App() {
|
|
12
|
-
* return (
|
|
13
|
-
* <DevSimulator
|
|
14
|
-
* hostUrl="http://localhost:3000/screen.html"
|
|
15
|
-
* playerUrl="http://localhost:3000/controller.html"
|
|
16
|
-
* playerCount={2}
|
|
17
|
-
* />
|
|
18
|
-
* );
|
|
19
|
-
* }
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
import React from 'react';
|
|
23
|
-
interface DevSimulatorProps {
|
|
24
|
-
hostUrl: string;
|
|
25
|
-
playerUrl: string;
|
|
26
|
-
playerCount?: number;
|
|
27
|
-
roomCode?: string;
|
|
28
|
-
}
|
|
29
|
-
export declare const DevSimulator: React.FC<DevSimulatorProps>;
|
|
30
|
-
export {};
|
|
31
|
-
//# sourceMappingURL=DevSimulator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DevSimulator.d.ts","sourceRoot":"","sources":["../../../src/dev/DevSimulator.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAIxE,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAuIpD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dev/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { useGameHost } from './useGameHost';
|
|
2
|
-
export type { UseGameHostConfig, UseGameHostReturn } from './useGameHost';
|
|
3
|
-
export { useGamePlayer } from './useGamePlayer';
|
|
4
|
-
export type { UseGamePlayerConfig, UseGamePlayerReturn } from './useGamePlayer';
|
|
5
|
-
export { useExternalGames } from './useExternalGames';
|
|
6
|
-
export type { ExternalGameMetadata, UseExternalGamesConfig } from './useExternalGames';
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useExternalGames - Fetches external games from the server API.
|
|
3
|
-
*
|
|
4
|
-
* Returns a list of GameMetadata-compatible objects for external (iframe) games.
|
|
5
|
-
* Consumers merge this with their local GAMES array.
|
|
6
|
-
*/
|
|
7
|
-
export interface ExternalGameMetadata {
|
|
8
|
-
id: string;
|
|
9
|
-
title: string;
|
|
10
|
-
description: string;
|
|
11
|
-
minPlayers: number;
|
|
12
|
-
maxPlayers: number;
|
|
13
|
-
thumbnail: string;
|
|
14
|
-
categories: string[];
|
|
15
|
-
type: 'external';
|
|
16
|
-
hostUrl: string | null;
|
|
17
|
-
playerUrl: string | null;
|
|
18
|
-
available: boolean;
|
|
19
|
-
rating: number;
|
|
20
|
-
heroRequired: boolean;
|
|
21
|
-
}
|
|
22
|
-
export interface UseExternalGamesConfig {
|
|
23
|
-
serverUrl: string;
|
|
24
|
-
enabled?: boolean;
|
|
25
|
-
}
|
|
26
|
-
export declare function useExternalGames(config: UseExternalGamesConfig): {
|
|
27
|
-
games: ExternalGameMetadata[];
|
|
28
|
-
loading: boolean;
|
|
29
|
-
error: string | null;
|
|
30
|
-
refresh: () => void;
|
|
31
|
-
};
|
|
32
|
-
//# sourceMappingURL=useExternalGames.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useExternalGames.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExternalGames.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG;IAChE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAiDA"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import type { Player } from '../types';
|
|
2
|
-
export interface UseGameHostConfig<T extends Record<string, any> = Record<string, any>> {
|
|
3
|
-
/** Called when the host is ready and connected. */
|
|
4
|
-
onReady?: () => void;
|
|
5
|
-
/** Called when a player joins the room. */
|
|
6
|
-
onPlayerJoin?: (playerIndex: number) => void;
|
|
7
|
-
/** Called when a player leaves the room. */
|
|
8
|
-
onPlayerLeave?: (playerIndex: number) => void;
|
|
9
|
-
/**
|
|
10
|
-
* Event listeners for player inputs.
|
|
11
|
-
* Keys are event names (without prefix), values are handler functions.
|
|
12
|
-
* Handler receives (playerIndex, data) where playerIndex identifies the player (0, 1, 2, ...).
|
|
13
|
-
*/
|
|
14
|
-
listeners?: {
|
|
15
|
-
[K in keyof T]?: (playerIndex: number, data: T[K]) => void;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* Optional connection monitoring (AirConsole pattern).
|
|
19
|
-
* When enabled, automatically pauses/resumes game on connection issues.
|
|
20
|
-
*/
|
|
21
|
-
connectionMonitor?: {
|
|
22
|
-
/** Enable connection monitoring */
|
|
23
|
-
enabled: boolean;
|
|
24
|
-
/** Called when connection becomes unstable */
|
|
25
|
-
onPause: () => void;
|
|
26
|
-
/** Called after connection restores and countdown completes */
|
|
27
|
-
onResume: () => void;
|
|
28
|
-
/** Called during resume countdown with seconds remaining */
|
|
29
|
-
onCountdown?: (secondsLeft: number) => void;
|
|
30
|
-
/** Latency threshold to trigger pause (ms), default 2000 */
|
|
31
|
-
latencyThreshold?: number;
|
|
32
|
-
/** Resume countdown duration (ms), default 3000 */
|
|
33
|
-
resumeCountdown?: number;
|
|
34
|
-
};
|
|
35
|
-
/** Called when any device's custom state changes (AirConsole pattern) */
|
|
36
|
-
onCustomStateChange?: (playerIndex: number, state: Record<string, any>) => void;
|
|
37
|
-
}
|
|
38
|
-
export interface UseGameHostReturn {
|
|
39
|
-
/** List of all players in the room. */
|
|
40
|
-
players: Player[];
|
|
41
|
-
/** The player index of the room leader (-1 if no leader). */
|
|
42
|
-
leaderIndex: number;
|
|
43
|
-
/** The room code. */
|
|
44
|
-
roomCode: string;
|
|
45
|
-
/**
|
|
46
|
-
* Emit an event to all players.
|
|
47
|
-
* Event name must not contain colons.
|
|
48
|
-
*/
|
|
49
|
-
emit: (event: string, data?: any) => void;
|
|
50
|
-
/**
|
|
51
|
-
* Send an event to a specific player.
|
|
52
|
-
* Event name must not contain colons.
|
|
53
|
-
*/
|
|
54
|
-
sendToPlayer: (playerIndex: number, event: string, data?: any) => void;
|
|
55
|
-
/** Signal game over with optional results. */
|
|
56
|
-
gameOver: (results?: any) => void;
|
|
57
|
-
/** Return all players to lobby. */
|
|
58
|
-
returnToLobby: () => void;
|
|
59
|
-
/** Set custom device state (AirConsole pattern) - merges with existing state */
|
|
60
|
-
setCustomState: (state: Record<string, any>) => void;
|
|
61
|
-
/** Whether game is currently paused due to connection issues (only if connectionMonitor enabled) */
|
|
62
|
-
isPaused: boolean;
|
|
63
|
-
/** Current network latency in ms (only if connectionMonitor enabled) */
|
|
64
|
-
latency: number;
|
|
65
|
-
}
|
|
66
|
-
export declare function useGameHost<T extends Record<string, any> = Record<string, any>>(config?: UseGameHostConfig<T>): UseGameHostReturn;
|
|
67
|
-
//# sourceMappingURL=useGameHost.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useGameHost.d.ts","sourceRoot":"","sources":["../../../src/hooks/useGameHost.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAkDvC,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACpF,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7C,4CAA4C;IAC5C,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C;;;;OAIG;IACH,SAAS,CAAC,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;KAAE,CAAC;IAE3E;;;OAGG;IACH,iBAAiB,CAAC,EAAE;QAClB,mCAAmC;QACnC,OAAO,EAAE,OAAO,CAAC;QACjB,8CAA8C;QAC9C,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,+DAA+D;QAC/D,QAAQ,EAAE,MAAM,IAAI,CAAC;QACrB,4DAA4D;QAC5D,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;QAC5C,4DAA4D;QAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,mDAAmD;QACnD,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IAEF,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CACjF;AAED,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IAEpB,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAE1C;;;OAGG;IACH,YAAY,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAEvE,8CAA8C;IAC9C,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAElC,mCAAmC;IACnC,aAAa,EAAE,MAAM,IAAI,CAAC;IAE1B,gFAAgF;IAChF,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IAErD,oGAAoG;IACpG,QAAQ,EAAE,OAAO,CAAC;IAElB,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7E,MAAM,GAAE,iBAAiB,CAAC,CAAC,CAAM,GAChC,iBAAiB,CA+OnB"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import type { Player } from '@smoregg/shared';
|
|
2
|
-
export interface UseGamePlayerConfig<T = Record<string, any>> {
|
|
3
|
-
/** Called when smore:ready is received */
|
|
4
|
-
onReady?: () => void;
|
|
5
|
-
/** Called when a player joins */
|
|
6
|
-
onPlayerJoin?: (player: Player) => void;
|
|
7
|
-
/** Called when a player leaves */
|
|
8
|
-
onPlayerLeave?: (playerIndex: number) => void;
|
|
9
|
-
/** Custom event listeners (event name -> handler) */
|
|
10
|
-
listeners?: {
|
|
11
|
-
[K in keyof T]?: (data: T[K]) => void;
|
|
12
|
-
};
|
|
13
|
-
/** Called when any device's custom state changes (AirConsole pattern) */
|
|
14
|
-
onCustomStateChange?: (playerIndex: number, state: Record<string, any>) => void;
|
|
15
|
-
/**
|
|
16
|
-
* Optional connection monitoring (AirConsole pattern).
|
|
17
|
-
* When enabled, automatically pauses/resumes game on connection issues.
|
|
18
|
-
*/
|
|
19
|
-
connectionMonitor?: {
|
|
20
|
-
/** Enable connection monitoring */
|
|
21
|
-
enabled: boolean;
|
|
22
|
-
/** Called when connection becomes unstable */
|
|
23
|
-
onPause: () => void;
|
|
24
|
-
/** Called after connection restores and countdown completes */
|
|
25
|
-
onResume: () => void;
|
|
26
|
-
/** Called during resume countdown with seconds remaining */
|
|
27
|
-
onCountdown?: (secondsLeft: number) => void;
|
|
28
|
-
/** Latency threshold to trigger pause (ms), default 2000 */
|
|
29
|
-
latencyThreshold?: number;
|
|
30
|
-
/** Resume countdown duration (ms), default 3000 */
|
|
31
|
-
resumeCountdown?: number;
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
export interface UseGamePlayerReturn {
|
|
35
|
-
/** All players in the room */
|
|
36
|
-
players: Player[];
|
|
37
|
-
/** Leader player's session ID */
|
|
38
|
-
leaderId: string | null;
|
|
39
|
-
/** Room code */
|
|
40
|
-
roomCode: string;
|
|
41
|
-
/** My player index (0, 1, 2, ...) */
|
|
42
|
-
myIndex: number;
|
|
43
|
-
/** Am I the leader? */
|
|
44
|
-
isLeader: boolean;
|
|
45
|
-
/** Emit event to host (event name must not contain ':') */
|
|
46
|
-
emit: (event: string, data?: any) => void;
|
|
47
|
-
/** Set custom device state (AirConsole pattern) - merges with existing state */
|
|
48
|
-
setCustomState: (state: Record<string, any>) => void;
|
|
49
|
-
/** Whether game is currently paused due to connection issues (only if connectionMonitor enabled) */
|
|
50
|
-
isPaused: boolean;
|
|
51
|
-
/** Current network latency in ms (only if connectionMonitor enabled) */
|
|
52
|
-
latency: number;
|
|
53
|
-
}
|
|
54
|
-
export declare function useGamePlayer<T = Record<string, any>>(config?: UseGamePlayerConfig<T>): UseGamePlayerReturn;
|
|
55
|
-
//# sourceMappingURL=useGamePlayer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useGamePlayer.d.ts","sourceRoot":"","sources":["../../../src/hooks/useGamePlayer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA0B9C,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC1D,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,iCAAiC;IACjC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,kCAAkC;IAClC,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,qDAAqD;IACrD,SAAS,CAAC,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;KAAE,CAAC;IACtD,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IAChF;;;OAGG;IACH,iBAAiB,CAAC,EAAE;QAClB,mCAAmC;QACnC,OAAO,EAAE,OAAO,CAAC;QACjB,8CAA8C;QAC9C,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,+DAA+D;QAC/D,QAAQ,EAAE,MAAM,IAAI,CAAC;QACrB,4DAA4D;QAC5D,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;QAC5C,4DAA4D;QAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,mDAAmD;QACnD,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1C,gFAAgF;IAChF,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACrD,oGAAoG;IACpG,QAAQ,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnD,MAAM,GAAE,mBAAmB,CAAC,CAAC,CAAM,GAClC,mBAAmB,CAkJrB"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IframeRoomProvider - Entry point for external (iframe-hosted) games.
|
|
3
|
-
*
|
|
4
|
-
* Usage inside an external game's iframe:
|
|
5
|
-
* ```tsx
|
|
6
|
-
* import { IframeRoomProvider } from '@smoregg/sdk/iframe';
|
|
7
|
-
* import { useGameHost } from '@smoregg/sdk/iframe';
|
|
8
|
-
*
|
|
9
|
-
* function App() {
|
|
10
|
-
* return (
|
|
11
|
-
* <IframeRoomProvider>
|
|
12
|
-
* <MyGame />
|
|
13
|
-
* </IframeRoomProvider>
|
|
14
|
-
* );
|
|
15
|
-
* }
|
|
16
|
-
* ```
|
|
17
|
-
*
|
|
18
|
-
* Lifecycle:
|
|
19
|
-
* 1. Mount → sends `smore:ready` to parent
|
|
20
|
-
* 2. Receives `smore:init` from parent with room state
|
|
21
|
-
* 3. Creates PostMessageTransport
|
|
22
|
-
* 4. Renders children with RoomContext + TransportContext
|
|
23
|
-
*/
|
|
24
|
-
import React from 'react';
|
|
25
|
-
interface IframeRoomProviderProps {
|
|
26
|
-
children: React.ReactNode;
|
|
27
|
-
parentOrigin?: string;
|
|
28
|
-
}
|
|
29
|
-
export declare const IframeRoomProvider: React.FC<IframeRoomProviderProps>;
|
|
30
|
-
export {};
|
|
31
|
-
//# sourceMappingURL=IframeRoomProvider.d.ts.map
|