@scrabble-solver/scrabble-solver 2.11.7 → 2.11.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +7 -7
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/eslint/.cache_8dgz12 +1 -1
- package/.next/cache/next-server.js.nft.json +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/edge-server-production/0.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/131.js +153 -115
- package/.next/server/chunks/277.js +1430 -691
- package/.next/server/chunks/44.js +3 -0
- package/.next/server/chunks/50.js +20 -78
- package/.next/server/chunks/865.js +153 -115
- package/.next/server/chunks/911.js +14 -14
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/404.js.nft.json +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/_app.js +8 -0
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/api/solve.js +44 -11
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/index.js +169 -15
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/index.json +1 -1
- package/.next/static/9oRWxnZ1xFLSs55FJtiYi/_buildManifest.js +1 -0
- package/.next/static/chunks/pages/{404-ca203fa27afc37d8.js → 404-b4b5ce15153d4825.js} +1 -1
- package/.next/static/chunks/pages/_app-b0231bed954dd413.js +28 -0
- package/.next/static/chunks/pages/index-4e8566409753e1c3.js +1 -0
- package/.next/static/css/60e8258da7362a1a.css +1 -0
- package/.next/static/css/fcc46fec97b11afc.css +2 -0
- package/.next/trace +52 -50
- package/package.json +14 -13
- package/src/components/Board/Board.module.scss +18 -4
- package/src/components/Board/Board.tsx +145 -76
- package/src/components/Board/BoardPure.tsx +32 -40
- package/src/components/Board/components/Actions/Actions.module.scss +6 -17
- package/src/components/Board/components/Actions/Actions.tsx +36 -18
- package/src/components/Board/components/Cell/Cell.module.scss +12 -13
- package/src/components/Board/components/Cell/Cell.tsx +53 -3
- package/src/components/Board/components/InputPrompt/InputPrompt.module.scss +47 -0
- package/src/components/Board/components/InputPrompt/InputPrompt.tsx +81 -0
- package/src/components/Board/components/InputPrompt/index.ts +1 -0
- package/src/components/Board/components/ToggleDirectionButton/ToggleDirectionButton.module.scss +21 -0
- package/src/components/Board/components/ToggleDirectionButton/ToggleDirectionButton.tsx +34 -0
- package/src/components/Board/components/ToggleDirectionButton/index.ts +1 -0
- package/src/components/Board/components/index.ts +2 -0
- package/src/components/Board/hooks/index.ts +4 -0
- package/src/components/Board/hooks/useBackgroundImage.tsx +13 -9
- package/src/components/Board/hooks/useBoardStyle.ts +27 -0
- package/src/components/Board/hooks/useFloatingActions.ts +22 -0
- package/src/components/Board/hooks/useFloatingFocus.ts +10 -0
- package/src/components/Board/hooks/useFloatingInputPrompt.ts +19 -0
- package/src/components/Board/hooks/useGrid.ts +19 -2
- package/src/components/Key/Key.module.scss +7 -11
- package/src/components/NavButtons/NavButtons.tsx +2 -2
- package/src/components/Rack/Rack.module.scss +6 -6
- package/src/components/Rack/Rack.tsx +102 -24
- package/src/components/Rack/components/InputPrompt/InputPrompt.module.scss +22 -0
- package/src/components/Rack/components/InputPrompt/InputPrompt.tsx +89 -0
- package/src/components/Rack/components/InputPrompt/index.ts +1 -0
- package/src/components/Rack/components/RackTile/RackTile.module.scss +11 -0
- package/src/components/Rack/{RackTile.tsx → components/RackTile/RackTile.tsx} +59 -9
- package/src/components/Rack/components/RackTile/index.ts +1 -0
- package/src/components/Rack/components/index.ts +2 -0
- package/src/components/Radio/Radio.module.scss +0 -8
- package/src/components/Solver/Solver.module.scss +0 -20
- package/src/components/Solver/Solver.tsx +2 -4
- package/src/components/Solver/components/ResultCandidatePicker/ResultCandidatePicker.tsx +2 -10
- package/src/components/Solver/components/index.ts +0 -1
- package/src/components/Tile/Tile.module.scss +5 -0
- package/src/components/Tile/Tile.tsx +8 -6
- package/src/components/Tile/TilePure.tsx +8 -0
- package/src/hooks/useAppLayout.ts +3 -1
- package/src/hooks/useLocalStorage.ts +8 -0
- package/src/i18n/de.json +6 -1
- package/src/i18n/en.json +6 -1
- package/src/i18n/es.json +6 -1
- package/src/i18n/fa.json +6 -1
- package/src/i18n/fr.json +6 -1
- package/src/i18n/pl.json +6 -1
- package/src/icons/Keyboard.svg +4 -3
- package/src/icons/KeyboardFill.svg +4 -0
- package/src/icons/index.ts +1 -0
- package/src/lib/extractCharacters.test.ts +26 -0
- package/src/lib/extractCharacters.ts +11 -9
- package/src/lib/extractCharactersByCase.test.ts +31 -0
- package/src/lib/extractCharactersByCase.ts +31 -0
- package/src/lib/index.ts +4 -1
- package/src/lib/isCtrl.ts +7 -0
- package/src/lib/isUpperCase.ts +7 -0
- package/src/modals/KeyMapModal/KeyMapModal.tsx +20 -4
- package/src/modals/KeyMapModal/components/Mapping/Mapping.module.scss +10 -4
- package/src/modals/SettingsModal/SettingsModal.tsx +5 -1
- package/src/modals/SettingsModal/components/InputModeSetting/InputModeSetting.module.scss +12 -0
- package/src/modals/SettingsModal/components/InputModeSetting/InputModeSetting.tsx +55 -0
- package/src/modals/SettingsModal/components/InputModeSetting/index.ts +1 -0
- package/src/modals/SettingsModal/components/InputModeSetting/lib.ts +13 -0
- package/src/modals/SettingsModal/components/InputModeSetting/types.ts +7 -0
- package/src/modals/SettingsModal/components/index.ts +1 -0
- package/src/state/localStorage.ts +10 -1
- package/src/state/selectors.ts +2 -0
- package/src/state/slices/settingsInitialState.ts +4 -1
- package/src/state/slices/settingsSlice.ts +6 -1
- package/src/styles/mixins.scss +1 -0
- package/src/styles/variables.scss +2 -0
- package/src/types/index.ts +7 -0
- package/.next/static/chunks/pages/_app-e89a3c225b87516a.js +0 -28
- package/.next/static/chunks/pages/index-58744f49bf6b891f.js +0 -1
- package/.next/static/css/34adfcf12a7d9bb6.css +0 -1
- package/.next/static/css/edaeaa48321b4cf2.css +0 -2
- package/.next/static/uhB6d-q63uRC6RubwepLq/_buildManifest.js +0 -1
- package/src/components/Solver/components/FloatingSolveButton/FloatingSolveButton.module.scss +0 -7
- package/src/components/Solver/components/FloatingSolveButton/FloatingSolveButton.tsx +0 -53
- package/src/components/Solver/components/FloatingSolveButton/index.ts +0 -1
- /package/.next/static/{uhB6d-q63uRC6RubwepLq → 9oRWxnZ1xFLSs55FJtiYi}/_ssgManifest.js +0 -0
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Board, Locale } from '@scrabble-solver/types';
|
|
2
2
|
import store2 from 'store2';
|
|
3
3
|
|
|
4
|
-
import { AutoGroupTiles, Rack } from 'types';
|
|
4
|
+
import { AutoGroupTiles, InputMode, Rack } from 'types';
|
|
5
5
|
|
|
6
6
|
const AUTO_GROUP_TILES = 'auto-group-tiles';
|
|
7
7
|
const BOARD = 'board';
|
|
8
8
|
const CONFIG_ID = 'config-id';
|
|
9
|
+
const INPUT_MODE = 'input-mode';
|
|
9
10
|
const LOCALE = 'locale';
|
|
10
11
|
const RACK = 'rack';
|
|
11
12
|
|
|
@@ -38,6 +39,14 @@ const localStorage = {
|
|
|
38
39
|
store.set(CONFIG_ID, configId, true);
|
|
39
40
|
},
|
|
40
41
|
|
|
42
|
+
getInputMode(): InputMode | undefined {
|
|
43
|
+
return store.get(INPUT_MODE);
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
setInputMode(inputMode: InputMode | undefined): void {
|
|
47
|
+
store.set(INPUT_MODE, inputMode, true);
|
|
48
|
+
},
|
|
49
|
+
|
|
41
50
|
getLocale(): Locale | undefined {
|
|
42
51
|
return store.get(LOCALE);
|
|
43
52
|
},
|
package/src/state/selectors.ts
CHANGED
|
@@ -65,6 +65,8 @@ export const selectLocaleAutoGroupTiles = createSelector([selectLocale, selectSe
|
|
|
65
65
|
|
|
66
66
|
export const selectBoard = selectBoardRoot;
|
|
67
67
|
|
|
68
|
+
export const selectInputMode = createSelector([selectSettingsRoot], (settings) => settings.inputMode);
|
|
69
|
+
|
|
68
70
|
export const selectConfigId = createSelector([selectSettingsRoot], (settings) => settings.configId);
|
|
69
71
|
|
|
70
72
|
export const selectConfig = createSelector([selectConfigId, selectLocale], getLocaleConfig);
|
|
@@ -2,21 +2,24 @@ import { literaki, scrabble } from '@scrabble-solver/configs';
|
|
|
2
2
|
import { Locale } from '@scrabble-solver/types';
|
|
3
3
|
|
|
4
4
|
import { guessLocale } from 'lib';
|
|
5
|
-
import { AutoGroupTiles } from 'types';
|
|
5
|
+
import { AutoGroupTiles, InputMode } from 'types';
|
|
6
6
|
|
|
7
7
|
import localStorage from '../localStorage';
|
|
8
8
|
|
|
9
9
|
export interface SettingsState {
|
|
10
10
|
autoGroupTiles: AutoGroupTiles;
|
|
11
11
|
configId: typeof literaki.id | typeof scrabble.id;
|
|
12
|
+
inputMode: InputMode;
|
|
12
13
|
locale: Locale;
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
const localStorageAutoGroupTiles = localStorage.getAutoGroupTiles();
|
|
17
|
+
const isTouchScreen = typeof globalThis.matchMedia !== 'undefined' && globalThis.matchMedia('(hover: none)').matches;
|
|
16
18
|
|
|
17
19
|
const settingsInitialState: SettingsState = {
|
|
18
20
|
autoGroupTiles: typeof localStorageAutoGroupTiles === 'undefined' ? 'left' : localStorageAutoGroupTiles,
|
|
19
21
|
configId: localStorage.getConfigId() || scrabble.id,
|
|
22
|
+
inputMode: localStorage.getInputMode() || (isTouchScreen ? 'touchscreen' : 'keyboard'),
|
|
20
23
|
locale: localStorage.getLocale() || guessLocale(),
|
|
21
24
|
};
|
|
22
25
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
|
|
2
2
|
import { Locale } from '@scrabble-solver/types';
|
|
3
3
|
|
|
4
|
-
import { AutoGroupTiles } from 'types';
|
|
4
|
+
import { AutoGroupTiles, InputMode } from 'types';
|
|
5
5
|
|
|
6
6
|
import settingsInitialState from './settingsInitialState';
|
|
7
7
|
|
|
@@ -19,6 +19,11 @@ const settingsSlice = createSlice({
|
|
|
19
19
|
return { ...state, configId };
|
|
20
20
|
},
|
|
21
21
|
|
|
22
|
+
changeInputMode: (state, action: PayloadAction<InputMode>) => {
|
|
23
|
+
const inputMode = action.payload;
|
|
24
|
+
return { ...state, inputMode };
|
|
25
|
+
},
|
|
26
|
+
|
|
22
27
|
changeLocale: (state, action: PayloadAction<Locale>) => {
|
|
23
28
|
const locale = action.payload;
|
|
24
29
|
return { ...state, locale };
|
package/src/styles/mixins.scss
CHANGED
|
@@ -107,6 +107,8 @@ $easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
|
|
|
107
107
|
--button--icon--size: 24px;
|
|
108
108
|
--dictionary--height: 260px;
|
|
109
109
|
--dictionary--height--mobile: 110px;
|
|
110
|
+
--key--height: 36px;
|
|
111
|
+
--key--icon--size: 16px;
|
|
110
112
|
--logo--aspect-ratio: 682 / 166;
|
|
111
113
|
--logo--height: 60px;
|
|
112
114
|
--modal--width: 370px;
|
package/src/types/index.ts
CHANGED
|
@@ -4,6 +4,8 @@ export type AutoGroupTiles = 'left' | 'right' | null;
|
|
|
4
4
|
|
|
5
5
|
export type Direction = 'horizontal' | 'vertical';
|
|
6
6
|
|
|
7
|
+
export type InputMode = 'keyboard' | 'touchscreen';
|
|
8
|
+
|
|
7
9
|
export interface Point {
|
|
8
10
|
x: number;
|
|
9
11
|
y: number;
|
|
@@ -45,6 +47,7 @@ export enum ResultColumn {
|
|
|
45
47
|
WordsCount = 'words-count',
|
|
46
48
|
}
|
|
47
49
|
export type TranslationKey =
|
|
50
|
+
| 'cell.enter-word'
|
|
48
51
|
| 'cell.filter-cell'
|
|
49
52
|
| 'cell.set-blank'
|
|
50
53
|
| 'cell.set-not-blank'
|
|
@@ -89,6 +92,7 @@ export type TranslationKey =
|
|
|
89
92
|
| 'menu'
|
|
90
93
|
| 'rack.placeholder'
|
|
91
94
|
| 'rack.tile.location'
|
|
95
|
+
| 'rack.touchscreen.placeholder'
|
|
92
96
|
| 'remaining-tiles'
|
|
93
97
|
| 'results'
|
|
94
98
|
| 'results.empty-state.no-results'
|
|
@@ -104,6 +108,9 @@ export type TranslationKey =
|
|
|
104
108
|
| 'settings.autoGroupTiles.right'
|
|
105
109
|
| 'settings.autoGroupTiles.null'
|
|
106
110
|
| 'settings.game'
|
|
111
|
+
| 'settings.inputMode'
|
|
112
|
+
| 'settings.inputMode.keyboard'
|
|
113
|
+
| 'settings.inputMode.touchscreen'
|
|
107
114
|
| 'settings.language'
|
|
108
115
|
| 'words'
|
|
109
116
|
| 'words.invalid'
|