@gamepark/react-game 7.5.3 → 7.5.8

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.
@@ -0,0 +1,31 @@
1
+ import { FC, PropsWithChildren, ReactNode } from 'react';
2
+ export type GameOption = {
3
+ key: string;
4
+ label: string;
5
+ type: 'boolean';
6
+ };
7
+ /**
8
+ * A single entry in the DevToolsHub panel.
9
+ * Use this instead of raw `<button>` when adding custom tools via `children`.
10
+ *
11
+ * @example
12
+ * <DevToolsHub>
13
+ * <DevToolEntry icon="✦" label="Card Viewer" desc="Browse agents" onClick={() => setShowCards(true)} />
14
+ * </DevToolsHub>
15
+ */
16
+ export declare const DevToolEntry: FC<{
17
+ icon: ReactNode;
18
+ label: string;
19
+ desc?: string;
20
+ onClick?: () => void;
21
+ }>;
22
+ type DevToolsHubProps = PropsWithChildren<{
23
+ fabBottom?: string;
24
+ gameOptions?: GameOption[];
25
+ }>;
26
+ export declare const DevToolsHub: FC<DevToolsHubProps>;
27
+ export declare const devToolBtnCss: import("@emotion/utils").SerializedStyles;
28
+ export declare const devToolIconCss: import("@emotion/utils").SerializedStyles;
29
+ export declare const devToolLabelCss: import("@emotion/utils").SerializedStyles;
30
+ export declare const devToolDescCss: import("@emotion/utils").SerializedStyles;
31
+ export {};
@@ -0,0 +1,1037 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@emotion/react/jsx-runtime";
2
+ /** @jsxImportSource @emotion/react */
3
+ import { css, keyframes } from '@emotion/react';
4
+ import { useCallback, useContext, useRef, useState } from 'react';
5
+ import { createPortal } from 'react-dom';
6
+ import { useGame } from '../../../hooks/useGame';
7
+ import { usePlayerId, usePlayerIds } from '../../../hooks/usePlayerId';
8
+ import { gameContext } from '../../GameProvider/GameContext';
9
+ const GP_PRIMARY = '#28B8CE';
10
+ const GP_DARK = '#002448';
11
+ const GP_SURFACE = '#0a1929';
12
+ const GP_ACCENT = '#9fe2f7';
13
+ // ═══════════════════════════════════════
14
+ // JSON syntax highlighting (pure React)
15
+ // ═══════════════════════════════════════
16
+ const highlightJson = (json) => {
17
+ const parts = [];
18
+ // Regex to match JSON tokens
19
+ const tokenRegex = /("(?:\\.|[^"\\])*"\s*:)|("(?:\\.|[^"\\])*")|(true|false|null)|(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)|([{}[\],])/g;
20
+ let lastIndex = 0;
21
+ let match;
22
+ while ((match = tokenRegex.exec(json)) !== null) {
23
+ // Add whitespace between tokens
24
+ if (match.index > lastIndex) {
25
+ parts.push(json.slice(lastIndex, match.index));
26
+ }
27
+ const [full, key, str, bool, num, punct] = match;
28
+ if (key) {
29
+ // key: "xxx":
30
+ const colonIdx = key.lastIndexOf(':');
31
+ parts.push(_jsx("span", { css: jsonKeyCss, children: key.slice(0, colonIdx) }, `k${match.index}`));
32
+ parts.push(key.slice(colonIdx));
33
+ }
34
+ else if (str) {
35
+ parts.push(_jsx("span", { css: jsonStringCss, children: full }, `s${match.index}`));
36
+ }
37
+ else if (bool) {
38
+ parts.push(_jsx("span", { css: jsonBoolCss, children: full }, `b${match.index}`));
39
+ }
40
+ else if (num) {
41
+ parts.push(_jsx("span", { css: jsonNumCss, children: full }, `n${match.index}`));
42
+ }
43
+ else if (punct) {
44
+ parts.push(_jsx("span", { css: jsonPunctCss, children: full }, `p${match.index}`));
45
+ }
46
+ lastIndex = match.index + full.length;
47
+ }
48
+ if (lastIndex < json.length) {
49
+ parts.push(json.slice(lastIndex));
50
+ }
51
+ return parts;
52
+ };
53
+ /**
54
+ * A single entry in the DevToolsHub panel.
55
+ * Use this instead of raw `<button>` when adding custom tools via `children`.
56
+ *
57
+ * @example
58
+ * <DevToolsHub>
59
+ * <DevToolEntry icon="✦" label="Card Viewer" desc="Browse agents" onClick={() => setShowCards(true)} />
60
+ * </DevToolsHub>
61
+ */
62
+ export const DevToolEntry = ({ icon, label, desc, onClick }) => (_jsxs("button", { css: devToolBtnCss, onClick: onClick, children: [_jsx("span", { css: devToolIconCss, children: icon }), _jsx("span", { css: devToolLabelCss, children: label }), desc && _jsx("span", { css: devToolDescCss, children: desc })] }));
63
+ // ═══════════════════════════════════════
64
+ // Save/Load helpers
65
+ // ═══════════════════════════════════════
66
+ const SAVE_PREFIX = ':save:';
67
+ const getSaveKeys = (gameName) => {
68
+ const prefix = gameName + SAVE_PREFIX;
69
+ const keys = [];
70
+ for (let i = 0; i < localStorage.length; i++) {
71
+ const key = localStorage.key(i);
72
+ if (key?.startsWith(prefix))
73
+ keys.push(key);
74
+ }
75
+ return keys.sort();
76
+ };
77
+ const getSaveLabel = (key, gameName) => {
78
+ return key.slice((gameName + SAVE_PREFIX).length);
79
+ };
80
+ const menuItems = [
81
+ { id: 'game', icon: '\u2699', label: 'Game' },
82
+ { id: 'save', icon: '\u2B73', label: 'Save / Load' },
83
+ { id: 'export', icon: '\u2398', label: 'Export' },
84
+ ];
85
+ export const DevToolsHub = ({ children, fabBottom, gameOptions }) => {
86
+ const [isOpen, setIsOpen] = useState(false);
87
+ const [activeMenu, setActiveMenu] = useState(null);
88
+ const [newGamePlayers, setNewGamePlayers] = useState(2);
89
+ const [options, setOptions] = useState({});
90
+ const [undoCount, setUndoCount] = useState(1);
91
+ const [botActive, setBotActive] = useState(false);
92
+ const [flash, setFlash] = useState(null);
93
+ const [saveLabel, setSaveLabel] = useState('');
94
+ const [importText, setImportText] = useState('');
95
+ const [pasteError, setPasteError] = useState(null);
96
+ const [showPasteModal, setShowPasteModal] = useState(false);
97
+ const [saveRefresh, setSaveRefresh] = useState(0);
98
+ const flashTimeout = useRef(null);
99
+ const fileInputRef = useRef(null);
100
+ const gameState = useGame();
101
+ const currentPlayer = usePlayerId();
102
+ const players = usePlayerIds();
103
+ const gameName = useContext(gameContext)?.game ?? 'unknown';
104
+ const doFlash = useCallback((msg) => {
105
+ if (flashTimeout.current)
106
+ clearTimeout(flashTimeout.current);
107
+ setFlash(msg);
108
+ flashTimeout.current = setTimeout(() => setFlash(null), 1500);
109
+ }, []);
110
+ const copyToClipboard = useCallback(async (text, label) => {
111
+ try {
112
+ await navigator.clipboard.writeText(text);
113
+ doFlash(`${label} copied!`);
114
+ }
115
+ catch {
116
+ doFlash('Copy failed');
117
+ }
118
+ }, [doFlash]);
119
+ const g = typeof window !== 'undefined' ? window.game : undefined;
120
+ const exec = useCallback((action, successMsg) => {
121
+ if (!g) {
122
+ doFlash('game helper not available');
123
+ return;
124
+ }
125
+ action();
126
+ doFlash(successMsg);
127
+ }, [g, doFlash]);
128
+ // Save/Load handlers
129
+ const saveKeys = getSaveKeys(gameName);
130
+ void saveRefresh; // force re-read
131
+ const handleSave = useCallback(() => {
132
+ if (!gameState) {
133
+ doFlash('No game state');
134
+ return;
135
+ }
136
+ const label = saveLabel.trim() || new Date().toLocaleTimeString();
137
+ const key = gameName + SAVE_PREFIX + label;
138
+ localStorage.setItem(key, JSON.stringify(gameState));
139
+ setSaveLabel('');
140
+ setSaveRefresh(n => n + 1);
141
+ doFlash(`Saved: ${label}`);
142
+ }, [gameState, saveLabel, gameName, doFlash]);
143
+ const handleLoad = useCallback((key) => {
144
+ const raw = localStorage.getItem(key);
145
+ if (!raw) {
146
+ doFlash('Save not found');
147
+ return;
148
+ }
149
+ try {
150
+ const state = JSON.parse(raw);
151
+ if (g) {
152
+ g.new(state);
153
+ doFlash(`Loaded: ${getSaveLabel(key, gameName)}`);
154
+ }
155
+ else {
156
+ doFlash('game helper not available');
157
+ }
158
+ }
159
+ catch {
160
+ doFlash('Invalid save data');
161
+ }
162
+ }, [g, gameName, doFlash]);
163
+ const handleDownloadSave = useCallback((key) => {
164
+ const raw = localStorage.getItem(key);
165
+ if (!raw) {
166
+ doFlash('Save not found');
167
+ return;
168
+ }
169
+ const label = getSaveLabel(key, gameName);
170
+ const blob = new Blob([raw], { type: 'application/json' });
171
+ const url = URL.createObjectURL(blob);
172
+ const a = document.createElement('a');
173
+ a.href = url;
174
+ a.download = `${gameName}-${label.replace(/[^a-zA-Z0-9_-]/g, '_')}.json`;
175
+ a.click();
176
+ URL.revokeObjectURL(url);
177
+ doFlash(`Downloaded: ${label}`);
178
+ }, [gameName, doFlash]);
179
+ const handleDelete = useCallback((key) => {
180
+ localStorage.removeItem(key);
181
+ setSaveRefresh(n => n + 1);
182
+ doFlash(`Deleted: ${getSaveLabel(key, gameName)}`);
183
+ }, [gameName, doFlash]);
184
+ const handleImportFile = useCallback((e) => {
185
+ const file = e.target.files?.[0];
186
+ if (!file)
187
+ return;
188
+ const reader = new FileReader();
189
+ reader.onload = () => {
190
+ try {
191
+ const state = JSON.parse(reader.result);
192
+ if (g) {
193
+ g.new(state);
194
+ doFlash(`Imported: ${file.name}`);
195
+ }
196
+ else {
197
+ doFlash('game helper not available');
198
+ }
199
+ }
200
+ catch {
201
+ doFlash('Invalid JSON file');
202
+ }
203
+ };
204
+ reader.readAsText(file);
205
+ e.target.value = '';
206
+ }, [g, doFlash]);
207
+ const handleImportPaste = useCallback(() => {
208
+ if (!importText.trim()) {
209
+ setPasteError('Paste a JSON state first');
210
+ return;
211
+ }
212
+ try {
213
+ const state = JSON.parse(importText);
214
+ if (g) {
215
+ g.new(state);
216
+ setImportText('');
217
+ setPasteError(null);
218
+ setShowPasteModal(false);
219
+ doFlash('State imported!');
220
+ }
221
+ else {
222
+ setPasteError('game helper not available');
223
+ }
224
+ }
225
+ catch {
226
+ setPasteError('Invalid JSON — check syntax');
227
+ }
228
+ }, [g, importText, doFlash]);
229
+ const handlePasteChange = useCallback((value) => {
230
+ setImportText(value);
231
+ setPasteError(null);
232
+ // Try to pretty-print if valid
233
+ try {
234
+ const parsed = JSON.parse(value);
235
+ setImportText(JSON.stringify(parsed, null, 2));
236
+ }
237
+ catch {
238
+ // Keep raw text if invalid
239
+ }
240
+ }, []);
241
+ const handleDownloadState = useCallback(() => {
242
+ if (!gameState) {
243
+ doFlash('No game state');
244
+ return;
245
+ }
246
+ const json = JSON.stringify(gameState, null, 2);
247
+ const blob = new Blob([json], { type: 'application/json' });
248
+ const url = URL.createObjectURL(blob);
249
+ const a = document.createElement('a');
250
+ a.href = url;
251
+ a.download = `${gameName}-state-${new Date().toISOString().slice(0, 19).replace(/:/g, '-')}.json`;
252
+ a.click();
253
+ URL.revokeObjectURL(url);
254
+ doFlash('State downloaded');
255
+ }, [gameState, gameName, doFlash]);
256
+ const handleMenuClick = (id) => {
257
+ setActiveMenu(prev => prev === id ? null : id);
258
+ };
259
+ const handleMenuHover = (id) => {
260
+ setActiveMenu(id);
261
+ };
262
+ const allMenuItems = children
263
+ ? [...menuItems, { id: 'custom', icon: '\u2726', label: 'Custom' }]
264
+ : menuItems;
265
+ const root = document.getElementById('root');
266
+ if (!root)
267
+ return null;
268
+ return createPortal(_jsxs(_Fragment, { children: [_jsx("button", { css: fabCss, onClick: () => { setIsOpen(o => !o); if (isOpen)
269
+ setActiveMenu(null); }, "data-open": isOpen, style: fabBottom ? { bottom: fabBottom } : undefined, children: _jsxs("svg", { css: logoCss, viewBox: "0 0 46 46", "data-open": isOpen, children: [_jsx("circle", { cx: "11", cy: "11", r: "7" }), _jsx("circle", { cx: "35", cy: "11", r: "7" }), _jsx("circle", { cx: "11", cy: "35", r: "7" }), _jsx("circle", { cx: "35", cy: "35", r: "7" })] }) }), isOpen && (_jsxs(_Fragment, { children: [_jsx("div", { css: backdropCss, onClick: () => { setIsOpen(false); setActiveMenu(null); } }), _jsxs("div", { css: hubContainerCss, style: fabBottom ? { bottom: `calc(${fabBottom} + 48px)` } : undefined, children: [_jsxs("div", { css: mainMenuCss, children: [_jsxs("div", { css: panelHeaderCss, children: [_jsxs("svg", { css: headerLogoCss, viewBox: "0 0 46 46", children: [_jsx("circle", { cx: "11", cy: "11", r: "7" }), _jsx("circle", { cx: "35", cy: "11", r: "7" }), _jsx("circle", { cx: "11", cy: "35", r: "7" }), _jsx("circle", { cx: "35", cy: "35", r: "7" })] }), _jsx("span", { css: panelTitleCss, children: "Dev Tools" }), _jsx("span", { css: panelBadgeCss, children: "GP" })] }), _jsx("div", { css: menuListCss, children: allMenuItems.map(item => (_jsxs("button", { css: [menuItemCss, activeMenu === item.id && menuItemActiveCss], onClick: () => handleMenuClick(item.id), onMouseEnter: () => handleMenuHover(item.id), children: [_jsx("span", { css: menuItemIconCss, children: item.icon }), _jsx("span", { css: menuItemLabelCss, children: item.label }), _jsx("span", { css: menuChevronCss, children: '\u25B8' })] }, item.id))) }), flash && _jsx("div", { css: flashCss, children: flash }, flash)] }), activeMenu && (_jsxs("div", { css: subPanelCss, children: [_jsx("div", { css: subPanelHeaderCss, children: _jsx("span", { css: subPanelTitleCss, children: allMenuItems.find(m => m.id === activeMenu)?.label }) }), _jsxs("div", { css: subPanelContentCss, children: [activeMenu === 'game' && (_jsxs(_Fragment, { children: [_jsxs("div", { css: devToolBtnCss, children: [_jsx("span", { css: devToolIconCss, children: '\u21BB' }), _jsx("span", { css: devToolLabelCss, children: "New Game" }), _jsx("span", { css: devToolDescCss, children: "Reset with N players" }), _jsxs("div", { css: inlineRowCss, onClick: e => e.stopPropagation(), children: [_jsx("button", { css: stepBtnCss, onClick: () => setNewGamePlayers(c => Math.max(1, c - 1)), children: "-" }), _jsx("input", { type: "number", min: 1, max: 10, value: newGamePlayers, onChange: e => setNewGamePlayers(Math.max(1, parseInt(e.target.value) || 2)), css: numberInputCss }), _jsx("button", { css: stepBtnCss, onClick: () => setNewGamePlayers(c => Math.min(10, c + 1)), children: "+" }), _jsx("button", { css: goBtnCss, onClick: () => exec(() => {
270
+ const hasOptions = gameOptions?.length && Object.values(options).some(Boolean);
271
+ g.new(hasOptions ? { players: newGamePlayers, ...options } : newGamePlayers);
272
+ }, `New game ${newGamePlayers}p`), children: "Go" })] }), gameOptions?.map(opt => (_jsxs("label", { css: toggleRowCss, onClick: e => e.stopPropagation(), children: [_jsx("input", { type: "checkbox", checked: options[opt.key] ?? false, onChange: e => setOptions(prev => ({ ...prev, [opt.key]: e.target.checked })), css: checkboxCss }), _jsx("span", { css: toggleLabelCss, children: opt.label })] }, opt.key)))] }), _jsxs("div", { css: devToolBtnCss, children: [_jsx("span", { css: devToolIconCss, children: '\u238C' }), _jsx("span", { css: devToolLabelCss, children: "Undo" }), _jsx("span", { css: devToolDescCss, children: "Revert N moves" }), _jsxs("div", { css: inlineRowCss, onClick: e => e.stopPropagation(), children: [_jsx("button", { css: stepBtnCss, onClick: () => setUndoCount(c => Math.max(1, c - 1)), children: "-" }), _jsx("input", { type: "number", min: 1, max: 999, value: undoCount, onChange: e => setUndoCount(Math.max(1, parseInt(e.target.value) || 1)), css: numberInputCss }), _jsx("button", { css: stepBtnCss, onClick: () => setUndoCount(c => c + 1), children: "+" }), _jsx("button", { css: goBtnCss, onClick: () => exec(() => g.undo(undoCount), `Undo ${undoCount} move${undoCount > 1 ? 's' : ''}`), children: "Go" })] })] }), _jsxs("div", { css: devToolBtnCss, children: [_jsx("span", { css: devToolIconCss, children: '\u2194' }), _jsx("span", { css: devToolLabelCss, children: "Switch Player" }), _jsx("span", { css: devToolDescCss, children: "View as another player" }), _jsxs("div", { css: inlineRowCss, onClick: e => e.stopPropagation(), children: [players.map(pid => (_jsxs("button", { css: [playerBtnCss, pid === currentPlayer && playerBtnActiveCss], onClick: () => exec(() => g.changePlayer(pid), `Switched to P${pid}`), children: ["P", String(pid)] }, String(pid)))), _jsx("button", { css: [playerBtnCss, currentPlayer === undefined && playerBtnActiveCss], onClick: () => exec(() => g.changePlayer(), 'Spectator mode'), children: "Spect" })] })] }), _jsxs("button", { css: [devToolBtnCss, botActive && toolBtnActiveCss], onClick: () => {
273
+ const next = !botActive;
274
+ exec(() => g.bot(next), next ? 'Bots enabled' : 'Bots disabled');
275
+ setBotActive(next);
276
+ }, children: [_jsx("span", { css: devToolIconCss, children: '\u2699' }), _jsx("span", { css: devToolLabelCss, children: botActive ? 'Disable Bots' : 'Enable Bots' }), _jsx("span", { css: devToolDescCss, children: botActive ? 'Stop auto-play' : 'Auto-play all moves' }), botActive && _jsx("span", { css: activeIndicatorCss })] }), _jsxs("button", { css: devToolBtnCss, onClick: () => exec(() => g.tutorial(), 'Tutorial started'), children: [_jsx("span", { css: devToolIconCss, children: "?" }), _jsx("span", { css: devToolLabelCss, children: "Tutorial" }), _jsx("span", { css: devToolDescCss, children: "Start tutorial mode" })] })] })), activeMenu === 'save' && (_jsxs(_Fragment, { children: [_jsxs("div", { css: devToolBtnCss, children: [_jsx("span", { css: devToolIconCss, children: '\u2B73' }), _jsx("span", { css: devToolLabelCss, children: "Save State" }), _jsx("span", { css: devToolDescCss, children: "Save current game state" }), _jsxs("div", { css: inlineRowCss, onClick: e => e.stopPropagation(), children: [_jsx("input", { type: "text", placeholder: "label (optional)", value: saveLabel, onChange: e => setSaveLabel(e.target.value), onKeyDown: e => { if (e.key === 'Enter')
277
+ handleSave(); }, css: textInputCss }), _jsx("button", { css: goBtnCss, onClick: handleSave, children: "Save" })] })] }), saveKeys.length > 0 && (_jsx("div", { css: savedListCss, children: saveKeys.map(key => (_jsxs("div", { css: savedEntryCss, children: [_jsx("span", { css: savedLabelCss, children: getSaveLabel(key, gameName) }), _jsxs("div", { css: savedActionsCss, children: [_jsx("button", { css: smallBtnCss, onClick: () => handleLoad(key), title: "Load", children: '\u25B6' }), _jsx("button", { css: smallBtnCss, onClick: () => handleDownloadSave(key), title: "Download", children: '\u2913' }), _jsx("button", { css: [smallBtnCss, smallBtnDangerCss], onClick: () => handleDelete(key), title: "Delete", children: '\u2715' })] })] }, key))) })), _jsx("div", { css: dividerCss }), _jsxs("button", { css: devToolBtnCss, onClick: () => fileInputRef.current?.click(), children: [_jsx("span", { css: devToolIconCss, children: '\u2912' }), _jsx("span", { css: devToolLabelCss, children: "Import File" }), _jsx("span", { css: devToolDescCss, children: "Load state from JSON file" })] }), _jsx("input", { ref: fileInputRef, type: "file", accept: ".json,application/json", onChange: handleImportFile, style: { display: 'none' } }), _jsxs("button", { css: devToolBtnCss, onClick: () => { setShowPasteModal(true); setPasteError(null); }, children: [_jsx("span", { css: devToolIconCss, children: '\u2398' }), _jsx("span", { css: devToolLabelCss, children: "Paste State" }), _jsx("span", { css: devToolDescCss, children: "Open editor to paste JSON" })] })] })), activeMenu === 'export' && (_jsxs(_Fragment, { children: [_jsxs("button", { css: devToolBtnCss, onClick: handleDownloadState, children: [_jsx("span", { css: devToolIconCss, children: '\u2913' }), _jsx("span", { css: devToolLabelCss, children: "Download State" }), _jsx("span", { css: devToolDescCss, children: "Save state as .json file" })] }), _jsxs("button", { css: devToolBtnCss, onClick: () => {
278
+ const data = {};
279
+ for (let i = 0; i < localStorage.length; i++) {
280
+ const key = localStorage.key(i);
281
+ if (key)
282
+ data[key] = localStorage.getItem(key) ?? '';
283
+ }
284
+ copyToClipboard(JSON.stringify(data, null, 2), 'localStorage');
285
+ }, children: [_jsx("span", { css: devToolIconCss, children: '\u29C9' }), _jsx("span", { css: devToolLabelCss, children: "Copy LocalStorage" }), _jsx("span", { css: devToolDescCss, children: "Copy localStorage to clipboard" })] })] })), activeMenu === 'custom' && children] })] }))] })] })), showPasteModal && (_jsxs(_Fragment, { children: [_jsx("div", { css: modalBackdropCss, onClick: () => { setShowPasteModal(false); setPasteError(null); } }), _jsxs("div", { css: modalCss, children: [_jsxs("div", { css: modalHeaderCss, children: [_jsx("span", { css: modalTitleCss, children: "Paste Game State" }), _jsx("button", { css: modalCloseBtnCss, onClick: () => { setShowPasteModal(false); setPasteError(null); }, children: '\u2715' })] }), _jsxs("div", { css: modalBodyCss, children: [_jsx("textarea", { css: modalTextareaCss, placeholder: 'Paste your JSON game state here...', value: importText, onChange: e => handlePasteChange(e.target.value), spellCheck: false }), importText.trim() && (_jsxs("div", { css: jsonPreviewCss, children: [_jsx("div", { css: jsonPreviewLabelCss, children: "Preview" }), _jsx("pre", { css: jsonPreviewCodeCss, children: (() => {
286
+ try {
287
+ return highlightJson(JSON.stringify(JSON.parse(importText), null, 2));
288
+ }
289
+ catch {
290
+ return _jsx("span", { css: jsonErrorTextCss, children: importText });
291
+ }
292
+ })() })] })), pasteError && _jsx("div", { css: pasteErrorCss, children: pasteError })] }), _jsxs("div", { css: modalFooterCss, children: [_jsx("button", { css: modalCancelBtnCss, onClick: () => { setShowPasteModal(false); setPasteError(null); }, children: "Cancel" }), _jsx("button", { css: modalLoadBtnCss, onClick: handleImportPaste, children: "Load State" })] })] })] }))] }), root);
293
+ };
294
+ // ═══════════════════════════════════════
295
+ // Styles — GamePark branded
296
+ // ═══════════════════════════════════════
297
+ const fabPulse = keyframes `
298
+ 0%, 100% { box-shadow: 0 0 0 0 rgba(40, 184, 206, 0.25); }
299
+ 50% { box-shadow: 0 0 0 5px rgba(40, 184, 206, 0); }
300
+ `;
301
+ const fabCss = css `
302
+ position: fixed;
303
+ bottom: 16px;
304
+ left: 16px;
305
+ z-index: 900;
306
+ width: 40px;
307
+ height: 40px;
308
+ border-radius: 10px;
309
+ border: 1px solid rgba(40, 184, 206, 0.4);
310
+ background: linear-gradient(145deg, ${GP_SURFACE}, ${GP_DARK});
311
+ cursor: pointer;
312
+ display: flex;
313
+ align-items: center;
314
+ justify-content: center;
315
+ padding: 0;
316
+ animation: ${fabPulse} 3s ease-in-out infinite;
317
+ transition: all 0.2s;
318
+
319
+ &:hover {
320
+ border-color: rgba(40, 184, 206, 0.7);
321
+ animation: none;
322
+ }
323
+
324
+ &[data-open="true"] {
325
+ animation: none;
326
+ background: ${GP_PRIMARY};
327
+ border-color: ${GP_PRIMARY};
328
+ }
329
+ `;
330
+ const logoCss = css `
331
+ width: 22px;
332
+ height: 22px;
333
+ fill: ${GP_PRIMARY};
334
+ transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
335
+
336
+ &[data-open="true"] {
337
+ fill: ${GP_DARK};
338
+ transform: rotate(90deg);
339
+ }
340
+ `;
341
+ const slideUp = keyframes `
342
+ from { opacity: 0; transform: translateY(8px) scale(0.97); }
343
+ to { opacity: 1; transform: translateY(0) scale(1); }
344
+ `;
345
+ const slideRight = keyframes `
346
+ from { opacity: 0; transform: translateX(-8px) scale(0.97); }
347
+ to { opacity: 1; transform: translateX(0) scale(1); }
348
+ `;
349
+ const hubContainerCss = css `
350
+ position: fixed;
351
+ bottom: 64px;
352
+ left: 16px;
353
+ z-index: 900;
354
+ display: flex;
355
+ align-items: flex-end;
356
+ gap: 6px;
357
+ `;
358
+ const mainMenuCss = css `
359
+ position: relative;
360
+ width: 200px;
361
+ background: linear-gradient(170deg, #0f2035 0%, ${GP_SURFACE} 100%);
362
+ border: 1px solid rgba(40, 184, 206, 0.25);
363
+ border-radius: 12px;
364
+ box-shadow:
365
+ 0 12px 40px rgba(0, 0, 0, 0.5),
366
+ 0 0 0 1px rgba(0, 0, 0, 0.3),
367
+ inset 0 1px 0 rgba(159, 226, 247, 0.05);
368
+ animation: ${slideUp} 0.2s ease-out;
369
+ font-family: 'Mulish', sans-serif;
370
+ overflow: hidden;
371
+ `;
372
+ const subPanelCss = css `
373
+ width: 320px;
374
+ max-height: calc(100vh - 80px);
375
+ display: flex;
376
+ flex-direction: column;
377
+ background: linear-gradient(170deg, #0f2035 0%, ${GP_SURFACE} 100%);
378
+ border: 1px solid rgba(40, 184, 206, 0.25);
379
+ border-radius: 12px;
380
+ box-shadow:
381
+ 0 12px 40px rgba(0, 0, 0, 0.5),
382
+ 0 0 0 1px rgba(0, 0, 0, 0.3),
383
+ inset 0 1px 0 rgba(159, 226, 247, 0.05);
384
+ animation: ${slideRight} 0.15s ease-out;
385
+ font-family: 'Mulish', sans-serif;
386
+ overflow: hidden;
387
+ `;
388
+ const subPanelHeaderCss = css `
389
+ padding: 10px 16px;
390
+ border-bottom: 1px solid rgba(40, 184, 206, 0.15);
391
+ background: rgba(40, 184, 206, 0.04);
392
+ flex-shrink: 0;
393
+ `;
394
+ const subPanelTitleCss = css `
395
+ font-size: 12px;
396
+ font-weight: 800;
397
+ color: #5a8a98;
398
+ text-transform: uppercase;
399
+ letter-spacing: 0.1em;
400
+ `;
401
+ const subPanelContentCss = css `
402
+ display: flex;
403
+ flex-direction: column;
404
+ padding: 6px;
405
+ gap: 2px;
406
+ overflow-y: auto;
407
+ flex: 1;
408
+ min-height: 0;
409
+ `;
410
+ const panelHeaderCss = css `
411
+ display: flex;
412
+ align-items: center;
413
+ gap: 8px;
414
+ padding: 12px 16px;
415
+ border-bottom: 1px solid rgba(40, 184, 206, 0.15);
416
+ background: rgba(40, 184, 206, 0.04);
417
+ `;
418
+ const headerLogoCss = css `
419
+ width: 18px;
420
+ height: 18px;
421
+ fill: ${GP_ACCENT};
422
+ flex-shrink: 0;
423
+ `;
424
+ const panelTitleCss = css `
425
+ font-size: 14px;
426
+ font-weight: 800;
427
+ color: #e0f0f4;
428
+ text-transform: uppercase;
429
+ letter-spacing: 0.08em;
430
+ flex: 1;
431
+ `;
432
+ const panelBadgeCss = css `
433
+ font-size: 9px;
434
+ font-weight: 800;
435
+ padding: 2px 6px;
436
+ border-radius: 4px;
437
+ background: rgba(40, 184, 206, 0.15);
438
+ color: ${GP_PRIMARY};
439
+ letter-spacing: 0.1em;
440
+ `;
441
+ const menuListCss = css `
442
+ display: flex;
443
+ flex-direction: column;
444
+ padding: 6px;
445
+ gap: 2px;
446
+ `;
447
+ const menuItemCss = css `
448
+ position: relative;
449
+ display: flex;
450
+ align-items: center;
451
+ gap: 10px;
452
+ padding: 10px 12px;
453
+ border: none;
454
+ border-radius: 8px;
455
+ background: transparent;
456
+ cursor: pointer;
457
+ text-align: left;
458
+ transition: background 0.15s;
459
+ font-family: inherit;
460
+
461
+ &:hover {
462
+ background: rgba(40, 184, 206, 0.08);
463
+ }
464
+ `;
465
+ const menuItemActiveCss = css `
466
+ background: rgba(40, 184, 206, 0.12);
467
+
468
+ &::before {
469
+ content: '';
470
+ position: absolute;
471
+ left: 0;
472
+ top: 50%;
473
+ transform: translateY(-50%);
474
+ width: 3px;
475
+ height: 18px;
476
+ border-radius: 0 3px 3px 0;
477
+ background: ${GP_PRIMARY};
478
+ }
479
+ `;
480
+ const menuItemIconCss = css `
481
+ font-size: 15px;
482
+ color: ${GP_PRIMARY};
483
+ display: flex;
484
+ align-items: center;
485
+ justify-content: center;
486
+ width: 28px;
487
+ height: 28px;
488
+ border-radius: 6px;
489
+ background: rgba(40, 184, 206, 0.08);
490
+ flex-shrink: 0;
491
+ `;
492
+ const menuItemLabelCss = css `
493
+ font-size: 13px;
494
+ font-weight: 700;
495
+ color: #e0f0f4;
496
+ flex: 1;
497
+ `;
498
+ const menuChevronCss = css `
499
+ font-size: 10px;
500
+ color: #3a6070;
501
+ `;
502
+ const toolReveal = keyframes `
503
+ from { opacity: 0; transform: translateX(-6px); }
504
+ to { opacity: 1; transform: translateX(0); }
505
+ `;
506
+ export const devToolBtnCss = css `
507
+ position: relative;
508
+ display: grid;
509
+ grid-template-columns: 28px 1fr;
510
+ grid-template-rows: auto auto;
511
+ align-items: center;
512
+ gap: 0 10px;
513
+ padding: 10px 12px;
514
+ border: none;
515
+ border-radius: 8px;
516
+ background: transparent;
517
+ cursor: pointer;
518
+ text-align: left;
519
+ transition: background 0.15s;
520
+ animation: ${toolReveal} 0.25s ease-out backwards;
521
+ font-family: inherit;
522
+
523
+ &:hover {
524
+ background: rgba(40, 184, 206, 0.08);
525
+ }
526
+ &:active {
527
+ background: rgba(40, 184, 206, 0.14);
528
+ }
529
+ `;
530
+ const toolBtnActiveCss = css `
531
+ background: rgba(40, 184, 206, 0.1);
532
+ &::after {
533
+ content: '';
534
+ position: absolute;
535
+ left: 0;
536
+ top: 8px;
537
+ bottom: 8px;
538
+ width: 3px;
539
+ border-radius: 0 3px 3px 0;
540
+ background: ${GP_PRIMARY};
541
+ }
542
+ `;
543
+ export const devToolIconCss = css `
544
+ grid-row: 1 / -1;
545
+ font-size: 15px;
546
+ color: ${GP_PRIMARY};
547
+ display: flex;
548
+ align-items: center;
549
+ justify-content: center;
550
+ width: 28px;
551
+ height: 28px;
552
+ border-radius: 6px;
553
+ background: rgba(40, 184, 206, 0.08);
554
+ `;
555
+ export const devToolLabelCss = css `
556
+ font-size: 14px;
557
+ font-weight: 700;
558
+ color: #e0f0f4;
559
+ line-height: 1.2;
560
+ `;
561
+ export const devToolDescCss = css `
562
+ font-size: 12px;
563
+ color: #5a8a98;
564
+ line-height: 1.2;
565
+ `;
566
+ const activeIndicatorCss = css `
567
+ position: absolute;
568
+ top: 10px;
569
+ right: 12px;
570
+ width: 7px;
571
+ height: 7px;
572
+ border-radius: 50%;
573
+ background: ${GP_PRIMARY};
574
+ box-shadow: 0 0 6px rgba(40, 184, 206, 0.5);
575
+ `;
576
+ const dividerCss = css `
577
+ height: 1px;
578
+ margin: 4px 12px;
579
+ background: rgba(40, 184, 206, 0.1);
580
+ `;
581
+ // ── Inline controls ──
582
+ const inlineRowCss = css `
583
+ grid-column: 1 / -1;
584
+ display: flex;
585
+ align-items: center;
586
+ gap: 4px;
587
+ margin-top: 6px;
588
+ `;
589
+ const stepBtnCss = css `
590
+ width: 26px;
591
+ height: 26px;
592
+ border-radius: 5px;
593
+ border: 1px solid rgba(40, 184, 206, 0.25);
594
+ background: rgba(40, 184, 206, 0.06);
595
+ color: ${GP_PRIMARY};
596
+ font-size: 14px;
597
+ font-weight: 700;
598
+ cursor: pointer;
599
+ display: flex;
600
+ align-items: center;
601
+ justify-content: center;
602
+ font-family: inherit;
603
+ transition: all 0.15s;
604
+
605
+ &:hover {
606
+ background: rgba(40, 184, 206, 0.14);
607
+ border-color: rgba(40, 184, 206, 0.4);
608
+ }
609
+ `;
610
+ const numberInputCss = css `
611
+ width: 48px;
612
+ height: 26px;
613
+ border-radius: 5px;
614
+ border: 1px solid rgba(40, 184, 206, 0.25);
615
+ background: rgba(0, 0, 0, 0.3);
616
+ color: #e0f0f4;
617
+ font-size: 13px;
618
+ font-weight: 700;
619
+ text-align: center;
620
+ font-family: inherit;
621
+ font-variant-numeric: tabular-nums;
622
+
623
+ &:focus {
624
+ outline: none;
625
+ border-color: ${GP_PRIMARY};
626
+ box-shadow: 0 0 0 2px rgba(40, 184, 206, 0.15);
627
+ }
628
+
629
+ &::-webkit-inner-spin-button,
630
+ &::-webkit-outer-spin-button {
631
+ -webkit-appearance: none;
632
+ margin: 0;
633
+ }
634
+ `;
635
+ const textInputCss = css `
636
+ flex: 1;
637
+ height: 26px;
638
+ border-radius: 5px;
639
+ border: 1px solid rgba(40, 184, 206, 0.25);
640
+ background: rgba(0, 0, 0, 0.3);
641
+ color: #e0f0f4;
642
+ font-size: 12px;
643
+ font-weight: 600;
644
+ padding: 0 8px;
645
+ font-family: inherit;
646
+
647
+ &::placeholder {
648
+ color: #3a6070;
649
+ }
650
+
651
+ &:focus {
652
+ outline: none;
653
+ border-color: ${GP_PRIMARY};
654
+ box-shadow: 0 0 0 2px rgba(40, 184, 206, 0.15);
655
+ }
656
+ `;
657
+ const goBtnCss = css `
658
+ height: 26px;
659
+ padding: 0 12px;
660
+ border-radius: 5px;
661
+ border: 1px solid rgba(40, 184, 206, 0.35);
662
+ background: rgba(40, 184, 206, 0.15);
663
+ color: ${GP_PRIMARY};
664
+ font-size: 12px;
665
+ font-weight: 800;
666
+ text-transform: uppercase;
667
+ letter-spacing: 0.05em;
668
+ cursor: pointer;
669
+ margin-left: auto;
670
+ font-family: inherit;
671
+ transition: all 0.15s;
672
+ flex-shrink: 0;
673
+
674
+ &:hover {
675
+ background: rgba(40, 184, 206, 0.25);
676
+ border-color: rgba(40, 184, 206, 0.5);
677
+ }
678
+ `;
679
+ const playerBtnCss = css `
680
+ height: 26px;
681
+ padding: 0 10px;
682
+ border-radius: 5px;
683
+ border: 1px solid rgba(40, 184, 206, 0.25);
684
+ background: rgba(40, 184, 206, 0.06);
685
+ color: #5a8a98;
686
+ font-size: 12px;
687
+ font-weight: 700;
688
+ cursor: pointer;
689
+ font-family: inherit;
690
+ transition: all 0.15s;
691
+
692
+ &:hover {
693
+ background: rgba(40, 184, 206, 0.14);
694
+ border-color: rgba(40, 184, 206, 0.4);
695
+ color: #e0f0f4;
696
+ }
697
+ `;
698
+ const playerBtnActiveCss = css `
699
+ background: rgba(40, 184, 206, 0.2);
700
+ border-color: ${GP_PRIMARY};
701
+ color: ${GP_PRIMARY};
702
+ `;
703
+ // ── Save/Load styles ──
704
+ const savedListCss = css `
705
+ display: flex;
706
+ flex-direction: column;
707
+ gap: 2px;
708
+ padding: 0 8px;
709
+ `;
710
+ const savedEntryCss = css `
711
+ display: flex;
712
+ align-items: center;
713
+ justify-content: space-between;
714
+ padding: 5px 8px;
715
+ border-radius: 5px;
716
+ background: rgba(40, 184, 206, 0.04);
717
+ border: 1px solid rgba(40, 184, 206, 0.08);
718
+ `;
719
+ const savedLabelCss = css `
720
+ font-size: 12px;
721
+ font-weight: 600;
722
+ color: #8ab8c8;
723
+ overflow: hidden;
724
+ text-overflow: ellipsis;
725
+ white-space: nowrap;
726
+ flex: 1;
727
+ margin-right: 8px;
728
+ `;
729
+ const savedActionsCss = css `
730
+ display: flex;
731
+ gap: 4px;
732
+ flex-shrink: 0;
733
+ `;
734
+ const smallBtnCss = css `
735
+ width: 22px;
736
+ height: 22px;
737
+ border-radius: 4px;
738
+ border: 1px solid rgba(40, 184, 206, 0.25);
739
+ background: rgba(40, 184, 206, 0.08);
740
+ color: ${GP_PRIMARY};
741
+ font-size: 10px;
742
+ cursor: pointer;
743
+ display: flex;
744
+ align-items: center;
745
+ justify-content: center;
746
+ font-family: inherit;
747
+ transition: all 0.15s;
748
+
749
+ &:hover {
750
+ background: rgba(40, 184, 206, 0.2);
751
+ border-color: rgba(40, 184, 206, 0.4);
752
+ }
753
+ `;
754
+ const smallBtnDangerCss = css `
755
+ &:hover {
756
+ background: rgba(220, 60, 60, 0.2);
757
+ border-color: rgba(220, 60, 60, 0.4);
758
+ color: #dc3c3c;
759
+ }
760
+ `;
761
+ // ── Backdrop (click-outside to close) ──
762
+ const backdropCss = css `
763
+ position: fixed;
764
+ inset: 0;
765
+ z-index: 899;
766
+ `;
767
+ // ── Paste Modal ──
768
+ const modalBackdropCss = css `
769
+ position: fixed;
770
+ inset: 0;
771
+ z-index: 1000;
772
+ background: rgba(0, 0, 0, 0.6);
773
+ backdrop-filter: blur(2px);
774
+ `;
775
+ const modalFadeIn = keyframes `
776
+ from { opacity: 0; transform: translate(-50%, -50%) scale(0.95); }
777
+ to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
778
+ `;
779
+ const modalCss = css `
780
+ position: fixed;
781
+ top: 50%;
782
+ left: 50%;
783
+ transform: translate(-50%, -50%);
784
+ z-index: 1001;
785
+ width: min(700px, 90vw);
786
+ max-height: 80vh;
787
+ display: flex;
788
+ flex-direction: column;
789
+ background: linear-gradient(170deg, #0f2035 0%, ${GP_SURFACE} 100%);
790
+ border: 1px solid rgba(40, 184, 206, 0.3);
791
+ border-radius: 12px;
792
+ box-shadow: 0 24px 60px rgba(0, 0, 0, 0.7);
793
+ font-family: 'Mulish', sans-serif;
794
+ animation: ${modalFadeIn} 0.2s ease-out;
795
+ `;
796
+ const modalHeaderCss = css `
797
+ display: flex;
798
+ align-items: center;
799
+ justify-content: space-between;
800
+ padding: 14px 20px;
801
+ border-bottom: 1px solid rgba(40, 184, 206, 0.15);
802
+ background: rgba(40, 184, 206, 0.04);
803
+ border-radius: 12px 12px 0 0;
804
+ `;
805
+ const modalTitleCss = css `
806
+ font-size: 14px;
807
+ font-weight: 800;
808
+ color: #e0f0f4;
809
+ text-transform: uppercase;
810
+ letter-spacing: 0.08em;
811
+ `;
812
+ const modalCloseBtnCss = css `
813
+ width: 28px;
814
+ height: 28px;
815
+ border: none;
816
+ border-radius: 6px;
817
+ background: rgba(40, 184, 206, 0.08);
818
+ color: #5a8a98;
819
+ font-size: 12px;
820
+ cursor: pointer;
821
+ display: flex;
822
+ align-items: center;
823
+ justify-content: center;
824
+ transition: all 0.15s;
825
+
826
+ &:hover {
827
+ background: rgba(220, 60, 60, 0.2);
828
+ color: #dc3c3c;
829
+ }
830
+ `;
831
+ const modalBodyCss = css `
832
+ flex: 1;
833
+ overflow-y: auto;
834
+ padding: 16px 20px;
835
+ display: flex;
836
+ flex-direction: column;
837
+ gap: 12px;
838
+ min-height: 0;
839
+ `;
840
+ const modalTextareaCss = css `
841
+ width: 100%;
842
+ min-height: 100px;
843
+ border-radius: 8px;
844
+ border: 1px solid rgba(40, 184, 206, 0.25);
845
+ background: rgba(0, 0, 0, 0.4);
846
+ color: #e0f0f4;
847
+ font-size: 13px;
848
+ font-weight: 500;
849
+ padding: 12px;
850
+ font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
851
+ resize: vertical;
852
+ line-height: 1.5;
853
+
854
+ &::placeholder {
855
+ color: #3a6070;
856
+ }
857
+
858
+ &:focus {
859
+ outline: none;
860
+ border-color: ${GP_PRIMARY};
861
+ box-shadow: 0 0 0 2px rgba(40, 184, 206, 0.15);
862
+ }
863
+ `;
864
+ const jsonPreviewCss = css `
865
+ border-radius: 8px;
866
+ border: 1px solid rgba(40, 184, 206, 0.15);
867
+ background: rgba(0, 0, 0, 0.3);
868
+ overflow: hidden;
869
+ `;
870
+ const jsonPreviewLabelCss = css `
871
+ font-size: 10px;
872
+ font-weight: 800;
873
+ color: #3a6070;
874
+ text-transform: uppercase;
875
+ letter-spacing: 0.1em;
876
+ padding: 6px 12px;
877
+ border-bottom: 1px solid rgba(40, 184, 206, 0.08);
878
+ `;
879
+ const jsonPreviewCodeCss = css `
880
+ padding: 12px;
881
+ margin: 0;
882
+ font-size: 12px;
883
+ font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
884
+ line-height: 1.6;
885
+ color: #8ab8c8;
886
+ max-height: 300px;
887
+ overflow-y: auto;
888
+ white-space: pre;
889
+ tab-size: 2;
890
+ `;
891
+ const pasteErrorCss = css `
892
+ font-size: 12px;
893
+ font-weight: 700;
894
+ color: #dc3c3c;
895
+ padding: 6px 10px;
896
+ border-radius: 6px;
897
+ background: rgba(220, 60, 60, 0.1);
898
+ border: 1px solid rgba(220, 60, 60, 0.2);
899
+ `;
900
+ const modalFooterCss = css `
901
+ display: flex;
902
+ justify-content: flex-end;
903
+ gap: 8px;
904
+ padding: 12px 20px;
905
+ border-top: 1px solid rgba(40, 184, 206, 0.15);
906
+ `;
907
+ const modalCancelBtnCss = css `
908
+ height: 32px;
909
+ padding: 0 16px;
910
+ border-radius: 6px;
911
+ border: 1px solid rgba(40, 184, 206, 0.25);
912
+ background: transparent;
913
+ color: #5a8a98;
914
+ font-size: 13px;
915
+ font-weight: 700;
916
+ cursor: pointer;
917
+ font-family: inherit;
918
+ transition: all 0.15s;
919
+
920
+ &:hover {
921
+ background: rgba(40, 184, 206, 0.08);
922
+ color: #e0f0f4;
923
+ }
924
+ `;
925
+ const modalLoadBtnCss = css `
926
+ height: 32px;
927
+ padding: 0 20px;
928
+ border-radius: 6px;
929
+ border: 1px solid rgba(40, 184, 206, 0.4);
930
+ background: rgba(40, 184, 206, 0.2);
931
+ color: ${GP_PRIMARY};
932
+ font-size: 13px;
933
+ font-weight: 800;
934
+ text-transform: uppercase;
935
+ letter-spacing: 0.05em;
936
+ cursor: pointer;
937
+ font-family: inherit;
938
+ transition: all 0.15s;
939
+
940
+ &:hover {
941
+ background: rgba(40, 184, 206, 0.35);
942
+ border-color: ${GP_PRIMARY};
943
+ }
944
+ `;
945
+ // ── JSON syntax colors ──
946
+ const jsonKeyCss = css `
947
+ color: ${GP_ACCENT};
948
+ `;
949
+ const jsonStringCss = css `
950
+ color: #8bbb6a;
951
+ `;
952
+ const jsonBoolCss = css `
953
+ color: #d4872a;
954
+ `;
955
+ const jsonNumCss = css `
956
+ color: #c4a0e8;
957
+ `;
958
+ const jsonPunctCss = css `
959
+ color: #5a6a78;
960
+ `;
961
+ const jsonErrorTextCss = css `
962
+ color: #dc3c3c;
963
+ `;
964
+ // ── Flash ──
965
+ const flashFade = keyframes `
966
+ 0% { opacity: 0; transform: translateY(6px); }
967
+ 15% { opacity: 1; transform: translateY(0); }
968
+ 85% { opacity: 1; transform: translateY(0); }
969
+ 100% { opacity: 0; transform: translateY(-6px); }
970
+ `;
971
+ const flashCss = css `
972
+ position: absolute;
973
+ bottom: 100%;
974
+ left: 0;
975
+ right: 0;
976
+ margin-bottom: 8px;
977
+ padding: 6px 14px;
978
+ font-size: 12px;
979
+ font-weight: 700;
980
+ color: ${GP_PRIMARY};
981
+ text-align: center;
982
+ background: linear-gradient(145deg, ${GP_SURFACE}, ${GP_DARK});
983
+ border: 1px solid rgba(40, 184, 206, 0.3);
984
+ border-radius: 8px;
985
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
986
+ white-space: nowrap;
987
+ pointer-events: none;
988
+ animation: ${flashFade} 1.5s ease-out forwards;
989
+ `;
990
+ // ── Game Options toggles ──
991
+ const toggleRowCss = css `
992
+ grid-column: 1 / -1;
993
+ display: flex;
994
+ align-items: center;
995
+ gap: 8px;
996
+ margin-top: 4px;
997
+ padding: 4px 0;
998
+ cursor: pointer;
999
+ `;
1000
+ const checkboxCss = css `
1001
+ appearance: none;
1002
+ width: 16px;
1003
+ height: 16px;
1004
+ border-radius: 4px;
1005
+ border: 1px solid rgba(40, 184, 206, 0.35);
1006
+ background: rgba(0, 0, 0, 0.3);
1007
+ cursor: pointer;
1008
+ flex-shrink: 0;
1009
+ position: relative;
1010
+ transition: all 0.15s;
1011
+
1012
+ &:checked {
1013
+ background: rgba(40, 184, 206, 0.2);
1014
+ border-color: ${GP_PRIMARY};
1015
+ }
1016
+
1017
+ &:checked::after {
1018
+ content: '\u2713';
1019
+ position: absolute;
1020
+ top: 50%;
1021
+ left: 50%;
1022
+ transform: translate(-50%, -50%);
1023
+ font-size: 11px;
1024
+ color: ${GP_PRIMARY};
1025
+ font-weight: 700;
1026
+ }
1027
+
1028
+ &:hover {
1029
+ border-color: rgba(40, 184, 206, 0.5);
1030
+ }
1031
+ `;
1032
+ const toggleLabelCss = css `
1033
+ font-size: 12px;
1034
+ font-weight: 600;
1035
+ color: #5a8a98;
1036
+ `;
1037
+ //# sourceMappingURL=DevToolsHub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevToolsHub.js","sourceRoot":"","sources":["../../../../src/components/material/GameTable/DevToolsHub.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export * from './DevToolsHub';
1
2
  export * from './focus';
