@scrabble-solver/scrabble-solver 2.8.8 → 2.8.10

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 (111) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +12 -12
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/cache/eslint/.cache_8dgz12 +1 -1
  5. package/.next/cache/next-server.js.nft.json +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/server-production/0.pack +0 -0
  9. package/.next/cache/webpack/server-production/index.pack +0 -0
  10. package/.next/next-server.js.nft.json +1 -1
  11. package/.next/prerender-manifest.json +1 -1
  12. package/.next/routes-manifest.json +1 -1
  13. package/.next/server/chunks/413.js +350 -73
  14. package/.next/server/chunks/429.js +2 -13
  15. package/.next/server/chunks/44.js +802 -0
  16. package/.next/server/chunks/515.js +767 -322
  17. package/.next/server/chunks/911.js +77 -25
  18. package/.next/server/middleware-build-manifest.js +1 -1
  19. package/.next/server/pages/404.html +2 -2
  20. package/.next/server/pages/404.js.nft.json +1 -1
  21. package/.next/server/pages/500.html +2 -2
  22. package/.next/server/pages/_app.js.nft.json +1 -1
  23. package/.next/server/pages/_document.js.nft.json +1 -1
  24. package/.next/server/pages/_error.js.nft.json +1 -1
  25. package/.next/server/pages/api/solve.js +226 -927
  26. package/.next/server/pages/api/solve.js.nft.json +1 -1
  27. package/.next/server/pages/api/verify.js +217 -0
  28. package/.next/server/pages/api/verify.js.nft.json +1 -0
  29. package/.next/server/pages/index.html +3 -3
  30. package/.next/server/pages/index.js +8 -2
  31. package/.next/server/pages/index.js.nft.json +1 -1
  32. package/.next/server/pages/index.json +1 -1
  33. package/.next/server/pages-manifest.json +1 -0
  34. package/.next/static/A8A_Lmg8cM-Bkf-Jo1CLh/_buildManifest.js +1 -0
  35. package/.next/static/{z3J3qmq1nazbDv_ENIkCo → A8A_Lmg8cM-Bkf-Jo1CLh}/_ssgManifest.js +0 -0
  36. package/.next/static/chunks/317-95ab9051449362fa.js +1 -0
  37. package/.next/static/chunks/758-eff80059a1365d5d.js +1 -0
  38. package/.next/static/chunks/pages/{404-8eb3ba4f0ba17e08.js → 404-90c624da3c83fd17.js} +1 -1
  39. package/.next/static/chunks/pages/_app-0e358b5622cf9e66.js +1 -0
  40. package/.next/static/chunks/pages/index-0cc5e6eda5adac73.js +1 -0
  41. package/.next/static/css/9ac903004135f4b1.css +1 -0
  42. package/.next/static/css/{cdbc9e0afcff5473.css → ad2a08918868cad8.css} +1 -1
  43. package/.next/trace +42 -41
  44. package/package.json +12 -12
  45. package/src/components/Badge/Badge.module.scss +13 -0
  46. package/src/components/Badge/Badge.tsx +15 -0
  47. package/src/components/Badge/index.ts +1 -0
  48. package/src/components/Board/Board.tsx +4 -2
  49. package/src/components/Board/BoardPure.tsx +25 -5
  50. package/src/components/Board/hooks/useGrid.ts +212 -91
  51. package/src/components/Dictionary/Dictionary.tsx +8 -1
  52. package/src/components/NavButtons/NavButtons.tsx +33 -14
  53. package/src/components/Rack/Rack.tsx +51 -11
  54. package/src/components/Rack/RackTile.tsx +33 -16
  55. package/src/components/RemainingTiles/RemainingTiles.module.scss +8 -7
  56. package/src/components/RemainingTiles/RemainingTiles.tsx +13 -4
  57. package/src/components/Results/Results.tsx +19 -3
  58. package/src/components/Sidebar/Sidebar.tsx +2 -2
  59. package/src/components/Sidebar/components/Section/Section.module.scss +0 -1
  60. package/src/components/Sidebar/components/Section/Section.tsx +1 -1
  61. package/src/components/SquareButton/Link.tsx +1 -1
  62. package/src/components/SquareButton/SquareButton.module.scss +5 -0
  63. package/src/components/Tile/Tile.module.scss +4 -0
  64. package/src/components/Tile/Tile.tsx +13 -4
  65. package/src/components/Tile/TilePure.tsx +3 -4
  66. package/src/components/Words/Words.module.scss +35 -0
  67. package/src/components/Words/Words.tsx +57 -0
  68. package/src/components/Words/index.ts +1 -0
  69. package/src/components/index.ts +2 -0
  70. package/src/i18n/de.json +4 -1
  71. package/src/i18n/en.json +4 -1
  72. package/src/i18n/es.json +4 -1
  73. package/src/i18n/fr.json +4 -1
  74. package/src/i18n/pl.json +4 -1
  75. package/src/icons/BookHalf.svg +4 -0
  76. package/src/icons/Check.svg +4 -0
  77. package/src/icons/Cross.svg +2 -2
  78. package/src/icons/CrossFill.svg +4 -0
  79. package/src/icons/index.ts +3 -0
  80. package/src/lib/extractCharacters.ts +26 -0
  81. package/src/lib/extractInputValue.ts +17 -0
  82. package/src/lib/index.ts +2 -0
  83. package/src/lib/isCtrl.ts +1 -1
  84. package/src/lib/memoize.ts +15 -1
  85. package/src/pages/api/solve.ts +3 -4
  86. package/src/pages/api/verify.ts +71 -0
  87. package/src/pages/index.tsx +5 -0
  88. package/src/sdk/fetchJson.ts +36 -0
  89. package/src/sdk/findWordDefinitions.ts +4 -3
  90. package/src/sdk/index.ts +1 -0
  91. package/src/sdk/solve.ts +8 -7
  92. package/src/sdk/verify.ts +23 -0
  93. package/src/state/rootReducer.ts +2 -0
  94. package/src/state/sagas.ts +35 -8
  95. package/src/state/selectors.ts +17 -1
  96. package/src/state/slices/dictionaryInitialState.ts +10 -2
  97. package/src/state/slices/dictionarySlice.ts +10 -16
  98. package/src/state/slices/index.ts +2 -0
  99. package/src/state/slices/rackSlice.ts +7 -0
  100. package/src/state/slices/solveInitialState.ts +14 -2
  101. package/src/state/slices/solveSlice.ts +7 -4
  102. package/src/state/slices/verifyInitialState.ts +12 -0
  103. package/src/state/slices/verifySlice.ts +31 -0
  104. package/src/styles/variables.scss +2 -1
  105. package/src/types/index.ts +6 -1
  106. package/.next/static/chunks/615-d258f6c528c18622.js +0 -1
  107. package/.next/static/chunks/758-f333b1dcdb941547.js +0 -1
  108. package/.next/static/chunks/pages/_app-4a663fd3d5ca4524.js +0 -1
  109. package/.next/static/chunks/pages/index-1a9826d740cc8830.js +0 -1
  110. package/.next/static/css/180c6c26317ac90f.css +0 -1
  111. package/.next/static/z3J3qmq1nazbDv_ENIkCo/_buildManifest.js +0 -1
@@ -2,6 +2,17 @@ exports.id = 515;
2
2
  exports.ids = [515];
3
3
  exports.modules = {
4
4
 
5
+ /***/ 52392:
6
+ /***/ ((module) => {
7
+
8
+ // Exports
9
+ module.exports = {
10
+ "badge": "Badge_badge__YL9Gr"
11
+ };
12
+
13
+
14
+ /***/ }),
15
+
5
16
  /***/ 65585:
6
17
  /***/ ((module) => {
7
18
 
@@ -239,9 +250,9 @@ module.exports = {
239
250
 
240
251
  // Exports
241
252
  module.exports = {
242
- "group": "RemainingTiles_group___8ILF",
243
253
  "title": "RemainingTiles_title__QQYTv",
244
- "content": "RemainingTiles_content__5cnQv"
254
+ "content": "RemainingTiles_content__5cnQv",
255
+ "badge": "RemainingTiles_badge__lyaBc"
245
256
  };
246
257
 
247
258
 
@@ -455,6 +466,56 @@ module.exports = {
455
466
  };
456
467
 
457
468
 
469
+ /***/ }),
470
+
471
+ /***/ 8258:
472
+ /***/ ((module) => {
473
+
474
+ // Exports
475
+ module.exports = {
476
+ "title": "Words_title__npWWH",
477
+ "badge": "Words_badge__h_UnJ",
478
+ "word": "Words_word___UPK8",
479
+ "invalid": "Words_invalid__MJPnf",
480
+ "valid": "Words_valid__MKPTu",
481
+ "icon": "Words_icon__Ho1Gk"
482
+ };
483
+
484
+
485
+ /***/ }),
486
+
487
+ /***/ 99874:
488
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
489
+
490
+ "use strict";
491
+
492
+ // EXPORTS
493
+ __webpack_require__.d(__webpack_exports__, {
494
+ "Z": () => (/* reexport */ Badge_Badge)
495
+ });
496
+
497
+ // EXTERNAL MODULE: external "react/jsx-runtime"
498
+ var jsx_runtime_ = __webpack_require__(20997);
499
+ // EXTERNAL MODULE: external "classnames"
500
+ var external_classnames_ = __webpack_require__(59003);
501
+ var external_classnames_default = /*#__PURE__*/__webpack_require__.n(external_classnames_);
502
+ // EXTERNAL MODULE: ./src/components/Badge/Badge.module.scss
503
+ var Badge_module = __webpack_require__(52392);
504
+ var Badge_module_default = /*#__PURE__*/__webpack_require__.n(Badge_module);
505
+ ;// CONCATENATED MODULE: ./src/components/Badge/Badge.tsx
506
+
507
+
508
+
509
+ const Badge = ({ children , className })=>/*#__PURE__*/ jsx_runtime_.jsx("div", {
510
+ className: external_classnames_default()((Badge_module_default()).badge, className),
511
+ children: children
512
+ });
513
+ /* harmony default export */ const Badge_Badge = (Badge);
514
+
515
+ ;// CONCATENATED MODULE: ./src/components/Badge/index.ts
516
+
517
+
518
+
458
519
  /***/ }),
459
520
 
460
521
  /***/ 52701:
@@ -479,18 +540,20 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([stat
479
540
  const Board = ({ cellSize , className , innerRef })=>{
480
541
  const rows = (0,state__WEBPACK_IMPORTED_MODULE_1__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_1__/* .selectRowsWithCandidate */ .ZA);
481
542
  const board = (0,state__WEBPACK_IMPORTED_MODULE_1__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_1__/* .selectBoard */ .ZO);
482
- const [{ lastDirection , refs }, { onDirectionToggle , onFocus , onKeyDown }] = (0,_hooks__WEBPACK_IMPORTED_MODULE_3__/* .useGrid */ .N)(rows);
543
+ const [{ direction , refs }, { onChange , onDirectionToggle , onFocus , onKeyDown , onPaste }] = (0,_hooks__WEBPACK_IMPORTED_MODULE_3__/* .useGrid */ .N)(rows);
483
544
  return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_BoardPure__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {
484
545
  className: className,
485
546
  cellSize: cellSize,
486
547
  center: board.center,
548
+ direction: direction,
487
549
  innerRef: innerRef,
488
- lastDirection: lastDirection,
489
550
  refs: refs,
490
551
  rows: rows,
552
+ onChange: onChange,
491
553
  onDirectionToggle: onDirectionToggle,
492
554
  onFocus: onFocus,
493
- onKeyDown: onKeyDown
555
+ onKeyDown: onKeyDown,
556
+ onPaste: onPaste
494
557
  });
495
558
  };
496
559
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Board);
@@ -524,16 +587,18 @@ _components__WEBPACK_IMPORTED_MODULE_3__ = (__webpack_async_dependencies__.then
524
587
 
525
588
 
526
589
 
527
- const BoardPure = ({ className , cellSize , center , innerRef , lastDirection , refs , rows , onDirectionToggle , onFocus , onKeyDown , })=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
590
+ const BoardPure = ({ className , cellSize , center , direction , innerRef , refs , rows , onChange , onDirectionToggle , onFocus , onKeyDown , onPaste , })=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
528
591
  className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_Board_module_scss__WEBPACK_IMPORTED_MODULE_4___default().board), className),
529
592
  ref: innerRef,
593
+ onChange: onChange,
530
594
  onKeyDown: onKeyDown,
