Add TS JSDoc coverage and improve numeric step controls

This commit is contained in:
Jage9
2026-02-22 17:12:28 -05:00
parent 3e321df56c
commit 5f1f1022fc
13 changed files with 63 additions and 10 deletions

View File

@@ -3,6 +3,9 @@ import { getEditSessionAction } from '../input/editSession';
import { formatSteppedNumber, snapNumberToStep } from '../input/numeric';
import { type WorldItem } from '../state/gameState';
/**
* Dependencies required to drive item property inspect/edit flows.
*/
type EditorDeps = {
state: {
mode: string;
@@ -40,6 +43,9 @@ type EditorDeps = {
sfxUiCancel: () => void;
};
/**
* Creates item property mode handlers so main input dispatch can stay lean.
*/
export function createItemPropertyEditor(deps: EditorDeps): {
handleItemPropertiesModeInput: (code: string, key: string) => void;
handleItemPropertyEditModeInput: (code: string, key: string, ctrlKey: boolean) => void;
@@ -155,7 +161,7 @@ export function createItemPropertyEditor(deps: EditorDeps): {
deps.sfxUiCancel();
return;
}
if (code === 'ArrowUp' || code === 'ArrowDown') {
if (code === 'ArrowUp' || code === 'ArrowDown' || code === 'PageUp' || code === 'PageDown') {
const metadata = deps.getItemPropertyMetadata(item.type, propertyKey);
if (metadata?.valueType === 'number') {
const range = metadata.range;
@@ -171,7 +177,8 @@ export function createItemPropertyEditor(deps: EditorDeps): {
: Number.isFinite(min)
? min
: 0;
const delta = code === 'ArrowUp' ? step : -step;
const multiplier = code === 'PageUp' || code === 'PageDown' ? 10 : 1;
const delta = (code === 'ArrowUp' || code === 'PageUp' ? step : -step) * multiplier;
const anchor = Number.isFinite(min) ? min : 0;
const attempted = snapNumberToStep(currentValue + delta, step, anchor);
let nextValue = attempted;