@scrabble-solver/scrabble-solver 2.13.4 → 2.13.5-alpha.1
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-manifest.json +15 -24
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/eslint/.cache_8dgz12 +1 -1
- package/.next/cache/webpack/client-development/0.pack.gz +0 -0
- package/.next/cache/webpack/client-development/1.pack.gz +0 -0
- package/.next/cache/webpack/client-development/10.pack.gz +0 -0
- package/.next/cache/webpack/client-development/11.pack.gz +0 -0
- package/.next/cache/webpack/client-development/12.pack.gz +0 -0
- package/.next/cache/webpack/client-development/13.pack.gz +0 -0
- package/.next/cache/webpack/client-development/14.pack.gz +0 -0
- package/.next/cache/webpack/client-development/15.pack.gz +0 -0
- package/.next/cache/webpack/client-development/2.pack.gz +0 -0
- package/.next/cache/webpack/client-development/3.pack.gz +0 -0
- package/.next/cache/webpack/client-development/4.pack.gz +0 -0
- package/.next/cache/webpack/client-development/5.pack.gz +0 -0
- package/.next/cache/webpack/client-development/6.pack.gz +0 -0
- package/.next/cache/webpack/client-development/7.pack.gz +0 -0
- package/.next/cache/webpack/client-development/8.pack.gz +0 -0
- package/.next/cache/webpack/client-development/9.pack.gz +0 -0
- package/.next/cache/webpack/client-development/index.pack.gz +0 -0
- package/.next/cache/webpack/client-development/index.pack.gz.old +0 -0
- package/.next/cache/webpack/client-development-fallback/0.pack.gz +0 -0
- package/.next/cache/webpack/client-development-fallback/index.pack.gz +0 -0
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/1.pack +0 -0
- package/.next/cache/webpack/client-production/2.pack +0 -0
- package/.next/cache/webpack/client-production/3.pack +0 -0
- package/.next/cache/webpack/client-production/4.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/.next/cache/webpack/edge-server-production/0.pack +0 -0
- package/.next/cache/webpack/edge-server-production/1.pack +0 -0
- package/.next/cache/webpack/edge-server-production/2.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
- package/.next/cache/webpack/server-development/0.pack.gz +0 -0
- package/.next/cache/webpack/server-development/1.pack.gz +0 -0
- package/.next/cache/webpack/server-development/10.pack.gz +0 -0
- package/.next/cache/webpack/server-development/11.pack.gz +0 -0
- package/.next/cache/webpack/server-development/12.pack.gz +0 -0
- package/.next/cache/webpack/server-development/13.pack.gz +0 -0
- package/.next/cache/webpack/server-development/14.pack.gz +0 -0
- package/.next/cache/webpack/server-development/15.pack.gz +0 -0
- package/.next/cache/webpack/server-development/16.pack.gz +0 -0
- package/.next/cache/webpack/server-development/17.pack.gz +0 -0
- package/.next/cache/webpack/server-development/18.pack.gz +0 -0
- package/.next/cache/webpack/server-development/19.pack.gz +0 -0
- package/.next/cache/webpack/server-development/2.pack.gz +0 -0
- package/.next/cache/webpack/server-development/20.pack.gz +0 -0
- package/.next/cache/webpack/server-development/21.pack.gz +0 -0
- package/.next/cache/webpack/server-development/22.pack.gz +0 -0
- package/.next/cache/webpack/server-development/23.pack.gz +0 -0
- package/.next/cache/webpack/server-development/3.pack.gz +0 -0
- package/.next/cache/webpack/server-development/4.pack.gz +0 -0
- package/.next/cache/webpack/server-development/5.pack.gz +0 -0
- package/.next/cache/webpack/server-development/6.pack.gz +0 -0
- package/.next/cache/webpack/server-development/7.pack.gz +0 -0
- package/.next/cache/webpack/server-development/8.pack.gz +0 -0
- package/.next/cache/webpack/server-development/9.pack.gz +0 -0
- package/.next/cache/webpack/server-development/index.pack.gz +0 -0
- package/.next/cache/webpack/server-development/index.pack.gz.old +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/1.pack +0 -0
- package/.next/cache/webpack/server-production/2.pack +0 -0
- package/.next/cache/webpack/server-production/3.pack +0 -0
- package/.next/cache/webpack/server-production/4.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack.old +0 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/pages/_app.js +3720 -1
- package/.next/server/pages/_document.js +86 -1
- package/.next/server/pages/_error.js +3742 -1
- package/.next/server/pages/api/dictionary/[locale]/[word].js +1116 -2
- package/.next/server/pages/api/solve.js +1496 -1
- package/.next/server/pages/api/verify.js +946 -1
- package/.next/server/pages/api/visit.js +176 -1
- package/.next/server/pages/index.js +4312 -1
- package/.next/server/pages-manifest.json +10 -1
- package/.next/server/vendor-chunks/@swc.js +35 -0
- package/.next/server/vendor-chunks/next.js +517 -0
- package/.next/server/webpack-api-runtime.js +168 -1
- package/.next/server/webpack-runtime.js +237 -1
- package/.next/static/chunks/main.js +1285 -0
- package/.next/static/chunks/pages/_app.js +4854 -0
- package/.next/static/chunks/pages/_error.js +28 -0
- package/.next/static/chunks/pages/index.js +717 -0
- package/.next/static/chunks/react-refresh.js +62 -0
- package/.next/static/chunks/webpack.js +1261 -0
- package/.next/static/development/_buildManifest.js +1 -0
- package/.next/static/development/_ssgManifest.js +1 -0
- package/.next/static/webpack/29a2bd94727d51e6.webpack.hot-update.json +1 -0
- package/.next/static/webpack/3754455b7d774808.webpack.hot-update.json +1 -0
- package/.next/static/webpack/633457081244afec._.hot-update.json +1 -0
- package/.next/static/webpack/b71388f846dd4d8b.webpack.hot-update.json +1 -0
- package/.next/static/webpack/e7718e8f7cbe05a0.webpack.hot-update.json +1 -0
- package/.next/static/webpack/pages/_app.29a2bd94727d51e6.hot-update.js +22 -0
- package/.next/static/webpack/pages/_app.3754455b7d774808.hot-update.js +262 -0
- package/.next/static/webpack/pages/_app.e7718e8f7cbe05a0.hot-update.js +251 -0
- package/.next/static/webpack/pages/index.3754455b7d774808.hot-update.js +75 -0
- package/.next/static/webpack/pages/index.b71388f846dd4d8b.hot-update.js +22 -0
- package/.next/static/webpack/pages/index.e7718e8f7cbe05a0.hot-update.js +32 -0
- package/.next/static/webpack/webpack.29a2bd94727d51e6.hot-update.js +18 -0
- package/.next/static/webpack/webpack.3754455b7d774808.hot-update.js +18 -0
- package/.next/static/webpack/webpack.b71388f846dd4d8b.hot-update.js +18 -0
- package/.next/static/webpack/webpack.e7718e8f7cbe05a0.hot-update.js +18 -0
- package/.next/trace +17 -44
- package/package.json +10 -10
- package/src/components/Board/Board.module.scss +14 -0
- package/src/components/Board/Board.tsx +8 -1
- package/src/components/Board/BoardPure.tsx +76 -21
- package/src/components/Board/hooks/useBackgroundImage.tsx +46 -7
- package/src/components/Board/hooks/useBoardStyle.ts +8 -3
- package/src/components/Board/lib/getCoordinate.ts +11 -0
- package/src/components/Board/lib/index.ts +1 -0
- package/src/components/Dictionary/Dictionary.tsx +17 -18
- package/src/components/EmptyState/EmptyState.tsx +1 -1
- package/src/components/Results/Results.module.scss +1 -0
- package/src/hooks/useAppLayout.ts +18 -4
- package/src/i18n/i18n.ts +15 -15
- package/src/i18n/{en.json → languages/english.json} +4 -0
- package/src/i18n/{fr.json → languages/french.json} +4 -0
- package/src/i18n/{de.json → languages/german.json} +4 -0
- package/src/i18n/{fa.json → languages/persian.json} +4 -0
- package/src/i18n/{pl.json → languages/polish.json} +4 -0
- package/src/i18n/{ro.json → languages/romanian.json} +4 -0
- package/src/i18n/{es.json → languages/spanish.json} +4 -0
- package/src/lib/extractCharacters.test.ts +3 -5
- package/src/lib/extractCharactersByCase.test.ts +3 -5
- package/src/modals/SettingsModal/SettingsModal.tsx +11 -1
- package/src/modals/SettingsModal/components/ShowCoordinatesSetting/ShowCoordinatesSetting.module.scss +12 -0
- package/src/modals/SettingsModal/components/ShowCoordinatesSetting/ShowCoordinatesSetting.tsx +59 -0
- package/src/modals/SettingsModal/components/ShowCoordinatesSetting/index.ts +1 -0
- package/src/modals/SettingsModal/components/index.ts +1 -0
- package/src/parameters/index.ts +1 -0
- package/src/state/localStorage.ts +10 -1
- package/src/state/sagas.ts +6 -3
- package/src/state/selectors.ts +2 -0
- package/src/state/slices/settingsInitialState.ts +6 -4
- package/src/state/slices/settingsSlice.ts +6 -1
- package/src/state/store.ts +1 -1
- package/src/styles/mixins.scss +9 -2
- package/src/types/index.ts +4 -0
- package/tsconfig.json +1 -0
- package/.next/BUILD_ID +0 -1
- package/.next/export-marker.json +0 -1
- package/.next/images-manifest.json +0 -1
- package/.next/next-minimal-server.js.nft.json +0 -1
- package/.next/next-server.js.nft.json +0 -1
- package/.next/prerender-manifest.js +0 -1
- package/.next/prerender-manifest.json +0 -1
- package/.next/required-server-files.json +0 -1
- package/.next/routes-manifest.json +0 -1
- package/.next/server/InjectManifest.js.nft.json +0 -1
- package/.next/server/chunks/28.js +0 -1
- package/.next/server/chunks/331.js +0 -6
- package/.next/server/chunks/577.js +0 -1
- package/.next/server/chunks/911.js +0 -1
- package/.next/server/chunks/977.js +0 -1
- package/.next/server/chunks/font-manifest.json +0 -1
- package/.next/server/font-manifest.json +0 -1
- package/.next/server/functions-config-manifest.json +0 -1
- package/.next/server/pages/404.html +0 -1
- package/.next/server/pages/404.js.nft.json +0 -1
- package/.next/server/pages/500.html +0 -1
- package/.next/server/pages/_app.js.nft.json +0 -1
- package/.next/server/pages/_document.js.nft.json +0 -1
- package/.next/server/pages/_error.js.nft.json +0 -1
- package/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +0 -1
- package/.next/server/pages/api/dictionary/[locale].js +0 -1
- package/.next/server/pages/api/dictionary/[locale].js.nft.json +0 -1
- package/.next/server/pages/api/solve.js.nft.json +0 -1
- package/.next/server/pages/api/verify.js.nft.json +0 -1
- package/.next/server/pages/api/visit.js.nft.json +0 -1
- package/.next/server/pages/index.html +0 -1
- package/.next/server/pages/index.js.nft.json +0 -1
- package/.next/server/pages/index.json +0 -1
- package/.next/static/chunks/framework-1728d40275bc359a.js +0 -49
- package/.next/static/chunks/main-5fb7abbfc135de15.js +0 -1
- package/.next/static/chunks/pages/404-b6e238bb4117d451.js +0 -1
- package/.next/static/chunks/pages/_app-b95404c40a0092e6.js +0 -17
- package/.next/static/chunks/pages/_error-db043fa3544f8809.js +0 -1
- package/.next/static/chunks/pages/index-59d569ef79bc2580.js +0 -1
- package/.next/static/chunks/webpack-6ef43a8d4a395f49.js +0 -1
- package/.next/static/css/8fa2fb99b90e109e.css +0 -1
- package/.next/static/css/c80ebc6fd13311f1.css +0 -2
- package/.next/static/jyVoCYlAT5PMzOeavr5AX/_buildManifest.js +0 -1
- package/.next/static/jyVoCYlAT5PMzOeavr5AX/_ssgManifest.js +0 -1
- /package/.next/static/chunks/{polyfills-c67a75d1b6f99dc8.js → polyfills.js} +0 -0
|
@@ -4,7 +4,13 @@ import { Modal } from 'components';
|
|
|
4
4
|
import { useIsTouchDevice } from 'hooks';
|
|
5
5
|
import { useTranslate } from 'state';
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
AutoGroupTilesSetting,
|
|
9
|
+
ConfigSetting,
|
|
10
|
+
InputModeSetting,
|
|
11
|
+
LocaleSetting,
|
|
12
|
+
ShowCoordinatesSetting,
|
|
13
|
+
} from './components';
|
|
8
14
|
|
|
9
15
|
interface Props {
|
|
10
16
|
className?: string;
|
|
@@ -26,6 +32,10 @@ const SettingsModal: FunctionComponent<Props> = ({ className, isOpen, onClose })
|
|
|
26
32
|
<LocaleSetting disabled={!isOpen} />
|
|
27
33
|
</Modal.Section>
|
|
28
34
|
|
|
35
|
+
<Modal.Section title={translate('settings.showCoordinates')}>
|
|
36
|
+
<ShowCoordinatesSetting disabled={!isOpen} />
|
|
37
|
+
</Modal.Section>
|
|
38
|
+
|
|
29
39
|
{!isTouchDevice && (
|
|
30
40
|
<Modal.Section title={translate('settings.inputMode')}>
|
|
31
41
|
<InputModeSetting disabled={!isOpen} />
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ShowCoordinates } from '@scrabble-solver/types';
|
|
2
|
+
import { ChangeEvent, FunctionComponent } from 'react';
|
|
3
|
+
import { useDispatch } from 'react-redux';
|
|
4
|
+
|
|
5
|
+
import { Radio } from 'components';
|
|
6
|
+
import { selectShowCoordinates, settingsSlice, useTranslate, useTypedSelector } from 'state';
|
|
7
|
+
|
|
8
|
+
import styles from './ShowCoordinatesSetting.module.scss';
|
|
9
|
+
|
|
10
|
+
interface Props {
|
|
11
|
+
className?: string;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const ShowCoordinatesSetting: FunctionComponent<Props> = ({ className, disabled }) => {
|
|
16
|
+
const dispatch = useDispatch();
|
|
17
|
+
const translate = useTranslate();
|
|
18
|
+
const value = useTypedSelector(selectShowCoordinates);
|
|
19
|
+
|
|
20
|
+
const options = [
|
|
21
|
+
{
|
|
22
|
+
label: translate('settings.showCoordinates.hidden'),
|
|
23
|
+
value: 'hidden',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
label: translate('settings.showCoordinates.original'),
|
|
27
|
+
value: 'original',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
label: translate('settings.showCoordinates.alternative'),
|
|
31
|
+
value: 'alternative',
|
|
32
|
+
},
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
|
|
36
|
+
const showCoordinates = event.target.value as ShowCoordinates;
|
|
37
|
+
dispatch(settingsSlice.actions.changeShowCoordinates(showCoordinates));
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<div className={className}>
|
|
42
|
+
{options.map((option) => (
|
|
43
|
+
<Radio
|
|
44
|
+
checked={String(value) === option.value}
|
|
45
|
+
className={styles.option}
|
|
46
|
+
disabled={disabled}
|
|
47
|
+
key={option.value}
|
|
48
|
+
name="inputMode"
|
|
49
|
+
value={option.value}
|
|
50
|
+
onChange={handleChange}
|
|
51
|
+
>
|
|
52
|
+
<div className={styles.label}>{option.label}</div>
|
|
53
|
+
</Radio>
|
|
54
|
+
))}
|
|
55
|
+
</div>
|
|
56
|
+
);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export default ShowCoordinatesSetting;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './ShowCoordinatesSetting';
|
|
@@ -2,3 +2,4 @@ export { default as AutoGroupTilesSetting } from './AutoGroupTilesSetting';
|
|
|
2
2
|
export { default as ConfigSetting } from './ConfigSetting';
|
|
3
3
|
export { default as InputModeSetting } from './InputModeSetting';
|
|
4
4
|
export { default as LocaleSetting } from './LocaleSetting';
|
|
5
|
+
export { default as ShowCoordinatesSetting } from './ShowCoordinatesSetting';
|
package/src/parameters/index.ts
CHANGED
|
@@ -31,6 +31,7 @@ export const COLOR_BONUS_WORD_MULTIPLIER_2 = '#fbc997';
|
|
|
31
31
|
export const COLOR_BONUS_WORD_MULTIPLIER_3 = '#f19393';
|
|
32
32
|
export const COLOR_BONUS_WORD_MULTIPLIER_4 = '#ed5e5e';
|
|
33
33
|
export const COLOR_FILTERED = '#444';
|
|
34
|
+
export const COLOR_BACKGROUND = '#f4f4f4';
|
|
34
35
|
|
|
35
36
|
export const COLOR_BONUS_CHARACTER: Record<number, string> = {
|
|
36
37
|
1: COLOR_BONUS_CHARACTER_1,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Board, Game, Locale } from '@scrabble-solver/types';
|
|
1
|
+
import { Board, Game, Locale, ShowCoordinates } from '@scrabble-solver/types';
|
|
2
2
|
import store2 from 'store2';
|
|
3
3
|
|
|
4
4
|
import { AutoGroupTiles, InputMode, Rack } from 'types';
|
|
@@ -9,6 +9,7 @@ const GAME_ID = 'config-id';
|
|
|
9
9
|
const INPUT_MODE = 'input-mode';
|
|
10
10
|
const LOCALE = 'locale';
|
|
11
11
|
const RACK = 'rack';
|
|
12
|
+
const SHOW_COORDINATES = 'show-coordinates';
|
|
12
13
|
|
|
13
14
|
const store = store2.namespace('scrabble-solver');
|
|
14
15
|
|
|
@@ -62,6 +63,14 @@ const localStorage = {
|
|
|
62
63
|
setRack(rack: Rack | undefined): void {
|
|
63
64
|
store.set(RACK, rack, true);
|
|
64
65
|
},
|
|
66
|
+
|
|
67
|
+
getShowCoordinates(): ShowCoordinates | undefined {
|
|
68
|
+
return store.get(SHOW_COORDINATES);
|
|
69
|
+
},
|
|
70
|
+
|
|
71
|
+
setShowCoordinates(showCoordinates: ShowCoordinates | undefined): void {
|
|
72
|
+
store.set(SHOW_COORDINATES, showCoordinates, true);
|
|
73
|
+
},
|
|
65
74
|
};
|
|
66
75
|
|
|
67
76
|
export default localStorage;
|
package/src/state/sagas.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable max-lines */
|
|
2
2
|
|
|
3
3
|
import { PayloadAction } from '@reduxjs/toolkit';
|
|
4
|
-
import { hasConfig,
|
|
4
|
+
import { hasConfig, languages } from '@scrabble-solver/configs';
|
|
5
5
|
import { Board, Locale, Result } from '@scrabble-solver/types';
|
|
6
6
|
import { call, delay, put, select, takeEvery, takeLatest } from 'redux-saga/effects';
|
|
7
7
|
|
|
@@ -136,8 +136,11 @@ function* onLocaleChange({ payload: locale }: PayloadAction<Locale>): AnyGenerat
|
|
|
136
136
|
const game = yield select(selectGame);
|
|
137
137
|
|
|
138
138
|
if (!hasConfig(game, locale)) {
|
|
139
|
-
const defaultConfig =
|
|
140
|
-
|
|
139
|
+
const defaultConfig = Object.values(languages).find((config) => config.locale === locale);
|
|
140
|
+
|
|
141
|
+
if (defaultConfig) {
|
|
142
|
+
yield put(settingsSlice.actions.changeGame(defaultConfig.game));
|
|
143
|
+
}
|
|
141
144
|
}
|
|
142
145
|
|
|
143
146
|
const characters = yield select(selectCharacters);
|
package/src/state/selectors.ts
CHANGED
|
@@ -67,6 +67,8 @@ export const selectBoard = selectBoardRoot;
|
|
|
67
67
|
|
|
68
68
|
export const selectInputMode = createSelector([selectSettingsRoot], (settings) => settings.inputMode);
|
|
69
69
|
|
|
70
|
+
export const selectShowCoordinates = createSelector([selectSettingsRoot], (settings) => settings.showCoordinates);
|
|
71
|
+
|
|
70
72
|
export const selectGame = createSelector([selectSettingsRoot], (settings) => settings.game);
|
|
71
73
|
|
|
72
74
|
export const selectConfig = createSelector([selectGame, selectLocale], getConfig);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Game, Locale } from '@scrabble-solver/types';
|
|
1
|
+
import { Game, Locale, ShowCoordinates } from '@scrabble-solver/types';
|
|
2
2
|
|
|
3
3
|
import { guessLocale } from 'lib';
|
|
4
4
|
import { AutoGroupTiles, InputMode } from 'types';
|
|
@@ -10,6 +10,7 @@ export interface SettingsState {
|
|
|
10
10
|
game: Game;
|
|
11
11
|
inputMode: InputMode;
|
|
12
12
|
locale: Locale;
|
|
13
|
+
showCoordinates: ShowCoordinates;
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
const localStorageAutoGroupTiles = localStorage.getAutoGroupTiles();
|
|
@@ -17,9 +18,10 @@ const isTouchScreen = typeof globalThis.matchMedia !== 'undefined' && globalThis
|
|
|
17
18
|
|
|
18
19
|
const settingsInitialState: SettingsState = {
|
|
19
20
|
autoGroupTiles: typeof localStorageAutoGroupTiles === 'undefined' ? 'left' : localStorageAutoGroupTiles,
|
|
20
|
-
game: localStorage.getGame()
|
|
21
|
-
inputMode: localStorage.getInputMode()
|
|
22
|
-
locale: localStorage.getLocale()
|
|
21
|
+
game: localStorage.getGame() ?? Game.Scrabble,
|
|
22
|
+
inputMode: localStorage.getInputMode() ?? (isTouchScreen ? 'touchscreen' : 'keyboard'),
|
|
23
|
+
locale: localStorage.getLocale() ?? guessLocale(),
|
|
24
|
+
showCoordinates: localStorage.getShowCoordinates() ?? 'hidden',
|
|
23
25
|
};
|
|
24
26
|
|
|
25
27
|
export default settingsInitialState;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
|
|
2
|
-
import { Game, Locale } from '@scrabble-solver/types';
|
|
2
|
+
import { Game, Locale, ShowCoordinates } from '@scrabble-solver/types';
|
|
3
3
|
|
|
4
4
|
import { AutoGroupTiles, InputMode } from 'types';
|
|
5
5
|
|
|
@@ -29,6 +29,11 @@ const settingsSlice = createSlice({
|
|
|
29
29
|
return { ...state, locale };
|
|
30
30
|
},
|
|
31
31
|
|
|
32
|
+
changeShowCoordinates: (state, action: PayloadAction<ShowCoordinates>) => {
|
|
33
|
+
const showCoordinates = action.payload;
|
|
34
|
+
return { ...state, showCoordinates };
|
|
35
|
+
},
|
|
36
|
+
|
|
32
37
|
init: (state, action: PayloadAction<Partial<Pick<typeof settingsInitialState, 'game' | 'locale'>>>) => {
|
|
33
38
|
return { ...state, ...action.payload };
|
|
34
39
|
},
|
package/src/state/store.ts
CHANGED
|
@@ -26,7 +26,7 @@ const store = configureStore({
|
|
|
26
26
|
solve: solveSlice.reducer,
|
|
27
27
|
verify: verifySlice.reducer,
|
|
28
28
|
},
|
|
29
|
-
middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat([sagaMiddleware]),
|
|
29
|
+
middleware: (getDefaultMiddleware) => getDefaultMiddleware({ serializableCheck: false }).concat([sagaMiddleware]),
|
|
30
30
|
});
|
|
31
31
|
|
|
32
32
|
sagaMiddleware.run(rootSaga);
|
package/src/styles/mixins.scss
CHANGED
|
@@ -107,6 +107,13 @@ $media-expressions: (
|
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
@mixin text-stroke($color, $size: 1px) {
|
|
110
|
-
text-shadow:
|
|
111
|
-
|
|
110
|
+
text-shadow:
|
|
111
|
+
$size 0 $color,
|
|
112
|
+
(-$size) 0 $color,
|
|
113
|
+
0 $size $color,
|
|
114
|
+
0 (-$size) $color,
|
|
115
|
+
(-$size) (-$size) $color,
|
|
116
|
+
(-$size) $size $color,
|
|
117
|
+
$size (-$size) $color,
|
|
118
|
+
$size $size $color;
|
|
112
119
|
}
|
package/src/types/index.ts
CHANGED
|
@@ -112,6 +112,10 @@ export type TranslationKey =
|
|
|
112
112
|
| 'settings.inputMode.keyboard'
|
|
113
113
|
| 'settings.inputMode.touchscreen'
|
|
114
114
|
| 'settings.language'
|
|
115
|
+
| 'settings.showCoordinates'
|
|
116
|
+
| 'settings.showCoordinates.alternative'
|
|
117
|
+
| 'settings.showCoordinates.hidden'
|
|
118
|
+
| 'settings.showCoordinates.original'
|
|
115
119
|
| 'words'
|
|
116
120
|
| 'words.invalid'
|
|
117
121
|
| 'words.valid';
|
package/tsconfig.json
CHANGED
package/.next/BUILD_ID
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
jyVoCYlAT5PMzOeavr5AX
|
package/.next/export-marker.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":1,"hasExportPathMap":false,"exportTrailingSlash":false,"isNextImageImported":true}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":1,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"inline","remotePatterns":[],"unoptimized":false,"sizes":[640,750,828,1080,1200,1920,2048,3840,16,32,48,64,96,128,256,384]}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":1,"files":["../../../node_modules/styled-jsx/index.js","../../../node_modules/styled-jsx/style.js","../../../node_modules/next/dist/compiled/next-server/server.runtime.prod.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/amp-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/app-router-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/entrypoints.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/head-manager-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/hooks-client-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/html-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/image-config-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/router-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/server-inserted-html.js","../../../node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/amp-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/app-router-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/entrypoints.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/head-manager-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/hooks-client-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/html-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/image-config-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/router-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/server-inserted-html.js","../../../node_modules/next/dist/server/future/route-modules/pages/module.compiled.js"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":1,"files":["../../../node_modules/styled-jsx/index.js","../../../node_modules/styled-jsx/style.js","../../../node_modules/next/dist/server/next-server.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/amp-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/app-router-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/entrypoints.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/head-manager-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/hooks-client-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/html-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/image-config-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/router-context.js","../../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/server-inserted-html.js","../../../node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/amp-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/app-router-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/entrypoints.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/head-manager-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/hooks-client-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/html-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/image-config-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/router-context.js","../../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/server-inserted-html.js","../../../node_modules/next/dist/server/future/route-modules/pages/module.compiled.js"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
self.__PRERENDER_MANIFEST="{\"version\":4,\"routes\":{\"/\":{\"initialRevalidateSeconds\":false,\"srcRoute\":null,\"dataRoute\":\"/_next/data/jyVoCYlAT5PMzOeavr5AX/index.json\"}},\"dynamicRoutes\":{},\"notFoundRoutes\":[],\"preview\":{\"previewModeId\":\"1781641bc9af250a14b066c945b95f9c\",\"previewModeSigningKey\":\"78b4470b5ab546a5c0202188c2b77d283a4d4cac09aadf421e351359562971fd\",\"previewModeEncryptionKey\":\"89ee2e1eaa3f8e3160dc02e07226cdec50917198d3bd91e3ec38b04d5aa0dc7a\"}}"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":4,"routes":{"/":{"initialRevalidateSeconds":false,"srcRoute":null,"dataRoute":"/_next/data/jyVoCYlAT5PMzOeavr5AX/index.json"}},"dynamicRoutes":{},"notFoundRoutes":[],"preview":{"previewModeId":"1781641bc9af250a14b066c945b95f9c","previewModeSigningKey":"78b4470b5ab546a5c0202188c2b77d283a4d4cac09aadf421e351359562971fd","previewModeEncryptionKey":"89ee2e1eaa3f8e3160dc02e07226cdec50917198d3bd91e3ec38b04d5aa0dc7a"}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":1,"config":{"env":{},"eslint":{"ignoreDuringBuilds":false},"typescript":{"ignoreBuildErrors":false,"tsconfigPath":"tsconfig.json"},"distDir":".next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.js","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":false,"analyticsId":"","images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"inline","remotePatterns":[],"unoptimized":false},"devIndicators":{"buildActivity":false,"buildActivityPosition":"bottom-right"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"amp":{"canonicalBase":""},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"optimizeFonts":true,"excludeDefaultMomentLocales":true,"serverRuntimeConfig":{},"publicRuntimeConfig":{},"reactProductionProfiling":false,"reactStrictMode":true,"httpAgentOptions":{"keepAlive":true},"outputFileTracing":true,"staticPageGenerationTimeout":60,"swcMinify":true,"modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"},"next/server":{"transform":"next/dist/server/web/exports/{{ kebabCase member }}"}},"experimental":{"serverMinification":true,"serverSourceMaps":false,"caseSensitiveRoutes":false,"useDeploymentId":false,"useDeploymentIdServerActions":false,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","middlewarePrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":31,"memoryBasedWorkersCount":false,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"outputFileTracingRoot":"/home/kamil/projects/scrabble-solver/packages/scrabble-solver","swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"adjustFontFallbacks":false,"adjustFontFallbacksWithSizeAdjust":false,"typedRoutes":false,"instrumentationHook":false,"bundlePagesExternals":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"missingSuspenseWithCSRBailout":true,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"configFileName":"next.config.js"},"appDir":"/home/kamil/projects/scrabble-solver/packages/scrabble-solver","relativeAppDir":"","files":[".next/routes-manifest.json",".next/server/pages-manifest.json",".next/build-manifest.json",".next/prerender-manifest.json",".next/prerender-manifest.js",".next/server/middleware-manifest.json",".next/server/middleware-build-manifest.js",".next/server/middleware-react-loadable-manifest.js",".next/react-loadable-manifest.json",".next/server/font-manifest.json",".next/BUILD_ID",".next/server/next-font-manifest.js",".next/server/next-font-manifest.json"],"ignore":["../../node_modules/next/dist/compiled/@ampproject/toolbox-optimizer/**/*"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"pages404":true,"caseSensitive":false,"basePath":"","redirects":[{"source":"/:path+/","destination":"/:path+","internal":true,"statusCode":308,"regex":"^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"}],"headers":[],"dynamicRoutes":[{"page":"/api/dictionary/[locale]","regex":"^/api/dictionary/([^/]+?)(?:/)?$","routeKeys":{"nxtPlocale":"nxtPlocale"},"namedRegex":"^/api/dictionary/(?<nxtPlocale>[^/]+?)(?:/)?$"},{"page":"/api/dictionary/[locale]/[word]","regex":"^/api/dictionary/([^/]+?)/([^/]+?)(?:/)?$","routeKeys":{"nxtPlocale":"nxtPlocale","nxtPword":"nxtPword"},"namedRegex":"^/api/dictionary/(?<nxtPlocale>[^/]+?)/(?<nxtPword>[^/]+?)(?:/)?$"}],"staticRoutes":[{"page":"/","regex":"^/(?:/)?$","routeKeys":{},"namedRegex":"^/(?:/)?$"},{"page":"/404","regex":"^/404(?:/)?$","routeKeys":{},"namedRegex":"^/404(?:/)?$"}],"dataRoutes":[{"page":"/","dataRouteRegex":"^/_next/data/jyVoCYlAT5PMzOeavr5AX/index.json$"}],"rsc":{"header":"RSC","varyHeader":"RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Url","prefetchHeader":"Next-Router-Prefetch","didPostponeHeader":"x-nextjs-postponed","contentTypeHeader":"text/x-component","suffix":".rsc","prefetchSuffix":".prefetch.rsc"},"rewrites":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":1,"files":["../../public/service-worker.js"]}
|