@escapenavigator/hooks 1.10.146 → 1.10.147
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.
|
@@ -146,6 +146,35 @@ const PlayersAndVariationPicker = ({ slot, currentTariffId, currentDuration, loa
|
|
|
146
146
|
const effectiveMin = typeof minPlayers === 'number' && Number.isFinite(minPlayers)
|
|
147
147
|
? Math.max(minFromTariff, minPlayers)
|
|
148
148
|
: minFromTariff;
|
|
149
|
+
// Единственный источник истины «что реально можно выбрать»: ключи
|
|
150
|
+
// прайса тарифа, попадающие в [effectiveMin, effectiveMax] с учётом
|
|
151
|
+
// детей. Ровно те же числа рендерятся кнопками ниже.
|
|
152
|
+
const availablePlayerKeys = (0, react_1.useMemo)(() => playersOptions
|
|
153
|
+
.map((p) => p.key)
|
|
154
|
+
.filter((key) => {
|
|
155
|
+
const total = key + (_children || 0);
|
|
156
|
+
return total >= effectiveMin && total <= effectiveMax;
|
|
157
|
+
}), [playersOptions, effectiveMin, effectiveMax, _children]);
|
|
158
|
+
// Если уже выбранное (или засеянное хостом) число игроков выпало из
|
|
159
|
+
// доступного набора — например, после смены вариации/тарифа на более
|
|
160
|
+
// узкий диапазон — подтягиваем его к ближайшему валидному. Без этого
|
|
161
|
+
// `values.players` остаётся «залипшим» на count, которого в новом
|
|
162
|
+
// тарифе нет, и на бэке `tariff.price[players]` = undefined → NaN →
|
|
163
|
+
// 500 при создании заказа. `_players === 0/undefined` трактуем как
|
|
164
|
+
// «ещё не выбрано» и не трогаем (валидация формы заставит выбрать).
|
|
165
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: однонаправленный clamp, зависим только от набора и значения
|
|
166
|
+
(0, react_1.useEffect)(() => {
|
|
167
|
+
if (!availablePlayerKeys.length)
|
|
168
|
+
return;
|
|
169
|
+
if (!_players)
|
|
170
|
+
return;
|
|
171
|
+
if (availablePlayerKeys.includes(_players))
|
|
172
|
+
return;
|
|
173
|
+
const nearest = availablePlayerKeys.reduce((acc, key) => Math.abs(key - _players) < Math.abs(acc - _players) ? key : acc);
|
|
174
|
+
setPlayers(nearest);
|
|
175
|
+
onChange === null || onChange === void 0 ? void 0 : onChange('players', nearest);
|
|
176
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
177
|
+
}, [availablePlayerKeys, _players]);
|
|
149
178
|
const childrenOptions = (0, react_1.useMemo)(() => {
|
|
150
179
|
if (!tariff.child || !maxFromTariff)
|
|
151
180
|
return [];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@escapenavigator/hooks",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.147",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"test": "jest"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@escapenavigator/services": "^1.10.
|
|
17
|
+
"@escapenavigator/services": "^1.10.155",
|
|
18
18
|
"@escapenavigator/types": "^1.10.145",
|
|
19
|
-
"@escapenavigator/utils": "^1.10.
|
|
19
|
+
"@escapenavigator/utils": "^1.10.150",
|
|
20
20
|
"react": "19.2.6"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
@@ -30,5 +30,5 @@
|
|
|
30
30
|
"ts-jest": "^29.1.1",
|
|
31
31
|
"typescript": "^5.6"
|
|
32
32
|
},
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "a544fe463f486e809bc002494b1260c6bb596aaf"
|
|
34
34
|
}
|