chessgroundxx
Version:
lichess.org chess ui
39 lines (32 loc) • 870 B
text/typescript
import { State } from "./state.js";
import * as cg from "./types.js";
import * as board from "./board.js";
import * as util from "./util.js";
import { cancel as dragCancel } from "./drag.js";
export function setDropMode(s: State, piece?: cg.Piece): void {
s.dropmode = {
active: true,
piece,
};
dragCancel(s);
}
export function cancelDropMode(s: State): void {
s.dropmode = {
active: false,
};
}
export function drop(s: State, e: cg.MouchEvent): void {
if (!s.dropmode.active) return;
board.unsetPremove(s);
board.unsetPredrop(s);
const piece = s.dropmode.piece;
if (piece) {
s.pieces.set("a0", piece);
const position = util.eventPosition(e);
const dest =
position &&
board.getKeyAtDomPos(position, board.whitePov(s), s.dom.bounds());
if (dest) board.dropNewPiece(s, "a0", dest);
}
s.dom.redraw();
}