parent
71d61a8916
commit
ae49acda9e
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "minesweeper",
|
"name": "minesweeper",
|
||||||
"version": "0.81.5",
|
"version": "0.81.6",
|
||||||
"description": "Just Minesweeper!",
|
"description": "Just Minesweeper!",
|
||||||
"author": "Felix W. Dekker",
|
"author": "Felix W. Dekker",
|
||||||
"browser": "dist/bundle.js",
|
"browser": "dist/bundle.js",
|
||||||
|
|
|
@ -7,11 +7,7 @@ form {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
|
||||||
form button:focus:not(:hover) {
|
form button.cancel {
|
||||||
background-color: var(--fwdekker-theme-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
form button.cancel, form button.cancel:focus, form button.cancel:hover {
|
|
||||||
background-color: #606c76;
|
background-color: #606c76;
|
||||||
border-color: #606c76;
|
border-color: #606c76;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,14 @@ export function shuffleArrayInPlace(array: any[], seed: number): any[] {
|
||||||
return array;
|
return array;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Blurs the currently active element, if possible.
|
||||||
|
*/
|
||||||
|
export function blurActiveElement(): void {
|
||||||
|
// @ts-ignore
|
||||||
|
document.activeElement?.blur?.();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Slices `array` into chunks of `chunkSize` elements each.
|
* Slices `array` into chunks of `chunkSize` elements each.
|
||||||
*
|
*
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
import {$} from "@fwdekker/template";
|
import {$} from "@fwdekker/template";
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import alea from "alea";
|
import alea from "alea";
|
||||||
import {stringToHash} from "./Common";
|
import {blurActiveElement, stringToHash} from "./Common";
|
||||||
import {customDifficulty, defaultDifficulty, difficulties} from "./Difficulty";
|
import {customDifficulty, defaultDifficulty, difficulties} from "./Difficulty";
|
||||||
import {BasicIconFont, Display, ForkAwesomeFont} from "./Display";
|
import {BasicIconFont, Display, ForkAwesomeFont} from "./Display";
|
||||||
import {Field} from "./Field";
|
import {Field} from "./Field";
|
||||||
|
@ -140,6 +140,7 @@ export class Game {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
this.initNewField(this.field?.width, this.field?.height, this.field?.mineCount, this.field?.isSolvable);
|
this.initNewField(this.field?.width, this.field?.height, this.field?.mineCount, this.field?.isSolvable);
|
||||||
|
blurActiveElement();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -151,6 +152,7 @@ export class Game {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
this.field?.undo(); // Undoes all
|
this.field?.undo(); // Undoes all
|
||||||
|
blurActiveElement();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -190,6 +192,7 @@ export class Game {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
this.field?.undo(1);
|
this.field?.undo(1);
|
||||||
|
blurActiveElement();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -201,6 +204,7 @@ export class Game {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
this.field?.redo(1);
|
this.field?.redo(1);
|
||||||
|
blurActiveElement();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -215,6 +219,7 @@ export class Game {
|
||||||
this.statistics.hintsRequested++;
|
this.statistics.hintsRequested++;
|
||||||
this.display.hintSquare = (new Solver()).getHint(this.field);
|
this.display.hintSquare = (new Solver()).getHint(this.field);
|
||||||
}
|
}
|
||||||
|
blurActiveElement();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -229,6 +234,7 @@ export class Game {
|
||||||
this.statistics.solverUsages++;
|
this.statistics.solverUsages++;
|
||||||
(new Solver()).solve(this.field);
|
(new Solver()).solve(this.field);
|
||||||
}
|
}
|
||||||
|
blurActiveElement();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -242,6 +248,7 @@ export class Game {
|
||||||
|
|
||||||
this.enableMarksInput.checked = preferences.marksEnabled;
|
this.enableMarksInput.checked = preferences.marksEnabled;
|
||||||
this.preferencesOverlay.show();
|
this.preferencesOverlay.show();
|
||||||
|
blurActiveElement();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
this.preferencesOverlay = new Overlay(
|
this.preferencesOverlay = new Overlay(
|
||||||
|
@ -260,6 +267,7 @@ export class Game {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
this.statisticsOverlay.show();
|
this.statisticsOverlay.show();
|
||||||
|
blurActiveElement();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
this.statisticsOverlay = new Overlay(
|
this.statisticsOverlay = new Overlay(
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
import {blurActiveElement} from "./Common";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An overlay displayed in HTML.
|
* An overlay displayed in HTML.
|
||||||
*/
|
*/
|
||||||
|
@ -72,6 +75,7 @@ export class Overlay {
|
||||||
*/
|
*/
|
||||||
hide(): void {
|
hide(): void {
|
||||||
this.overlay.style.visibility = "hidden";
|
this.overlay.style.visibility = "hidden";
|
||||||
|
blurActiveElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue