@gamepark/react-game 7.5.11 → 7.5.13

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.
Files changed (33) hide show
  1. package/dist/components/GameProvider/GameProvider.js +10 -2
  2. package/dist/components/GameProvider/GameProvider.js.map +1 -1
  3. package/dist/components/PlayerPanel/StyledPlayerPanel.js.map +1 -1
  4. package/dist/components/material/GameTable/DevTools/DevToolEntry.d.ts +20 -0
  5. package/dist/components/material/GameTable/DevTools/DevToolEntry.js +53 -0
  6. package/dist/components/material/GameTable/DevTools/DevToolEntry.js.map +1 -0
  7. package/dist/components/material/GameTable/DevTools/DevToolsHub.d.ts +12 -0
  8. package/dist/components/material/GameTable/DevTools/DevToolsHub.js +200 -0
  9. package/dist/components/material/GameTable/DevTools/DevToolsHub.js.map +1 -0
  10. package/dist/components/material/GameTable/DevTools/ExportPanel.d.ts +7 -0
  11. package/dist/components/material/GameTable/DevTools/ExportPanel.js +80 -0
  12. package/dist/components/material/GameTable/DevTools/ExportPanel.js.map +1 -0
  13. package/dist/components/material/GameTable/DevTools/GamePanel.d.ts +9 -0
  14. package/dist/components/material/GameTable/DevTools/GamePanel.js +183 -0
  15. package/dist/components/material/GameTable/DevTools/GamePanel.js.map +1 -0
  16. package/dist/components/material/GameTable/DevTools/SaveLoadPanel.d.ts +7 -0
  17. package/dist/components/material/GameTable/DevTools/SaveLoadPanel.js +334 -0
  18. package/dist/components/material/GameTable/DevTools/SaveLoadPanel.js.map +1 -0
  19. package/dist/components/material/GameTable/DevTools/index.d.ts +3 -0
  20. package/dist/components/material/GameTable/DevTools/index.js +3 -0
  21. package/dist/components/material/GameTable/DevTools/index.js.map +1 -0
  22. package/dist/components/material/GameTable/index.d.ts +1 -1
  23. package/dist/components/material/GameTable/index.js +1 -1
  24. package/dist/components/material/GameTable/index.js.map +1 -1
  25. package/dist/components/material/animations/AnimationBuilder.d.ts +2 -2
  26. package/dist/components/material/animations/AnimationBuilder.js +1 -1
  27. package/dist/components/material/animations/AnimationBuilder.js.map +1 -1
  28. package/dist/components/material/animations/CreateItemAnimations.js +15 -56
  29. package/dist/components/material/animations/CreateItemAnimations.js.map +1 -1
  30. package/dist/components/tutorial/MaterialTutorial.d.ts +1 -1
  31. package/dist/hooks/useLegalMoves.js +1 -3
  32. package/dist/hooks/useLegalMoves.js.map +1 -1
  33. package/package.json +3 -3
@@ -1,29 +1,13 @@
1
1
  import { keyframes } from '@emotion/react';
2
- import { AnimationStep } from '@gamepark/react-client';
3
2
  import { fadeIn } from '../../../css';
4
3
  import { defaultOrigin, getItemFromContext, getOriginDeltaPosition } from '../../../locators';
5
4
  import { getFirstStockItem, getFirstStockItemTransforms } from './getFirstStockItemTransforms.util';
6
5
  import { ItemAnimations } from './ItemAnimations';
7
6
  import { toClosestRotations, toSingleRotation } from './rotations.utils';