2
3
  export * from './GameTable';
3
4
  export * from './GameTableContext';
@@ -1,3 +1,4 @@
1
+ export * from './DevToolsHub';
1
2
  export * from './focus';
2
3
  export * from './GameTable';
3
4
  export * from './GameTableContext';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/material/GameTable/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/material/GameTable/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA"}
@@ -6,23 +6,23 @@ import { getFirstStockItem, getFirstStockItemTransforms } from './getFirstStockI
6
6
  import { ItemAnimations } from './ItemAnimations';
7
7
  import { toClosestRotations, toSingleRotation } from './rotations.utils';
8
8
  import { transformItem } from './transformItem.util';
9
- // Use action.id as key instead of object reference, because Immer proxies in the reducer
10
- // differ from the finalized objects used during React rendering.
11
- const createdItemIndexes = new Map();
12
- const preQuantitySnapshots = new Map();
9
+ // FIFO queue keyed by consequence index avoids dependency on unstable action IDs
10
+ // (action.id can change from "local-xxx" to server-assigned id between getPreDuration and getPostDuration)
11
+ const preQuantityQueue = new Map();
12
+ const createdItemEntries = new Map();
13
13
  function getConsequenceIndex(action) {
14
14
  const step = action.animation?.step;
15
15
  return (step === AnimationStep.BEFORE_MOVE || step === AnimationStep.AFTER_UNDO)
16
16
  ? action.played - 1
17
17
  : action.played - 2;
18
18
  }
