@gamepark/react-game 7.0.3 → 7.2.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.
Files changed (66) hide show
  1. package/dist/components/PlayerPanel/Counters.d.ts +1 -1
  2. package/dist/components/dialogs/RulesDialog/MaterialRulesDialog.js +1 -1
  3. package/dist/components/material/DraggableMaterial.d.ts +2 -1
  4. package/dist/components/material/DraggableMaterial.js +9 -5
  5. package/dist/components/material/DraggableMaterial.js.map +1 -1
  6. package/dist/components/material/GameTable/DropPreview.d.ts +4 -2
  7. package/dist/components/material/GameTable/DropPreview.js +5 -3
  8. package/dist/components/material/GameTable/DropPreview.js.map +1 -1
  9. package/dist/components/material/GameTable/DynamicItemsDisplay.d.ts +3 -3
  10. package/dist/components/material/GameTable/DynamicItemsDisplay.js +2 -2
  11. package/dist/components/material/GameTable/DynamicItemsDisplay.js.map +1 -1
  12. package/dist/components/material/GameTable/GameMaterialDisplay.d.ts +7 -6
  13. package/dist/components/material/GameTable/GameMaterialDisplay.js +3 -6
  14. package/dist/components/material/GameTable/GameMaterialDisplay.js.map +1 -1
  15. package/dist/components/material/GameTable/GameTable.js +2 -1
  16. package/dist/components/material/GameTable/GameTable.js.map +1 -1
  17. package/dist/components/material/GameTable/StaticItemsDisplay.d.ts +3 -3
  18. package/dist/components/material/GameTable/StaticItemsDisplay.js +7 -4
  19. package/dist/components/material/GameTable/StaticItemsDisplay.js.map +1 -1
  20. package/dist/components/material/GameTable/StaticLocationsDisplay.d.ts +3 -3
  21. package/dist/components/material/GameTable/StaticLocationsDisplay.js +5 -3
  22. package/dist/components/material/GameTable/StaticLocationsDisplay.js.map +1 -1
  23. package/dist/components/material/animations/CreateItemAnimations.d.ts +2 -2
  24. package/dist/components/material/animations/CreateItemAnimations.js +14 -4
  25. package/dist/components/material/animations/CreateItemAnimations.js.map +1 -1
  26. package/dist/components/material/animations/DeleteItemAnimations.d.ts +2 -2
  27. package/dist/components/material/animations/DeleteItemAnimations.js +14 -4
  28. package/dist/components/material/animations/DeleteItemAnimations.js.map +1 -1
  29. package/dist/components/material/animations/ItemAnimations.d.ts +2 -2
  30. package/dist/components/material/animations/ItemAnimations.js +1 -1
  31. package/dist/components/material/animations/ItemAnimations.js.map +1 -1
  32. package/dist/components/material/animations/MaterialAnimations.d.ts +2 -2
  33. package/dist/components/material/animations/MaterialAnimations.js +2 -2
  34. package/dist/components/material/animations/MaterialAnimations.js.map +1 -1
  35. package/dist/components/material/animations/MaterialGameAnimations.d.ts +2 -2
  36. package/dist/components/material/animations/MaterialGameAnimations.js +2 -2
  37. package/dist/components/material/animations/MaterialGameAnimations.js.map +1 -1
  38. package/dist/components/material/animations/MoveItemAnimations.d.ts +3 -3
  39. package/dist/components/material/animations/MoveItemAnimations.js +16 -7
  40. package/dist/components/material/animations/MoveItemAnimations.js.map +1 -1
  41. package/dist/components/material/animations/MoveItemAtOnceAnimations.d.ts +3 -3
  42. package/dist/components/material/animations/MoveItemAtOnceAnimations.js +13 -3
  43. package/dist/components/material/animations/MoveItemAtOnceAnimations.js.map +1 -1
  44. package/dist/components/material/animations/getFirstStockItemTransforms.util.d.ts +2 -0
  45. package/dist/components/material/animations/getFirstStockItemTransforms.util.js +8 -0
  46. package/dist/components/material/animations/getFirstStockItemTransforms.util.js.map +1 -1
  47. package/dist/css/buttonCss.js +1 -0
  48. package/dist/css/buttonCss.js.map +1 -1
  49. package/dist/locators/DelegateLocator.d.ts +10 -0
  50. package/dist/locators/DelegateLocator.js +13 -0
  51. package/dist/locators/DelegateLocator.js.map +1 -0
  52. package/dist/locators/LocationOrigin.d.ts +17 -0
  53. package/dist/locators/LocationOrigin.js +35 -0
  54. package/dist/locators/LocationOrigin.js.map +1 -0
  55. package/dist/locators/Locator.d.ts +16 -0
  56. package/dist/locators/Locator.js +22 -0
  57. package/dist/locators/Locator.js.map +1 -1
  58. package/dist/locators/PlaceholderLocator.d.ts +9 -0
  59. package/dist/locators/PlaceholderLocator.js +13 -0
  60. package/dist/locators/PlaceholderLocator.js.map +1 -0
  61. package/dist/locators/index.d.ts +3 -0
  62. package/dist/locators/index.js +3 -0
  63. package/dist/locators/index.js.map +1 -1
  64. package/dist/utilities/translation.util.js +1 -0
  65. package/dist/utilities/translation.util.js.map +1 -1
  66. package/package.json +78 -82
@@ -1,10 +1,10 @@
1
1
  import { Interpolation, Theme } from '@emotion/react';
2
2
  import { Animation, Animations } from '@gamepark/react-client';