595
+ onPaste: onPaste,
531
596
  children: rows.map((cells, y)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
532
597
  className: (_Board_module_scss__WEBPACK_IMPORTED_MODULE_4___default().row),
533
598
  children: cells.map((cell, x)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_components__WEBPACK_IMPORTED_MODULE_3__/* .Cell */ .b, {
534
599
  className: (_Board_module_scss__WEBPACK_IMPORTED_MODULE_4___default().cell),
535
600
  cell: cell,
536
- direction: lastDirection,
601
+ direction: direction,
537
602
  inputRef: refs[y][x],
538
603
  isCenter: center.x === x && center.y === y,
539
604
  size: cellSize,
@@ -605,7 +670,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
605
670
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
606
671
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6022);
607
672
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_3__);
608
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(92237);
673
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(75558);
609
674
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(51413);
610
675
  /* harmony import */ var _CellPure__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(80640);
611
676
  var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_5__, _CellPure__WEBPACK_IMPORTED_MODULE_6__]);
@@ -711,7 +776,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
711
776
  /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
712
777
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16689);
713
778
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
714
- /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(81245);
779
+ /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6942);
715
780
  /* harmony import */ var _Tile__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(54031);
716
781
  /* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(35588);
717
782
  /* harmony import */ var _Cell_module_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(89861);
@@ -917,17 +982,19 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
917
982
  /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
918
983
  /* harmony export */ });
919
984
  /* harmony import */ var _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7618);
920
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16689);
921
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
922
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6022);
923
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__);
924
- /* harmony import */ var react_use__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(69755);
925
- /* harmony import */ var react_use__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_use__WEBPACK_IMPORTED_MODULE_3__);
926
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(92237);
927
- /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(51413);
928
- /* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(95137);
929
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_5__]);
930
- state__WEBPACK_IMPORTED_MODULE_5__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
985
+ /* harmony import */ var _scrabble_solver_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34046);
986
+ /* harmony import */ var _scrabble_solver_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_scrabble_solver_types__WEBPACK_IMPORTED_MODULE_1__);
987
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16689);
988
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
989
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6022);
990
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_3__);
991
+ /* harmony import */ var react_use__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(69755);
992
+ /* harmony import */ var react_use__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_use__WEBPACK_IMPORTED_MODULE_4__);
993
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(75558);
994
+ /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(51413);
995
+ /* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(95137);
996
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_6__]);
997
+ state__WEBPACK_IMPORTED_MODULE_6__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
931
998
  /* eslint-disable max-lines, max-statements */
932
999
 
933
1000
 
@@ -935,22 +1002,24 @@ state__WEBPACK_IMPORTED_MODULE_5__ = (__webpack_async_dependencies__.then ? (awa
935
1002
 
936
1003
 
937
1004
 
1005
+
1006
+ const toggleDirection = (direction)=>direction === "vertical" ? "horizontal" : "vertical";
938
1007
  const useGrid = (rows)=>{
939
1008
  const height = rows.length;
940
1009
  const width = rows[0].length;
941
- const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useDispatch)();
942
- const config = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_5__/* .selectConfig */ .$o);
943
- const refs = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>(0,lib__WEBPACK_IMPORTED_MODULE_4__/* .createGridOf */ .DI)(width, height, ()=>(0,react__WEBPACK_IMPORTED_MODULE_1__.createRef)()), [
1010
+ const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useDispatch)();
1011
+ const config = (0,state__WEBPACK_IMPORTED_MODULE_6__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_6__/* .selectConfig */ .$o);
1012
+ const refs = (0,react__WEBPACK_IMPORTED_MODULE_2__.useMemo)(()=>(0,lib__WEBPACK_IMPORTED_MODULE_5__/* .createGridOf */ .DI)(width, height, ()=>(0,react__WEBPACK_IMPORTED_MODULE_2__.createRef)()), [
944
1013
  width,
945
1014
  height
946
1015
  ]);
947
- const activeIndexRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)({
1016
+ const activeIndexRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)({
948
1017
  x: 0,
949
1018
  y: 0
950
1019
  });
951
- const { 0: lastDirection , 1: setLastDirection } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)("horizontal");
952
- const lastDirectionRef = (0,react_use__WEBPACK_IMPORTED_MODULE_3__.useLatest)(lastDirection);
953
- const changeActiveIndex = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((offsetX, offsetY)=>{
1020
+ const { 0: direction , 1: setLastDirection } = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)("horizontal");
1021
+ const directionRef = (0,react_use__WEBPACK_IMPORTED_MODULE_4__.useLatest)(direction);
1022
+ const changeActiveIndex = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((offsetX, offsetY)=>{
954
1023
  const x = Math.min(Math.max(activeIndexRef.current.x + offsetX, 0), width - 1);
955
1024
  const y = Math.min(Math.max(activeIndexRef.current.y + offsetY, 0), height - 1);
956
1025
  activeIndexRef.current = {
@@ -962,58 +1031,197 @@ const useGrid = (rows)=>{
962
1031
  activeIndexRef,
963
1032
  refs
964
1033
  ]);
965
- const getInputRefPosition = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((inputRef)=>{
966
- return (0,_lib__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z)(refs, (ref)=>ref.current === inputRef);
1034
+ const getInputRefPosition = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((inputRef)=>{
1035
+ return (0,_lib__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z)(refs, (ref)=>ref.current === inputRef);
967
1036
  }, [
968
1037
  refs
969
1038
  ]);
970
- const onDirectionToggle = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{
971
- setLastDirection((direction)=>{
972
- return direction === "vertical" ? "horizontal" : "vertical";
973
- });
974
- }, []);
975
- const onFocus = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((x, y)=>{
976
- activeIndexRef.current = {
977
- x,
978
- y
979
- };
980
- }, []);
981
- const onMoveFocus = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((direction)=>{
982
- const offset = direction === "forward" ? 1 : -1;
983
- if (lastDirectionRef.current === "horizontal") {
1039
+ const moveFocus = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((offset)=>{
1040
+ if (directionRef.current === "horizontal") {
984
1041
  changeActiveIndex(offset, 0);
985
1042
  } else {
986
1043
  changeActiveIndex(0, offset);
987
1044
  }
988
1045
  }, [
989
1046
  changeActiveIndex,
990
- lastDirectionRef
1047
+ directionRef
991
1048
  ]);
992
- const onKeyDown = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{
993
- return (0,lib__WEBPACK_IMPORTED_MODULE_4__/* .createKeyboardNavigation */ .np)({
1049
+ const insertValue = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((position, value)=>{
1050
+ const characters = value ? (0,lib__WEBPACK_IMPORTED_MODULE_5__/* .extractCharacters */ .nK)(config, value).filter((character)=>character !== _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_0__.BLANK) : [
1051
+ _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_0__.BLANK
1052
+ ];
1053
+ let board = new _scrabble_solver_types__WEBPACK_IMPORTED_MODULE_1__.Board({
1054
+ rows: rows.map((row)=>row.map((cell)=>cell.clone()))
1055
+ });
1056
+ let { x , y } = position;
1057
+ const scheduleMoveFocus = ()=>{
1058
+ if (directionRef.current === "horizontal") {
1059
+ ++x;
1060
+ } else {
1061
+ ++y;
1062
+ }
1063
+ };
1064
+ characters.forEach((character)=>{
1065
+ if (x >= config.boardWidth || y >= config.boardHeight) {
1066
+ return;
1067
+ }
1068
+ const canCheckUp = y - 1 > 0;
1069
+ const canCheckLeft = x > 0;
1070
+ const canCheckRight = x + 1 < width;
1071
+ const canCheckDown = y + 1 < height;
1072
+ if (canCheckUp) {
1073
+ const cellUp = board.rows[y - 1][x];
1074
+ const twoCharacterCandidate = cellUp.tile.character + character;
1075
+ if (!cellUp.tile.isBlank && config.twoCharacterTiles.includes(twoCharacterCandidate)) {
1076
+ board = state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.reducer */ .I8.reducer(board, state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1077
+ x,
1078
+ y: y - 1,
1079
+ value: twoCharacterCandidate
1080
+ }));
1081
+ return;
1082
+ }
1083
+ }
1084
+ if (canCheckDown) {
1085
+ const cellDown = board.rows[y + 1][x];
1086
+ const twoCharacterCandidate1 = character + cellDown.tile.character;
1087
+ if (!cellDown.tile.isBlank && config.twoCharacterTiles.includes(twoCharacterCandidate1)) {
1088
+ board = state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.reducer */ .I8.reducer(board, state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1089
+ x,
1090
+ y,
1091
+ value: character
1092
+ }));
1093
+ board = state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.reducer */ .I8.reducer(board, state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1094
+ x,
1095
+ y: y + 1,
1096
+ value: _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_0__.EMPTY_CELL
1097
+ }));
1098
+ scheduleMoveFocus();
1099
+ return;
1100
+ }
1101
+ }
1102
+ if (canCheckLeft) {
1103
+ const cellLeft = board.rows[y][x - 1];
1104
+ const twoCharacterCandidate2 = cellLeft.tile.character + character;
1105
+ if (!cellLeft.tile.isBlank && config.twoCharacterTiles.includes(twoCharacterCandidate2)) {
1106
+ board = state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.reducer */ .I8.reducer(board, state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1107
+ x: x - 1,
1108
+ y,
1109
+ value: twoCharacterCandidate2
1110
+ }));
1111
+ return;
1112
+ }
1113
+ }
1114
+ if (canCheckRight) {
1115
+ const cellRight = board.rows[y][x + 1];
1116
+ const twoCharacterCandidate3 = character + cellRight.tile.character;
1117
+ if (!cellRight.tile.isBlank && config.twoCharacterTiles.includes(twoCharacterCandidate3)) {
1118
+ board = state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.reducer */ .I8.reducer(board, state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1119
+ x,
1120
+ y,
1121
+ value: character
1122
+ }));
1123
+ board = state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.reducer */ .I8.reducer(board, state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1124
+ x: x + 1,
1125
+ y,
1126
+ value: _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_0__.EMPTY_CELL
1127
+ }));
1128
+ scheduleMoveFocus();
1129
+ return;
1130
+ }
1131
+ }
1132
+ if (!canCheckDown || !canCheckRight) {
1133
+ const cell = board.rows[y][x];
1134
+ const twoCharacterCandidate4 = cell.tile.character + character;
1135
+ if (!cell.tile.isBlank && config.twoCharacterTiles.includes(twoCharacterCandidate4)) {
1136
+ board = state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.reducer */ .I8.reducer(board, state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1137
+ x,
1138
+ y,
1139
+ value: twoCharacterCandidate4
1140
+ }));
1141
+ return;
1142
+ }
1143
+ }
1144
+ board = state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.reducer */ .I8.reducer(board, state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1145
+ x,
1146
+ y,
1147
+ value: character
1148
+ }));
1149
+ scheduleMoveFocus();
1150
+ });
1151
+ moveFocus(Math.abs(position.x - x) + Math.abs(position.y - y));
1152
+ dispatch(state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.change */ .I8.actions.change(board));
1153
+ }, [
1154
+ config,
1155
+ directionRef,
1156
+ dispatch,
1157
+ moveFocus,
1158
+ rows
1159
+ ]);
1160
+ const onChange = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((event)=>{
1161
+ const position = getInputRefPosition(event.target);
1162
+ if (!position) {
1163
+ return;
1164
+ }
1165
+ const value = (0,lib__WEBPACK_IMPORTED_MODULE_5__/* .extractInputValue */ .WM)(event.target);
1166
+ if (!value) {
1167
+ dispatch(state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1168
+ ...position,
1169
+ value: _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_0__.EMPTY_CELL
1170
+ }));
1171
+ moveFocus(-1);
1172
+ return;
1173
+ }
1174
+ if (value === _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_0__.EMPTY_CELL) {
1175
+ const { x , y } = position;
1176
+ const cell = rows[y][x];
1177
+ if (cell.hasTile()) {
1178
+ dispatch(state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.toggleCellIsBlank */ .I8.actions.toggleCellIsBlank(position));
1179
+ return;
1180
+ }
1181
+ }
1182
+ insertValue(position, value);
1183
+ }, [
1184
+ dispatch,
1185
+ insertValue,
1186
+ moveFocus,
1187
+ rows
1188
+ ]);
1189
+ const onDirectionToggle = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(()=>setLastDirection(toggleDirection), []);
1190
+ const onFocus = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((x, y)=>{
1191
+ activeIndexRef.current = {
1192
+ x,
1193
+ y
1194
+ };
1195
+ }, []);
1196
+ const onKeyDown = (0,react__WEBPACK_IMPORTED_MODULE_2__.useMemo)(()=>{
1197
+ return (0,lib__WEBPACK_IMPORTED_MODULE_5__/* .createKeyboardNavigation */ .np)({
994
1198
  onArrowDown: (event)=>{
995
- if ((0,lib__WEBPACK_IMPORTED_MODULE_4__/* .isCtrl */ .yl)(event)) {
1199
+ event.preventDefault();
1200
+ if ((0,lib__WEBPACK_IMPORTED_MODULE_5__/* .isCtrl */ .yl)(event)) {
996
1201
  onDirectionToggle();
997
1202
  } else {
998
1203
  changeActiveIndex(0, 1);
999
1204
  }
1000
1205
  },
1001
1206
  onArrowLeft: (event)=>{
1002
- if ((0,lib__WEBPACK_IMPORTED_MODULE_4__/* .isCtrl */ .yl)(event)) {
1207
+ event.preventDefault();
1208
+ if ((0,lib__WEBPACK_IMPORTED_MODULE_5__/* .isCtrl */ .yl)(event)) {
1003
1209
  onDirectionToggle();
1004
1210
  } else {
1005
1211
  changeActiveIndex(-1, 0);
1006
1212
  }
1007
1213
  },
1008
1214
  onArrowRight: (event)=>{
1009
- if ((0,lib__WEBPACK_IMPORTED_MODULE_4__/* .isCtrl */ .yl)(event)) {
1215
+ event.preventDefault();
1216
+ if ((0,lib__WEBPACK_IMPORTED_MODULE_5__/* .isCtrl */ .yl)(event)) {
1010
1217
  onDirectionToggle();
1011
1218
  } else {
1012
1219
  changeActiveIndex(1, 0);
1013
1220
  }
1014
1221
  },
1015
1222
  onArrowUp: (event)=>{
1016
- if ((0,lib__WEBPACK_IMPORTED_MODULE_4__/* .isCtrl */ .yl)(event)) {
1223
+ event.preventDefault();
1224
+ if ((0,lib__WEBPACK_IMPORTED_MODULE_5__/* .isCtrl */ .yl)(event)) {
1017
1225
  onDirectionToggle();
1018
1226
  } else {
1019
1227
  changeActiveIndex(0, -1);
@@ -1024,22 +1232,24 @@ const useGrid = (rows)=>{
1024
1232
  if (!position) {
1025
1233
  return;
1026
1234
  }
1027
- dispatch(state__WEBPACK_IMPORTED_MODULE_5__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1235
+ event.preventDefault();
1236
+ dispatch(state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1028
1237
  ...position,
1029
1238
  value: _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_0__.EMPTY_CELL
1030
1239
  }));
1031
- onMoveFocus("backward");
1240
+ moveFocus(-1);
1032
1241
  },
1033
1242
  onDelete: (event)=>{
1034
1243
  const position = getInputRefPosition(event.target);
1035
1244
  if (!position) {
1036
1245
  return;
1037
1246
  }
1038
- dispatch(state__WEBPACK_IMPORTED_MODULE_5__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1247
+ event.preventDefault();
1248
+ dispatch(state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1039
1249
  ...position,
1040
1250
  value: _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_0__.EMPTY_CELL
1041
1251
  }));
1042
- onMoveFocus("forward");
1252
+ moveFocus(1);
1043
1253
  },
1044
1254
  onKeyDown: (event)=>{
1045
1255
  const position = getInputRefPosition(event.target);
@@ -1048,129 +1258,82 @@ const useGrid = (rows)=>{
1048
1258
  }
1049
1259
  const { x , y } = position;
1050
1260
  const character = event.key.toLowerCase();
1051
- const isTogglingBlank = (0,lib__WEBPACK_IMPORTED_MODULE_4__/* .isCtrl */ .yl)(event) && character === "b";
1261
+ const isTogglingBlank = (0,lib__WEBPACK_IMPORTED_MODULE_5__/* .isCtrl */ .yl)(event) && character === "b";
1052
1262
  const twoCharacterTile = config.getTwoCharacterTileByPrefix(character);
1053
1263
  if (isTogglingBlank) {
1054
- dispatch(state__WEBPACK_IMPORTED_MODULE_5__/* .boardSlice.actions.toggleCellIsBlank */ .I8.actions.toggleCellIsBlank(position));
1264
+ event.preventDefault();
1265
+ dispatch(state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.toggleCellIsBlank */ .I8.actions.toggleCellIsBlank(position));
1055
1266
  return;
1056
1267
  }
1057
- if ((0,lib__WEBPACK_IMPORTED_MODULE_4__/* .isCtrl */ .yl)(event) && twoCharacterTile) {
1268
+ if ((0,lib__WEBPACK_IMPORTED_MODULE_5__/* .isCtrl */ .yl)(event) && twoCharacterTile) {
1058
1269
  event.preventDefault();
1059
- dispatch(state__WEBPACK_IMPORTED_MODULE_5__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1270
+ dispatch(state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1060
1271
  x,
1061
1272
  y,
1062
1273
  value: twoCharacterTile
1063
1274
  }));
1064
- onMoveFocus("forward");
1275
+ moveFocus(1);
1065
1276
  return;
1066
1277
  }
1067
- if (!config.hasCharacter(character)) {
1278
+ const cell = rows[y][x];
1279
+ const twoCharacterCandidate = cell.tile.character + character;
1280
+ if (config.twoCharacterTiles.includes(twoCharacterCandidate)) {
1281
+ event.preventDefault();
1282
+ dispatch(state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1283
+ ...position,
1284
+ value: twoCharacterCandidate
1285
+ }));
1286
+ moveFocus(1);
1068
1287
  return;
1069
1288
  }
1070
- const canCheckUp = y - 1 > 0;
1071
- const canCheckLeft = x > 0;
1072
- const canCheckRight = x + 1 < width;
1073
- const canCheckDown = y + 1 < height;
1074
- if (canCheckUp) {
1075
- const cellUp = rows[y - 1][x];
1076
- const twoCharacterCandidate = cellUp.tile.character + character;
1077
- if (config.twoCharacterTiles.includes(twoCharacterCandidate)) {
1078
- dispatch(state__WEBPACK_IMPORTED_MODULE_5__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1079
- ...position,
1080
- y: y - 1,
1081
- value: twoCharacterCandidate
1082
- }));
1083
- return;
1084
- }
1085
- }
1086
- if (canCheckDown) {
1087
- const cellDown = rows[y + 1][x];
1088
- const twoCharacterCandidate1 = character + cellDown.tile.character;
1089
- if (config.twoCharacterTiles.includes(twoCharacterCandidate1)) {
1090
- dispatch(state__WEBPACK_IMPORTED_MODULE_5__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1091
- ...position,
1092
- value: character
1093
- }));
1094
- dispatch(state__WEBPACK_IMPORTED_MODULE_5__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1095
- ...position,
1096
- y: y + 1,
1097
- value: _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_0__.EMPTY_CELL
1098
- }));
1099
- onMoveFocus("forward");
1100
- return;
1101
- }
1102
- }
1103
- if (canCheckLeft) {
1104
- const cellLeft = rows[y][x - 1];
1105
- const twoCharacterCandidate2 = cellLeft.tile.character + character;
1106
- if (config.twoCharacterTiles.includes(twoCharacterCandidate2)) {
1107
- dispatch(state__WEBPACK_IMPORTED_MODULE_5__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1108
- ...position,
1109
- x: x - 1,
1110
- value: twoCharacterCandidate2
1111
- }));
1112
- return;
1113
- }
1114
- }
1115
- if (canCheckRight) {
1116
- const cellRight = rows[y][x + 1];
1117
- const twoCharacterCandidate3 = character + cellRight.tile.character;
1118
- if (config.twoCharacterTiles.includes(twoCharacterCandidate3)) {
1119
- dispatch(state__WEBPACK_IMPORTED_MODULE_5__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1120
- ...position,
1121
- value: character
1122
- }));
1123
- dispatch(state__WEBPACK_IMPORTED_MODULE_5__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1124
- ...position,
1125
- x: x + 1,
1126
- value: _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_0__.EMPTY_CELL
1127
- }));
1128
- onMoveFocus("forward");
1129
- return;
1130
- }
1131
- }
1132
- if (!canCheckDown || !canCheckRight) {
1133
- const cell = rows[y][x];
1134
- const twoCharacterCandidate4 = cell.tile.character + character;
1135
- if (config.twoCharacterTiles.includes(twoCharacterCandidate4)) {
1136
- dispatch(state__WEBPACK_IMPORTED_MODULE_5__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1137
- ...position,
1138
- value: twoCharacterCandidate4
1139
- }));
1140
- return;
1141
- }
1289
+ if (event.target instanceof HTMLInputElement && event.target.value === event.key) {
1290
+ // change event did not fire because the same character was typed over the current one
1291
+ // but we still want to move the caret
1292
+ event.preventDefault();
1293
+ moveFocus(1);
1142
1294
  }
