chessground
Version:
lichess.org chess ui
45 lines • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.configure = void 0;
const board_1 = require("./board");
const fen_1 = require("./fen");
function configure(state, config) {
var _a;
if ((_a = config.movable) === null || _a === void 0 ? void 0 : _a.dests)
state.movable.dests = undefined;
merge(state, config);
if (config.fen) {
state.pieces = fen_1.read(config.fen);
state.drawable.shapes = [];
}
if (config.hasOwnProperty('check'))
board_1.setCheck(state, config.check || false);
if (config.hasOwnProperty('lastMove') && !config.lastMove)
state.lastMove = undefined;
else if (config.lastMove)
state.lastMove = config.lastMove;
if (state.selected)
board_1.setSelected(state, state.selected);
if (!state.animation.duration || state.animation.duration < 100)
state.animation.enabled = false;
if (!state.movable.rookCastle && state.movable.dests) {
const rank = state.movable.color === 'white' ? '1' : '8', kingStartPos = ('e' + rank), dests = state.movable.dests.get(kingStartPos), king = state.pieces.get(kingStartPos);
if (!dests || !king || king.role !== 'king')
return;
state.movable.dests.set(kingStartPos, dests.filter(d => !(d === 'a' + rank && dests.includes(('c' + rank))) &&
!(d === 'h' + rank && dests.includes(('g' + rank)))));
}
}
exports.configure = configure;
function merge(base, extend) {
for (const key in extend) {
if (isObject(base[key]) && isObject(extend[key]))
merge(base[key], extend[key]);
else
base[key] = extend[key];
}
}
function isObject(o) {
return typeof o === 'object';
}
//# sourceMappingURL=config.js.map