scrabble-solver
Version:
Scrabble Solver 2 - Free, open-source, cross-platform, multi-language analysis tool for Scrabble, Scrabble Duel, Super Scrabble, Letter League, Crossplay, Literaki, and Kelimelik. Quickly find the top-scoring words using the given board and tiles.
36 lines (29 loc) • 1.15 kB
text/typescript
import { createSelector } from '@reduxjs/toolkit';
import { unorderedArraysEqual } from '@/lib';
import { selectBoard } from './board';
import { getRemainingTiles } from './lib';
import { selectCharacters } from './rack';
import { selectConfig, selectLocale } from './settings';
import { selectLastSolvedParameters } from './solve';
const selectHasBoardChanged = createSelector(
[selectLastSolvedParameters, selectBoard],
(lastSolvedParameters, board) => {
return !lastSolvedParameters.board.equals(board);
},
);
const selectHaveCharactersChanged = createSelector(
[selectLastSolvedParameters, selectCharacters, selectLocale],
(lastSolvedParameters, characters, locale) => {
return !unorderedArraysEqual(lastSolvedParameters.characters, characters, locale);
},
);
export const selectAreResultsOutdated = createSelector(
[selectHasBoardChanged, selectHaveCharactersChanged],
(hasBoardChanged, haveCharactersChanged) => {
return hasBoardChanged || haveCharactersChanged;
},
);
export const selectRemainingTiles = createSelector(
[selectConfig, selectBoard, selectCharacters, selectLocale],
getRemainingTiles,
);