1143
- dispatch(state__WEBPACK_IMPORTED_MODULE_5__/* .boardSlice.actions.changeCellValue */ .I8.actions.changeCellValue({
1144
- ...position,
1145
- value: character
1146
- }));
1147
- onMoveFocus("forward");
1148
1295
  },
1149
1296
  onSpace: (event)=>{
1150
1297
  const position = getInputRefPosition(event.target);
1151
1298
  if (!position) {
1152
1299
  return;
1153
1300
  }
1154
- dispatch(state__WEBPACK_IMPORTED_MODULE_5__/* .boardSlice.actions.toggleCellIsBlank */ .I8.actions.toggleCellIsBlank(position));
1301
+ event.preventDefault();
1302
+ dispatch(state__WEBPACK_IMPORTED_MODULE_6__/* .boardSlice.actions.toggleCellIsBlank */ .I8.actions.toggleCellIsBlank(position));
1155
1303
  }
1156
1304
  });
1157
1305
  }, [
1158
1306
  changeActiveIndex,
1159
1307
  config,
1160
1308
  dispatch,
1161
- lastDirectionRef,
1162
1309
  onDirectionToggle,
1163
1310
  rows
1164
1311
  ]);
1312
+ const onPaste = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((event)=>{
1313
+ if (!(event.target instanceof HTMLInputElement)) {
1314
+ return;
1315
+ }
1316
+ const position = getInputRefPosition(event.target);
1317
+ if (!position) {
1318
+ return;
1319
+ }
1320
+ event.preventDefault();
1321
+ const value = event.clipboardData.getData("text/plain").toLocaleLowerCase();
1322
+ insertValue(position, value);
1323
+ }, [
1324
+ insertValue
1325
+ ]);
1165
1326
  return [
1166
1327
  {
1167
- lastDirection,
1328
+ direction,
1168
1329
  refs
1169
1330
  },
1170
1331
  {
1332
+ onChange,
1171
1333
  onDirectionToggle,
1172
1334
  onFocus,
1173
- onKeyDown
1335
+ onKeyDown,
1336
+ onPaste
1174
1337
  },
1175
1338
  ];
1176
1339
  };
@@ -1302,8 +1465,8 @@ __webpack_async_result__();
1302
1465
  var jsx_runtime_ = __webpack_require__(20997);
1303
1466
  // EXTERNAL MODULE: external "classnames"
1304
1467
  var external_classnames_ = __webpack_require__(59003);
1305
- // EXTERNAL MODULE: ./src/icons/index.ts + 24 modules
1306
- var icons = __webpack_require__(81245);
1468
+ // EXTERNAL MODULE: ./src/icons/index.ts + 27 modules
1469
+ var icons = __webpack_require__(6942);
1307
1470
  ;// CONCATENATED MODULE: ./src/components/Checkbox/Checkbox.tsx
1308
1471
 
1309
1472
 
@@ -1371,6 +1534,7 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([stat
1371
1534
  const Dictionary = ({ className })=>{
1372
1535
  const translate = (0,state__WEBPACK_IMPORTED_MODULE_2__/* .useTranslate */ .qM)();
1373
1536
  const { results , isLoading } = (0,state__WEBPACK_IMPORTED_MODULE_2__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_2__/* .selectDictionary */ .w1);
1537
+ const error = (0,state__WEBPACK_IMPORTED_MODULE_2__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_2__/* .selectDictionaryError */ .mK);
1374
1538
  const isFirstAllowed = results.length > 0 ? results[0].isAllowed : undefined;
1375
1539
  return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
1376
1540
  className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_Dictionary_module_scss__WEBPACK_IMPORTED_MODULE_5___default().dictionary), className, {
@@ -1378,6 +1542,11 @@ const Dictionary = ({ className })=>{
1378
1542
  [(_Dictionary_module_scss__WEBPACK_IMPORTED_MODULE_5___default().isNotAllowed)]: isFirstAllowed === false
1379
1543
  }),
1380
1544
  children: [
1545
+ typeof error !== "undefined" && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_EmptyState__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {
1546
+ className: (_Dictionary_module_scss__WEBPACK_IMPORTED_MODULE_5___default().emptyState),
1547
+ type: "error",
1548
+ children: error.message
1549
+ }),
1381
1550
  results.map(({ definitions , isAllowed , word })=>/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
1382
1551
  className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_Dictionary_module_scss__WEBPACK_IMPORTED_MODULE_5___default().result), {
1383
1552
  [(_Dictionary_module_scss__WEBPACK_IMPORTED_MODULE_5___default().isAllowed)]: isAllowed === true,
@@ -1865,8 +2034,8 @@ __webpack_async_result__();
1865
2034
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
1866
2035
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16689);
1867
2036
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
1868
- /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(81245);
1869
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(92237);
2037
+ /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6942);
2038
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(75558);
1870
2039
  /* harmony import */ var _Key__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50237);
1871
2040
 
1872
2041
 
