@scrabble-solver/scrabble-solver 2.16.2 → 2.16.3

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 (62) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/cache/.previewinfo +1 -1
  4. package/.next/cache/.rscinfo +1 -1
  5. package/.next/cache/.tsbuildinfo +1 -1
  6. package/.next/cache/webpack/client-production/0.pack +0 -0
  7. package/.next/cache/webpack/client-production/index.pack +0 -0
  8. package/.next/cache/webpack/client-production/index.pack.old +0 -0
  9. package/.next/cache/webpack/edge-server-production/index.pack +0 -0
  10. package/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
  11. package/.next/cache/webpack/server-production/0.pack +0 -0
  12. package/.next/cache/webpack/server-production/index.pack +0 -0
  13. package/.next/cache/webpack/server-production/index.pack.old +0 -0
  14. package/.next/prerender-manifest.json +4 -4
  15. package/.next/routes-manifest.json +1 -1
  16. package/.next/server/chunks/712.js +1 -1
  17. package/.next/server/middleware-build-manifest.js +1 -1
  18. package/.next/server/pages/404.html +1 -1
  19. package/.next/server/pages/500.html +1 -1
  20. package/.next/server/pages/index.html +1 -1
  21. package/.next/server/pages/index.json +1 -1
  22. package/.next/server/pages/not-found.html +1 -1
  23. package/.next/static/chunks/pages/{_app-31e560b7b14739d6.js → _app-b74c31c912e414e4.js} +2 -2
  24. package/.next/trace +21 -21
  25. package/.next/trace-build +1 -1
  26. package/package.json +9 -9
  27. package/src/components/Board/components/Cell/Cell.tsx +7 -4
  28. package/src/components/DictionaryInput/DictionaryInput.tsx +1 -0
  29. package/src/components/Modal/Modal.tsx +2 -0
  30. package/src/components/Progress/Progress.tsx +5 -0
  31. package/src/components/Radio/Radio.tsx +1 -1
  32. package/src/components/Results/Result.tsx +1 -0
  33. package/src/components/Results/Results.tsx +8 -2
  34. package/src/i18n/languages/english.json +1 -1
  35. package/src/i18n/languages/french.json +1 -1
  36. package/src/i18n/languages/german.json +1 -1
  37. package/src/i18n/languages/persian.json +1 -1
  38. package/src/i18n/languages/polish.json +1 -1
  39. package/src/i18n/languages/romanian.json +1 -1
  40. package/src/i18n/languages/spanish.json +1 -1
  41. package/src/i18n/languages/turkish.json +1 -1
  42. package/tsconfig.tsbuildinfo +1 -1
  43. package/.next/dev/build-manifest.json +0 -31
  44. package/.next/dev/cache/webpack/client-development/0.pack.gz +0 -0
  45. package/.next/dev/cache/webpack/client-development/index.pack.gz +0 -0
  46. package/.next/dev/logs/next-development.log +0 -6
  47. package/.next/dev/react-loadable-manifest.json +0 -1
  48. package/.next/dev/server/middleware-build-manifest.js +0 -31
  49. package/.next/dev/server/middleware-react-loadable-manifest.js +0 -1
  50. package/.next/dev/server/next-font-manifest.js +0 -1
  51. package/.next/dev/server/next-font-manifest.json +0 -1
  52. package/.next/dev/server/pages/_app.js +0 -4082
  53. package/.next/dev/server/pages/_error.js +0 -4126
  54. package/.next/dev/server/pages/index.js +0 -4804
  55. package/.next/dev/server/pages-manifest.json +0 -6
  56. package/.next/dev/server/webpack-runtime.js +0 -231
  57. package/.next/dev/static/chunks/pages/_app.js +0 -5131
  58. package/.next/dev/static/chunks/webpack.js +0 -1238
  59. package/.next/dev/static/development/_buildManifest.js +0 -1
  60. package/.next/dev/static/development/_ssgManifest.js +0 -1
  61. /package/.next/static/{a98wTJsZR6CASwFn19QFv → 2uHbiXWVmb-guNjYk2sfF}/_buildManifest.js +0 -0
  62. /package/.next/static/{a98wTJsZR6CASwFn19QFv → 2uHbiXWVmb-guNjYk2sfF}/_ssgManifest.js +0 -0
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-typescript","duration":1895961,"timestamp":7659483428,"id":13,"parentId":1,"tags":{},"startTime":1777629158133,"traceId":"f4a8e837f3a22937"},{"name":"run-webpack","duration":5953008,"timestamp":7661384973,"id":15,"parentId":1,"tags":{},"startTime":1777629160034,"traceId":"f4a8e837f3a22937"},{"name":"static-check","duration":168518,"timestamp":7667411752,"id":2050,"parentId":1,"tags":{},"startTime":1777629166061,"traceId":"f4a8e837f3a22937"},{"name":"static-generation","duration":812958,"timestamp":7667588532,"id":2068,"parentId":1,"tags":{},"startTime":1777629166238,"traceId":"f4a8e837f3a22937"},{"name":"collect-build-traces","duration":3550761,"timestamp":7667580695,"id":2065,"parentId":1,"tags":{},"startTime":1777629166230,"traceId":"f4a8e837f3a22937"},{"name":"telemetry-flush","duration":19,"timestamp":7671132686,"id":2080,"parentId":1,"tags":{},"startTime":1777629169782,"traceId":"f4a8e837f3a22937"},{"name":"next-build","duration":11879532,"timestamp":7659253176,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1777629157902,"traceId":"f4a8e837f3a22937"}]
1
+ [{"name":"run-typescript","duration":1927882,"timestamp":12132566371,"id":13,"parentId":1,"tags":{},"startTime":1777633631216,"traceId":"8b06f5414966a48b"},{"name":"run-webpack","duration":5926972,"timestamp":12134496823,"id":15,"parentId":1,"tags":{},"startTime":1777633633146,"traceId":"8b06f5414966a48b"},{"name":"static-check","duration":189599,"timestamp":12140501745,"id":2050,"parentId":1,"tags":{},"startTime":1777633639151,"traceId":"8b06f5414966a48b"},{"name":"static-generation","duration":885430,"timestamp":12140704009,"id":2068,"parentId":1,"tags":{},"startTime":1777633639353,"traceId":"8b06f5414966a48b"},{"name":"collect-build-traces","duration":3804790,"timestamp":12140691783,"id":2065,"parentId":1,"tags":{},"startTime":1777633639341,"traceId":"8b06f5414966a48b"},{"name":"telemetry-flush","duration":19,"timestamp":12144497748,"id":2080,"parentId":1,"tags":{},"startTime":1777633643147,"traceId":"8b06f5414966a48b"},{"name":"next-build","duration":12163730,"timestamp":12132334040,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1777633630983,"traceId":"8b06f5414966a48b"}]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/scrabble-solver",
3
- "version": "2.16.2",
3
+ "version": "2.16.3",
4
4
  "description": "Scrabble Solver 2 - App",
5
5
  "repository": {
6
6
  "type": "git",
@@ -29,13 +29,13 @@
29
29
  "@floating-ui/react": "^0.27.19",
30
30
  "@kamilmielnik/trie": "^5.0.0",
31
31
  "@reduxjs/toolkit": "^2.11.2",
32
- "@scrabble-solver/configs": "^2.16.2",
33
- "@scrabble-solver/constants": "^2.16.2",
34
- "@scrabble-solver/dictionaries": "^2.16.2",
35
- "@scrabble-solver/logger": "^2.16.2",
36
- "@scrabble-solver/solver": "^2.16.2",
37
- "@scrabble-solver/types": "^2.16.2",
38
- "@scrabble-solver/word-definitions": "^2.16.2",
32
+ "@scrabble-solver/configs": "^2.16.3",
33
+ "@scrabble-solver/constants": "^2.16.3",
34
+ "@scrabble-solver/dictionaries": "^2.16.3",
35
+ "@scrabble-solver/logger": "^2.16.3",
36
+ "@scrabble-solver/solver": "^2.16.3",
37
+ "@scrabble-solver/types": "^2.16.3",
38
+ "@scrabble-solver/word-definitions": "^2.16.3",
39
39
  "classnames": "^2.5.1",
40
40
  "env-cmd": "^11.0.0",
41
41
  "include-media": "^2.0.0",
@@ -70,5 +70,5 @@
70
70
  "@types/redux": "^3.6.31",
71
71
  "sass": "^1.99.0"
72
72
  },
73
- "gitHead": "c49ad756f6977190c078ccbc8efee071cf542c28"
73
+ "gitHead": "dd3e85ab8471dc7990bcc744f890dde9c0e34ae8"
74
74
  }
@@ -11,12 +11,13 @@ import {
11
11
  useCallback,
12
12
  } from 'react';
13
13
 
