@scrabble-solver/scrabble-solver 2.11.4 → 2.11.6

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 (148) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +7 -7
  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/export-marker.json +1 -1
  13. package/.next/next-server.js.nft.json +1 -1
  14. package/.next/prerender-manifest.json +1 -1
  15. package/.next/routes-manifest.json +1 -1
  16. package/.next/server/chunks/131.js +1 -1
  17. package/.next/server/chunks/277.js +851 -1179
  18. package/.next/server/chunks/636.js +286 -0
  19. package/.next/server/chunks/675.js +550 -0
  20. package/.next/server/middleware-build-manifest.js +1 -1
  21. package/.next/server/pages/404.html +1 -5
  22. package/.next/server/pages/404.js.nft.json +1 -1
  23. package/.next/server/pages/500.html +1 -1
  24. package/.next/server/pages/_app.js +73 -9
  25. package/.next/server/pages/_app.js.nft.json +1 -1
  26. package/.next/server/pages/_document.js.nft.json +1 -1
  27. package/.next/server/pages/_error.js +1 -280
  28. package/.next/server/pages/_error.js.nft.json +1 -1
  29. package/.next/server/pages/api/solve.js +22 -2
  30. package/.next/server/pages/index.html +1 -1
  31. package/.next/server/pages/index.js +381 -314
  32. package/.next/server/pages/index.js.nft.json +1 -1
  33. package/.next/server/pages/index.json +1 -1
  34. package/.next/server/pages-manifest.json +1 -1
  35. package/.next/static/Jmk00rVXCbdjFgP77tKXQ/_buildManifest.js +1 -0
  36. package/.next/static/chunks/pages/{404-448ba28510855455.js → 404-8176f4acd0cfeb42.js} +1 -1
  37. package/.next/static/chunks/pages/_app-b4fa92112b8f0385.js +28 -0
  38. package/.next/static/chunks/pages/index-ccd762f8f5028729.js +1 -0
  39. package/.next/static/css/1cd302e7648d209c.css +2 -0
  40. package/.next/static/css/34adfcf12a7d9bb6.css +1 -0
  41. package/.next/trace +50 -53
  42. package/next.config.js +1 -0
  43. package/package.json +12 -13
  44. package/src/@types/svg.d.ts +1 -1
  45. package/src/components/Board/Board.tsx +48 -44
  46. package/src/components/Board/components/Actions/Actions.tsx +4 -2
  47. package/src/components/Board/components/Cell/Cell.module.scss +59 -5
  48. package/src/components/Board/hooks/useGrid.ts +5 -3
  49. package/src/components/Button/Button.module.scss +1 -1
  50. package/src/components/Dictionary/Dictionary.module.scss +0 -1
  51. package/src/components/EmptyState/EmptyState.module.scss +0 -1
  52. package/src/components/Key/Key.module.scss +1 -1
  53. package/src/components/Loading/Loading.module.scss +1 -1
  54. package/src/components/Loading/Loading.tsx +1 -1
  55. package/src/components/Logo/Logo.tsx +10 -12
  56. package/src/components/Logo/LogoBlueprint.tsx +21 -0
  57. package/src/components/Logo/index.ts +1 -1
  58. package/src/components/Modal/Modal.module.scss +1 -6
  59. package/src/components/Modal/Modal.tsx +15 -8
  60. package/src/components/NavButtons/NavButtons.tsx +2 -2
  61. package/src/components/PlainTiles/PlainTiles.tsx +0 -10
  62. package/src/components/PlainTiles/Tile.tsx +1 -4
  63. package/src/components/Rack/Rack.module.scss +59 -0
  64. package/src/components/Results/HeaderButton.tsx +6 -6
  65. package/src/components/Results/Results.module.scss +3 -1
  66. package/src/components/Results/Results.tsx +7 -7
  67. package/src/components/Results/useColumns.ts +2 -5
  68. package/src/components/Solver/Solver.tsx +6 -23
  69. package/src/components/Tile/Tile.module.scss +2 -1
  70. package/src/components/Tile/Tile.tsx +8 -4
  71. package/src/components/index.ts +0 -5
  72. package/src/hooks/index.ts +6 -0
  73. package/src/hooks/useAppLayout.ts +62 -12
  74. package/src/hooks/useDirection.ts +2 -2
  75. package/src/hooks/useEffectOnce.ts +5 -0
  76. package/src/hooks/useIsTouchDevice.ts +1 -1
  77. package/src/hooks/useLanguage.ts +2 -2
  78. package/src/hooks/useLatest.ts +13 -0
  79. package/src/hooks/useLocalStorage.ts +51 -0
  80. package/src/hooks/useMedia.ts +36 -0
  81. package/src/hooks/useMediaQueries.ts +13 -0
  82. package/src/hooks/useMediaQuery.ts +2 -1
  83. package/src/hooks/useOnWindowResize.ts +13 -0
  84. package/src/hooks/useViewportSize.ts +19 -0
  85. package/src/i18n/constants.ts +14 -22
  86. package/src/lib/arrayEquals.ts +5 -0
  87. package/src/lib/index.ts +1 -0
  88. package/src/lib/zipCharactersAndTiles.ts +3 -1
  89. package/src/modals/DictionaryModal/DictionaryModal.tsx +2 -2
  90. package/src/modals/KeyMapModal/KeyMapModal.tsx +2 -2
  91. package/src/modals/KeyMapModal/components/Mapping/Mapping.module.scss +0 -1
  92. package/src/modals/KeyMapModal/keys.tsx +0 -2
  93. package/src/modals/MenuModal/MenuModal.module.scss +28 -4
  94. package/src/modals/MenuModal/MenuModal.tsx +4 -4
  95. package/src/modals/RemainingTilesModal/RemainingTilesModal.tsx +2 -2
  96. package/src/modals/ResultsModal/ResultsModal.module.scss +1 -5
  97. package/src/modals/ResultsModal/ResultsModal.tsx +10 -2
  98. package/src/modals/SettingsModal/SettingsModal.tsx +2 -2
  99. package/src/modals/SettingsModal/components/AutoGroupTilesSetting/lib.ts +3 -1
  100. package/src/modals/SettingsModal/components/ConfigSetting/ConfigSetting.module.scss +0 -1
  101. package/src/modals/SettingsModal/components/LocaleSetting/LocaleSetting.module.scss +1 -6
  102. package/src/modals/WordsModal/WordsModal.tsx +2 -2
  103. package/src/pages/index.module.scss +3 -21
  104. package/src/pages/index.tsx +51 -69
  105. package/src/parameters/index.ts +29 -2
  106. package/src/state/localStorage.ts +13 -2
  107. package/src/state/sagas.ts +16 -8
  108. package/src/state/slices/boardInitialState.ts +5 -1
  109. package/src/state/slices/boardSlice.ts +2 -2
  110. package/src/state/slices/rackInitialState.ts +8 -2
  111. package/src/state/slices/rackSlice.ts +16 -13
  112. package/src/state/slices/settingsInitialState.ts +9 -4
  113. package/src/state/slices/settingsSlice.ts +3 -1
  114. package/src/styles/animations.scss +0 -20
  115. package/src/styles/global.scss +4 -15
  116. package/src/styles/mixins.scss +0 -60
  117. package/src/styles/variables.scss +14 -5
  118. package/src/types/index.ts +4 -0
  119. package/.next/static/MvHZRF4XuJ7g8LLLRkf8U/_buildManifest.js +0 -1
  120. package/.next/static/chunks/pages/_app-66d80a5594aab8dc.js +0 -28
  121. package/.next/static/chunks/pages/index-0858deea02b2a417.js +0 -1
  122. package/.next/static/css/885da289cec275b3.css +0 -1
  123. package/.next/static/css/ea1c8134fe9a143e.css +0 -2
  124. package/src/components/LogoSplashScreen/LogoSplashScreen.module.scss +0 -65
  125. package/src/components/LogoSplashScreen/LogoSplashScreen.tsx +0 -31
  126. package/src/components/LogoSplashScreen/index.ts +0 -1
  127. package/src/components/Sizer/Sizer.module.scss +0 -10
  128. package/src/components/Sizer/Sizer.tsx +0 -10
  129. package/src/components/Sizer/index.ts +0 -1
  130. package/src/components/SplashScreen/SplashScreen.module.scss +0 -14
  131. package/src/components/SplashScreen/SplashScreen.tsx +0 -19
  132. package/src/components/SplashScreen/index.ts +0 -1
  133. package/src/components/SvgFontCss/SvgFontCss.tsx +0 -14
  134. package/src/components/SvgFontCss/createCss.ts +0 -11
  135. package/src/components/SvgFontCss/createStyle.ts +0 -9
  136. package/src/components/SvgFontCss/createSvg.ts +0 -10
  137. package/src/components/SvgFontCss/index.ts +0 -1
  138. package/src/components/SvgFontFix/SvgFontFix.module.scss +0 -5
  139. package/src/components/SvgFontFix/SvgFontFix.tsx +0 -21
  140. package/src/components/SvgFontFix/index.ts +0 -1
  141. package/src/hooks/useLocalStorage/index.ts +0 -1
  142. package/src/hooks/useLocalStorage/useLocalStorage.ts +0 -13
  143. package/src/hooks/useLocalStorage/useLocalStorageBoard.ts +0 -29
  144. package/src/hooks/useLocalStorage/useLocalStorageConfigId.ts +0 -29
  145. package/src/hooks/useLocalStorage/useLocalStorageLocale.ts +0 -32
  146. package/src/hooks/useLocalStorage/useLocalStorageRack.ts +0 -29
  147. /package/.next/static/{MvHZRF4XuJ7g8LLLRkf8U → Jmk00rVXCbdjFgP77tKXQ}/_ssgManifest.js +0 -0
  148. /package/{src/components/Logo/Logo.svg → public/logo.svg} +0 -0