19
- function getInnerMap(map, key) {
20
- let inner = map.get(key);
21
- if (!inner) {
22
- inner = new Map();
23
- map.set(key, inner);
19
+ function getOrCreateArray(map, key) {
20
+ let arr = map.get(key);
21
+ if (!arr) {
22
+ arr = [];
23
+ map.set(key, arr);
24
24
  }
25
- return inner;
25
+ return arr;
26
26
  }
27
27
  export class CreateItemAnimations extends ItemAnimations {
28
28
  duration;
@@ -36,7 +36,7 @@ export class CreateItemAnimations extends ItemAnimations {
36
36
  const rules = new context.Rules(context.game, { player: context.playerId });
37
37
  const items = rules.game.items?.[move.itemType] ?? [];
38
38
  const key = getConsequenceIndex(context.action);
39
- getInnerMap(preQuantitySnapshots, context.action.id).set(key, items.map((item) => item.quantity));
39
+ getOrCreateArray(preQuantityQueue, key).push(items.map((item) => item.quantity));
40
40
  return 0;
41
41
  }
42
42
  getPostDuration(move, context) {
@@ -46,28 +46,11 @@ export class CreateItemAnimations extends ItemAnimations {
46
46
  const actionId = context.action.id;
47
47
  // Start with the prediction — always available and correct except in simultaneous phases
48
48
  let createdIndex = rules.mutator(move.itemType).getItemCreationIndex(move.item);
49
- // Try to improve with a snapshot comparison (handles simultaneous phases correctly)
50
- let snapshots = preQuantitySnapshots.get(actionId);
51
- let snapshot = snapshots?.get(key);
52
- // Fallback: action.id may have changed (local-xxx → server id) since getPreDuration
53
- if (!snapshot) {
54
- for (const [id, innerMap] of preQuantitySnapshots) {
55
- const candidate = innerMap.get(key);
56
- if (candidate) {
57
- snapshots = innerMap;
58
- snapshot = candidate;
59
- innerMap.delete(key);
60
- if (innerMap.size === 0)
61
- preQuantitySnapshots.delete(id);
62
- break;
63
- }
64
- }
65
- }
66
- else {
67
- snapshots.delete(key);
68
- if (snapshots.size === 0)
69
- preQuantitySnapshots.delete(actionId);
70
- }
49
+ // Dequeue the snapshot (FIFO immune to action ID changes)
50
+ const queue = preQuantityQueue.get(key);
51
+ const snapshot = queue?.shift();
52
+ if (queue && queue.length === 0)
53
+ preQuantityQueue.delete(key);
71
54
  if (snapshot) {
72
55
  for (let i = 0; i < items.length; i++) {
73
56
  const oldQuantity = i < snapshot.length ? (snapshot[i] ?? 1) : 0;
@@ -78,14 +61,17 @@ export class CreateItemAnimations extends ItemAnimations {
78
61
  }
79
62
  }
80
63
  }
81
- getInnerMap(createdItemIndexes, actionId).set(key, createdIndex);
82
- // Clean up to prevent memory leaks (Map doesn't auto-collect like WeakMap)
64
+ const entry = { actionId, index: createdIndex, itemType: move.itemType };
65
+ getOrCreateArray(createdItemEntries, key).push(entry);
66
+ // Clean up to prevent memory leaks
83
67
  setTimeout(() => {
84
- const map = createdItemIndexes.get(actionId);
85
- if (map) {
86
- map.delete(key);
87
- if (map.size === 0)
88
- createdItemIndexes.delete(actionId);
68
+ const entries = createdItemEntries.get(key);
69
+ if (entries) {
70
+ const idx = entries.indexOf(entry);
71
+ if (idx !== -1)
72
+ entries.splice(idx, 1);
73
+ if (entries.length === 0)
74
+ createdItemEntries.delete(key);
89
75
  }
90
76
  }, this.duration * 2000);
91
77
  return this.duration;
@@ -129,19 +115,17 @@ export class CreateItemAnimations extends ItemAnimations {
129
115
  isItemToAnimate(context, animation) {
130
116
  const { type, index, displayIndex } = context;
131
117
  const key = getConsequenceIndex(animation.action);
132
- let createdIndex = createdItemIndexes.get(animation.action.id)?.get(key);
133
- // Fallback: action.id may have changed during notification reconciliation
134
- // (local id "local-xxx" replaced by server-assigned id), so search all entries
135
- if (createdIndex === undefined) {
136
- for (const [, innerMap] of createdItemIndexes) {
137
- const candidate = innerMap.get(key);
138
- if (candidate !== undefined) {
139
- createdIndex = candidate;
140
- break;
141
- }
142
- }
118
+ const entries = createdItemEntries.get(key);
119
+ // Primary: match by action ID
120
+ let entry = entries?.find(e => e.actionId === animation.action.id);
121
+ // Fallback: action.id may have changed (local server), match by itemType
122
+ if (!entry) {
123
+ entry = entries?.findLast(e => e.itemType === animation.move.itemType);
124
+ // Migrate the entry to the new action ID so subsequent calls find it directly
125
+ if (entry)
126
+ entry.actionId = animation.action.id;
143
127
  }
144
- if (animation.move.itemType !== type || createdIndex !== index)
128
+ if (animation.move.itemType !== type || entry?.index !== index)
145
129
  return false;
146
130
  const quantity = getItemFromContext(context).quantity ?? 1;
147
131
  const createdQuantity = animation.move.item.quantity ?? 1;
@@ -1 +1 @@
1
- {"version":3,"file":"CreateItemAnimations.js","sourceRoot":"","sources":["../../../../src/components/material/animations/CreateItemAnimations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CreateItemAnimations.js","sourceRoot":"","sources":["../../../../src/components/material/animations/CreateItemAnimations.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamepark/react-game",
3
- "version": "7.5.3",
3
+ "version": "7.5.8",
4
4
  "type": "module",
5
5
  "description": "React components & tools to create a Board Game user interface for Game Park",
6
6
  "author": "Romain Fromi <romain@game-park.com> (https://game-park.com/)",