@@ -2041,7 +2210,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
2041
2210
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
2042
2211
  /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59003);
2043
2212
  /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
2044
- /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(81245);
2213
+ /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6942);
2045
2214
  /* harmony import */ var parameters__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90485);
2046
2215
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(51413);
2047
2216
  /* harmony import */ var _SquareButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(49021);
@@ -2056,29 +2225,22 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([stat
2056
2225
 
2057
2226
 
2058
2227
 
2059
- const NavButtons = ({ onClear , onShowKeyMap , onShowRemainingTiles , onShowSettings })=>{
2228
+ const NavButtons = ({ onClear , onShowKeyMap , onShowRemainingTiles , onShowSettings , onShowWords , })=>{
2060
2229
  const translate = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTranslate */ .qM)();
2061
2230
  const hasOverusedTiles = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_4__/* .selectHasOverusedTiles */ .En);
2231
+ const hasInvalidWords = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_4__/* .selectHasInvalidWords */ .bs);
2062
2232
  return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
2063
2233
  className: (_NavButtons_module_scss__WEBPACK_IMPORTED_MODULE_6___default().navButtons),
2064
2234
  children: [
2065
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_SquareButton__WEBPACK_IMPORTED_MODULE_5__/* ["default"].Link */ .Z.Link, {
2235
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_SquareButton__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
2066
2236
  className: (_NavButtons_module_scss__WEBPACK_IMPORTED_MODULE_6___default().button),
2067
- href: parameters__WEBPACK_IMPORTED_MODULE_3__/* .GITHUB_PROJECT_URL */ .h4,
2068
- Icon: icons__WEBPACK_IMPORTED_MODULE_2__/* .Github */ .Ey,
2069
- rel: "noopener noreferrer",
2070
- target: "_blank",
2071
- tooltip: translate("github")
2237
+ Icon: icons__WEBPACK_IMPORTED_MODULE_2__/* .Eraser */ .Gs,
2238
+ tooltip: translate("common.clear"),
2239
+ onClick: onClear
2072
2240
  }),
2073
2241
  /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
2074
2242
  className: (_NavButtons_module_scss__WEBPACK_IMPORTED_MODULE_6___default().separator)
2075
2243
  }),
2076
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_SquareButton__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
2077
- className: (_NavButtons_module_scss__WEBPACK_IMPORTED_MODULE_6___default().button),
2078
- Icon: icons__WEBPACK_IMPORTED_MODULE_2__/* .Keyboard */ .N1,
2079
- tooltip: translate("keyMap"),
2080
- onClick: onShowKeyMap
2081
- }),
2082
2244
  /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_SquareButton__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
2083
2245
  className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_NavButtons_module_scss__WEBPACK_IMPORTED_MODULE_6___default().button), {
2084
2246
  [(_NavButtons_module_scss__WEBPACK_IMPORTED_MODULE_6___default().error)]: hasOverusedTiles
@@ -2087,14 +2249,33 @@ const NavButtons = ({ onClear , onShowKeyMap , onShowRemainingTiles , onShowSett
2087
2249
  tooltip: translate("remaining-tiles"),
2088
2250
  onClick: onShowRemainingTiles
2089
2251
  }),
2252
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_SquareButton__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
2253
+ className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_NavButtons_module_scss__WEBPACK_IMPORTED_MODULE_6___default().button), {
2254
+ [(_NavButtons_module_scss__WEBPACK_IMPORTED_MODULE_6___default().error)]: hasInvalidWords
2255
+ }),
2256
+ Icon: icons__WEBPACK_IMPORTED_MODULE_2__/* .BookHalf */ .PP,
2257
+ tooltip: translate("words"),
2258
+ onClick: onShowWords
2259
+ }),
2260
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
2261
+ className: (_NavButtons_module_scss__WEBPACK_IMPORTED_MODULE_6___default().separator)
2262
+ }),
2263
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_SquareButton__WEBPACK_IMPORTED_MODULE_5__/* ["default"].Link */ .Z.Link, {
2264
+ className: (_NavButtons_module_scss__WEBPACK_IMPORTED_MODULE_6___default().button),
2265
+ href: parameters__WEBPACK_IMPORTED_MODULE_3__/* .GITHUB_PROJECT_URL */ .h4,
2266
+ Icon: icons__WEBPACK_IMPORTED_MODULE_2__/* .Github */ .Ey,
2267
+ rel: "noopener noreferrer",
2268
+ target: "_blank",
2269
+ tooltip: translate("github")
2270
+ }),
2090
2271
  /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
2091
2272
  className: (_NavButtons_module_scss__WEBPACK_IMPORTED_MODULE_6___default().separator)
2092
2273
  }),
2093
2274
  /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_SquareButton__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
2094
2275
  className: (_NavButtons_module_scss__WEBPACK_IMPORTED_MODULE_6___default().button),
2095
- Icon: icons__WEBPACK_IMPORTED_MODULE_2__/* .Eraser */ .Gs,
2096
- tooltip: translate("common.clear"),
2097
- onClick: onClear
2276
+ Icon: icons__WEBPACK_IMPORTED_MODULE_2__/* .Keyboard */ .N1,
2277
+ tooltip: translate("keyMap"),
2278
+ onClick: onShowKeyMap
2098
2279
  }),
2099
2280
  /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_SquareButton__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
2100
2281
  className: (_NavButtons_module_scss__WEBPACK_IMPORTED_MODULE_6___default().button),
@@ -2145,8 +2326,8 @@ var jsx_runtime_ = __webpack_require__(20997);
2145
2326
  // EXTERNAL MODULE: ./node_modules/next/link.js
2146
2327
  var next_link = __webpack_require__(41664);
2147
2328
  var link_default = /*#__PURE__*/__webpack_require__.n(next_link);
2148
- // EXTERNAL MODULE: ./src/icons/index.ts + 24 modules
2149
- var icons = __webpack_require__(81245);
2329
+ // EXTERNAL MODULE: ./src/icons/index.ts + 27 modules
2330
+ var icons = __webpack_require__(6942);
2150
2331
  // EXTERNAL MODULE: ./src/components/PlainTiles/index.ts + 9 modules
2151
2332
  var PlainTiles = __webpack_require__(14015);
2152
2333
  // EXTERNAL MODULE: ./src/components/NotFound/NotFound.module.scss
@@ -2402,12 +2583,13 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
2402
2583
  /* harmony export */ });
2403
2584
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
2404
2585
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
2405
- /* harmony import */ var _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7618);
2406
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59003);
2407
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);
2408
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16689);
2409
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
2410
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(92237);
2586
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59003);
2587
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
2588
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16689);
2589
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
2590
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6022);
2591
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_3__);
2592
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(75558);
2411
2593
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(51413);
2412
2594
  /* harmony import */ var _Rack_module_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(42687);
2413
2595
  /* harmony import */ var _Rack_module_scss__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_Rack_module_scss__WEBPACK_IMPORTED_MODULE_7__);
@@ -2423,19 +2605,20 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([stat
2423
2605
 
2424
2606
 
2425
2607
  const Rack = ({ className })=>{
2608
+ const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useDispatch)();
2426
2609
  const config = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_5__/* .selectConfig */ .$o);
2427
2610
  const rack = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_5__/* .selectRack */ .QB);
2428
2611
  const resultCandidateTiles = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_5__/* .selectResultCandidateTiles */ .z$);