@@ -5,121 +5,6 @@ exports.id = 820;
5
5
  exports.ids = [820];
6
6
  exports.modules = {
7
7
 
8
- /***/ 6495:
9
- /***/ ((__unused_webpack_module, exports) => {
10
-
11
- var __webpack_unused_export__;
12
-
13
- __webpack_unused_export__ = ({
14
- value: true
15
- });
16
- Object.defineProperty(exports, "Z", ({
17
- enumerable: true,
18
- get: function() {
19
- return _extends;
20
- }
21
- }));
22
- function extends_() {
23
- extends_ = Object.assign || function(target) {
24
- for(var i = 1; i < arguments.length; i++){
25
- var source = arguments[i];
26
- for(var key in source){
27
- if (Object.prototype.hasOwnProperty.call(source, key)) {
28
- target[key] = source[key];
29
- }
30
- }
31
- }
32
- return target;
33
- };
34
- return extends_.apply(this, arguments);
35
- }
36
- function _extends() {
37
- return extends_.apply(this, arguments);
38
- }
39
-
40
-
41
- /***/ }),
42
-
43
- /***/ 92648:
44
- /***/ ((__unused_webpack_module, exports) => {
45
-
46
- var __webpack_unused_export__;
47
-
48
- __webpack_unused_export__ = ({
49
- value: true
50
- });
51
- Object.defineProperty(exports, "Z", ({
52
- enumerable: true,
53
- get: function() {
54
- return _interopRequireDefault;
55
- }
56
- }));
57
- function _interopRequireDefault(obj) {
58
- return obj && obj.__esModule ? obj : {
59
- default: obj
60
- };
61
- }
62
-
63
-
64
- /***/ }),
65
-
66
- /***/ 91598:
67
- /***/ ((__unused_webpack_module, exports) => {
68
-
69
- var __webpack_unused_export__;
70
-
71
- __webpack_unused_export__ = ({
72
- value: true
73
- });
74
- Object.defineProperty(exports, "Z", ({
75
- enumerable: true,
76
- get: function() {
77
- return _interopRequireWildcard;
78
- }
79
- }));
80
- function _getRequireWildcardCache(nodeInterop) {
81
- if (typeof WeakMap !== "function") return null;
82
- var cacheBabelInterop = new WeakMap();
83
- var cacheNodeInterop = new WeakMap();
84
- return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
85
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
86
- })(nodeInterop);
87
- }
88
- function _interopRequireWildcard(obj, nodeInterop) {
89
- if (!nodeInterop && obj && obj.__esModule) {
90
- return obj;
91
- }
92
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
93
- return {
94
- default: obj
95
- };
96
- }
97
- var cache = _getRequireWildcardCache(nodeInterop);
98
- if (cache && cache.has(obj)) {
99
- return cache.get(obj);
100
- }
101
- var newObj = {};
102
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
103
- for(var key in obj){
104
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
105
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
106
- if (desc && (desc.get || desc.set)) {
107
- Object.defineProperty(newObj, key, desc);
108
- } else {
109
- newObj[key] = obj[key];
110
- }
111
- }
112
- }
113
- newObj.default = obj;
114
- if (cache) {
115
- cache.set(obj, newObj);
116
- }
117
- return newObj;
118
- }
119
-
120
-
121
- /***/ }),
122
-
123
8
  /***/ 43499:
