chessground
Version:
lichess.org chess ui
37 lines (30 loc) • 858 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();
}