2429
- const tiles = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(()=>(0,lib__WEBPACK_IMPORTED_MODULE_4__/* .zipCharactersAndTiles */ .gV)(rack, resultCandidateTiles), [
2612
+ const tiles = (0,react__WEBPACK_IMPORTED_MODULE_2__.useMemo)(()=>(0,lib__WEBPACK_IMPORTED_MODULE_4__/* .zipCharactersAndTiles */ .gV)(rack, resultCandidateTiles), [
2430
2613
  rack,
2431
2614
  resultCandidateTiles
2432
2615
  ]);
2433
2616
  const tilesCount = tiles.length;
2434
- const tilesRefs = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(()=>(0,lib__WEBPACK_IMPORTED_MODULE_4__/* .createArray */ .Ri)(tilesCount).map(()=>/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_3__.createRef)()), [
2617
+ const tilesRefs = (0,react__WEBPACK_IMPORTED_MODULE_2__.useMemo)(()=>(0,lib__WEBPACK_IMPORTED_MODULE_4__/* .createArray */ .Ri)(tilesCount).map(()=>/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_2__.createRef)()), [
2435
2618
  tilesCount
2436
2619
  ]);
2437
- const activeIndexRef = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)();
2438
- const changeActiveIndex = (0,react__WEBPACK_IMPORTED_MODULE_3__.useCallback)((offset)=>{
2620
+ const activeIndexRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)();
2621
+ const changeActiveIndex = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((offset)=>{
2439
2622
  const nextActiveIndex = Math.min(Math.max((activeIndexRef.current || 0) + offset, 0), tilesCount - 1);
2440
2623
  const tileRef = tilesRefs[nextActiveIndex].current;
2441
2624
  if (tileRef) {
@@ -2447,7 +2630,33 @@ const Rack = ({ className })=>{
2447
2630
  tilesCount,
2448
2631
  tilesRefs
2449
2632
  ]);
2450
- const onKeyDown = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(()=>{
2633
+ const handleChange = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((event)=>{
2634
+ const value = (0,lib__WEBPACK_IMPORTED_MODULE_4__/* .extractInputValue */ .WM)(event.target);
2635
+ const characters = value ? (0,lib__WEBPACK_IMPORTED_MODULE_4__/* .extractCharacters */ .nK)(config, value) : [];
2636
+ changeActiveIndex(value ? characters.length : -1);
2637
+ }, [
2638
+ changeActiveIndex,
2639
+ config
2640
+ ]);
2641
+ const handlePaste = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((event)=>{
2642
+ const index = activeIndexRef.current;
2643
+ if (typeof index === "undefined") {
2644
+ return;
2645
+ }
2646
+ event.preventDefault();
2647
+ const value = event.clipboardData.getData("text/plain").toLocaleLowerCase();
2648
+ const characters = value ? (0,lib__WEBPACK_IMPORTED_MODULE_4__/* .extractCharacters */ .nK)(config, value) : [];
2649
+ changeActiveIndex(value ? characters.length : -1);
2650
+ dispatch(state__WEBPACK_IMPORTED_MODULE_5__/* .rackSlice.actions.changeCharacters */ .O_.actions.changeCharacters({
2651
+ characters,
2652
+ index
2653
+ }));
2654
+ }, [
2655
+ changeActiveIndex,
2656
+ config,
2657
+ dispatch
2658
+ ]);
2659
+ const handleKeyDown = (0,react__WEBPACK_IMPORTED_MODULE_2__.useMemo)(()=>{
2451
2660
  return (0,lib__WEBPACK_IMPORTED_MODULE_4__/* .createKeyboardNavigation */ .np)({
2452
2661
  onArrowLeft: (event)=>{
2453
2662
  event.preventDefault();
@@ -2457,12 +2666,18 @@ const Rack = ({ className })=>{
2457
2666
  event.preventDefault();
2458
2667
  changeActiveIndex(1);
2459
2668
  },
2460
- onBackspace: ()=>{
2669
+ onBackspace: (event)=>{
2670
+ event.preventDefault();
2461
2671
  changeActiveIndex(-1);
2462
2672
  },
2463
2673
  onKeyDown: (event)=>{
2464
- const character = event.key.toLowerCase();
2465
- if (config.hasCharacter(character) || character === _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_1__.BLANK) {
2674
+ if ((0,lib__WEBPACK_IMPORTED_MODULE_4__/* .isCtrl */ .yl)(event) && config.isTwoCharacterTilePrefix(event.key)) {
2675
+ changeActiveIndex(1);
2676
+ } else if (event.currentTarget.value === event.key) {
2677
+ // change event did not fire because the same character was typed over the current one
2678
+ // but we still want to move the caret
2679
+ event.preventDefault();
2680
+ event.stopPropagation();
2466
2681
  changeActiveIndex(1);
2467
2682
  }
2468
2683
  }
@@ -2472,14 +2687,16 @@ const Rack = ({ className })=>{
2472
2687
  config
2473
2688
  ]);
2474
2689
  return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
2475
- className: classnames__WEBPACK_IMPORTED_MODULE_2___default()((_Rack_module_scss__WEBPACK_IMPORTED_MODULE_7___default().rack), className),
2690
+ className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_Rack_module_scss__WEBPACK_IMPORTED_MODULE_7___default().rack), className),
2691
+ onPaste: handlePaste,
2476
2692
  children: tiles.map(({ character , tile }, index)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_RackTile__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {
2477
2693
  activeIndexRef: activeIndexRef,
2478
2694
  character: character,
2479
2695
  index: index,
2480
2696
  inputRef: tilesRefs[index],
2481
2697
  tile: tile,
2482
- onKeyDown: onKeyDown
2698
+ onChange: handleChange,
2699
+ onKeyDown: handleKeyDown
2483
2700
  }, index))
2484
2701
  });
2485
2702
  };
@@ -2505,7 +2722,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
2505
2722
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
2506
2723
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6022);
2507
2724
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_3__);
2508
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(92237);
2725
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(75558);
2509
2726
  /* harmony import */ var parameters__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(90485);
2510
2727
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(51413);
2511
2728
  /* harmony import */ var _Tile__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(54031);
@@ -2522,7 +2739,7 @@ state__WEBPACK_IMPORTED_MODULE_6__ = (__webpack_async_dependencies__.then ? (awa
2522
2739
 
2523
2740
 
2524
2741
 
2525
- const RackTile = ({ activeIndexRef , character , index , inputRef , tile , onKeyDown })=>{
2742
+ const RackTile = ({ activeIndexRef , character , index , inputRef , tile , onChange , onKeyDown , })=>{
2526
2743
  const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useDispatch)();
2527
2744
  const translate = (0,state__WEBPACK_IMPORTED_MODULE_6__/* .useTranslate */ .qM)();
2528
2745
  const config = (0,state__WEBPACK_IMPORTED_MODULE_6__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_6__/* .selectConfig */ .$o);
@@ -2532,33 +2749,48 @@ const RackTile = ({ activeIndexRef , character , index , inputRef , tile , onKey
2532
2749
  }, [
2533
2750
  index
2534
2751
  ]);
2535
- const handleCharacterChange = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((value)=>{
2536
- dispatch(state__WEBPACK_IMPORTED_MODULE_6__/* .rackSlice.actions.changeCharacter */ .O_.actions.changeCharacter({
2537
- character: value,
2752
+ const handleChange = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((event)=>{
2753
+ event.preventDefault();
2754
+ event.stopPropagation();
2755
+ const value = (0,lib__WEBPACK_IMPORTED_MODULE_4__/* .extractInputValue */ .WM)(event.target);
2756
+ const characters = value ? (0,lib__WEBPACK_IMPORTED_MODULE_4__/* .extractCharacters */ .nK)(config, value) : [
2757
+ null
2758
+ ];
2759
+ dispatch(state__WEBPACK_IMPORTED_MODULE_6__/* .rackSlice.actions.changeCharacters */ .O_.actions.changeCharacters({
2760
+ characters,
2538
2761
  index
2539
2762
  }));
2763
+ onChange(event);
2540
2764
  }, [
2541
- index
2765
+ config,
2766
+ index,
2767
+ onChange
2542
2768
  ]);
2543
2769
  const handleKeyDown = (0,react__WEBPACK_IMPORTED_MODULE_2__.useMemo)(()=>{
2544
2770
  return (0,lib__WEBPACK_IMPORTED_MODULE_4__/* .createKeyboardNavigation */ .np)({
2545
- onBackspace: ()=>handleCharacterChange(null),
2546
- onDelete: ()=>handleCharacterChange(null),
2771
+ onBackspace: (event)=>{
2772
+ event.preventDefault();
2773
+ dispatch(state__WEBPACK_IMPORTED_MODULE_6__/* .rackSlice.actions.changeCharacter */ .O_.actions.changeCharacter({
2774
+ character: null,
2775
+ index
2776
+ }));
2777
+ },
2547
2778
  onKeyDown: (event)=>{
2548
- const newCharacter = event.key.toLowerCase();
2549
- const twoCharacterTile = config.getTwoCharacterTileByPrefix(newCharacter);
2550
- if ((0,lib__WEBPACK_IMPORTED_MODULE_4__/* .isCtrl */ .yl)(event) && twoCharacterTile) {
2779
+ if ((0,lib__WEBPACK_IMPORTED_MODULE_4__/* .isCtrl */ .yl)(event) && config.isTwoCharacterTilePrefix(event.key)) {
2551
2780
  event.preventDefault();
2552
- handleCharacterChange(twoCharacterTile);
2553
- } else if (config.hasCharacter(newCharacter) || newCharacter === _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_1__.BLANK) {
2554
- handleCharacterChange(newCharacter);
2781
+ event.stopPropagation();
2782
+ const twoTilesCharacter = config.getTwoCharacterTileByPrefix(event.key);
2783
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
2784
+ dispatch(state__WEBPACK_IMPORTED_MODULE_6__/* .rackSlice.actions.changeCharacter */ .O_.actions.changeCharacter({
2785
+ character: twoTilesCharacter,
2786
+ index
2787
+ }));
2555
2788
  }
2556
2789
  onKeyDown(event);
2557
2790
  }
2558
2791
  });
2559
2792
  }, [
2560
- config,
2561
- handleCharacterChange,
2793
+ index,
2562
2794
  onKeyDown
2563
2795
  ]);
2564
2796
  return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Tile__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
@@ -2573,6 +2805,7 @@ const RackTile = ({ activeIndexRef , character , index , inputRef , tile , onKey
2573
2805
  raised: true,
2574
2806
  size: parameters__WEBPACK_IMPORTED_MODULE_5__/* .TILE_SIZE */ .I_,
2575
2807
  tabIndex: index === 0 ? undefined : -1,
2808
+ onChange: handleChange,
2576
2809
  onFocus: handleFocus,
2577
2810
  onKeyDown: handleKeyDown
2578
2811
  }, index);
@@ -2732,12 +2965,14 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
2732
2965
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
2733
2966
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
2734
2967
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(51413);
2735
- /* harmony import */ var _Sidebar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(714);
2736
- /* harmony import */ var _Character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(75194);
2737
- /* harmony import */ var _RemainingTiles_module_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(31281);
2738
- /* harmony import */ var _RemainingTiles_module_scss__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_RemainingTiles_module_scss__WEBPACK_IMPORTED_MODULE_4__);
2739
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_1__, _Sidebar__WEBPACK_IMPORTED_MODULE_2__, _Character__WEBPACK_IMPORTED_MODULE_3__]);
2740
- ([state__WEBPACK_IMPORTED_MODULE_1__, _Sidebar__WEBPACK_IMPORTED_MODULE_2__, _Character__WEBPACK_IMPORTED_MODULE_3__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
2968
+ /* harmony import */ var _Badge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(99874);
2969
+ /* harmony import */ var _Sidebar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(714);
2970
+ /* harmony import */ var _Character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(75194);
2971
+ /* harmony import */ var _RemainingTiles_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(31281);
2972
+ /* harmony import */ var _RemainingTiles_module_scss__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_RemainingTiles_module_scss__WEBPACK_IMPORTED_MODULE_5__);
2973
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_1__, _Sidebar__WEBPACK_IMPORTED_MODULE_3__, _Character__WEBPACK_IMPORTED_MODULE_4__]);
2974
+ ([state__WEBPACK_IMPORTED_MODULE_1__, _Sidebar__WEBPACK_IMPORTED_MODULE_3__, _Character__WEBPACK_IMPORTED_MODULE_4__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
2975
+
2741
2976
 
2742
2977
 
2743
2978
 
@@ -2746,27 +2981,36 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([stat
2746
2981
  const RemainingTiles = ({ className , isOpen , onClose })=>{
2747
2982
  const translate = (0,state__WEBPACK_IMPORTED_MODULE_1__/* .useTranslate */ .qM)();
2748
2983
  const groups = (0,state__WEBPACK_IMPORTED_MODULE_1__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_1__/* .selectRemainingTilesGroups */ .Yj);
2749
- return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Sidebar__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {
2984
+ return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Sidebar__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {
2750
2985
  className: className,
2751
2986
  isOpen: isOpen,
2752
2987
  title: translate("remaining-tiles"),
2753
2988
  onClose: onClose,
2754
- children: groups.map(({ remainingCount , tiles , translationKey , totalCount })=>/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
2755
- className: (_RemainingTiles_module_scss__WEBPACK_IMPORTED_MODULE_4___default().group),
2756
- children: [
2757
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("h2", {
2758
- className: (_RemainingTiles_module_scss__WEBPACK_IMPORTED_MODULE_4___default().title),
2759
- children: `${translate(translationKey)} (${remainingCount} / ${totalCount})`
2760
- }),
2761
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
2762
- className: (_RemainingTiles_module_scss__WEBPACK_IMPORTED_MODULE_4___default().content),
2763
- children: tiles.map((tile)=>{
2764
- return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Character__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {
2765
- tile: tile
2766
- }, tile.character);
2989
+ children: groups.map(({ remainingCount , tiles , translationKey , totalCount })=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Sidebar__WEBPACK_IMPORTED_MODULE_3__/* ["default"].Section */ .Z.Section, {
2990
+ title: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("span", {
2991
+ className: (_RemainingTiles_module_scss__WEBPACK_IMPORTED_MODULE_5___default().title),
2992
+ children: [
2993
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("span", {
2994
+ children: translate(translationKey)
2995
+ }),
2996
+ /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Badge__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {
2997
+ className: (_RemainingTiles_module_scss__WEBPACK_IMPORTED_MODULE_5___default().badge),
2998
+ children: [
2999
+ remainingCount,
3000
+ " / ",
3001
+ totalCount
3002
+ ]
2767
3003
  })
3004
+ ]
3005
+ }),
3006
+ children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
3007
+ className: (_RemainingTiles_module_scss__WEBPACK_IMPORTED_MODULE_5___default().content),
3008
+ children: tiles.map((tile)=>{
3009
+ return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Character__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z, {
3010
+ tile: tile
3011
+ }, tile.character);
2768
3012
  })
2769
- ]
3013
+ })
2770
3014
  }, translationKey))
2771
3015
  });
2772
3016
  };
@@ -2848,7 +3092,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
2848
3092
  /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
2849
3093
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6022);
2850
3094
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__);
2851
- /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(81245);
3095
+ /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6942);
2852
3096
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(51413);
2853
3097
  /* harmony import */ var types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3620);
2854
3098
  /* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(73778);
@@ -3021,21 +3265,24 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
3021
3265
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
3022
3266
  /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59003);
3023
3267
  /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
3024
- /* harmony import */ var react_window__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(80551);
3025
- /* harmony import */ var react_window__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_window__WEBPACK_IMPORTED_MODULE_2__);
3026
- /* harmony import */ var parameters__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90485);
3027
- /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(51413);
3028
- /* harmony import */ var _EmptyState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(79590);
3029
- /* harmony import */ var _Loading__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(85907);
3030
- /* harmony import */ var _ResultsInput__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(57345);
3031
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(61157);
3032
- /* harmony import */ var _HeaderButton__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(53236);
3033
- /* harmony import */ var _Result__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(73829);
3034
- /* harmony import */ var _Results_module_scss__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(81177);
3035
- /* harmony import */ var _Results_module_scss__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_Results_module_scss__WEBPACK_IMPORTED_MODULE_12__);
3036
- /* harmony import */ var _SolveButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(17290);
3037
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_4__, _EmptyState__WEBPACK_IMPORTED_MODULE_5__, _Loading__WEBPACK_IMPORTED_MODULE_6__, _ResultsInput__WEBPACK_IMPORTED_MODULE_7__, _HeaderButton__WEBPACK_IMPORTED_MODULE_9__, _Result__WEBPACK_IMPORTED_MODULE_10__, _SolveButton__WEBPACK_IMPORTED_MODULE_11__]);
3038
- ([state__WEBPACK_IMPORTED_MODULE_4__, _EmptyState__WEBPACK_IMPORTED_MODULE_5__, _Loading__WEBPACK_IMPORTED_MODULE_6__, _ResultsInput__WEBPACK_IMPORTED_MODULE_7__, _HeaderButton__WEBPACK_IMPORTED_MODULE_9__, _Result__WEBPACK_IMPORTED_MODULE_10__, _SolveButton__WEBPACK_IMPORTED_MODULE_11__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
3268
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16689);
3269
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
3270
+ /* harmony import */ var react_window__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(80551);
3271
+ /* harmony import */ var react_window__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_window__WEBPACK_IMPORTED_MODULE_3__);
3272
+ /* harmony import */ var parameters__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(90485);
3273
+ /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(51413);
3274
+ /* harmony import */ var _EmptyState__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(79590);
3275
+ /* harmony import */ var _Loading__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(85907);
3276
+ /* harmony import */ var _ResultsInput__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(57345);
3277
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(61157);
3278
+ /* harmony import */ var _HeaderButton__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(53236);
3279
+ /* harmony import */ var _Result__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(73829);
3280
+ /* harmony import */ var _Results_module_scss__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(81177);
3281
+ /* harmony import */ var _Results_module_scss__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_Results_module_scss__WEBPACK_IMPORTED_MODULE_13__);
3282
+ /* harmony import */ var _SolveButton__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(17290);
3283
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_5__, _EmptyState__WEBPACK_IMPORTED_MODULE_6__, _Loading__WEBPACK_IMPORTED_MODULE_7__, _ResultsInput__WEBPACK_IMPORTED_MODULE_8__, _HeaderButton__WEBPACK_IMPORTED_MODULE_10__, _Result__WEBPACK_IMPORTED_MODULE_11__, _SolveButton__WEBPACK_IMPORTED_MODULE_12__]);
3284
+ ([state__WEBPACK_IMPORTED_MODULE_5__, _EmptyState__WEBPACK_IMPORTED_MODULE_6__, _Loading__WEBPACK_IMPORTED_MODULE_7__, _ResultsInput__WEBPACK_IMPORTED_MODULE_8__, _HeaderButton__WEBPACK_IMPORTED_MODULE_10__, _Result__WEBPACK_IMPORTED_MODULE_11__, _SolveButton__WEBPACK_IMPORTED_MODULE_12__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
3285
+
3039
3286
 
3040
3287
 
3041
3288
 
@@ -3050,68 +3297,84 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([stat
3050
3297
 
3051
3298
 
3052
3299
  const Results = ({ height , width })=>{
3053
- const translate = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTranslate */ .qM)();
3054
- const allResults = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_4__/* .selectSortedResults */ .f2);
3055
- const results = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_4__/* .selectSortedFilteredResults */ .dN);
3056
- const isLoading = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_4__/* .selectIsLoading */ .xU);
3057
- const isOutdated = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_4__/* .selectAreResultsOutdated */ .Mj);
3300
+ const translate = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTranslate */ .qM)();
3301
+ const allResults = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_5__/* .selectSortedResults */ .f2);
3302
+ const results = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_5__/* .selectSortedFilteredResults */ .dN);
3303
+ const isLoading = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_5__/* .selectIsLoading */ .xU);
3304
+ const isOutdated = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_5__/* .selectAreResultsOutdated */ .Mj);
3305
+ const error = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_5__/* .selectSolveError */ .Rn);
3306
+ const listRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)();
3307
+ (0,react__WEBPACK_IMPORTED_MODULE_2__.useLayoutEffect)(()=>{
3308
+ if (listRef.current) {
3309
+ listRef.current.scrollTo(0, 0);
3310
+ }
3311
+ }, [
3312
+ listRef,
3313
+ results
3314
+ ]);
3058
3315
  return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
