@gamepark/react-game 7.7.34 → 7.7.35
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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import { useDndMonitor } from '@dnd-kit/core';
|
|
2
|
+
import { useDndContext, useDndMonitor } from '@dnd-kit/core';
|
|
3
3
|
import { css } from '@emotion/react';
|
|
4
4
|
import { isMoveItem } from '@gamepark/rules-api';
|
|
5
5
|
import { useCallback, useState } from 'react';
|
|
@@ -10,6 +10,7 @@ import { getBestDropMove } from '../utils/getBestDropMove';
|
|
|
10
10
|
export const DropPreview = ({ boundaries }) => {
|
|
11
11
|
const context = useMaterialContext();
|
|
12
12
|
const legalMoves = useLegalMoves();
|
|
13
|
+
const { active } = useDndContext();
|
|
13
14
|
const [bestMove, setBestMove] = useState();
|
|
14
15
|
const [location, setLocation] = useState();
|
|
15
16
|
const onDragStart = useCallback(() => setBestMove(undefined), []);
|
|
@@ -21,7 +22,12 @@ export const DropPreview = ({ boundaries }) => {
|
|
|
21
22
|
}, [context, legalMoves]);
|
|
22
23
|
const onDragEnd = useCallback(() => setBestMove(undefined), []);
|
|
23
24
|
useDndMonitor({ onDragStart, onDragEnd, onDragMove, onDragCancel: onDragEnd });
|
|
24
|
-
|
|
25
|
+
// Only show the preview while a drag is actually active. `active` comes from dnd-kit's reactive context and
|
|
26
|
+
// resets to null as soon as the drag ends (drop, cancel, or the GameTable stuck-drag safety net), regardless
|
|
27
|
+
// of whether our onDragEnd/onDragCancel monitor callback was delivered. Relying on the callback alone (like
|
|
28
|
+
// before) leaves the ghost card stuck on the table whenever that end-of-drag event is missed — the same
|
|
29
|
+
// class of bug that left drop areas stuck before they were switched to dnd-kit's reactive state.
|
|
30
|
+
if (active && bestMove && isMoveItem(bestMove) && location && context.locators[location.type]?.showDropPreview(bestMove, context)) {
|
|
25
31
|
const type = bestMove.itemType;
|
|
26
32
|
const index = bestMove.itemIndex;
|
|
27
33
|
const item = context.rules.material(type).getItem(index);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropPreview.js","sourceRoot":"","sources":["../../../../src/components/material/GameTable/DropPreview.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAiB,aAAa,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"DropPreview.js","sourceRoot":"","sources":["../../../../src/components/material/GameTable/DropPreview.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,17 +2,16 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@emotion/reac
|
|
|
2
2
|
import { css, useTheme } from '@emotion/react';
|
|
3
3
|
import { faFlag } from '@fortawesome/free-regular-svg-icons';
|
|
4
4
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
5
|
-
import {
|
|
5
|
+
import { claimVictory, GameMode, useGameDispatch, useGameSelector } from '@gamepark/react-client';
|
|
6
6
|
import { useEffect, useState } from 'react';
|
|
7
7
|
import { useTranslation } from 'react-i18next';
|
|
8
8
|
import { useGiveUp } from '../../../hooks';
|
|
9
9
|
import { Dialog } from '../../dialogs';
|
|
10
10
|
import { menuButtonCss, menuDialogCss, paletteDangerButtonCss, paletteMenuButtonCss } from '../menuCss';
|
|
11
|
-
const query = new URLSearchParams(window.location.search);
|
|
12
|
-
const gameId = query.get('game');
|
|
13
11
|
export const GiveUpButton = () => {
|
|
14
12
|
const { t } = useTranslation('common');
|
|
15
13
|
const theme = useTheme();
|
|
14
|
+
const dispatch = useGameDispatch();
|
|
16
15
|
const [giveUp] = useGiveUp();
|
|
17
16
|
const [displayPopup, setDisplayPopup] = useState(false);
|
|
18
17
|
const onGiveUp = () => {
|
|
@@ -27,9 +26,7 @@ export const GiveUpButton = () => {
|
|
|
27
26
|
setDisplayPopup(true);
|
|
28
27
|
}, [playerIsLast]);
|
|
29
28
|
const onClaimVictory = () => {
|
|
30
|
-
|
|
31
|
-
new GameClientAPI(gameId).claimVictory();
|
|
32
|
-
}
|
|
29
|
+
dispatch(claimVictory());
|
|
33
30
|
setDisplayPopup(false);
|
|
34
31
|
};
|
|
35
32
|
const [displayedLongEnough, setDisplayedLongEnough] = useState(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GiveUpButton.js","sourceRoot":"","sources":["../../../../src/components/menus/GiveUpButton/GiveUpButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"GiveUpButton.js","sourceRoot":"","sources":["../../../../src/components/menus/GiveUpButton/GiveUpButton.tsx"],"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.7.
|
|
3
|
+
"version": "7.7.35",
|
|
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/)",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"@dnd-kit/modifiers": "^9.0.0",
|
|
27
27
|
"@gamepark/api-types": "^1.0.1",
|
|
28
28
|
"@gamepark/avataaars": "^3.0.0",
|
|
29
|
-
"@gamepark/react-client": "^7.7.
|
|
29
|
+
"@gamepark/react-client": "^7.7.1",
|
|
30
30
|
"dayjs": "^1.11.21",
|
|
31
31
|
"fscreen": "^1.2.0",
|
|
32
32
|
"i18next-http-backend": "^3.0.6",
|