@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.
Files changed (190) hide show
  1. package/.next/build-manifest.json +15 -24
  2. package/.next/cache/.tsbuildinfo +1 -1
  3. package/.next/cache/eslint/.cache_8dgz12 +1 -1
  4. package/.next/cache/webpack/client-development/0.pack.gz +0 -0
  5. package/.next/cache/webpack/client-development/1.pack.gz +0 -0
  6. package/.next/cache/webpack/client-development/10.pack.gz +0 -0
  7. package/.next/cache/webpack/client-development/11.pack.gz +0 -0
  8. package/.next/cache/webpack/client-development/12.pack.gz +0 -0
  9. package/.next/cache/webpack/client-development/13.pack.gz +0 -0
  10. package/.next/cache/webpack/client-development/14.pack.gz +0 -0
  11. package/.next/cache/webpack/client-development/15.pack.gz +0 -0
  12. package/.next/cache/webpack/client-development/2.pack.gz +0 -0
  13. package/.next/cache/webpack/client-development/3.pack.gz +0 -0
  14. package/.next/cache/webpack/client-development/4.pack.gz +0 -0
  15. package/.next/cache/webpack/client-development/5.pack.gz +0 -0
  16. package/.next/cache/webpack/client-development/6.pack.gz +0 -0
  17. package/.next/cache/webpack/client-development/7.pack.gz +0 -0
  18. package/.next/cache/webpack/client-development/8.pack.gz +0 -0
  19. package/.next/cache/webpack/client-development/9.pack.gz +0 -0
  20. package/.next/cache/webpack/client-development/index.pack.gz +0 -0
  21. package/.next/cache/webpack/client-development/index.pack.gz.old +0 -0
  22. package/.next/cache/webpack/client-development-fallback/0.pack.gz +0 -0
  23. package/.next/cache/webpack/client-development-fallback/index.pack.gz +0 -0
  24. package/.next/cache/webpack/client-production/0.pack +0 -0
  25. package/.next/cache/webpack/client-production/1.pack +0 -0
  26. package/.next/cache/webpack/client-production/2.pack +0 -0
  27. package/.next/cache/webpack/client-production/3.pack +0 -0
  28. package/.next/cache/webpack/client-production/4.pack +0 -0
  29. package/.next/cache/webpack/client-production/index.pack +0 -0
  30. package/.next/cache/webpack/client-production/index.pack.old +0 -0
  31. package/.next/cache/webpack/edge-server-production/0.pack +0 -0
  32. package/.next/cache/webpack/edge-server-production/1.pack +0 -0
  33. package/.next/cache/webpack/edge-server-production/2.pack +0 -0
  34. package/.next/cache/webpack/edge-server-production/index.pack +0 -0
  35. package/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
  36. package/.next/cache/webpack/server-development/0.pack.gz +0 -0
  37. package/.next/cache/webpack/server-development/1.pack.gz +0 -0
  38. package/.next/cache/webpack/server-development/10.pack.gz +0 -0
  39. package/.next/cache/webpack/server-development/11.pack.gz +0 -0
  40. package/.next/cache/webpack/server-development/12.pack.gz +0 -0
  41. package/.next/cache/webpack/server-development/13.pack.gz +0 -0
  42. package/.next/cache/webpack/server-development/14.pack.gz +0 -0
  43. package/.next/cache/webpack/server-development/15.pack.gz +0 -0
  44. package/.next/cache/webpack/server-development/16.pack.gz +0 -0
  45. package/.next/cache/webpack/server-development/17.pack.gz +0 -0
  46. package/.next/cache/webpack/server-development/18.pack.gz +0 -0
  47. package/.next/cache/webpack/server-development/19.pack.gz +0 -0
  48. package/.next/cache/webpack/server-development/2.pack.gz +0 -0
  49. package/.next/cache/webpack/server-development/20.pack.gz +0 -0
  50. package/.next/cache/webpack/server-development/21.pack.gz +0 -0
  51. package/.next/cache/webpack/server-development/22.pack.gz +0 -0
  52. package/.next/cache/webpack/server-development/23.pack.gz +0 -0
  53. package/.next/cache/webpack/server-development/3.pack.gz +0 -0
  54. package/.next/cache/webpack/server-development/4.pack.gz +0 -0
  55. package/.next/cache/webpack/server-development/5.pack.gz +0 -0
  56. package/.next/cache/webpack/server-development/6.pack.gz +0 -0
  57. package/.next/cache/webpack/server-development/7.pack.gz +0 -0
  58. package/.next/cache/webpack/server-development/8.pack.gz +0 -0
  59. package/.next/cache/webpack/server-development/9.pack.gz +0 -0
  60. package/.next/cache/webpack/server-development/index.pack.gz +0 -0
  61. package/.next/cache/webpack/server-development/index.pack.gz.old +0 -0
  62. package/.next/cache/webpack/server-production/0.pack +0 -0
  63. package/.next/cache/webpack/server-production/1.pack +0 -0
  64. package/.next/cache/webpack/server-production/2.pack +0 -0
  65. package/.next/cache/webpack/server-production/3.pack +0 -0
  66. package/.next/cache/webpack/server-production/4.pack +0 -0
  67. package/.next/cache/webpack/server-production/index.pack +0 -0
  68. package/.next/cache/webpack/server-production/index.pack.old +0 -0
  69. package/.next/server/middleware-build-manifest.js +1 -1
  70. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  71. package/.next/server/next-font-manifest.js +1 -1
  72. package/.next/server/pages/_app.js +3720 -1
  73. package/.next/server/pages/_document.js +86 -1
  74. package/.next/server/pages/_error.js +3742 -1
  75. package/.next/server/pages/api/dictionary/[locale]/[word].js +1116 -2
  76. package/.next/server/pages/api/solve.js +1496 -1
  77. package/.next/server/pages/api/verify.js +946 -1
  78. package/.next/server/pages/api/visit.js +176 -1
  79. package/.next/server/pages/index.js +4312 -1
  80. package/.next/server/pages-manifest.json +10 -1
  81. package/.next/server/vendor-chunks/@swc.js +35 -0
  82. package/.next/server/vendor-chunks/next.js +517 -0
  83. package/.next/server/webpack-api-runtime.js +168 -1
  84. package/.next/server/webpack-runtime.js +237 -1
  85. package/.next/static/chunks/main.js +1285 -0
  86. package/.next/static/chunks/pages/_app.js +4854 -0
  87. package/.next/static/chunks/pages/_error.js +28 -0
  88. package/.next/static/chunks/pages/index.js +717 -0
  89. package/.next/static/chunks/react-refresh.js +62 -0
  90. package/.next/static/chunks/webpack.js +1261 -0
  91. package/.next/static/development/_buildManifest.js +1 -0
  92. package/.next/static/development/_ssgManifest.js +1 -0
  93. package/.next/static/webpack/29a2bd94727d51e6.webpack.hot-update.json +1 -0
  94. package/.next/static/webpack/3754455b7d774808.webpack.hot-update.json +1 -0
  95. package/.next/static/webpack/633457081244afec._.hot-update.json +1 -0
  96. package/.next/static/webpack/b71388f846dd4d8b.webpack.hot-update.json +1 -0
  97. package/.next/static/webpack/e7718e8f7cbe05a0.webpack.hot-update.json +1 -0
  98. package/.next/static/webpack/pages/_app.29a2bd94727d51e6.hot-update.js +22 -0
  99. package/.next/static/webpack/pages/_app.3754455b7d774808.hot-update.js +262 -0
  100. package/.next/static/webpack/pages/_app.e7718e8f7cbe05a0.hot-update.js +251 -0
  101. package/.next/static/webpack/pages/index.3754455b7d774808.hot-update.js +75 -0
  102. package/.next/static/webpack/pages/index.b71388f846dd4d8b.hot-update.js +22 -0
  103. package/.next/static/webpack/pages/index.e7718e8f7cbe05a0.hot-update.js +32 -0
  104. package/.next/static/webpack/webpack.29a2bd94727d51e6.hot-update.js +18 -0
  105. package/.next/static/webpack/webpack.3754455b7d774808.hot-update.js +18 -0
  106. package/.next/static/webpack/webpack.b71388f846dd4d8b.hot-update.js +18 -0
  107. package/.next/static/webpack/webpack.e7718e8f7cbe05a0.hot-update.js +18 -0
  108. package/.next/trace +17 -44
  109. package/package.json +10 -10
  110. package/src/components/Board/Board.module.scss +14 -0
  111. package/src/components/Board/Board.tsx +8 -1
  112. package/src/components/Board/BoardPure.tsx +76 -21
  113. package/src/components/Board/hooks/useBackgroundImage.tsx +46 -7
  114. package/src/components/Board/hooks/useBoardStyle.ts +8 -3
  115. package/src/components/Board/lib/getCoordinate.ts +11 -0
  116. package/src/components/Board/lib/index.ts +1 -0
  117. package/src/components/Dictionary/Dictionary.tsx +17 -18
  118. package/src/components/EmptyState/EmptyState.tsx +1 -1
  119. package/src/components/Results/Results.module.scss +1 -0
  120. package/src/hooks/useAppLayout.ts +18 -4
  121. package/src/i18n/i18n.ts +15 -15
  122. package/src/i18n/{en.json → languages/english.json} +4 -0
  123. package/src/i18n/{fr.json → languages/french.json} +4 -0
  124. package/src/i18n/{de.json → languages/german.json} +4 -0
  125. package/src/i18n/{fa.json → languages/persian.json} +4 -0
  126. package/src/i18n/{pl.json → languages/polish.json} +4 -0
  127. package/src/i18n/{ro.json → languages/romanian.json} +4 -0
  128. package/src/i18n/{es.json → languages/spanish.json} +4 -0
  129. package/src/lib/extractCharacters.test.ts +3 -5
  130. package/src/lib/extractCharactersByCase.test.ts +3 -5
  131. package/src/modals/SettingsModal/SettingsModal.tsx +11 -1
  132. package/src/modals/SettingsModal/components/ShowCoordinatesSetting/ShowCoordinatesSetting.module.scss +12 -0
  133. package/src/modals/SettingsModal/components/ShowCoordinatesSetting/ShowCoordinatesSetting.tsx +59 -0
  134. package/src/modals/SettingsModal/components/ShowCoordinatesSetting/index.ts +1 -0
  135. package/src/modals/SettingsModal/components/index.ts +1 -0
  136. package/src/parameters/index.ts +1 -0
  137. package/src/state/localStorage.ts +10 -1
  138. package/src/state/sagas.ts +6 -3
  139. package/src/state/selectors.ts +2 -0
  140. package/src/state/slices/settingsInitialState.ts +6 -4
  141. package/src/state/slices/settingsSlice.ts +6 -1
  142. package/src/state/store.ts +1 -1
  143. package/src/styles/mixins.scss +9 -2
  144. package/src/types/index.ts +4 -0
  145. package/tsconfig.json +1 -0
  146. package/.next/BUILD_ID +0 -1
  147. package/.next/export-marker.json +0 -1
  148. package/.next/images-manifest.json +0 -1
  149. package/.next/next-minimal-server.js.nft.json +0 -1
  150. package/.next/next-server.js.nft.json +0 -1
  151. package/.next/prerender-manifest.js +0 -1
  152. package/.next/prerender-manifest.json +0 -1
  153. package/.next/required-server-files.json +0 -1
  154. package/.next/routes-manifest.json +0 -1
  155. package/.next/server/InjectManifest.js.nft.json +0 -1
  156. package/.next/server/chunks/28.js +0 -1
  157. package/.next/server/chunks/331.js +0 -6
  158. package/.next/server/chunks/577.js +0 -1
  159. package/.next/server/chunks/911.js +0 -1
  160. package/.next/server/chunks/977.js +0 -1
  161. package/.next/server/chunks/font-manifest.json +0 -1
  162. package/.next/server/font-manifest.json +0 -1
  163. package/.next/server/functions-config-manifest.json +0 -1
  164. package/.next/server/pages/404.html +0 -1
  165. package/.next/server/pages/404.js.nft.json +0 -1
  166. package/.next/server/pages/500.html +0 -1
  167. package/.next/server/pages/_app.js.nft.json +0 -1
  168. package/.next/server/pages/_document.js.nft.json +0 -1
  169. package/.next/server/pages/_error.js.nft.json +0 -1
  170. package/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +0 -1
  171. package/.next/server/pages/api/dictionary/[locale].js +0 -1
  172. package/.next/server/pages/api/dictionary/[locale].js.nft.json +0 -1
  173. package/.next/server/pages/api/solve.js.nft.json +0 -1
  174. package/.next/server/pages/api/verify.js.nft.json +0 -1
  175. package/.next/server/pages/api/visit.js.nft.json +0 -1
  176. package/.next/server/pages/index.html +0 -1
  177. package/.next/server/pages/index.js.nft.json +0 -1
  178. package/.next/server/pages/index.json +0 -1
  179. package/.next/static/chunks/framework-1728d40275bc359a.js +0 -49
  180. package/.next/static/chunks/main-5fb7abbfc135de15.js +0 -1
  181. package/.next/static/chunks/pages/404-b6e238bb4117d451.js +0 -1
  182. package/.next/static/chunks/pages/_app-b95404c40a0092e6.js +0 -17
  183. package/.next/static/chunks/pages/_error-db043fa3544f8809.js +0 -1
  184. package/.next/static/chunks/pages/index-59d569ef79bc2580.js +0 -1
  185. package/.next/static/chunks/webpack-6ef43a8d4a395f49.js +0 -1
  186. package/.next/static/css/8fa2fb99b90e109e.css +0 -1
  187. package/.next/static/css/c80ebc6fd13311f1.css +0 -2
  188. package/.next/static/jyVoCYlAT5PMzOeavr5AX/_buildManifest.js +0 -1
  189. package/.next/static/jyVoCYlAT5PMzOeavr5AX/_ssgManifest.js +0 -1
  190. /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 { AutoGroupTilesSetting, ConfigSetting, InputModeSetting, LocaleSetting } from './components';
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,12 @@
1
+ .option {
2
+ margin-bottom: var(--spacing--m);
3
+
4
+ &:last-child {
5
+ margin-bottom: 0;
6
+ }
7
+ }
8
+
9
+ .label {
10
+ display: flex;
11
+ align-items: center;
12
+ }
@@ -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';
@@ -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;
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable max-lines */
2
2
 
3
3
  import { PayloadAction } from '@reduxjs/toolkit';
4
- import { hasConfig, localesMap } from '@scrabble-solver/configs';
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 = localesMap[locale][0];
140
- yield put(settingsSlice.actions.changeGame(defaultConfig.game));
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);
@@ -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() || Game.Scrabble,
21
- inputMode: localStorage.getInputMode() || (isTouchScreen ? 'touchscreen' : 'keyboard'),
22
- locale: localStorage.getLocale() || guessLocale(),
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
  },
@@ -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);
@@ -107,6 +107,13 @@ $media-expressions: (
107
107
  }
108
108
 
109
109
  @mixin text-stroke($color, $size: 1px) {
110
- text-shadow: $size 0 $color, (-$size) 0 $color, 0 $size $color, 0 (-$size) $color, (-$size) (-$size) $color,
111
- (-$size) $size $color, $size (-$size) $color, $size $size $color;
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
  }
@@ -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
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "extends": "../../tsconfig.json",
3
+
3
4
  "compilerOptions": {
4
5
  "allowJs": true,
5
6
  "baseUrl": ".",
package/.next/BUILD_ID DELETED
@@ -1 +0,0 @@
1
- jyVoCYlAT5PMzOeavr5AX
@@ -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"]}