3059
- className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_12___default().results),
3316
+ className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_13___default().results),
3060
3317
  children: [
3061
3318
  /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
3062
- className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_12___default().header),
3063
- children: _constants__WEBPACK_IMPORTED_MODULE_8__/* .COLUMNS.map */ .L.map((column)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_HeaderButton__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z, {
3319
+ className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_13___default().header),
3320
+ children: _constants__WEBPACK_IMPORTED_MODULE_9__/* .COLUMNS.map */ .L.map((column)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_HeaderButton__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Z, {
3064
3321
  column: column
3065
3322
  }, column.id))
3066
3323
  }),
3067
- typeof results === "undefined" && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_EmptyState__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
3068
- className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_12___default().emptyState),
3324
+ typeof error !== "undefined" && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_EmptyState__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {
3325
+ className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_13___default().emptyState),
3326
+ type: "error",
3327
+ children: error.message
3328
+ }),
3329
+ typeof results === "undefined" && typeof error === "undefined" && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_EmptyState__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {
3330
+ className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_13___default().emptyState),
3069
3331
  type: "info",
3070
3332
  children: [
3071
3333
  translate("results.empty-state.uninitialized"),
3072
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_SolveButton__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Z, {})
3334
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_SolveButton__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .Z, {})
3073
3335
  ]
3074
3336
  }),
3075
- typeof results !== "undefined" && typeof allResults !== "undefined" && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
3337
+ typeof results !== "undefined" && typeof allResults !== "undefined" && typeof error === "undefined" && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
3076
3338
  children: [
3077
- isOutdated && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_EmptyState__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
3078
- className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_12___default().emptyState),
3339
+ isOutdated && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_EmptyState__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {
3340
+ className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_13___default().emptyState),
3079
3341
  type: "info",
3080
3342
  children: [
3081
3343
  translate("results.empty-state.outdated"),
3082
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_SolveButton__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Z, {})
3344
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_SolveButton__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .Z, {})
3083
3345
  ]
3084
3346
  }),
3085
3347
  !isOutdated && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
3086
3348
  children: [
3087
- allResults.length === 0 && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_EmptyState__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
3088
- className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_12___default().emptyState),
3349
+ allResults.length === 0 && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_EmptyState__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {
3350
+ className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_13___default().emptyState),
3089
3351
  type: "warning",
3090
3352
  children: translate("results.empty-state.no-results")
3091
3353
  }),
3092
- allResults.length > 0 && results.length === 0 && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_EmptyState__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
3093
- className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_12___default().emptyState),
3354
+ allResults.length > 0 && results.length === 0 && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_EmptyState__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {
3355
+ className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_13___default().emptyState),
3094
3356
  type: "info",
3095
3357
  children: translate("results.empty-state.no-filtered-results")
3096
3358
  }),
3097
- allResults.length > 0 && results.length > 0 && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(react_window__WEBPACK_IMPORTED_MODULE_2__.FixedSizeList, {
3098
- className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_Results_module_scss__WEBPACK_IMPORTED_MODULE_12___default().list), {
3099
- [(_Results_module_scss__WEBPACK_IMPORTED_MODULE_12___default().outdated)]: isOutdated
3359
+ allResults.length > 0 && results.length > 0 && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(react_window__WEBPACK_IMPORTED_MODULE_3__.FixedSizeList, {
3360
+ className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_Results_module_scss__WEBPACK_IMPORTED_MODULE_13___default().list), {
3361
+ [(_Results_module_scss__WEBPACK_IMPORTED_MODULE_13___default().outdated)]: isOutdated
3100
3362
  }),
3101
- height: height - parameters__WEBPACK_IMPORTED_MODULE_3__/* .RESULTS_HEADER_HEIGHT */ .$L - parameters__WEBPACK_IMPORTED_MODULE_3__/* .RESULTS_INPUT_HEIGHT */ .qp,
3363
+ height: height - parameters__WEBPACK_IMPORTED_MODULE_4__/* .RESULTS_HEADER_HEIGHT */ .$L - parameters__WEBPACK_IMPORTED_MODULE_4__/* .RESULTS_INPUT_HEIGHT */ .qp,
3364
+ innerRef: listRef,
3102
3365
  itemCount: results.length,
3103
- itemSize: parameters__WEBPACK_IMPORTED_MODULE_3__/* .RESULTS_ITEM_HEIGHT */ .rx,
3366
+ itemSize: parameters__WEBPACK_IMPORTED_MODULE_4__/* .RESULTS_ITEM_HEIGHT */ .rx,
3104
3367
  width: width,
3105
- children: _Result__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Z
3368
+ children: _Result__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Z
3106
3369
  }),
3107
- allResults.length > 0 && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_ResultsInput__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
3108
- className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_12___default().input)
3370
+ allResults.length > 0 && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_ResultsInput__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z, {
3371
+ className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_13___default().input)
3109
3372
  })
3110
3373
  ]
3111
3374
  })
3112
3375
  ]
3113
3376
  }),
3114
- isLoading && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Loading__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {})
3377
+ isLoading && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Loading__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {})
3115
3378
  ]
3116
3379
  });
3117
3380
  };
@@ -3134,7 +3397,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
3134
3397
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
3135
3398
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6022);
3136
3399
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
3137
- /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(81245);
3400
+ /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6942);
3138
3401
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(51413);
3139
3402
  /* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(84095);
3140
3403
  /* harmony import */ var _Results_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(81177);
@@ -3260,7 +3523,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
3260
3523
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
3261
3524
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6022);
3262
3525
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_3__);
3263
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(92237);
3526
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(75558);
3264
3527
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(51413);
3265
3528
  /* harmony import */ var _ResultsInput_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(35628);
3266
3529
  /* harmony import */ var _ResultsInput_module_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_ResultsInput_module_scss__WEBPACK_IMPORTED_MODULE_6__);
@@ -3732,7 +3995,7 @@ __webpack_async_result__();
3732
3995
  /* harmony export */ });
3733
3996
  /* harmony import */ var _scrabble_solver_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34046);
3734
3997
  /* harmony import */ var _scrabble_solver_types__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_scrabble_solver_types__WEBPACK_IMPORTED_MODULE_0__);
3735
- /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(81245);
3998
+ /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6942);
3736
3999
  /* harmony import */ var _LocaleSetting_module_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(38997);
3737
4000
  /* harmony import */ var _LocaleSetting_module_scss__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_LocaleSetting_module_scss__WEBPACK_IMPORTED_MODULE_2__);
3738
4001
 
@@ -3837,7 +4100,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
3837
4100
  /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
3838
4101
  /* harmony import */ var react_modal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19931);
3839
4102
  /* harmony import */ var react_modal__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_modal__WEBPACK_IMPORTED_MODULE_2__);
3840
- /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(81245);
4103
+ /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6942);
3841
4104
  /* harmony import */ var parameters__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(90485);
3842
4105
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(51413);
3843
4106
  /* harmony import */ var _SquareButton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(49021);
@@ -3880,7 +4143,7 @@ const Sidebar = ({ children , className , isOpen , title , onClose })=>{
3880
4143
  }),
3881
4144
  /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_SquareButton__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {
3882
4145
  className: (_Sidebar_module_scss__WEBPACK_IMPORTED_MODULE_8___default().closeButton),
3883
- Icon: icons__WEBPACK_IMPORTED_MODULE_3__/* .Cross */ .X1,
4146
+ Icon: icons__WEBPACK_IMPORTED_MODULE_3__/* .CrossFill */ .ME,
3884
4147
  tooltip: translate("common.close"),
3885
4148
  onClick: onClose
3886
4149
  })
