scrabble-solver 2.11.0 → 2.11.2

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 (155) hide show
  1. package/lerna.json +1 -1
  2. package/package.json +1 -1
  3. package/packages/configs/package.json +3 -3
  4. package/packages/constants/package.json +1 -1
  5. package/packages/dictionaries/package-lock.json +2 -2
  6. package/packages/dictionaries/package.json +4 -4
  7. package/packages/logger/package-lock.json +2 -2
  8. package/packages/logger/package.json +1 -1
  9. package/packages/scrabble-solver/.next/BUILD_ID +1 -1
  10. package/packages/scrabble-solver/.next/build-manifest.json +7 -7
  11. package/packages/scrabble-solver/.next/cache/.tsbuildinfo +1 -1
  12. package/packages/scrabble-solver/.next/cache/eslint/.cache_8dgz12 +1 -1
  13. package/packages/scrabble-solver/.next/cache/next-server.js.nft.json +1 -1
  14. package/packages/scrabble-solver/.next/cache/webpack/client-production/0.pack +0 -0
  15. package/packages/scrabble-solver/.next/cache/webpack/client-production/index.pack +0 -0
  16. package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/0.pack +0 -0
  17. package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/index.pack +0 -0
  18. package/packages/scrabble-solver/.next/cache/webpack/server-production/0.pack +0 -0
  19. package/packages/scrabble-solver/.next/cache/webpack/server-production/index.pack +0 -0
  20. package/packages/scrabble-solver/.next/next-server.js.nft.json +1 -1
  21. package/packages/scrabble-solver/.next/prerender-manifest.json +1 -1
  22. package/packages/scrabble-solver/.next/routes-manifest.json +1 -1
  23. package/packages/scrabble-solver/.next/server/chunks/277.js +523 -611
  24. package/packages/scrabble-solver/.next/server/middleware-build-manifest.js +1 -1
  25. package/packages/scrabble-solver/.next/server/pages/404.html +2 -2
  26. package/packages/scrabble-solver/.next/server/pages/404.js.nft.json +1 -1
  27. package/packages/scrabble-solver/.next/server/pages/500.html +1 -1
  28. package/packages/scrabble-solver/.next/server/pages/_app.js +0 -24
  29. package/packages/scrabble-solver/.next/server/pages/_app.js.nft.json +1 -1
  30. package/packages/scrabble-solver/.next/server/pages/_document.js.nft.json +1 -1
  31. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale]/[word].js +0 -1
  32. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale].js +0 -1
  33. package/packages/scrabble-solver/.next/server/pages/api/solve.js +28 -8
  34. package/packages/scrabble-solver/.next/server/pages/api/verify.js +0 -1
  35. package/packages/scrabble-solver/.next/server/pages/api/visit.js +0 -1
  36. package/packages/scrabble-solver/.next/server/pages/index.html +1 -1
  37. package/packages/scrabble-solver/.next/server/pages/index.js +49 -90
  38. package/packages/scrabble-solver/.next/server/pages/index.js.nft.json +1 -1
  39. package/packages/scrabble-solver/.next/server/pages/index.json +1 -1
  40. package/packages/scrabble-solver/.next/static/Mdvi3FY0PqkILKLbPlVBU/_buildManifest.js +1 -0
  41. package/packages/scrabble-solver/.next/static/chunks/pages/{404-e0f30450e9920dc3.js → 404-448ba28510855455.js} +1 -1
  42. package/packages/scrabble-solver/.next/static/chunks/pages/_app-495e6f4ccc278bb2.js +28 -0
  43. package/packages/scrabble-solver/.next/static/chunks/pages/index-5ecc51900ca29685.js +1 -0
  44. package/packages/scrabble-solver/.next/static/css/17b0a2db8742105f.css +1 -0
  45. package/packages/scrabble-solver/.next/static/css/e1ffeb2558330c55.css +2 -0
  46. package/packages/scrabble-solver/.next/trace +54 -55
  47. package/packages/scrabble-solver/package-lock.json +2 -79
  48. package/packages/scrabble-solver/package.json +8 -13
  49. package/packages/scrabble-solver/src/components/{Solver/components/EmptyState/EmptyState.module.scss → Alert/Alert.module.scss} +11 -7
  50. package/packages/scrabble-solver/src/components/{Solver/components/EmptyState/EmptyState.tsx → Alert/Alert.tsx} +8 -6
  51. package/packages/scrabble-solver/src/components/Alert/index.ts +1 -0
  52. package/packages/scrabble-solver/src/components/Board/Board.module.scss +55 -0
  53. package/packages/scrabble-solver/src/components/Board/BoardPure.tsx +4 -0
  54. package/packages/scrabble-solver/src/components/Board/components/Cell/Cell.module.scss +51 -2
  55. package/packages/scrabble-solver/src/components/Board/components/Cell/Cell.tsx +12 -0
  56. package/packages/scrabble-solver/src/components/Board/components/Cell/CellPure.tsx +12 -0
  57. package/packages/scrabble-solver/src/components/Board/hooks/useGrid.ts +9 -26
  58. package/packages/scrabble-solver/src/components/Board/lib/getPositionInGrid.ts +1 -1
  59. package/packages/scrabble-solver/src/components/Dictionary/Dictionary.module.scss +4 -0
  60. package/packages/scrabble-solver/src/components/DictionaryInput/DictionaryInput.module.scss +1 -0
  61. package/packages/scrabble-solver/src/components/EmptyState/EmptyState.module.scss +2 -1
  62. package/packages/scrabble-solver/src/components/EmptyState/EmptyState.tsx +1 -2
  63. package/packages/scrabble-solver/src/components/Loading/Loading.module.scss +1 -1
  64. package/packages/scrabble-solver/src/components/Logo/Logo.tsx +5 -0
  65. package/packages/scrabble-solver/src/components/LogoSplashScreen/LogoSplashScreen.module.scss +4 -1
  66. package/packages/scrabble-solver/src/components/Modal/Modal.module.scss +14 -0
  67. package/packages/scrabble-solver/src/components/Modal/Modal.tsx +4 -1
  68. package/packages/scrabble-solver/src/components/PlainTiles/PlainTiles.module.scss +1 -1
  69. package/packages/scrabble-solver/src/components/PlainTiles/Tile.tsx +3 -3
  70. package/packages/scrabble-solver/src/components/Rack/Rack.module.scss +25 -0
  71. package/packages/scrabble-solver/src/components/Rack/Rack.tsx +5 -4
  72. package/packages/scrabble-solver/src/components/Rack/RackTile.tsx +6 -13
  73. package/packages/scrabble-solver/src/components/Results/HeaderButton.tsx +5 -12
  74. package/packages/scrabble-solver/src/components/Results/Result.tsx +5 -3
  75. package/packages/scrabble-solver/src/components/Results/Results.module.scss +41 -1
  76. package/packages/scrabble-solver/src/components/Results/Results.tsx +29 -43
  77. package/packages/scrabble-solver/src/components/Results/types.ts +1 -1
  78. package/packages/scrabble-solver/src/components/ResultsInput/ResultsInput.module.scss +1 -0
  79. package/packages/scrabble-solver/src/components/Solver/Solver.module.scss +9 -4
  80. package/packages/scrabble-solver/src/components/Solver/Solver.tsx +17 -19
  81. package/packages/scrabble-solver/src/components/Solver/components/ResultCandidatePicker/ResultCandidatePicker.tsx +5 -6
  82. package/packages/scrabble-solver/src/components/Solver/components/index.ts +0 -1
  83. package/packages/scrabble-solver/src/components/Tile/Tile.module.scss +42 -61
  84. package/packages/scrabble-solver/src/components/Tile/Tile.tsx +4 -3
  85. package/packages/scrabble-solver/src/components/Tile/TilePure.tsx +4 -13
  86. package/packages/scrabble-solver/src/components/Tooltip/Tooltip.module.scss +1 -72
  87. package/packages/scrabble-solver/src/components/Tooltip/useTooltip.tsx +25 -35
  88. package/packages/scrabble-solver/src/components/index.ts +1 -0
  89. package/packages/scrabble-solver/src/hooks/index.ts +0 -1
  90. package/packages/scrabble-solver/src/hooks/useAppLayout.ts +3 -1
  91. package/packages/scrabble-solver/src/i18n/de.json +0 -1
  92. package/packages/scrabble-solver/src/i18n/en.json +0 -1
  93. package/packages/scrabble-solver/src/i18n/es.json +0 -1
  94. package/packages/scrabble-solver/src/i18n/fa.json +0 -1
  95. package/packages/scrabble-solver/src/i18n/fr.json +0 -1
  96. package/packages/scrabble-solver/src/i18n/pl.json +0 -1
  97. package/packages/scrabble-solver/src/lib/createRegExp.ts +13 -0
  98. package/packages/scrabble-solver/src/lib/groupResults.ts +38 -0
  99. package/packages/scrabble-solver/src/lib/guessLocale.ts +22 -0
  100. package/packages/scrabble-solver/src/lib/index.ts +4 -2
  101. package/packages/scrabble-solver/src/lib/sortResults.ts +6 -10
  102. package/packages/scrabble-solver/src/modals/DictionaryModal/DictionaryModal.module.scss +6 -2
  103. package/packages/scrabble-solver/src/modals/KeyMapModal/KeyMapModal.tsx +5 -21
  104. package/packages/scrabble-solver/src/modals/KeyMapModal/components/Mapping/Mapping.module.scss +4 -0
  105. package/packages/scrabble-solver/src/modals/MenuModal/MenuModal.module.scss +7 -0
  106. package/packages/scrabble-solver/src/modals/RemainingTilesModal/components/Character/Character.module.scss +1 -0
  107. package/packages/scrabble-solver/src/modals/ResultsModal/ResultsModal.module.scss +3 -3
  108. package/packages/scrabble-solver/src/modals/ResultsModal/ResultsModal.tsx +23 -11
  109. package/packages/scrabble-solver/src/modals/SettingsModal/components/LocaleSetting/LocaleSetting.module.scss +2 -0
  110. package/packages/scrabble-solver/src/modals/WordsModal/WordsModal.module.scss +8 -1
  111. package/packages/scrabble-solver/src/pages/api/dictionary/[locale]/[word].ts +0 -1
  112. package/packages/scrabble-solver/src/pages/api/dictionary/[locale]/index.ts +0 -1
  113. package/packages/scrabble-solver/src/pages/api/solve.ts +0 -1
  114. package/packages/scrabble-solver/src/pages/api/verify.ts +0 -1
  115. package/packages/scrabble-solver/src/pages/api/visit.ts +0 -1
  116. package/packages/scrabble-solver/src/pages/index.tsx +13 -15
  117. package/packages/scrabble-solver/src/parameters/index.ts +2 -2
  118. package/packages/scrabble-solver/src/state/createAppStore.ts +26 -10
  119. package/packages/scrabble-solver/src/state/sagas.ts +1 -0
  120. package/packages/scrabble-solver/src/state/selectors.ts +37 -37
  121. package/packages/scrabble-solver/src/state/slices/boardInitialState.ts +3 -1
  122. package/packages/scrabble-solver/src/state/slices/cellFilterInitialState.ts +3 -3
  123. package/packages/scrabble-solver/src/state/slices/cellFilterSlice.ts +3 -1
  124. package/packages/scrabble-solver/src/state/slices/dictionaryInitialState.ts +2 -2
  125. package/packages/scrabble-solver/src/state/slices/rackInitialState.ts +3 -1
  126. package/packages/scrabble-solver/src/state/slices/resultsInitialState.ts +11 -4
  127. package/packages/scrabble-solver/src/state/slices/settingsInitialState.ts +10 -21
  128. package/packages/scrabble-solver/src/state/slices/solveInitialState.ts +2 -2
  129. package/packages/scrabble-solver/src/state/slices/solveSlice.ts +2 -0
  130. package/packages/scrabble-solver/src/state/slices/verifyInitialState.ts +13 -4
  131. package/packages/scrabble-solver/src/state/types.ts +20 -2
  132. package/packages/scrabble-solver/src/styles/mixins.scss +25 -1
  133. package/packages/scrabble-solver/src/styles/variables.scss +17 -1
  134. package/packages/scrabble-solver/src/types/index.ts +10 -2
  135. package/packages/solver/package-lock.json +2 -2
  136. package/packages/solver/package.json +5 -5
  137. package/packages/types/build/Bonus.d.ts +2 -1
  138. package/packages/types/package.json +2 -2
  139. package/packages/types/src/Bonus.ts +3 -1
  140. package/packages/word-definitions/package-lock.json +8 -8
  141. package/packages/word-definitions/package.json +2 -2
  142. package/packages/word-lists/package-lock.json +2 -2
  143. package/packages/word-lists/package.json +2 -2
  144. package/packages/scrabble-solver/.next/static/45ye7793DY705HOcuK9lJ/_buildManifest.js +0 -1
  145. package/packages/scrabble-solver/.next/static/chunks/pages/_app-d7acee5e526752d9.js +0 -28
  146. package/packages/scrabble-solver/.next/static/chunks/pages/index-35d2c1c79a201ae2.js +0 -1
  147. package/packages/scrabble-solver/.next/static/css/a48caa6f57de6e98.css +0 -1
  148. package/packages/scrabble-solver/.next/static/css/c49bbe944ddd1b39.css +0 -2
  149. package/packages/scrabble-solver/src/components/Board/types/index.ts +0 -4
  150. package/packages/scrabble-solver/src/components/Solver/components/EmptyState/index.ts +0 -1
  151. package/packages/scrabble-solver/src/components/Tooltip/constants.ts +0 -28
  152. package/packages/scrabble-solver/src/hooks/useUniqueId.ts +0 -9
  153. package/packages/scrabble-solver/src/lib/isCtrl.ts +0 -7
  154. package/packages/scrabble-solver/src/state/rootReducer.ts +0 -25
  155. /package/packages/scrabble-solver/.next/static/{45ye7793DY705HOcuK9lJ → Mdvi3FY0PqkILKLbPlVBU}/_ssgManifest.js +0 -0