124
9
  /***/ ((module, exports, __webpack_require__) => {
125
10
 
@@ -224,170 +109,6 @@ if ((typeof exports.default === "function" || typeof exports.default === "object
224
109
  } //# sourceMappingURL=_error.js.map
225
110
 
226
111
 
227
- /***/ }),
228
-
229
- /***/ 42636:
230
- /***/ ((module, exports, __webpack_require__) => {
231
-
232
-
233
- "use client";
234
- Object.defineProperty(exports, "__esModule", ({
235
- value: true
236
- }));
237
- exports.defaultHead = defaultHead;
238
- exports["default"] = void 0;
239
- var _extends = (__webpack_require__(6495)/* ["default"] */ .Z);
240
- var _interop_require_default = (__webpack_require__(92648)/* ["default"] */ .Z);
241
- var _interop_require_wildcard = (__webpack_require__(91598)/* ["default"] */ .Z);
242
- var _react = _interop_require_wildcard(__webpack_require__(16689));
243
- var _sideEffect = _interop_require_default(__webpack_require__(82470));
244
- var _ampContext = __webpack_require__(53918);
245
- var _headManagerContext = __webpack_require__(92796);
246
- var _ampMode = __webpack_require__(45732);
247
- var _warnOnce = __webpack_require__(40618);
248
- function defaultHead(inAmpMode = false) {
249
- const head = [
250
- /*#__PURE__*/ _react.default.createElement("meta", {
251
- charSet: "utf-8"
252
- })
253
- ];
254
- if (!inAmpMode) {
255
- head.push(/*#__PURE__*/ _react.default.createElement("meta", {
256
- name: "viewport",
257
- content: "width=device-width"
258
- }));
259
- }
260
- return head;
261
- }
262
- function onlyReactElement(list, child) {
263
- // React children can be "string" or "number" in this case we ignore them for backwards compat
264
- if (typeof child === "string" || typeof child === "number") {
265
- return list;
266
- }
267
- // Adds support for React.Fragment
268
- if (child.type === _react.default.Fragment) {
269
- return list.concat(_react.default.Children.toArray(child.props.children).reduce((fragmentList, fragmentChild)=>{
270
- if (typeof fragmentChild === "string" || typeof fragmentChild === "number") {
271
- return fragmentList;
272
- }
273
- return fragmentList.concat(fragmentChild);
274
- }, []));
275
- }
276
- return list.concat(child);
277
- }
278
- const METATYPES = [
279
- "name",
280
- "httpEquiv",
281
- "charSet",
282
- "itemProp"
283
- ];
284
- /*
285
- returns a function for filtering head child elements
286
- which shouldn't be duplicated, like <title/>
287
- Also adds support for deduplicated `key` properties
288
- */ function unique() {
289
- const keys = new Set();
290
- const tags = new Set();
291
- const metaTypes = new Set();
292
- const metaCategories = {};
293
- return (h)=>{
294
- let isUnique = true;
295
- let hasKey = false;
296
- if (h.key && typeof h.key !== "number" && h.key.indexOf("$") > 0) {
297
- hasKey = true;
298
- const key = h.key.slice(h.key.indexOf("$") + 1);
299
- if (keys.has(key)) {
300
- isUnique = false;
301
- } else {
302
- keys.add(key);
303
- }
304
- }
305
- // eslint-disable-next-line default-case
306
- switch(h.type){
307
- case "title":
308
- case "base":
309
- if (tags.has(h.type)) {
310
- isUnique = false;
311
- } else {
312
- tags.add(h.type);
313
- }
314
- break;
315
- case "meta":
316
- for(let i = 0, len = METATYPES.length; i < len; i++){
317
- const metatype = METATYPES[i];
318
- if (!h.props.hasOwnProperty(metatype)) continue;
319
- if (metatype === "charSet") {
320
- if (metaTypes.has(metatype)) {
321
- isUnique = false;
322
- } else {
323
- metaTypes.add(metatype);
324
- }
325
- } else {
326
- const category = h.props[metatype];
327
- const categories = metaCategories[metatype] || new Set();
328
- if ((metatype !== "name" || !hasKey) && categories.has(category)) {
329
- isUnique = false;
330
- } else {
331
- categories.add(category);
332
- metaCategories[metatype] = categories;
333
- }
334
- }
335
- }
336
- break;
337
- }
338
- return isUnique;
339
- };
340
- }
341
- /**
342
- *
343
- * @param headChildrenElements List of children of <Head>
344
- */ function reduceComponents(headChildrenElements, props) {
345
- const { inAmpMode } = props;
346
- return headChildrenElements.reduce(onlyReactElement, []).reverse().concat(defaultHead(inAmpMode).reverse()).filter(unique()).reverse().map((c, i)=>{
347
- const key = c.key || i;
348
- if ( true && !inAmpMode) {
349
- if (c.type === "link" && c.props["href"] && // TODO(prateekbh@): Replace this with const from `constants` when the tree shaking works.
350
- [
351
- "https://fonts.googleapis.com/css",
352
- "https://use.typekit.net/"
353
- ].some((url)=>c.props["href"].startsWith(url))) {
354
- const newProps = _extends({}, c.props || {});
355
- newProps["data-href"] = newProps["href"];
356
- newProps["href"] = undefined;
357
- // Add this attribute to make it easy to identify optimized tags
358
- newProps["data-optimized-fonts"] = true;
359
- return /*#__PURE__*/ _react.default.cloneElement(c, newProps);
360
- }
361
- }
362
- if (false) {}
363
- return /*#__PURE__*/ _react.default.cloneElement(c, {
364
- key
365
- });
366
- });
367
- }
368
- /**
369
- * This component injects elements to `<head>` of your page.
370
- * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
371
- */ function Head({ children }) {
372
- const ampState = (0, _react).useContext(_ampContext.AmpStateContext);
373
- const headManager = (0, _react).useContext(_headManagerContext.HeadManagerContext);
374
- return /*#__PURE__*/ _react.default.createElement(_sideEffect.default, {
375
- reduceComponentsToState: reduceComponents,
376
- headManager: headManager,
377
- inAmpMode: (0, _ampMode).isInAmpMode(ampState)
378
- }, children);
379
- }
380
- var _default = Head;
381
- exports["default"] = _default;
382
- if ((typeof exports.default === "function" || typeof exports.default === "object" && exports.default !== null) && typeof exports.default.__esModule === "undefined") {
383
- Object.defineProperty(exports.default, "__esModule", {
384
- value: true
385
- });
386
- Object.assign(exports.default, exports);
387
- module.exports = exports.default;
388
- } //# sourceMappingURL=head.js.map
389
-
390
-
391
112
  /***/ }),
392
113
 
393
114
  /***/ 53918:
@@ -439,7 +160,7 @@ module.exports = require("react");
439
160
  var __webpack_require__ = require("../webpack-runtime.js");
440
161
  __webpack_require__.C(exports);
441
162
  var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
442
- var __webpack_exports__ = (__webpack_exec__(43499));
163
+ var __webpack_exports__ = __webpack_require__.X(0, [636], () => (__webpack_exec__(43499)));
443
164
  module.exports = __webpack_exports__;
444
165
 
445
166
  })();
