diff --git a/src/client/LocalServer.ts b/src/client/LocalServer.ts index 100bbc3f9..2514dc695 100644 --- a/src/client/LocalServer.ts +++ b/src/client/LocalServer.ts @@ -132,7 +132,10 @@ export class LocalServer { if (!this.lobbyConfig.gameRecord) { if (clientMsg.turnNumber % 100 === 0) { // In singleplayer, only store hash every 100 turns to reduce size of game record. - this.turns[clientMsg.turnNumber].hash = clientMsg.hash; + const turn = this.turns[clientMsg.turnNumber]; + if (turn) { + turn.hash = clientMsg.hash; + } } return; } diff --git a/src/client/components/FluentSlider.ts b/src/client/components/FluentSlider.ts index 56957d49c..cf2dedd6f 100644 --- a/src/client/components/FluentSlider.ts +++ b/src/client/components/FluentSlider.ts @@ -84,7 +84,7 @@ export class FluentSlider extends LitElement { this.dispatchValueChange(); } - private handleNumberChange(e: Event) { + private handleNumberInput(e: Event) { const target = e.target as HTMLInputElement; let val = target.valueAsNumber; if (isNaN(val)) { @@ -93,11 +93,19 @@ export class FluentSlider extends LitElement { if (val < this.min) val = this.min; if (val > this.max) val = this.max; this.value = val; + // Don't dispatch value change on every input - only on blur/enter + } + + private handleNumberComplete() { + // Dispatch the value change when editing is complete this.dispatchValueChange(); } private handleNumberKeyDown(e: KeyboardEvent) { - if (e.key === "Enter") this.isEditing = false; + if (e.key === "Enter") { + this.isEditing = false; + this.handleNumberComplete(); + } } private enableEditing() { @@ -125,8 +133,11 @@ export class FluentSlider extends LitElement { .min=${this.min} .max=${this.max} .valueAsNumber=${this.value} - @input=${this.handleNumberChange} - @blur=${() => (this.isEditing = false)} + @input=${this.handleNumberInput} + @blur=${() => { + this.isEditing = false; + this.handleNumberComplete(); + }} @keydown=${this.handleNumberKeyDown} />` : html`