@scrabble-solver/scrabble-solver 2.10.6 → 2.10.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +7 -13
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/eslint/.cache_8dgz12 +1 -1
- package/.next/cache/next-server.js.nft.json +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/edge-server-production/0.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/176.js +4597 -568
- package/.next/server/chunks/290.js +3 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +2 -2
- package/.next/server/pages/404.js.nft.json +1 -1
- package/.next/server/pages/500.html +2 -2
- package/.next/server/pages/_app.js +296 -13
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/server/pages/api/dictionary/[locale]/[word].js +18 -16
- package/.next/server/pages/api/solve.js +17 -0
- package/.next/server/pages/index.html +1 -9
- package/.next/server/pages/index.js +26 -12
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/index.json +1 -1
- package/.next/server/pages-manifest.json +2 -2
- package/.next/static/Cs23uxWG6AxS72F2yrjHu/_buildManifest.js +1 -0
- package/.next/static/chunks/pages/{404-ff35a4cf7f1ec85a.js → 404-8cab6d62fe4ead73.js} +1 -1
- package/.next/static/chunks/pages/_app-dcbbb823dc93a031.js +28 -0
- package/.next/static/chunks/pages/index-df1ff01aa82d2d4d.js +1 -0
- package/.next/static/css/bf2e969b88c4e3dd.css +2 -0
- package/.next/static/css/d1cc6b79b211b7b8.css +1 -0
- package/.next/trace +55 -55
- package/package.json +10 -9
- package/src/components/Badge/Badge.module.scss +1 -1
- package/src/components/Board/components/Cell/Cell.module.scss +32 -64
- package/src/components/Board/components/Cell/Cell.tsx +6 -0
- package/src/components/Board/components/Cell/CellPure.tsx +24 -22
- package/src/components/Button/Button.module.scss +2 -2
- package/src/components/Button/Button.tsx +1 -0
- package/src/components/Button/Link.tsx +1 -0
- package/src/components/Checkbox/Checkbox.tsx +1 -4
- package/src/components/Dictionary/Dictionary.tsx +28 -30
- package/src/components/DictionaryInput/DictionaryInput.tsx +3 -0
- package/src/components/{SquareButton/SquareButton.module.scss → IconButton/IconButton.module.scss} +1 -1
- package/src/components/{SquareButton/SquareButton.tsx → IconButton/IconButton.tsx} +7 -6
- package/src/components/{SquareButton → IconButton}/Link.tsx +3 -2
- package/src/components/IconButton/index.ts +1 -0
- package/src/components/Key/Key.module.scss +1 -1
- package/src/components/Logo/Logo.svg +44 -15
- package/src/components/LogoSplashScreen/LogoSplashScreen.module.scss +1 -1
- package/src/components/Modal/Modal.module.scss +4 -2
- package/src/components/Modal/Modal.tsx +3 -2
- package/src/components/NavButtons/NavButtons.tsx +37 -9
- package/src/components/Rack/Rack.module.scss +4 -0
- package/src/components/Rack/RackTile.tsx +5 -0
- package/src/components/Radio/Radio.tsx +1 -4
- package/src/components/Results/HeaderButton.tsx +1 -0
- package/src/components/Results/Result.tsx +1 -0
- package/src/components/Results/Results.module.scss +2 -3
- package/src/components/Results/SolveButton.tsx +1 -0
- package/src/components/SeoMessage/SeoMessage.tsx +19 -0
- package/src/components/SeoMessage/index.ts +1 -0
- package/src/components/Solver/Solver.module.scss +4 -0
- package/src/components/Solver/Solver.tsx +26 -8
- package/src/components/Solver/components/EmptyState/EmptyState.module.scss +1 -3
- package/src/components/Solver/components/InsertButton/InsertButton.module.scss +15 -0
- package/src/components/Solver/components/{ApplyButton/ApplyButton.tsx → InsertButton/InsertButton.tsx} +10 -6
- package/src/components/Solver/components/InsertButton/index.ts +1 -0
- package/src/components/Solver/components/ResultCandidatePicker/ResultCandidatePicker.module.scss +37 -7
- package/src/components/Solver/components/ResultCandidatePicker/ResultCandidatePicker.tsx +41 -17
- package/src/components/Solver/components/SolveButton/SolveButton.tsx +11 -1
- package/src/components/Solver/components/index.ts +1 -2
- package/src/components/Tile/Tile.module.scss +49 -11
- package/src/components/Tile/Tile.tsx +26 -8
- package/src/components/Tile/TilePure.tsx +29 -19
- package/src/components/Tooltip/Tooltip.module.scss +7 -7
- package/src/components/Tooltip/useTooltip.tsx +14 -2
- package/src/components/index.ts +2 -1
- package/src/i18n/de.json +6 -0
- package/src/i18n/en.json +6 -0
- package/src/i18n/es.json +6 -0
- package/src/i18n/fa.json +6 -0
- package/src/i18n/fr.json +6 -0
- package/src/i18n/pl.json +6 -0
- package/src/icons/ArrowDown.svg +1 -1
- package/src/icons/ArrowLeft.svg +1 -1
- package/src/icons/ArrowRight.svg +1 -1
- package/src/icons/ArrowUp.svg +1 -1
- package/src/icons/ChevronDown.svg +1 -1
- package/src/icons/ChevronLeft.svg +1 -1
- package/src/icons/ChevronRight.svg +1 -1
- package/src/icons/Flag.svg +2 -2
- package/src/icons/FlagFill.svg +4 -0
- package/src/icons/List.svg +1 -1
- package/src/icons/Square.svg +4 -0
- package/src/icons/SquareFill.svg +4 -0
- package/src/icons/index.ts +3 -0
- package/src/modals/MenuModal/MenuModal.tsx +9 -3
- package/src/modals/RemainingTilesModal/components/Character/Character.module.scss +1 -1
- package/src/modals/RemainingTilesModal/components/Character/Character.tsx +1 -0
- package/src/modals/ResultsModal/ResultsModal.module.scss +1 -1
- package/src/modals/SettingsModal/components/AutoGroupTilesSetting/AutoGroupTilesSetting.tsx +0 -1
- package/src/modals/SettingsModal/components/ConfigSetting/ConfigSetting.tsx +0 -1
- package/src/modals/SettingsModal/components/LocaleSetting/LocaleSetting.module.scss +14 -24
- package/src/modals/SettingsModal/components/LocaleSetting/LocaleSetting.tsx +0 -1
- package/src/pages/_app.tsx +9 -5
- package/src/pages/api/dictionary/[locale]/[word].ts +3 -1
- package/src/pages/index.module.scss +1 -2
- package/src/pages/index.tsx +6 -0
- package/src/parameters/index.ts +10 -0
- package/src/state/sagas.ts +5 -2
- package/src/state/slices/boardSlice.ts +5 -5
- package/src/state/useTranslate.ts +5 -2
- package/src/styles/mixins.scss +4 -2
- package/src/styles/variables.scss +39 -32
- package/src/types/index.ts +7 -1
- package/.next/server/chunks/579.js +0 -3917
- package/.next/static/chunks/490-d29992f1c264d70e.js +0 -5
- package/.next/static/chunks/791-93aa8b8c22e488ac.js +0 -1
- package/.next/static/chunks/pages/_app-fa0661b072fc6af9.js +0 -24
- package/.next/static/chunks/pages/index-ded620fd5df96be0.js +0 -1
- package/.next/static/css/4482c4a0064d3807.css +0 -1
- package/.next/static/css/78e42ad01f580f64.css +0 -1
- package/.next/static/css/a943dd97164732d4.css +0 -1
- package/.next/static/iL0av55MV28b0MXfhKKt2/_buildManifest.js +0 -1
- package/src/components/Board/components/Cell/Button.tsx +0 -31
- package/src/components/Solver/components/ApplyButton/ApplyButton.module.scss +0 -5
- package/src/components/Solver/components/ApplyButton/index.ts +0 -1
- package/src/components/Solver/components/MobileControls/MobileControls.tsx +0 -62
- package/src/components/Solver/components/MobileControls/index.ts +0 -1
- package/src/components/SquareButton/index.ts +0 -1
- /package/.next/static/{iL0av55MV28b0MXfhKKt2 → Cs23uxWG6AxS72F2yrjHu}/_ssgManifest.js +0 -0
package/src/i18n/de.json
CHANGED
|
@@ -2,13 +2,16 @@
|
|
|
2
2
|
"cell.filter-cell": "Zielort - klicken zum Wechseln",
|
|
3
3
|
"cell.set-blank": "Als Blanko markieren",
|
|
4
4
|
"cell.set-not-blank": "Nicht als Blanko markieren",
|
|
5
|
+
"cell.tile.location": "Brett: Stein ({{x}}, {{y}})",
|
|
5
6
|
"cell.toggle-direction": "Schreibrichtung - klicken zum Wechseln",
|
|
6
7
|
"common.blanks": "Blankos",
|
|
7
8
|
"common.clear": "Löschen",
|
|
8
9
|
"common.close": "Schließen",
|
|
9
10
|
"common.consonants": "Konsonanten",
|
|
10
11
|
"common.loading": "Laden",
|
|
12
|
+
"common.next": "Weiter",
|
|
11
13
|
"common.points": "Punkte",
|
|
14
|
+
"common.previous": "Zurück",
|
|
12
15
|
"common.tiles": "Steine",
|
|
13
16
|
"common.two-letter-tiles": "Zwei-Buchstaben",
|
|
14
17
|
"common.vowels": "Vokale",
|
|
@@ -19,6 +22,7 @@
|
|
|
19
22
|
"dictionary.empty-state.not-allowed": "Dieses Wort ist nicht erlaubt.",
|
|
20
23
|
"dictionary.empty-state.uninitialized": "Die Wörterbuchdefinition des letzten markierten Wortes wird hier angezeigt.",
|
|
21
24
|
"dictionary.input.placeholder": "Durchsuche Wörterbuch...",
|
|
25
|
+
"dictionary.input.title": "Durch Kommas getrennte Wörter",
|
|
22
26
|
"empty-state.error": "Fehler",
|
|
23
27
|
"empty-state.info": "Info",
|
|
24
28
|
"empty-state.success": "Juhuu!",
|
|
@@ -37,6 +41,7 @@
|
|
|
37
41
|
"keyMap.rack.insert-blank": "Blanko hinzufügen (Leertaste)",
|
|
38
42
|
"menu": "Menü",
|
|
39
43
|
"rack.placeholder": "Steine…",
|
|
44
|
+
"rack.tile.location": "Ablage: Stein ({{index}})",
|
|
40
45
|
"remaining-tiles": "Restliche Steine",
|
|
41
46
|
"results": "Ergebnisse",
|
|
42
47
|
"results.empty-state.no-filtered-results": "Keine Ergebnisse für diese Anfrage.",
|
|
@@ -44,6 +49,7 @@
|
|
|
44
49
|
"results.empty-state.outdated": "Ergebnisse sind alt. Klicken zum Aktualisieren.",
|
|
45
50
|
"results.empty-state.uninitialized": "Wörter die aus deinen Buchstaben generiert wurden erscheinen hier.",
|
|
46
51
|
"results.input.placeholder": "Suchergebnisse... (RegExp)",
|
|
52
|
+
"results.insert": "Hinzufügen",
|
|
47
53
|
"results.solve": "Lösen",
|
|
48
54
|
"settings": "Einstellungen",
|
|
49
55
|
"settings.autoGroupTiles": "Restliche Steine gruppieren",
|
package/src/i18n/en.json
CHANGED
|
@@ -2,13 +2,16 @@
|
|
|
2
2
|
"cell.filter-cell": "Target destination - click to toggle",
|
|
3
3
|
"cell.set-blank": "Mark it a blank",
|
|
4
4
|
"cell.set-not-blank": "Mark it not a blank",
|
|
5
|
+
"cell.tile.location": "Board: tile ({{x}}, {{y}})",
|
|
5
6
|
"cell.toggle-direction": "Typing direction - click to toggle",
|
|
6
7
|
"common.blanks": "Blanks",
|
|
7
8
|
"common.clear": "Clear",
|
|
8
9
|
"common.close": "Close",
|
|
9
10
|
"common.consonants": "Consonants",
|
|
10
11
|
"common.loading": "Loading",
|
|
12
|
+
"common.next": "Next",
|
|
11
13
|
"common.points": "Points",
|
|
14
|
+
"common.previous": "Previous",
|
|
12
15
|
"common.tiles": "Tiles",
|
|
13
16
|
"common.two-letter-tiles": "Two-letter",
|
|
14
17
|
"common.vowels": "Vowels",
|
|
@@ -19,6 +22,7 @@
|
|
|
19
22
|
"dictionary.empty-state.not-allowed": "This word is not allowed.",
|
|
20
23
|
"dictionary.empty-state.uninitialized": "Dictionary definition of the most recently highlighted word will be shown here.",
|
|
21
24
|
"dictionary.input.placeholder": "Search dictionary...",
|
|
25
|
+
"dictionary.input.title": "Comma-separated words",
|
|
22
26
|
"empty-state.error": "Error",
|
|
23
27
|
"empty-state.info": "Info",
|
|
24
28
|
"empty-state.success": "Yeah!",
|
|
@@ -37,6 +41,7 @@
|
|
|
37
41
|
"keyMap.rack.insert-blank": "Insert blank (spacebar)",
|
|
38
42
|
"menu": "Menu",
|
|
39
43
|
"rack.placeholder": "Letters",
|
|
44
|
+
"rack.tile.location": "Rack: tile ({{index}})",
|
|
40
45
|
"remaining-tiles": "Remaining tiles",
|
|
41
46
|
"results": "Results",
|
|
42
47
|
"results.empty-state.no-filtered-results": "No result matches this query.",
|
|
@@ -44,6 +49,7 @@
|
|
|
44
49
|
"results.empty-state.outdated": "Results are outdated. Click below to update.",
|
|
45
50
|
"results.empty-state.uninitialized": "Words generated from your letters will be shown here.",
|
|
46
51
|
"results.input.placeholder": "Search results... (RegExp)",
|
|
52
|
+
"results.insert": "Insert",
|
|
47
53
|
"results.solve": "Solve",
|
|
48
54
|
"settings": "Settings",
|
|
49
55
|
"settings.autoGroupTiles": "Group remaining tiles",
|
package/src/i18n/es.json
CHANGED
|
@@ -2,13 +2,16 @@
|
|
|
2
2
|
"cell.filter-cell": "Destino objetivo: haga clic para alternar",
|
|
3
3
|
"cell.set-blank": "Marcar como en blanco",
|
|
4
4
|
"cell.set-not-blank": "Marcar como no en blanco",
|
|
5
|
+
"cell.tile.location": "Tablero: espacio ({{x}}, {{y}})",
|
|
5
6
|
"cell.toggle-direction": "Dirección de escritura: haga clic para alternar",
|
|
6
7
|
"common.blanks": "Blancos",
|
|
7
8
|
"common.clear": "Borrar",
|
|
8
9
|
"common.close": "Cerrar",
|
|
9
10
|
"common.consonants": "Consonantes",
|
|
10
11
|
"common.loading": "Cargando",
|
|
12
|
+
"common.next": "Siguiente",
|
|
11
13
|
"common.points": "Puntos",
|
|
14
|
+
"common.previous": "Anterior",
|
|
12
15
|
"common.tiles": "Longitud",
|
|
13
16
|
"common.two-letter-tiles": "Dos letras",
|
|
14
17
|
"common.vowels": "Vocales",
|
|
@@ -19,6 +22,7 @@
|
|
|
19
22
|
"dictionary.empty-state.not-allowed": "Esta palabra no es aceptable.",
|
|
20
23
|
"dictionary.empty-state.uninitialized": "Aquí se mostrará la definición del diccionario de la última palabra resaltada.",
|
|
21
24
|
"dictionary.input.placeholder": "Busca el diccionario...",
|
|
25
|
+
"dictionary.input.title": "Palabras separadas por comas",
|
|
22
26
|
"empty-state.error": "Error",
|
|
23
27
|
"empty-state.info": "Info",
|
|
24
28
|
"empty-state.success": "Sí!",
|
|
@@ -37,6 +41,7 @@
|
|
|
37
41
|
"keyMap.rack.insert-blank": "Insertar espacio en blanco (barra espaciadora)",
|
|
38
42
|
"menu": "Menú",
|
|
39
43
|
"rack.placeholder": "Letras…",
|
|
44
|
+
"rack.tile.location": "Estante: espacio ({{index}})",
|
|
40
45
|
"remaining-tiles": "Casillas restantes",
|
|
41
46
|
"results": "Resultados",
|
|
42
47
|
"results.empty-state.no-filtered-results": "Ningún resultado coincide con esta consulta.",
|
|
@@ -44,6 +49,7 @@
|
|
|
44
49
|
"results.empty-state.outdated": "Los resultados están desactualizados. Haga clic a continuación para actualizar.",
|
|
45
50
|
"results.empty-state.uninitialized": "Aquí se mostrarán las palabras generadas a partir de sus letras.",
|
|
46
51
|
"results.input.placeholder": "Busque una solución... (RegExp)",
|
|
52
|
+
"results.insert": "Insertar",
|
|
47
53
|
"results.solve": "Resolver",
|
|
48
54
|
"settings": "Configuración",
|
|
49
55
|
"settings.autoGroupTiles": "Agrupar casillas restantes",
|
package/src/i18n/fa.json
CHANGED
|
@@ -3,12 +3,15 @@
|
|
|
3
3
|
"cell.set-blank": "علامت گذاری به عنوان خالی",
|
|
4
4
|
"cell.set-not-blank": "علامت گذاری به عنوان غیر خالی",
|
|
5
5
|
"cell.toggle-direction": "جهت تایپ - کلیک برای تغییر",
|
|
6
|
+
"cell.tile.location": "({{x}}، {{y}}) کاشی: صفحه",
|
|
6
7
|
"common.blanks": "خالی",
|
|
7
8
|
"common.clear": "پاک کردن",
|
|
8
9
|
"common.close": "بستن",
|
|
9
10
|
"common.consonants": "حروف صامت",
|
|
10
11
|
"common.loading": "در حال بارگزاری",
|
|
12
|
+
"common.next": "بعدی",
|
|
11
13
|
"common.points": "امتیازات",
|
|
14
|
+
"common.previous": "قبلی",
|
|
12
15
|
"common.tiles": "کاشی ها",
|
|
13
16
|
"common.two-letter-tiles": "دو حرفی",
|
|
14
17
|
"common.vowels": "حروف مصوت",
|
|
@@ -19,6 +22,7 @@
|
|
|
19
22
|
"dictionary.empty-state.not-allowed": "این کلمه مجاز نیست.",
|
|
20
23
|
"dictionary.empty-state.uninitialized": "معنی لغت اینجا نمایش داده خواهد شد.",
|
|
21
24
|
"dictionary.input.placeholder": "جستجو در فرهنگ لغت ...",
|
|
25
|
+
"dictionary.input.title": "کلمات جدا شده با کاما",
|
|
22
26
|
"empty-state.error": "خطا",
|
|
23
27
|
"empty-state.info": "اطلاعات",
|
|
24
28
|
"empty-state.success": "حله!",
|
|
@@ -37,6 +41,7 @@
|
|
|
37
41
|
"keyMap.rack.insert-blank": "وارد کردن کاشی خالی (دکمه اسپیس)",
|
|
38
42
|
"menu": "منو",
|
|
39
43
|
"rack.placeholder": "لیستحرف",
|
|
44
|
+
"rack.tile.location": "({{index}}) کاشی: طاقچه",
|
|
40
45
|
"remaining-tiles": "کاشی های باقی مانده",
|
|
41
46
|
"results": "نتایج",
|
|
42
47
|
"results.empty-state.no-filtered-results": "پاسخی یافت نشد.",
|
|
@@ -44,6 +49,7 @@
|
|
|
44
49
|
"results.empty-state.outdated": "نتایج به روز نیستند، برای بروز رسانی کلیک کنید.",
|
|
45
50
|
"results.empty-state.uninitialized": "کلمات تولید شده از حروف شما اینجا نمایش داده خواهد شد.",
|
|
46
51
|
"results.input.placeholder": "جستجو در نتایج (RegExp)",
|
|
52
|
+
"results.insert": "وارد کردن",
|
|
47
53
|
"results.solve": "حل کن",
|
|
48
54
|
"settings": "تنظیمات",
|
|
49
55
|
"settings.autoGroupTiles": "کاشی های باقی مانده ی طاقچه را کنار هم قرار بده",
|
package/src/i18n/fr.json
CHANGED
|
@@ -2,13 +2,16 @@
|
|
|
2
2
|
"cell.filter-cell": "Destination cible - cliquer pour changer",
|
|
3
3
|
"cell.set-blank": "Marquer comme vide",
|
|
4
4
|
"cell.set-not-blank": "Marquer comme non vide",
|
|
5
|
+
"cell.tile.location": "Plateau: la case ({{x}}, {{y}})",
|
|
5
6
|
"cell.toggle-direction": "Direction d'écriture - cliquer pour changer",
|
|
6
7
|
"common.blanks": "Cases vides",
|
|
7
8
|
"common.clear": "Effacer",
|
|
8
9
|
"common.close": "Fermer",
|
|
9
10
|
"common.consonants": "Consonnes",
|
|
10
11
|
"common.loading": "Chargement",
|
|
12
|
+
"common.next": "Suivant",
|
|
11
13
|
"common.points": "Points",
|
|
14
|
+
"common.previous": "Précédent",
|
|
12
15
|
"common.tiles": "Cases",
|
|
13
16
|
"common.two-letter-tiles": "Deux lettres",
|
|
14
17
|
"common.vowels": "Voyelles",
|
|
@@ -19,6 +22,7 @@
|
|
|
19
22
|
"dictionary.empty-state.not-allowed": "Ce mot n'est pas pas acceptable.",
|
|
20
23
|
"dictionary.empty-state.uninitialized": "La définition dictionaire du dernier mot surligné sera affichée ici.",
|
|
21
24
|
"dictionary.input.placeholder": "Rechercher dans le dictionnaire...",
|
|
25
|
+
"dictionary.input.title": "Mots séparées par des virgules",
|
|
22
26
|
"empty-state.error": "Erreur",
|
|
23
27
|
"empty-state.info": "Info",
|
|
24
28
|
"empty-state.success": "Ouais!",
|
|
@@ -37,6 +41,7 @@
|
|
|
37
41
|
"keyMap.rack.insert-blank": "Inserer une case vide (spacebar)",
|
|
38
42
|
"menu": "Menu",
|
|
39
43
|
"rack.placeholder": "Lettres",
|
|
44
|
+
"rack.tile.location": "Chevalet: la case ({{index}})",
|
|
40
45
|
"remaining-tiles": "Cases restantes",
|
|
41
46
|
"results": "Résultats",
|
|
42
47
|
"results.empty-state.no-filtered-results": "Aucun résultat ne correspond à cette requête",
|
|
@@ -44,6 +49,7 @@
|
|
|
44
49
|
"results.empty-state.outdated": "Les résultats sont dépassé. Cliquer ci-dessous pour mettre à jour.",
|
|
45
50
|
"results.empty-state.uninitialized": "Les mots générés à partir de vos lettres seront affichés ici.",
|
|
46
51
|
"results.input.placeholder": "Rechercher les résultats... (RegExp)",
|
|
52
|
+
"results.insert": "Inserer",
|
|
47
53
|
"results.solve": "Résoudre",
|
|
48
54
|
"settings": "Options",
|
|
49
55
|
"settings.autoGroupTiles": "Grouper les cases restantes",
|
package/src/i18n/pl.json
CHANGED
|
@@ -2,13 +2,16 @@
|
|
|
2
2
|
"cell.filter-cell": "Miejsce docelowe - kliknij aby zmienić",
|
|
3
3
|
"cell.set-blank": "Oznacz jako blank",
|
|
4
4
|
"cell.set-not-blank": "Oznacz jako nie blank",
|
|
5
|
+
"cell.tile.location": "Plansza: płytka ({{x}}, {{y}})",
|
|
5
6
|
"cell.toggle-direction": "Kierunek wpisywania - kliknij aby zmienić",
|
|
6
7
|
"common.blanks": "Blanki",
|
|
7
8
|
"common.clear": "Wyczyść",
|
|
8
9
|
"common.close": "Zamknij",
|
|
9
10
|
"common.consonants": "Spółgłoski",
|
|
10
11
|
"common.loading": "Ładowanie",
|
|
12
|
+
"common.next": "Następne",
|
|
11
13
|
"common.points": "Punkty",
|
|
14
|
+
"common.previous": "Poprzednie",
|
|
12
15
|
"common.tiles": "Płytki",
|
|
13
16
|
"common.two-letter-tiles": "Dwuliterowe",
|
|
14
17
|
"common.vowels": "Samogłoski",
|
|
@@ -19,6 +22,7 @@
|
|
|
19
22
|
"dictionary.empty-state.not-allowed": "To słowo nie jest dopuszczalne w grach.",
|
|
20
23
|
"dictionary.empty-state.uninitialized": "Tu zostanie wyświetlona słownikowa definicja ostatnio podświetlonego słowa.",
|
|
21
24
|
"dictionary.input.placeholder": "Szukaj w słowniku...",
|
|
25
|
+
"dictionary.input.title": "Słowa rozdzielone przecinkiem",
|
|
22
26
|
"empty-state.error": "Błąd",
|
|
23
27
|
"empty-state.info": "Info",
|
|
24
28
|
"empty-state.success": "Hurra!",
|
|
@@ -37,6 +41,7 @@
|
|
|
37
41
|
"keyMap.rack.insert-blank": "Wstaw blanka (spacja)",
|
|
38
42
|
"menu": "Menu",
|
|
39
43
|
"rack.placeholder": "Literki",
|
|
44
|
+
"rack.tile.location": "Stojak: płytka ({{index}})",
|
|
40
45
|
"remaining-tiles": "Pozostałe płytki",
|
|
41
46
|
"results": "Wyniki",
|
|
42
47
|
"results.empty-state.no-filtered-results": "Żaden wynik nie pasuje do tej kwerendy.",
|
|
@@ -44,6 +49,7 @@
|
|
|
44
49
|
"results.empty-state.outdated": "Wyniki są nieaktualne. Kliknij poniżej, aby zaktualizować.",
|
|
45
50
|
"results.empty-state.uninitialized": "Tu zostaną wyświetlone słowa wygenerowane z Twoich liter.",
|
|
46
51
|
"results.input.placeholder": "Szukaj rozwiązania... (RegExp)",
|
|
52
|
+
"results.insert": "Wstaw",
|
|
47
53
|
"results.solve": "Rozwiąż",
|
|
48
54
|
"settings": "Opcje",
|
|
49
55
|
"settings.autoGroupTiles": "Grupuj pozostałe płytki",
|
package/src/icons/ArrowDown.svg
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- https://icons.getbootstrap.com/icons/arrow-down/ -->
|
|
2
2
|
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
-
<path d="M8 1a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L7.5 13.293V1.5A.5.5 0 0 1 8 1z" fill="currentColor"
|
|
3
|
+
<path d="M8 1a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L7.5 13.293V1.5A.5.5 0 0 1 8 1z" fill="currentColor" />
|
|
4
4
|
</svg>
|
package/src/icons/ArrowLeft.svg
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- https://icons.getbootstrap.com/icons/arrow-left/ -->
|
|
2
2
|
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
-
<path d="M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8z" fill="currentColor"
|
|
3
|
+
<path d="M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8z" fill="currentColor" />
|
|
4
4
|
</svg>
|
package/src/icons/ArrowRight.svg
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- https://icons.getbootstrap.com/icons/arrow-right/ -->
|
|
2
2
|
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
-
<path d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8z" fill="currentColor"
|
|
3
|
+
<path d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8z" fill="currentColor" />
|
|
4
4
|
</svg>
|
package/src/icons/ArrowUp.svg
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- https://icons.getbootstrap.com/icons/arrow-up/ -->
|
|
2
2
|
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
-
<path d="M8 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L7.5 2.707V14.5a.5.5 0 0 0 .5.5z" fill="currentColor"
|
|
3
|
+
<path d="M8 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L7.5 2.707V14.5a.5.5 0 0 0 .5.5z" fill="currentColor" />
|
|
4
4
|
</svg>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- https://icons.getbootstrap.com/icons/chevron-down/ -->
|
|
2
2
|
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
-
<path
|
|
3
|
+
<path d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z" fill="currentColor" />
|
|
4
4
|
</svg>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- https://icons.getbootstrap.com/icons/chevron-left/ -->
|
|
2
2
|
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
-
<path d="M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z" fill="currentColor"
|
|
3
|
+
<path d="M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z" fill="currentColor" />
|
|
4
4
|
</svg>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- https://icons.getbootstrap.com/icons/chevron-right/ -->
|
|
2
2
|
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
-
<path d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z" fill="currentColor"
|
|
3
|
+
<path d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z" fill="currentColor" />
|
|
4
4
|
</svg>
|
package/src/icons/Flag.svg
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- https://icons.getbootstrap.com/icons/flag
|
|
1
|
+
<!-- https://icons.getbootstrap.com/icons/flag/ -->
|
|
2
2
|
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
-
<path d="M14.778.085A.5.5 0 0 1 15 .5V8a.5.5 0 0 1-.314.464L14.5 8l.186.464-.003.001-.006.003-.023.009a12.435 12.435 0 0 1-.397.15c-.264.095-.631.223-1.047.35-.816.252-1.879.523-2.71.523-.847 0-1.548-.28-2.158-.525l-.028-.01C7.68 8.71 7.14 8.5 6.5 8.5c-.7 0-1.638.23-2.437.477A19.626 19.626 0 0 0 3 9.342V15.5a.5.5 0 0 1-1 0V.5a.5.5 0 0 1 1 0v.282c.226-.079.496-.17.79-.26C4.606.272 5.67 0 6.5 0c.84 0 1.524.277 2.121.519l.043.018C9.286.788 9.828 1 10.5 1c.7 0 1.638-.23 2.437-.477a19.587 19.587 0 0 0 1.349-.476l.019-.007.004-.002h.
|
|
3
|
+
<path d="M14.778.085A.5.5 0 0 1 15 .5V8a.5.5 0 0 1-.314.464L14.5 8l.186.464-.003.001-.006.003-.023.009a12.435 12.435 0 0 1-.397.15c-.264.095-.631.223-1.047.35-.816.252-1.879.523-2.71.523-.847 0-1.548-.28-2.158-.525l-.028-.01C7.68 8.71 7.14 8.5 6.5 8.5c-.7 0-1.638.23-2.437.477A19.626 19.626 0 0 0 3 9.342V15.5a.5.5 0 0 1-1 0V.5a.5.5 0 0 1 1 0v.282c.226-.079.496-.17.79-.26C4.606.272 5.67 0 6.5 0c.84 0 1.524.277 2.121.519l.043.018C9.286.788 9.828 1 10.5 1c.7 0 1.638-.23 2.437-.477a19.587 19.587 0 0 0 1.349-.476l.019-.007.004-.002h.001M14 1.221c-.22.078-.48.167-.766.255-.81.252-1.872.523-2.734.523-.886 0-1.592-.286-2.203-.534l-.008-.003C7.662 1.21 7.139 1 6.5 1c-.669 0-1.606.229-2.415.478A21.294 21.294 0 0 0 3 1.845v6.433c.22-.078.48-.167.766-.255C4.576 7.77 5.638 7.5 6.5 7.5c.847 0 1.548.28 2.158.525l.028.01C9.32 8.29 9.86 8.5 10.5 8.5c.668 0 1.606-.229 2.415-.478A21.317 21.317 0 0 0 14 7.655V1.222z" fill="currentColor" />
|
|
4
4
|
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<!-- https://icons.getbootstrap.com/icons/flag-fill/ -->
|
|
2
|
+
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
+
<path d="M14.778.085A.5.5 0 0 1 15 .5V8a.5.5 0 0 1-.314.464L14.5 8l.186.464-.003.001-.006.003-.023.009a12.435 12.435 0 0 1-.397.15c-.264.095-.631.223-1.047.35-.816.252-1.879.523-2.71.523-.847 0-1.548-.28-2.158-.525l-.028-.01C7.68 8.71 7.14 8.5 6.5 8.5c-.7 0-1.638.23-2.437.477A19.626 19.626 0 0 0 3 9.342V15.5a.5.5 0 0 1-1 0V.5a.5.5 0 0 1 1 0v.282c.226-.079.496-.17.79-.26C4.606.272 5.67 0 6.5 0c.84 0 1.524.277 2.121.519l.043.018C9.286.788 9.828 1 10.5 1c.7 0 1.638-.23 2.437-.477a19.587 19.587 0 0 0 1.349-.476l.019-.007.004-.002h.001" fill="currentColor" />
|
|
4
|
+
</svg>
|
package/src/icons/List.svg
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<!-- https://icons.getbootstrap.com/icons/list/ -->
|
|
2
2
|
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" >
|
|
3
|
-
<path
|
|
3
|
+
<path d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z" fill="currentColor" />
|
|
4
4
|
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<!-- https://icons.getbootstrap.com/icons/square/ -->
|
|
2
|
+
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
+
<path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z" fill="currentColor" />
|
|
4
|
+
</svg>
|
package/src/icons/index.ts
CHANGED
|
@@ -19,6 +19,7 @@ export { default as Eraser } from './Eraser.svg';
|
|
|
19
19
|
export { default as ExclamationSquareFill } from './ExclamationSquareFill.svg';
|
|
20
20
|
export { default as ExclamationTriangleFill } from './ExclamationTriangleFill.svg';
|
|
21
21
|
export { default as Flag } from './Flag.svg';
|
|
22
|
+
export { default as FlagFill } from './FlagFill.svg';
|
|
22
23
|
export { default as FlagEs } from './FlagEs.svg';
|
|
23
24
|
export { default as FlagFa } from './FlagFa.svg';
|
|
24
25
|
export { default as FlagFr } from './FlagFr.svg';
|
|
@@ -34,4 +35,6 @@ export { default as Sack } from './Sack.svg';
|
|
|
34
35
|
export { default as Search } from './Search.svg';
|
|
35
36
|
export { default as SortDown } from './SortDown.svg';
|
|
36
37
|
export { default as SortUp } from './SortUp.svg';
|
|
38
|
+
export { default as Square } from './Square.svg';
|
|
39
|
+
export { default as SquareFill } from './SquareFill.svg';
|
|
37
40
|
export { default as Star } from './Star.svg';
|
|
@@ -28,15 +28,21 @@ const Menu: FunctionComponent<Props> = ({
|
|
|
28
28
|
|
|
29
29
|
return (
|
|
30
30
|
<Modal className={className} isOpen={isOpen} title={translate('menu')} onClose={onClose}>
|
|
31
|
-
<Button
|
|
31
|
+
<Button
|
|
32
|
+
aria-label={translate('remaining-tiles')}
|
|
33
|
+
className={styles.button}
|
|
34
|
+
Icon={Sack}
|
|
35
|
+
onClick={onShowRemainingTiles}
|
|
36
|
+
>
|
|
32
37
|
{translate('remaining-tiles')}
|
|
33
38
|
</Button>
|
|
34
39
|
|
|
35
|
-
<Button className={styles.button} Icon={CardChecklist} onClick={onShowWords}>
|
|
40
|
+
<Button aria-label={translate('words')} className={styles.button} Icon={CardChecklist} onClick={onShowWords}>
|
|
36
41
|
{translate('words')}
|
|
37
42
|
</Button>
|
|
38
43
|
|
|
39
44
|
<Button.Link
|
|
45
|
+
aria-label={translate('github')}
|
|
40
46
|
className={styles.button}
|
|
41
47
|
href={GITHUB_PROJECT_URL}
|
|
42
48
|
Icon={Github}
|
|
@@ -46,7 +52,7 @@ const Menu: FunctionComponent<Props> = ({
|
|
|
46
52
|
{translate('github')}
|
|
47
53
|
</Button.Link>
|
|
48
54
|
|
|
49
|
-
<Button className={styles.button} Icon={Cog} onClick={onShowSettings}>
|
|
55
|
+
<Button aria-label={translate('settings')} className={styles.button} Icon={Cog} onClick={onShowSettings}>
|
|
50
56
|
{translate('settings')}
|
|
51
57
|
</Button>
|
|
52
58
|
</Modal>
|
|
@@ -45,7 +45,6 @@ const AutoGroupTilesSetting: FunctionComponent<Props> = ({ className, disabled }
|
|
|
45
45
|
checked={value === parseValue(option.value)}
|
|
46
46
|
className={styles.option}
|
|
47
47
|
disabled={disabled}
|
|
48
|
-
id="autoGroupTiles"
|
|
49
48
|
key={option.value}
|
|
50
49
|
name="autoGroupTiles"
|
|
51
50
|
value={option.value}
|
|
@@ -1,17 +1,8 @@
|
|
|
1
1
|
@import 'styles/mixins';
|
|
2
2
|
|
|
3
3
|
.option {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
&:last-child {
|
|
7
|
-
margin-bottom: 0;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
&:hover,
|
|
11
|
-
&.checked {
|
|
12
|
-
.flag {
|
|
13
|
-
box-shadow: var(--box-shadow);
|
|
14
|
-
}
|
|
4
|
+
& + & {
|
|
5
|
+
margin-top: var(--spacing--m);
|
|
15
6
|
}
|
|
16
7
|
}
|
|
17
8
|
|
|
@@ -19,10 +10,10 @@
|
|
|
19
10
|
display: flex;
|
|
20
11
|
align-items: center;
|
|
21
12
|
gap: var(--spacing--l);
|
|
22
|
-
font-family:
|
|
13
|
+
font-family: var(--font--family), sans-serif;
|
|
23
14
|
|
|
24
15
|
&.fa {
|
|
25
|
-
font-family:
|
|
16
|
+
font-family: var(--font--family--arabic), var(--font--family), sans-serif;
|
|
26
17
|
}
|
|
27
18
|
}
|
|
28
19
|
|
|
@@ -30,17 +21,16 @@
|
|
|
30
21
|
$height: 32px;
|
|
31
22
|
|
|
32
23
|
height: $height;
|
|
33
|
-
box-shadow: var(--box-shadow--null);
|
|
34
24
|
transition: var(--transition);
|
|
35
25
|
|
|
36
|
-
&.
|
|
37
|
-
$aspect-ratio: 1.
|
|
26
|
+
&.de {
|
|
27
|
+
$aspect-ratio: 1.6;
|
|
38
28
|
|
|
39
29
|
width: $height * $aspect-ratio;
|
|
40
30
|
}
|
|
41
31
|
|
|
42
|
-
&.
|
|
43
|
-
$aspect-ratio: 1.
|
|
32
|
+
&.es {
|
|
33
|
+
$aspect-ratio: 1.5;
|
|
44
34
|
|
|
45
35
|
width: $height * $aspect-ratio;
|
|
46
36
|
}
|
|
@@ -51,6 +41,12 @@
|
|
|
51
41
|
width: $height * $aspect-ratio;
|
|
52
42
|
}
|
|
53
43
|
|
|
44
|
+
&.fr {
|
|
45
|
+
$aspect-ratio: 1.6;
|
|
46
|
+
|
|
47
|
+
width: $height * $aspect-ratio;
|
|
48
|
+
}
|
|
49
|
+
|
|
54
50
|
&.gb {
|
|
55
51
|
$aspect-ratio: 2;
|
|
56
52
|
|
|
@@ -68,10 +64,4 @@
|
|
|
68
64
|
|
|
69
65
|
width: $height * $aspect-ratio;
|
|
70
66
|
}
|
|
71
|
-
|
|
72
|
-
&.de {
|
|
73
|
-
$aspect-ratio: 1.6;
|
|
74
|
-
|
|
75
|
-
width: $height * $aspect-ratio;
|
|
76
|
-
}
|
|
77
67
|
}
|
package/src/pages/_app.tsx
CHANGED
|
@@ -3,6 +3,7 @@ import Head from 'next/head';
|
|
|
3
3
|
import { FunctionComponent } from 'react';
|
|
4
4
|
import { Provider } from 'react-redux';
|
|
5
5
|
|
|
6
|
+
import { SeoMessage } from 'components';
|
|
6
7
|
import { createAppStore } from 'state';
|
|
7
8
|
|
|
8
9
|
import 'styles/global.scss';
|
|
@@ -10,10 +11,16 @@ import 'styles/global.scss';
|
|
|
10
11
|
const DESCRIPTION =
|
|
11
12
|
// eslint-disable-next-line max-len
|
|
12
13
|
'Scrabble Solver 2 - Free and open-source analysis tool for Scrabble and Literaki. Quickly find top scoring words using given letters and board state. Available in English, French, German, Polish & Spanish.';
|
|
14
|
+
|
|
13
15
|
const KEYWORDS = [
|
|
16
|
+
'Scrabble Solver',
|
|
14
17
|
'Scrabble',
|
|
15
18
|
'Solver',
|
|
19
|
+
'Board',
|
|
16
20
|
'Open-source',
|
|
21
|
+
'Open',
|
|
22
|
+
'Source',
|
|
23
|
+
'Word',
|
|
17
24
|
'Finder',
|
|
18
25
|
'Cheating',
|
|
19
26
|
'Literaki',
|
|
@@ -22,6 +29,7 @@ const KEYWORDS = [
|
|
|
22
29
|
'Français',
|
|
23
30
|
'Deutsch',
|
|
24
31
|
'Polski',
|
|
32
|
+
'فارسی',
|
|
25
33
|
'Español',
|
|
26
34
|
'SOWPODS',
|
|
27
35
|
'TWL06',
|
|
@@ -55,11 +63,7 @@ const App: FunctionComponent<AppProps> = ({ Component, pageProps }) => (
|
|
|
55
63
|
</Head>
|
|
56
64
|
|
|
57
65
|
<Provider store={store}>
|
|
58
|
-
<
|
|
59
|
-
Scrabble Solver 2 is a free and open-source analysis tool for Scrabble and Literaki. Quickly find top scoring
|
|
60
|
-
words using given letters and board state. Available in English, French, German, Polish & Spanish. Source code
|
|
61
|
-
is available on GitHub - contributions are welcome!
|
|
62
|
-
</p>
|
|
66
|
+
<SeoMessage />
|
|
63
67
|
<Component {...pageProps} />
|
|
64
68
|
</Provider>
|
|
65
69
|
</>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { scrabble } from '@scrabble-solver/configs';
|
|
2
|
+
import { COMMA_ARABIC, COMMA_LATIN } from '@scrabble-solver/constants';
|
|
2
3
|
import { dictionaries } from '@scrabble-solver/dictionaries';
|
|
3
4
|
import logger from '@scrabble-solver/logger';
|
|
4
5
|
import { isLocale, Locale } from '@scrabble-solver/types';
|
|
@@ -54,7 +55,8 @@ const parseRequest = (request: NextApiRequest): RequestData => {
|
|
|
54
55
|
const words = Array.from(
|
|
55
56
|
new Set(
|
|
56
57
|
word
|
|
57
|
-
.
|
|
58
|
+
.replaceAll(COMMA_ARABIC, COMMA_LATIN)
|
|
59
|
+
.split(COMMA_LATIN)
|
|
58
60
|
.map((part) => part.trim())
|
|
59
61
|
.filter(Boolean),
|
|
60
62
|
),
|
package/src/pages/index.tsx
CHANGED
|
@@ -38,6 +38,7 @@ const Index: FunctionComponent<Props> = ({ version }) => {
|
|
|
38
38
|
const [navRef, { height: navHeight }] = useMeasure<HTMLDivElement>();
|
|
39
39
|
const solverHeight = indexHeight - navHeight;
|
|
40
40
|
const solverWidth = indexWidth;
|
|
41
|
+
const [isClient, setIsClient] = useState(false);
|
|
41
42
|
|
|
42
43
|
const handleClear = () => {
|
|
43
44
|
dispatch(reset());
|
|
@@ -55,6 +56,7 @@ const Index: FunctionComponent<Props> = ({ version }) => {
|
|
|
55
56
|
useLocalStorage();
|
|
56
57
|
|
|
57
58
|
useEffectOnce(() => {
|
|
59
|
+
setIsClient(true);
|
|
58
60
|
dispatch(initialize());
|
|
59
61
|
|
|
60
62
|
globalThis.setTimeout(() => {
|
|
@@ -74,6 +76,10 @@ const Index: FunctionComponent<Props> = ({ version }) => {
|
|
|
74
76
|
}
|
|
75
77
|
}, []);
|
|
76
78
|
|
|
79
|
+
if (!isClient) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
|
|
77
83
|
return (
|
|
78
84
|
<>
|
|
79
85
|
<SvgFontFix />
|
package/src/parameters/index.ts
CHANGED
|
@@ -6,6 +6,8 @@ export const BREAKPOINTS = {
|
|
|
6
6
|
xl: 1400,
|
|
7
7
|
};
|
|
8
8
|
|
|
9
|
+
export const EASE_OUT_CUBIC = 'cubic-bezier(0.33, 1, 0.68, 1)'; // https://easings.net/#easeOutCubic
|
|
10
|
+
|
|
9
11
|
export const GITHUB_PROJECT_URL = 'https://github.com/kamilmielnik/scrabble-solver';
|
|
10
12
|
|
|
11
13
|
export const INITIALIZATION_DURATION = 100;
|
|
@@ -72,3 +74,11 @@ export const REMAINING_TILES_TILE_SIZE = 50;
|
|
|
72
74
|
export const RESULTS_HEADER_HEIGHT = 34;
|
|
73
75
|
export const RESULTS_ITEM_HEIGHT = 40;
|
|
74
76
|
export const RESULTS_INPUT_HEIGHT = 40;
|
|
77
|
+
|
|
78
|
+
export const TILE_APPEAR_DURATION = 200;
|
|
79
|
+
|
|
80
|
+
export const TILE_APPEAR_KEYFRAMES = [
|
|
81
|
+
{ transform: 'translateY(0)', zIndex: 2 },
|
|
82
|
+
{ transform: 'translateY(10%)', offset: 0.5, zIndex: 2 },
|
|
83
|
+
{ transform: 'translateY(0)', zIndex: 1 },
|
|
84
|
+
];
|