@scrabble-solver/scrabble-solver 2.11.5 → 2.11.7

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 (98) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +11 -11
  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/edge-server-production/0.pack +0 -0
  9. package/.next/cache/webpack/edge-server-production/index.pack +0 -0
  10. package/.next/cache/webpack/server-production/0.pack +0 -0
  11. package/.next/cache/webpack/server-production/index.pack +0 -0
  12. package/.next/next-server.js.nft.json +1 -1
  13. package/.next/prerender-manifest.json +1 -1
  14. package/.next/routes-manifest.json +1 -1
  15. package/.next/server/chunks/277.js +778 -746
  16. package/.next/server/middleware-build-manifest.js +1 -1
  17. package/.next/server/pages/404.html +1 -5
  18. package/.next/server/pages/404.js.nft.json +1 -1
  19. package/.next/server/pages/500.html +1 -1
  20. package/.next/server/pages/_app.js +9 -2
  21. package/.next/server/pages/_app.js.nft.json +1 -1
  22. package/.next/server/pages/api/solve.js +29 -1
  23. package/.next/server/pages/index.html +1 -1
  24. package/.next/server/pages/index.js +10 -4
  25. package/.next/server/pages/index.js.nft.json +1 -1
  26. package/.next/server/pages/index.json +1 -1
  27. package/.next/static/chunks/framework-2c5cac93e8c637b5.js +49 -0
  28. package/.next/static/chunks/pages/{404-d30fe85d005ce32b.js → 404-ca203fa27afc37d8.js} +1 -1
  29. package/.next/static/chunks/pages/_app-e89a3c225b87516a.js +28 -0
  30. package/.next/static/chunks/pages/index-58744f49bf6b891f.js +1 -0
  31. package/.next/static/css/34adfcf12a7d9bb6.css +1 -0
  32. package/.next/static/css/edaeaa48321b4cf2.css +2 -0
  33. package/.next/static/uhB6d-q63uRC6RubwepLq/_buildManifest.js +1 -0
  34. package/.next/trace +50 -50
  35. package/package.json +9 -9
  36. package/src/components/Board/Board.module.scss +2 -59
  37. package/src/components/Board/Board.tsx +22 -10
  38. package/src/components/Board/BoardPure.tsx +13 -8
  39. package/src/components/Board/components/Cell/Cell.module.scss +8 -144
  40. package/src/components/Board/components/Cell/Cell.tsx +18 -37
  41. package/src/components/Board/hooks/index.ts +1 -0
  42. package/src/components/Board/hooks/useBackgroundImage.tsx +170 -0
  43. package/src/components/Board/lib/getBonusColor.ts +18 -0
  44. package/src/components/Board/lib/index.ts +1 -0
  45. package/src/components/Dictionary/Dictionary.module.scss +0 -1
  46. package/src/components/DictionaryInput/DictionaryInput.tsx +5 -3
  47. package/src/components/EmptyState/EmptyState.module.scss +0 -1
  48. package/src/components/Key/Key.module.scss +1 -1
  49. package/src/components/PlainTiles/PlainTiles.tsx +0 -10
  50. package/src/components/PlainTiles/Tile.tsx +1 -4
  51. package/src/components/Results/Cell.tsx +2 -2
  52. package/src/components/Results/Result.tsx +4 -8
  53. package/src/components/Results/Results.module.scss +5 -4
  54. package/src/components/Solver/Solver.tsx +2 -2
  55. package/src/components/Tooltip/Tooltip.module.scss +2 -0
  56. package/src/components/index.ts +0 -2
  57. package/src/hooks/useAppLayout.ts +1 -0
  58. package/src/hooks/useDirection.ts +2 -2
  59. package/src/hooks/useLanguage.ts +2 -2
  60. package/src/i18n/constants.ts +25 -16
  61. package/src/i18n/de.json +2 -2
  62. package/src/i18n/en.json +2 -2
  63. package/src/i18n/es.json +2 -2
  64. package/src/i18n/fa.json +2 -2
  65. package/src/i18n/fr.json +2 -2
  66. package/src/i18n/pl.json +2 -2
  67. package/src/lib/dataUrlToBlob.ts +20 -0
  68. package/src/lib/index.ts +1 -0
  69. package/src/modals/KeyMapModal/components/Mapping/Mapping.module.scss +0 -1
  70. package/src/modals/SettingsModal/components/ConfigSetting/ConfigSetting.module.scss +0 -1
  71. package/src/modals/SettingsModal/components/LocaleSetting/LocaleSetting.module.scss +0 -5
  72. package/src/pages/_app.tsx +1 -3
  73. package/src/pages/index.tsx +1 -3
  74. package/src/parameters/index.ts +33 -2
  75. package/src/state/index.ts +1 -1
  76. package/src/state/sagas.ts +3 -4
  77. package/src/state/store.ts +34 -0
  78. package/src/styles/global.scss +4 -8
  79. package/src/styles/mixins.scss +0 -1
  80. package/src/styles/variables.scss +5 -5
  81. package/.next/static/UzQCOB6CHhyOupkEq8oZM/_buildManifest.js +0 -1
  82. package/.next/static/chunks/framework-2c79e2a64abdb08b.js +0 -33
  83. package/.next/static/chunks/pages/_app-e27464a187a58684.js +0 -28
  84. package/.next/static/chunks/pages/index-3fd280f406cc00fd.js +0 -1
  85. package/.next/static/css/4bd04cebe207859c.css +0 -1
  86. package/.next/static/css/5b3b78170f4c5875.css +0 -2
  87. package/src/components/Board/components/Cell/CellPure.tsx +0 -93
  88. package/src/components/Board/components/Cell/lib.ts +0 -59
  89. package/src/components/SvgFontCss/SvgFontCss.tsx +0 -14
  90. package/src/components/SvgFontCss/createCss.ts +0 -11
  91. package/src/components/SvgFontCss/createStyle.ts +0 -9
  92. package/src/components/SvgFontCss/createSvg.ts +0 -10
  93. package/src/components/SvgFontCss/index.ts +0 -1
  94. package/src/components/SvgFontFix/SvgFontFix.module.scss +0 -5
  95. package/src/components/SvgFontFix/SvgFontFix.tsx +0 -21
  96. package/src/components/SvgFontFix/index.ts +0 -1
  97. package/src/state/createAppStore.ts +0 -38
  98. /package/.next/static/{UzQCOB6CHhyOupkEq8oZM → uhB6d-q63uRC6RubwepLq}/_ssgManifest.js +0 -0
@@ -989,8 +989,6 @@ module.exports = {
989
989
  // Exports
990
990
  module.exports = {
991
991
  "board": "Board_board__eA_bB",
992
- "row": "Board_row__mezHN",
993
- "cell": "Board_cell__RJssv",
994
992
  "actions": "Board_actions__W2CX9",
995
993
  "hide": "Board_hide__Fskbc",
996
994
  "shown": "Board_shown__T9Txa",
@@ -1021,25 +1019,11 @@ module.exports = {
1021
1019
 
1022
1020
  // Exports
1023
1021
  module.exports = {
1024
- "cell": "Cell_cell__2GOSl",
1025
- "bottom": "Cell_bottom__kFkxx",
1026
- "right": "Cell_right__ItPQR",
1027
- "bonusStart": "Cell_bonusStart__zy3BV",
1028
- "bonusCharacter1": "Cell_bonusCharacter1__zJUuA",
1029
- "bonusCharacter2": "Cell_bonusCharacter2__HZDn8",
1030
- "bonusCharacter3": "Cell_bonusCharacter3__pWf1f",
1031
- "bonusCharacter5": "Cell_bonusCharacter5__LdDrj",
1032
- "bonusCharacterMultiplier2": "Cell_bonusCharacterMultiplier2__Qpcd7",
1033
- "bonusCharacterMultiplier3": "Cell_bonusCharacterMultiplier3__0qtZY",
1034
- "bonusWord2": "Cell_bonusWord2__Ztd1C",
1035
- "bonusWord3": "Cell_bonusWord3__eTB6G",
1036
- "filtered": "Cell_filtered__16gx1",
1037
- "sharpTopLeft": "Cell_sharpTopLeft__EGQgw",
1038
1022
  "tile": "Cell_tile__bTdCO",
1023
+ "sharpTopLeft": "Cell_sharpTopLeft__EGQgw",
1039
1024
  "sharpTopRight": "Cell_sharpTopRight__rzADZ",
1040
1025
  "sharpBottomLeft": "Cell_sharpBottomLeft__YGRug",
1041
- "sharpBottomRight": "Cell_sharpBottomRight__twtbd",
1042
- "icon": "Cell_icon__8EWsQ"
1026
+ "sharpBottomRight": "Cell_sharpBottomRight__twtbd"
1043
1027
  };
1044
1028
 
1045
1029
 
@@ -1389,17 +1373,6 @@ module.exports = {
1389
1373
  };
1390
1374
 
1391
1375
 
1392
- /***/ }),
1393
-
1394
- /***/ 35516:
1395
- /***/ ((module) => {
1396
-
1397
- // Exports
1398
- module.exports = {
1399
- "svgFontFix": "SvgFontFix_svgFontFix__nlq_B"
1400
- };
1401
-
1402
-
1403
1376
  /***/ }),
1404
1377
 
1405
1378
  /***/ 10312:
@@ -1570,15 +1543,17 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
1570
1543
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6022);
1571
1544
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_4__);
1572
1545
  /* harmony import */ var hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(75704);
1573
- /* harmony import */ var parameters__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(64534);
1574
- /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(83067);
1575
- /* harmony import */ var _Board_module_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(33791);
1576
- /* harmony import */ var _Board_module_scss__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_Board_module_scss__WEBPACK_IMPORTED_MODULE_11__);
1577
- /* harmony import */ var _BoardPure__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(86058);
1578
- /* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(94347);
1579
- /* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(48327);
1580
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_floating_ui_react__WEBPACK_IMPORTED_MODULE_1__, hooks__WEBPACK_IMPORTED_MODULE_5__, state__WEBPACK_IMPORTED_MODULE_7__, _BoardPure__WEBPACK_IMPORTED_MODULE_8__, _components__WEBPACK_IMPORTED_MODULE_9__, _hooks__WEBPACK_IMPORTED_MODULE_10__]);
1581
- ([_floating_ui_react__WEBPACK_IMPORTED_MODULE_1__, hooks__WEBPACK_IMPORTED_MODULE_5__, state__WEBPACK_IMPORTED_MODULE_7__, _BoardPure__WEBPACK_IMPORTED_MODULE_8__, _components__WEBPACK_IMPORTED_MODULE_9__, _hooks__WEBPACK_IMPORTED_MODULE_10__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
1546
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(55238);
1547
+ /* harmony import */ var parameters__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(64534);
1548
+ /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(83067);
1549
+ /* harmony import */ var _Board_module_scss__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(33791);
1550
+ /* harmony import */ var _Board_module_scss__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_Board_module_scss__WEBPACK_IMPORTED_MODULE_12__);
1551
+ /* harmony import */ var _BoardPure__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(86058);
1552
+ /* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(94347);
1553
+ /* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(48327);
1554
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_floating_ui_react__WEBPACK_IMPORTED_MODULE_1__, hooks__WEBPACK_IMPORTED_MODULE_5__, state__WEBPACK_IMPORTED_MODULE_8__, _BoardPure__WEBPACK_IMPORTED_MODULE_9__, _components__WEBPACK_IMPORTED_MODULE_10__, _hooks__WEBPACK_IMPORTED_MODULE_11__]);
1555
+ ([_floating_ui_react__WEBPACK_IMPORTED_MODULE_1__, hooks__WEBPACK_IMPORTED_MODULE_5__, state__WEBPACK_IMPORTED_MODULE_8__, _BoardPure__WEBPACK_IMPORTED_MODULE_9__, _components__WEBPACK_IMPORTED_MODULE_10__, _hooks__WEBPACK_IMPORTED_MODULE_11__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
1556
+
1582
1557
 
1583
1558
 
1584
1559
 
@@ -1591,21 +1566,34 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_flo
1591
1566
 
1592
1567
 
1593
1568
 
1594
- const Board = ({ cellSize , className })=>{
1569
+ const Board = ({ className })=>{
1595
1570
  const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_4__.useDispatch)();
1596
- const rows = (0,state__WEBPACK_IMPORTED_MODULE_7__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_7__/* .selectRowsWithCandidate */ .ZA);
1597
- const board = (0,state__WEBPACK_IMPORTED_MODULE_7__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_7__/* .selectBoard */ .ZO);
1598
- const { actionsWidth } = (0,hooks__WEBPACK_IMPORTED_MODULE_5__/* .useAppLayout */ .Ft)();
1599
- const [{ activeIndex , direction , inputRefs }, { onChange , onDirectionToggle , onFocus , onKeyDown , onPaste }] = (0,_hooks__WEBPACK_IMPORTED_MODULE_10__/* .useGrid */ .N)(rows);
1571
+ const rows = (0,state__WEBPACK_IMPORTED_MODULE_8__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_8__/* .selectRowsWithCandidate */ .ZA);
1572
+ const config = (0,state__WEBPACK_IMPORTED_MODULE_8__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_8__/* .selectConfig */ .$o);
1573
+ const { actionsWidth , cellSize } = (0,hooks__WEBPACK_IMPORTED_MODULE_5__/* .useAppLayout */ .Ft)();
1574
+ const { tileFontSize } = (0,lib__WEBPACK_IMPORTED_MODULE_6__/* .getTileSizes */ .vc)(cellSize);
1575
+ const [{ activeIndex , direction , inputRefs }, { onChange , onDirectionToggle , onFocus , onKeyDown , onPaste }] = (0,_hooks__WEBPACK_IMPORTED_MODULE_11__/* .useGrid */ .N)(rows);
1576
+ const backgroundImage = (0,_hooks__WEBPACK_IMPORTED_MODULE_11__/* .useBackgroundImage */ .c)();
1577
+ const boardStyle = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(()=>({
1578
+ backgroundImage,
1579
+ fontSize: tileFontSize,
1580
+ gridTemplateColumns: `repeat(${config.boardWidth}, 1fr)`,
1581
+ gridTemplateRows: `repeat(${config.boardHeight}, 1fr)`
1582
+ }), [
1583
+ backgroundImage,
1584
+ config.boardHeight,
1585
+ config.boardWidth,
1586
+ tileFontSize
1587
+ ]);
1588
+ const [showActions, setShowActions] = (0,react__WEBPACK_IMPORTED_MODULE_3__.useState)(false);
1589
+ const [transition, setTransition] = (0,react__WEBPACK_IMPORTED_MODULE_3__.useState)(parameters__WEBPACK_IMPORTED_MODULE_7__/* .TRANSITION */ .yz);
1600
1590
  const inputRef = inputRefs[activeIndex.y][activeIndex.x];
1601
1591
  const cell = rows[activeIndex.y][activeIndex.x];
1602
- const [showActions, setShowActions] = (0,react__WEBPACK_IMPORTED_MODULE_3__.useState)(false);
1603
- const [transition, setTransition] = (0,react__WEBPACK_IMPORTED_MODULE_3__.useState)(parameters__WEBPACK_IMPORTED_MODULE_6__/* .TRANSITION */ .yz);
1604
1592
  const { x , y , strategy , refs } = (0,_floating_ui_react__WEBPACK_IMPORTED_MODULE_1__.useFloating)({
1605
1593
  middleware: [
1606
1594
  (0,_floating_ui_react__WEBPACK_IMPORTED_MODULE_1__.offset)({
1607
- mainAxis: -parameters__WEBPACK_IMPORTED_MODULE_6__/* .BOARD_CELL_ACTIONS_OFFSET */ .IO,
1608
- alignmentAxis: parameters__WEBPACK_IMPORTED_MODULE_6__/* .BOARD_CELL_ACTIONS_OFFSET */ .IO - actionsWidth
1595
+ mainAxis: -parameters__WEBPACK_IMPORTED_MODULE_7__/* .BOARD_CELL_ACTIONS_OFFSET */ .IO,
1596
+ alignmentAxis: parameters__WEBPACK_IMPORTED_MODULE_7__/* .BOARD_CELL_ACTIONS_OFFSET */ .IO - actionsWidth
1609
1597
  }),
1610
1598
  (0,_floating_ui_react__WEBPACK_IMPORTED_MODULE_1__.shift)()
1611
1599
  ],
@@ -1654,7 +1642,7 @@ const Board = ({ cellSize , className })=>{
1654
1642
  ]);
1655
1643
  const handleToggleBlank = (0,react__WEBPACK_IMPORTED_MODULE_3__.useCallback)(()=>{
1656
1644
  inputRef.current?.focus();
1657
- dispatch(state__WEBPACK_IMPORTED_MODULE_7__/* .boardSlice.actions.toggleCellIsBlank */ .I8.actions.toggleCellIsBlank(cell));
1645
+ dispatch(state__WEBPACK_IMPORTED_MODULE_8__/* .boardSlice.actions.toggleCellIsBlank */ .I8.actions.toggleCellIsBlank(cell));
1658
1646
  }, [
1659
1647
  cell,
1660
1648
  dispatch,
@@ -1662,7 +1650,7 @@ const Board = ({ cellSize , className })=>{
1662
1650
  ]);
1663
1651
  const handleToggleFilterCell = (0,react__WEBPACK_IMPORTED_MODULE_3__.useCallback)(()=>{
1664
1652
  inputRef.current?.focus();
1665
- dispatch(state__WEBPACK_IMPORTED_MODULE_7__/* .cellFilterSlice.actions.toggle */ .mO.actions.toggle(cell));
1653
+ dispatch(state__WEBPACK_IMPORTED_MODULE_8__/* .cellFilterSlice.actions.toggle */ .mO.actions.toggle(cell));
1666
1654
  }, [
1667
1655
  cell,
1668
1656
  dispatch,
@@ -1670,12 +1658,12 @@ const Board = ({ cellSize , className })=>{
1670
1658
  ]);
1671
1659
  return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
1672
1660
  children: [
1673
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_BoardPure__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z, {
1661
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_BoardPure__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z, {
1674
1662
  className: className,
1675
1663
  cellSize: cellSize,
1676
- center: board.center,
1677
1664
  inputRefs: inputRefs,
1678
1665
  rows: rows,
1666
+ style: boardStyle,
1679
1667
  onBlur: handleBlur,
1680
1668
  onChange: onChange,
1681
1669
  onFocus: handleFocus,
@@ -1683,10 +1671,10 @@ const Board = ({ cellSize , className })=>{
1683
1671
  onPaste: onPaste
1684
1672
  }),
1685
1673
  /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_floating_ui_react__WEBPACK_IMPORTED_MODULE_1__.FloatingPortal, {
1686
- children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_components__WEBPACK_IMPORTED_MODULE_9__/* .Actions */ .e, {
1674
+ children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_components__WEBPACK_IMPORTED_MODULE_10__/* .Actions */ .e, {
1687
1675
  cell: cell,
1688
- className: classnames__WEBPACK_IMPORTED_MODULE_2___default()((_Board_module_scss__WEBPACK_IMPORTED_MODULE_11___default().actions), {
1689
- [(_Board_module_scss__WEBPACK_IMPORTED_MODULE_11___default().shown)]: showActions
1676
+ className: classnames__WEBPACK_IMPORTED_MODULE_2___default()((_Board_module_scss__WEBPACK_IMPORTED_MODULE_12___default().actions), {
1677
+ [(_Board_module_scss__WEBPACK_IMPORTED_MODULE_12___default().shown)]: showActions
1690
1678
  }),
1691
1679
  disabled: !showActions,
1692
1680
  direction: direction,
@@ -1740,13 +1728,13 @@ _components__WEBPACK_IMPORTED_MODULE_3__ = (__webpack_async_dependencies__.then
1740
1728
 
1741
1729
 
1742
1730
 
1743
- const BoardPure = ({ className , cellSize , center , inputRefs , rows , onBlur , onChange , onFocus , onKeyDown , onPaste })=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
1731
+ const BoardPure = ({ className , cellSize , inputRefs , rows , style , onBlur , onChange , onFocus , onKeyDown , onPaste })=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
1744
1732
  className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_Board_module_scss__WEBPACK_IMPORTED_MODULE_4___default().board), className),
1733
+ style: style,
1745
1734
  onBlur: onBlur,
1746
1735
  onKeyDown: onKeyDown,
1747
1736
  onPaste: onPaste,
1748
- children: rows.map((cells, y)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
1749
- className: (_Board_module_scss__WEBPACK_IMPORTED_MODULE_4___default().row),
1737
+ children: rows.map((cells, y)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, {
1750
1738
  children: cells.map((cell, x)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_components__WEBPACK_IMPORTED_MODULE_3__/* .Cell */ .b, {
1751
1739
  className: (_Board_module_scss__WEBPACK_IMPORTED_MODULE_4___default().cell),
1752
1740
  cell: cell,
@@ -1755,9 +1743,6 @@ const BoardPure = ({ className , cellSize , center , inputRefs , rows , onBlur ,
1755
1743
  cellRight: x < rows.length - 1 ? rows[y][x + 1] : undefined,
1756
1744
  cellTop: y > 0 ? rows[y - 1][x] : undefined,
1757
1745
  inputRef: inputRefs[y][x],
1758
- isBottom: y === rows.length - 1,
1759
- isCenter: center.x === x && center.y === y,
1760
- isRight: x === cells.length - 1,
1761
1746
  size: cellSize,
1762
1747
  onChange: onChange,
1763
1748
  onFocus: onFocus
@@ -1787,7 +1772,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
1787
1772
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16689);
1788
1773
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
1789
1774
  /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(58966);
1790
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(65175);
1775
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(55238);
1791
1776
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(83067);
1792
1777
  /* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(83900);
1793
1778
  /* harmony import */ var _Actions_module_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(79739);
@@ -1885,62 +1870,55 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
1885
1870
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
1886
1871
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
1887
1872
  /* harmony import */ var _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7618);
1888
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16689);
1889
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
1890
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65175);
1873
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59003);
1874
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);
1875
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16689);
1876
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
1891
1877
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(83067);
1892
- /* harmony import */ var _CellPure__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(12418);
1893
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_4__, _CellPure__WEBPACK_IMPORTED_MODULE_5__]);
1894
- ([state__WEBPACK_IMPORTED_MODULE_4__, _CellPure__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
1878
+ /* harmony import */ var _Tile__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(96815);
1879
+ /* harmony import */ var _Cell_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7576);
1880
+ /* harmony import */ var _Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6__);
1881
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_4__, _Tile__WEBPACK_IMPORTED_MODULE_5__]);
1882
+ ([state__WEBPACK_IMPORTED_MODULE_4__, _Tile__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
1883
+
1895
1884
 
1896
1885
 
1897
1886
 
1898
1887
 
1899
1888
 
1900
1889
 
1901
- const Cell = ({ cell , cellBottom , cellLeft , cellRight , cellTop , className , inputRef , isBottom , isCenter , isRight , size , onChange , onFocus })=>{
1890
+ const Cell = ({ cell , cellBottom , cellLeft , cellRight , cellTop , className , inputRef , size , onChange , onFocus })=>{
1902
1891
  const { tile , x , y } = cell;
1903
1892
  const translate = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTranslate */ .qM)();
1904
1893
  const locale = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_4__/* .selectLocale */ .fN);
1905
- const bonus = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTypedSelector */ .ix)((state)=>(0,state__WEBPACK_IMPORTED_MODULE_4__/* .selectCellBonus */ .O0)(state, cell));
1906
1894
  const points = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTypedSelector */ .ix)((state)=>(0,state__WEBPACK_IMPORTED_MODULE_4__/* .selectTilePoints */ .Zf)(state, cell.tile));
1907
- const isFiltered = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTypedSelector */ .ix)((state)=>(0,state__WEBPACK_IMPORTED_MODULE_4__/* .selectCellIsFiltered */ .id)(state, cell));
1908
1895
  const isValid = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTypedSelector */ .ix)((state)=>(0,state__WEBPACK_IMPORTED_MODULE_4__/* .selectCellIsValid */ .fZ)(state, cell));
1909
- const { tileFontSize } = (0,lib__WEBPACK_IMPORTED_MODULE_3__/* .getTileSizes */ .vc)(size);
1910
1896
  const isEmpty = tile.character === _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_1__.EMPTY_CELL;
1911
- const style = (0,react__WEBPACK_IMPORTED_MODULE_2__.useMemo)(()=>({
1912
- fontSize: tileFontSize
1913
- }), [
1914
- tileFontSize
1915
- ]);
1916
- const handleFocus = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(()=>onFocus(x, y), [
1897
+ const handleFocus = (0,react__WEBPACK_IMPORTED_MODULE_3__.useCallback)(()=>onFocus(x, y), [
1917
1898
  x,
1918
1899
  y,
1919
1900
  onFocus
1920
1901
  ]);
1921
- return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_CellPure__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
1902
+ return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Tile__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
1922
1903
  "aria-label": translate("cell.tile.location", {
1923
1904
  x: (x + 1).toLocaleString(locale),
1924
1905
  y: (y + 1).toLocaleString(locale)
1925
1906
  }),
1926
- bonus: bonus,
1927
- cell: cell,
1928
- cellBottom: cellBottom,
1929
- cellLeft: cellLeft,
1930
- cellRight: cellRight,
1931
- cellTop: cellTop,
1932
- className: className,
1907
+ className: classnames__WEBPACK_IMPORTED_MODULE_2___default()((_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().tile), className, {
1908
+ [(_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().sharpTopLeft)]: cellTop?.hasTile() || cellLeft?.hasTile(),
1909
+ [(_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().sharpTopRight)]: cellTop?.hasTile() || cellRight?.hasTile(),
1910
+ [(_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().sharpBottomLeft)]: cellBottom?.hasTile() || cellLeft?.hasTile(),
1911
+ [(_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().sharpBottomRight)]: cellBottom?.hasTile() || cellRight?.hasTile()
1912
+ }),
1913
+ character: isEmpty ? undefined : tile.character,
1914
+ highlighted: cell.isCandidate(),
1933
1915
  inputRef: inputRef,
1934
- isBottom: isBottom,
1935
- isCenter: isCenter,
1936
- isRight: isRight,
1937
- isEmpty: isEmpty,
1938
- isFiltered: isFiltered,
1916
+ isBlank: tile.isBlank,
1939
1917
  isValid: isValid,
1940
1918
  points: points,
1919
+ raised: !isEmpty,
1941
1920
  size: size,
1942
- style: style,
1943
- tile: tile,
1921
+ tabIndex: cell.x === 0 && cell.y === 0 ? undefined : -1,
1944
1922
  onChange: onChange,
1945
1923
  onFocus: handleFocus
1946
1924
  });
@@ -1952,76 +1930,6 @@ __webpack_async_result__();
1952
1930
 
1953
1931
  /***/ }),
1954
1932
 
1955
- /***/ 12418:
1956
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
1957
-
1958
- "use strict";
1959
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
1960
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1961
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
1962
- /* harmony export */ });
1963
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
1964
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
1965
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59003);
1966
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
1967
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16689);
1968
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
1969
- /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(58966);
1970
- /* harmony import */ var _Tile__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(96815);
1971
- /* harmony import */ var _Cell_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7576);
1972
- /* harmony import */ var _Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6__);
1973
- /* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(97569);
1974
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_Tile__WEBPACK_IMPORTED_MODULE_4__]);
1975
- _Tile__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
1976
-
1977
-
1978
-
1979
-
1980
-
1981
-
1982
-
1983
- const CellPure = ({ "aria-label": ariaLabel , bonus , cell , cellBottom , cellLeft , cellRight , cellTop , className , inputRef , isBottom , isCenter , isRight , isEmpty , isFiltered , isValid , points , size , style , tile , onChange , onFocus })=>/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
1984
- className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().cell), className, (0,_lib__WEBPACK_IMPORTED_MODULE_5__/* .getBonusClassname */ .K)(cell, bonus, isCenter), {
1985
- [(_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().bottom)]: isBottom,
1986
- [(_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().filtered)]: isFiltered,
1987
- [(_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().right)]: isRight,
1988
- [(_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().sharpTopLeft)]: cellTop?.hasTile() || cellLeft?.hasTile(),
1989
- [(_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().sharpTopRight)]: cellTop?.hasTile() || cellRight?.hasTile(),
1990
- [(_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().sharpBottomLeft)]: cellBottom?.hasTile() || cellLeft?.hasTile(),
1991
- [(_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().sharpBottomRight)]: cellBottom?.hasTile() || cellRight?.hasTile()
1992
- }),
1993
- style: style,
1994
- children: [
1995
- isCenter && isEmpty && !isFiltered && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(icons__WEBPACK_IMPORTED_MODULE_3__/* .Star */ .Ux, {
1996
- className: (_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().icon)
1997
- }),
1998
- isFiltered && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(icons__WEBPACK_IMPORTED_MODULE_3__/* .FlagFill */ .aR, {
1999
- className: (_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().icon)
2000
- }),
2001
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Tile__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z, {
2002
- "aria-label": ariaLabel,
2003
- className: (_Cell_module_scss__WEBPACK_IMPORTED_MODULE_6___default().tile),
2004
- character: isEmpty ? undefined : tile.character,
2005
- highlighted: cell.isCandidate(),
2006
- inputRef: inputRef,
2007
- isBlank: tile.isBlank,
2008
- isValid: isValid,
2009
- points: points,
2010
- raised: !isEmpty,
2011
- size: size,
2012
- tabIndex: cell.x === 0 && cell.y === 0 ? undefined : -1,
2013
- onChange: onChange,
2014
- onFocus: onFocus
2015
- })
2016
- ]
2017
- });
2018
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_2__.memo)(CellPure));
2019
-
2020
- __webpack_async_result__();
2021
- } catch(e) { __webpack_async_result__(e); } });
2022
-
2023
- /***/ }),
2024
-
2025
1933
  /***/ 21533:
2026
1934
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
2027
1935
 
@@ -2040,77 +1948,40 @@ __webpack_async_result__();
2040
1948
 
2041
1949
  /***/ }),
2042
1950
 
2043
- /***/ 97569:
2044
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1951
+ /***/ 94347:
1952
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
2045
1953
 
2046
1954
  "use strict";
1955
+ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
2047
1956
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2048
- /* harmony export */ "K": () => (/* binding */ getBonusClassname)
1957
+ /* harmony export */ "b": () => (/* reexport safe */ _Cell__WEBPACK_IMPORTED_MODULE_1__.Z),
1958
+ /* harmony export */ "e": () => (/* reexport safe */ _Actions__WEBPACK_IMPORTED_MODULE_0__.Z)
2049
1959
  /* harmony export */ });
2050
- /* harmony import */ var _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7618);
2051
- /* harmony import */ var _Cell_module_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7576);
2052
- /* harmony import */ var _Cell_module_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_Cell_module_scss__WEBPACK_IMPORTED_MODULE_1__);
1960
+ /* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(38833);
1961
+ /* harmony import */ var _Cell__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21533);
1962
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_Actions__WEBPACK_IMPORTED_MODULE_0__, _Cell__WEBPACK_IMPORTED_MODULE_1__]);
1963
+ ([_Actions__WEBPACK_IMPORTED_MODULE_0__, _Cell__WEBPACK_IMPORTED_MODULE_1__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
2053
1964
 
2054
1965
 
2055
- const CHARACTER_CLASSNAMES = {
2056
- 1: (_Cell_module_scss__WEBPACK_IMPORTED_MODULE_1___default().bonusCharacter1),
2057
- 2: (_Cell_module_scss__WEBPACK_IMPORTED_MODULE_1___default().bonusCharacter2),
2058
- 3: (_Cell_module_scss__WEBPACK_IMPORTED_MODULE_1___default().bonusCharacter3),
2059
- 5: (_Cell_module_scss__WEBPACK_IMPORTED_MODULE_1___default().bonusCharacter5)
2060
- };
2061
- const WORD_CLASSNAMES = {
2062
- 2: (_Cell_module_scss__WEBPACK_IMPORTED_MODULE_1___default().bonusWord2),
2063
- 3: (_Cell_module_scss__WEBPACK_IMPORTED_MODULE_1___default().bonusWord3)
2064
- };
2065
- const CHARACTER_MULTIPLIER_CLASSNAMES = {
2066
- 2: (_Cell_module_scss__WEBPACK_IMPORTED_MODULE_1___default().bonusCharacterMultiplier2),
2067
- 3: (_Cell_module_scss__WEBPACK_IMPORTED_MODULE_1___default().bonusCharacterMultiplier3)
2068
- };
2069
- const getBonusClassname = (cell, bonus, isCenter)=>{
2070
- if (!cell.isEmpty) {
2071
- return undefined;
2072
- }
2073
- if (isCenter) {
2074
- return (_Cell_module_scss__WEBPACK_IMPORTED_MODULE_1___default().bonusStart);
2075
- }
2076
- if (!bonus) {
2077
- return undefined;
2078
- }
2079
- const { type } = bonus;
2080
- if (type === _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_0__.BONUS_WORD) {
2081
- return getWordBonusClassname(bonus);
2082
- }
2083
- if (type === _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_0__.BONUS_CHARACTER) {
2084
- return getCharacterBonusClassname(bonus);
2085
- }
2086
- throw new Error(`Unknown bonus type: ${type} ${bonus.x} ${bonus.y} ${bonus.multiplier} ${bonus.score}`);
2087
- };
2088
- const getWordBonusClassname = (bonus)=>{
2089
- return WORD_CLASSNAMES[bonus.multiplier];
2090
- };
2091
- const getCharacterBonusClassname = (bonus)=>{
2092
- if (bonus.score) {
2093
- return CHARACTER_CLASSNAMES[bonus.score];
2094
- }
2095
- return CHARACTER_MULTIPLIER_CLASSNAMES[bonus.multiplier];
2096
- };
2097
1966
 
1967
+ __webpack_async_result__();
1968
+ } catch(e) { __webpack_async_result__(e); } });
2098
1969
 
2099
1970
  /***/ }),
2100
1971
 
2101
- /***/ 94347:
1972
+ /***/ 48327:
2102
1973
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
2103
1974
 
2104
1975
  "use strict";
2105
1976
  __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
2106
1977
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2107
- /* harmony export */ "b": () => (/* reexport safe */ _Cell__WEBPACK_IMPORTED_MODULE_1__.Z),
2108
- /* harmony export */ "e": () => (/* reexport safe */ _Actions__WEBPACK_IMPORTED_MODULE_0__.Z)
1978
+ /* harmony export */ "N": () => (/* reexport safe */ _useGrid__WEBPACK_IMPORTED_MODULE_1__.Z),
1979
+ /* harmony export */ "c": () => (/* reexport safe */ _useBackgroundImage__WEBPACK_IMPORTED_MODULE_0__.Z)
2109
1980
  /* harmony export */ });
2110
- /* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(38833);
2111
- /* harmony import */ var _Cell__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21533);
2112
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_Actions__WEBPACK_IMPORTED_MODULE_0__, _Cell__WEBPACK_IMPORTED_MODULE_1__]);
2113
- ([_Actions__WEBPACK_IMPORTED_MODULE_0__, _Cell__WEBPACK_IMPORTED_MODULE_1__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
1981
+ /* harmony import */ var _useBackgroundImage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(96589);
1982
+ /* harmony import */ var _useGrid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27070);
1983
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_useBackgroundImage__WEBPACK_IMPORTED_MODULE_0__, _useGrid__WEBPACK_IMPORTED_MODULE_1__]);
1984
+ ([_useBackgroundImage__WEBPACK_IMPORTED_MODULE_0__, _useGrid__WEBPACK_IMPORTED_MODULE_1__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
2114
1985
 
2115
1986
 
2116
1987
 
@@ -2119,19 +1990,248 @@ __webpack_async_result__();
2119
1990
 
2120
1991
  /***/ }),
2121
1992
 
2122
- /***/ 48327:
1993
+ /***/ 96589:
2123
1994
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
2124
1995
 
2125
1996
  "use strict";
2126
1997
  __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
2127
1998
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2128
- /* harmony export */ "N": () => (/* reexport safe */ _useGrid__WEBPACK_IMPORTED_MODULE_0__.Z)
1999
+ /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
2129
2000
  /* harmony export */ });
2130
- /* harmony import */ var _useGrid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27070);
2131
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_useGrid__WEBPACK_IMPORTED_MODULE_0__]);
2132
- _useGrid__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
2001
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
2002
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
2003
+ /* harmony import */ var _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7618);
2004
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16689);
2005
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
2006
+ /* harmony import */ var react_dom_server__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(78684);
2007
+ /* harmony import */ var react_dom_server__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_dom_server__WEBPACK_IMPORTED_MODULE_3__);
2008
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6022);
2009
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_4__);
2010
+ /* harmony import */ var hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(75704);
2011
+ /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(58966);
2012
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(55238);
2013
+ /* harmony import */ var parameters__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(64534);
2014
+ /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(83067);
2015
+ /* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(41051);
2016
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([hooks__WEBPACK_IMPORTED_MODULE_5__, state__WEBPACK_IMPORTED_MODULE_9__]);
2017
+ ([hooks__WEBPACK_IMPORTED_MODULE_5__, state__WEBPACK_IMPORTED_MODULE_9__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
2018
+ /* eslint-disable max-statements */
2019
+
2133
2020
 
2134
2021
 
2022
+
2023
+
2024
+
2025
+
2026
+
2027
+
2028
+
2029
+ const HORIZONTAL_LINE = "h";
2030
+ const VERTICAL_LINE = "v";
2031
+ const BONUS = "b";
2032
+ const BONUS_WORD_2 = "b2";
2033
+ const BONUS_WORD_3 = "b3";
2034
+ const CELL_FILTER = "c";
2035
+ const useBackgroundImage = ()=>{
2036
+ const { boardSize , cellSize } = (0,hooks__WEBPACK_IMPORTED_MODULE_5__/* .useAppLayout */ .Ft)();
2037
+ const config = (0,state__WEBPACK_IMPORTED_MODULE_9__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_9__/* .selectConfig */ .$o);
2038
+ const center = {
2039
+ x: Math.floor(config.boardWidth / 2),
2040
+ y: Math.floor(config.boardHeight / 2)
2041
+ };
2042
+ const cellFilter = (0,state__WEBPACK_IMPORTED_MODULE_9__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_9__/* .selectCellFilter */ .Jw);
2043
+ const viewBoxHeight = boardSize;
2044
+ const viewBoxWidth = boardSize;
2045
+ const bonusSize = cellSize * 0.8;
2046
+ const bonusOffset = cellSize * 0.1;
2047
+ const iconSize = cellSize * 0.4;
2048
+ const iconOffset = (cellSize - iconSize) / 2;
2049
+ const { tileFontSize } = (0,lib__WEBPACK_IMPORTED_MODULE_7__/* .getTileSizes */ .vc)(cellSize);
2050
+ const fontSize = tileFontSize * 0.6;
2051
+ const fontOffset = cellSize / 2;
2052
+ const characterBonuses = config.bonuses.filter((bonus)=>bonus.type === _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_1__.BONUS_CHARACTER);
2053
+ const word2Bonuses = config.bonuses.filter((bonus)=>bonus.type === _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_1__.BONUS_WORD && bonus.multiplier === 2);
2054
+ const word3Bonuses = config.bonuses.filter((bonus)=>bonus.type === _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_1__.BONUS_WORD && bonus.multiplier === 3);
2055
+ const getX = (point)=>point.x * (cellSize + parameters__WEBPACK_IMPORTED_MODULE_8__/* .BORDER_WIDTH */ .YF);
2056
+ const getY = (point)=>point.y * (cellSize + parameters__WEBPACK_IMPORTED_MODULE_8__/* .BORDER_WIDTH */ .YF);
2057
+ const backgroundSvg = (0,react_dom_server__WEBPACK_IMPORTED_MODULE_3__.renderToString)(/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(react_redux__WEBPACK_IMPORTED_MODULE_4__.Provider, {
2058
+ store: state__WEBPACK_IMPORTED_MODULE_9__/* .store */ .h,
2059
+ children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("svg", {
2060
+ height: viewBoxHeight,
2061
+ viewBox: `0 0 ${viewBoxWidth} ${viewBoxHeight}`,
2062
+ width: viewBoxWidth,
2063
+ xmlns: "http://www.w3.org/2000/svg",
2064
+ children: [
2065
+ /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("defs", {
2066
+ children: [
2067
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("symbol", {
2068
+ id: HORIZONTAL_LINE,
2069
+ children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("rect", {
2070
+ fill: parameters__WEBPACK_IMPORTED_MODULE_8__/* .BORDER_COLOR_LIGHT */ .uI,
2071
+ height: 1,
2072
+ width: viewBoxWidth
2073
+ })
2074
+ }),
2075
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("symbol", {
2076
+ id: VERTICAL_LINE,
2077
+ children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("rect", {
2078
+ fill: parameters__WEBPACK_IMPORTED_MODULE_8__/* .BORDER_COLOR_LIGHT */ .uI,
2079
+ height: viewBoxHeight,
2080
+ width: 1
2081
+ })
2082
+ }),
2083
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("symbol", {
2084
+ id: BONUS,
2085
+ children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("rect", {
2086
+ height: bonusSize,
2087
+ rx: parameters__WEBPACK_IMPORTED_MODULE_8__/* .BORDER_RADIUS */ .n_,
2088
+ width: bonusSize,
2089
+ x: bonusOffset,
2090
+ y: bonusOffset
2091
+ })
2092
+ }),
2093
+ /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("symbol", {
2094
+ id: BONUS_WORD_2,
2095
+ children: [
2096
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("rect", {
2097
+ height: bonusSize,
2098
+ rx: parameters__WEBPACK_IMPORTED_MODULE_8__/* .BORDER_RADIUS */ .n_,
2099
+ width: bonusSize,
2100
+ x: bonusOffset,
2101
+ y: bonusOffset
2102
+ }),
2103
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("text", {
2104
+ dominantBaseline: "central",
2105
+ fill: "white",
2106
+ fontFamily: "system-ui, sans-serif",
2107
+ fontSize: fontSize,
2108
+ fontWeight: "bold",
2109
+ textAnchor: "middle",
2110
+ x: fontOffset,
2111
+ y: fontOffset,
2112
+ children: "x2"
2113
+ })
2114
+ ]
2115
+ }),
2116
+ /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("symbol", {
2117
+ id: BONUS_WORD_3,
2118
+ children: [
2119
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("rect", {
2120
+ height: bonusSize,
2121
+ rx: parameters__WEBPACK_IMPORTED_MODULE_8__/* .BORDER_RADIUS */ .n_,
2122
+ width: bonusSize,
2123
+ x: bonusOffset,
2124
+ y: bonusOffset
2125
+ }),
2126
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("text", {
2127
+ dominantBaseline: "central",
2128
+ fill: "white",
2129
+ fontFamily: "system-ui, sans-serif",
2130
+ fontSize: fontSize,
2131
+ fontWeight: "bold",
2132
+ textAnchor: "middle",
2133
+ x: fontOffset,
2134
+ y: fontOffset,
2135
+ children: "x3"
2136
+ })
2137
+ ]
2138
+ }),
2139
+ /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("symbol", {
2140
+ id: CELL_FILTER,
2141
+ children: [
2142
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("rect", {
2143
+ fill: parameters__WEBPACK_IMPORTED_MODULE_8__/* .COLOR_FILTERED */ .pS,
2144
+ height: bonusSize,
2145
+ rx: parameters__WEBPACK_IMPORTED_MODULE_8__/* .BORDER_RADIUS */ .n_,
2146
+ width: bonusSize,
2147
+ x: bonusOffset,
2148
+ y: bonusOffset
2149
+ }),
2150
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(icons__WEBPACK_IMPORTED_MODULE_6__/* .FlagFill */ .aR, {
2151
+ color: "white",
2152
+ height: iconSize,
2153
+ width: iconSize,
2154
+ x: iconOffset,
2155
+ y: iconOffset
2156
+ })
2157
+ ]
2158
+ })
2159
+ ]
2160
+ }),
2161
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("rect", {
2162
+ fill: "white",
2163
+ height: viewBoxHeight,
2164
+ rx: parameters__WEBPACK_IMPORTED_MODULE_8__/* .BORDER_RADIUS */ .n_,
2165
+ width: viewBoxWidth,
2166
+ x: "0",
2167
+ y: "0"
2168
+ }),
2169
+ Array.from({
2170
+ length: config.boardHeight - 1
2171
+ }).map((_value, index)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("use", {
2172
+ href: `#${HORIZONTAL_LINE}`,
2173
+ y: (index + 1) * (cellSize + parameters__WEBPACK_IMPORTED_MODULE_8__/* .BORDER_WIDTH */ .YF) - parameters__WEBPACK_IMPORTED_MODULE_8__/* .BORDER_WIDTH */ .YF
2174
+ }, index)),
2175
+ Array.from({
2176
+ length: config.boardWidth - 1
2177
+ }).map((_value, index)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("use", {
2178
+ href: `#${VERTICAL_LINE}`,
2179
+ x: (index + 1) * (cellSize + parameters__WEBPACK_IMPORTED_MODULE_8__/* .BORDER_WIDTH */ .YF) - parameters__WEBPACK_IMPORTED_MODULE_8__/* .BORDER_WIDTH */ .YF
2180
+ }, index)),
2181
+ characterBonuses.map((bonus, index)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("use", {
2182
+ fill: (0,_lib__WEBPACK_IMPORTED_MODULE_10__/* .getBonusColor */ .T)(bonus),
2183
+ href: `#${BONUS}`,
2184
+ x: getX(bonus),
2185
+ y: getY(bonus)
2186
+ }, index)),
2187
+ word2Bonuses.map((bonus, index)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("use", {
2188
+ fill: (0,_lib__WEBPACK_IMPORTED_MODULE_10__/* .getBonusColor */ .T)(bonus),
2189
+ href: `#${BONUS_WORD_2}`,
2190
+ x: getX(bonus),
2191
+ y: getY(bonus)
2192
+ }, index)),
2193
+ word3Bonuses.map((bonus, index)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("use", {
2194
+ fill: (0,_lib__WEBPACK_IMPORTED_MODULE_10__/* .getBonusColor */ .T)(bonus),
2195
+ href: `#${BONUS_WORD_3}`,
2196
+ x: getX(bonus),
2197
+ y: getY(bonus)
2198
+ }, index)),
2199
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("rect", {
2200
+ fill: parameters__WEBPACK_IMPORTED_MODULE_8__/* .COLOR_BONUS_START */ .HC,
2201
+ height: bonusSize,
2202
+ rx: parameters__WEBPACK_IMPORTED_MODULE_8__/* .BORDER_RADIUS */ .n_,
2203
+ width: bonusSize,
2204
+ x: getX(center) + bonusOffset,
2205
+ y: getY(center) + bonusOffset
2206
+ }),
2207
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(icons__WEBPACK_IMPORTED_MODULE_6__/* .Star */ .Ux, {
2208
+ color: "white",
2209
+ height: iconSize,
2210
+ width: iconSize,
2211
+ x: getX(center) + iconOffset,
2212
+ y: getY(center) + iconOffset
2213
+ }),
2214
+ cellFilter.map((cell, index)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("use", {
2215
+ href: `#${CELL_FILTER}`,
2216
+ x: getX(cell),
2217
+ y: getY(cell)
2218
+ }, index))
2219
+ ]
2220
+ })
2221
+ }));
2222
+ const encodedSvg = globalThis.btoa(backgroundSvg);
2223
+ const dataUrl = `data:image/svg+xml;base64,${encodedSvg}`;
2224
+ const blob = (0,react__WEBPACK_IMPORTED_MODULE_2__.useMemo)(()=>(0,lib__WEBPACK_IMPORTED_MODULE_7__/* .dataUrlToBlob */ .kD)(dataUrl), [
2225
+ dataUrl
2226
+ ]);
2227
+ const blobUrl = (0,react__WEBPACK_IMPORTED_MODULE_2__.useMemo)(()=>URL.createObjectURL(blob), [
2228
+ blob
2229
+ ]);
2230
+ const url = `url(${blobUrl})`;
2231
+ return url;
2232
+ };
2233
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useBackgroundImage);
2234
+
2135
2235
  __webpack_async_result__();
2136
2236
  } catch(e) { __webpack_async_result__(e); } });
2137
2237
 
@@ -2154,9 +2254,9 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
2154
2254
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_3__);
2155
2255
  /* harmony import */ var hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(75704);
2156
2256
  /* harmony import */ var i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(36743);
2157
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(65175);
2257
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(55238);
2158
2258
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(83067);
2159
- /* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(97792);
2259
+ /* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(41051);
2160
2260
  var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([hooks__WEBPACK_IMPORTED_MODULE_4__, state__WEBPACK_IMPORTED_MODULE_7__]);
2161
2261
  ([hooks__WEBPACK_IMPORTED_MODULE_4__, state__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
2162
2262
  /* eslint-disable max-lines, max-statements */
@@ -2198,7 +2298,7 @@ const useGrid = (rows)=>{
2198
2298
  inputRefs
2199
2299
  ]);
2200
2300
  const getInputRefPosition = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((inputRef)=>{
2201
- return (0,_lib__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z)(inputRefs, (ref)=>ref.current === inputRef);
2301
+ return (0,_lib__WEBPACK_IMPORTED_MODULE_8__/* .getPositionInGrid */ .I)(inputRefs, (ref)=>ref.current === inputRef);
2202
2302
  }, [
2203
2303
  inputRefs
2204
2304
  ]);
@@ -2529,13 +2629,36 @@ __webpack_async_result__();
2529
2629
 
2530
2630
  /***/ }),
2531
2631
 
2532
- /***/ 97792:
2632
+ /***/ 41051:
2533
2633
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2534
2634
 
2535
2635
  "use strict";
2536
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2537
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
2538
- /* harmony export */ });
2636
+
2637
+ // EXPORTS
2638
+ __webpack_require__.d(__webpack_exports__, {
2639
+ "T": () => (/* reexport */ lib_getBonusColor),
2640
+ "I": () => (/* reexport */ lib_getPositionInGrid)
2641
+ });
2642
+
2643
+ // EXTERNAL MODULE: ../constants/build/index.js
2644
+ var build = __webpack_require__(7618);
2645
+ // EXTERNAL MODULE: ./src/parameters/index.ts
2646
+ var parameters = __webpack_require__(64534);
2647
+ ;// CONCATENATED MODULE: ./src/components/Board/lib/getBonusColor.ts
2648
+
2649
+
2650
+ const getBonusColor = (bonus)=>{
2651
+ if (bonus.type === build.BONUS_WORD) {
2652
+ return parameters/* COLOR_BONUS_WORD */.ti[bonus.multiplier];
2653
+ }
2654
+ if (bonus.score) {
2655
+ return parameters/* COLOR_BONUS_CHARACTER */.kr[bonus.score];
2656
+ }
2657
+ return parameters/* COLOR_BONUS_CHARACTER_MULTIPLIER */.$P[bonus.multiplier];
2658
+ };
2659
+ /* harmony default export */ const lib_getBonusColor = (getBonusColor);
2660
+
2661
+ ;// CONCATENATED MODULE: ./src/components/Board/lib/getPositionInGrid.ts
2539
2662
  const getPositionInGrid = (grid, constraint)=>{
2540
2663
  for(let y = 0; y < grid.length; ++y){
2541
2664
  for(let x = 0; x < grid[0].length; ++x){
@@ -2549,7 +2672,11 @@ const getPositionInGrid = (grid, constraint)=>{
2549
2672
  }
2550
2673
  return undefined;
2551
2674
  };
2552
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getPositionInGrid);
2675
+ /* harmony default export */ const lib_getPositionInGrid = (getPositionInGrid);
2676
+
2677
+ ;// CONCATENATED MODULE: ./src/components/Board/lib/index.ts
2678
+
2679
+
2553
2680
 
2554
2681
 
2555
2682
  /***/ }),
@@ -2854,11 +2981,11 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
2854
2981
  /* harmony export */ });
2855
2982
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
2856
2983
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
2857
- /* harmony import */ var _scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7618);
2858
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59003);
2859
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);
2860
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6022);
2861
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_3__);
2984
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59003);
2985
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
2986
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6022);
2987
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__);
2988
+ /* harmony import */ var i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(36743);
2862
2989
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(83067);
2863
2990
  /* harmony import */ var _DictionaryInput_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(80309);
2864
2991
  /* harmony import */ var _DictionaryInput_module_scss__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_DictionaryInput_module_scss__WEBPACK_IMPORTED_MODULE_5__);
@@ -2871,9 +2998,11 @@ state__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (awa
2871
2998
 
2872
2999
 
2873
3000
  const DictionaryInput = ({ className })=>{
2874
- const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useDispatch)();
3001
+ const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useDispatch)();
2875
3002
  const translate = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTranslate */ .qM)();
3003
+ const locale = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_4__/* .selectLocale */ .fN);
2876
3004
  const { input } = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_4__/* .selectDictionary */ .w1);
3005
+ const { comma } = i18n__WEBPACK_IMPORTED_MODULE_3__/* .LOCALE_FEATURES */ .q0[locale];
2877
3006
  const handleChange = (event)=>{
2878
3007
  dispatch(state__WEBPACK_IMPORTED_MODULE_4__/* .dictionarySlice.actions.changeInput */ .lj.actions.changeInput(event.target.value));
2879
3008
  };
@@ -2882,11 +3011,11 @@ const DictionaryInput = ({ className })=>{
2882
3011
  dispatch(state__WEBPACK_IMPORTED_MODULE_4__/* .dictionarySlice.actions.submit */ .lj.actions.submit());
2883
3012
  };
2884
3013
  return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("form", {
2885
- className: classnames__WEBPACK_IMPORTED_MODULE_2___default()((_DictionaryInput_module_scss__WEBPACK_IMPORTED_MODULE_5___default().dictionaryInput), className),
3014
+ className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_DictionaryInput_module_scss__WEBPACK_IMPORTED_MODULE_5___default().dictionaryInput), className),
2886
3015
  onSubmit: handleSubmit,
2887
3016
  children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("input", {
2888
3017
  className: (_DictionaryInput_module_scss__WEBPACK_IMPORTED_MODULE_5___default().input),
2889
- pattern: `.*[^\\s${_scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_1__.COMMA_ARABIC}${_scrabble_solver_constants__WEBPACK_IMPORTED_MODULE_1__.COMMA_LATIN}].*`,
3018
+ pattern: `.*[^\\s${comma}].*`,
2890
3019
  placeholder: translate("dictionary.input.placeholder"),
2891
3020
  required: true,
2892
3021
  title: translate("dictionary.input.title"),
@@ -2938,11 +3067,11 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
2938
3067
  /* harmony import */ var i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(36743);
2939
3068
  /* harmony import */ var parameters__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(64534);
2940
3069
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(83067);
2941
- /* harmony import */ var _PlainTiles__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(65925);
3070
+ /* harmony import */ var _PlainTiles__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(83601);
2942
3071
  /* harmony import */ var _EmptyState_module_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(59026);
2943
3072
  /* harmony import */ var _EmptyState_module_scss__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_EmptyState_module_scss__WEBPACK_IMPORTED_MODULE_7__);
2944
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_5__, _PlainTiles__WEBPACK_IMPORTED_MODULE_6__]);
2945
- ([state__WEBPACK_IMPORTED_MODULE_5__, _PlainTiles__WEBPACK_IMPORTED_MODULE_6__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
3073
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_5__]);
3074
+ state__WEBPACK_IMPORTED_MODULE_5__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
2946
3075
 
2947
3076
 
2948
3077
 
@@ -3174,11 +3303,11 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
3174
3303
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
3175
3304
  /* harmony import */ var i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(36743);
3176
3305
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(83067);
3177
- /* harmony import */ var _PlainTiles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(65925);
3306
+ /* harmony import */ var _PlainTiles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(83601);
3178
3307
  /* harmony import */ var _Loading_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(28759);
3179
3308
  /* harmony import */ var _Loading_module_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_Loading_module_scss__WEBPACK_IMPORTED_MODULE_6__);
3180
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_4__, _PlainTiles__WEBPACK_IMPORTED_MODULE_5__]);
3181
- ([state__WEBPACK_IMPORTED_MODULE_4__, _PlainTiles__WEBPACK_IMPORTED_MODULE_5__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
3309
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_4__]);
3310
+ state__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
3182
3311
 
3183
3312
 
3184
3313
 
@@ -3622,242 +3751,31 @@ const NavButtons = ({ onClear , onShowKeyMap , onShowMenu , onShowRemainingTiles
3622
3751
  className: (_NavButtons_module_scss__WEBPACK_IMPORTED_MODULE_8___default().button),
3623
3752
  Icon: icons__WEBPACK_IMPORTED_MODULE_4__/* .Cog */ .Oz,
3624
3753
  tooltip: translate("settings"),
3625
- onClick: onShowSettings
3626
- })
3627
- ]
3628
- })
3629
- ]
3630
- });
3631
- };
3632
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_2__.memo)(NavButtons));
3633
-
3634
- __webpack_async_result__();
3635
- } catch(e) { __webpack_async_result__(e); } });
3636
-
3637
- /***/ }),
3638
-
3639
- /***/ 90374:
3640
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
3641
-
3642
- "use strict";
3643
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
3644
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3645
- /* harmony export */ "Z": () => (/* reexport safe */ _NavButtons__WEBPACK_IMPORTED_MODULE_0__.Z)
3646
- /* harmony export */ });
3647
- /* harmony import */ var _NavButtons__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41101);
3648
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_NavButtons__WEBPACK_IMPORTED_MODULE_0__]);
3649
- _NavButtons__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
3650
-
3651
-
3652
- __webpack_async_result__();
3653
- } catch(e) { __webpack_async_result__(e); } });
3654
-
3655
- /***/ }),
3656
-
3657
- /***/ 95850:
3658
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
3659
-
3660
- "use strict";
3661
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
3662
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3663
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
3664
- /* harmony export */ });
3665
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
3666
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
3667
- /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(58966);
3668
- /* harmony import */ var _PlainTiles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65925);
3669
- /* harmony import */ var _NotFound_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(56343);
3670
- /* harmony import */ var _NotFound_module_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_NotFound_module_scss__WEBPACK_IMPORTED_MODULE_3__);
3671
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_PlainTiles__WEBPACK_IMPORTED_MODULE_2__]);
3672
- _PlainTiles__WEBPACK_IMPORTED_MODULE_2__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
3673
-
3674
-
3675
-
3676
-
3677
- const CONTENT = [
3678
- [
3679
- "HTTP",
3680
- "404"
3681
- ]
3682
- ];
3683
- const NotFound = ()=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
3684
- className: (_NotFound_module_scss__WEBPACK_IMPORTED_MODULE_3___default().notFound),
3685
- children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("a", {
3686
- className: (_NotFound_module_scss__WEBPACK_IMPORTED_MODULE_3___default().link),
3687
- href: "/",
3688
- children: [
3689
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(icons__WEBPACK_IMPORTED_MODULE_1__/* .DashCircleFill */ .XK, {
3690
- className: (_NotFound_module_scss__WEBPACK_IMPORTED_MODULE_3___default().icon)
3691
- }),
3692
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_PlainTiles__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {
3693
- className: (_NotFound_module_scss__WEBPACK_IMPORTED_MODULE_3___default().tiles),
3694
- content: CONTENT
3695
- })
3696
- ]
3697
- })
3698
- });
3699
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (NotFound);
3700
-
3701
- __webpack_async_result__();
3702
- } catch(e) { __webpack_async_result__(e); } });
3703
-
3704
- /***/ }),
3705
-
3706
- /***/ 24442:
3707
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
3708
-
3709
- "use strict";
3710
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
3711
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3712
- /* harmony export */ "Z": () => (/* reexport safe */ _NotFound__WEBPACK_IMPORTED_MODULE_0__.Z)
3713
- /* harmony export */ });
3714
- /* harmony import */ var _NotFound__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(95850);
3715
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_NotFound__WEBPACK_IMPORTED_MODULE_0__]);
3716
- _NotFound__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
3717
-
3718
-
3719
- __webpack_async_result__();
3720
- } catch(e) { __webpack_async_result__(e); } });
3721
-
3722
- /***/ }),
3723
-
3724
- /***/ 32897:
3725
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
3726
-
3727
- "use strict";
3728
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
3729
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3730
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
3731
- /* harmony export */ });
3732
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
3733
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
3734
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59003);
3735
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
3736
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16689);
3737
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
3738
- /* harmony import */ var i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(36743);
3739
- /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(83067);
3740
- /* harmony import */ var _SvgFontCss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(73289);
3741
- /* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(14491);
3742
- /* harmony import */ var _PlainTiles_module_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(25891);
3743
- /* harmony import */ var _PlainTiles_module_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_PlainTiles_module_scss__WEBPACK_IMPORTED_MODULE_8__);
3744
- /* harmony import */ var _Tile__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(31915);
3745
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([state__WEBPACK_IMPORTED_MODULE_4__]);
3746
- state__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
3747
-
3748
-
3749
-
3750
-
3751
-
3752
-
3753
-
3754
-
3755
-
3756
- const PlainTiles = ({ className , color , content , dropShadow , showPoints , style , wave })=>{
3757
- const locale = (0,state__WEBPACK_IMPORTED_MODULE_4__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_4__/* .selectLocale */ .fN);
3758
- const { fontFamily } = i18n__WEBPACK_IMPORTED_MODULE_3__/* .LOCALE_FEATURES */ .q0[locale];
3759
- const tiles = (0,react__WEBPACK_IMPORTED_MODULE_2__.useMemo)(()=>(0,_lib__WEBPACK_IMPORTED_MODULE_6__/* .createPlainTiles */ .Qb)({
3760
- color,
3761
- content,
3762
- showPoints
3763
- }), [
3764
- color,
3765
- content,
3766
- showPoints
3767
- ]);
3768
- return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("svg", {
3769
- className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(className, {
3770
- [(_PlainTiles_module_scss__WEBPACK_IMPORTED_MODULE_8___default().dropShadow)]: dropShadow,
3771
- [(_PlainTiles_module_scss__WEBPACK_IMPORTED_MODULE_8___default().wave)]: wave
3772
- }),
3773
- style: style,
3774
- viewBox: (0,_lib__WEBPACK_IMPORTED_MODULE_6__/* .getViewbox */ .kR)(content),
3775
- xmlns: "http://www.w3.org/2000/svg",
3776
- children: [
3777
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_SvgFontCss__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
3778
- fontFamily: fontFamily
3779
- }),
3780
- tiles.map((tile, index)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Tile__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
3781
- character: tile.character,
3782
- className: (_PlainTiles_module_scss__WEBPACK_IMPORTED_MODULE_8___default().tile),
3783
- color: tile.color,
3784
- fontFamily: fontFamily,
3785
- points: tile.points,
3786
- size: tile.size,
3787
- transform: tile.transform,
3788
- x: tile.x,
3789
- y: tile.y
3790
- }, index))
3791
- ]
3792
- });
3793
- };
3794
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PlainTiles);
3795
-
3796
- __webpack_async_result__();
3797
- } catch(e) { __webpack_async_result__(e); } });
3798
-
3799
- /***/ }),
3800
-
3801
- /***/ 31915:
3802
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3803
-
3804
- "use strict";
3805
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3806
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
3807
- /* harmony export */ });
3808
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
3809
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
3810
-
3811
- const Tile = ({ character , className , color , fontFamily , points , size , transform , x , y })=>/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", {
3812
- className: className,
3813
- transform: transform,
3814
- children: [
3815
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("rect", {
3816
- fill: color,
3817
- height: size,
3818
- rx: size * 0.15,
3819
- width: size,
3820
- x: x,
3821
- y: y
3822
- }),
3823
- /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("text", {
3824
- dominantBaseline: "central",
3825
- fontFamily: fontFamily,
3826
- fontSize: size * 0.6,
3827
- fontWeight: "bold",
3828
- textAnchor: "middle",
3829
- x: x + size / 2,
3830
- y: y + size / 2,
3831
- children: character
3832
- }),
3833
- typeof points === "number" && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("text", {
3834
- dominantBaseline: "text-after-edge",
3835
- fontFamily: fontFamily,
3836
- fontSize: size * 0.25,
3837
- fontWeight: "bold",
3838
- textAnchor: "end",
3839
- x: x + size * 0.9,
3840
- y: y + size * 0.95,
3841
- children: points
3754
+ onClick: onShowSettings
3755
+ })
3756
+ ]
3842
3757
  })
3843
3758
  ]
3844
3759
  });
3845
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Tile);
3760
+ };
3761
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_2__.memo)(NavButtons));
3846
3762
 
3763
+ __webpack_async_result__();
3764
+ } catch(e) { __webpack_async_result__(e); } });
3847
3765
 
3848
3766
  /***/ }),
3849
3767
 
3850
- /***/ 65925:
3768
+ /***/ 90374:
3851
3769
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
3852
3770
 
3853
3771
  "use strict";
3854
3772
  __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
3855
3773
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3856
- /* harmony export */ "Z": () => (/* reexport safe */ _PlainTiles__WEBPACK_IMPORTED_MODULE_0__.Z)
3774
+ /* harmony export */ "Z": () => (/* reexport safe */ _NavButtons__WEBPACK_IMPORTED_MODULE_0__.Z)
3857
3775
  /* harmony export */ });
3858
- /* harmony import */ var _PlainTiles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(32897);
3859
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_PlainTiles__WEBPACK_IMPORTED_MODULE_0__]);
3860
- _PlainTiles__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
3776
+ /* harmony import */ var _NavButtons__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41101);
3777
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_NavButtons__WEBPACK_IMPORTED_MODULE_0__]);
3778
+ _NavButtons__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
3861
3779
 
3862
3780
 
3863
3781
  __webpack_async_result__();
@@ -3865,19 +3783,77 @@ __webpack_async_result__();
3865
3783
 
3866
3784
  /***/ }),
3867
3785
 
3868
- /***/ 14491:
3786
+ /***/ 1437:
3869
3787
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3870
3788
 
3871
3789
  "use strict";
3872
3790
 
3873
3791
  // EXPORTS
3874
3792
  __webpack_require__.d(__webpack_exports__, {
3875
- "Qb": () => (/* reexport */ lib_createPlainTiles),
3876
- "kR": () => (/* reexport */ lib_getViewbox)
3793
+ "Z": () => (/* reexport */ NotFound_NotFound)
3877
3794
  });
3878
3795
 
3879
- // UNUSED EXPORTS: createPlainTile, getX, getY, randomize
3796
+ // EXTERNAL MODULE: external "react/jsx-runtime"
3797
+ var jsx_runtime_ = __webpack_require__(20997);
3798
+ // EXTERNAL MODULE: ./src/icons/index.ts + 41 modules
3799
+ var icons = __webpack_require__(58966);
3800
+ // EXTERNAL MODULE: ./src/components/PlainTiles/index.ts + 9 modules
3801
+ var PlainTiles = __webpack_require__(83601);
3802
+ // EXTERNAL MODULE: ./src/components/NotFound/NotFound.module.scss
3803
+ var NotFound_module = __webpack_require__(56343);
3804
+ var NotFound_module_default = /*#__PURE__*/__webpack_require__.n(NotFound_module);
3805
+ ;// CONCATENATED MODULE: ./src/components/NotFound/NotFound.tsx
3806
+
3807
+
3808
+
3809
+
3810
+ const CONTENT = [
3811
+ [
3812
+ "HTTP",
3813
+ "404"
3814
+ ]
3815
+ ];
3816
+ const NotFound = ()=>/*#__PURE__*/ jsx_runtime_.jsx("div", {
3817
+ className: (NotFound_module_default()).notFound,
3818
+ children: /*#__PURE__*/ (0,jsx_runtime_.jsxs)("a", {
3819
+ className: (NotFound_module_default()).link,
3820
+ href: "/",
3821
+ children: [
3822
+ /*#__PURE__*/ jsx_runtime_.jsx(icons/* DashCircleFill */.XK, {
3823
+ className: (NotFound_module_default()).icon
3824
+ }),
3825
+ /*#__PURE__*/ jsx_runtime_.jsx(PlainTiles/* default */.Z, {
3826
+ className: (NotFound_module_default()).tiles,
3827
+ content: CONTENT
3828
+ })
3829
+ ]
3830
+ })
3831
+ });
3832
+ /* harmony default export */ const NotFound_NotFound = (NotFound);
3833
+
3834
+ ;// CONCATENATED MODULE: ./src/components/NotFound/index.ts
3835
+
3836
+
3837
+
3838
+ /***/ }),
3839
+
3840
+ /***/ 83601:
3841
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3842
+
3843
+ "use strict";
3844
+
3845
+ // EXPORTS
3846
+ __webpack_require__.d(__webpack_exports__, {
3847
+ "Z": () => (/* reexport */ PlainTiles_PlainTiles)
3848
+ });
3880
3849
 
3850
+ // EXTERNAL MODULE: external "react/jsx-runtime"
3851
+ var jsx_runtime_ = __webpack_require__(20997);
3852
+ // EXTERNAL MODULE: external "classnames"
3853
+ var external_classnames_ = __webpack_require__(59003);
3854
+ var external_classnames_default = /*#__PURE__*/__webpack_require__.n(external_classnames_);
3855
+ // EXTERNAL MODULE: external "react"
3856
+ var external_react_ = __webpack_require__(16689);
3881
3857
  // EXTERNAL MODULE: ../configs/build/index.js
3882
3858
  var build = __webpack_require__(89418);
3883
3859
  // EXTERNAL MODULE: ../types/build/index.js
@@ -3972,6 +3948,87 @@ const getViewbox = (content)=>{
3972
3948
 
3973
3949
 
3974
3950
 
3951
+ // EXTERNAL MODULE: ./src/components/PlainTiles/PlainTiles.module.scss
3952
+ var PlainTiles_module = __webpack_require__(25891);
3953
+ var PlainTiles_module_default = /*#__PURE__*/__webpack_require__.n(PlainTiles_module);
3954
+ ;// CONCATENATED MODULE: ./src/components/PlainTiles/Tile.tsx
3955
+
3956
+ const Tile = ({ character , className , color , points , size , transform , x , y })=>/*#__PURE__*/ (0,jsx_runtime_.jsxs)("g", {
3957
+ className: className,
3958
+ transform: transform,
3959
+ children: [
3960
+ /*#__PURE__*/ jsx_runtime_.jsx("rect", {
3961
+ fill: color,
3962
+ height: size,
3963
+ rx: size * 0.15,
3964
+ width: size,
3965
+ x: x,
3966
+ y: y
3967
+ }),
3968
+ /*#__PURE__*/ jsx_runtime_.jsx("text", {
3969
+ dominantBaseline: "central",
3970
+ fontSize: size * 0.6,
3971
+ fontWeight: "bold",
3972
+ textAnchor: "middle",
3973
+ x: x + size / 2,
3974
+ y: y + size / 2,
3975
+ children: character
3976
+ }),
3977
+ typeof points === "number" && /*#__PURE__*/ jsx_runtime_.jsx("text", {
3978
+ dominantBaseline: "text-after-edge",
3979
+ fontSize: size * 0.25,
3980
+ fontWeight: "bold",
3981
+ textAnchor: "end",
3982
+ x: x + size * 0.9,
3983
+ y: y + size * 0.95,
3984
+ children: points
3985
+ })
3986
+ ]
3987
+ });
3988
+ /* harmony default export */ const PlainTiles_Tile = (Tile);
3989
+
3990
+ ;// CONCATENATED MODULE: ./src/components/PlainTiles/PlainTiles.tsx
3991
+
3992
+
3993
+
3994
+
3995
+
3996
+
3997
+ const PlainTiles = ({ className , color , content , dropShadow , showPoints , style , wave })=>{
3998
+ const tiles = (0,external_react_.useMemo)(()=>lib_createPlainTiles({
3999
+ color,
4000
+ content,
4001
+ showPoints
4002
+ }), [
4003
+ color,
4004
+ content,
4005
+ showPoints
4006
+ ]);
4007
+ return /*#__PURE__*/ jsx_runtime_.jsx("svg", {
4008
+ className: external_classnames_default()(className, {
4009
+ [(PlainTiles_module_default()).dropShadow]: dropShadow,
4010
+ [(PlainTiles_module_default()).wave]: wave
4011
+ }),
4012
+ style: style,
4013
+ viewBox: lib_getViewbox(content),
4014
+ xmlns: "http://www.w3.org/2000/svg",
4015
+ children: tiles.map((tile, index)=>/*#__PURE__*/ jsx_runtime_.jsx(PlainTiles_Tile, {
4016
+ character: tile.character,
4017
+ className: (PlainTiles_module_default()).tile,
4018
+ color: tile.color,
4019
+ points: tile.points,
4020
+ size: tile.size,
4021
+ transform: tile.transform,
4022
+ x: tile.x,
4023
+ y: tile.y
4024
+ }, index))
4025
+ });
4026
+ };
4027
+ /* harmony default export */ const PlainTiles_PlainTiles = (PlainTiles);
4028
+
4029
+ ;// CONCATENATED MODULE: ./src/components/PlainTiles/index.ts
4030
+
4031
+
3975
4032
 
3976
4033
  /***/ }),
3977
4034
 
@@ -4058,7 +4115,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
4058
4115
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6022);
4059
4116
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_3__);
4060
4117
  /* harmony import */ var i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(36743);
4061
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(65175);
4118
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(55238);
4062
4119
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(83067);
4063
4120
  /* harmony import */ var _Rack_module_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(52404);
4064
4121
  /* harmony import */ var _Rack_module_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_Rack_module_scss__WEBPACK_IMPORTED_MODULE_8__);
@@ -4218,7 +4275,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
4218
4275
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
4219
4276
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6022);
4220
4277
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_4__);
4221
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(65175);
4278
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(55238);
4222
4279
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(83067);
4223
4280
  /* harmony import */ var _Tile__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(96815);
4224
4281
  /* harmony import */ var _Rack_module_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(52404);
@@ -4405,7 +4462,7 @@ const Cell = ({ className , translationKey , tooltip , value })=>{
4405
4462
  const locale = (0,state__WEBPACK_IMPORTED_MODULE_2__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_2__/* .selectLocale */ .fN);
4406
4463
  const formattedValue = value.toLocaleString(locale);
4407
4464
  const triggerProps = (0,_Tooltip__WEBPACK_IMPORTED_MODULE_3__/* .useTooltip */ .l)(`${translate(translationKey)}: ${tooltip || formattedValue}`);
4408
- return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("span", {
4465
+ return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
4409
4466
  className: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_Results_module_scss__WEBPACK_IMPORTED_MODULE_4___default().cell), className),
4410
4467
  ...triggerProps,
4411
4468
  children: formattedValue
@@ -4511,7 +4568,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
4511
4568
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16689);
4512
4569
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
4513
4570
  /* harmony import */ var i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(36743);
4514
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65175);
4571
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(55238);
4515
4572
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(83067);
4516
4573
  /* harmony import */ var types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1966);
4517
4574
  /* harmony import */ var _Cell__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(29287);
@@ -4535,10 +4592,12 @@ const Result = ({ data , index , style })=>{
4535
4592
  const ref = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);
4536
4593
  const columns = (0,_useColumns__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z)();
4537
4594
  const locale = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_5__/* .selectLocale */ .fN);
4538
- const { consonants , vowels } = i18n__WEBPACK_IMPORTED_MODULE_3__/* .LOCALE_FEATURES */ .q0[locale];
4595
+ const { consonants , direction , separator , vowels } = i18n__WEBPACK_IMPORTED_MODULE_3__/* .LOCALE_FEATURES */ .q0[locale];
4539
4596
  const result = results[index];
4540
4597
  const isMatching = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTypedSelector */ .ix)((state)=>(0,state__WEBPACK_IMPORTED_MODULE_5__/* .selectIsResultMatching */ .yJ)(state, index));
4541
- const otherWords = result.words.slice(1).join(" / ").toLocaleUpperCase();
4598
+ const words = direction === "rtl" ? [
4599
+ ...result.words
4600
+ ].reverse() : result.words;
4542
4601
  const enabledColumns = Object.fromEntries(columns.map((column)=>[
4543
4602
  column.id,
4544
4603
  true
@@ -4568,7 +4627,7 @@ const Result = ({ data , index , style })=>{
4568
4627
  enabledColumns[types__WEBPACK_IMPORTED_MODULE_6__/* .ResultColumn.Word */ .M.Word] && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Cell__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
4569
4628
  className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_9___default().word),
4570
4629
  translationKey: "common.word",
4571
- value: `${result.word.toLocaleUpperCase()}${otherWords.length > 0 ? ` (${otherWords})` : ""}`
4630
+ value: result.word
4572
4631
  }),
4573
4632
  enabledColumns[types__WEBPACK_IMPORTED_MODULE_6__/* .ResultColumn.TilesCount */ .M.TilesCount] && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Cell__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
4574
4633
  className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_9___default().stat),
@@ -4593,7 +4652,7 @@ const Result = ({ data , index , style })=>{
4593
4652
  enabledColumns[types__WEBPACK_IMPORTED_MODULE_6__/* .ResultColumn.WordsCount */ .M.WordsCount] && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Cell__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
4594
4653
  className: (_Results_module_scss__WEBPACK_IMPORTED_MODULE_9___default().stat),
4595
4654
  translationKey: "common.words",
4596
- tooltip: `${result.wordsCount} (${result.words.join(" / ").toLocaleUpperCase()})`,
4655
+ tooltip: `${result.wordsCount.toLocaleString(locale)} (${words.join(separator)})`,
4597
4656
  value: result.wordsCount
4598
4657
  }),
4599
4658
  enabledColumns[types__WEBPACK_IMPORTED_MODULE_6__/* .ResultColumn.Points */ .M.Points] && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Cell__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
@@ -4983,7 +5042,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
4983
5042
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
4984
5043
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6022);
4985
5044
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_3__);
4986
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65175);
5045
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(55238);
4987
5046
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(83067);
4988
5047
  /* harmony import */ var _ResultsInput_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(60066);
4989
5048
  /* harmony import */ var _ResultsInput_module_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_ResultsInput_module_scss__WEBPACK_IMPORTED_MODULE_6__);
@@ -5128,7 +5187,7 @@ const Solver = ({ className , onShowResults })=>{
5128
5187
  const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useDispatch)();
5129
5188
  const translate = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTranslate */ .qM)();
5130
5189
  const isTouchDevice = (0,hooks__WEBPACK_IMPORTED_MODULE_4__/* .useIsTouchDevice */ .YQ)();
5131
- const { cellSize , maxControlsWidth , showCompactControls , showFloatingSolveButton , tileSize } = (0,hooks__WEBPACK_IMPORTED_MODULE_4__/* .useAppLayout */ .Ft)();
5190
+ const { maxControlsWidth , showCompactControls , showFloatingSolveButton , tileSize } = (0,hooks__WEBPACK_IMPORTED_MODULE_4__/* .useAppLayout */ .Ft)();
5132
5191
  const error = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_5__/* .selectSolveError */ .Rn);
5133
5192
  const isOutdated = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_5__/* .selectAreResultsOutdated */ .Mj);
5134
5193
  const resultCandidate = (0,state__WEBPACK_IMPORTED_MODULE_5__/* .useTypedSelector */ .ix)(state__WEBPACK_IMPORTED_MODULE_5__/* .selectResultCandidate */ .Xk);
@@ -5194,7 +5253,6 @@ const Solver = ({ className , onShowResults })=>{
5194
5253
  onSubmit: handleSubmit,
5195
5254
  children: [
5196
5255
  /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Board__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
5197
- cellSize: cellSize,
5198
5256
  className: (_Solver_module_scss__WEBPACK_IMPORTED_MODULE_13___default().board)
5199
5257
  }),
5200
5258
  /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("input", {
@@ -5299,7 +5357,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
5299
5357
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6022);
5300
5358
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__);
5301
5359
  /* harmony import */ var icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(58966);
5302
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65175);
5360
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(55238);
5303
5361
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(83067);
5304
5362
  /* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(83900);
5305
5363
  /* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(33538);
@@ -5690,90 +5748,6 @@ _Spinner__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (
5690
5748
  __webpack_async_result__();
5691
5749
  } catch(e) { __webpack_async_result__(e); } });
5692
5750
 
5693
- /***/ }),
5694
-
5695
- /***/ 73289:
5696
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5697
-
5698
- "use strict";
5699
-
5700
- // EXPORTS
5701
- __webpack_require__.d(__webpack_exports__, {
5702
- "Z": () => (/* reexport */ SvgFontCss_SvgFontCss)
5703
- });
5704
-
5705
- // EXTERNAL MODULE: external "react/jsx-runtime"
5706
- var jsx_runtime_ = __webpack_require__(20997);
5707
- ;// CONCATENATED MODULE: ./src/components/SvgFontCss/createCss.ts
5708
- const importUrl = // eslint-disable-next-line max-len
5709
- "https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700&family=Open+Sans:wght@400;700&family=Vazirmatn:wght@300;400;700&family=Roboto+Mono&display=swap";
5710
- const createCss = (fontFamily)=>`@import url('${importUrl}');
5711
-
5712
- text {
5713
- font-family: '${fontFamily}';
5714
- }`;
5715
- /* harmony default export */ const SvgFontCss_createCss = (createCss);
5716
-
5717
- ;// CONCATENATED MODULE: ./src/components/SvgFontCss/SvgFontCss.tsx
5718
-
5719
-
5720
- const SvgFontCss = ({ fontFamily })=>{
5721
- // eslint-disable-next-line react/no-danger
5722
- return /*#__PURE__*/ jsx_runtime_.jsx("style", {
5723
- type: "text/css",
5724
- dangerouslySetInnerHTML: {
5725
- __html: SvgFontCss_createCss(fontFamily)
5726
- }
5727
- });
5728
- };
5729
- /* harmony default export */ const SvgFontCss_SvgFontCss = (SvgFontCss);
5730
-
5731
- ;// CONCATENATED MODULE: ./src/components/SvgFontCss/index.ts
5732
-
5733
-
5734
-
5735
- /***/ }),
5736
-
5737
- /***/ 33956:
5738
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5739
-
5740
- "use strict";
5741
-
5742
- // EXPORTS
5743
- __webpack_require__.d(__webpack_exports__, {
5744
- "Z": () => (/* reexport */ SvgFontFix_SvgFontFix)
5745
- });
5746
-
5747
- // EXTERNAL MODULE: external "react/jsx-runtime"
5748
- var jsx_runtime_ = __webpack_require__(20997);
5749
- // EXTERNAL MODULE: ./src/i18n/index.ts + 8 modules
5750
- var i18n = __webpack_require__(36743);
5751
- // EXTERNAL MODULE: ./src/components/SvgFontCss/index.ts + 2 modules
5752
- var SvgFontCss = __webpack_require__(73289);
5753
- // EXTERNAL MODULE: ./src/components/SvgFontFix/SvgFontFix.module.scss
5754
- var SvgFontFix_module = __webpack_require__(35516);
5755
- var SvgFontFix_module_default = /*#__PURE__*/__webpack_require__.n(SvgFontFix_module);
5756
- ;// CONCATENATED MODULE: ./src/components/SvgFontFix/SvgFontFix.tsx
5757
-
5758
-
5759
-
5760
-
5761
- const SvgFontFix = ()=>{
5762
- const fontFamilies = Array.from(new Set(Object.values(i18n/* LOCALE_FEATURES */.q0).map(({ fontFamily })=>fontFamily)));
5763
- return /*#__PURE__*/ jsx_runtime_.jsx("svg", {
5764
- className: (SvgFontFix_module_default()).svgFontFix,
5765
- xmlns: "http://www.w3.org/2000/svg",
5766
- children: fontFamilies.map((fontFamily)=>/*#__PURE__*/ jsx_runtime_.jsx(SvgFontCss/* default */.Z, {
5767
- fontFamily: fontFamily
5768
- }, fontFamily))
5769
- });
5770
- };
5771
- /* harmony default export */ const SvgFontFix_SvgFontFix = (SvgFontFix);
5772
-
5773
- ;// CONCATENATED MODULE: ./src/components/SvgFontFix/index.ts
5774
-
5775
-
5776
-
5777
5751
  /***/ }),
5778
5752
 
5779
5753
  /***/ 10579:
@@ -5791,7 +5765,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
5791
5765
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16689);
5792
5766
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
5793
5767
  /* harmony import */ var hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(75704);
5794
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(65175);
5768
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(55238);
5795
5769
  /* harmony import */ var parameters__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(64534);
5796
5770
  /* harmony import */ var state__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(83067);
5797
5771
  /* harmony import */ var _TilePure__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(83147);
@@ -6008,7 +5982,7 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
6008
5982
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16689);
6009
5983
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
6010
5984
  /* harmony import */ var hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(75704);
6011
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(65175);
5985
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(55238);
6012
5986
  /* harmony import */ var _Tooltip_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(53229);
6013
5987
  /* harmony import */ var _Tooltip_module_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_Tooltip_module_scss__WEBPACK_IMPORTED_MODULE_6__);
6014
5988
  var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_floating_ui_react__WEBPACK_IMPORTED_MODULE_1__, hooks__WEBPACK_IMPORTED_MODULE_4__]);
@@ -6141,11 +6115,10 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
6141
6115
  /* harmony export */ "Y8": () => (/* reexport safe */ _Radio__WEBPACK_IMPORTED_MODULE_18__.Z),
6142
6116
  /* harmony export */ "Z$": () => (/* reexport safe */ _DictionaryInput__WEBPACK_IMPORTED_MODULE_6__.Z),
6143
6117
  /* harmony export */ "_m": () => (/* reexport safe */ _NavButtons__WEBPACK_IMPORTED_MODULE_13__.Z),
6144
- /* harmony export */ "n9": () => (/* reexport safe */ _Tile__WEBPACK_IMPORTED_MODULE_26__.Z),
6118
+ /* harmony export */ "n9": () => (/* reexport safe */ _Tile__WEBPACK_IMPORTED_MODULE_24__.Z),
6145
6119
  /* harmony export */ "sr": () => (/* reexport safe */ _Key__WEBPACK_IMPORTED_MODULE_9__.Z),
6146
6120
  /* harmony export */ "u9": () => (/* reexport safe */ _Results__WEBPACK_IMPORTED_MODULE_19__.Z),
6147
6121
  /* harmony export */ "u_": () => (/* reexport safe */ _Modal__WEBPACK_IMPORTED_MODULE_12__.Z),
6148
- /* harmony export */ "uz": () => (/* reexport safe */ _SvgFontFix__WEBPACK_IMPORTED_MODULE_25__.Z),
6149
6122
  /* harmony export */ "zx": () => (/* reexport safe */ _Button__WEBPACK_IMPORTED_MODULE_3__.Z)
6150
6123
  /* harmony export */ });
6151
6124
  /* harmony import */ var _Alert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15982);
@@ -6162,8 +6135,8 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
6162
6135
  /* harmony import */ var _Logo__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(18801);
6163
6136
  /* harmony import */ var _Modal__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(59187);
6164
6137
  /* harmony import */ var _NavButtons__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(90374);
6165
- /* harmony import */ var _NotFound__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(24442);
6166
- /* harmony import */ var _PlainTiles__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(65925);
6138
+ /* harmony import */ var _NotFound__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(1437);
6139
+ /* harmony import */ var _PlainTiles__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(83601);
6167
6140
  /* harmony import */ var _Progress__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(29348);
6168
6141
  /* harmony import */ var _Rack__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(95937);
6169
6142
  /* harmony import */ var _Radio__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(71739);
@@ -6172,14 +6145,10 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
6172
6145
  /* harmony import */ var _SeoMessage__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(84203);
6173
6146
  /* harmony import */ var _Solver__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(65437);
6174
6147
  /* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(33538);
6175
- /* harmony import */ var _SvgFontCss__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(73289);
6176
- /* harmony import */ var _SvgFontFix__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(33956);
6177
- /* harmony import */ var _Tile__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(96815);
6178
- /* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(59004);
6179
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_Board__WEBPACK_IMPORTED_MODULE_2__, _Button__WEBPACK_IMPORTED_MODULE_3__, _Dictionary__WEBPACK_IMPORTED_MODULE_5__, _DictionaryInput__WEBPACK_IMPORTED_MODULE_6__, _EmptyState__WEBPACK_IMPORTED_MODULE_7__, _IconButton__WEBPACK_IMPORTED_MODULE_8__, _Loading__WEBPACK_IMPORTED_MODULE_10__, _Logo__WEBPACK_IMPORTED_MODULE_11__, _Modal__WEBPACK_IMPORTED_MODULE_12__, _NavButtons__WEBPACK_IMPORTED_MODULE_13__, _NotFound__WEBPACK_IMPORTED_MODULE_14__, _PlainTiles__WEBPACK_IMPORTED_MODULE_15__, _Progress__WEBPACK_IMPORTED_MODULE_16__, _Rack__WEBPACK_IMPORTED_MODULE_17__, _Results__WEBPACK_IMPORTED_MODULE_19__, _ResultsInput__WEBPACK_IMPORTED_MODULE_20__, _Solver__WEBPACK_IMPORTED_MODULE_22__, _Spinner__WEBPACK_IMPORTED_MODULE_23__, _Tile__WEBPACK_IMPORTED_MODULE_26__, _Tooltip__WEBPACK_IMPORTED_MODULE_27__]);
6180
- ([_Board__WEBPACK_IMPORTED_MODULE_2__, _Button__WEBPACK_IMPORTED_MODULE_3__, _Dictionary__WEBPACK_IMPORTED_MODULE_5__, _DictionaryInput__WEBPACK_IMPORTED_MODULE_6__, _EmptyState__WEBPACK_IMPORTED_MODULE_7__, _IconButton__WEBPACK_IMPORTED_MODULE_8__, _Loading__WEBPACK_IMPORTED_MODULE_10__, _Logo__WEBPACK_IMPORTED_MODULE_11__, _Modal__WEBPACK_IMPORTED_MODULE_12__, _NavButtons__WEBPACK_IMPORTED_MODULE_13__, _NotFound__WEBPACK_IMPORTED_MODULE_14__, _PlainTiles__WEBPACK_IMPORTED_MODULE_15__, _Progress__WEBPACK_IMPORTED_MODULE_16__, _Rack__WEBPACK_IMPORTED_MODULE_17__, _Results__WEBPACK_IMPORTED_MODULE_19__, _ResultsInput__WEBPACK_IMPORTED_MODULE_20__, _Solver__WEBPACK_IMPORTED_MODULE_22__, _Spinner__WEBPACK_IMPORTED_MODULE_23__, _Tile__WEBPACK_IMPORTED_MODULE_26__, _Tooltip__WEBPACK_IMPORTED_MODULE_27__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
6181
-
6182
-
6148
+ /* harmony import */ var _Tile__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(96815);
6149
+ /* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(59004);
6150
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_Board__WEBPACK_IMPORTED_MODULE_2__, _Button__WEBPACK_IMPORTED_MODULE_3__, _Dictionary__WEBPACK_IMPORTED_MODULE_5__, _DictionaryInput__WEBPACK_IMPORTED_MODULE_6__, _EmptyState__WEBPACK_IMPORTED_MODULE_7__, _IconButton__WEBPACK_IMPORTED_MODULE_8__, _Loading__WEBPACK_IMPORTED_MODULE_10__, _Logo__WEBPACK_IMPORTED_MODULE_11__, _Modal__WEBPACK_IMPORTED_MODULE_12__, _NavButtons__WEBPACK_IMPORTED_MODULE_13__, _Progress__WEBPACK_IMPORTED_MODULE_16__, _Rack__WEBPACK_IMPORTED_MODULE_17__, _Results__WEBPACK_IMPORTED_MODULE_19__, _ResultsInput__WEBPACK_IMPORTED_MODULE_20__, _Solver__WEBPACK_IMPORTED_MODULE_22__, _Spinner__WEBPACK_IMPORTED_MODULE_23__, _Tile__WEBPACK_IMPORTED_MODULE_24__, _Tooltip__WEBPACK_IMPORTED_MODULE_25__]);
6151
+ ([_Board__WEBPACK_IMPORTED_MODULE_2__, _Button__WEBPACK_IMPORTED_MODULE_3__, _Dictionary__WEBPACK_IMPORTED_MODULE_5__, _DictionaryInput__WEBPACK_IMPORTED_MODULE_6__, _EmptyState__WEBPACK_IMPORTED_MODULE_7__, _IconButton__WEBPACK_IMPORTED_MODULE_8__, _Loading__WEBPACK_IMPORTED_MODULE_10__, _Logo__WEBPACK_IMPORTED_MODULE_11__, _Modal__WEBPACK_IMPORTED_MODULE_12__, _NavButtons__WEBPACK_IMPORTED_MODULE_13__, _Progress__WEBPACK_IMPORTED_MODULE_16__, _Rack__WEBPACK_IMPORTED_MODULE_17__, _Results__WEBPACK_IMPORTED_MODULE_19__, _ResultsInput__WEBPACK_IMPORTED_MODULE_20__, _Solver__WEBPACK_IMPORTED_MODULE_22__, _Spinner__WEBPACK_IMPORTED_MODULE_23__, _Tile__WEBPACK_IMPORTED_MODULE_24__, _Tooltip__WEBPACK_IMPORTED_MODULE_25__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
6183
6152
 
6184
6153
 
6185
6154
 
@@ -6313,6 +6282,7 @@ const useAppLayout = ()=>{
6313
6282
  return {
6314
6283
  actionsWidth: 2 * parameters__WEBPACK_IMPORTED_MODULE_0__/* .BUTTON_HEIGHT */ .FZ - parameters__WEBPACK_IMPORTED_MODULE_0__/* .BORDER_WIDTH */ .YF,
6315
6284
  animateTile: !isLessThanXs,
6285
+ boardSize,
6316
6286
  cellSize,
6317
6287
  dictionaryHeight,
6318
6288
  isModalFullWidth: isLessThanS,
@@ -6346,11 +6316,11 @@ __webpack_async_result__();
6346
6316
  /* harmony export */ });
6347
6317
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16689);
6348
6318
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
6349
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65175);
6319
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55238);
6350
6320
 
6351
6321
 
6352
6322
  const useDirection = (direction)=>{
6353
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(()=>{
6323
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{
6354
6324
  const html = document.body.parentElement;
6355
6325
  if (!html) {
6356
6326
  return lib__WEBPACK_IMPORTED_MODULE_1__/* .noop */ .ZT;
@@ -6411,11 +6381,11 @@ const useIsTouchDevice = ()=>{
6411
6381
  /* harmony export */ });
6412
6382
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16689);
6413
6383
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
6414
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65175);
6384
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55238);
6415
6385
 
6416
6386
 
6417
6387
  const useLanguage = (language)=>{
6418
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(()=>{
6388
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{
6419
6389
  const html = document.body.parentElement;
6420
6390
  if (!html) {
6421
6391
  return lib__WEBPACK_IMPORTED_MODULE_1__/* .noop */ .ZT;
@@ -6650,7 +6620,7 @@ const useOnWindowResize = (onResize)=>{
6650
6620
  /* harmony import */ var react_dom_client__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom_client__WEBPACK_IMPORTED_MODULE_2__);
6651
6621
  /* harmony import */ var react_portal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(63938);
6652
6622
  /* harmony import */ var react_portal__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_portal__WEBPACK_IMPORTED_MODULE_3__);
6653
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65175);
6623
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(55238);
6654
6624
 
6655
6625
 
6656
6626
 
@@ -6740,8 +6710,10 @@ __webpack_require__.d(__webpack_exports__, {
6740
6710
  "ZP": () => (/* reexport */ i18n_i18n)
6741
6711
  });
6742
6712
 
6713
+ // EXTERNAL MODULE: ../constants/build/index.js
6714
+ var build = __webpack_require__(7618);
6743
6715
  // EXTERNAL MODULE: ../types/build/index.js
6744
- var build = __webpack_require__(34046);
6716
+ var types_build = __webpack_require__(34046);
6745
6717
  // EXTERNAL MODULE: ./src/icons/index.ts + 41 modules
6746
6718
  var icons = __webpack_require__(58966);
6747
6719
  // EXTERNAL MODULE: ./src/i18n/i18n.module.scss
@@ -6751,114 +6723,122 @@ var i18n_module_default = /*#__PURE__*/__webpack_require__.n(i18n_module);
6751
6723
 
6752
6724
 
6753
6725
 
6726
+
6754
6727
  const LOCALE_FEATURES = {
6755
- [build.Locale.DE_DE]: {
6756
- direction: "ltr",
6757
- fontFamily: "Open Sans",
6728
+ [types_build.Locale.DE_DE]: {
6729
+ comma: build.COMMA_LATIN,
6758
6730
  consonants: true,
6731
+ direction: "ltr",
6732
+ separator: `${build.COMMA_LATIN} `,
6759
6733
  vowels: true
6760
6734
  },
6761
- [build.Locale.EN_GB]: {
6762
- direction: "ltr",
6763
- fontFamily: "Open Sans",
6735
+ [types_build.Locale.EN_GB]: {
6736
+ comma: build.COMMA_LATIN,
6764
6737
  consonants: true,
6738
+ direction: "ltr",
6739
+ separator: `${build.COMMA_LATIN} `,
6765
6740
  vowels: true
6766
6741
  },
6767
- [build.Locale.EN_US]: {
6768
- direction: "ltr",
6769
- fontFamily: "Open Sans",
6742
+ [types_build.Locale.EN_US]: {
6743
+ comma: build.COMMA_LATIN,
6770
6744
  consonants: true,
6745
+ direction: "ltr",
6746
+ separator: `${build.COMMA_LATIN} `,
6771
6747
  vowels: true
6772
6748
  },
6773
- [build.Locale.ES_ES]: {
6774
- direction: "ltr",
6775
- fontFamily: "Open Sans",
6749
+ [types_build.Locale.ES_ES]: {
6750
+ comma: build.COMMA_LATIN,
6776
6751
  consonants: true,
6752
+ direction: "ltr",
6753
+ separator: `${build.COMMA_LATIN} `,
6777
6754
  vowels: true
6778
6755
  },
6779
- [build.Locale.FA_IR]: {
6780
- direction: "rtl",
6781
- fontFamily: "Vazirmatn",
6756
+ [types_build.Locale.FA_IR]: {
6757
+ comma: build.COMMA_ARABIC,
6782
6758
  consonants: false,
6759
+ direction: "rtl",
6760
+ separator: `${build.COMMA_ARABIC} `,
6783
6761
  vowels: false
6784
6762
  },
6785
- [build.Locale.FR_FR]: {
6786
- direction: "ltr",
6787
- fontFamily: "Open Sans",
6763
+ [types_build.Locale.FR_FR]: {
6764
+ comma: build.COMMA_LATIN,
6788
6765
  consonants: true,
6766
+ direction: "ltr",
6767
+ separator: `${build.COMMA_LATIN} `,
6789
6768
  vowels: true
6790
6769
  },
6791
- [build.Locale.PL_PL]: {
6792
- direction: "ltr",
6793
- fontFamily: "Open Sans",
6770
+ [types_build.Locale.PL_PL]: {
6771
+ comma: build.COMMA_LATIN,
6794
6772
  consonants: true,
6773
+ direction: "ltr",
6774
+ separator: `${build.COMMA_LATIN} `,
6795
6775
  vowels: true
6796
6776
  }
6797
6777
  };
6798
6778
  const LOCALE_FLAGS = {
6799
- [build.Locale.DE_DE]: {
6779
+ [types_build.Locale.DE_DE]: {
6800
6780
  className: (i18n_module_default()).de,
6801
6781
  Icon: icons/* FlagDe */.rV,
6802
6782
  label: "Deutsch",
6803
6783
  name: "German",
6804
- value: build.Locale.DE_DE
6784
+ value: types_build.Locale.DE_DE
6805
6785
  },
6806
- [build.Locale.EN_GB]: {
6786
+ [types_build.Locale.EN_GB]: {
6807
6787
  className: (i18n_module_default()).gb,
6808
6788
  Icon: icons/* FlagGb */.eP,
6809
6789
  label: "English (GB)",
6810
6790
  name: "English (GB)",
6811
- value: build.Locale.EN_GB
6791
+ value: types_build.Locale.EN_GB
6812
6792
  },
6813
- [build.Locale.EN_US]: {
6793
+ [types_build.Locale.EN_US]: {
6814
6794
  className: (i18n_module_default()).us,
6815
6795
  Icon: icons/* FlagUs */.YK,
6816
6796
  label: "English (US)",
6817
6797
  name: "English (US)",
6818
- value: build.Locale.EN_US
6798
+ value: types_build.Locale.EN_US
6819
6799
  },
6820
- [build.Locale.ES_ES]: {
6800
+ [types_build.Locale.ES_ES]: {
6821
6801
  className: (i18n_module_default()).es,
6822
6802
  Icon: icons/* FlagEs */.d,
6823
6803
  label: "Espa\xf1ol",
6824
6804
  name: "Spanish",
6825
- value: build.Locale.ES_ES
6805
+ value: types_build.Locale.ES_ES
6826
6806
  },
6827
- [build.Locale.FA_IR]: {
6807
+ [types_build.Locale.FA_IR]: {
6828
6808
  className: (i18n_module_default()).fa,
6829
6809
  Icon: icons/* FlagFa */.$M,
6830
6810
  label: "فارسی",
6831
6811
  name: "Persian",
6832
- value: build.Locale.FA_IR
6812
+ value: types_build.Locale.FA_IR
6833
6813
  },
6834
- [build.Locale.FR_FR]: {
6814
+ [types_build.Locale.FR_FR]: {
6835
6815
  className: (i18n_module_default()).fr,
6836
6816
  Icon: icons/* FlagFr */.OV,
6837
6817
  label: "Fran\xe7ais",
6838
6818
  name: "French",
6839
- value: build.Locale.FR_FR
6819
+ value: types_build.Locale.FR_FR
6840
6820
  },
6841
- [build.Locale.PL_PL]: {
6821
+ [types_build.Locale.PL_PL]: {
6842
6822
  className: (i18n_module_default()).pl,
6843
6823
  Icon: icons/* FlagPl */.fd,
6844
6824
  label: "Polski",
6845
6825
  name: "Polish",
6846
- value: build.Locale.PL_PL
6826
+ value: types_build.Locale.PL_PL
6847
6827
  }
6848
6828
  };
6849
6829
 
6850
6830
  ;// CONCATENATED MODULE: ./src/i18n/de.json
6851
- const de_namespaceObject = JSON.parse('{"cell.filter-cell":"Zielort - klicken zum Wechseln","cell.set-blank":"Als Blanko markieren","cell.set-not-blank":"Nicht als Blanko markieren","cell.tile.location":"Brett: Stein ({{x}}, {{y}})","cell.toggle-direction":"Schreibrichtung - klicken zum Wechseln","common.blanks":"Blankos","common.clear":"Löschen","common.close":"Schließen","common.consonants":"Konsonanten","common.loading":"Laden","common.next":"Weiter","common.points":"Punkte","common.previous":"Zurück","common.tiles":"Steine","common.two-letter-tiles":"Zwei-Buchstaben","common.vowels":"Vokale","common.word":"Wort","common.words":"Wörter","dictionary":"Wörterbuch","dictionary.empty-state.no-definitions":"Wort existiert im Wörterbuch aber hat keine Definition.","dictionary.empty-state.no-results":"Wort kann nicht im Wörterbuch gefunden werden.","dictionary.empty-state.not-allowed":"Dieses Wort ist nicht erlaubt.","dictionary.empty-state.uninitialized":"Die Wörterbuchdéfinition wird hier angezeigt.","dictionary.input.placeholder":"Durchsuche Wörterbuch...","dictionary.input.title":"Durch Kommas getrennte Wörter","empty-state.error":"Fehler","empty-state.info":"Info","empty-state.success":"Juhuu!","empty-state.warning":"Oje!","github":"Schau dieses Projekt auf GitHub an","keyMap":"Tastaturkürzel","keyMap.board":"Brett","keyMap.board.toggle-blank":"Als Blanko markieren / aufheben","keyMap.board.toggle-direction":"Schreibrichtung umschalten","keyMap.board-and-rack":"Brett & Ablage","keyMap.board-and-rack.insert-two-letter-tile":"Zwei-Buchstaben Stein hinzufügen","keyMap.board-and-rack.navigate":"Navigieren","keyMap.board-and-rack.remove-tile":"Stein entfernen","keyMap.board-and-rack.submit":"Lösen starten","keyMap.rack":"Ablage","keyMap.rack.insert-blank":"Blanko hinzufügen (Leertaste)","menu":"Menü","rack.placeholder":"Steine…","rack.tile.location":"Ablage: Stein ({{index}})","remaining-tiles":"Restliche Steine","results":"Ergebnisse","results.empty-state.no-results":"Keine Ergebnisse - kein Wort konnte generiert werden.","results.empty-state.outdated":"Ergebnisse sind alt.","results.empty-state.uninitialized":"Wörter die aus deinen Buchstaben generiert wurden erscheinen hier.","results.input.placeholder":"Suchergebnisse... (RegExp)","results.insert":"Hinzufügen","results.preview":"Vorschau","results.solve":"Lösen","settings":"Einstellungen","settings.autoGroupTiles":"Restliche Steine gruppieren","settings.autoGroupTiles.left":"Linke Seite","settings.autoGroupTiles.right":"Rechte Seite","settings.autoGroupTiles.null":"Nicht gruppieren","settings.game":"Spiel","settings.language":"Sprache","words":"Gebildete Wörter","words.invalid":"Falsch","words.valid":"Korrekt"}');
6831
+ const de_namespaceObject = JSON.parse('{"cell.filter-cell":"Zielort","cell.set-blank":"Als Blanko markieren","cell.set-not-blank":"Nicht als Blanko markieren","cell.tile.location":"Brett: Stein ({{x}}, {{y}})","cell.toggle-direction":"Schreibrichtung","common.blanks":"Blankos","common.clear":"Löschen","common.close":"Schließen","common.consonants":"Konsonanten","common.loading":"Laden","common.next":"Weiter","common.points":"Punkte","common.previous":"Zurück","common.tiles":"Steine","common.two-letter-tiles":"Zwei-Buchstaben","common.vowels":"Vokale","common.word":"Wort","common.words":"Wörter","dictionary":"Wörterbuch","dictionary.empty-state.no-definitions":"Wort existiert im Wörterbuch aber hat keine Definition.","dictionary.empty-state.no-results":"Wort kann nicht im Wörterbuch gefunden werden.","dictionary.empty-state.not-allowed":"Dieses Wort ist nicht erlaubt.","dictionary.empty-state.uninitialized":"Die Wörterbuchdéfinition wird hier angezeigt.","dictionary.input.placeholder":"Durchsuche Wörterbuch...","dictionary.input.title":"Durch Kommas getrennte Wörter","empty-state.error":"Fehler","empty-state.info":"Info","empty-state.success":"Juhuu!","empty-state.warning":"Oje!","github":"Schau dieses Projekt auf GitHub an","keyMap":"Tastaturkürzel","keyMap.board":"Brett","keyMap.board.toggle-blank":"Als Blanko markieren / aufheben","keyMap.board.toggle-direction":"Schreibrichtung umschalten","keyMap.board-and-rack":"Brett & Ablage","keyMap.board-and-rack.insert-two-letter-tile":"Zwei-Buchstaben Stein hinzufügen","keyMap.board-and-rack.navigate":"Navigieren","keyMap.board-and-rack.remove-tile":"Stein entfernen","keyMap.board-and-rack.submit":"Lösen starten","keyMap.rack":"Ablage","keyMap.rack.insert-blank":"Blanko hinzufügen (Leertaste)","menu":"Menü","rack.placeholder":"Steine…","rack.tile.location":"Ablage: Stein ({{index}})","remaining-tiles":"Restliche Steine","results":"Ergebnisse","results.empty-state.no-results":"Keine Ergebnisse - kein Wort konnte generiert werden.","results.empty-state.outdated":"Ergebnisse sind alt.","results.empty-state.uninitialized":"Wörter die aus deinen Buchstaben generiert wurden erscheinen hier.","results.input.placeholder":"Suchergebnisse... (RegExp)","results.insert":"Hinzufügen","results.preview":"Vorschau","results.solve":"Lösen","settings":"Einstellungen","settings.autoGroupTiles":"Restliche Steine gruppieren","settings.autoGroupTiles.left":"Linke Seite","settings.autoGroupTiles.right":"Rechte Seite","settings.autoGroupTiles.null":"Nicht gruppieren","settings.game":"Spiel","settings.language":"Sprache","words":"Gebildete Wörter","words.invalid":"Falsch","words.valid":"Korrekt"}');
6852
6832
  ;// CONCATENATED MODULE: ./src/i18n/en.json
6853
- const en_namespaceObject = JSON.parse('{"cell.filter-cell":"Target destination - click to toggle","cell.set-blank":"Mark it a blank","cell.set-not-blank":"Mark it not a blank","cell.tile.location":"Board: tile ({{x}}, {{y}})","cell.toggle-direction":"Typing direction - click to toggle","common.blanks":"Blanks","common.clear":"Clear","common.close":"Close","common.consonants":"Consonants","common.loading":"Loading","common.next":"Next","common.points":"Points","common.previous":"Previous","common.tiles":"Tiles","common.two-letter-tiles":"Two-letter","common.vowels":"Vowels","common.word":"Word","common.words":"Words","dictionary":"Dictionary","dictionary.empty-state.no-definitions":"Word exists in the dictionary but it does not have a definition.","dictionary.empty-state.no-results":"Unable to find word definition in the dictionary.","dictionary.empty-state.not-allowed":"This word is not allowed.","dictionary.empty-state.uninitialized":"Word definition will be shown here.","dictionary.input.placeholder":"Search dictionary...","dictionary.input.title":"Comma-separated words","empty-state.error":"Error","empty-state.info":"Info","empty-state.success":"Yeah!","empty-state.warning":"Oops!","github":"See this project on GitHub","keyMap":"Keyboard shortcuts","keyMap.board":"Board","keyMap.board.toggle-blank":"Mark/unmark tile as a blank","keyMap.board.toggle-direction":"Toggle typing direction","keyMap.board-and-rack":"Board & rack","keyMap.board-and-rack.insert-two-letter-tile":"Insert two-letter tile","keyMap.board-and-rack.navigate":"Navigate","keyMap.board-and-rack.remove-tile":"Remove tile","keyMap.board-and-rack.submit":"Start solving","keyMap.rack":"Rack","keyMap.rack.insert-blank":"Insert blank (spacebar)","menu":"Menu","rack.placeholder":"Letters","rack.tile.location":"Rack: tile ({{index}})","remaining-tiles":"Remaining tiles","results":"Results","results.empty-state.no-results":"No results - unable to generate any words.","results.empty-state.outdated":"Results are outdated.","results.empty-state.uninitialized":"Words generated from your letters will be shown here.","results.input.placeholder":"Search results... (RegExp)","results.insert":"Insert","results.preview":"Preview","results.solve":"Solve","settings":"Settings","settings.autoGroupTiles":"Group remaining tiles","settings.autoGroupTiles.left":"On the left","settings.autoGroupTiles.right":"On the right","settings.autoGroupTiles.null":"Do not group","settings.game":"Game","settings.language":"Language","words":"Created words","words.invalid":"Invalid","words.valid":"Valid"}');
6833
+ const en_namespaceObject = JSON.parse('{"cell.filter-cell":"Target destination","cell.set-blank":"Mark it a blank","cell.set-not-blank":"Mark it not a blank","cell.tile.location":"Board: tile ({{x}}, {{y}})","cell.toggle-direction":"Typing direction","common.blanks":"Blanks","common.clear":"Clear","common.close":"Close","common.consonants":"Consonants","common.loading":"Loading","common.next":"Next","common.points":"Points","common.previous":"Previous","common.tiles":"Tiles","common.two-letter-tiles":"Two-letter","common.vowels":"Vowels","common.word":"Word","common.words":"Words","dictionary":"Dictionary","dictionary.empty-state.no-definitions":"Word exists in the dictionary but it does not have a definition.","dictionary.empty-state.no-results":"Unable to find word definition in the dictionary.","dictionary.empty-state.not-allowed":"This word is not allowed.","dictionary.empty-state.uninitialized":"Word definition will be shown here.","dictionary.input.placeholder":"Search dictionary...","dictionary.input.title":"Comma-separated words","empty-state.error":"Error","empty-state.info":"Info","empty-state.success":"Yeah!","empty-state.warning":"Oops!","github":"See this project on GitHub","keyMap":"Keyboard shortcuts","keyMap.board":"Board","keyMap.board.toggle-blank":"Mark/unmark tile as a blank","keyMap.board.toggle-direction":"Toggle typing direction","keyMap.board-and-rack":"Board & rack","keyMap.board-and-rack.insert-two-letter-tile":"Insert two-letter tile","keyMap.board-and-rack.navigate":"Navigate","keyMap.board-and-rack.remove-tile":"Remove tile","keyMap.board-and-rack.submit":"Start solving","keyMap.rack":"Rack","keyMap.rack.insert-blank":"Insert blank (spacebar)","menu":"Menu","rack.placeholder":"Letters","rack.tile.location":"Rack: tile ({{index}})","remaining-tiles":"Remaining tiles","results":"Results","results.empty-state.no-results":"No results - unable to generate any words.","results.empty-state.outdated":"Results are outdated.","results.empty-state.uninitialized":"Words generated from your letters will be shown here.","results.input.placeholder":"Search results... (RegExp)","results.insert":"Insert","results.preview":"Preview","results.solve":"Solve","settings":"Settings","settings.autoGroupTiles":"Group remaining tiles","settings.autoGroupTiles.left":"On the left","settings.autoGroupTiles.right":"On the right","settings.autoGroupTiles.null":"Do not group","settings.game":"Game","settings.language":"Language","words":"Created words","words.invalid":"Invalid","words.valid":"Valid"}');
6854
6834
  ;// CONCATENATED MODULE: ./src/i18n/es.json
6855
- const es_namespaceObject = JSON.parse('{"cell.filter-cell":"Destino objetivo: haga clic para alternar","cell.set-blank":"Marcar como en blanco","cell.set-not-blank":"Marcar como no en blanco","cell.tile.location":"Tablero: espacio ({{x}}, {{y}})","cell.toggle-direction":"Dirección de escritura: haga clic para alternar","common.blanks":"Blancos","common.clear":"Borrar","common.close":"Cerrar","common.consonants":"Consonantes","common.loading":"Cargando","common.next":"Siguiente","common.points":"Puntos","common.previous":"Anterior","common.tiles":"Longitud","common.two-letter-tiles":"Dos letras","common.vowels":"Vocales","common.word":"Palabra","common.words":"Palabras","dictionary":"Diccionario","dictionary.empty-state.no-definitions":"La palabra existe en el diccionario pero no tiene una definición.","dictionary.empty-state.no-results":"No se puede encontrar la definición de palabra en el diccionario.","dictionary.empty-state.not-allowed":"Esta palabra no es aceptable.","dictionary.empty-state.uninitialized":"Aquí se mostrará la definición del diccionario.","dictionary.input.placeholder":"Busca el diccionario...","dictionary.input.title":"Palabras separadas por comas","empty-state.error":"Error","empty-state.info":"Info","empty-state.success":"Sí!","empty-state.warning":"Vaya!","github":"Ver este proyecto en GitHub","keyMap":"Atajos de teclado","keyMap.board":"Tablero","keyMap.board.toggle-blank":"Marcar / desmarcar un espacio en blanco","keyMap.board.toggle-direction":"Alternar dirección de escritura","keyMap.board-and-rack":"Tablero y estante","keyMap.board-and-rack.insert-two-letter-tile":"Insertar mosaico de dos letras","keyMap.board-and-rack.navigate":"Navegar","keyMap.board-and-rack.remove-tile":"Quitar Letra","keyMap.board-and-rack.submit":"Empezar a resolver","keyMap.rack":"Estante","keyMap.rack.insert-blank":"Insertar espacio en blanco (barra espaciadora)","menu":"Menú","rack.placeholder":"Letras…","rack.tile.location":"Estante: espacio ({{index}})","remaining-tiles":"Casillas restantes","results":"Resultados","results.empty-state.no-results":"No hay resultados; no se pueden generar palabras","results.empty-state.outdated":"Los resultados están desactualizados.","results.empty-state.uninitialized":"Aquí se mostrarán las palabras generadas a partir de sus letras.","results.input.placeholder":"Busque una solución... (RegExp)","results.insert":"Insertar","results.preview":"Vista previa","results.solve":"Resolver","settings":"Configuración","settings.autoGroupTiles":"Agrupar casillas restantes","settings.autoGroupTiles.left":"A la izquierda","settings.autoGroupTiles.right":"A la derecha","settings.autoGroupTiles.null":"No agrupar","settings.game":"Juego","settings.language":"Idioma","words":"Palabras creadas","words.invalid":"Incorrecto","words.valid":"Correcto"}');
6835
+ const es_namespaceObject = JSON.parse('{"cell.filter-cell":"Destino objetivo","cell.set-blank":"Marcar como en blanco","cell.set-not-blank":"Marcar como no en blanco","cell.tile.location":"Tablero: espacio ({{x}}, {{y}})","cell.toggle-direction":"Dirección de escritura","common.blanks":"Blancos","common.clear":"Borrar","common.close":"Cerrar","common.consonants":"Consonantes","common.loading":"Cargando","common.next":"Siguiente","common.points":"Puntos","common.previous":"Anterior","common.tiles":"Longitud","common.two-letter-tiles":"Dos letras","common.vowels":"Vocales","common.word":"Palabra","common.words":"Palabras","dictionary":"Diccionario","dictionary.empty-state.no-definitions":"La palabra existe en el diccionario pero no tiene una definición.","dictionary.empty-state.no-results":"No se puede encontrar la definición de palabra en el diccionario.","dictionary.empty-state.not-allowed":"Esta palabra no es aceptable.","dictionary.empty-state.uninitialized":"Aquí se mostrará la definición del diccionario.","dictionary.input.placeholder":"Busca el diccionario...","dictionary.input.title":"Palabras separadas por comas","empty-state.error":"Error","empty-state.info":"Info","empty-state.success":"Sí!","empty-state.warning":"Vaya!","github":"Ver este proyecto en GitHub","keyMap":"Atajos de teclado","keyMap.board":"Tablero","keyMap.board.toggle-blank":"Marcar / desmarcar un espacio en blanco","keyMap.board.toggle-direction":"Alternar dirección de escritura","keyMap.board-and-rack":"Tablero y estante","keyMap.board-and-rack.insert-two-letter-tile":"Insertar mosaico de dos letras","keyMap.board-and-rack.navigate":"Navegar","keyMap.board-and-rack.remove-tile":"Quitar Letra","keyMap.board-and-rack.submit":"Empezar a resolver","keyMap.rack":"Estante","keyMap.rack.insert-blank":"Insertar espacio en blanco (barra espaciadora)","menu":"Menú","rack.placeholder":"Letras…","rack.tile.location":"Estante: espacio ({{index}})","remaining-tiles":"Casillas restantes","results":"Resultados","results.empty-state.no-results":"No hay resultados; no se pueden generar palabras","results.empty-state.outdated":"Los resultados están desactualizados.","results.empty-state.uninitialized":"Aquí se mostrarán las palabras generadas a partir de sus letras.","results.input.placeholder":"Busque una solución... (RegExp)","results.insert":"Insertar","results.preview":"Vista previa","results.solve":"Resolver","settings":"Configuración","settings.autoGroupTiles":"Agrupar casillas restantes","settings.autoGroupTiles.left":"A la izquierda","settings.autoGroupTiles.right":"A la derecha","settings.autoGroupTiles.null":"No agrupar","settings.game":"Juego","settings.language":"Idioma","words":"Palabras creadas","words.invalid":"Incorrecto","words.valid":"Correcto"}');
6856
6836
  ;// CONCATENATED MODULE: ./src/i18n/fa.json
6857
- const fa_namespaceObject = JSON.parse('{"cell.filter-cell":"مقصد - کلیک برای تغییر","cell.set-blank":"علامت گذاری به عنوان خالی","cell.set-not-blank":"علامت گذاری به عنوان غیر خالی","cell.toggle-direction":"جهت تایپ - کلیک برای تغییر","cell.tile.location":"({{x}}، {{y}}) کاشی: صفحه","common.blanks":"خالی","common.clear":"پاک کردن","common.close":"بستن","common.consonants":"حروف صامت","common.loading":"در حال بارگزاری","common.next":"بعدی","common.points":"امتیازات","common.previous":"قبلی","common.tiles":"کاشی ها","common.two-letter-tiles":"دو حرفی","common.vowels":"حروف مصوت","common.word":"کلمه","common.words":"کلمات","dictionary":"فرهنگ لغت","dictionary.empty-state.no-definitions":"کلمه در فرهنگ لغت وجود دارد، ولی معنایی برای آن ثبت نشده است.","dictionary.empty-state.no-results":"کلمه در فرهنگ لغت یافت نشد.","dictionary.empty-state.not-allowed":"این کلمه مجاز نیست.","dictionary.empty-state.uninitialized":"معنی لغت اینجا نمایش داده خواهد شد.","dictionary.input.placeholder":"جستجو در فرهنگ لغت ...","dictionary.input.title":"کلمات جدا شده با کاما","empty-state.error":"خطا","empty-state.info":"اطلاعات","empty-state.success":"حله!","empty-state.warning":"اوووخ!","github":"به این پروژه در گیتهاب سر بزنید","keyMap":"میانبر های کیبورد","keyMap.board":"صفحه","keyMap.board.toggle-blank":"علامت/عدم علامت گذاری کاشی به عنوان خالی","keyMap.board.toggle-direction":"تغییر جهت تایپ","keyMap.board-and-rack":"صفحه و طاقچه","keyMap.board-and-rack.insert-two-letter-tile":"وارد کردن کاشی دو حرفی","keyMap.board-and-rack.navigate":"حرکت","keyMap.board-and-rack.remove-tile":"حذف کاشی","keyMap.board-and-rack.submit":"حل کردن","keyMap.rack":"طاقچه","keyMap.rack.insert-blank":"وارد کردن کاشی خالی (دکمه اسپیس)","menu":"منو","rack.placeholder":"لیستحرف","rack.tile.location":"({{index}}) کاشی: طاقچه","remaining-tiles":"کاشی های باقی مانده","results":"نتایج","results.empty-state.no-results":"کلمه قابل استفاده پیدا نشد.","results.empty-state.outdated":"نتایج به روز نیستند، برای بروز.","results.empty-state.uninitialized":"کلمات تولید شده از حروف شما اینجا نمایش داده خواهد شد.","results.input.placeholder":"جستجو در نتایج (RegExp)","results.insert":"وارد کردن","results.preview":"پیش نمایش","results.solve":"حل کن","settings":"تنظیمات","settings.autoGroupTiles":"کاشی های باقی مانده ی طاقچه را کنار هم قرار بده","settings.autoGroupTiles.left":"در سمت چپ","settings.autoGroupTiles.right":"در سمت راست","settings.autoGroupTiles.null":"کنار هم قرار نده","settings.game":"بازی","settings.language":"زبان","words":"کلمات ساخته شده","words.invalid":"نا معتبر","words.valid":"معتبر"}');
6837
+ const fa_namespaceObject = JSON.parse('{"cell.filter-cell":"مقصد","cell.set-blank":"علامت گذاری به عنوان خالی","cell.set-not-blank":"علامت گذاری به عنوان غیر خالی","cell.tile.location":"({{x}}، {{y}}) کاشی: صفحه","cell.toggle-direction":"جهت تایپ","common.blanks":"خالی","common.clear":"پاک کردن","common.close":"بستن","common.consonants":"حروف صامت","common.loading":"در حال بارگزاری","common.next":"بعدی","common.points":"امتیازات","common.previous":"قبلی","common.tiles":"کاشی ها","common.two-letter-tiles":"دو حرفی","common.vowels":"حروف مصوت","common.word":"کلمه","common.words":"کلمات","dictionary":"فرهنگ لغت","dictionary.empty-state.no-definitions":"کلمه در فرهنگ لغت وجود دارد، ولی معنایی برای آن ثبت نشده است.","dictionary.empty-state.no-results":"کلمه در فرهنگ لغت یافت نشد.","dictionary.empty-state.not-allowed":"این کلمه مجاز نیست.","dictionary.empty-state.uninitialized":"معنی لغت اینجا نمایش داده خواهد شد.","dictionary.input.placeholder":"جستجو در فرهنگ لغت ...","dictionary.input.title":"کلمات جدا شده با کاما","empty-state.error":"خطا","empty-state.info":"اطلاعات","empty-state.success":"حله!","empty-state.warning":"اوووخ!","github":"به این پروژه در گیتهاب سر بزنید","keyMap":"میانبر های کیبورد","keyMap.board":"صفحه","keyMap.board.toggle-blank":"علامت/عدم علامت گذاری کاشی به عنوان خالی","keyMap.board.toggle-direction":"تغییر جهت تایپ","keyMap.board-and-rack":"صفحه و طاقچه","keyMap.board-and-rack.insert-two-letter-tile":"وارد کردن کاشی دو حرفی","keyMap.board-and-rack.navigate":"حرکت","keyMap.board-and-rack.remove-tile":"حذف کاشی","keyMap.board-and-rack.submit":"حل کردن","keyMap.rack":"طاقچه","keyMap.rack.insert-blank":"وارد کردن کاشی خالی (دکمه اسپیس)","menu":"منو","rack.placeholder":"لیستحرف","rack.tile.location":"({{index}}) کاشی: طاقچه","remaining-tiles":"کاشی های باقی مانده","results":"نتایج","results.empty-state.no-results":"کلمه قابل استفاده پیدا نشد.","results.empty-state.outdated":"نتایج به روز نیستند، برای بروز.","results.empty-state.uninitialized":"کلمات تولید شده از حروف شما اینجا نمایش داده خواهد شد.","results.input.placeholder":"جستجو در نتایج (RegExp)","results.insert":"وارد کردن","results.preview":"پیش نمایش","results.solve":"حل کن","settings":"تنظیمات","settings.autoGroupTiles":"کاشی های باقی مانده ی طاقچه را کنار هم قرار بده","settings.autoGroupTiles.left":"در سمت چپ","settings.autoGroupTiles.right":"در سمت راست","settings.autoGroupTiles.null":"کنار هم قرار نده","settings.game":"بازی","settings.language":"زبان","words":"کلمات ساخته شده","words.invalid":"نا معتبر","words.valid":"معتبر"}');
6858
6838
  ;// CONCATENATED MODULE: ./src/i18n/fr.json
6859
- const fr_namespaceObject = JSON.parse('{"cell.filter-cell":"Destination cible - cliquer pour changer","cell.set-blank":"Marquer comme vide","cell.set-not-blank":"Marquer comme non vide","cell.tile.location":"Plateau: la case ({{x}}, {{y}})","cell.toggle-direction":"Direction d\'écriture - cliquer pour changer","common.blanks":"Cases vides","common.clear":"Effacer","common.close":"Fermer","common.consonants":"Consonnes","common.loading":"Chargement","common.next":"Suivant","common.points":"Points","common.previous":"Précédent","common.tiles":"Cases","common.two-letter-tiles":"Deux lettres","common.vowels":"Voyelles","common.word":"Mot","common.words":"Mots","dictionary":"Dictionnaire","dictionary.empty-state.no-definitions":"Le mot existe dans le dictionary mais n\'a pas de définition.","dictionary.empty-state.no-results":"Impossible de trouver une définition pour ce mot dans le dictionaire.","dictionary.empty-state.not-allowed":"Ce mot n\'est pas pas acceptable.","dictionary.empty-state.uninitialized":"La définition dictionaire sera affichée ici.","dictionary.input.placeholder":"Rechercher dans le dictionnaire...","dictionary.input.title":"Mots séparées par des virgules","empty-state.error":"Erreur","empty-state.info":"Info","empty-state.success":"Ouais!","empty-state.warning":"Oups!","github":"Voir ce projet sur GitHub","keyMap":"Raccourcis clavier","keyMap.board":"Plateau","keyMap.board.toggle-blank":"Marqué/Démarqué la case en tant que vide","keyMap.board.toggle-direction":"Faire basculer la direction d\'écriture","keyMap.board-and-rack":"Plateau & chevalet","keyMap.board-and-rack.insert-two-letter-tile":"Insérer une tuile de deux lettres","keyMap.board-and-rack.navigate":"Naviguer","keyMap.board-and-rack.remove-tile":"Supprimer une case","keyMap.board-and-rack.submit":"Commencer la résolution","keyMap.rack":"Chevalet","keyMap.rack.insert-blank":"Inserer une case vide (spacebar)","menu":"Menu","rack.placeholder":"Lettres","rack.tile.location":"Chevalet: la case ({{index}})","remaining-tiles":"Cases restantes","results":"Résultats","results.empty-state.no-results":"Pas de résultats - impossible de générer des mots.","results.empty-state.outdated":"Les résultats sont dépassé.","results.empty-state.uninitialized":"Les mots générés à partir de vos lettres seront affichés ici.","results.input.placeholder":"Rechercher les résultats... (RegExp)","results.insert":"Inserer","results.preview":"Prévisualisation","results.solve":"Résoudre","settings":"Options","settings.autoGroupTiles":"Grouper les cases restantes","settings.autoGroupTiles.left":"Vers la droite","settings.autoGroupTiles.right":"Vers la gauche","settings.autoGroupTiles.null":"Ne pas grouper","settings.game":"Jeu","settings.language":"Langue","words":"Mots créés","words.invalid":"Incorrect","words.valid":"Corriger"}');
6839
+ const fr_namespaceObject = JSON.parse('{"cell.filter-cell":"Destination cible","cell.set-blank":"Marquer comme vide","cell.set-not-blank":"Marquer comme non vide","cell.tile.location":"Plateau: la case ({{x}}, {{y}})","cell.toggle-direction":"Direction d\'écriture","common.blanks":"Cases vides","common.clear":"Effacer","common.close":"Fermer","common.consonants":"Consonnes","common.loading":"Chargement","common.next":"Suivant","common.points":"Points","common.previous":"Précédent","common.tiles":"Cases","common.two-letter-tiles":"Deux lettres","common.vowels":"Voyelles","common.word":"Mot","common.words":"Mots","dictionary":"Dictionnaire","dictionary.empty-state.no-definitions":"Le mot existe dans le dictionary mais n\'a pas de définition.","dictionary.empty-state.no-results":"Impossible de trouver une définition pour ce mot dans le dictionaire.","dictionary.empty-state.not-allowed":"Ce mot n\'est pas pas acceptable.","dictionary.empty-state.uninitialized":"La définition dictionaire sera affichée ici.","dictionary.input.placeholder":"Rechercher dans le dictionnaire...","dictionary.input.title":"Mots séparées par des virgules","empty-state.error":"Erreur","empty-state.info":"Info","empty-state.success":"Ouais!","empty-state.warning":"Oups!","github":"Voir ce projet sur GitHub","keyMap":"Raccourcis clavier","keyMap.board":"Plateau","keyMap.board.toggle-blank":"Marqué/Démarqué la case en tant que vide","keyMap.board.toggle-direction":"Faire basculer la direction d\'écriture","keyMap.board-and-rack":"Plateau & chevalet","keyMap.board-and-rack.insert-two-letter-tile":"Insérer une tuile de deux lettres","keyMap.board-and-rack.navigate":"Naviguer","keyMap.board-and-rack.remove-tile":"Supprimer une case","keyMap.board-and-rack.submit":"Commencer la résolution","keyMap.rack":"Chevalet","keyMap.rack.insert-blank":"Inserer une case vide (spacebar)","menu":"Menu","rack.placeholder":"Lettres","rack.tile.location":"Chevalet: la case ({{index}})","remaining-tiles":"Cases restantes","results":"Résultats","results.empty-state.no-results":"Pas de résultats - impossible de générer des mots.","results.empty-state.outdated":"Les résultats sont dépassé.","results.empty-state.uninitialized":"Les mots générés à partir de vos lettres seront affichés ici.","results.input.placeholder":"Rechercher les résultats... (RegExp)","results.insert":"Inserer","results.preview":"Prévisualisation","results.solve":"Résoudre","settings":"Options","settings.autoGroupTiles":"Grouper les cases restantes","settings.autoGroupTiles.left":"Vers la droite","settings.autoGroupTiles.right":"Vers la gauche","settings.autoGroupTiles.null":"Ne pas grouper","settings.game":"Jeu","settings.language":"Langue","words":"Mots créés","words.invalid":"Incorrect","words.valid":"Corriger"}');
6860
6840
  ;// CONCATENATED MODULE: ./src/i18n/pl.json
6861
- const pl_namespaceObject = JSON.parse('{"cell.filter-cell":"Miejsce docelowe - kliknij aby zmienić","cell.set-blank":"Oznacz jako blank","cell.set-not-blank":"Oznacz jako nie blank","cell.tile.location":"Plansza: płytka ({{x}}, {{y}})","cell.toggle-direction":"Kierunek wpisywania - kliknij aby zmienić","common.blanks":"Blanki","common.clear":"Wyczyść","common.close":"Zamknij","common.consonants":"Spółgłoski","common.loading":"Ładowanie","common.next":"Następne","common.points":"Punkty","common.previous":"Poprzednie","common.tiles":"Płytki","common.two-letter-tiles":"Dwuliterowe","common.vowels":"Samogłoski","common.word":"Słowo","common.words":"Słowa","dictionary":"Słownik","dictionary.empty-state.no-definitions":"Słowo istnieje w słowniku ale nie posiada definicji.","dictionary.empty-state.no-results":"Nie udało się znaleźć definicji słowa w słowniku.","dictionary.empty-state.not-allowed":"To słowo nie jest dopuszczalne w grach.","dictionary.empty-state.uninitialized":"Tu zostanie wyświetlona definicja słowa.","dictionary.input.placeholder":"Szukaj w słowniku...","dictionary.input.title":"Słowa rozdzielone przecinkiem","empty-state.error":"Błąd","empty-state.info":"Info","empty-state.success":"Hurra!","empty-state.warning":"Ups!","github":"Zobacz ten projekt na GitHubie","keyMap":"Skróty klawiszowe","keyMap.board":"Plansza","keyMap.board.toggle-blank":"Oznacz/odznacz płytkę jako blank","keyMap.board.toggle-direction":"Zmień kierunek wpisywania","keyMap.board-and-rack":"Plansza i stojak","keyMap.board-and-rack.insert-two-letter-tile":"Wstaw dwuliterową płytkę","keyMap.board-and-rack.navigate":"Nawigacja","keyMap.board-and-rack.remove-tile":"Zdejmij płytkę","keyMap.board-and-rack.submit":"Rozpocznij wyszukiwanie","keyMap.rack":"Stojak","keyMap.rack.insert-blank":"Wstaw blanka (spacja)","menu":"Menu","rack.placeholder":"Literki","rack.tile.location":"Stojak: płytka ({{index}})","remaining-tiles":"Pozostałe płytki","results":"Wyniki","results.empty-state.no-results":"Brak wyników - nie można wygenerować żadnego słowa.","results.empty-state.outdated":"Wyniki są nieaktualne.","results.empty-state.uninitialized":"Tu zostaną wyświetlone słowa wygenerowane z Twoich liter.","results.input.placeholder":"Szukaj rozwiązania... (RegExp)","results.insert":"Wstaw","results.preview":"Podgląd","results.solve":"Rozwiąż","settings":"Opcje","settings.autoGroupTiles":"Grupuj pozostałe płytki","settings.autoGroupTiles.left":"Po lewej","settings.autoGroupTiles.right":"Po prawej","settings.autoGroupTiles.null":"Nie grupuj","settings.game":"Gra","settings.language":"Język","words":"Utworzone słowa","words.invalid":"Niepoprawne","words.valid":"Poprawne"}');
6841
+ const pl_namespaceObject = JSON.parse('{"cell.filter-cell":"Miejsce docelowe","cell.set-blank":"Oznacz jako blank","cell.set-not-blank":"Oznacz jako nie blank","cell.tile.location":"Plansza: płytka ({{x}}, {{y}})","cell.toggle-direction":"Kierunek wpisywania","common.blanks":"Blanki","common.clear":"Wyczyść","common.close":"Zamknij","common.consonants":"Spółgłoski","common.loading":"Ładowanie","common.next":"Następne","common.points":"Punkty","common.previous":"Poprzednie","common.tiles":"Płytki","common.two-letter-tiles":"Dwuliterowe","common.vowels":"Samogłoski","common.word":"Słowo","common.words":"Słowa","dictionary":"Słownik","dictionary.empty-state.no-definitions":"Słowo istnieje w słowniku ale nie posiada definicji.","dictionary.empty-state.no-results":"Nie udało się znaleźć definicji słowa w słowniku.","dictionary.empty-state.not-allowed":"To słowo nie jest dopuszczalne w grach.","dictionary.empty-state.uninitialized":"Tu zostanie wyświetlona definicja słowa.","dictionary.input.placeholder":"Szukaj w słowniku...","dictionary.input.title":"Słowa rozdzielone przecinkiem","empty-state.error":"Błąd","empty-state.info":"Info","empty-state.success":"Hurra!","empty-state.warning":"Ups!","github":"Zobacz ten projekt na GitHubie","keyMap":"Skróty klawiszowe","keyMap.board":"Plansza","keyMap.board.toggle-blank":"Oznacz/odznacz płytkę jako blank","keyMap.board.toggle-direction":"Zmień kierunek wpisywania","keyMap.board-and-rack":"Plansza i stojak","keyMap.board-and-rack.insert-two-letter-tile":"Wstaw dwuliterową płytkę","keyMap.board-and-rack.navigate":"Nawigacja","keyMap.board-and-rack.remove-tile":"Zdejmij płytkę","keyMap.board-and-rack.submit":"Rozpocznij wyszukiwanie","keyMap.rack":"Stojak","keyMap.rack.insert-blank":"Wstaw blanka (spacja)","menu":"Menu","rack.placeholder":"Literki","rack.tile.location":"Stojak: płytka ({{index}})","remaining-tiles":"Pozostałe płytki","results":"Wyniki","results.empty-state.no-results":"Brak wyników - nie można wygenerować żadnego słowa.","results.empty-state.outdated":"Wyniki są nieaktualne.","results.empty-state.uninitialized":"Tu zostaną wyświetlone słowa wygenerowane z Twoich liter.","results.input.placeholder":"Szukaj rozwiązania... (RegExp)","results.insert":"Wstaw","results.preview":"Podgląd","results.solve":"Rozwiąż","settings":"Opcje","settings.autoGroupTiles":"Grupuj pozostałe płytki","settings.autoGroupTiles.left":"Po lewej","settings.autoGroupTiles.right":"Po prawej","settings.autoGroupTiles.null":"Nie grupuj","settings.game":"Gra","settings.language":"Język","words":"Utworzone słowa","words.invalid":"Niepoprawne","words.valid":"Poprawne"}');
6862
6842
  ;// CONCATENATED MODULE: ./src/i18n/i18n.ts
6863
6843
 
6864
6844
 
@@ -6868,13 +6848,13 @@ const pl_namespaceObject = JSON.parse('{"cell.filter-cell":"Miejsce docelowe - k
6868
6848
 
6869
6849
 
6870
6850
  const i18n = {
6871
- [build.Locale.DE_DE]: de_namespaceObject,
6872
- [build.Locale.EN_GB]: en_namespaceObject,
6873
- [build.Locale.EN_US]: en_namespaceObject,
6874
- [build.Locale.ES_ES]: es_namespaceObject,
6875
- [build.Locale.FA_IR]: fa_namespaceObject,
6876
- [build.Locale.FR_FR]: fr_namespaceObject,
6877
- [build.Locale.PL_PL]: pl_namespaceObject
6851
+ [types_build.Locale.DE_DE]: de_namespaceObject,
6852
+ [types_build.Locale.EN_GB]: en_namespaceObject,
6853
+ [types_build.Locale.EN_US]: en_namespaceObject,
6854
+ [types_build.Locale.ES_ES]: es_namespaceObject,
6855
+ [types_build.Locale.FA_IR]: fa_namespaceObject,
6856
+ [types_build.Locale.FR_FR]: fr_namespaceObject,
6857
+ [types_build.Locale.PL_PL]: pl_namespaceObject
6878
6858
  };
6879
6859
  /* harmony default export */ const i18n_i18n = (i18n);
6880
6860
 
@@ -7887,7 +7867,7 @@ var SvgStar = function SvgStar(props) {
7887
7867
 
7888
7868
  /***/ }),
7889
7869
 
7890
- /***/ 65175:
7870
+ /***/ 55238:
7891
7871
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7892
7872
 
7893
7873
  "use strict";
@@ -7901,6 +7881,7 @@ __webpack_require__.d(__webpack_exports__, {
7901
7881
  "np": () => (/* reexport */ lib_createKeyboardNavigation),
7902
7882
  "Ml": () => (/* reexport */ lib_createNullMovingComparator),
7903
7883
  "GF": () => (/* reexport */ lib_createRegExp),
7884
+ "kD": () => (/* reexport */ lib_dataUrlToBlob),
7904
7885
  "nK": () => (/* reexport */ lib_extractCharacters),
7905
7886
  "WM": () => (/* reexport */ lib_extractInputValue),
7906
7887
  "Jp": () => (/* reexport */ lib_findCell),
@@ -8004,6 +7985,27 @@ const createRegExp = (input)=>{
8004
7985
  };
8005
7986
  /* harmony default export */ const lib_createRegExp = (createRegExp);
8006
7987
 
7988
+ ;// CONCATENATED MODULE: ./src/lib/dataUrlToBlob.ts
7989
+ const dataUrlToBlob = (dataUrl)=>{
7990
+ const [mime = "", data] = dataUrl.split(",");
7991
+ const [, type] = mime.match(/:(.*?);/) || [];
7992
+ if (typeof type !== "string") {
7993
+ throw new Error("Unsupported data URL");
7994
+ }
7995
+ const byteString = globalThis.atob(data);
7996
+ const u8arr = new Uint8Array(byteString.length);
7997
+ let index = byteString.length;
7998
+ while(index--){
7999
+ u8arr[index] = byteString.charCodeAt(index);
8000
+ }
8001
+ return new Blob([
8002
+ u8arr
8003
+ ], {
8004
+ type
8005
+ });
8006
+ };
8007
+ /* harmony default export */ const lib_dataUrlToBlob = (dataUrlToBlob);
8008
+
8007
8009
  // EXTERNAL MODULE: ../types/build/index.js
8008
8010
  var build = __webpack_require__(34046);
8009
8011
  ;// CONCATENATED MODULE: ./src/lib/detectLocale.ts
@@ -8470,6 +8472,7 @@ const zipCharactersAndTiles = (characters, tiles)=>{
8470
8472
 
8471
8473
 
8472
8474
 
8475
+
8473
8476
 
8474
8477
 
8475
8478
  /***/ }),
@@ -8482,10 +8485,12 @@ const zipCharactersAndTiles = (characters, tiles)=>{
8482
8485
  /* harmony export */ "$B": () => (/* binding */ BOARD_TILE_FONT_SIZE_POINTS_MIN),
8483
8486
  /* harmony export */ "$L": () => (/* binding */ RESULTS_HEADER_HEIGHT),
8484
8487
  /* harmony export */ "$M": () => (/* binding */ RACK_TILE_SIZE_MAX),
8488
+ /* harmony export */ "$P": () => (/* binding */ COLOR_BONUS_CHARACTER_MULTIPLIER),
8485
8489
  /* harmony export */ "BF": () => (/* binding */ PLAIN_TILES_COLOR_DEFAULT),
8486
8490
  /* harmony export */ "D": () => (/* binding */ PLAIN_TILES_TILE_MAX_SCATTER),
8487
8491
  /* harmony export */ "F1": () => (/* binding */ COLOR_GREEN),
8488
8492
  /* harmony export */ "FZ": () => (/* binding */ BUTTON_HEIGHT),
8493
+ /* harmony export */ "HC": () => (/* binding */ COLOR_BONUS_START),
8489
8494
  /* harmony export */ "IO": () => (/* binding */ BOARD_CELL_ACTIONS_OFFSET),
8490
8495
  /* harmony export */ "Kc": () => (/* binding */ EASE_OUT_CUBIC),
8491
8496
  /* harmony export */ "Kw": () => (/* binding */ BOARD_TILE_SIZE_MAX),
@@ -8504,12 +8509,15 @@ const zipCharactersAndTiles = (characters, tiles)=>{
8504
8509
  /* harmony export */ "iF": () => (/* binding */ MODAL_WIDTH),
8505
8510
  /* harmony export */ "j$": () => (/* binding */ BREAKPOINTS),
8506
8511
  /* harmony export */ "kD": () => (/* binding */ TEXT_INPUT_HEIGHT),
8512
+ /* harmony export */ "kr": () => (/* binding */ COLOR_BONUS_CHARACTER),
8507
8513
  /* harmony export */ "ku": () => (/* binding */ PLAIN_TILES_TILE_MARGIN),
8508
8514
  /* harmony export */ "mM": () => (/* binding */ REMAINING_TILES_TILE_SIZE),
8509
8515
  /* harmony export */ "n6": () => (/* binding */ DICTIONARY_HEIGHT),
8516
+ /* harmony export */ "n_": () => (/* binding */ BORDER_RADIUS),
8510
8517
  /* harmony export */ "oj": () => (/* binding */ BOARD_TILE_SIZE_MIN),
8511
8518
  /* harmony export */ "op": () => (/* binding */ COMPONENTS_SPACING_SMALL),
8512
8519
  /* harmony export */ "pI": () => (/* binding */ COLOR_BLUE),
8520
+ /* harmony export */ "pS": () => (/* binding */ COLOR_FILTERED),
8513
8521
  /* harmony export */ "pc": () => (/* binding */ LOGO_ASPECT_RATIO),
8514
8522
  /* harmony export */ "pt": () => (/* binding */ SOLVER_COLUMN_WIDTH),
8515
8523
  /* harmony export */ "rV": () => (/* binding */ PLAIN_TILES_TILE_SIZE),
@@ -8517,7 +8525,9 @@ const zipCharactersAndTiles = (characters, tiles)=>{
8517
8525
  /* harmony export */ "sk": () => (/* binding */ LOGO_SRC),
8518
8526
  /* harmony export */ "t": () => (/* binding */ LOGO_HEIGHT_SMALL),
8519
8527
  /* harmony export */ "t$": () => (/* binding */ NAV_PADDING),
8528
+ /* harmony export */ "ti": () => (/* binding */ COLOR_BONUS_WORD),
8520
8529
  /* harmony export */ "tr": () => (/* binding */ COMPONENTS_SPACING),
8530
+ /* harmony export */ "uI": () => (/* binding */ BORDER_COLOR_LIGHT),
8521
8531
  /* harmony export */ "uX": () => (/* binding */ PLAIN_TILES_PADDING_VERTICAL),
8522
8532
  /* harmony export */ "xZ": () => (/* binding */ PROGRESS_COLOR_VALUE),
8523
8533
  /* harmony export */ "y7": () => (/* binding */ LOGO_HEIGHT),
@@ -8525,7 +8535,7 @@ const zipCharactersAndTiles = (characters, tiles)=>{
8525
8535
  /* harmony export */ "yr": () => (/* binding */ COLOR_YELLOW),
8526
8536
  /* harmony export */ "yz": () => (/* binding */ TRANSITION)
8527
8537
  /* harmony export */ });
8528
- /* unused harmony exports TRANSITION_DURATION, SPACING_XS, SPACING_S, SPACING_M, SPACING_L, SPACING_XL, BOARD_CELL_BORDER_WIDTH, BUTTON_ICON_SIZE, BUTTON_PADDING_VERTICAL, TILE_SIZE, PLAIN_TILES_VERSION_TILE_COLOR, PLAIN_TILES_VERSION_TILE_SIZE */
8538
+ /* unused harmony exports TRANSITION_DURATION, COLOR_BONUS_CHARACTER_1, COLOR_BONUS_CHARACTER_2, COLOR_BONUS_CHARACTER_3, COLOR_BONUS_CHARACTER_5, COLOR_BONUS_CHARACTER_MULTIPLIER_2, COLOR_BONUS_CHARACTER_MULTIPLIER_3, COLOR_BONUS_WORD_MULTIPLIER_2, COLOR_BONUS_WORD_MULTIPLIER_3, SPACING_XS, SPACING_S, SPACING_M, SPACING_L, SPACING_XL, BOARD_CELL_BORDER_WIDTH, BORDER_COLOR, BUTTON_ICON_SIZE, BUTTON_PADDING_VERTICAL, TILE_SIZE, PLAIN_TILES_VERSION_TILE_COLOR, PLAIN_TILES_VERSION_TILE_SIZE */
8529
8539
  const BREAKPOINTS = {
8530
8540
  xs: 480,
8531
8541
  s: 768,
@@ -8542,6 +8552,30 @@ const COLOR_BLUE = "#c7d8f9";
8542
8552
  const COLOR_GREEN = "#bae3ba";
8543
8553
  const COLOR_RED = "#f7c2aa";
8544
8554
  const COLOR_YELLOW = "#efe3ae";
8555
+ const COLOR_BONUS_CHARACTER_1 = "#f7f1d6";
8556
+ const COLOR_BONUS_CHARACTER_2 = "#d6ebd6";
8557
+ const COLOR_BONUS_CHARACTER_3 = "#dde4f6";
8558
+ const COLOR_BONUS_CHARACTER_5 = "#fbe0d4";
8559
+ const COLOR_BONUS_CHARACTER_MULTIPLIER_2 = "#b8d5ed";
8560
+ const COLOR_BONUS_CHARACTER_MULTIPLIER_3 = "#86aed1";
8561
+ const COLOR_BONUS_START = "#b284b8";
8562
+ const COLOR_BONUS_WORD_MULTIPLIER_2 = "#fbc997";
8563
+ const COLOR_BONUS_WORD_MULTIPLIER_3 = "#f19393";
8564
+ const COLOR_FILTERED = "#444";
8565
+ const COLOR_BONUS_CHARACTER = {
8566
+ 1: COLOR_BONUS_CHARACTER_1,
8567
+ 2: COLOR_BONUS_CHARACTER_2,
8568
+ 3: COLOR_BONUS_CHARACTER_3,
8569
+ 5: COLOR_BONUS_CHARACTER_5
8570
+ };
8571
+ const COLOR_BONUS_CHARACTER_MULTIPLIER = {
8572
+ 2: COLOR_BONUS_CHARACTER_MULTIPLIER_2,
8573
+ 3: COLOR_BONUS_CHARACTER_MULTIPLIER_3
8574
+ };
8575
+ const COLOR_BONUS_WORD = {
8576
+ 2: COLOR_BONUS_WORD_MULTIPLIER_2,
8577
+ 3: COLOR_BONUS_WORD_MULTIPLIER_3
8578
+ };
8545
8579
  const SPACING_XS = 2;
8546
8580
  const SPACING_S = 5;
8547
8581
  const SPACING_M = 10;
@@ -8559,6 +8593,9 @@ const BOARD_TILE_SIZE_MAX = 64;
8559
8593
  * 21 - fits all board tiles without horizontal scrollbar on 375px viewport width (font-size: 14px)
8560
8594
  * 26 - tiles start to look good (font-size: 16px)
8561
8595
  */ const BOARD_TILE_SIZE_MIN = 20;
8596
+ const BORDER_COLOR = "#cdcdcd";
8597
+ const BORDER_COLOR_LIGHT = "#d9d9d9";
8598
+ const BORDER_RADIUS = 5;
8562
8599
  const BORDER_WIDTH = 1;
8563
8600
  const BUTTON_ICON_SIZE = 24;
8564
8601
  const BUTTON_PADDING_VERTICAL = SPACING_M;
@@ -8598,8 +8635,8 @@ const PROGRESS_COLOR_VALUE = "var(--color--violet--light)";
8598
8635
  const PROGRESS_COLOR_BACKGROUND = "var(--color--inactive)";
8599
8636
  const RACK_TILE_SIZE_MAX = 80;
8600
8637
  const REMAINING_TILES_TILE_SIZE = 50;
8601
- const RESULTS_HEADER_HEIGHT = 35;
8602
8638
  const RESULTS_ITEM_HEIGHT = 40;
8639
+ const RESULTS_HEADER_HEIGHT = RESULTS_ITEM_HEIGHT;
8603
8640
  const SOLVER_COLUMN_WIDTH = 580;
8604
8641
  const TEXT_INPUT_HEIGHT = 40;
8605
8642
  const TILE_APPEAR_DURATION = 200;
@@ -8634,52 +8671,6 @@ const initialize = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createAction
8634
8671
  const reset = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createAction)("reset");
8635
8672
 
8636
8673
 
8637
- /***/ }),
8638
-
8639
- /***/ 60860:
8640
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
8641
-
8642
- "use strict";
8643
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
8644
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8645
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
8646
- /* harmony export */ });
8647
- /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75184);
8648
- /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__);
8649
- /* harmony import */ var redux_saga__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(75998);
8650
- /* harmony import */ var _sagas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23599);
8651
- /* harmony import */ var _slices__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(67647);
8652
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([redux_saga__WEBPACK_IMPORTED_MODULE_1__]);
8653
- redux_saga__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
8654
-
8655
-
8656
-
8657
-
8658
- const sagaMiddleware = (0,redux_saga__WEBPACK_IMPORTED_MODULE_1__["default"])();
8659
- const createAppStore = ()=>{
8660
- const store = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.configureStore)({
8661
- reducer: {
8662
- board: _slices__WEBPACK_IMPORTED_MODULE_3__/* .boardSlice.reducer */ .I8.reducer,
8663
- cellFilter: _slices__WEBPACK_IMPORTED_MODULE_3__/* .cellFilterSlice.reducer */ .mO.reducer,
8664
- dictionary: _slices__WEBPACK_IMPORTED_MODULE_3__/* .dictionarySlice.reducer */ .lj.reducer,
8665
- rack: _slices__WEBPACK_IMPORTED_MODULE_3__/* .rackSlice.reducer */ .O_.reducer,
8666
- results: _slices__WEBPACK_IMPORTED_MODULE_3__/* .resultsSlice.reducer */ ._C.reducer,
8667
- settings: _slices__WEBPACK_IMPORTED_MODULE_3__/* .settingsSlice.reducer */ .xj.reducer,
8668
- solve: _slices__WEBPACK_IMPORTED_MODULE_3__/* .solveSlice.reducer */ .TP.reducer,
8669
- verify: _slices__WEBPACK_IMPORTED_MODULE_3__/* .verifySlice.reducer */ .Gt.reducer
8670
- },
8671
- middleware: [
8672
- sagaMiddleware
8673
- ]
8674
- });
8675
- sagaMiddleware.run(_sagas__WEBPACK_IMPORTED_MODULE_2__/* .rootSaga */ .R);
8676
- return store;
8677
- };
8678
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createAppStore);
8679
-
8680
- __webpack_async_result__();
8681
- } catch(e) { __webpack_async_result__(e); } });
8682
-
8683
8674
  /***/ }),
8684
8675
 
8685
8676
  /***/ 83067:
@@ -8688,58 +8679,58 @@ __webpack_async_result__();
8688
8679
  "use strict";
8689
8680
  __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
8690
8681
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8691
- /* harmony export */ "$o": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.$o),
8692
- /* harmony export */ "AN": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.AN),
8693
- /* harmony export */ "En": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.En),
8694
- /* harmony export */ "GL": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.GL),
8695
- /* harmony export */ "HM": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.HM),
8696
- /* harmony export */ "I8": () => (/* reexport safe */ _slices__WEBPACK_IMPORTED_MODULE_4__.I8),
8697
- /* harmony export */ "Mj": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.Mj),
8698
- /* harmony export */ "O0": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.O0),
8699
- /* harmony export */ "O_": () => (/* reexport safe */ _slices__WEBPACK_IMPORTED_MODULE_4__.O_),
8700
- /* harmony export */ "Or": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.Or),
8701
- /* harmony export */ "QB": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.QB),
8702
- /* harmony export */ "QL": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.QL),
8703
- /* harmony export */ "R": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.R),
8704
- /* harmony export */ "Rn": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.Rn),
8705
- /* harmony export */ "TP": () => (/* reexport safe */ _slices__WEBPACK_IMPORTED_MODULE_4__.TP),
8706
- /* harmony export */ "Xb": () => (/* reexport safe */ _localStorage__WEBPACK_IMPORTED_MODULE_2__.Z),
8707
- /* harmony export */ "Xk": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.Xk),
8708
- /* harmony export */ "Yj": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.Yj),
8709
- /* harmony export */ "ZA": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.ZA),
8710
- /* harmony export */ "ZO": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.ZO),
8711
- /* harmony export */ "Zf": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.Zf),
8712
- /* harmony export */ "_C": () => (/* reexport safe */ _slices__WEBPACK_IMPORTED_MODULE_4__._C),
8713
- /* harmony export */ "bs": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.bs),
8714
- /* harmony export */ "fN": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.fN),
8715
- /* harmony export */ "fZ": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.fZ),
8716
- /* harmony export */ "id": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.id),
8682
+ /* harmony export */ "$o": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.$o),
8683
+ /* harmony export */ "AN": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.AN),
8684
+ /* harmony export */ "En": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.En),
8685
+ /* harmony export */ "GL": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.GL),
8686
+ /* harmony export */ "HM": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.HM),
8687
+ /* harmony export */ "I8": () => (/* reexport safe */ _slices__WEBPACK_IMPORTED_MODULE_3__.I8),
8688
+ /* harmony export */ "Jw": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.Jw),
8689
+ /* harmony export */ "Mj": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.Mj),
8690
+ /* harmony export */ "O_": () => (/* reexport safe */ _slices__WEBPACK_IMPORTED_MODULE_3__.O_),
8691
+ /* harmony export */ "Or": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.Or),
8692
+ /* harmony export */ "QB": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.QB),
8693
+ /* harmony export */ "QL": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.QL),
8694
+ /* harmony export */ "R": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.R),
8695
+ /* harmony export */ "Rn": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.Rn),
8696
+ /* harmony export */ "TP": () => (/* reexport safe */ _slices__WEBPACK_IMPORTED_MODULE_3__.TP),
8697
+ /* harmony export */ "Xb": () => (/* reexport safe */ _localStorage__WEBPACK_IMPORTED_MODULE_1__.Z),
8698
+ /* harmony export */ "Xk": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.Xk),
8699
+ /* harmony export */ "Yj": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.Yj),
8700
+ /* harmony export */ "ZA": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.ZA),
8701
+ /* harmony export */ "ZO": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.ZO),
8702
+ /* harmony export */ "Zf": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.Zf),
8703
+ /* harmony export */ "_C": () => (/* reexport safe */ _slices__WEBPACK_IMPORTED_MODULE_3__._C),
8704
+ /* harmony export */ "bs": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.bs),
8705
+ /* harmony export */ "fN": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.fN),
8706
+ /* harmony export */ "fZ": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.fZ),
8707
+ /* harmony export */ "h": () => (/* reexport safe */ _store__WEBPACK_IMPORTED_MODULE_4__.Z),
8708
+ /* harmony export */ "id": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.id),
8717
8709
  /* harmony export */ "ix": () => (/* reexport safe */ _useTypedSelector__WEBPACK_IMPORTED_MODULE_6__.Z),
8718
8710
  /* harmony export */ "j2": () => (/* reexport safe */ _actions__WEBPACK_IMPORTED_MODULE_0__.j),
8719
- /* harmony export */ "lj": () => (/* reexport safe */ _slices__WEBPACK_IMPORTED_MODULE_4__.lj),
8720
- /* harmony export */ "mK": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.mK),
8721
- /* harmony export */ "mO": () => (/* reexport safe */ _slices__WEBPACK_IMPORTED_MODULE_4__.mO),
8711
+ /* harmony export */ "lj": () => (/* reexport safe */ _slices__WEBPACK_IMPORTED_MODULE_3__.lj),
8712
+ /* harmony export */ "mK": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.mK),
8713
+ /* harmony export */ "mO": () => (/* reexport safe */ _slices__WEBPACK_IMPORTED_MODULE_3__.mO),
8722
8714
  /* harmony export */ "mc": () => (/* reexport safe */ _actions__WEBPACK_IMPORTED_MODULE_0__.m),
8723
- /* harmony export */ "md": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.md),
8715
+ /* harmony export */ "md": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.md),
8724
8716
  /* harmony export */ "qM": () => (/* reexport safe */ _useTranslate__WEBPACK_IMPORTED_MODULE_5__.Z),
8725
- /* harmony export */ "uz": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.uz),
8726
- /* harmony export */ "vY": () => (/* reexport safe */ _createAppStore__WEBPACK_IMPORTED_MODULE_1__.Z),
8727
- /* harmony export */ "w1": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.w1),
8728
- /* harmony export */ "x5": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.x5),
8729
- /* harmony export */ "xU": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.xU),
8730
- /* harmony export */ "xj": () => (/* reexport safe */ _slices__WEBPACK_IMPORTED_MODULE_4__.xj),
8731
- /* harmony export */ "yJ": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.yJ),
8732
- /* harmony export */ "z$": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_3__.z$)
8717
+ /* harmony export */ "uz": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.uz),
8718
+ /* harmony export */ "w1": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.w1),
8719
+ /* harmony export */ "x5": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.x5),
8720
+ /* harmony export */ "xU": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.xU),
8721
+ /* harmony export */ "xj": () => (/* reexport safe */ _slices__WEBPACK_IMPORTED_MODULE_3__.xj),
8722
+ /* harmony export */ "yJ": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.yJ),
8723
+ /* harmony export */ "z$": () => (/* reexport safe */ _selectors__WEBPACK_IMPORTED_MODULE_2__.z$)
8733
8724
  /* harmony export */ });
8734
8725
  /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23617);
8735
- /* harmony import */ var _createAppStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(60860);
8736
- /* harmony import */ var _localStorage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(79579);
8737
- /* harmony import */ var _selectors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(96076);
8738
- /* harmony import */ var _slices__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(67647);
8726
+ /* harmony import */ var _localStorage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(79579);
8727
+ /* harmony import */ var _selectors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(96076);
8728
+ /* harmony import */ var _slices__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(67647);
8729
+ /* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18415);
8739
8730
  /* harmony import */ var _useTranslate__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(22522);
8740
8731
  /* harmony import */ var _useTypedSelector__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(76631);
8741
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_createAppStore__WEBPACK_IMPORTED_MODULE_1__]);
8742
- _createAppStore__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
8732
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store__WEBPACK_IMPORTED_MODULE_4__]);
8733
+ _store__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
8743
8734
 
8744
8735
 
8745
8736
 
@@ -8821,14 +8812,14 @@ __webpack_require__.d(__webpack_exports__, {
8821
8812
  "R": () => (/* binding */ rootSaga)
8822
8813
  });
8823
8814
 
8824
- // EXTERNAL MODULE: ../constants/build/index.js
8825
- var build = __webpack_require__(7618);
8826
- // EXTERNAL MODULE: ../types/build/index.js
8827
- var types_build = __webpack_require__(34046);
8828
8815
  // EXTERNAL MODULE: external "redux-saga/effects"
8829
8816
  var effects_ = __webpack_require__(56477);
8830
- // EXTERNAL MODULE: ./src/lib/index.ts + 32 modules
8831
- var lib = __webpack_require__(65175);
8817
+ // EXTERNAL MODULE: ./src/i18n/index.ts + 8 modules
8818
+ var i18n = __webpack_require__(36743);
8819
+ // EXTERNAL MODULE: ./src/lib/index.ts + 33 modules
8820
+ var lib = __webpack_require__(55238);
8821
+ // EXTERNAL MODULE: ../types/build/index.js
8822
+ var build = __webpack_require__(34046);
8832
8823
  ;// CONCATENATED MODULE: ./src/sdk/fetch.ts
8833
8824
 
8834
8825
  const fetch_fetch = async (input, init)=>{
@@ -8836,7 +8827,7 @@ const fetch_fetch = async (input, init)=>{
8836
8827
  try {
8837
8828
  response = await window.fetch(input, init);
8838
8829
  } catch (error) {
8839
- const message = (0,types_build.isError)(error) ? error.message : "Unknown error";
8830
+ const message = (0,build.isError)(error) ? error.message : "Unknown error";
8840
8831
  throw new Error(`Network error: ${message}`);
8841
8832
  }
8842
8833
  if (response.ok) {
@@ -8844,7 +8835,7 @@ const fetch_fetch = async (input, init)=>{
8844
8835
  }
8845
8836
  try {
8846
8837
  const json = await response.json();
8847
- if ((0,types_build.isError)(json)) {
8838
+ if ((0,build.isError)(json)) {
8848
8839
  throw new Error(json.message);
8849
8840
  }
8850
8841
  } finally{
@@ -8873,7 +8864,7 @@ const fetchJson = async (input, init)=>{
8873
8864
 
8874
8865
  const findWordDefinitions = async (locale, word)=>{
8875
8866
  const json = await sdk_fetchJson(`/api/dictionary/${locale}/${encodeURIComponent(word)}`);
8876
- return json.map(types_build.WordDefinition.fromJson);
8867
+ return json.map(build.WordDefinition.fromJson);
8877
8868
  };
8878
8869
  /* harmony default export */ const sdk_findWordDefinitions = (findWordDefinitions);
8879
8870
 
@@ -8890,7 +8881,7 @@ const solve = async ({ board , characters , configId , locale })=>{
8890
8881
  locale
8891
8882
  })
8892
8883
  });
8893
- return json.map(types_build.Result.fromJson);
8884
+ return json.map(build.Result.fromJson);
8894
8885
  };
8895
8886
  /* harmony default export */ const sdk_solve = (solve);
8896
8887
 
@@ -8936,7 +8927,6 @@ var slices = __webpack_require__(67647);
8936
8927
 
8937
8928
 
8938
8929
 
8939
-
8940
8930
  const SUBMIT_DELAY = 150;
8941
8931
  const memoizedFindWordDefinitions = (0,lib/* memoize */.HP)(sdk_findWordDefinitions);
8942
8932
  function* rootSaga() {
@@ -9029,8 +9019,7 @@ function* onLocaleChange() {
9029
9019
  function* onResultCandidateChange({ payload: result }) {
9030
9020
  if (result) {
9031
9021
  const locale = yield (0,effects_.select)(selectors/* selectLocale */.fN);
9032
- const comma = locale === types_build.Locale.FA_IR ? ` ${build.COMMA_ARABIC}` : `${build.COMMA_LATIN} `;
9033
- yield (0,effects_.put)(slices/* dictionarySlice.actions.changeInput */.lj.actions.changeInput(result.words.join(comma)));
9022
+ yield (0,effects_.put)(slices/* dictionarySlice.actions.changeInput */.lj.actions.changeInput(result.words.join(i18n/* LOCALE_FEATURES */.q0[locale].separator)));
9034
9023
  yield (0,effects_.put)(slices/* dictionarySlice.actions.submit */.lj.actions.submit());
9035
9024
  }
9036
9025
  }
@@ -9118,8 +9107,8 @@ function* ensureProperTilesCount() {
9118
9107
  /* harmony export */ "En": () => (/* binding */ selectHasOverusedTiles),
9119
9108
  /* harmony export */ "GL": () => (/* binding */ selectResultCandidateCells),
9120
9109
  /* harmony export */ "HM": () => (/* binding */ selectVerify),
9110
+ /* harmony export */ "Jw": () => (/* binding */ selectCellFilter),
9121
9111
  /* harmony export */ "Mj": () => (/* binding */ selectAreResultsOutdated),
9122
- /* harmony export */ "O0": () => (/* binding */ selectCellBonus),
9123
9112
  /* harmony export */ "Or": () => (/* binding */ selectCharacterPoints),
9124
9113
  /* harmony export */ "QB": () => (/* binding */ selectRack),
9125
9114
  /* harmony export */ "QL": () => (/* binding */ selectResultsQuery),
@@ -9146,7 +9135,7 @@ function* ensureProperTilesCount() {
9146
9135
  /* harmony export */ "yp": () => (/* binding */ selectCharacters),
9147
9136
  /* harmony export */ "z$": () => (/* binding */ selectResultCandidateTiles)
9148
9137
  /* harmony export */ });
9149
- /* unused harmony exports selectCellFilter, selectResultsRaw, selectSortedResults, selectGroupedResults, selectTranslation, selectLastSolvedParameters, selectHaveCharactersChanged, selectHasBoardChanged, selectRemainingTiles */
9138
+ /* unused harmony exports selectResultsRaw, selectSortedResults, selectGroupedResults, selectCellBonus, selectTranslation, selectLastSolvedParameters, selectHaveCharactersChanged, selectHasBoardChanged, selectRemainingTiles */
9150
9139
  /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75184);
9151
9140
  /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__);
9152
9141
  /* harmony import */ var _scrabble_solver_configs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89418);
@@ -9155,7 +9144,7 @@ function* ensureProperTilesCount() {
9155
9144
  /* harmony import */ var _scrabble_solver_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(34046);
9156
9145
  /* harmony import */ var _scrabble_solver_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_scrabble_solver_types__WEBPACK_IMPORTED_MODULE_3__);
9157
9146
  /* harmony import */ var i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(36743);
9158
- /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(65175);
9147
+ /* harmony import */ var lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(55238);
9159
9148
  /* eslint-disable max-lines */
9160
9149
 
9161
9150
 
@@ -9399,8 +9388,8 @@ var build = __webpack_require__(89418);
9399
9388
  var types_build = __webpack_require__(34046);
9400
9389
  // EXTERNAL MODULE: ./src/state/localStorage.ts
9401
9390
  var localStorage = __webpack_require__(79579);
9402
- // EXTERNAL MODULE: ./src/lib/index.ts + 32 modules
9403
- var lib = __webpack_require__(65175);
9391
+ // EXTERNAL MODULE: ./src/lib/index.ts + 33 modules
9392
+ var lib = __webpack_require__(55238);
9404
9393
  ;// CONCATENATED MODULE: ./src/state/slices/settingsInitialState.ts
9405
9394
 
9406
9395
 
@@ -9890,6 +9879,49 @@ const verifySlice = (0,toolkit_.createSlice)({
9890
9879
 
9891
9880
 
9892
9881
 
9882
+ /***/ }),
9883
+
9884
+ /***/ 18415:
9885
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
9886
+
9887
+ "use strict";
9888
+ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
9889
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
9890
+ /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
9891
+ /* harmony export */ });
9892
+ /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75184);
9893
+ /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__);
9894
+ /* harmony import */ var redux_saga__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(75998);
9895
+ /* harmony import */ var _sagas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23599);
9896
+ /* harmony import */ var _slices__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(67647);
9897
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([redux_saga__WEBPACK_IMPORTED_MODULE_1__]);
9898
+ redux_saga__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
9899
+
9900
+
9901
+
9902
+
9903
+ const sagaMiddleware = (0,redux_saga__WEBPACK_IMPORTED_MODULE_1__["default"])();
9904
+ const store = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.configureStore)({
9905
+ reducer: {
9906
+ board: _slices__WEBPACK_IMPORTED_MODULE_3__/* .boardSlice.reducer */ .I8.reducer,
9907
+ cellFilter: _slices__WEBPACK_IMPORTED_MODULE_3__/* .cellFilterSlice.reducer */ .mO.reducer,
9908
+ dictionary: _slices__WEBPACK_IMPORTED_MODULE_3__/* .dictionarySlice.reducer */ .lj.reducer,
9909
+ rack: _slices__WEBPACK_IMPORTED_MODULE_3__/* .rackSlice.reducer */ .O_.reducer,
9910
+ results: _slices__WEBPACK_IMPORTED_MODULE_3__/* .resultsSlice.reducer */ ._C.reducer,
9911
+ settings: _slices__WEBPACK_IMPORTED_MODULE_3__/* .settingsSlice.reducer */ .xj.reducer,
9912
+ solve: _slices__WEBPACK_IMPORTED_MODULE_3__/* .solveSlice.reducer */ .TP.reducer,
9913
+ verify: _slices__WEBPACK_IMPORTED_MODULE_3__/* .verifySlice.reducer */ .Gt.reducer
9914
+ },
9915
+ middleware: [
9916
+ sagaMiddleware
9917
+ ]
9918
+ });
9919
+ sagaMiddleware.run(_sagas__WEBPACK_IMPORTED_MODULE_2__/* .rootSaga */ .R);
9920
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (store);
9921
+
9922
+ __webpack_async_result__();
9923
+ } catch(e) { __webpack_async_result__(e); } });
9924
+
9893
9925
  /***/ }),
9894
9926
 
9895
9927
  /***/ 22522: