UNPKG

chessground

Version:
106 lines 3.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.computeSquareCenter = exports.createEl = exports.isRightButton = exports.eventPosition = exports.setVisible = exports.translateRel = exports.translateAbs = exports.posToTranslateRel = exports.posToTranslateAbs = exports.samePiece = exports.distanceSq = exports.opposite = exports.timer = exports.memo = exports.allPos = exports.key2pos = exports.pos2key = exports.allKeys = exports.invRanks = void 0; const cg = require("./types"); exports.invRanks = [...cg.ranks].reverse(); exports.allKeys = Array.prototype.concat(...cg.files.map(c => cg.ranks.map(r => c + r))); const pos2key = (pos) => exports.allKeys[8 * pos[0] + pos[1]]; exports.pos2key = pos2key; const key2pos = (k) => [k.charCodeAt(0) - 97, k.charCodeAt(1) - 49]; exports.key2pos = key2pos; exports.allPos = exports.allKeys.map(exports.key2pos); function memo(f) { let v; const ret = () => { if (v === undefined) v = f(); return v; }; ret.clear = () => { v = undefined; }; return ret; } exports.memo = memo; const timer = () => { let startAt; return { start() { startAt = performance.now(); }, cancel() { startAt = undefined; }, stop() { if (!startAt) return 0; const time = performance.now() - startAt; startAt = undefined; return time; }, }; }; exports.timer = timer; const opposite = (c) => (c === 'white' ? 'black' : 'white'); exports.opposite = opposite; const distanceSq = (pos1, pos2) => { const dx = pos1[0] - pos2[0], dy = pos1[1] - pos2[1]; return dx * dx + dy * dy; }; exports.distanceSq = distanceSq; const samePiece = (p1, p2) => p1.role === p2.role && p1.color === p2.color; exports.samePiece = samePiece; const posToTranslateBase = (pos, asWhite, xFactor, yFactor) => [ (asWhite ? pos[0] : 7 - pos[0]) * xFactor, (asWhite ? 7 - pos[1] : pos[1]) * yFactor, ]; const posToTranslateAbs = (bounds) => { const xFactor = bounds.width / 8, yFactor = bounds.height / 8; return (pos, asWhite) => posToTranslateBase(pos, asWhite, xFactor, yFactor); }; exports.posToTranslateAbs = posToTranslateAbs; const posToTranslateRel = (pos, asWhite) => posToTranslateBase(pos, asWhite, 100, 100); exports.posToTranslateRel = posToTranslateRel; const translateAbs = (el, pos) => { el.style.transform = `translate(${pos[0]}px,${pos[1]}px)`; }; exports.translateAbs = translateAbs; const translateRel = (el, percents) => { el.style.transform = `translate(${percents[0]}%,${percents[1]}%)`; }; exports.translateRel = translateRel; const setVisible = (el, v) => { el.style.visibility = v ? 'visible' : 'hidden'; }; exports.setVisible = setVisible; const eventPosition = (e) => { var _a; if (e.clientX || e.clientX === 0) return [e.clientX, e.clientY]; if ((_a = e.targetTouches) === null || _a === void 0 ? void 0 : _a[0]) return [e.targetTouches[0].clientX, e.targetTouches[0].clientY]; return; }; exports.eventPosition = eventPosition; const isRightButton = (e) => e.buttons === 2 || e.button === 2; exports.isRightButton = isRightButton; const createEl = (tagName, className) => { const el = document.createElement(tagName); if (className) el.className = className; return el; }; exports.createEl = createEl; function computeSquareCenter(key, asWhite, bounds) { const pos = exports.key2pos(key); if (!asWhite) { pos[0] = 7 - pos[0]; pos[1] = 7 - pos[1]; } return [ bounds.left + (bounds.width * pos[0]) / 8 + bounds.width / 16, bounds.top + (bounds.height * (7 - pos[1])) / 8 + bounds.height / 16, ]; } exports.computeSquareCenter = computeSquareCenter; //# sourceMappingURL=util.js.map