X-Git-Url: https://git.auder.net/?p=xogo.git;a=blobdiff_plain;f=base_rules.js;h=16f6d7a733c6e0c3b664c57391af29a02c2e2478;hp=ad30c0a04cd97d376d252adb1a6f0428b0fd3a34;hb=549ca151c2c1a5d0c76cc1ab249d1687c5a18f62;hpb=5abaabb3061f9c2927e2204a33a58c309f3a0082 diff --git a/base_rules.js b/base_rules.js index ad30c0a..16f6d7a 100644 --- a/base_rules.js +++ b/base_rules.js @@ -454,7 +454,7 @@ export default class ChessRules { this.setFlags(fenParsed.flags); if (this.hasEnpassant) this.epSquare = this.getEpSquare(fenParsed.enpassant); - if (this.hasReserve) + if (this.hasReserve && !this.isDiagram) this.initReserves(fenParsed.reserve); if (this.options["crazyhouse"]) this.initIspawn(fenParsed.ispawn); @@ -558,24 +558,14 @@ export default class ChessRules { // VISUAL METHODS graphicalInit() { - // NOTE: not window.onresize = this.re_drawBoardElts because scope (this) - window.onresize = () => this.re_drawBoardElements(); const g_init = () => { this.re_drawBoardElements(); - if (!this.isDiagram) + if (!this.isDiagram && !this.mouseListeners && !this.touchListeners) this.initMouseEvents(); }; let container = document.getElementById(this.containerId); - if (container.getBoundingClientRect().width == 0) { - // Element not ready yet - let ro = new ResizeObserver(() => { - ro.unobserve(container); - g_init(); - }); - ro.observe(container); - } - else - g_init(); + this.windowResizeObs = new ResizeObserver(g_init); + this.windowResizeObs.observe(container); } re_drawBoardElements() { @@ -600,7 +590,7 @@ export default class ChessRules { cbHeight = Math.min(rc.height, 767); cbWidth = cbHeight * vRatio; } - if (this.hasReserve) { + if (this.hasReserve && !this.isDiagram) { const sqSize = cbWidth / this.size.y; // NOTE: allocate space for reserves (up/down) even if they are empty // Cannot use getReserveSquareSize() here, but sqSize is an upper bound. @@ -697,7 +687,7 @@ export default class ChessRules { } } } - if (this.hasReserve) + if (this.hasReserve && !this.isDiagram) this.re_drawReserve(['w', 'b'], r); } @@ -827,7 +817,7 @@ export default class ChessRules { } } } - if (this.hasReserve) + if (this.hasReserve && !this.isDiagram) this.rescaleReserve(newR); } @@ -1010,6 +1000,8 @@ export default class ChessRules { } removeListeners() { + let container = document.getElementById(this.containerId); + this.windowResizeObs.unobserve(container); if (this.isDiagram) return; //no listeners in this case if ('onmousedown' in window) {