@@ -1,13 +1,13 @@
1
1
  import { WordDefinition } from '@scrabble-solver/types';
2
2
 
3
- interface DictionaryInitialState {
3
+ export interface DictionaryState {
4
4
  error: unknown | undefined;
5
5
  input: string;
6
6
  isLoading: boolean;
7
7
  results: WordDefinition[];
8
8
  }
9
9
 
10
- const dictionaryInitialState: DictionaryInitialState = {
10
+ const dictionaryInitialState: DictionaryState = {
11
11
  error: undefined,
12
12
  input: '',
13
13
  isLoading: false,
@@ -1,3 +1,5 @@
1
- const rackInitialState: (string | null)[] = [null, null, null, null, null, null, null];
1
+ export type RackState = (string | null)[];
2
+
3
+ const rackInitialState: RackState = [null, null, null, null, null, null, null];
2
4
 
3
5
  export default rackInitialState;
@@ -1,11 +1,18 @@
1
1
  import { Result } from '@scrabble-solver/types';
2
2
 
3
- import { ResultColumn, SortDirection } from 'types';
3
+ import { ResultColumn, Sort, SortDirection } from 'types';
4
4
 
5
- const resultsInitialState = {
6
- candidate: null as Result | null,
5
+ export interface ResultsState {
6
+ candidate: Result | null;
7
+ query: string;
8
+ results: Result[] | undefined;
9
+ sort: Sort;
10
+ }
11
+
12
+ const resultsInitialState: ResultsState = {
13
+ candidate: null,
7
14
  query: '',
8
- results: undefined as Result[] | undefined,
15
+ results: undefined,
9
16
  sort: {
10
17
  column: ResultColumn.Points,
11
18
  direction: SortDirection.Descending,
@@ -1,29 +1,18 @@
1
- import { scrabble } from '@scrabble-solver/configs';
1
+ import { literaki, scrabble } from '@scrabble-solver/configs';
2
2
  import { Locale } from '@scrabble-solver/types';
3
3
 
4
- const getInitialLocale = (): Locale => {
5
- if (!globalThis.navigator) {
6
- return Locale.EN_US;
7
- }
4
+ import { guessLocale } from 'lib';
8
5
 
9
- const locales = Object.values(Locale);
10
- const exactMatch = locales.find((locale) => globalThis.navigator.language === locale);
6
+ export interface SettingsState {
7
+ autoGroupTiles: 'left' | 'right' | null;
8
+ configId: typeof literaki.id | typeof scrabble.id;
9
+ locale: Locale;
10
+ }
11
11
 
12
- if (exactMatch) {
13
- return exactMatch;
14
- }
15
-
16
- const partialMatch = locales.find((locale) => {
17
- return globalThis.navigator.language === locale.substring(0, 2);
18
- });
19
-
20
- return partialMatch || Locale.EN_US;
21
- };
22
-
23
- const settingsInitialState = {
24
- autoGroupTiles: 'left' as 'left' | 'right' | null,
12
+ const settingsInitialState: SettingsState = {
13
+ autoGroupTiles: 'left',
25
14
  configId: scrabble.id,
26
- locale: getInitialLocale(),
15
+ locale: guessLocale(),
27
16
  };
28
17
 
29
18
  export default settingsInitialState;
@@ -2,7 +2,7 @@ import { Board } from '@scrabble-solver/types';
2
2
 
3
3
  import boardInitialState from './boardInitialState';
4
4
 
5
- interface SolveInitialState {
5
+ export interface SolveState {
6
6
  error: unknown | undefined;
7
7
  isLoading: boolean;
8
8
  lastSolvedParameters: {
@@ -11,7 +11,7 @@ interface SolveInitialState {
11
11
  };
12
12
  }
13
13
 
14
- const solveInitialState: SolveInitialState = {
14
+ const solveInitialState: SolveState = {
15
15
  error: undefined,
16
16
  isLoading: false,
17
17
  lastSolvedParameters: {
@@ -12,6 +12,8 @@ const solveSlice = createSlice({
12
12
  initialState: solveInitialState,
13
13
  name: 'solve',
14
14
  reducers: {
15
+ reset: () => solveInitialState,
16
+
15
17
  submit: (state) => {
16
18
  const error = solveInitialState.error;
17
19
  return { ...state, error, isLoading: true };
@@ -1,12 +1,21 @@
1
- import boardInitialState from './boardInitialState';
1
+ import boardInitialState, { BoardState } from './boardInitialState';
2
2
 
3
- const verifyInitialState = {
3
+ export interface VerifyState {
4
+ isLoading: boolean;
5
+ lastSolvedParameters: {
6
+ board: BoardState;
7
+ };
8
+ invalidWords: string[];
9
+ validWords: string[];
10
+ }
11
+
12
+ const verifyInitialState: VerifyState = {
4
13
  isLoading: false,
5
14
  lastSolvedParameters: {
6
15
  board: boardInitialState,
7
16
  },
8
- invalidWords: [] as string[],
9
- validWords: [] as string[],
17
+ invalidWords: [],
18
+ validWords: [],
10
19
  };
11
20
 
12
21
  export default verifyInitialState;
@@ -1,3 +1,21 @@
1
- import rootReducer from './rootReducer';
1
+ import {
2
+ boardSlice,
3
+ cellFilterSlice,
4
+ dictionarySlice,
5
+ rackSlice,
6
+ resultsSlice,
7
+ settingsSlice,
8
+ solveSlice,
9
+ verifySlice,
10
+ } from './slices';
2
11
 
3
- export type RootState = ReturnType<typeof rootReducer>;
12
+ export type RootState = {
13
+ board: ReturnType<typeof boardSlice.reducer>;
14
+ cellFilter: ReturnType<typeof cellFilterSlice.reducer>;
15
+ dictionary: ReturnType<typeof dictionarySlice.reducer>;
16
+ rack: ReturnType<typeof rackSlice.reducer>;
17
+ results: ReturnType<typeof resultsSlice.reducer>;
18
+ settings: ReturnType<typeof settingsSlice.reducer>;
19
+ solve: ReturnType<typeof solveSlice.reducer>;
20
+ verify: ReturnType<typeof verifySlice.reducer>;
21
+ };
@@ -12,6 +12,28 @@ $media-expressions: (
12
12
  touch: '(hover: none)',
13
13
  );
14
14
 
15
+ @mixin scrollbars {
16
+ scrollbar-color: var(--scrollbar--thumb--color) var(--scrollbar--thumb--track);
17
+ scrollbar-width: auto;
18
+
19
+ &::-webkit-scrollbar {
20
+ width: var(--scrollbar--size);
21
+ background-color: var(--scrollbar--track--color);
22
+ }
23
+
24
+ &::-webkit-scrollbar-thumb {
25
+ background-color: var(--scrollbar--thumb--color);
26
+ }
27
+
28
+ &:hover {
29
+ scrollbar-color: var(--scrollbar--thumb--color--highlight) var(--scrollbar--track--color);
30
+
31
+ &::-webkit-scrollbar-thumb {
32
+ background-color: var(--scrollbar--thumb--color--highlight);
33
+ }
34
+ }
35
+ }
36
+
15
37
  /**
16
38
  * It does not work when applied on input elements.
17
39
  */
@@ -21,7 +43,6 @@ $media-expressions: (
21
43
  position: relative;
22
44
 
23
45
  &::after {
24
- content: '';
25
46
  position: absolute;
26
47
  top: 0;
27
48
  right: 0;
@@ -41,6 +62,7 @@ $media-expressions: (
41
62
  }
42
63
 
43
64
  &::after {
65
+ content: '';
44
66
  box-shadow: 0 0 0 var(--focus-effect--size) var(--color--focus);
45
67
  }
46
68
  }
@@ -129,6 +151,7 @@ $media-expressions: (
129
151
  &:nth-child(3) {
130
152
  input {
131
153
  left: -200%;
154
+ right: 0;
132
155
  clip-path: polygon((200% / 3) (100% / 3), 100% (100% / 3), 100% (200% / 3), (200% / 3) (200% / 3));
133
156
  }
134
157
  }
@@ -138,6 +161,7 @@ $media-expressions: (
138
161
  &:nth-last-child(3) {
139
162
  input {
140
163
  left: 0;
164
+ right: -200%;
141
165
  clip-path: polygon(0 (100% / 3), (100% / 3) (100% / 3), (100% / 3) (200% / 3), 0 (200% / 3));
142
166
  }
143
167
  }
@@ -1,3 +1,5 @@
1
+ @import 'styles/mixins';
2
+
1
3
  $easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
2
4
 
3
5
  :root {
@@ -8,7 +10,7 @@ $easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
8
10
  --border--width: 1px;
9
11
 
10
12
  --box-shadow: 0 0 var(--box-shadow--blur) var(--box-shadow--spread) var(--box-shadow--color);
11
- --box-shadow--blur: 10px;
13
+ --box-shadow--blur: 8px;
12
14
  --box-shadow--color: rgba(0, 0, 0, 0.15);
13
15
  --box-shadow--spread: 1px;
14
16
  --box-shadow--null: 0 0 var(--box-shadow--blur) var(--box-shadow--spread) transparent;
@@ -39,6 +41,7 @@ $easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
39
41
  --color--success: #00a900;
40
42
  --color--warning: hsl(35, 90%, 60%);
41
43
  --color--primary: var(--color--violet);
44
+ --color--primary--light: var(--color--violet--light);
42
45
  --color--primary--opposite: var(--color--white);
43
46
 
44
47
  --color--bonus--character--1: var(--color--yellow--light);
@@ -74,6 +77,11 @@ $easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
74
77
  --spacing--xl: 40px;
75
78
  --spacing--xxl: 80px;
76
79
 
80
+ --scrollbar--size: 5px;
81
+ --scrollbar--thumb--color: var(--border--color);
82
+ --scrollbar--thumb--color--highlight: var(--color--foreground--secondary);
83
+ --scrollbar--track--color: transparent;
84
+
77
85
  --transition: all var(--transition--duration) var(--transition--easing);
78
86
  --transition--long: all var(--transition--duration--long) var(--transition--easing);
79
87
  --transition--duration: 100ms;
@@ -92,4 +100,12 @@ $easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
92
100
  --solver-column--width: 580px;
93
101
  --square-button--size: 32px;
94
102
  --text-input--height: 40px;
103
+
104
+ @include media('<s') {
105
+ --box-shadow--blur: 5px;
106
+ }
107
+
108
+ @include media('<xs') {
109
+ --box-shadow--blur: 3px;
110
+ }
95
111
  }
@@ -2,6 +2,16 @@ export type Comparator<T> = (a: T, B: T) => number;
2
2
 
3
3
  export type Direction = 'horizontal' | 'vertical';
4
4
 
5
+ export interface Point {
6
+ x: number;
7
+ y: number;
8
+ }
9
+
10
+ export interface Sort {
11
+ column: ResultColumn;
12
+ direction: SortDirection;
13
+ }
14
+
5
15
  export enum SortDirection {
6
16
  Ascending = 'ascending',
7
17
  Descending = 'descending',
@@ -30,7 +40,6 @@ export enum ResultColumn {
30
40
  Word = 'word',
31
41
  WordsCount = 'words-count',
32
42
  }
33
-
34
43
  export type TranslationKey =
35
44
  | 'cell.filter-cell'
36
45
  | 'cell.set-blank'
@@ -78,7 +87,6 @@ export type TranslationKey =
78
87
  | 'rack.tile.location'
79
88
  | 'remaining-tiles'
80
89
  | 'results'
81
- | 'results.empty-state.no-filtered-results'
82
90
  | 'results.empty-state.no-results'
83
91
  | 'results.empty-state.outdated'
84
92
  | 'results.empty-state.uninitialized'
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@scrabble-solver/solver",
3
- "version": "2.11.0",
3
+ "version": "2.11.2",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/solver",
9
- "version": "2.11.0",
9
+ "version": "2.11.2",
10
10
  "license": "CC-BY-NC-ND-4.0",
11
11
  "dependencies": {
12
12
  "@kamilmielnik/trie": "^2.0.1"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/solver",
3
- "version": "2.11.0",
3
+ "version": "2.11.2",
4
4
  "description": "Scrabble Solver 2 - Solver",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -25,12 +25,12 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@kamilmielnik/trie": "^2.0.1",
28
- "@scrabble-solver/types": "^2.11.0"
28
+ "@scrabble-solver/types": "^2.11.2"
29
29
  },
30
30
  "devDependencies": {
31
- "@scrabble-solver/configs": "^2.11.0",
32
- "@scrabble-solver/constants": "^2.11.0",
33
- "@scrabble-solver/dictionaries": "^2.11.0"
31
+ "@scrabble-solver/configs": "^2.11.2",
32
+ "@scrabble-solver/constants": "^2.11.2",
33
+ "@scrabble-solver/dictionaries": "^2.11.2"
34
34
  },
35
35
  "gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
36
36
  }
@@ -1,3 +1,4 @@
1
+ import { BONUS_CHARACTER, BONUS_WORD } from '@scrabble-solver/constants';
1
2
  import BonusJson from './BonusJson';
2
3
  import BonusValue from './BonusValue';
3
4
  import Cell from './Cell';
@@ -5,7 +6,7 @@ import Config from './Config';
5
6
  declare abstract class Bonus {
6
7
  readonly multiplier: number;
7
8
  readonly score: number | undefined;
8
- abstract readonly type: string;
9
+ abstract readonly type: typeof BONUS_CHARACTER | typeof BONUS_WORD;
9
10
  readonly x: number;
10
11
  readonly y: number;
11
12
  constructor({ multiplier, score, x, y }: {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/types",
3
- "version": "2.11.0",
3
+ "version": "2.11.2",
4
4
  "description": "Scrabble Solver 2 - Types",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -24,7 +24,7 @@
24
24
  "clean:force": "npm run clean && rimraf package-lock.json"
25
25
  },
26
26
  "dependencies": {
27
- "@scrabble-solver/constants": "^2.11.0"
27
+ "@scrabble-solver/constants": "^2.11.2"
28
28
  },
29
29
  "gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
30
30
  }
@@ -1,3 +1,5 @@
1
+ import { BONUS_CHARACTER, BONUS_WORD } from '@scrabble-solver/constants';
2
+
1
3
  import BonusJson from './BonusJson';
2
4
  import BonusValue from './BonusValue';
3
5
  import Cell from './Cell';
@@ -8,7 +10,7 @@ abstract class Bonus {
8
10
 
9
11
  public readonly score: number | undefined;
10
12
 
11
- public abstract readonly type: string;
13
+ public abstract readonly type: typeof BONUS_CHARACTER | typeof BONUS_WORD;
12
14
 
13
15
  public readonly x: number;
14
16
 
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@scrabble-solver/word-definitions",
3
- "version": "2.11.0",
3
+ "version": "2.11.2",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/word-definitions",
9
- "version": "2.11.0",
9
+ "version": "2.11.2",
10
10
  "license": "CC-BY-NC-ND-4.0",
11
11
  "dependencies": {
12
12
  "cheerio": "^1.0.0-rc.12",
@@ -27,9 +27,9 @@
27
27
  }
28
28
  },
29
29
  "node_modules/@types/node": {
30
- "version": "18.15.0",
31
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.0.tgz",
32
- "integrity": "sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w==",
30
+ "version": "18.15.3",
31
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz",
32
+ "integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==",
33
33
  "dev": true
34
34
  },
35
35
  "node_modules/boolbase": {
@@ -249,9 +249,9 @@
249
249
  }
250
250
  },
251
251
  "@types/node": {
252
- "version": "18.15.0",
253
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.0.tgz",
254
- "integrity": "sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w==",
252
+ "version": "18.15.3",
253
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz",
254
+ "integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==",
255
255
  "dev": true
256
256
  },
257
257
  "boolbase": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/word-definitions",
3
- "version": "2.11.0",
3
+ "version": "2.11.2",
4
4
  "description": "Scrabble Solver 2 - Word definitions",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -23,7 +23,7 @@
23
23
  "clean": "rimraf build/ node_modules/ package-lock.json"
24
24
  },
25
25
  "dependencies": {
26
- "@scrabble-solver/types": "^2.11.0",
26
+ "@scrabble-solver/types": "^2.11.2",
27
27
  "cheerio": "^1.0.0-rc.12",
28
28
  "follow-redirects": "^1.15.2",
29
29
  "striptags": "^3.2.0"
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@scrabble-solver/word-lists",
3
- "version": "2.11.0",
3
+ "version": "2.11.2",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/word-lists",
9
- "version": "2.11.0",
9
+ "version": "2.11.2",
10
10
  "license": "CC-BY-NC-ND-4.0",
11
11
  "dependencies": {
12
12
  "cheerio": "^1.0.0-rc.12",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/word-lists",
3
- "version": "2.11.0",
3
+ "version": "2.11.2",
4
4
  "description": "Scrabble Solver 2 - Word lists",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -24,7 +24,7 @@
24
24
  "clean:force": "npm run clean && rimraf package-lock.json"
25
25
  },
26
26
  "dependencies": {
27
- "@scrabble-solver/types": "^2.11.0",
27
+ "@scrabble-solver/types": "^2.11.2",
28
28
  "cheerio": "^1.0.0-rc.12",
29
29
  "follow-redirects": "^1.15.2",
30
30
  "unzipper": "^0.10.11"
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST={__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":["static/css/a48caa6f57de6e98.css","static/chunks/pages/index-35d2c1c79a201ae2.js"],"/404":["static/chunks/pages/404-e0f30450e9920dc3.js"],"/_error":["static/chunks/pages/_error-54de1933a164a1ff.js"],sortedPages:["/","/404","/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();