@@ -1 +1 @@
1
- {"version":1,"files":["../webpack-runtime.js","../../package.json","../../../node_modules/next/dist/shared/lib/amp-context.js","../../../node_modules/next/dist/shared/lib/amp-mode.js","../../../node_modules/next/dist/shared/lib/head-manager-context.js","../../../node_modules/next/dist/shared/lib/side-effect.js","../../../node_modules/next/dist/shared/lib/utils/warn-once.js","../../../node_modules/next/package.json","../../../node_modules/react/package.json","../../../node_modules/react/index.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/@swc/helpers/lib/_interop_require_default.js","../../../node_modules/@swc/helpers/lib/_interop_require_wildcard.js","../../../node_modules/@swc/helpers/package.json","../../../package.json"]}
1
+ {"version":1,"files":["../webpack-runtime.js","../chunks/636.js","../../package.json","../../../node_modules/next/dist/shared/lib/amp-context.js","../../../node_modules/next/dist/shared/lib/amp-mode.js","../../../node_modules/next/dist/shared/lib/head-manager-context.js","../../../node_modules/next/dist/shared/lib/side-effect.js","../../../node_modules/next/dist/shared/lib/utils/warn-once.js","../../../node_modules/next/package.json","../../../node_modules/react/package.json","../../../node_modules/react/index.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/@swc/helpers/lib/_interop_require_default.js","../../../node_modules/@swc/helpers/lib/_interop_require_wildcard.js","../../../node_modules/@swc/helpers/package.json","../../../package.json"]}
@@ -209,8 +209,13 @@ const COLOR_BLUE = "#c7d8f9";
209
209
  const COLOR_GREEN = "#bae3ba";