14
+ import { getCoordinate } from '@/lib';
14
15
  import {
15
16
  selectCellIsValid,
16
17
  selectConfig,
17
18
  selectHoveredCharacter,
18
19
  selectInputMode,
19
- selectLocale,
20
+ selectShowCoordinates,
20
21
  selectTilePoints,
21
22
  useTranslate,
22
23
  useTypedSelector,
@@ -55,9 +56,9 @@ export const Cell: FunctionComponent<Props> = ({
55
56
  }) => {
56
57
  const { tile, x, y } = cell;
57
58
  const translate = useTranslate();
58
- const locale = useTypedSelector(selectLocale);
59
59
  const config = useTypedSelector(selectConfig);
60
60
  const inputMode = useTypedSelector(selectInputMode);
61
+ const showCoordinates = useTypedSelector(selectShowCoordinates);
61
62
  const points = useTypedSelector((state) => selectTilePoints(state, cell.tile));
62
63
  const isValid = useTypedSelector((state) => selectCellIsValid(state, cell));
63
64
  const hoveredCharacter = useTypedSelector(selectHoveredCharacter);
@@ -104,8 +105,10 @@ export const Cell: FunctionComponent<Props> = ({
104
105
  return (
105
106
  <Tile
106
107
  aria-label={translate('cell.tile.location', {
107
- x: (x + 1).toLocaleString(locale),
108
- y: (y + 1).toLocaleString(locale),
108
+ coordinates:
109
+ showCoordinates === 'alternative'
110
+ ? `${getCoordinate(x, 'number')}${getCoordinate(y, 'letter')}`
111
+ : `${getCoordinate(x, 'letter')}${getCoordinate(y, 'number')}`,
109
112
  })}
110
113
  className={classNames(styles.tile, className, {
111
114
  [styles.first3]: x < 3,
@@ -30,6 +30,7 @@ export const DictionaryInput: FunctionComponent<Props> = ({ className }) => {
30
30
  return (
31
31
  <form className={classNames(styles.dictionaryInput, className)} onSubmit={handleSubmit}>
32
32
  <input
33
+ aria-label={translate('dictionary.input.title')}
33
34
  className={styles.input}
34
35
  pattern={`.*[^\\s${comma}].*`}
35
36
  placeholder={translate('dictionary.input.placeholder')}
@@ -52,6 +52,7 @@ const ModalBase: FunctionComponent<Props> = ({ children, className, footer, isOp
52
52
 
53
53
  return (
54
54
  <ReactModal
55
+ aria={{ modal: true }}
55
56
  className={{
56
57
  afterOpen: styles.afterOpen,
57
58
  base: styles.modal,
@@ -61,6 +62,7 @@ const ModalBase: FunctionComponent<Props> = ({ children, className, footer, isOp
61
62
  contentLabel={title}
62
63
  isOpen={isOpen}
63
64
  overlayClassName={styles.overlay}
65
+ role="dialog"
64
66
  shouldReturnFocusAfterClose={shouldReturnFocusAfterClose}
65
67
  onRequestClose={onClose}
66
68
  >
@@ -25,7 +25,12 @@ export const Progress: FunctionComponent<Props> = ({ className, max, min = 0, st
25
25
  return (
26
26
  <div
27
27
  {...props}
28
+ aria-valuemax={max}
29
+ aria-valuemin={min}
30
+ aria-valuenow={value}
31
+ aria-valuetext={`${percent.toLocaleString(locale)}%`}
28
32
  className={classNames(styles.progress, className)}
33
+ role="progressbar"
29
34
  style={{
30
35
  ...style,
31
36
  backgroundImage: getGradient(progress, PROGRESS_COLOR_VALUE, PROGRESS_COLOR_BACKGROUND),
@@ -30,7 +30,7 @@ export const Radio: FunctionComponent<Props> = ({ checked, children, className,
30
30
  onChange={onChange}
31
31
  />
32
32
 
33
- <div aria-hidden="true" className={styles.icon} role="img">
33
+ <div aria-hidden="true" className={styles.icon}>
34
34
  <div className={styles.iconContent} />
35
35
  </div>
36
36
 
@@ -50,6 +50,7 @@ export const Result = ({
50
50
 
51
51
  return (
52
52
  <button
53
+ aria-current={index === highlightedIndex ? 'true' : undefined}
53
54
  aria-hidden={isMatching ? undefined : 'true'}
54
55
  aria-label={result.word}
55
56
  className={classNames(styles.result, {
@@ -70,10 +70,16 @@ export const Results: FunctionComponent<Props> = ({ callbacks, className, highli
70
70
  }, [results, listRef, scrollToIndexRef]);
71
71
 
72
72
  return (
73
- <div className={classNames(styles.results, className)} data-testid="results">
73
+ <div
74
+ aria-busy={isLoadingDebounced}
75
+ aria-label={translate('results')}
76
+ className={classNames(styles.results, className)}
77
+ data-testid="results"
78
+ role="region"
79
+ >
74
80
  <Header />
75
81
 
76
- <div className={styles.content}>
82
+ <div aria-live="polite" className={styles.content}>
77
83
  {typeof error !== 'undefined' && (
78
84
  <EmptyState className={styles.emptyState} variant="error">
79
85
  {error.message}
@@ -4,7 +4,7 @@
4
4
  "cell.filter-cell.include": "Target destination",
5
5
  "cell.set-blank": "Mark it a blank",
6
6
  "cell.set-not-blank": "Mark it not a blank",
7
- "cell.tile.location": "Board: tile ({{x}}, {{y}})",
7
+ "cell.tile.location": "Board: tile {{coordinates}}",
8
8
  "cell.toggle-direction": "Typing direction",
9
9
  "common.arrows": "Arrow keys",
10
10
  "common.blanks": "Blanks",
@@ -4,7 +4,7 @@
4
4
  "cell.filter-cell.include": "Destination cible",
5
5
  "cell.set-blank": "Marquer comme vide",
6
6
  "cell.set-not-blank": "Marquer comme non vide",
7
- "cell.tile.location": "Plateau: la case ({{x}}, {{y}})",
7
+ "cell.tile.location": "Plateau: la case {{coordinates}}",
8
8
  "cell.toggle-direction": "Direction d'écriture",
9
9
  "common.arrows": "Touches fléchées",
10
10
  "common.blanks": "Cases vides",
@@ -4,7 +4,7 @@
4
4
  "cell.filter-cell.include": "Ziel anvisieren",
5
5
  "cell.set-blank": "Als Blanko markieren",
6
6
  "cell.set-not-blank": "Nicht als Blanko markieren",
7
- "cell.tile.location": "Brett: Stein ({{x}}, {{y}})",
7
+ "cell.tile.location": "Brett: Stein {{coordinates}}",
8
8
  "cell.toggle-direction": "Schreibrichtung",
9
9
  "common.arrows": "Pfeiltasten",
10
10
  "common.blanks": "Blankos",
@@ -4,7 +4,7 @@
4
4
  "cell.filter-cell.include": "مقصد مورد نظر",
5
5
  "cell.set-blank": "علامت گذاری به عنوان خالی",
6
6
  "cell.set-not-blank": "علامت گذاری به عنوان غیر خالی",
7
- "cell.tile.location": "({{x}}، {{y}}) کاشی: صفحه",
7
+ "cell.tile.location": "{{coordinates}} کاشی: صفحه",
8
8
  "cell.toggle-direction": "جهت تایپ",
9
9
  "common.arrows": "کلیدهای جهت دار",
10
10
  "common.blanks": "خالی",
@@ -4,7 +4,7 @@
4
4
  "cell.filter-cell.include": "Miejsce docelowe",
5
5
  "cell.set-blank": "Oznacz jako blank",
6
6
  "cell.set-not-blank": "Oznacz jako nie blank",
7
- "cell.tile.location": "Plansza: płytka ({{x}}, {{y}})",
7
+ "cell.tile.location": "Plansza: płytka {{coordinates}}",
8
8
  "cell.toggle-direction": "Kierunek wpisywania",
9
9
  "common.arrows": "Klawisze strzałek",
10
10
  "common.blanks": "Blanki",
@@ -4,7 +4,7 @@
4
4
  "cell.filter-cell.include": "Destinație țintă",
5
5
  "cell.set-blank": "Marcare camp liber",
6
6
  "cell.set-not-blank": "Marcare camp ocupat ",
7
- "cell.tile.location": "Tabla: camp ({{x}}, {{y}})",
7
+ "cell.tile.location": "Tabla: camp {{coordinates}}",
8
8
  "cell.toggle-direction": "Directie scriere",
9
9
  "common.arrows": "Sagetile",
10
10
  "common.blanks": "Jokeri",
@@ -4,7 +4,7 @@
4
4
  "cell.filter-cell.include": "Destino objetivo",
5
5
  "cell.set-blank": "Marcar como en blanco",
6
6
  "cell.set-not-blank": "Marcar como no en blanco",
7
- "cell.tile.location": "Tablero: espacio ({{x}}, {{y}})",
7
+ "cell.tile.location": "Tablero: espacio {{coordinates}}",
8
8
  "cell.toggle-direction": "Dirección de escritura",
9
9
  "common.arrows": "Teclas de flecha",
10
10
  "common.blanks": "Blancos",
@@ -4,7 +4,7 @@
4
4
  "cell.filter-cell.include": "Hedef varış noktası",
5
5
  "cell.set-blank": "Boş olarak işaretle",
6
6
  "cell.set-not-blank": "Boş değil olarak işaretle",
7
- "cell.tile.location": "Tahta: harfler ({{x}}, {{y}})",
7
+ "cell.tile.location": "Tahta: harfler {{coordinates}}",
8
8
  "cell.toggle-direction": "Yazma yönü - geçiş yapmak için tıklayın",
9
9
  "common.arrows": "Ok tuşları",
10
10
  "common.blanks": "Jokerler",