UNPKG

chessground

Version:
59 lines 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Chessground = void 0; const api_1 = require("./api"); const config_1 = require("./config"); const state_1 = require("./state"); const wrap_1 = require("./wrap"); const events = require("./events"); const render_1 = require("./render"); const svg = require("./svg"); const util = require("./util"); function Chessground(element, config) { const maybeState = state_1.defaults(); config_1.configure(maybeState, config || {}); function redrawAll() { const prevUnbind = 'dom' in maybeState ? maybeState.dom.unbind : undefined; const relative = maybeState.viewOnly && !maybeState.drawable.visible, elements = wrap_1.renderWrap(element, maybeState, relative), bounds = util.memo(() => elements.board.getBoundingClientRect()), redrawNow = (skipSvg) => { render_1.render(state); if (!skipSvg && elements.svg) svg.renderSvg(state, elements.svg, elements.customSvg); }, boundsUpdated = () => { bounds.clear(); render_1.updateBounds(state); if (elements.svg) svg.renderSvg(state, elements.svg, elements.customSvg); }; const state = maybeState; state.dom = { elements, bounds, redraw: debounceRedraw(redrawNow), redrawNow, unbind: prevUnbind, relative, }; state.drawable.prevSvgHash = ''; redrawNow(false); events.bindBoard(state, boundsUpdated); if (!prevUnbind) state.dom.unbind = events.bindDocument(state, boundsUpdated); state.events.insert && state.events.insert(elements); return state; } return api_1.start(redrawAll(), redrawAll); } exports.Chessground = Chessground; function debounceRedraw(redrawNow) { let redrawing = false; return () => { if (redrawing) return; redrawing = true; requestAnimationFrame(() => { redrawNow(); redrawing = false; }); }; } //# sourceMappingURL=chessground.js.map