don't bind any additional events for pv previews
parent
b3e5b3f60c
commit
7df14d458e
|
@ -295,7 +295,14 @@ export function renderPvs(ctrl: ParentCtrl): VNode | undefined {
|
||||||
hook: {
|
hook: {
|
||||||
insert: vnode => {
|
insert: vnode => {
|
||||||
const el = vnode.elm as HTMLElement;
|
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('mouseout', () => instance.setHovering(getElFen(el)));
|
||||||
el.addEventListener('mousedown', (e: MouseEvent) => {
|
el.addEventListener('mousedown', (e: MouseEvent) => {
|
||||||
const uci = getElUci(e);
|
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,
|
multiPv > 1 ? h('strong', defined(pvs[i].mate) ? '#' + pvs[i].mate : renderEval(pvs[i].cp!)) : null,
|
||||||
...pos.unwrap(
|
...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[] = [];
|
const vnodes: VNode[] = [];
|
||||||
let key = makeBoardFen(pos.board);
|
let key = makeBoardFen(pos.board);
|
||||||
for (let i = 0; i < pv.length; i++) {
|
for (let i = 0; i < pv.length; i++) {
|
||||||
|
@ -350,13 +357,18 @@ function renderPv(instance: CevalCtrl, pos: Position, pv: Uci[]): VNode[] {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
key += '|' + uci;
|
key += '|' + uci;
|
||||||
const hook = {
|
vnodes.push(
|
||||||
insert: (vnode: VNode) => {
|
h(
|
||||||
const el = vnode.elm as HTMLElement;
|
'span.pv-san',
|
||||||
el.addEventListener('mouseover', () => instance.setPvBoard({ fen, uci }));
|
{
|
||||||
},
|
key,
|
||||||
};
|
attrs: {
|
||||||
vnodes.push(h('span.pv-san', { key, hook }, san));
|
'data-board': `${fen}|${uci}`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
san
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return vnodes;
|
return vnodes;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue