@gamepark/react-game 7.3.0 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/GameProvider/GameProvider.js +1 -3
- package/dist/components/GameProvider/GameProvider.js.map +1 -1
- package/dist/components/Header/HeaderText.d.ts +6 -1
- package/dist/components/Header/HeaderText.js +14 -5
- package/dist/components/Header/HeaderText.js.map +1 -1
- package/dist/components/JournalTabs/JournalTabs.js +1 -1
- package/dist/components/JournalTabs/JournalTabs.js.map +1 -1
- package/dist/components/LoadingScreen/LoadingScreen.js +5 -0
- package/dist/components/LoadingScreen/LoadingScreen.js.map +1 -1
- package/dist/components/material/DraggableMaterial.d.ts +12 -2
- package/dist/components/material/DraggableMaterial.js +50 -57
- package/dist/components/material/DraggableMaterial.js.map +1 -1
- package/dist/components/material/GameTable/DynamicItemsDisplay.js +52 -8
- package/dist/components/material/GameTable/DynamicItemsDisplay.js.map +1 -1
- package/dist/components/material/GameTable/GameMaterialDisplay.js +5 -2
- package/dist/components/material/GameTable/GameMaterialDisplay.js.map +1 -1
- package/dist/components/material/GameTable/GameTable.d.ts +1 -0
- package/dist/components/material/GameTable/GameTable.js +49 -18
- package/dist/components/material/GameTable/GameTable.js.map +1 -1
- package/dist/components/material/GameTable/GameTableNavigation.js +7 -0
- package/dist/components/material/GameTable/GameTableNavigation.js.map +1 -1
- package/dist/components/material/GameTable/ItemDisplay.js +4 -4
- package/dist/components/material/GameTable/ItemDisplay.js.map +1 -1
- package/dist/components/material/GameTable/StaticItemsDisplay.js +21 -6
- package/dist/components/material/GameTable/StaticItemsDisplay.js.map +1 -1
- package/dist/components/material/GameTable/focus/FocusProvider.js +11 -5
- package/dist/components/material/GameTable/focus/FocusProvider.js.map +1 -1
- package/dist/components/material/GameTable/focus/NoZoomFocusProvider.js +2 -2
- package/dist/components/material/GameTable/focus/NoZoomFocusProvider.js.map +1 -1
- package/dist/components/material/GameTable/focus/index.d.ts +1 -0
- package/dist/components/material/GameTable/focus/index.js +1 -0
- package/dist/components/material/GameTable/focus/index.js.map +1 -1
- package/dist/components/material/GameTable/index.d.ts +2 -0
- package/dist/components/material/GameTable/index.js +2 -0
- package/dist/components/material/GameTable/index.js.map +1 -1
- package/dist/components/material/MaterialDescription.d.ts +9 -1
- package/dist/components/material/MaterialDescription.js +20 -13
- package/dist/components/material/MaterialDescription.js.map +1 -1
- package/dist/components/material/animations/AnimationBuilder.d.ts +160 -0
- package/dist/components/material/animations/AnimationBuilder.js +287 -0
- package/dist/components/material/animations/AnimationBuilder.js.map +1 -0
- package/dist/components/material/animations/CreateItemAnimations.d.ts +4 -2
- package/dist/components/material/animations/CreateItemAnimations.js +80 -10
- package/dist/components/material/animations/CreateItemAnimations.js.map +1 -1
- package/dist/components/material/animations/DeleteItemAnimations.d.ts +3 -1
- package/dist/components/material/animations/DeleteItemAnimations.js +16 -4
- package/dist/components/material/animations/DeleteItemAnimations.js.map +1 -1
- package/dist/components/material/animations/DeleteItemAtOnceAnimations.d.ts +3 -1
- package/dist/components/material/animations/DeleteItemAtOnceAnimations.js +16 -4
- package/dist/components/material/animations/DeleteItemAtOnceAnimations.js.map +1 -1
- package/dist/components/material/animations/ItemAnimations.d.ts +35 -1
- package/dist/components/material/animations/ItemAnimations.js +143 -1
- package/dist/components/material/animations/ItemAnimations.js.map +1 -1
- package/dist/components/material/animations/MaterialAnimations.d.ts +2 -1
- package/dist/components/material/animations/MaterialAnimations.js +6 -6
- package/dist/components/material/animations/MaterialAnimations.js.map +1 -1
- package/dist/components/material/animations/MaterialGameAnimations.d.ts +94 -1
- package/dist/components/material/animations/MaterialGameAnimations.js +150 -2
- package/dist/components/material/animations/MaterialGameAnimations.js.map +1 -1
- package/dist/components/material/animations/MoveItemAnimations.d.ts +3 -1
- package/dist/components/material/animations/MoveItemAnimations.js +29 -5
- package/dist/components/material/animations/MoveItemAnimations.js.map +1 -1
- package/dist/components/material/animations/MoveItemAtOnceAnimations.d.ts +5 -2
- package/dist/components/material/animations/MoveItemAtOnceAnimations.js +45 -3
- package/dist/components/material/animations/MoveItemAtOnceAnimations.js.map +1 -1
- package/dist/components/material/animations/Trajectory.d.ts +132 -0
- package/dist/components/material/animations/Trajectory.js +87 -0
- package/dist/components/material/animations/Trajectory.js.map +1 -0
- package/dist/components/material/animations/index.d.ts +3 -0
- package/dist/components/material/animations/index.js +3 -0
- package/dist/components/material/animations/index.js.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useLegalMoves.js +2 -1
- package/dist/hooks/useLegalMoves.js.map +1 -1
- package/dist/hooks/useMaterialContextRef.d.ts +10 -0
- package/dist/hooks/useMaterialContextRef.js +12 -0
- package/dist/hooks/useMaterialContextRef.js.map +1 -0
- package/dist/hooks/usePlayerName.js +1 -1
- package/dist/hooks/usePlayerName.js.map +1 -1
- package/dist/hooks/useUndo.js +12 -3
- package/dist/hooks/useUndo.js.map +1 -1
- package/dist/locators/DeckLocator.d.ts +3 -1
- package/dist/locators/DeckLocator.js +6 -0
- package/dist/locators/DeckLocator.js.map +1 -1
- package/dist/locators/HandLocator.d.ts +1 -0
- package/dist/locators/HandLocator.js +3 -0
- package/dist/locators/HandLocator.js.map +1 -1
- package/dist/locators/ListLocator.d.ts +1 -0
- package/dist/locators/ListLocator.js +3 -0
- package/dist/locators/ListLocator.js.map +1 -1
- package/dist/locators/Locator.d.ts +39 -0
- package/dist/locators/Locator.js +74 -1
- package/dist/locators/Locator.js.map +1 -1
- package/dist/locators/PileLocator.d.ts +1 -0
- package/dist/locators/PileLocator.js +3 -0
- package/dist/locators/PileLocator.js.map +1 -1
- package/dist/utilities/translation.util.js +1 -1
- package/dist/utilities/translation.util.js.map +1 -1
- package/package.json +79 -77
|
@@ -11,16 +11,34 @@ import { calculateBounds, getMouseBoundedPosition } from '../../../utilities/zoo
|
|
|
11
11
|
import { dataIsDisplayedItem } from '../DraggableMaterial';
|
|
12
12
|
import { getBestDropMove } from '../utils/getBestDropMove';
|
|
13
13
|
import { GameMaterialDisplay } from './GameMaterialDisplay';
|
|
14
|
+
import { GameTableContext } from './GameTableContext';
|
|
15
|
+
import { NoZoomScaleProvider, ZoomScaleProvider } from './ScaleContext';
|
|
14
16
|
var dropItemMove = MaterialMoveBuilder.dropItemMove;
|
|
17
|
+
const defaultMargin = { left: 0, right: 0, top: 7, bottom: 0 };
|
|
15
18
|
const wheel = { step: 0.05 };
|
|
16
19
|
const doubleClick = { disabled: true };
|
|
17
20
|
const pointerSensorOptions = { activationConstraint: { distance: 2 } };
|
|
18
|
-
|
|
21
|
+
const measuring = { draggable: { measure: getClientRect }, droppable: { measure: getClientRect } };
|
|
22
|
+
export const GameTable = ({ collisionAlgorithm, snapToCenter = true, perspective, xMin, xMax, yMin, yMax, margin = defaultMargin, tableFontSize = 5, verticalCenter, zoom, children, ...props }) => {
|
|
23
|
+
// Dimensions calculations
|
|
24
|
+
const tableWidth = xMax - xMin;
|
|
25
|
+
const tableHeight = yMax - yMin;
|
|
26
|
+
const hm = margin.left + margin.right;
|
|
27
|
+
const vm = margin.top + margin.bottom;
|
|
28
|
+
const ratio = tableWidth / tableHeight;
|
|
29
|
+
const ratioWithMargins = ((100 - vm) * ratio + hm) / 100;
|
|
30
|
+
// Scale calculations
|
|
31
|
+
const minScale = (100 - vm) / tableFontSize / tableHeight;
|
|
32
|
+
const maxScale = minScale > 0.9 ? minScale : 1;
|
|
33
|
+
const enableZoom = zoom ?? minScale < 0.9;
|
|
34
|
+
// Drag & drop
|
|
19
35
|
const [dragging, setDragging] = useState(false);
|
|
20
36
|
const sensors = useSensors(useSensor(PointerSensor, pointerSensorOptions));
|
|
21
37
|
const context = useMaterialContext();
|
|
22
38
|
const play = usePlay();
|
|
23
39
|
const legalMoves = useLegalMoves();
|
|
40
|
+
const onDragStart = useCallback(() => setDragging(true), []);
|
|
41
|
+
const onDragCancel = useCallback(() => setDragging(false), []);
|
|
24
42
|
const onDragEnd = useCallback((event) => {
|
|
25
43
|
setDragging(false);
|
|
26
44
|
const move = getBestDropMove(event, context, legalMoves);
|
|
@@ -38,10 +56,13 @@ export const GameTable = ({ collisionAlgorithm, snapToCenter = true, perspective
|
|
|
38
56
|
play(move);
|
|
39
57
|
}
|
|
40
58
|
}, [context, play, legalMoves]);
|
|
41
|
-
|
|
59
|
+
// Zoom resize handler
|
|
60
|
+
const zoomRef = useRef(null);
|
|
42
61
|
useEffect(() => {
|
|
62
|
+
if (!enableZoom)
|
|
63
|
+
return;
|
|
43
64
|
const handler = () => {
|
|
44
|
-
const zoomPanPinch =
|
|
65
|
+
const zoomPanPinch = zoomRef.current?.instance;
|
|
45
66
|
if (!zoomPanPinch?.bounds)
|
|
46
67
|
return;
|
|
47
68
|
const { positionX, positionY, scale } = zoomPanPinch.transformState;
|
|
@@ -50,21 +71,20 @@ export const GameTable = ({ collisionAlgorithm, snapToCenter = true, perspective
|
|
|
50
71
|
zoomPanPinch.setTransformState(scale, x, y);
|
|
51
72
|
};
|
|
52
73
|
window.addEventListener('resize', handler);
|
|
53
|
-
return () =>
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}, []);
|
|
57
|
-
const hm = margin.left + margin.right;
|
|
58
|
-
const vm = margin.top + margin.bottom;
|
|
59
|
-
const minScale = (100 - vm) / tableFontSize / (yMax - yMin);
|
|
60
|
-
const maxScale = minScale > 0.9 ? minScale : 1;
|
|
61
|
-
const ratio = (xMax - xMin) / (yMax - yMin);
|
|
62
|
-
const ratioWithMargins = ((100 - vm) * ratio + hm) / 100;
|
|
74
|
+
return () => window.removeEventListener('resize', handler);
|
|
75
|
+
}, [enableZoom]);
|
|
76
|
+
// Memoized values
|
|
63
77
|
const panning = useMemo(() => ({ disabled: dragging }), [dragging]);
|
|
64
|
-
const wrapperStyle = useMemo(() => computedWrapperClass(margin, vm, hm, ratio, verticalCenter), [margin, vm, hm, ratio]);
|
|
78
|
+
const wrapperStyle = useMemo(() => computedWrapperClass(margin, vm, hm, ratio, verticalCenter), [margin, vm, hm, ratio, verticalCenter]);
|
|
65
79
|
const modifiers = useMemo(() => snapToCenter ? [snapCenterToCursor] : undefined, [snapToCenter]);
|
|
66
80
|
const boundaries = useMemo(() => ({ xMin, xMax, yMin, yMax }), [xMin, xMax, yMin, yMax]);
|
|
67
|
-
|
|
81
|
+
const contextValue = useMemo(() => ({ zoom: enableZoom }), [enableZoom]);
|
|
82
|
+
const tableContent = (_jsx("div", { css: [
|
|
83
|
+
tableCss(tableWidth, tableHeight),
|
|
84
|
+
enableZoom ? fontSizeCss(tableFontSize) : noZoomTableCss(tableWidth, tableHeight, vm, hm),
|
|
85
|
+
perspective && perspectiveCss(perspective)
|
|
86
|
+
], ...props, children: _jsx(GameMaterialDisplay, { boundaries: boundaries, children: children }) }));
|
|
87
|
+
return (_jsx(GameTableContext.Provider, { value: contextValue, children: _jsxs(DndContext, { collisionDetection: collisionAlgorithm, measuring: measuring, modifiers: modifiers, sensors: sensors, onDragStart: onDragStart, onDragEnd: onDragEnd, onDragCancel: onDragCancel, children: [_jsx(Global, { styles: [ratioFontSize(ratioWithMargins), wrapperStyle] }), enableZoom ? (_jsx(TransformWrapper, { ref: zoomRef, minScale: minScale, maxScale: maxScale, initialScale: minScale, centerOnInit: true, wheel: wheel, smooth: false, panning: panning, disablePadding: true, doubleClick: doubleClick, children: _jsx(TransformComponent, { wrapperClass: "wrapperClass", children: _jsx(ZoomScaleProvider, { children: tableContent }) }) })) : (_jsx("div", { className: "wrapperClass", css: noZoomContainerCss, children: _jsx(NoZoomScaleProvider, { children: tableContent }) }))] }) }));
|
|
68
88
|
};
|
|
69
89
|
const computedWrapperClass = (margin, vm, hm, ratio, verticalCenter) => css `
|
|
70
90
|
.wrapperClass {
|
|
@@ -88,9 +108,20 @@ const ratioFontSize = (ratio) => css `
|
|
|
88
108
|
}
|
|
89
109
|
}
|
|
90
110
|
`;
|
|
91
|
-
const tableCss = (
|
|
111
|
+
const tableCss = (width, height) => css `
|
|
92
112
|
transform-style: preserve-3d;
|
|
93
|
-
width: ${
|
|
94
|
-
height: ${
|
|
113
|
+
width: ${width}em;
|
|
114
|
+
height: ${height}em;
|
|
95
115
|
`;
|
|
116
|
+
const noZoomContainerCss = css `
|
|
117
|
+
display: flex;
|
|
118
|
+
align-items: center;
|
|
119
|
+
justify-content: center;
|
|
120
|
+
`;
|
|
121
|
+
const noZoomTableCss = (tableWidth, tableHeight, vm, hm) => {
|
|
122
|
+
const heightBasedFontSize = (100 - vm) / tableHeight;
|
|
123
|
+
return css `
|
|
124
|
+
font-size: min(${heightBasedFontSize}dvh, calc((100dvw - ${hm}dvh) / ${tableWidth}));
|
|
125
|
+
`;
|
|
126
|
+
};
|
|
96
127
|
//# sourceMappingURL=GameTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GameTable.js","sourceRoot":"","sources":["../../../../src/components/material/GameTable/GameTable.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAsB,UAAU,EAAgB,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACjI,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC5E,OAAO,EAAsB,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC7F,OAAO,EAA+B,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACxG,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAA;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,IAAO,YAAY,GAAG,mBAAmB,CAAC,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"GameTable.js","sourceRoot":"","sources":["../../../../src/components/material/GameTable/GameTable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,14 @@ import { useState } from 'react';
|
|
|
7
7
|
import { createPortal } from 'react-dom';
|
|
8
8
|
import { useControls, useTransformEffect } from 'react-zoom-pan-pinch';
|
|
9
9
|
import { buttonResetCss } from '../../../css';
|
|
10
|
+
import { useGameTableContext } from './GameTableContext';
|
|
10
11
|
export const GameTableNavigation = (props) => {
|
|
12
|
+
const { zoom } = useGameTableContext();
|
|
13
|
+
if (!zoom)
|
|
14
|
+
return null;
|
|
15
|
+
return _jsx(GameTableNavigationInner, { ...props });
|
|
16
|
+
};
|
|
17
|
+
const GameTableNavigationInner = (props) => {
|
|
11
18
|
const { scaleStep = 0.1, ...rest } = props;
|
|
12
19
|
const { zoomIn, zoomOut } = useControls();
|
|
13
20
|
const [isMin, setIsMin] = useState(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GameTableNavigation.js","sourceRoot":"","sources":["../../../../src/components/material/GameTable/GameTableNavigation.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAA;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAsB,QAAQ,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"GameTableNavigation.js","sourceRoot":"","sources":["../../../../src/components/material/GameTable/GameTableNavigation.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAA;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAsB,QAAQ,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAMxD,MAAM,CAAC,MAAM,mBAAmB,GAAiC,CAAC,KAAK,EAAE,EAAE;IACzE,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAmB,EAAE,CAAA;IACtC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IACtB,OAAO,KAAC,wBAAwB,OAAK,KAAK,GAAI,CAAA;AAChD,CAAC,CAAA;AAED,MAAM,wBAAwB,GAAiC,CAAC,KAAK,EAAE,EAAE;IACvE,MAAM,EAAE,SAAS,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;IAC1C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAA;IACzC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACzC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACzC,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QACzC,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACjD,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IACF,OAAO,YAAY,CACjB,eAAK,GAAG,EAAE,mBAAmB,KAAM,IAAI,aACrC,iBAAQ,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,YACpE,KAAC,eAAe,IAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,GAAG,GAC7C,EACT,iBAAQ,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,YACrE,KAAC,eAAe,IAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,GAAG,GAC9C,IACL,EACN,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAE,CACjC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,GAAG,CAAA;;;;;;;;;CAS9B,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,cAAc,EAAE,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BlC,CAAC,CAAA;AAEF,MAAM,OAAO,GAAG,GAAG,CAAA;;CAElB,CAAA"}
|
|
@@ -6,7 +6,7 @@ import { forwardRef, useMemo, useRef } from 'react';
|
|
|
6
6
|
import { mergeRefs } from 'react-merge-refs';
|
|
7
7
|
import { LongPressCallbackReason, LongPressEventType, useLongPress } from 'use-long-press';
|
|
8
8
|
import { pointerCursorCss } from '../../../css';
|
|
9
|
-
import { useDraggedItem,
|
|
9
|
+
import { useDraggedItem, useMaterialContextRef, usePlay } from '../../../hooks';
|
|
10
10
|
import { useExpectedDropLocations, useItemLocations } from '../../../hooks/useItemLocations';
|
|
11
11
|
import { combineEventListeners } from '../../../utilities';
|
|
12
12
|
import { LocationsMask } from '../locations';
|
|
@@ -14,7 +14,7 @@ import { MaterialComponent } from '../MaterialComponent';
|
|
|
14
14
|
import { isLocationSubset } from '../utils';
|
|
15
15
|
import { useFocusContext } from './focus';
|
|
16
16
|
export const ItemDisplay = forwardRef(({ type, index, displayIndex, item, dragTransform, animation, isFocused, onShortClick, onLongClick, highlight, playDown, ...props }, ref) => {
|
|
17
|
-
const context =
|
|
17
|
+
const context = useMaterialContextRef();
|
|
18
18
|
const { focus, focusRef } = useFocusContext();
|
|
19
19
|
const itemContext = useMemo(() => ({ ...context, type, index, displayIndex, dragTransform }), [context, type, index, displayIndex, dragTransform]);
|
|
20
20
|
const locations = useItemLocations(item, itemContext);
|
|
@@ -80,7 +80,7 @@ const hoverCss = (itemTransform, itemSize, hoverTransform, disable) => css `
|
|
|
80
80
|
`;
|
|
81
81
|
ItemDisplay.displayName = 'ItemDisplay';
|
|
82
82
|
const ItemLocations = ({ locations }) => {
|
|
83
|
-
const context =
|
|
83
|
+
const context = useMaterialContextRef();
|
|
84
84
|
return _jsx(_Fragment, { children: locations.map(({ location, focusRef }) => {
|
|
85
85
|
const description = context.locators[location.type]?.getLocationDescription(location, context);
|
|
86
86
|
const LocationComponent = description?.Component;
|
|
@@ -90,7 +90,7 @@ const ItemLocations = ({ locations }) => {
|
|
|
90
90
|
}) });
|
|
91
91
|
};
|
|
92
92
|
const ItemDropLocations = ({ locations, item, type }) => {
|
|
93
|
-
const context =
|
|
93
|
+
const context = useMaterialContextRef();
|
|
94
94
|
const draggedItem = useDraggedItem();
|
|
95
95
|
const draggedItemContext = { ...context, ...draggedItem };
|
|
96
96
|
const expectedDropLocations = useExpectedDropLocations();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemDisplay.js","sourceRoot":"","sources":["../../../../src/components/material/GameTable/ItemDisplay.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAwB,MAAM,gBAAgB,CAAA;AAE1D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAc,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"ItemDisplay.js","sourceRoot":"","sources":["../../../../src/components/material/GameTable/ItemDisplay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
2
2
|
import { isEqual } from 'es-toolkit';
|
|
3
|
-
import {
|
|
3
|
+
import { memo, useRef } from 'react';
|
|
4
|
+
import { MaterialContextRefContext, useLegalMoves, useMaterialContext, useMaterialContextRef } from '../../../hooks';
|
|
4
5
|
import { getLocationOriginCss } from '../../../locators';
|
|
5
6
|
import { ItemMenuWrapper } from '../ItemMenuWrapper';
|
|
6
7
|
import { useFocusContext } from './focus';
|
|
@@ -11,21 +12,35 @@ export const StaticItemsDisplay = ({ boundaries }) => {
|
|
|
11
12
|
};
|
|
12
13
|
const StaticItemsTypeDisplay = ({ description, ...props }) => {
|
|
13
14
|
const context = useMaterialContext();
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
const contextRef = useRef(context);
|
|
16
|
+
contextRef.current = context;
|
|
17
|
+
const legalMoves = useLegalMoves();
|
|
18
|
+
return _jsx(MaterialContextRefContext.Provider, { value: contextRef, children: description.getStaticItems(context).map((item, index) => {
|
|
19
|
+
return [...Array(item.quantity ?? 1)].map((_, displayIndex) => _jsx(StaticItemDisplay, { description: description, index: index, displayIndex: displayIndex, item: item, legalMoves: legalMoves, ...props }, `${index}_${displayIndex}`));
|
|
16
20
|
}) });
|
|
17
21
|
};
|
|
18
|
-
const
|
|
19
|
-
const context =
|
|
22
|
+
const StaticItemDisplayBase = ({ type, description, index, displayIndex, item, boundaries, legalMoves, ...props }) => {
|
|
23
|
+
const context = useMaterialContextRef();
|
|
20
24
|
const locator = context.locators[item.location.type];
|
|
21
25
|
const { focus } = useFocusContext();
|
|
22
26
|
const isFocused = focus && getStaticItemsOfType(focus.staticItems, type).some(focusedItem => isEqual(focusedItem, item));
|
|
23
|
-
const legalMoves = useLegalMoves();
|
|
24
27
|
const itemContext = { ...context, type, index, displayIndex };
|
|
25
28
|
const menu = description.getItemMenu(item, itemContext, legalMoves);
|
|
26
29
|
const locationOriginCss = getLocationOriginCss(boundaries, locator?.getLocationOrigin(item.location, context));
|
|
27
30
|
return _jsxs(_Fragment, { children: [_jsx(ItemDisplay, { type: type, index: index, displayIndex: displayIndex, item: item, isFocused: isFocused, highlight: description.highlight(item, itemContext), css: locationOriginCss, ...props }), menu && _jsx(ItemMenuWrapper, { item: item, itemContext: itemContext, description: description, css: locationOriginCss, ...props, children: menu })] });
|
|
28
31
|
};
|
|
32
|
+
StaticItemDisplayBase.displayName = 'StaticItemDisplay';
|
|
33
|
+
const StaticItemDisplay = memo(StaticItemDisplayBase, (prev, next) => {
|
|
34
|
+
if (prev.type !== next.type || prev.index !== next.index || prev.displayIndex !== next.displayIndex)
|
|
35
|
+
return false;
|
|
36
|
+
if (!isEqual(prev.item, next.item))
|
|
37
|
+
return false;
|
|
38
|
+
if (!isEqual(prev.boundaries, next.boundaries))
|
|
39
|
+
return false;
|
|
40
|
+
if (prev.legalMoves !== next.legalMoves)
|
|
41
|
+
return false;
|
|
42
|
+
return true;
|
|
43
|
+
});
|
|
29
44
|
function getStaticItemsOfType(staticItems, type) {
|
|
30
45
|
if (Array.isArray(staticItems)) {
|
|
31
46
|
return staticItems.filter(s => s.type === type).map(s => s.item);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticItemsDisplay.js","sourceRoot":"","sources":["../../../../src/components/material/GameTable/StaticItemsDisplay.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"StaticItemsDisplay.js","sourceRoot":"","sources":["../../../../src/components/material/GameTable/StaticItemsDisplay.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AACpC,OAAO,EAAE,yBAAyB,EAAE,aAAa,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACpH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,EAAc,eAAe,EAAE,MAAM,SAAS,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAE,UAAU,EAAkC,EAAE,EAAE;IACnF,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC,QAAQ,CAAA;IAC9C,OAAO,4BACJ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,EAAE,CAC1D,WAAW,IAAI,KAAC,sBAAsB,IAAkB,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,IAAxF,UAAU,CAAiF,CACxI,GACA,CAAA;AACL,CAAC,CAAA;AASD,MAAM,sBAAsB,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,KAAK,EAA+B,EAAE,EAAE;IACxF,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAA;IACpC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAClC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAA;IAC5B,MAAM,UAAU,GAAG,aAAa,EAAgB,CAAA;IAChD,OAAO,KAAC,yBAAyB,CAAC,QAAQ,IAAC,KAAK,EAAE,UAAU,YACzD,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACvD,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,CAC5D,KAAC,iBAAiB,IAAkC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAC/G,UAAU,EAAE,UAAU,KAAM,KAAK,IAD5B,GAAG,KAAK,IAAI,YAAY,EAAE,CACK,CACxD,CAAA;QACH,CAAC,CAAC,GACiC,CAAA;AACvC,CAAC,CAAA;AAUD,MAAM,qBAAqB,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,KAAK,EAA0B,EAAE,EAAE;IAC3I,MAAM,OAAO,GAAG,qBAAqB,EAAE,CAAA;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACpD,MAAM,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,CAAA;IACnC,MAAM,SAAS,GAAG,KAAK,IAAI,oBAAoB,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAA;IACxH,MAAM,WAAW,GAAG,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;IAC7D,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAA;IACnE,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IAC9G,OAAO,8BACL,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAChE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,EACzE,GAAG,EAAE,iBAAiB,KAClB,KAAK,GAAG,EACxB,IAAI,IAAI,KAAC,eAAe,IAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,iBAAiB,KAAM,KAAK,YAAG,IAAI,GAAmB,IACpJ,CAAA;AACL,CAAC,CAAA;AACD,qBAAqB,CAAC,WAAW,GAAG,mBAAmB,CAAA;AAEvD,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACnE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAA;IACjH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IAChD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAA;IAC5D,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAA;IACrD,OAAO,IAAI,CAAA;AACb,CAAC,CAAC,CAAA;AAEF,SAAS,oBAAoB,CAC3B,WAA6E,EAAE,IAAO;IAEtF,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC;SAAM,CAAC;QACN,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAChC,CAAC;AACH,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
2
2
|
import { flatten, sumBy } from 'es-toolkit';
|
|
3
3
|
import { values } from 'es-toolkit/compat';
|
|
4
|
-
import { createContext, useCallback, useContext, useRef, useState } from 'react';
|
|
4
|
+
import { createContext, useCallback, useContext, useMemo, useRef, useState } from 'react';
|
|
5
5
|
import { useControls } from 'react-zoom-pan-pinch';
|
|
6
6
|
import { useZoomToElements } from '../../../../hooks';
|
|
7
7
|
import { useLocators } from '../../../../hooks/useLocators';
|
|
@@ -20,6 +20,10 @@ export function FocusProvider({ children }) {
|
|
|
20
20
|
const [focus, doSetFocus] = useState();
|
|
21
21
|
const focusRefs = useRef(new Set());
|
|
22
22
|
const countFocusRef = useRef(0);
|
|
23
|
+
const focusStateRef = useRef(focus);
|
|
24
|
+
focusStateRef.current = focus;
|
|
25
|
+
const zoomToElementsRef = useRef(zoomToElements);
|
|
26
|
+
zoomToElementsRef.current = zoomToElements;
|
|
23
27
|
const setFocus = useCallback((focus, reset = true) => {
|
|
24
28
|
if (!focus && reset) {
|
|
25
29
|
setTimeout(() => resetTransform(1000), 50);
|
|
@@ -29,9 +33,10 @@ export function FocusProvider({ children }) {
|
|
|
29
33
|
doSetFocus(focus);
|
|
30
34
|
}, []);
|
|
31
35
|
const doFocus = useCallback(() => {
|
|
36
|
+
const focus = focusStateRef.current;
|
|
32
37
|
const elements = Array.from(focusRefs.current);
|
|
33
|
-
setTimeout(() =>
|
|
34
|
-
}, [
|
|
38
|
+
setTimeout(() => zoomToElementsRef.current(elements, { animationTime: focus?.animationTime ?? 1000, margin: focus?.margin, scale: focus?.scale }), 50);
|
|
39
|
+
}, []);
|
|
35
40
|
const focusRef = useCallback((ref) => {
|
|
36
41
|
if (!ref || focusRefs.current.has(ref))
|
|
37
42
|
return;
|
|
@@ -39,8 +44,9 @@ export function FocusProvider({ children }) {
|
|
|
39
44
|
if (countFocusRef.current === focusRefs.current.size) {
|
|
40
45
|
doFocus();
|
|
41
46
|
}
|
|
42
|
-
}, [
|
|
43
|
-
|
|
47
|
+
}, []);
|
|
48
|
+
const value = useMemo(() => ({ focus, setFocus, focusRef }), [focus, setFocus, focusRef]);
|
|
49
|
+
return (_jsx(FocusContext.Provider, { value: value, children: children }));
|
|
44
50
|
}
|
|
45
51
|
function countFocusRefs(focus, locators) {
|
|
46
52
|
if (!focus)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FocusProvider.js","sourceRoot":"","sources":["../../../../../src/components/material/GameTable/focus/FocusProvider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAa,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"FocusProvider.js","sourceRoot":"","sources":["../../../../../src/components/material/GameTable/focus/FocusProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import { useCallback, useState } from 'react';
|
|
2
|
+
import { useCallback, useMemo, useState } from 'react';
|
|
3
3
|
import { FocusContext } from './FocusProvider';
|
|
4
4
|
export function NoZoomFocusProvider({ children }) {
|
|
5
5
|
const [focus, setFocusState] = useState();
|
|
@@ -9,7 +9,7 @@ export function NoZoomFocusProvider({ children }) {
|
|
|
9
9
|
const focusRef = useCallback(() => {
|
|
10
10
|
// No-op when zoom is disabled
|
|
11
11
|
}, []);
|
|
12
|
-
const value = { focus, setFocus, focusRef };
|
|
12
|
+
const value = useMemo(() => ({ focus, setFocus, focusRef }), [focus, setFocus, focusRef]);
|
|
13
13
|
return (_jsx(FocusContext.Provider, { value: value, children: children }));
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=NoZoomFocusProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoZoomFocusProvider.js","sourceRoot":"","sources":["../../../../../src/components/material/GameTable/focus/NoZoomFocusProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAa,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"NoZoomFocusProvider.js","sourceRoot":"","sources":["../../../../../src/components/material/GameTable/focus/NoZoomFocusProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAa,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACjE,OAAO,EAAE,YAAY,EAAoB,MAAM,iBAAiB,CAAA;AAGhE,MAAM,UAAU,mBAAmB,CAAC,EAAE,QAAQ,EAA4B;IACxE,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,QAAQ,EAAiB,CAAA;IAExD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,QAAwB,EAAE,EAAE;QACxD,aAAa,CAAC,QAAQ,CAAC,CAAA;IACzB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,8BAA8B;IAChC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,KAAK,GAAG,OAAO,CAAmB,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE3G,OAAO,CACL,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAChC,QAAQ,GACa,CACzB,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/material/GameTable/focus/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/material/GameTable/focus/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA"}
|
|
@@ -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,uBAAuB,CAAA"}
|
|
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"}
|
|
@@ -109,6 +109,14 @@ export declare abstract class MaterialDescription<P extends number = number, M e
|
|
|
109
109
|
* @param _context Context of the item
|
|
110
110
|
*/
|
|
111
111
|
getShortClickLocalMove(_context: ItemContext<P, M, L>): MaterialMove<P, M, L> | undefined;
|
|
112
|
+
/**
|
|
113
|
+
* This function returns the moves that should be played when long-clicking on an item.
|
|
114
|
+
* Unlike canLongClick which filters legal moves, this allows returning arbitrary moves (e.g. placing all available resources).
|
|
115
|
+
*
|
|
116
|
+
* @param _context Context of the item
|
|
117
|
+
* @param _legalMoves The current legal moves
|
|
118
|
+
*/
|
|
119
|
+
getLongClickMoves(_context: ItemContext<P, M, L>, _legalMoves: MaterialMove<P, M, L>[]): MaterialMove<P, M, L>[];
|
|
112
120
|
/**
|
|
113
121
|
* Thickness of the item
|
|
114
122
|
*/
|
|
@@ -169,7 +177,7 @@ export declare abstract class MaterialDescription<P extends number = number, M e
|
|
|
169
177
|
isMenuAlwaysVisible(_item: MaterialItem<P, L>, _context: ItemContext<P, M, L>): boolean;
|
|
170
178
|
getItemMenu(_item: MaterialItem<P, L>, _context: ItemContext<P, M, L>, _legalMoves: MaterialMove<P, M, L>[]): ReactNode;
|
|
171
179
|
getHelpButton(item: MaterialItem<P, L>, context: ItemContext<P, M, L>, props?: Partial<ItemButtonProps>): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
172
|
-
getAnimationCss(
|
|
180
|
+
getAnimationCss(animationKeyframes: Keyframes, duration: number): Interpolation<Theme>;
|
|
173
181
|
getHelpDisplayExtraCss(_item: Partial<MaterialItem<P, L>>, _context: ItemContext<P, M, L>): Interpolation<Theme>;
|
|
174
182
|
}
|
|
175
183
|
export type MaterialDescriptionRecord<P extends number = number, M extends number = number, L extends number = number> = Record<M, MaterialDescription<P, M, L>>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import { css
|
|
2
|
+
import { css } from '@emotion/react';
|
|
3
3
|
import { faQuestion } from '@fortawesome/free-solid-svg-icons/faQuestion';
|
|
4
4
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
5
5
|
import { isDeleteItem, isMoveItem, isMoveItemsAtOnce, isRoll, isSelectItem, MaterialMoveBuilder } from '@gamepark/rules-api';
|
|
@@ -7,6 +7,7 @@ import { groupBy } from 'es-toolkit';
|
|
|
7
7
|
import { partition } from 'es-toolkit/compat';
|
|
8
8
|
import { Trans } from 'react-i18next';
|
|
9
9
|
import { getItemFromContext } from '../../locators';
|
|
10
|
+
import { defaultElevation, getElevationKeyframes } from './animations';
|
|
10
11
|
import { ComponentDescription } from './ComponentDescription';
|
|
11
12
|
import { ItemMenuButton } from './ItemMenuButton';
|
|
12
13
|
var displayMaterialHelp = MaterialMoveBuilder.displayMaterialHelp;
|
|
@@ -115,6 +116,16 @@ export class MaterialDescription extends ComponentDescription {
|
|
|
115
116
|
getShortClickLocalMove(_context) {
|
|
116
117
|
return undefined;
|
|
117
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* This function returns the moves that should be played when long-clicking on an item.
|
|
121
|
+
* Unlike canLongClick which filters legal moves, this allows returning arbitrary moves (e.g. placing all available resources).
|
|
122
|
+
*
|
|
123
|
+
* @param _context Context of the item
|
|
124
|
+
* @param _legalMoves The current legal moves
|
|
125
|
+
*/
|
|
126
|
+
getLongClickMoves(_context, _legalMoves) {
|
|
127
|
+
return [];
|
|
128
|
+
}
|
|
118
129
|
/**
|
|
119
130
|
* Thickness of the item
|
|
120
131
|
*/
|
|
@@ -166,8 +177,11 @@ export class MaterialDescription extends ComponentDescription {
|
|
|
166
177
|
getItemTransform(item, context) {
|
|
167
178
|
const transform = ['translate(-50%, -50%)'];
|
|
168
179
|
const locator = context.locators[item.location.type];
|
|
169
|
-
if (locator)
|
|
180
|
+
if (locator) {
|
|
170
181
|
transform.push(...locator.placeItem(item, context));
|
|
182
|
+
if (locator.hide(item, context))
|
|
183
|
+
transform.push('scale(0)');
|
|
184
|
+
}
|
|
171
185
|
return transform;
|
|
172
186
|
}
|
|
173
187
|
/**
|
|
@@ -226,12 +240,13 @@ export class MaterialDescription extends ComponentDescription {
|
|
|
226
240
|
getHelpButton(item, context, props = {}) {
|
|
227
241
|
return _jsx(ItemMenuButton, { label: _jsx(Trans, { ns: "common", i18nKey: "Help" }), move: this.displayHelp(item, context), options: { transient: true }, angle: 30, ...props, children: _jsx(FontAwesomeIcon, { icon: faQuestion }) });
|
|
228
242
|
}
|
|
229
|
-
getAnimationCss(
|
|
243
|
+
getAnimationCss(animationKeyframes, duration) {
|
|
244
|
+
const elevationArc = getElevationKeyframes(defaultElevation);
|
|
230
245
|
return css `
|
|
231
|
-
animation: ${
|
|
246
|
+
animation: ${elevationArc} ${duration}s ease-in-out forwards;
|
|
232
247
|
|
|
233
248
|
> * {
|
|
234
|
-
animation: ${
|
|
249
|
+
animation: ${animationKeyframes} ${duration}s ease-in-out forwards;
|
|
235
250
|
}
|
|
236
251
|
`;
|
|
237
252
|
}
|
|
@@ -242,12 +257,4 @@ export class MaterialDescription extends ComponentDescription {
|
|
|
242
257
|
function isMovementOfItem(move) {
|
|
243
258
|
return isMoveItem(move) || isMoveItemsAtOnce(move);
|
|
244
259
|
}
|
|
245
|
-
const upAndDown = keyframes `
|
|
246
|
-
from, to {
|
|
247
|
-
transform: none;
|
|
248
|
-
}
|
|
249
|
-
50% {
|
|
250
|
-
transform: translateZ(10em);
|
|
251
|
-
}
|
|
252
|
-
`;
|
|
253
260
|
//# sourceMappingURL=MaterialDescription.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaterialDescription.js","sourceRoot":"","sources":["../../../src/components/material/MaterialDescription.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"MaterialDescription.js","sourceRoot":"","sources":["../../../src/components/material/MaterialDescription.tsx"],"names":[],"mappings":"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"}
|