8
7
  import { transformItem } from './transformItem.util';
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
- function getConsequenceIndex(action) {
14
- const step = action.animation?.step;
15
- return (step === AnimationStep.BEFORE_MOVE || step === AnimationStep.AFTER_UNDO)
16
- ? action.played - 1
17
- : action.played - 2;
18
- }
19
- function getOrCreateArray(map, key) {
20
- let arr = map.get(key);
21
- if (!arr) {
22
- arr = [];
23
- map.set(key, arr);
24
- }
25
- return arr;
26
- }
8
+ // Pre-quantity snapshot captured synchronously between getPreDuration and getPostDuration
9
+ // within the same reducer call. No keying needed only one CreateItem is processed at a time.
10
+ let pendingSnapshot;
27
11
  export class CreateItemAnimations extends ItemAnimations {
28
12
  duration;
29
13
  trajectory;
@@ -35,22 +19,17 @@ export class CreateItemAnimations extends ItemAnimations {
35
19
  getPreDuration(move, context) {
36
20
  const rules = new context.Rules(context.game, { player: context.playerId });
37
21
  const items = rules.game.items?.[move.itemType] ?? [];
38
- const key = getConsequenceIndex(context.action);
39
- getOrCreateArray(preQuantityQueue, key).push(items.map((item) => item.quantity));
22
+ pendingSnapshot = items.map((item) => item.quantity);
40
23
  return 0;
41
24
  }
42
25
  getPostDuration(move, context) {
43
26
  const rules = new context.Rules(context.game, { player: context.playerId });
44
27
  const items = rules.game.items?.[move.itemType] ?? [];
45
- const key = getConsequenceIndex(context.action);
46
- const actionId = context.action.id;
47
28
  // Start with the prediction — always available and correct except in simultaneous phases
48
29
  let createdIndex = rules.mutator(move.itemType).getItemCreationIndex(move.item);
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);
30
+ // Improve with snapshot comparison: find the first item whose quantity increased
31
+ const snapshot = pendingSnapshot;
32
+ pendingSnapshot = undefined;
54
33
  if (snapshot) {
55
34
  for (let i = 0; i < items.length; i++) {
56
35
  const oldQuantity = i < snapshot.length ? (snapshot[i] ?? 1) : 0;
@@ -61,19 +40,11 @@ export class CreateItemAnimations extends ItemAnimations {
61
40
  }
62
41
  }
63
42
  }
64
- const entry = { actionId, index: createdIndex, itemType: move.itemType };
65
- getOrCreateArray(createdItemEntries, key).push(entry);
66
- // Clean up to prevent memory leaks
67
- setTimeout(() => {
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);
75
- }
76
- }, this.duration * 2000);
43
+ // Compute the range of displayIndexes to animate
44
+ const quantity = items[createdIndex]?.quantity ?? 1;
45
+ const createdQuantity = move.item.quantity ?? 1;
46
+ // Store animation data on the action (Immer draft) for use in isItemToAnimate
47
+ context.action.animationData = { createdIndex, displayIndexes: [quantity - createdQuantity, quantity - 1] };
77
48
  return this.duration;
78
49
  }
79
50
  getItemAnimation(context, animation, boundaries) {
@@ -114,22 +85,10 @@ export class CreateItemAnimations extends ItemAnimations {
114
85
  }
115
86
  isItemToAnimate(context, animation) {
116
87
  const { type, index, displayIndex } = context;
117
- const key = getConsequenceIndex(animation.action);
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;
127
- }
128
- if (animation.move.itemType !== type || entry?.index !== index)
88
+ const data = animation.action.animationData;
89
+ if (!data || animation.move.itemType !== type || data.createdIndex !== index)
129
90
  return false;
130
- const quantity = getItemFromContext(context).quantity ?? 1;
131
- const createdQuantity = animation.move.item.quantity ?? 1;
132
- return displayIndex >= quantity - createdQuantity;
91
+ return displayIndex >= data.displayIndexes[0] && displayIndex <= data.displayIndexes[1];
133
92
  }