210
210
  const COLOR_RED = "#f7c2aa";
211
211
  const COLOR_YELLOW = "#efe3ae";
212
- const COMPONENTS_SPACING = 40;
213
- const COMPONENTS_SPACING_SMALL = 20;
212
+ const SPACING_XS = 2;
213
+ const SPACING_S = 5;
214
+ const SPACING_M = 10;
215
+ const SPACING_L = 20;
216
+ const SPACING_XL = 40;
217
+ const COMPONENTS_SPACING = (/* unused pure expression or super */ null && (SPACING_XL));
218
+ const COMPONENTS_SPACING_SMALL = (/* unused pure expression or super */ null && (SPACING_L));
214
219
  const BOARD_CELL_ACTIONS_OFFSET = 3;
215
220
  const parameters_BOARD_CELL_BORDER_WIDTH = 1;
216
221
  const parameters_BOARD_TILE_FONT_SIZE_MIN = 14;
@@ -222,6 +227,18 @@ const parameters_BOARD_TILE_SIZE_MAX = 64;
222
227
  * 26 - tiles start to look good (font-size: 16px)
223
228
  */ const parameters_BOARD_TILE_SIZE_MIN = 20;
224
229
  const BORDER_WIDTH = 1;
230
+ const BUTTON_ICON_SIZE = 24;
231
+ const BUTTON_PADDING_VERTICAL = SPACING_M;
232
+ const BUTTON_HEIGHT = BUTTON_ICON_SIZE + 2 * BUTTON_PADDING_VERTICAL + 2 * BORDER_WIDTH;
233
+ const DICTIONARY_HEIGHT = 260;
234
+ const DICTIONARY_HEIGHT_MOBILE = 110;
235
+ const LOGO_ASPECT_RATIO = (/* unused pure expression or super */ null && (682 / 166));
236
+ const LOGO_HEIGHT = 60;
237
+ const LOGO_HEIGHT_SMALL = 48;
238
+ const LOGO_SRC = "/logo.svg";
239
+ const MODAL_WIDTH = 370;
240
+ const MODAL_HEADER_HEIGHT = 45;
241
+ const NAV_PADDING = (/* unused pure expression or super */ null && (SPACING_L));
225
242
  const TILE_SIZE = 80;
226
243
  const PLAIN_TILES_COLOR_DEFAULT = (/* unused pure expression or super */ null && (COLOR_GREEN));
227
244
  const PLAIN_TILES_PADDING_HORIZONTAL = 0;
@@ -248,8 +265,10 @@ const PROGRESS_COLOR_VALUE = "var(--color--violet--light)";
248
265
  const PROGRESS_COLOR_BACKGROUND = "var(--color--inactive)";
249
266
  const RACK_TILE_SIZE_MAX = 80;
250
267
  const REMAINING_TILES_TILE_SIZE = 50;
268
+ const RESULTS_HEADER_HEIGHT = 35;
251
269
  const RESULTS_ITEM_HEIGHT = 40;
252
270
  const SOLVER_COLUMN_WIDTH = 580;
271
+ const TEXT_INPUT_HEIGHT = 40;
253
272
  const TILE_APPEAR_DURATION = 200;
254
273
  const TILE_APPEAR_KEYFRAMES = [
255
274
  {
@@ -530,6 +549,7 @@ const zipCharactersAndTiles = (characters, tiles)=>{
530
549
 
531
550
 
532
551
 
552
+
533
553
 
534
554
 
535
555
  ;// CONCATENATED MODULE: ./src/pages/api/solve.ts
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><title>Scrabble Solver 2 by Kamil Mielnik</title><meta charSet="utf-8"/><meta name="author" content="Kamil Mielnik"/><meta name="description" content="Scrabble Solver 2 - Free and open-source analysis tool for Scrabble and Literaki. Quickly find top scoring words using given letters and board state. Available in English, French, German, Polish &amp; Spanish."/><meta name="keywords" content="Scrabble Solver,Scrabble,Solver,Board,Open-source,Open,Source,Word,Finder,Cheating,Literaki,Word,English,Français,Deutsch,Polski,فارسی,Español,SOWPODS,TWL06,SJP,FISE-2017,FISE-2,CNRTL,Kamil Mielnik"/><meta name="robots" content="index, follow, notranslate, noimageindex"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta property="og:title" content="Scrabble Solver 2 - Free and open-source analysis tool for Scrabble and Literaki. Quickly find top scoring words using given letters and board state. Available in English, French, German, Polish &amp; Spanish."/><meta property="og:type" content="website"/><meta property="og:url" content="https://scrabble-solver.org"/><meta property="og:image" content="https://scrabble-solver.org/og.png"/><meta property="og:image:type" content="image/png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Scrabble Solver 2 - Free and open-source analysis tool for Scrabble and Literaki. Quickly find top scoring words using given letters and board state. Available in English, French, German, Polish &amp; Spanish."/><meta name="next-head-count" content="15"/><link crossorigin="anonymous" href="https://fonts.gstatic.com" rel="preconnect"/><link rel="apple-touch-icon-precomposed" sizes="57x57" href="icons/apple-touch-icon-57x57.png"/><link rel="apple-touch-icon-precomposed" sizes="114x114" href="icons/apple-touch-icon-114x114.png"/><link rel="apple-touch-icon-precomposed" sizes="72x72" href="icons/apple-touch-icon-72x72.png"/><link rel="apple-touch-icon-precomposed" sizes="144x144" href="icons/apple-touch-icon-144x144.png"/><link rel="apple-touch-icon-precomposed" sizes="60x60" href="icons/apple-touch-icon-60x60.png"/><link rel="apple-touch-icon-precomposed" sizes="120x120" href="icons/apple-touch-icon-120x120.png"/><link rel="apple-touch-icon-precomposed" sizes="76x76" href="icons/apple-touch-icon-76x76.png"/><link rel="apple-touch-icon-precomposed" sizes="152x152" href="icons/apple-touch-icon-152x152.png"/><link rel="icon" type="image/png" href="icons/favicon-196x196.png" sizes="196x196"/><link rel="icon" type="image/png" href="icons/favicon-96x96.png" sizes="96x96"/><link rel="icon" type="image/png" href="icons/favicon-32x32.png" sizes="32x32"/><link rel="icon" type="image/png" href="icons/favicon-16x16.png" sizes="16x16"/><link rel="icon" type="image/png" href="icons/favicon-128.png" sizes="128x128"/><meta name="application-name" content="Scrabble Solver"/><meta name="msapplication-TileColor" content="#EFE3AE"/><meta name="msapplication-TileImage" content="icons/mstile-144x144.png"/><meta name="msapplication-square70x70logo" content="icons/mstile-70x70.png"/><meta name="msapplication-square150x150logo" content="icons/mstile-150x150.png"/><meta name="msapplication-wide310x150logo" content="icons/mstile-310x150.png"/><meta name="msapplication-square310x310logo" content="icons/mstile-310x310.png"/><link rel="preload" href="/_next/static/css/ea1c8134fe9a143e.css" as="style"/><link rel="stylesheet" href="/_next/static/css/ea1c8134fe9a143e.css" data-n-g=""/><link rel="preload" href="/_next/static/css/885da289cec275b3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/885da289cec275b3.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-6ef43a8d4a395f49.js" defer=""></script><script src="/_next/static/chunks/framework-2c79e2a64abdb08b.js" defer=""></script><script src="/_next/static/chunks/main-0ecb9ccfcb6c9b24.js" defer=""></script><script src="/_next/static/chunks/pages/_app-66d80a5594aab8dc.js" defer=""></script><script src="/_next/static/chunks/pages/index-0858deea02b2a417.js" defer=""></script><script src="/_next/static/MvHZRF4XuJ7g8LLLRkf8U/_buildManifest.js" defer=""></script><script src="/_next/static/MvHZRF4XuJ7g8LLLRkf8U/_ssgManifest.js" defer=""></script></head><body><div id="__next"><p style="color:transparent;pointer-events:none;position:absolute;user-select:none;transform:translateY(-9999px)">Scrabble Solver 2 is a free and open-source analysis tool for Scrabble and Literaki. Quickly find top scoring words using given letters and board state. Available in English, French, German, Polish &amp; Spanish. Source code is available on GitHub - contributions are welcome!</p></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"version":"v2.11.3"},"__N_SSG":true},"page":"/","query":{},"buildId":"MvHZRF4XuJ7g8LLLRkf8U","isFallback":false,"gsp":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html lang="en"><head><title>Scrabble Solver 2 by Kamil Mielnik</title><meta charSet="utf-8"/><meta name="author" content="Kamil Mielnik"/><meta name="description" content="Scrabble Solver 2 - Free and open-source analysis tool for Scrabble and Literaki. Quickly find top scoring words using given letters and board state. Available in English, French, German, Polish &amp; Spanish."/><meta name="keywords" content="Scrabble Solver,Scrabble,Solver,Board,Open-source,Open,Source,Word,Finder,Cheating,Literaki,Word,English,Français,Deutsch,Polski,فارسی,Español,SOWPODS,TWL06,SJP,FISE-2017,FISE-2,CNRTL,Kamil Mielnik"/><meta name="robots" content="index, follow, notranslate, noimageindex"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta property="og:title" content="Scrabble Solver 2 - Free and open-source analysis tool for Scrabble and Literaki. Quickly find top scoring words using given letters and board state. Available in English, French, German, Polish &amp; Spanish."/><meta property="og:type" content="website"/><meta property="og:url" content="https://scrabble-solver.org"/><meta property="og:image" content="https://scrabble-solver.org/og.png"/><meta property="og:image:type" content="image/png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Scrabble Solver 2 - Free and open-source analysis tool for Scrabble and Literaki. Quickly find top scoring words using given letters and board state. Available in English, French, German, Polish &amp; Spanish."/><meta name="next-head-count" content="15"/><link crossorigin="anonymous" href="https://fonts.gstatic.com" rel="preconnect"/><link rel="apple-touch-icon-precomposed" sizes="57x57" href="icons/apple-touch-icon-57x57.png"/><link rel="apple-touch-icon-precomposed" sizes="114x114" href="icons/apple-touch-icon-114x114.png"/><link rel="apple-touch-icon-precomposed" sizes="72x72" href="icons/apple-touch-icon-72x72.png"/><link rel="apple-touch-icon-precomposed" sizes="144x144" href="icons/apple-touch-icon-144x144.png"/><link rel="apple-touch-icon-precomposed" sizes="60x60" href="icons/apple-touch-icon-60x60.png"/><link rel="apple-touch-icon-precomposed" sizes="120x120" href="icons/apple-touch-icon-120x120.png"/><link rel="apple-touch-icon-precomposed" sizes="76x76" href="icons/apple-touch-icon-76x76.png"/><link rel="apple-touch-icon-precomposed" sizes="152x152" href="icons/apple-touch-icon-152x152.png"/><link rel="icon" type="image/png" href="icons/favicon-196x196.png" sizes="196x196"/><link rel="icon" type="image/png" href="icons/favicon-96x96.png" sizes="96x96"/><link rel="icon" type="image/png" href="icons/favicon-32x32.png" sizes="32x32"/><link rel="icon" type="image/png" href="icons/favicon-16x16.png" sizes="16x16"/><link rel="icon" type="image/png" href="icons/favicon-128.png" sizes="128x128"/><meta name="application-name" content="Scrabble Solver"/><meta name="msapplication-TileColor" content="#EFE3AE"/><meta name="msapplication-TileImage" content="icons/mstile-144x144.png"/><meta name="msapplication-square70x70logo" content="icons/mstile-70x70.png"/><meta name="msapplication-square150x150logo" content="icons/mstile-150x150.png"/><meta name="msapplication-wide310x150logo" content="icons/mstile-310x150.png"/><meta name="msapplication-square310x310logo" content="icons/mstile-310x310.png"/><link rel="preload" href="/_next/static/css/1cd302e7648d209c.css" as="style"/><link rel="stylesheet" href="/_next/static/css/1cd302e7648d209c.css" data-n-g=""/><link rel="preload" href="/_next/static/css/34adfcf12a7d9bb6.css" as="style"/><link rel="stylesheet" href="/_next/static/css/34adfcf12a7d9bb6.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-6ef43a8d4a395f49.js" defer=""></script><script src="/_next/static/chunks/framework-2c79e2a64abdb08b.js" defer=""></script><script src="/_next/static/chunks/main-0ecb9ccfcb6c9b24.js" defer=""></script><script src="/_next/static/chunks/pages/_app-b4fa92112b8f0385.js" defer=""></script><script src="/_next/static/chunks/pages/index-ccd762f8f5028729.js" defer=""></script><script src="/_next/static/Jmk00rVXCbdjFgP77tKXQ/_buildManifest.js" defer=""></script><script src="/_next/static/Jmk00rVXCbdjFgP77tKXQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"><p style="color:transparent;pointer-events:none;position:absolute;user-select:none;transform:translateY(-9999px)">Scrabble Solver 2 is a free and open-source analysis tool for Scrabble and Literaki. Quickly find top scoring words using given letters and board state. Available in English, French, German, Polish &amp; Spanish. Source code is available on GitHub - contributions are welcome!</p></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"version":"v2.11.5"},"__N_SSG":true},"page":"/","query":{},"buildId":"Jmk00rVXCbdjFgP77tKXQ","isFallback":false,"gsp":true,"scriptLoader":[]}</script></body></html>