diff --git a/package.json b/package.json index 4052297..4cb4162 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "eslint-config-prettier": "^10.1.8", "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-import-x": "^4.16.2", - "eslint-plugin-unicorn": "^71.1.0", + "eslint-plugin-unicorn": "^72.0.0", "husky": "^9.1.7", "jsdom": "^29.0.2", "lint-staged": "^17.0.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c4550f..f29cc17 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,8 +60,8 @@ importers: specifier: ^4.16.2 version: 4.17.1(@typescript-eslint/utils@8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0))(eslint@10.7.0) eslint-plugin-unicorn: - specifier: ^71.1.0 - version: 71.1.0(eslint@10.7.0) + specifier: ^72.0.0 + version: 72.0.0(eslint@10.7.0) husky: specifier: ^9.1.7 version: 9.1.7 @@ -451,6 +451,10 @@ packages: resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/css-tree@4.0.4': + resolution: {integrity: sha512-nxMparyhqVWQvadx9x8dIfubfIPOE+X2b2waua8fzdnM9vdp9rgVtwEZlG0TmCwEUz/d/f40fzvO/eqBwdxz0A==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/js@10.0.1': resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -1768,8 +1772,8 @@ packages: resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} engines: {node: '>=20.19.0'} - caniuse-lite@1.0.30001805: - resolution: {integrity: sha512-52noaS3DubycKSXaU30TwPGIp+POyQSUVa5jBEq3vkRkY0kjyb3LQgvhU6WGyCcyXqVLWO0Cw0Q6BSdD0kUfVA==} + caniuse-lite@1.0.30001806: + resolution: {integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==} chai@5.3.3: resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} @@ -1895,8 +1899,8 @@ packages: oxc-resolver: optional: true - electron-to-chromium@1.5.389: - resolution: {integrity: sha512-cEto7aeOqBfU1D+c5py5pE+ooscKE75JifxLBdFUZsqAxRS6y7kebtxAZvICszSl05gPjYHDTjY+lXpyGvpJbg==} + electron-to-chromium@1.5.393: + resolution: {integrity: sha512-kiDJdIUawuEIcp9XoICKp1iTYDEbgguIPq526N1Q7jIQDeQ3CqoMx71025PI/7E48Ddtw2HuWsVjY7afEgNxmg==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -1905,6 +1909,10 @@ packages: resolution: {integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==} engines: {node: '>=14'} + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + entities@8.0.0: resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} engines: {node: '>=20.19.0'} @@ -1974,8 +1982,8 @@ packages: eslint-import-resolver-node: optional: true - eslint-plugin-unicorn@71.1.0: - resolution: {integrity: sha512-dn3YmR3qLLUeYyo/os3ubZ7UHQJ1WbBAgC9cIhnLTyMj9J6kivuc2U1fCmYetLexUlTDVYtBqhjSj/VaebTe6Q==} + eslint-plugin-unicorn@72.0.0: + resolution: {integrity: sha512-hqO6ksoOHO+ZhdseTuKRVQbx9U7PRO/cv8qAR1mctwzdVO2hYud8uS9luAhp43RJgziYgHAph8eHyipT8GL0ng==} engines: {node: '>=22'} peerDependencies: eslint: '>=10.4' @@ -2396,6 +2404,9 @@ packages: mdn-data@2.27.1: resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + mdn-data@2.28.1: + resolution: {integrity: sha512-U9w+PzSZ00Z5m9rZ5ARVFL5xOfuCHdKYi/1RRwDCJsboFgJDNT3zT6PIPD7mZQYaQLhsZM3GfDRgSMRHhSmVng==} + mimic-function@5.0.1: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} @@ -2514,8 +2525,8 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} - postcss@8.5.19: - resolution: {integrity: sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==} + postcss@8.5.20: + resolution: {integrity: sha512-lW616l85ucIQL+FocMmL7pQFPqBmwejrCMg+iPxyImlrANNJG9NHq/RkyCZopDhd8C3LA03PHRJDjkbGu8vvug==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -3395,6 +3406,11 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@eslint/css-tree@4.0.4': + dependencies: + mdn-data: 2.28.1 + source-map-js: 1.2.1 + '@eslint/js@10.0.1(eslint@10.7.0)': optionalDependencies: eslint: 10.7.0 @@ -4405,8 +4421,8 @@ snapshots: browserslist@4.28.6: dependencies: baseline-browser-mapping: 2.10.43 - caniuse-lite: 1.0.30001805 - electron-to-chromium: 1.5.389 + caniuse-lite: 1.0.30001806 + electron-to-chromium: 1.5.393 node-releases: 2.0.51 update-browserslist-db: 1.2.3(browserslist@4.28.6) @@ -4418,7 +4434,7 @@ snapshots: cac@7.0.0: {} - caniuse-lite@1.0.30001805: {} + caniuse-lite@1.0.30001806: {} chai@5.3.3: dependencies: @@ -4516,12 +4532,14 @@ snapshots: optionalDependencies: oxc-resolver: 11.24.2 - electron-to-chromium@1.5.389: {} + electron-to-chromium@1.5.393: {} emoji-regex@10.6.0: {} empathic@2.0.1: {} + entities@4.5.0: {} + entities@8.0.0: {} environment@1.1.0: {} @@ -4606,14 +4624,16 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-unicorn@71.1.0(eslint@10.7.0): + eslint-plugin-unicorn@72.0.0(eslint@10.7.0): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0) + '@eslint/css-tree': 4.0.4 browserslist: 4.28.6 change-case: 5.4.4 ci-info: 4.4.0 core-js-compat: 3.49.0 detect-indent: 7.0.2 + entities: 4.5.0 eslint: 10.7.0 find-up-simple: 1.0.1 globals: 17.7.0 @@ -4626,6 +4646,7 @@ snapshots: reserved-identifiers: 1.2.0 semver: 7.8.5 strip-indent: 4.1.1 + yaml: 2.9.0 eslint-scope@9.1.2: dependencies: @@ -5013,6 +5034,8 @@ snapshots: mdn-data@2.27.1: {} + mdn-data@2.28.1: {} + mimic-function@5.0.1: {} min-indent@1.0.1: {} @@ -5145,7 +5168,7 @@ snapshots: pluralize@8.0.0: {} - postcss@8.5.19: + postcss@8.5.20: dependencies: nanoid: 3.3.16 picocolors: 1.1.1 @@ -5575,7 +5598,7 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.5 - postcss: 8.5.19 + postcss: 8.5.20 rolldown: 1.0.3 tinyglobby: 0.2.17 optionalDependencies: @@ -5668,8 +5691,7 @@ snapshots: yallist@3.1.1: {} - yaml@2.9.0: - optional: true + yaml@2.9.0: {} yocto-queue@0.1.0: {} diff --git a/src/board.tsx b/src/board.tsx index 83e0663..21f6e56 100644 --- a/src/board.tsx +++ b/src/board.tsx @@ -145,7 +145,7 @@ function Board({ legalTargets.add(sq); } } - } else if (isMovable && dragState.from && legalMoves) { + } else if (isMovable && legalMoves && dragState.from) { const targets = legalMoves.get(dragState.from); if (targets) { @@ -186,7 +186,7 @@ function Board({ } const ghostStyle: React.CSSProperties | undefined = - dragState.isDragging && dragState.floating && ghostImage + ghostImage && dragState.isDragging && dragState.floating ? { backgroundImage: `url("${ghostImage}")`, backgroundPosition: 'center', @@ -334,15 +334,13 @@ function Board({ position: 'relative', width: '100%', zIndex: 1, - ...(animOffset - ? { - transform: `translate(${animOffset.x}px, ${animOffset.y}px)`, - transition: - animOffset.x !== 0 || animOffset.y !== 0 - ? 'none' - : 'var(--board-piece-transition, transform 200ms ease)', - } - : undefined), + ...(animOffset && { + transform: `translate(${animOffset.x}px, ${animOffset.y}px)`, + transition: + animOffset.x !== 0 || animOffset.y !== 0 + ? 'none' + : 'var(--board-piece-transition, transform 200ms ease)', + }), } : undefined; diff --git a/src/utilities.ts b/src/utilities.ts index 83d2edf..5037ccd 100644 --- a/src/utilities.ts +++ b/src/utilities.ts @@ -103,7 +103,7 @@ function diffPositions( function findMatch(fromSquare: Square, fromPiece: Piece): void { const matchIndex = addedEntries.findIndex(([, toPiece], index) => { - if (usedAdded.has(index) || !toPiece) { + if (!toPiece || usedAdded.has(index)) { return false; }