chessground12
Version:
Extended lishuuro.org Chess UI
41 lines • 1.35 kB
JavaScript
import { cancel as dragCancel } from './drag';
import { predrop } from './predrop';
import { unselect, isPredroppable, unsetPremove, unsetPredrop, getKeyAtDomPos, whitePov, dropNewPiece, } from './board';
import { dropOrigOf, eventPosition } from './util';
export function setDropMode(s, piece) {
s.dropmode.active = true;
s.dropmode.piece = piece;
dragCancel(s);
unselect(s);
if (piece) {
if (isPredroppable(s)) {
s.predroppable.dropDests = predrop(s.pieces, piece, s.geometry, s.variant);
}
else {
if (s.movable.dests) {
const dropDests = new Map([[piece.role, s.movable.dests.get(dropOrigOf(piece.role))]]);
s.dropmode.active = true;
s.dropmode.dropDests = dropDests;
}
}
}
}
export function cancelDropMode(s) {
s.dropmode.active = false;
}
export function drop(s, e) {
if (!s.dropmode.active)
return;
unsetPremove(s);
unsetPredrop(s);
const piece = s.dropmode.piece;
if (piece) {
s.pieces.set('a0', piece);
const position = eventPosition(e);
const dest = position && getKeyAtDomPos(position, whitePov(s), s.dom.bounds(), s.geometry);
if (dest)
dropNewPiece(s, 'a0', dest);
}
s.dom.redraw();
}
//# sourceMappingURL=drop.js.map