134
93
  getKeyframesFromOrigin(origin, _animation, _context) {
135
94
  return keyframes `
@@ -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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"}
@@ -12,7 +12,7 @@ export declare abstract class MaterialTutorial<P extends number = number, M exte
12
12
  material(game: MaterialGame<P, M, L>, type: M): Material<P, M, L>;
13
13
  location(type: L): LocationBuilder<P, L>;
14
14
  setupTutorial(): [MaterialGame<P, M, L>, Player<P>[]];
15
- getNextMove(rules: MaterialRules<P, M, L>): MaterialMove<P, M, L, number> | undefined;
15
+ getNextMove(rules: MaterialRules<P, M, L>): MaterialMove<P, M, L, number, number> | undefined;
16
16
  }
17
17
  export declare enum TutorialStepType {
18
18
  Popup = 1,
@@ -1,11 +1,9 @@
1
1
  import { useGameSelector } from '@gamepark/react-client';
2
- import { useIsAnimatingPlayerAction } from '../components/material/utils/useIsAnimatingPlayerAction';
3
2
  const EMPTY_MOVES = [];
4
3
  export function useLegalMoves(predicate) {
5
4
  const legalMoves = useGameSelector((state) => state.legalMoves);
6
5
  const gameOver = useGameSelector((state) => state.gameOver);
7
- const isAnimatingPlayerAction = useIsAnimatingPlayerAction();
8
- if (gameOver || isAnimatingPlayerAction)
6
+ if (gameOver)
9
7
  return EMPTY_MOVES;
10
8
  return predicate ? legalMoves.filter(predicate) : legalMoves;
11
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useLegalMoves.js","sourceRoot":"","sources":["../../src/hooks/useLegalMoves.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAA;AAEpG,MAAM,WAAW,GAAY,EAAE,CAAA;AAE/B,MAAM,UAAU,aAAa,CAAa,SAAmC;IAC3E,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAC/D,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC3D,MAAM,uBAAuB,GAAG,0BAA0B,EAAE,CAAA;IAC5D,IAAI,QAAQ,IAAI,uBAAuB;QAAE,OAAO,WAAW,CAAA;IAC3D,OAAO,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;AAC9D,CAAC;AAED,MAAM,UAAU,YAAY,CAAa,SAAmC;IAC1E,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IACtC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAChD,CAAC"}
1
+ {"version":3,"file":"useLegalMoves.js","sourceRoot":"","sources":["../../src/hooks/useLegalMoves.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,MAAM,WAAW,GAAY,EAAE,CAAA;AAE/B,MAAM,UAAU,aAAa,CAAa,SAAmC;IAC3E,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAC/D,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC3D,IAAI,QAAQ;QAAE,OAAO,WAAW,CAAA;IAChC,OAAO,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;AAC9D,CAAC;AAED,MAAM,UAAU,YAAY,CAAa,SAAmC;IAC1E,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IACtC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAChD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamepark/react-game",
3
- "version": "7.5.11",
3
+ "version": "7.5.13",
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/)",
@@ -25,7 +25,7 @@
25
25
  "@dnd-kit/modifiers": "^9.0.0",
26
26
  "@gamepark/api-types": "^1.0.0",
27
27
  "@gamepark/avataaars": "^3.0.0",
28
- "@gamepark/react-client": "^7.5.1",
28
+ "@gamepark/react-client": "^7.5.3",
29
29
  "dayjs": "^1.11.19",
30
30
  "fscreen": "^1.2.0",
31
31
  "i18next-http-backend": "^3.0.2",
@@ -47,7 +47,7 @@
47
47
  "@fortawesome/free-regular-svg-icons": "^7.2.0",
48
48
  "@fortawesome/free-solid-svg-icons": "^7.2.0",
49
49
  "@fortawesome/react-fontawesome": "^3.2.0",
50
- "@gamepark/rules-api": "^7.5.0",
50
+ "@gamepark/rules-api": "^7.5.1",
51
51
  "@types/fscreen": "^1.0.4",
52
52
  "@types/node": "^25.3.1",
53
53
  "@types/react": "^19.2.14",