@@ -4050,7 +4313,6 @@ const Link = ({ className , Icon , tooltip , ...props })=>{
4050
4313
  const triggerProps = (0,_Tooltip__WEBPACK_IMPORTED_MODULE_2__/* .useTooltip */ .l)(tooltip, props);
4051
4314
  return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("a", {
4052
4315
  className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_SquareButton_module_scss__WEBPACK_IMPORTED_MODULE_3___default().squareButton), className),
4053
- type: "button",
4054
4316
  ...props,
4055
4317
  ...triggerProps,
4056
4318
  children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("span", {
@@ -4181,8 +4443,8 @@ var jsx_runtime_ = __webpack_require__(20997);
4181
4443
  var build = __webpack_require__(7618);
4182
4444
  // EXTERNAL MODULE: external "react"
4183
4445
  var external_react_ = __webpack_require__(16689);
4184
- // EXTERNAL MODULE: ./src/lib/index.ts + 27 modules
4185
- var lib = __webpack_require__(92237);
4446
+ // EXTERNAL MODULE: ./src/lib/index.ts + 29 modules
4447
+ var lib = __webpack_require__(75558);
4186
4448
  // EXTERNAL MODULE: external "classnames"
4187
4449
  var external_classnames_ = __webpack_require__(59003);
4188
4450
  var external_classnames_default = /*#__PURE__*/__webpack_require__.n(external_classnames_);
@@ -4194,8 +4456,7 @@ var Tile_module_default = /*#__PURE__*/__webpack_require__.n(Tile_module);
4194
4456
 
4195
4457
 
4196
4458
 
4197
- const handleChange = (event)=>event.preventDefault();
4198
- const TilePure = ({ autoFocus , canShowPoints , character , className , disabled , highlighted , inputRef , inputStyle , isBlank , placeholder , points , pointsStyle , raised , style , tabIndex , onFocus , onKeyDown , })=>/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
4459
+ const TilePure = ({ autoFocus , canShowPoints , character , className , disabled , highlighted , inputRef , inputStyle , isBlank , placeholder , points , pointsStyle , raised , style , tabIndex , onChange , onFocus , onKeyDown , })=>/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
4199
4460
  className: external_classnames_default()((Tile_module_default()).tile, className, {
4200
4461
  [(Tile_module_default()).highlighted]: highlighted,
4201
4462
  [(Tile_module_default()).blank]: isBlank,
@@ -4215,14 +4476,13 @@ const TilePure = ({ autoFocus , canShowPoints , character , className , disabled
4215
4476
  autoFocus: autoFocus,
4216
4477
  className: (Tile_module_default()).character,
4217
4478
  disabled: disabled,
4218
- maxLength: 1,
4219
4479
  placeholder: placeholder,
4220
4480
  ref: inputRef,
4221
4481
  spellCheck: false,
4222
4482
  style: inputStyle,
4223
4483
  tabIndex: tabIndex,
4224
4484
  value: character || "",
4225
- onChange: handleChange,
4485
+ onChange: onChange,
4226
4486
  onFocus: onFocus,
4227
4487
  onKeyDown: onKeyDown
4228
4488
  }),
@@ -4241,7 +4501,7 @@ const TilePure = ({ autoFocus , canShowPoints , character , className , disabled
4241
4501
 
4242
4502
 
4243
4503
 
4244
- const Tile = ({ autoFocus , className , character ="" , disabled , highlighted , inputRef: ref , isBlank , placeholder , points , raised , size , tabIndex , onFocus , onKeyDown , })=>{
4504
+ const Tile = ({ autoFocus , className , character ="" , disabled , highlighted , inputRef: ref , isBlank , placeholder , points , raised , size , tabIndex , onChange , onFocus =lib/* noop */.ZT , onKeyDown =lib/* noop */.ZT , })=>{
4245
4505
  const { pointsFontSize , tileFontSize , tileSize } = (0,lib/* getTileSizes */.vc)(size);
4246
4506
  const style = (0,external_react_.useMemo)(()=>({
4247
4507
  height: tileSize,
@@ -4264,6 +4524,10 @@ const Tile = ({ autoFocus , className , character ="" , disabled , highlighted ,
4264
4524
  ]);
4265
4525
  const isEmpty = !character || character === build.EMPTY_CELL;
4266
4526
  const canShowPoints = (isBlank || !isEmpty) && typeof points !== "undefined";
4527
+ const handleKeyDown = (event)=>{
4528
+ inputRef.current?.select();
4529
+ onKeyDown(event);
4530
+ };
4267
4531
  (0,external_react_.useEffect)(()=>{
4268
4532
  if (autoFocus && inputRef.current) {
4269
4533
  inputRef.current.focus();
@@ -4288,8 +4552,9 @@ const Tile = ({ autoFocus , className , character ="" , disabled , highlighted ,
4288
4552
  raised: raised,
4289
4553
  style: style,
4290
4554
  tabIndex: tabIndex,
4555
+ onChange: onChange,
4291
4556
  onFocus: onFocus,
4292
- onKeyDown: onKeyDown
4557
+ onKeyDown: handleKeyDown
4293
4558
  });
4294
4559
  };
4295
4560
  /* harmony default export */ const Tile_Tile = (Tile);
@@ -4379,7 +4644,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
4379
4644
  /* harmony import */ var react_use__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(69755);
4380
4645
  /* harmony import */ var react_use__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_use__WEBPACK_IMPORTED_MODULE_4__);
4381
4646
  /* harmony import */ var hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(26183);
4382
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(92237);
4647
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(75558);
4383
4648
  /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(8550);
4384
4649
  /* harmony import */ var _Tooltip_module_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(222);
4385
4650
  /* harmony import */ var _Tooltip_module_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_Tooltip_module_scss__WEBPACK_IMPORTED_MODULE_8__);
@@ -4533,6 +4798,118 @@ const Well = /*#__PURE__*/ (0,external_react_.forwardRef)(({ children , classNam
4533
4798
 
4534
4799
 
4535
4800
 
4801
+ /***/ }),
4802
+
4803
+ /***/ 81478:
4804
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
4805
+
4806
+ "use strict";
4807
+ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
4808
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4809
+ /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
4810
+ /* harmony export */ });
4811
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
4812
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
4813
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59003);
4814
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
4815
+ /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6942);
4816
+ /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(51413);
4817
+ /* harmony import */ var _Badge__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(99874);
4818
+ /* harmony import */ var _Sidebar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(714);
4819
+ /* harmony import */ var _Words_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(8258);
4820
+ /* harmony import */ var _Words_module_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_Words_module_scss__WEBPACK_IMPORTED_MODULE_6__);
4821
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_3__, _Sidebar__WEBPACK_IMPORTED_MODULE_5__]);
4822
+ ([state__WEBPACK_IMPORTED_MODULE_3__, _Sidebar__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
4823
+
4824
+
4825
+
4826
+
4827
+
4828
+
4829
+
4830
+ const Words = ({ className , isOpen , onClose })=>{
4831
+ const translate = (0,state__WEBPACK_IMPORTED_MODULE_3__/* .useTranslate */ .qM)();
4832
+ const { invalidWords , validWords } = (0,state__WEBPACK_IMPORTED_MODULE_3__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_3__/* .selectVerify */ .HM);
4833
+ return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Sidebar__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
4834
+ className: className,
4835
+ isOpen: isOpen,
4836
+ title: translate("words"),
4837
+ onClose: onClose,
4838
+ children: [
4839
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Sidebar__WEBPACK_IMPORTED_MODULE_5__/* ["default"].Section */ .Z.Section, {
4840
+ title: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("span", {
4841
+ className: (_Words_module_scss__WEBPACK_IMPORTED_MODULE_6___default().title),
4842
+ children: [
4843
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("span", {
4844
+ children: translate("words.invalid")
4845
+ }),
4846
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Badge__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z, {
4847
+ className: (_Words_module_scss__WEBPACK_IMPORTED_MODULE_6___default().badge),
4848
+ children: invalidWords.length
4849
+ })
4850
+ ]
4851
+ }),
4852
+ children: invalidWords.map((word, index)=>/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
4853
+ className: (_Words_module_scss__WEBPACK_IMPORTED_MODULE_6___default().word),
4854
+ children: [
4855
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(icons__WEBPACK_IMPORTED_MODULE_2__/* .Cross */ .X1, {
4856
+ className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_Words_module_scss__WEBPACK_IMPORTED_MODULE_6___default().icon), (_Words_module_scss__WEBPACK_IMPORTED_MODULE_6___default().invalid))
4857
+ }),
4858
+ " ",
4859
+ word
4860
+ ]
4861
+ }, index))
4862
+ }),
4863
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Sidebar__WEBPACK_IMPORTED_MODULE_5__/* ["default"].Section */ .Z.Section, {
4864
+ title: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("span", {
4865
+ className: (_Words_module_scss__WEBPACK_IMPORTED_MODULE_6___default().title),
4866
+ children: [
4867
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("span", {
4868
+ children: translate("words.valid")
4869
+ }),
4870
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Badge__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z, {
4871
+ className: (_Words_module_scss__WEBPACK_IMPORTED_MODULE_6___default().badge),
4872
+ children: validWords.length
4873
+ })
4874
+ ]
4875
+ }),
4876
+ children: validWords.map((word, index)=>/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
4877
+ className: (_Words_module_scss__WEBPACK_IMPORTED_MODULE_6___default().word),
4878
+ children: [
4879
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(icons__WEBPACK_IMPORTED_MODULE_2__/* .Check */ .Jr, {
4880
+ className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_Words_module_scss__WEBPACK_IMPORTED_MODULE_6___default().icon), (_Words_module_scss__WEBPACK_IMPORTED_MODULE_6___default().valid))
4881
+ }),
4882
+ " ",
4883
+ word
4884
+ ]
4885
+ }, index))
4886
+ })
4887
+ ]
4888
+ });
4889
+ };
4890
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Words);
4891
+
4892
+ __webpack_async_result__();
4893
+ } catch(e) { __webpack_async_result__(e); } });
4894
+
4895
+ /***/ }),
4896
+
4897
+ /***/ 63186:
4898
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
4899
+
4900
+ "use strict";
4901
+ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
4902
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4903
+ /* harmony export */ "Z": () => (/* reexport safe */ _Words__WEBPACK_IMPORTED_MODULE_0__.Z)
4904
+ /* harmony export */ });
4905
+ /* harmony import */ var _Words__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81478);
4906
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_Words__WEBPACK_IMPORTED_MODULE_0__]);
4907
+ _Words__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
4908
+
4909
+
4910
+ __webpack_async_result__();
4911
+ } catch(e) { __webpack_async_result__(e); } });
4912
+
4536
4913
  /***/ }),
4537
4914
 
4538
4915
  /***/ 44515:
@@ -4541,49 +4918,54 @@ const Well = /*#__PURE__*/ (0,external_react_.forwardRef)(({ children , classNam
4541
4918
  "use strict";
4542
4919
  __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
4543
4920
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4544
- /* harmony export */ "$l": () => (/* reexport safe */ _Board__WEBPACK_IMPORTED_MODULE_0__.Z),
4545
- /* harmony export */ "F4": () => (/* reexport safe */ _Rack__WEBPACK_IMPORTED_MODULE_13__.Z),
4546
- /* harmony export */ "TR": () => (/* reexport safe */ _Logo__WEBPACK_IMPORTED_MODULE_9__.Z),
4547
- /* harmony export */ "TX": () => (/* reexport safe */ _NotFound__WEBPACK_IMPORTED_MODULE_11__.Z),
4548
- /* harmony export */ "Xy": () => (/* reexport safe */ _Dictionary__WEBPACK_IMPORTED_MODULE_3__.Z),
4549
- /* harmony export */ "Z$": () => (/* reexport safe */ _DictionaryInput__WEBPACK_IMPORTED_MODULE_4__.Z),
4550
- /* harmony export */ "Zr": () => (/* reexport safe */ _Settings__WEBPACK_IMPORTED_MODULE_19__.Z),
4551
- /* harmony export */ "_m": () => (/* reexport safe */ _NavButtons__WEBPACK_IMPORTED_MODULE_10__.Z),
4552
- /* harmony export */ "d4": () => (/* reexport safe */ _KeyMap__WEBPACK_IMPORTED_MODULE_7__.Z),
4553
- /* harmony export */ "fs": () => (/* reexport safe */ _RemainingTiles__WEBPACK_IMPORTED_MODULE_15__.Z),
4554
- /* harmony export */ "hX": () => (/* reexport safe */ _Splash__WEBPACK_IMPORTED_MODULE_21__.Z),
4555
- /* harmony export */ "tW": () => (/* reexport safe */ _Well__WEBPACK_IMPORTED_MODULE_26__.Z),
4556
- /* harmony export */ "u9": () => (/* reexport safe */ _Results__WEBPACK_IMPORTED_MODULE_16__.Z)
4921
+ /* harmony export */ "$l": () => (/* reexport safe */ _Board__WEBPACK_IMPORTED_MODULE_1__.Z),
4922
+ /* harmony export */ "F4": () => (/* reexport safe */ _Rack__WEBPACK_IMPORTED_MODULE_14__.Z),
4923
+ /* harmony export */ "Nq": () => (/* reexport safe */ _Words__WEBPACK_IMPORTED_MODULE_28__.Z),
4924
+ /* harmony export */ "TR": () => (/* reexport safe */ _Logo__WEBPACK_IMPORTED_MODULE_10__.Z),
4925
+ /* harmony export */ "TX": () => (/* reexport safe */ _NotFound__WEBPACK_IMPORTED_MODULE_12__.Z),
4926
+ /* harmony export */ "Xy": () => (/* reexport safe */ _Dictionary__WEBPACK_IMPORTED_MODULE_4__.Z),
4927
+ /* harmony export */ "Z$": () => (/* reexport safe */ _DictionaryInput__WEBPACK_IMPORTED_MODULE_5__.Z),
4928
+ /* harmony export */ "Zr": () => (/* reexport safe */ _Settings__WEBPACK_IMPORTED_MODULE_20__.Z),
4929
+ /* harmony export */ "_m": () => (/* reexport safe */ _NavButtons__WEBPACK_IMPORTED_MODULE_11__.Z),
4930
+ /* harmony export */ "d4": () => (/* reexport safe */ _KeyMap__WEBPACK_IMPORTED_MODULE_8__.Z),
4931
+ /* harmony export */ "fs": () => (/* reexport safe */ _RemainingTiles__WEBPACK_IMPORTED_MODULE_16__.Z),
4932
+ /* harmony export */ "hX": () => (/* reexport safe */ _Splash__WEBPACK_IMPORTED_MODULE_22__.Z),
4933
+ /* harmony export */ "tW": () => (/* reexport safe */ _Well__WEBPACK_IMPORTED_MODULE_27__.Z),
4934
+ /* harmony export */ "u9": () => (/* reexport safe */ _Results__WEBPACK_IMPORTED_MODULE_17__.Z)
4557
4935
  /* harmony export */ });
4558
- /* harmony import */ var _Board__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(83774);
4559
- /* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(84095);
4560
- /* harmony import */ var _Checkbox__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(85603);
4561
- /* harmony import */ var _Dictionary__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(28135);
4562
- /* harmony import */ var _DictionaryInput__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(73580);
4563
- /* harmony import */ var _EmptyState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(79590);
4564
- /* harmony import */ var _Key__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(50237);
4565
- /* harmony import */ var _KeyMap__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(37870);
4566
- /* harmony import */ var _Loading__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(85907);
4567
- /* harmony import */ var _Logo__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(2401);
4568
- /* harmony import */ var _NavButtons__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(63495);
4569
- /* harmony import */ var _NotFound__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(92293);
4570
- /* harmony import */ var _PlainTiles__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(14015);
4571
- /* harmony import */ var _Rack__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(75138);
4572
- /* harmony import */ var _Radio__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(79845);
4573
- /* harmony import */ var _RemainingTiles__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(63233);
4574
- /* harmony import */ var _Results__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(65637);
4575
- /* harmony import */ var _ResultsInput__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(57345);
4576
- /* harmony import */ var _Screen__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(68197);
4577
- /* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(94253);
4578
- /* harmony import */ var _Sidebar__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(714);
4579
- /* harmony import */ var _Splash__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(72617);
4580
- /* harmony import */ var _SquareButton__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(49021);
4581
- /* harmony import */ var _SvgFontCss__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(8895);
4582
- /* harmony import */ var _Tile__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(54031);
4583
- /* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(73778);
4584
- /* harmony import */ var _Well__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(17084);
4585
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_Board__WEBPACK_IMPORTED_MODULE_0__, _Button__WEBPACK_IMPORTED_MODULE_1__, _Dictionary__WEBPACK_IMPORTED_MODULE_3__, _DictionaryInput__WEBPACK_IMPORTED_MODULE_4__, _EmptyState__WEBPACK_IMPORTED_MODULE_5__, _KeyMap__WEBPACK_IMPORTED_MODULE_7__, _Loading__WEBPACK_IMPORTED_MODULE_8__, _NavButtons__WEBPACK_IMPORTED_MODULE_10__, _Rack__WEBPACK_IMPORTED_MODULE_13__, _RemainingTiles__WEBPACK_IMPORTED_MODULE_15__, _Results__WEBPACK_IMPORTED_MODULE_16__, _ResultsInput__WEBPACK_IMPORTED_MODULE_17__, _Settings__WEBPACK_IMPORTED_MODULE_19__, _Sidebar__WEBPACK_IMPORTED_MODULE_20__, _SquareButton__WEBPACK_IMPORTED_MODULE_22__, _Tooltip__WEBPACK_IMPORTED_MODULE_25__]);
4586
- ([_Board__WEBPACK_IMPORTED_MODULE_0__, _Button__WEBPACK_IMPORTED_MODULE_1__, _Dictionary__WEBPACK_IMPORTED_MODULE_3__, _DictionaryInput__WEBPACK_IMPORTED_MODULE_4__, _EmptyState__WEBPACK_IMPORTED_MODULE_5__, _KeyMap__WEBPACK_IMPORTED_MODULE_7__, _Loading__WEBPACK_IMPORTED_MODULE_8__, _NavButtons__WEBPACK_IMPORTED_MODULE_10__, _Rack__WEBPACK_IMPORTED_MODULE_13__, _RemainingTiles__WEBPACK_IMPORTED_MODULE_15__, _Results__WEBPACK_IMPORTED_MODULE_16__, _ResultsInput__WEBPACK_IMPORTED_MODULE_17__, _Settings__WEBPACK_IMPORTED_MODULE_19__, _Sidebar__WEBPACK_IMPORTED_MODULE_20__, _SquareButton__WEBPACK_IMPORTED_MODULE_22__, _Tooltip__WEBPACK_IMPORTED_MODULE_25__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
4936
+ /* harmony import */ var _Badge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(99874);
4937
+ /* harmony import */ var _Board__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(83774);
4938
+ /* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84095);
4939
+ /* harmony import */ var _Checkbox__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(85603);
4940
+ /* harmony import */ var _Dictionary__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(28135);
4941
+ /* harmony import */ var _DictionaryInput__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(73580);
4942
+ /* harmony import */ var _EmptyState__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(79590);
4943
+ /* harmony import */ var _Key__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(50237);
4944
+ /* harmony import */ var _KeyMap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(37870);
4945
+ /* harmony import */ var _Loading__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(85907);
4946
+ /* harmony import */ var _Logo__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(2401);
4947
+ /* harmony import */ var _NavButtons__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(63495);
4948
+ /* harmony import */ var _NotFound__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(92293);
4949
+ /* harmony import */ var _PlainTiles__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(14015);
4950
+ /* harmony import */ var _Rack__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(75138);
4951
+ /* harmony import */ var _Radio__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(79845);
4952
+ /* harmony import */ var _RemainingTiles__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(63233);
4953
+ /* harmony import */ var _Results__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(65637);
4954
+ /* harmony import */ var _ResultsInput__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(57345);
4955
+ /* harmony import */ var _Screen__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(68197);
4956
+ /* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(94253);
4957
+ /* harmony import */ var _Sidebar__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(714);
4958
+ /* harmony import */ var _Splash__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(72617);
4959
+ /* harmony import */ var _SquareButton__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(49021);
4960
+ /* harmony import */ var _SvgFontCss__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(8895);
4961
+ /* harmony import */ var _Tile__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(54031);
4962
+ /* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(73778);
4963
+ /* harmony import */ var _Well__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(17084);
4964
+ /* harmony import */ var _Words__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(63186);
4965
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_Board__WEBPACK_IMPORTED_MODULE_1__, _Button__WEBPACK_IMPORTED_MODULE_2__, _Dictionary__WEBPACK_IMPORTED_MODULE_4__, _DictionaryInput__WEBPACK_IMPORTED_MODULE_5__, _EmptyState__WEBPACK_IMPORTED_MODULE_6__, _KeyMap__WEBPACK_IMPORTED_MODULE_8__, _Loading__WEBPACK_IMPORTED_MODULE_9__, _NavButtons__WEBPACK_IMPORTED_MODULE_11__, _Rack__WEBPACK_IMPORTED_MODULE_14__, _RemainingTiles__WEBPACK_IMPORTED_MODULE_16__, _Results__WEBPACK_IMPORTED_MODULE_17__, _ResultsInput__WEBPACK_IMPORTED_MODULE_18__, _Settings__WEBPACK_IMPORTED_MODULE_20__, _Sidebar__WEBPACK_IMPORTED_MODULE_21__, _SquareButton__WEBPACK_IMPORTED_MODULE_23__, _Tooltip__WEBPACK_IMPORTED_MODULE_26__, _Words__WEBPACK_IMPORTED_MODULE_28__]);
4966
+ ([_Board__WEBPACK_IMPORTED_MODULE_1__, _Button__WEBPACK_IMPORTED_MODULE_2__, _Dictionary__WEBPACK_IMPORTED_MODULE_4__, _DictionaryInput__WEBPACK_IMPORTED_MODULE_5__, _EmptyState__WEBPACK_IMPORTED_MODULE_6__, _KeyMap__WEBPACK_IMPORTED_MODULE_8__, _Loading__WEBPACK_IMPORTED_MODULE_9__, _NavButtons__WEBPACK_IMPORTED_MODULE_11__, _Rack__WEBPACK_IMPORTED_MODULE_14__, _RemainingTiles__WEBPACK_IMPORTED_MODULE_16__, _Results__WEBPACK_IMPORTED_MODULE_17__, _ResultsInput__WEBPACK_IMPORTED_MODULE_18__, _Settings__WEBPACK_IMPORTED_MODULE_20__, _Sidebar__WEBPACK_IMPORTED_MODULE_21__, _SquareButton__WEBPACK_IMPORTED_MODULE_23__, _Tooltip__WEBPACK_IMPORTED_MODULE_26__, _Words__WEBPACK_IMPORTED_MODULE_28__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
4967
+
4968
+
4587
4969
 
4588
4970
 
4589
4971
 
@@ -4820,7 +5202,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
4820
5202
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
4821
5203
  /* harmony import */ var react_use__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69755);
4822
5204
  /* harmony import */ var react_use__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_use__WEBPACK_IMPORTED_MODULE_2__);
4823
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(92237);
5205
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(75558);
4824
5206
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(51413);
4825
5207
  var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_4__]);
4826
5208
  state__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
@@ -4919,7 +5301,7 @@ __webpack_async_result__();
4919
5301
  /* harmony import */ var react_dom_client__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom_client__WEBPACK_IMPORTED_MODULE_2__);
4920
5302
  /* harmony import */ var react_portal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(63938);
4921
5303
  /* harmony import */ var react_portal__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_portal__WEBPACK_IMPORTED_MODULE_3__);
4922
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(92237);
5304
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(75558);
4923
5305
 
4924
5306
 
4925
5307
 
@@ -4993,7 +5375,7 @@ __webpack_async_result__();
4993
5375
 
4994
5376
  /***/ }),
4995
5377
 
4996
- /***/ 81245:
5378
+ /***/ 6942:
4997
5379
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4998
5380
 
4999
5381
  "use strict";
@@ -5004,8 +5386,11 @@ __webpack_require__.d(__webpack_exports__, {
5004
5386
  "Xd": () => (/* reexport */ ArrowLeft),
5005
5387
  "ol": () => (/* reexport */ ArrowRight),
5006
5388
  "a2": () => (/* reexport */ ArrowUp),
5389
+ "PP": () => (/* reexport */ BookHalf),
5390
+ "Jr": () => (/* reexport */ Check),
5007
5391
  "Oz": () => (/* reexport */ Cog),
5008
5392
  "X1": () => (/* reexport */ Cross),
5393
+ "ME": () => (/* reexport */ CrossFill),
5009
5394
  "XK": () => (/* reexport */ DashCircleFill),
5010
5395
  "Gs": () => (/* reexport */ Eraser),
5011
5396
  "WN": () => (/* reexport */ Flag),
@@ -5108,6 +5493,44 @@ var SvgArrowUp = function SvgArrowUp(props) {
5108
5493
  };
5109
5494
 
5110
5495
  /* harmony default export */ const ArrowUp = (SvgArrowUp);
5496
+ ;// CONCATENATED MODULE: ./src/icons/BookHalf.svg
5497
+ var BookHalf_path;
5498
+
5499
+ function BookHalf_extends() { BookHalf_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return BookHalf_extends.apply(this, arguments); }
5500
+
5501
+
5502
+
5503
+ var SvgBookHalf = function SvgBookHalf(props) {
5504
+ return /*#__PURE__*/external_react_.createElement("svg", BookHalf_extends({
5505
+ viewBox: "0 0 16 16",
5506
+ xmlns: "http://www.w3.org/2000/svg",
5507
+ role: "img"
5508
+ }, props), BookHalf_path || (BookHalf_path = /*#__PURE__*/external_react_.createElement("path", {
5509
+ d: "M8.5 2.687c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492V2.687zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783z",
5510
+ fill: "currentColor"
5511
+ })));
5512
+ };
5513
+
5514
+ /* harmony default export */ const BookHalf = (SvgBookHalf);
5515
+ ;// CONCATENATED MODULE: ./src/icons/Check.svg
5516
+ var Check_path;
5517
+
5518
+ function Check_extends() { Check_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return Check_extends.apply(this, arguments); }
5519
+
5520
+
5521
+
5522
+ var SvgCheck = function SvgCheck(props) {
5523
+ return /*#__PURE__*/external_react_.createElement("svg", Check_extends({
5524
+ viewBox: "0 0 16 16",
5525
+ xmlns: "http://www.w3.org/2000/svg",
5526
+ role: "img"
5527
+ }, props), Check_path || (Check_path = /*#__PURE__*/external_react_.createElement("path", {
5528
+ d: "M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z",
5529
+ fill: "currentColor"
5530
+ })));
5531
+ };
5532
+
5533
+ /* harmony default export */ const Check = (SvgCheck);
5111
5534
  ;// CONCATENATED MODULE: ./src/icons/CheckboxChecked.svg
5112
5535
  var CheckboxChecked_path;
5113
5536
 
@@ -5178,12 +5601,31 @@ var SvgCross = function SvgCross(props) {
5178
5601
  xmlns: "http://www.w3.org/2000/svg",
5179
5602
  role: "img"
5180
5603
  }, props), Cross_path || (Cross_path = /*#__PURE__*/external_react_.createElement("path", {
5181
- d: "M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm3.354 4.646L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 1 1 .708-.708z",
5604
+ d: "M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z",
5182
5605
  fill: "currentColor"
5183
5606
  })));
5184
5607
  };
5185
5608
 
5186
5609
  /* harmony default export */ const Cross = (SvgCross);
5610
+ ;// CONCATENATED MODULE: ./src/icons/CrossFill.svg
5611
+ var CrossFill_path;
5612
+
5613
+ function CrossFill_extends() { CrossFill_extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return CrossFill_extends.apply(this, arguments); }
5614
+
5615
+
5616
+
5617
+ var SvgCrossFill = function SvgCrossFill(props) {
5618
+ return /*#__PURE__*/external_react_.createElement("svg", CrossFill_extends({
5619
+ viewBox: "0 0 16 16",
5620
+ xmlns: "http://www.w3.org/2000/svg",
5621
+ role: "img"
5622
+ }, props), CrossFill_path || (CrossFill_path = /*#__PURE__*/external_react_.createElement("path", {
5623
+ d: "M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm3.354 4.646L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 1 1 .708-.708z",
5624
+ fill: "currentColor"
5625
+ })));
5626
+ };
5627
+
5628
+ /* harmony default export */ const CrossFill = (SvgCrossFill);
5187
5629
  ;// CONCATENATED MODULE: ./src/icons/DashCircleFill.svg
5188
5630
  var DashCircleFill_path;
5189
5631
 
@@ -5611,6 +6053,9 @@ var SvgStar = function SvgStar(props) {
5611
6053
 
5612
6054
 
5613
6055
 
6056
+
6057
+
6058
+
5614
6059
 
5615
6060
 
5616
6061