don't bind any additional events for pv previews

hi-ogawa-pv-mini-board
Thibault Duplessis 2021-03-12 19:22:31 +01:00
parent b3e5b3f60c
commit 7df14d458e
1 changed files with 22 additions and 10 deletions

View File

@ -295,7 +295,14 @@ export function renderPvs(ctrl: ParentCtrl): VNode | undefined {
hook: {
insert: vnode => {
const el = vnode.elm as HTMLElement;
el.addEventListener('mouseover', (e: MouseEvent) => instance.setHovering(getElFen(el), getElUci(e)));
el.addEventListener('mouseover', (e: MouseEvent) => {
instance.setHovering(getElFen(el), getElUci(e));
const pvBoard = (e.target as HTMLElement).getAttribute('data-board');
if (pvBoard) {
const [fen, uci] = pvBoard.split('|');
instance.setPvBoard({ fen, uci });
}
});
el.addEventListener('mouseout', () => instance.setHovering(getElFen(el)));
el.addEventListener('mousedown', (e: MouseEvent) => {
const uci = getElUci(e);
@ -320,7 +327,7 @@ export function renderPvs(ctrl: ParentCtrl): VNode | undefined {
[
multiPv > 1 ? h('strong', defined(pvs[i].mate) ? '#' + pvs[i].mate : renderEval(pvs[i].cp!)) : null,
...pos.unwrap(
pos => renderPv(instance, pos.clone(), pvs[i].moves.slice(0, 12)),
pos => renderPv(pos.clone(), pvs[i].moves.slice(0, 12)),
_ => ['--']
),
]
@ -330,7 +337,7 @@ export function renderPvs(ctrl: ParentCtrl): VNode | undefined {
);
}
function renderPv(instance: CevalCtrl, pos: Position, pv: Uci[]): VNode[] {
function renderPv(pos: Position, pv: Uci[]): VNode[] {
const vnodes: VNode[] = [];
let key = makeBoardFen(pos.board);
for (let i = 0; i < pv.length; i++) {
@ -350,13 +357,18 @@ function renderPv(instance: CevalCtrl, pos: Position, pv: Uci[]): VNode[] {
break;
}
key += '|' + uci;
const hook = {
insert: (vnode: VNode) => {
const el = vnode.elm as HTMLElement;
el.addEventListener('mouseover', () => instance.setPvBoard({ fen, uci }));
},
};
vnodes.push(h('span.pv-san', { key, hook }, san));
vnodes.push(
h(
'span.pv-san',
{
key,
attrs: {
'data-board': `${fen}|${uci}`,
},
},
san
)
);
}
return vnodes;
}