3
- import { DisplayedItem, ItemMove, MaterialGame, MaterialMove } from '@gamepark/rules-api';
3
+ import { DisplayedItem, GridBoundaries, ItemMove, MaterialGame, MaterialMove } from '@gamepark/rules-api';
4
4
  import { ItemContext, MaterialContext } from '../../../locators';
5
5
  import { MaterialGameAnimationContext } from './MaterialGameAnimations';
6
6
  export declare class ItemAnimations<P extends number = number, M extends number = number, L extends number = number> extends Animations<MaterialGame<P, M, L>, MaterialMove<P, M, L>, P> {
7
- getItemAnimation(_context: ItemContext<P, M, L>, _animation: Animation<MaterialMove<P, M, L>>): Interpolation<Theme>;
7
+ getItemAnimation(_context: ItemContext<P, M, L>, _animation: Animation<MaterialMove<P, M, L>>, _boundaries: GridBoundaries): Interpolation<Theme>;
8
8
  getMaterialContext({ Rules, game, material, locators, playerId }: MaterialGameAnimationContext<P, M, L>): MaterialContext<P, M, L>;
9
9
  getItemContext(context: MaterialGameAnimationContext<P, M, L>, item: Omit<DisplayedItem<M>, 'displayIndex'>): Omit<ItemContext<P, M, L>, 'displayIndex'>;
10
10
  protected getTransformKeyframes(origin: string, destination: string, _animation: Animation<ItemMove<P, M, L>>, _context: ItemContext<P, M, L>): {
@@ -1,7 +1,7 @@
1
1
  import { keyframes } from '@emotion/react';
2
2
  import { Animations } from '@gamepark/react-client';
3
3
  export class ItemAnimations extends Animations {
4
- getItemAnimation(_context, _animation) {
4
+ getItemAnimation(_context, _animation, _boundaries) {
5
5
  return;
6
6
  }
7
7
  getMaterialContext({ Rules, game, material, locators, playerId }) {
@@ -1 +1 @@
1
- {"version":3,"file":"ItemAnimations.js","sourceRoot":"","sources":["../../../../src/components/material/animations/ItemAnimations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAS,MAAM,gBAAgB,CAAA;AAChE,OAAO,EAAa,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAK9D,MAAM,OAAO,cACX,SAAQ,UAA2D;IAEnE,gBAAgB,CAAC,QAA8B,EAAE,UAA4C;QAC3F,OAAM;IACR,CAAC;IAED,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAyC;QACrG,OAAO,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAA2B,EAAE,QAAQ,EAAE,QAAS,EAAE,QAAQ,EAAE,QAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;IAC/I,CAAC;IAED,cAAc,CAAC,OAA8C,EAAE,IAA4C;QACzG,OAAO,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,CAAA;IACzD,CAAC;IAES,qBAAqB,CAAC,MAAc,EAAE,WAAmB,EAAE,UAAwC,EAAE,QAA8B;QAC3I,OAAO,SAAS,CAAA;;qBAEC,MAAM;;;qBAGN,WAAW;;KAE3B,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"ItemAnimations.js","sourceRoot":"","sources":["../../../../src/components/material/animations/ItemAnimations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAS,MAAM,gBAAgB,CAAA;AAChE,OAAO,EAAa,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAK9D,MAAM,OAAO,cACX,SAAQ,UAA2D;IAEnE,gBAAgB,CAAC,QAA8B,EAAE,UAA4C,EAAE,WAA2B;QACxH,OAAM;IACR,CAAC;IAED,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAyC;QACrG,OAAO,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAA2B,EAAE,QAAQ,EAAE,QAAS,EAAE,QAAQ,EAAE,QAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;IAC/I,CAAC;IAED,cAAc,CAAC,OAA8C,EAAE,IAA4C;QACzG,OAAO,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,CAAA;IACzD,CAAC;IAES,qBAAqB,CAAC,MAAc,EAAE,WAAmB,EAAE,UAAwC,EAAE,QAA8B;QAC3I,OAAO,SAAS,CAAA;;qBAEC,MAAM;;;qBAGN,WAAW;;KAE3B,CAAA;IACH,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
1
  import { Interpolation, Theme } from '@emotion/react';
2
2
  import { Animation, Animations } from '@gamepark/react-client';
3
- import { ItemMove, ItemMoveType, MaterialGame, MaterialMove, MaterialRules } from '@gamepark/rules-api';
3
+ import { GridBoundaries, ItemMove, ItemMoveType, MaterialGame, MaterialMove, MaterialRules } from '@gamepark/rules-api';
4
4
  import { ItemContext, Locator } from '../../../locators';
5
5
  import { MaterialDescription } from '../MaterialDescription';
6
6
  import { ItemAnimations } from './ItemAnimations';
@@ -9,7 +9,7 @@ export declare class MaterialAnimations<P extends number = number, M extends num
9
9
  protected readonly animations: Partial<Record<ItemMoveType, ItemAnimations<P, M, L>>>;
10
10
  constructor(duration?: number, droppedItemDuration?: number);
11
11
  getDuration(move: ItemMove<P, M, L>, context: MaterialGameAnimationContext<P, M, L>): number;
12
- getItemAnimation(context: ItemContext<P, M, L>, animation: Animation<MaterialMove<P, M, L>>): Interpolation<Theme>;
12
+ getItemAnimation(context: ItemContext<P, M, L>, animation: Animation<MaterialMove<P, M, L>>, boundaries: GridBoundaries): Interpolation<Theme>;
13
13
  }
14
14
  export type ItemAnimationContext<P extends number = number, M extends number = number, L extends number = number> = {
15
15
  material: Record<M, MaterialDescription<P, M, L>>;
@@ -24,10 +24,10 @@ export class MaterialAnimations extends Animations {
24
24
  getDuration(move, context) {
25
25
  return this.animations[move.type]?.getDuration(move, context) ?? 0;
26
26
  }
27
- getItemAnimation(context, animation) {
27
+ getItemAnimation(context, animation, boundaries) {
28
28
  if (animation.move.kind !== MoveKind.ItemMove)
29
29
  return;
30
- return this.animations[animation.move.type]?.getItemAnimation(context, animation);
30
+ return this.animations[animation.move.type]?.getItemAnimation(context, animation, boundaries);
31
31
  }
32
32
  }
33
33
  //# sourceMappingURL=MaterialAnimations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MaterialAnimations.js","sourceRoot":"","sources":["../../../../src/components/material/animations/MaterialAnimations.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAY,YAAY,EAA6C,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAGjH,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAGzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,OAAO,kBACX,SAAQ,UAA2D;IAEhD,UAAU,CAAwD;IAErF,YAAY,QAAQ,GAAG,CAAC,EAAE,mBAAmB,GAAG,GAAG;QACjD,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,UAAU,GAAG;YAChB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,oBAAoB,CAAC,QAAQ,CAAC;YACzD,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,kBAAkB,CAAC,QAAQ,EAAE,mBAAmB,CAAC;YAC1E,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,IAAI,wBAAwB,CAAC,QAAQ,CAAC;YACjE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,CAAC;YAC9E,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,IAAI,0BAA0B,CAAC,QAAQ,CAAC;YACrE,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,iBAAiB,CAAC,CAAC,CAAC;YAChD,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,kBAAkB,CAAC,QAAQ,CAAC;SACtD,CAAA;IACH,CAAC;IAED,WAAW,CAAC,IAAuB,EAAE,OAA8C;QACjF,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACpE,CAAC;IAED,gBAAgB,CAAC,OAA6B,EAAE,SAA2C;QACzF,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ;YAAE,OAAM;QACrD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IACnF,CAAC;CACF"}
1
+ {"version":3,"file":"MaterialAnimations.js","sourceRoot":"","sources":["../../../../src/components/material/animations/MaterialAnimations.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAA4B,YAAY,EAA6C,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAGjI,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAGzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,OAAO,kBACX,SAAQ,UAA2D;IAEhD,UAAU,CAAwD;IAErF,YAAY,QAAQ,GAAG,CAAC,EAAE,mBAAmB,GAAG,GAAG;QACjD,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,UAAU,GAAG;YAChB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,oBAAoB,CAAC,QAAQ,CAAC;YACzD,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,kBAAkB,CAAC,QAAQ,EAAE,mBAAmB,CAAC;YAC1E,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,IAAI,wBAAwB,CAAC,QAAQ,CAAC;YACjE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,CAAC;YAC9E,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,IAAI,0BAA0B,CAAC,QAAQ,CAAC;YACrE,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,iBAAiB,CAAC,CAAC,CAAC;YAChD,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,kBAAkB,CAAC,QAAQ,CAAC;SACtD,CAAA;IACH,CAAC;IAED,WAAW,CAAC,IAAuB,EAAE,OAA8C;QACjF,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACpE,CAAC;IAED,gBAAgB,CAAC,OAA6B,EAAE,SAA2C,EAAE,UAA0B;QACrH,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ;YAAE,OAAM;QACrD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;IAC/F,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
1
  import { Interpolation, Theme } from '@emotion/react';
2
2
  import { Animation, AnimationContext, Animations, DisplayedAction } from '@gamepark/react-client';
3
- import { MaterialGame, MaterialMove } from '@gamepark/rules-api';
3
+ import { GridBoundaries, MaterialGame, MaterialMove } from '@gamepark/rules-api';
4
4
  import { ItemContext, MaterialContext } from '../../../locators';
5
5
  import { GameContext } from '../../GameProvider';
6
6
  import { MaterialSoundConfig } from '../sound';
@@ -29,6 +29,6 @@ declare class AnimationConfig<P extends number = number, M extends number = numb
29
29
  sound(sound: string | MaterialSoundConfig | false): this;
30
30
  none(): this;
31
31
  getDuration(move: MaterialMove<P, M, L>, context: MaterialGameAnimationContext<P, M, L>): number;
32
- getItemAnimation(context: ItemContext<P, M, L>, animation: Animation<MaterialMove<P, M, L>>): Interpolation<Theme>;
32
+ getItemAnimation(context: ItemContext<P, M, L>, animation: Animation<MaterialMove<P, M, L>>, boundaries: GridBoundaries): Interpolation<Theme>;
33
33
  }
34
34
  export {};
@@ -71,8 +71,8 @@ class AnimationConfig extends ItemAnimations {
71
71
  return context.step === AnimationStep.BEFORE_MOVE ? this.d ?? 0 : 0;
72
72
  return new MaterialAnimations(this.d).getDuration(move, context);
73
73
  }
74
- getItemAnimation(context, animation) {
75
- return new MaterialAnimations(this.d).getItemAnimation(context, animation);
74
+ getItemAnimation(context, animation, boundaries) {
75
+ return new MaterialAnimations(this.d).getItemAnimation(context, animation, boundaries);
76
76
  }
77
77
  }
78
78
  //# sourceMappingURL=MaterialGameAnimations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MaterialGameAnimations.js","sourceRoot":"","sources":["../../../../src/components/material/animations/MaterialGameAnimations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MaterialGameAnimations.js","sourceRoot":"","sources":["../../../../src/components/material/animations/MaterialGameAnimations.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Interpolation, Theme } from '@emotion/react';
2
2
  import { Animation } from '@gamepark/react-client';
3
- import { MaterialItem, MoveItem } from '@gamepark/rules-api';
3
+ import { GridBoundaries, MaterialItem, MoveItem } from '@gamepark/rules-api';
4
4
  import { ItemContext } from '../../../locators';
5
5
  import { ItemAnimations } from './ItemAnimations';
6
6
  import { MaterialGameAnimationContext } from './MaterialGameAnimations';
@@ -9,8 +9,8 @@ export declare class MoveItemAnimations<P extends number = number, M extends num
9
9
  protected droppedItemDuration: number;
10
10
  constructor(duration?: number, droppedItemDuration?: number);
11
11
  getPreDuration(move: MoveItem<P, M, L>, context: MaterialGameAnimationContext<P, M, L>): number;
12
- getItemAnimation(context: ItemContext<P, M, L>, animation: Animation<MoveItem<P, M, L>>): Interpolation<Theme>;
13
- getMovedItemAnimation(context: ItemContext<P, M, L>, animation: Animation<MoveItem<P, M, L>>): Interpolation<Theme>;
12
+ getItemAnimation(context: ItemContext<P, M, L>, animation: Animation<MoveItem<P, M, L>>, boundaries: GridBoundaries): Interpolation<Theme>;
13
+ getMovedItemAnimation(context: ItemContext<P, M, L>, animation: Animation<MoveItem<P, M, L>>, boundaries: GridBoundaries): Interpolation<Theme>;
14
14
  getItemIndexAfterMove({ rules }: ItemContext<P, M, L>, move: MoveItem<P, M, L>): number;
15
15
  getChildItemAnimation(item: MaterialItem<P, L>, context: ItemContext<P, M, L>, animation: Animation<MoveItem<P, M, L>>): Interpolation<Theme>;
16
16
  }
@@ -1,5 +1,5 @@
1
1
  import { isEqual } from 'es-toolkit';
2
- import { getItemFromContext } from '../../../locators';
2
+ import { defaultOrigin, getItemFromContext, getOriginDeltaPosition } from '../../../locators';
3
3
  import { isDroppedItem } from '../utils/isDroppedItem';
4
4
  import { isPlacedOnItem } from '../utils/isPlacedOnItem';
5
5
  import { ItemAnimations } from './ItemAnimations';
@@ -23,18 +23,18 @@ export class MoveItemAnimations extends ItemAnimations {
23
23
  }
24
24
  return this.duration;
25
25
  }
26
- getItemAnimation(context, animation) {
26
+ getItemAnimation(context, animation, boundaries) {
27
27
  const item = getItemFromContext(context);
28
28
  const itemLocator = context.locators[item.location.type];
29
29
  if (itemLocator?.isItemToAnimate(item, context, animation.move)) {
30
- return this.getMovedItemAnimation(context, animation);
30
+ return this.getMovedItemAnimation(context, animation, boundaries);
31
31
  }
32
32
  const animatedItemContext = { ...context, type: animation.move.itemType, index: animation.move.itemIndex };
33
33
  if (isPlacedOnItem(item, animatedItemContext)) {
34
34
  return this.getChildItemAnimation(item, context, animation);
35
35
  }
36
36
  }
37
- getMovedItemAnimation(context, animation) {
37
+ getMovedItemAnimation(context, animation, boundaries) {
38
38
  const { type, rules, material, player } = context;
39
39
  const description = material[type];
40
40
  const Rules = rules.constructor;
@@ -45,10 +45,19 @@ export class MoveItemAnimations extends ItemAnimations {
45
45
  // TODO: if animation.move.quantity > 1, we will have to give a different target to each moving item. Formula bellow works only if 1 item moves
46
46
  const futureDisplayIndex = (futureItem.quantity ?? 1) - (animation.move.quantity ?? 1);
47
47
  const futureContext = { ...context, rules: futureRules, index: futureIndex, displayIndex: futureDisplayIndex };
48
- const originTransforms = toSingleRotation(transformItem(context));
48
+ const currentTransforms = toSingleRotation(transformItem(context));
49
49
  const targetTransforms = toSingleRotation(description?.getItemTransform(futureItem, futureContext) ?? []);
50
- toClosestRotations(originTransforms, targetTransforms);
51
- const animationKeyframes = this.getTransformKeyframes(originTransforms.join(' '), targetTransforms.join(' '), animation, context);
50
+ toClosestRotations(currentTransforms, targetTransforms);
51
+ const item = getItemFromContext(context);
52
+ const currentOrigin = context.locators[item.location.type]?.getLocationOrigin(item.location, context) ?? defaultOrigin;
53
+ const futureOrigin = context.locators[futureItem.location.type]?.getLocationOrigin(futureItem.location, futureContext) ?? defaultOrigin;
54
+ if (currentOrigin.x !== futureOrigin.x) {
55
+ targetTransforms.unshift(`translateX(${getOriginDeltaPosition(boundaries.xMin, boundaries.xMax, futureOrigin.x, currentOrigin.x)}em)`);
56
+ }
57
+ if (currentOrigin.y !== futureOrigin.y) {
58
+ targetTransforms.unshift(`translateY(${getOriginDeltaPosition(boundaries.yMin, boundaries.yMax, futureOrigin.y, currentOrigin.y)}em)`);
59
+ }
60
+ const animationKeyframes = this.getTransformKeyframes(currentTransforms.join(' '), targetTransforms.join(' '), animation, context);
52
61
  return description?.getAnimationCss(animationKeyframes, animation.duration);
53
62
  }
54
63
  getItemIndexAfterMove({ rules }, move) {
@@ -1 +1 @@
1
- {"version":3,"file":"MoveItemAnimations.js","sourceRoot":"","sources":["../../../../src/components/material/animations/MoveItemAnimations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MoveItemAnimations.js","sourceRoot":"","sources":["../../../../src/components/material/animations/MoveItemAnimations.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Interpolation, Theme } from '@emotion/react';
2
2
  import { Animation } from '@gamepark/react-client';
3
- import { MoveItemsAtOnce } from '@gamepark/rules-api';
3
+ import { GridBoundaries, MoveItemsAtOnce } from '@gamepark/rules-api';
4
4
  import { ItemContext } from '../../../locators';
5
5
  import { ItemAnimations } from './ItemAnimations';
6
6
  import { MaterialGameAnimationContext } from './MaterialGameAnimations';
@@ -9,6 +9,6 @@ export declare class MoveItemAtOnceAnimations<P extends number = number, M exten
9
9
  protected droppedItemDuration: number;
10
10
  constructor(duration?: number, droppedItemDuration?: number);
11
11
  getPreDuration(move: MoveItemsAtOnce<P, M, L>, context: MaterialGameAnimationContext<P, M, L>): number;
12
- getItemAnimation(context: ItemContext<P, M, L>, animation: Animation<MoveItemsAtOnce<P, M, L>>): Interpolation<Theme>;
13
- getMovedItemAnimation(context: ItemContext<P, M, L>, animation: Animation<MoveItemsAtOnce<P, M, L>>): Interpolation<Theme>;
12
+ getItemAnimation(context: ItemContext<P, M, L>, animation: Animation<MoveItemsAtOnce<P, M, L>>, boundaries: GridBoundaries): Interpolation<Theme>;
13
+ getMovedItemAnimation(context: ItemContext<P, M, L>, animation: Animation<MoveItemsAtOnce<P, M, L>>, boundaries: GridBoundaries): Interpolation<Theme>;
14
14
  }
@@ -1,3 +1,4 @@
1
+ import { defaultOrigin, getItemFromContext, getOriginDeltaPosition } from '../../../locators';
1
2
  import { isDroppedItem } from '../utils/isDroppedItem';
2
3
  import { ItemAnimations } from './ItemAnimations';
3
4
  import { toClosestRotations, toSingleRotation } from './rotations.utils';
@@ -17,12 +18,12 @@ export class MoveItemAtOnceAnimations extends ItemAnimations {
17
18
  }
18
19
  return this.duration;
19
20
  }
20
- getItemAnimation(context, animation) {
21
+ getItemAnimation(context, animation, boundaries) {
21
22
  if (context.type === animation.move.itemType && animation.move.indexes.includes(context.index)) {
22
- return this.getMovedItemAnimation(context, animation);
23
+ return this.getMovedItemAnimation(context, animation, boundaries);
23
24
  }
24
25
  }
25
- getMovedItemAnimation(context, animation) {
26
+ getMovedItemAnimation(context, animation, boundaries) {
26
27
  const { type, rules, material, player } = context;
27
28
  const description = material[type];
28
29
  const Rules = rules.constructor;
@@ -34,6 +35,15 @@ export class MoveItemAtOnceAnimations extends ItemAnimations {
34
35
  const originTransforms = toSingleRotation(transformItem(context));
35
36
  const targetTransforms = toSingleRotation(description?.getItemTransform(futureItem, futureContext) ?? []);
36
37
  toClosestRotations(originTransforms, targetTransforms);
38
+ const item = getItemFromContext(context);
39
+ const currentOrigin = context.locators[item.location.type]?.getLocationOrigin(item.location, context) ?? defaultOrigin;
40
+ const futureOrigin = context.locators[futureItem.location.type]?.getLocationOrigin(futureItem.location, futureContext) ?? defaultOrigin;
41
+ if (currentOrigin.x !== futureOrigin.x) {
42
+ targetTransforms.unshift(`translateX(${getOriginDeltaPosition(boundaries.xMin, boundaries.xMax, futureOrigin.x, currentOrigin.x)}em)`);
43
+ }
44
+ if (currentOrigin.y !== futureOrigin.y) {
45
+ targetTransforms.unshift(`translateY(${getOriginDeltaPosition(boundaries.yMin, boundaries.yMax, futureOrigin.y, currentOrigin.y)}em)`);
46
+ }
37
47
  const animationKeyframes = this.getTransformKeyframes(originTransforms.join(' '), targetTransforms.join(' '), animation, context);
38
48
  return description?.getAnimationCss(animationKeyframes, animation.duration);
39
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MoveItemAtOnceAnimations.js","sourceRoot":"","sources":["../../../../src/components/material/animations/MoveItemAtOnceAnimations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MoveItemAtOnceAnimations.js","sourceRoot":"","sources":["../../../../src/components/material/animations/MoveItemAtOnceAnimations.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,sBAAsB,EAAe,MAAM,mBAAmB,CAAA;AAC1G,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,MAAM,OAAO,wBACX,SAAQ,cAAuB;IAET;IAAwB;IAA9C,YAAsB,WAAW,CAAC,EAAY,sBAAsB,GAAG;QACrE,KAAK,EAAE,CAAA;QADa,aAAQ,GAAR,QAAQ,CAAI;QAAY,wBAAmB,GAAnB,mBAAmB,CAAM;IAEvE,CAAC;IAEQ,cAAc,CAAC,IAA8B,EAAE,OAA8C;QACpG,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;QAC3F,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5F,OAAO,IAAI,CAAC,mBAAmB,CAAA;QACjC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,gBAAgB,CAAC,OAA6B,EAAE,SAA8C,EAAE,UAA0B;QACxH,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/F,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;QACnE,CAAC;IACH,CAAC;IAED,qBAAqB,CAAC,OAA6B,EAAE,SAA8C,EAAE,UAA0B;QAC7H,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;QACjD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,WAA4C,CAAA;QAChE,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;QACjF,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAE,CAAA;QACrE,+IAA+I;QAC/I,MAAM,aAAa,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAA;QAClH,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;QACjE,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAA;QACzG,kBAAkB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAA;QACtD,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,aAAa,CAAA;QACtH,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,aAAa,CAAA;QACvI,IAAI,aAAa,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC;YACvC,gBAAgB,CAAC,OAAO,CAAC,cAAc,sBAAsB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QACxI,CAAC;QACD,IAAI,aAAa,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC;YACvC,gBAAgB,CAAC,OAAO,CAAC,cAAc,sBAAsB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QACxI,CAAC;QACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QACjI,OAAO,WAAW,EAAE,eAAe,CAAC,kBAAkB,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC7E,CAAC;CACF"}
@@ -1,2 +1,4 @@
1
+ import { MaterialItem } from '@gamepark/rules-api';
1
2
  import { ItemContext } from '../../../locators';
2
3
  export declare const getFirstStockItemTransforms: <P extends number = number, M extends number = number, L extends number = number>(context: ItemContext<P, M, L>) => string[];
4
+ export declare const getFirstStockItem: <P extends number = number, M extends number = number, L extends number = number>(context: ItemContext<P, M, L>) => MaterialItem<P, L> | undefined;
@@ -10,4 +10,12 @@ export const getFirstStockItemTransforms = (context) => {
10
10
  const displayIndex = stockItem?.quantity ? stockItem.quantity - 1 : 0;
11
11
  return description.getItemTransform(stockItem ?? { location: stockLocation }, { ...context, index: 0, displayIndex });
12
12
  };
13
+ export const getFirstStockItem = (context) => {
14
+ const description = context.material[context.type];
15
+ const item = getItemFromContext(context);
16
+ const stockLocation = description?.getStockLocation(item, context);
17
+ if (!description || !stockLocation)
18
+ return;
19
+ return description?.getStaticItems(context).find(item => isEqual(item.location, stockLocation));
20
+ };
13
21
  //# sourceMappingURL=getFirstStockItemTransforms.util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFirstStockItemTransforms.util.js","sourceRoot":"","sources":["../../../../src/components/material/animations/getFirstStockItemTransforms.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAe,MAAM,mBAAmB,CAAA;AAEnE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,OAA6B,EACnB,EAAE;IACZ,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;IACxC,MAAM,aAAa,GAAG,WAAW,EAAE,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClE,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,CAAA;IAC7C,MAAM,SAAS,GAAG,WAAW,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAA;IAC1G,MAAM,YAAY,GAAG,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,OAAO,WAAW,CAAC,gBAAgB,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;AACvH,CAAC,CAAA"}
1
+ {"version":3,"file":"getFirstStockItemTransforms.util.js","sourceRoot":"","sources":["../../../../src/components/material/animations/getFirstStockItemTransforms.util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAe,MAAM,mBAAmB,CAAA;AAEnE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,OAA6B,EACnB,EAAE;IACZ,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;IACxC,MAAM,aAAa,GAAG,WAAW,EAAE,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClE,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,CAAA;IAC7C,MAAM,SAAS,GAAG,WAAW,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAA;IAC1G,MAAM,YAAY,GAAG,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,OAAO,WAAW,CAAC,gBAAgB,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;AACvH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAA6B,EACG,EAAE;IAClC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;IACxC,MAAM,aAAa,GAAG,WAAW,EAAE,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClE,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa;QAAE,OAAM;IAC1C,OAAO,WAAW,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAA;AACjG,CAAC,CAAA"}
@@ -36,6 +36,7 @@ export const linkButtonCss = css `
36
36
  ${buttonResetCss};
37
37
 
38
38
  border: none;
39
+ color: inherit;
39
40
  text-decoration: underline;
40
41
  padding: 0;
41
42
 
@@ -1 +1 @@
1
- {"version":3,"file":"buttonCss.js","sourceRoot":"","sources":["../../src/css/buttonCss.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAEpC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;;;;;;;CAOhC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,MAAc,EAAE,EAAE,CAAC,GAAG,CAAA;IAC1E,cAAc;;;;yBAIO,KAAK;WACnB,KAAK;;;;kBAIE,KAAK;;;;kBAIL,MAAM;;;;;;;;;;CAUvB,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;IAC5B,cAAc;;;;;;;;;CASjB,CAAA"}
1
+ {"version":3,"file":"buttonCss.js","sourceRoot":"","sources":["../../src/css/buttonCss.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAEpC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;;;;;;;CAOhC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,MAAc,EAAE,EAAE,CAAC,GAAG,CAAA;IAC1E,cAAc;;;;yBAIO,KAAK;WACnB,KAAK;;;;kBAIE,KAAK;;;;kBAIL,MAAM;;;;;;;;;;CAUvB,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;IAC5B,cAAc;;;;;;;;;;CAUjB,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { Location, MaterialItem } from '@gamepark/rules-api';
2
+ import { ItemContext, LocationContext, Locator, MaterialContext } from './Locator';
3
+ /**
4
+ * A locator able to delegate placing items and locations to other locators depending on the context
5
+ */
6
+ export declare abstract class DelegateLocator<P extends number = number, M extends number = number, L extends number = number> extends Locator<P, M, L> {
7
+ abstract getDelegate(context: MaterialContext<P, M, L>): Locator<P, M, L>;
8
+ placeItem(item: MaterialItem<P, L>, context: ItemContext<P, M, L>): string[];
9
+ placeLocation(location: Location<P, L>, context: LocationContext<P, M, L>): string[];
10
+ }
@@ -0,0 +1,13 @@
1
+ import { Locator } from './Locator';
2
+ /**
3
+ * A locator able to delegate placing items and locations to other locators depending on the context
4
+ */
5
+ export class DelegateLocator extends Locator {
6
+ placeItem(item, context) {
7
+ return this.getDelegate(context).placeItem(item, context);
8
+ }
9
+ placeLocation(location, context) {
10
+ return this.getDelegate(context).placeLocation(location, context);
11
+ }
12
+ }
13
+ //# sourceMappingURL=DelegateLocator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DelegateLocator.js","sourceRoot":"","sources":["../../src/locators/DelegateLocator.ts"],"names":[],"mappings":"AACA,OAAO,EAAgC,OAAO,EAAmB,MAAM,WAAW,CAAA;AAElF;;GAEG;AACH,MAAM,OAAgB,eAAiG,SAAQ,OAAgB;IAI7I,SAAS,CAAC,IAAwB,EAAE,OAA6B;QAC/D,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC3D,CAAC;IAED,aAAa,CAAC,QAAwB,EAAE,OAAiC;QACvE,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACnE,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import { GridBoundaries } from '@gamepark/rules-api';
2
+ export declare enum OriginType {
3
+ Origin = 0,
4
+ Center = 1,
5
+ Min = 2,
6
+ Max = 3
7
+ }
8
+ export type LocationOrigin = {
9
+ x: OriginType;
10
+ y: OriginType;
11
+ };
12
+ export declare const defaultOrigin: {
13
+ x: OriginType;
14
+ y: OriginType;
15
+ };
16
+ export declare function getLocationOriginCss(tableBoundaries: GridBoundaries, origin?: LocationOrigin): import("@emotion/react").SerializedStyles;
17
+ export declare function getOriginDeltaPosition(min: number, max: number, before: OriginType, after: OriginType): number;
@@ -0,0 +1,35 @@
1
+ import { css } from '@emotion/react';
2
+ export var OriginType;
3
+ (function (OriginType) {
4
+ OriginType[OriginType["Origin"] = 0] = "Origin";
5
+ OriginType[OriginType["Center"] = 1] = "Center";
6
+ OriginType[OriginType["Min"] = 2] = "Min";
7
+ OriginType[OriginType["Max"] = 3] = "Max";
8
+ })(OriginType || (OriginType = {}));
9
+ export const defaultOrigin = { x: OriginType.Origin, y: OriginType.Origin };
10
+ export function getLocationOriginCss(tableBoundaries, origin) {
11
+ const { xMin, xMax, yMin, yMax } = tableBoundaries;
12
+ return positionCss(getPosition(xMin, xMax, origin?.x), getPosition(yMin, yMax, origin?.y));
13
+ }
14
+ function getPosition(min, max, origin = OriginType.Origin) {
15
+ switch (origin) {
16
+ case OriginType.Origin:
17
+ return -min;
18
+ case OriginType.Center:
19
+ return (max - min) / 2;
20
+ case OriginType.Min:
21
+ return 0;
22
+ case OriginType.Max:
23
+ return max - min;
24
+ }
25
+ }
26
+ export function getOriginDeltaPosition(min, max, before, after) {
27
+ return getPosition(min, max, before) - getPosition(min, max, after);
28
+ }
29
+ const positionCss = (left, top) => css `
30
+ position: absolute;
31
+ left: ${left}em;
32
+ top: ${top}em;
33
+ transform-style: preserve-3d;
34
+ `;
35
+ //# sourceMappingURL=LocationOrigin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocationOrigin.js","sourceRoot":"","sources":["../../src/locators/LocationOrigin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAGpC,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,+CAAM,CAAA;IACN,+CAAM,CAAA;IACN,yCAAG,CAAA;IACH,yCAAG,CAAA;AACL,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB;AAOD,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,EAAE,CAAA;AAE3E,MAAM,UAAU,oBAAoB,CAAC,eAA+B,EAAE,MAAuB;IAC3F,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAA;IAClD,OAAO,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;AAC5F,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,GAAW,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM;IACvE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU,CAAC,MAAM;YACpB,OAAO,CAAC,GAAG,CAAA;QACb,KAAK,UAAU,CAAC,MAAM;YACpB,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACxB,KAAK,UAAU,CAAC,GAAG;YACjB,OAAO,CAAC,CAAA;QACV,KAAK,UAAU,CAAC,GAAG;YACjB,OAAO,GAAG,GAAG,GAAG,CAAA;IACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAW,EAAE,GAAW,EAAE,MAAkB,EAAE,KAAiB;IACpG,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE,CAAC,GAAG,CAAA;;UAE5C,IAAI;SACL,GAAG;;CAEX,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { Coordinates, DeleteItem, DisplayedItem, Location, MaterialItem, MaterialRules, MoveItem, MoveItemsAtOnce, XYCoordinates } from '@gamepark/rules-api';
2
2
  import { ComponentType } from 'react';
3
3
  import { LocationDescription, LocationHelpProps, MaterialDescriptionRecord } from '../components';
4
+ import { LocationOrigin } from './LocationOrigin';
4
5
  export type SortFunction = ((item: MaterialItem) => number);
5
6
  /**
6
7
  * A Locator is responsible for placing item and locations (such as drop areas) on the Game Table.
@@ -66,6 +67,21 @@ export declare class Locator<P extends number = number, M extends number = numbe
66
67
  * @returns true if the item must be hidden
67
68
  */
68
69
  hide(item: MaterialItem<P, L>, context: ItemContext<P, M, L>): boolean;
70
+ /**
71
+ * Value returned by {@link getLocationOrigin} default implementation
72
+ */
73
+ locationOrigin: LocationOrigin;
74
+ /**
75
+ * Return the origin position or the location on x and y axes before it is placed using css transform
76
+ * Origin: the (0, 0) coordinates
77
+ * Center: (xMax - xMin) / 2 or (yMax - yMin) / 2
78
+ * Min: xMin or yMin
79
+ * Max: xMax or yMax
80
+ * @param location Location to place
81
+ * @param context Context of the location in the game
82
+ * @returns the origin for the location
83
+ */
84
+ getLocationOrigin(location: Location<P, L>, context: LocationContext<P, M, L>): LocationOrigin;
69
85
  /**
70
86
  * Provide a list of css transform operations to place a location on the game table.
71
87
  * @param location Location to place
@@ -1,6 +1,7 @@
1
1
  import { isMoveItem, isSameLocationArea } from '@gamepark/rules-api';
2
2
  import { isEqual, sumBy, uniqWith } from 'es-toolkit';
3
3
  import { DropAreaDescription } from '../components';
4
+ import { defaultOrigin, OriginType } from './LocationOrigin';
4
5
  /**
5
6
  * A Locator is responsible for placing item and locations (such as drop areas) on the Game Table.
6
7
  */
@@ -86,6 +87,27 @@ export class Locator {
86
87
  hide(item, context) {
87
88
  return this.limit !== undefined && this.getItemIndex(item, context) < 0;
88
89
  }
90
+ /**
91
+ * Value returned by {@link getLocationOrigin} default implementation
92
+ */
93
+ locationOrigin = defaultOrigin;
94
+ /**
95
+ * Return the origin position or the location on x and y axes before it is placed using css transform
96
+ * Origin: the (0, 0) coordinates
97
+ * Center: (xMax - xMin) / 2 or (yMax - yMin) / 2
98
+ * Min: xMin or yMin
99
+ * Max: xMax or yMax
100
+ * @param location Location to place
101
+ * @param context Context of the location in the game
102
+ * @returns the origin for the location
103
+ */
104
+ getLocationOrigin(location, context) {
105
+ const parentItem = this.getParentItem(location, context);
106
+ if (!parentItem)
107
+ return this.locationOrigin;
108
+ const locator = context.locators[parentItem.location.type];
109
+ return locator?.getLocationOrigin(parentItem.location, context) ?? { x: OriginType.Origin, y: OriginType.Origin };
110
+ }
89
111
  /**
90
112
  * Provide a list of css transform operations to place a location on the game table.
91
113
  * @param location Location to place
@@ -1 +1 @@
1
- {"version":3,"file":"Locator.js","sourceRoot":"","sources":["../../src/locators/Locator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Locator.js","sourceRoot":"","sources":["../../src/locators/Locator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { MaterialItem } from '@gamepark/rules-api';
2
+ import { ItemContext, Locator } from './Locator';
3
+ /**
4
+ * Locator that hides all the items but defines coordinates to animate the items from and to when they move
5
+ */
6
+ export declare class PlaceholderLocator<P extends number = number, M extends number = number, L extends number = number> extends Locator<P, M, L> {
7
+ hide(): boolean;
8
+ placeItem(item: MaterialItem<P, L>, context: ItemContext<P, M, L>): string[];
9
+ }
@@ -0,0 +1,13 @@
1
+ import { Locator } from './Locator';
2
+ /**
3
+ * Locator that hides all the items but defines coordinates to animate the items from and to when they move
4
+ */
5
+ export class PlaceholderLocator extends Locator {
6
+ hide() {
7
+ return true;
8
+ }
9
+ placeItem(item, context) {
10
+ return super.placeItem(item, context).concat(`scale(0)`);
11
+ }
12
+ }
13
+ //# sourceMappingURL=PlaceholderLocator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaceholderLocator.js","sourceRoot":"","sources":["../../src/locators/PlaceholderLocator.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,OAAO,EAAE,MAAM,WAAW,CAAA;AAEhD;;GAEG;AACH,MAAM,OAAO,kBAAoG,SAAQ,OAAgB;IACvI,IAAI;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,CAAC,IAAwB,EAAE,OAA6B;QAC/D,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAC1D,CAAC;CACF"}
@@ -1,8 +1,11 @@
1
1
  export * from './utils';
2
2
  export * from './DeckLocator';
3
+ export * from './DelegateLocator';
3
4
  export * from './FlexLocator';
4
5
  export * from './HandLocator';
5
6
  export * from './HexagonalGridLocator';
7
+ export * from './LocationOrigin';
6
8
  export * from './Locator';
7
9
  export * from './ListLocator';
8
10
  export * from './PileLocator';
11
+ export * from './PlaceholderLocator';
@@ -1,9 +1,12 @@
1
1
  export * from './utils';
2
2
  export * from './DeckLocator';
3
+ export * from './DelegateLocator';
3
4
  export * from './FlexLocator';
4
5
  export * from './HandLocator';
5
6
  export * from './HexagonalGridLocator';
7
+ export * from './LocationOrigin';
6
8
  export * from './Locator';
7
9
  export * from './ListLocator';
8
10
  export * from './PileLocator';
11
+ export * from './PlaceholderLocator';
9
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/locators/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/locators/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA"}
@@ -14,6 +14,7 @@ export const setupTranslation = (translations, options) => {
14
14
  i18next.use(initReactI18next).use(ICU);
15
15
  const query = new URLSearchParams(window.location.search);
16
16
  const locale = query.get('locale') || 'en';
17
+ document.documentElement.lang = locale;
17
18
  i18next.init({
18
19
  lng: locale,
19
20
  debug: process.env.NODE_ENV === 'development',