@scrabble-solver/scrabble-solver 2.15.7 → 2.15.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +19 -19
- package/.next/cache/.rscinfo +1 -1
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/eslint/.cache_8dgz12 +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/.next/cache/webpack/edge-server-production/0.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack.old +0 -0
- package/.next/diagnostics/framework.json +1 -1
- package/.next/export-marker.json +6 -1
- package/.next/images-manifest.json +57 -1
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +25 -1
- package/.next/required-server-files.json +305 -1
- package/.next/routes-manifest.json +72 -1
- package/.next/server/chunks/30.js +6 -0
- package/.next/server/chunks/60.js +1 -0
- package/.next/server/chunks/812.js +1 -0
- package/.next/server/chunks/968.js +1 -0
- package/.next/server/chunks/974.js +1 -0
- package/.next/server/functions-config-manifest.json +4 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/404.js.nft.json +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/_app.js +1 -1
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_document.js +1 -1
- package/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/server/pages/_error.js +1 -1
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/api/dictionary/[locale]/[word].js +2 -2
- package/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
- package/.next/server/pages/api/dictionary/[locale].js +1 -1
- package/.next/server/pages/api/dictionary/[locale].js.nft.json +1 -1
- package/.next/server/pages/api/solve.js +1 -1
- package/.next/server/pages/api/solve.js.nft.json +1 -1
- package/.next/server/pages/api/verify.js +1 -1
- package/.next/server/pages/api/verify.js.nft.json +1 -1
- package/.next/server/pages/api/visit.js +1 -1
- package/.next/server/pages/api/visit.js.nft.json +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/index.js +1 -1
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/index.json +1 -1
- package/.next/server/pages-manifest.json +12 -1
- package/.next/static/3MlxnccTCLyz9bgD30zY2/_buildManifest.js +1 -0
- package/.next/static/chunks/framework-288d1abd95de88d9.js +1 -0
- package/.next/static/chunks/main-b934e2c3dd3b55b5.js +1 -0
- package/.next/static/chunks/pages/404-7451dd58396eaa39.js +1 -0
- package/.next/static/chunks/pages/_app-735105409cfdb48f.js +1 -0
- package/.next/static/chunks/pages/_error-7ea2d37f66343175.js +1 -0
- package/.next/static/chunks/pages/index-d492616d9bc42176.js +1 -0
- package/.next/static/chunks/webpack-6224d37324e372cb.js +1 -0
- package/.next/static/css/d875648f38121a28.css +2 -0
- package/.next/trace +23 -23
- package/LICENSE +1 -1
- package/next.config.js +0 -3
- package/package.json +18 -20
- package/src/components/Board/Board.tsx +1 -1
- package/src/components/Board/hooks/useBoardStyle.ts +1 -1
- package/src/components/Board/hooks/useGrid.ts +5 -5
- package/src/components/EmptyState/EmptyState.tsx +2 -2
- package/src/components/Rack/Rack.tsx +9 -8
- package/src/components/Rack/components/InputPrompt/InputPrompt.tsx +1 -3
- package/src/components/Rack/components/RackTile/RackTile.tsx +6 -4
- package/src/components/Tooltip/TooltipTrigger.tsx +3 -1
- package/src/hooks/useEffectOnce.ts +9 -1
- package/src/lib/extractCharacters.test.ts +2 -1
- package/src/lib/extractCharacters.ts +16 -2
- package/src/state/sagas.ts +2 -2
- package/.next/server/chunks/268.js +0 -1
- package/.next/server/chunks/338.js +0 -1
- package/.next/server/chunks/475.js +0 -1
- package/.next/server/chunks/671.js +0 -1
- package/.next/server/chunks/918.js +0 -6
- package/.next/static/5c493G10XdtlGHgrE69j-/_buildManifest.js +0 -1
- package/.next/static/chunks/framework-a420e8a7ab1ff8f6.js +0 -1
- package/.next/static/chunks/main-0a66dcd72e98c8bf.js +0 -1
- package/.next/static/chunks/pages/404-b2ecf95b00886c78.js +0 -1
- package/.next/static/chunks/pages/_app-91b517771d5e764e.js +0 -1
- package/.next/static/chunks/pages/_error-877a1ee1e2db51ac.js +0 -1
- package/.next/static/chunks/pages/index-d8b6bcd4d9c822f9.js +0 -1
- package/.next/static/chunks/webpack-4224e970a97a4a86.js +0 -1
- package/.next/static/css/a02403121f240af4.css +0 -2
- /package/.next/static/{5c493G10XdtlGHgrE69j- → 3MlxnccTCLyz9bgD30zY2}/_ssgManifest.js +0 -0
package/LICENSE
CHANGED
package/next.config.js
CHANGED
package/package.json
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scrabble-solver/scrabble-solver",
|
|
3
|
-
"version": "2.15.
|
|
3
|
+
"version": "2.15.9",
|
|
4
4
|
"description": "Scrabble Solver 2 - App",
|
|
5
|
-
"engines": {
|
|
6
|
-
"node": ">=16"
|
|
7
|
-
},
|
|
8
5
|
"repository": {
|
|
9
6
|
"type": "git",
|
|
10
7
|
"url": "git+https://github.com/kamilmielnik/scrabble-solver.git"
|
|
@@ -27,31 +24,32 @@
|
|
|
27
24
|
"start": "env-cmd next start -p 3333"
|
|
28
25
|
},
|
|
29
26
|
"dependencies": {
|
|
30
|
-
"@floating-ui/react": "^0.27.
|
|
27
|
+
"@floating-ui/react": "^0.27.5",
|
|
31
28
|
"@kamilmielnik/trie": "^4.0.0",
|
|
32
|
-
"@reduxjs/toolkit": "^2.
|
|
33
|
-
"@scrabble-solver/configs": "^2.15.
|
|
34
|
-
"@scrabble-solver/constants": "^2.15.
|
|
35
|
-
"@scrabble-solver/dictionaries": "^2.15.
|
|
36
|
-
"@scrabble-solver/logger": "^2.15.
|
|
37
|
-
"@scrabble-solver/solver": "^2.15.
|
|
38
|
-
"@scrabble-solver/types": "^2.15.
|
|
39
|
-
"@scrabble-solver/word-definitions": "^2.15.
|
|
29
|
+
"@reduxjs/toolkit": "^2.6.1",
|
|
30
|
+
"@scrabble-solver/configs": "^2.15.9",
|
|
31
|
+
"@scrabble-solver/constants": "^2.15.9",
|
|
32
|
+
"@scrabble-solver/dictionaries": "^2.15.9",
|
|
33
|
+
"@scrabble-solver/logger": "^2.15.9",
|
|
34
|
+
"@scrabble-solver/solver": "^2.15.9",
|
|
35
|
+
"@scrabble-solver/types": "^2.15.9",
|
|
36
|
+
"@scrabble-solver/word-definitions": "^2.15.9",
|
|
40
37
|
"classnames": "^2.5.1",
|
|
41
38
|
"env-cmd": "^10.1.0",
|
|
42
39
|
"include-media": "^2.0.0",
|
|
43
40
|
"include-media-query-builder": "^1.1.0",
|
|
44
|
-
"next": "^15.
|
|
41
|
+
"next": "^15.2.3",
|
|
45
42
|
"normalize.css": "^8.0.1",
|
|
46
|
-
"react": "^
|
|
43
|
+
"react": "^19.0.0",
|
|
47
44
|
"react-cool-onclickoutside": "^1.7.0",
|
|
48
|
-
"react-dom": "^
|
|
45
|
+
"react-dom": "^19.0.0",
|
|
49
46
|
"react-highlight-words": "^0.21.0",
|
|
50
47
|
"react-modal": "^3.16.3",
|
|
51
48
|
"react-redux": "^9.2.0",
|
|
52
49
|
"react-window": "^1.8.11",
|
|
53
50
|
"redux-saga": "^1.3.0",
|
|
54
51
|
"store2": "^2.14.4",
|
|
52
|
+
"transliteration": "^2.3.5",
|
|
55
53
|
"use-debounce": "^10.0.4",
|
|
56
54
|
"workbox-expiration": "^7.3.0",
|
|
57
55
|
"workbox-precaching": "^7.3.0",
|
|
@@ -62,8 +60,8 @@
|
|
|
62
60
|
"devDependencies": {
|
|
63
61
|
"@svgr/webpack": "^8.1.0",
|
|
64
62
|
"@types/classnames": "^2.3.4",
|
|
65
|
-
"@types/react": "^
|
|
66
|
-
"@types/react-dom": "^
|
|
63
|
+
"@types/react": "^19.0.12",
|
|
64
|
+
"@types/react-dom": "^19.0.4",
|
|
67
65
|
"@types/react-highlight-words": "^0.20.0",
|
|
68
66
|
"@types/react-modal": "^3.16.3",
|
|
69
67
|
"@types/react-portal": "^4.0.7",
|
|
@@ -71,7 +69,7 @@
|
|
|
71
69
|
"@types/react-window": "^1.8.8",
|
|
72
70
|
"@types/redux": "^3.6.31",
|
|
73
71
|
"@types/redux-saga": "^0.10.5",
|
|
74
|
-
"sass": "^1.
|
|
72
|
+
"sass": "^1.86.0"
|
|
75
73
|
},
|
|
76
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "d0654f37094c58a9982d7984e3fc8722f1fa24f0"
|
|
77
75
|
}
|
|
@@ -116,7 +116,7 @@ const Board: FunctionComponent<Props> = ({ className }) => {
|
|
|
116
116
|
dispatch(solveSlice.actions.submit());
|
|
117
117
|
setHasFocus(false);
|
|
118
118
|
},
|
|
119
|
-
[activeIndex, dispatch, locale],
|
|
119
|
+
[activeIndex, dispatch, insertValue, locale],
|
|
120
120
|
);
|
|
121
121
|
|
|
122
122
|
const handleToggleBlank = useCallback(() => {
|
|
@@ -27,7 +27,7 @@ const useBoardStyle = () => {
|
|
|
27
27
|
? `repeat(${config.boardSize}, 1fr)`
|
|
28
28
|
: `${coordinatesSize}px repeat(${config.boardSize}, 1fr)`,
|
|
29
29
|
}),
|
|
30
|
-
[backgroundImage, config.boardSize, tileFontSize],
|
|
30
|
+
[backgroundImage, config.boardSize, coordinatesSize, showCoordinates, tileFontSize],
|
|
31
31
|
);
|
|
32
32
|
|
|
33
33
|
return boardStyle;
|
|
@@ -69,7 +69,7 @@ const useGrid = (rows: Cell[][]): [State, Actions] => {
|
|
|
69
69
|
setActiveIndex({ x, y });
|
|
70
70
|
inputRefs[y][x].current?.focus();
|
|
71
71
|
},
|
|
72
|
-
[safeActiveIndex, inputRefs],
|
|
72
|
+
[safeActiveIndex, height, inputRefs, width],
|
|
73
73
|
);
|
|
74
74
|
|
|
75
75
|
const getInputRefPosition = useCallback(
|
|
@@ -188,7 +188,7 @@ const useGrid = (rows: Cell[][]): [State, Actions] => {
|
|
|
188
188
|
moveFocus(Math.abs(position.x - x) + Math.abs(position.y - y));
|
|
189
189
|
actions.forEach(dispatch);
|
|
190
190
|
},
|
|
191
|
-
[config, directionRef, dispatch, moveFocus, rows],
|
|
191
|
+
[config, directionRef, dispatch, height, moveFocus, rows, width],
|
|
192
192
|
);
|
|
193
193
|
|
|
194
194
|
const onChange = useCallback(
|
|
@@ -219,7 +219,7 @@ const useGrid = (rows: Cell[][]): [State, Actions] => {
|
|
|
219
219
|
|
|
220
220
|
insertValue(position, value);
|
|
221
221
|
},
|
|
222
|
-
[dispatch, insertValue, moveFocus, rows],
|
|
222
|
+
[dispatch, insertValue, moveFocus, rows, getInputRefPosition],
|
|
223
223
|
);
|
|
224
224
|
|
|
225
225
|
const onDirectionToggle = useCallback(() => setLastDirection(toggleDirection), []);
|
|
@@ -347,7 +347,7 @@ const useGrid = (rows: Cell[][]): [State, Actions] => {
|
|
|
347
347
|
dispatch(boardSlice.actions.toggleCellIsBlank(position));
|
|
348
348
|
},
|
|
349
349
|
});
|
|
350
|
-
}, [changeActiveIndex, config, direction, dispatch, locale, moveFocus, onDirectionToggle, rows]);
|
|
350
|
+
}, [changeActiveIndex, config, direction, dispatch, getInputRefPosition, locale, moveFocus, onDirectionToggle, rows]);
|
|
351
351
|
|
|
352
352
|
const onPaste = useCallback<ClipboardEventHandler>(
|
|
353
353
|
(event) => {
|
|
@@ -366,7 +366,7 @@ const useGrid = (rows: Cell[][]): [State, Actions] => {
|
|
|
366
366
|
const value = event.clipboardData.getData('text/plain').toLocaleLowerCase();
|
|
367
367
|
insertValue(position, value);
|
|
368
368
|
},
|
|
369
|
-
[insertValue],
|
|
369
|
+
[getInputRefPosition, insertValue],
|
|
370
370
|
);
|
|
371
371
|
|
|
372
372
|
return [
|
|
@@ -34,9 +34,9 @@ const EmptyState: FunctionComponent<Props> = ({ children, className, variant })
|
|
|
34
34
|
const translate = useTranslate();
|
|
35
35
|
const locale = useTypedSelector(selectLocale);
|
|
36
36
|
const { direction } = LOCALE_FEATURES[locale];
|
|
37
|
-
const title = useMemo(() => translate(TITLE_KEY_PER_TYPE[variant]), [translate]);
|
|
37
|
+
const title = useMemo(() => translate(TITLE_KEY_PER_TYPE[variant]), [translate, variant]);
|
|
38
38
|
const message = direction === 'ltr' ? title : title.split('').reverse().join('');
|
|
39
|
-
const content = useMemo(() => [message.toUpperCase().split(' ')], [
|
|
39
|
+
const content = useMemo(() => [message.toUpperCase().split(' ')], [message]);
|
|
40
40
|
|
|
41
41
|
return (
|
|
42
42
|
<div className={classNames(styles.emptyState, className)}>
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
ChangeEvent,
|
|
7
7
|
ClipboardEvent,
|
|
8
8
|
FunctionComponent,
|
|
9
|
+
RefObject,
|
|
9
10
|
createRef,
|
|
10
11
|
useCallback,
|
|
11
12
|
useMemo,
|
|
@@ -66,9 +67,14 @@ const Rack: FunctionComponent<Props> = ({ className, tileSize }) => {
|
|
|
66
67
|
const showInputPrompt = inputMode === 'touchscreen' && hasFocus;
|
|
67
68
|
const ref = useRef<HTMLDivElement>(null);
|
|
68
69
|
|
|
70
|
+
const floatingInputPrompt = useFloating({
|
|
71
|
+
placement: 'bottom-start',
|
|
72
|
+
whileElementsMounted: autoUpdate,
|
|
73
|
+
});
|
|
74
|
+
|
|
69
75
|
useOnclickOutside(() => setHasFocus(false), {
|
|
70
76
|
ignoreClass: [InputPrompt.styles.form, InputPrompt.styles.input],
|
|
71
|
-
refs: [ref],
|
|
77
|
+
refs: ref.current ? [ref as RefObject<HTMLDivElement>] : [],
|
|
72
78
|
});
|
|
73
79
|
|
|
74
80
|
const changeActiveIndex = useCallback(
|
|
@@ -119,7 +125,7 @@ const Rack: FunctionComponent<Props> = ({ className, tileSize }) => {
|
|
|
119
125
|
return character.length > 1 ? character.toLocaleUpperCase(locale) : character;
|
|
120
126
|
});
|
|
121
127
|
setInput(uppercasedDigraphs.join(''));
|
|
122
|
-
}, [rack, ref]);
|
|
128
|
+
}, [floatingInputPrompt.refs, locale, rack, ref]);
|
|
123
129
|
|
|
124
130
|
const handleKeyDown = useMemo(() => {
|
|
125
131
|
return createKeyboardNavigation({
|
|
@@ -158,12 +164,7 @@ const Rack: FunctionComponent<Props> = ({ className, tileSize }) => {
|
|
|
158
164
|
}
|
|
159
165
|
},
|
|
160
166
|
});
|
|
161
|
-
}, [changeActiveIndex, config, direction]);
|
|
162
|
-
|
|
163
|
-
const floatingInputPrompt = useFloating({
|
|
164
|
-
placement: 'bottom-start',
|
|
165
|
-
whileElementsMounted: autoUpdate,
|
|
166
|
-
});
|
|
167
|
+
}, [changeActiveIndex, config, direction, dispatch]);
|
|
167
168
|
|
|
168
169
|
return (
|
|
169
170
|
<>
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/* eslint-disable max-lines, max-statements */
|
|
2
|
-
|
|
3
1
|
import classNames from 'classnames';
|
|
4
2
|
import {
|
|
5
3
|
CSSProperties,
|
|
@@ -45,7 +43,7 @@ const InputPrompt = forwardRef<HTMLFormElement, Props>(
|
|
|
45
43
|
dispatch(rackSlice.actions.changeCharacters({ characters, index: 0 }));
|
|
46
44
|
onSubmit(event);
|
|
47
45
|
},
|
|
48
|
-
[config, value, onSubmit],
|
|
46
|
+
[config, dispatch, value, onSubmit],
|
|
49
47
|
);
|
|
50
48
|
|
|
51
49
|
useEffect(() => {
|
|
@@ -87,7 +87,7 @@ const RackTile: FunctionComponent<Props> = ({
|
|
|
87
87
|
dispatch(rackSlice.actions.changeCharacters({ characters, index }));
|
|
88
88
|
onChange(event);
|
|
89
89
|
},
|
|
90
|
-
[config, index, onChange],
|
|
90
|
+
[config, dispatch, index, onChange],
|
|
91
91
|
);
|
|
92
92
|
|
|
93
93
|
const handleKeyDown = useMemo(() => {
|
|
@@ -101,14 +101,16 @@ const RackTile: FunctionComponent<Props> = ({
|
|
|
101
101
|
event.preventDefault();
|
|
102
102
|
event.stopPropagation();
|
|
103
103
|
const twoTilesCharacter = config.getTwoCharacterTileByPrefix(event.key);
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
|
|
105
|
+
if (twoTilesCharacter) {
|
|
106
|
+
dispatch(rackSlice.actions.changeCharacter({ character: twoTilesCharacter!, index }));
|
|
107
|
+
}
|
|
106
108
|
}
|
|
107
109
|
|
|
108
110
|
onKeyDown(event);
|
|
109
111
|
},
|
|
110
112
|
});
|
|
111
|
-
}, [index, onKeyDown]);
|
|
113
|
+
}, [config, dispatch, index, onKeyDown]);
|
|
112
114
|
|
|
113
115
|
const handleMouseDown: MouseEventHandler<HTMLInputElement> = useCallback(
|
|
114
116
|
(event) => {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { useMergeRefs } from '@floating-ui/react';
|
|
2
|
+
import { isObject } from '@scrabble-solver/types';
|
|
2
3
|
import { HTMLProps, cloneElement, forwardRef, isValidElement } from 'react';
|
|
3
4
|
|
|
4
5
|
import { useTooltipContext } from './context';
|
|
@@ -19,7 +20,8 @@ export const TooltipTrigger = forwardRef<HTMLElement, Props>(({ children, ...pro
|
|
|
19
20
|
state.getReferenceProps({
|
|
20
21
|
ref: finalRef,
|
|
21
22
|
...props,
|
|
22
|
-
...children.props,
|
|
23
|
+
...(isObject(children.props) ? children.props : {}),
|
|
24
|
+
// @ts-expect-error incorrect @floating-ui typings
|
|
23
25
|
'data-state': state.open ? 'open' : 'closed',
|
|
24
26
|
}),
|
|
25
27
|
);
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { EffectCallback, useEffect } from 'react';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import useLatest from './useLatest';
|
|
4
|
+
|
|
5
|
+
const useEffectOnce = (effect: EffectCallback) => {
|
|
6
|
+
const effectRef = useLatest(effect);
|
|
7
|
+
|
|
8
|
+
return useEffect(() => {
|
|
9
|
+
effectRef.current();
|
|
10
|
+
}, [effectRef]);
|
|
11
|
+
};
|
|
4
12
|
|
|
5
13
|
export default useEffectOnce;
|
|
@@ -6,7 +6,8 @@ import extractCharacters from './extractCharacters';
|
|
|
6
6
|
|
|
7
7
|
const tests = [
|
|
8
8
|
{ input: 'ab ', expected: ['a', 'b', BLANK] },
|
|
9
|
-
{ input: 'śćźa', expected: ['a'] },
|
|
9
|
+
{ input: 'śćźa', expected: ['s', 'c', 'z', 'a'] },
|
|
10
|
+
{ input: 'bañó', expected: ['b', 'a', 'ñ', 'o'] },
|
|
10
11
|
{ input: 'bueno', expected: ['b', 'u', 'e', 'n', 'o'] },
|
|
11
12
|
{ input: 'bellas', expected: ['b', 'e', 'll', 'a', 's'] },
|
|
12
13
|
{ input: 'BELLAS', expected: ['b', 'e', 'll', 'a', 's'] },
|
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
import { BLANK } from '@scrabble-solver/constants';
|
|
2
|
-
import { Config } from '@scrabble-solver/types';
|
|
2
|
+
import { Config, Locale } from '@scrabble-solver/types';
|
|
3
|
+
import { transliterate } from 'transliteration';
|
|
4
|
+
|
|
5
|
+
const transliteratePerLocale: Record<Locale, (word: string) => string> = {
|
|
6
|
+
[Locale.DE_DE]: (word) => word,
|
|
7
|
+
[Locale.EN_GB]: (word) => word,
|
|
8
|
+
[Locale.EN_US]: (word) => word,
|
|
9
|
+
[Locale.ES_ES]: (word) => transliterate(word, { ignore: ['ñ'] }),
|
|
10
|
+
[Locale.FA_IR]: (word) => word,
|
|
11
|
+
[Locale.FR_FR]: (word) => transliterate(word),
|
|
12
|
+
[Locale.PL_PL]: (word) => word,
|
|
13
|
+
[Locale.RO_RO]: (word) => transliterate(word),
|
|
14
|
+
[Locale.TR_TR]: (word) => word,
|
|
15
|
+
};
|
|
3
16
|
|
|
4
17
|
const extractCharacters = (config: Config, value: string): string[] => {
|
|
5
18
|
let index = 0;
|
|
6
19
|
const characters: string[] = [];
|
|
7
|
-
const
|
|
20
|
+
const localeTransliterate = transliteratePerLocale[config.locale];
|
|
21
|
+
const valueLowercase = localeTransliterate(value.toLocaleLowerCase(config.locale));
|
|
8
22
|
|
|
9
23
|
while (index < valueLowercase.length) {
|
|
10
24
|
const character = valueLowercase[index];
|
package/src/state/sagas.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* eslint-disable max-lines */
|
|
1
|
+
/* eslint-disable max-lines, no-implicit-globals */
|
|
2
2
|
|
|
3
3
|
import { PayloadAction } from '@reduxjs/toolkit';
|
|
4
4
|
import { hasConfig, languages } from '@scrabble-solver/configs';
|
|
@@ -215,7 +215,7 @@ function* onVerify(): AnyGenerator {
|
|
|
215
215
|
locale,
|
|
216
216
|
});
|
|
217
217
|
yield put(verifySlice.actions.submitSuccess({ board, invalidWords, validWords }));
|
|
218
|
-
} catch (
|
|
218
|
+
} catch (_error) {
|
|
219
219
|
yield put(verifySlice.actions.submitFailure());
|
|
220
220
|
}
|
|
221
221
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=268,exports.ids=[268],exports.modules={3003:(e,t)=>{Object.defineProperty(t,"M",{enumerable:!0,get:function(){return function e(t,r){return r in t?t[r]:"then"in t&&"function"==typeof t.then?t.then(t=>e(t,r)):"function"==typeof t&&"default"===r?t:void 0}}})},9019:(e,t,r)=>{r.d(t,{A:()=>i});let i=e=>({origin:e.headers.origin,referer:e.headers.referer,userAgent:e.headers["user-agent"],xForwardedFor:e.headers["x-forwarded-for"],xRealIp:e.headers["x-real-ip"]})},5851:(e,t)=>{Object.defineProperty(t,"A",{enumerable:!0,get:function(){return r}});var r=function(e){return e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE",e.IMAGE="IMAGE",e}({})},4724:(e,t,r)=>{e.exports=r(5600)},5873:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.VOWELS=t.CONSONANTS=t.NO_BONUS=t.EMPTY_CELL=t.BONUS_WORD=t.BONUS_CHARACTER=t.BLANK=t.COMMA_LATIN=t.COMMA_ARABIC=void 0,t.COMMA_ARABIC="،",t.COMMA_LATIN=",",t.BLANK=" ",t.BONUS_CHARACTER="BONUS_CHARACTER",t.BONUS_WORD="BONUS_WORD",t.EMPTY_CELL=" ",t.NO_BONUS={characterMultiplier:1,wordMultiplier:1},t.CONSONANTS="bc\xe7ćdfgğhjklłmnń\xf1pqrsşśtvwxzźż".split(""),t.VOWELS="aą\xe4eęio\xf3\xf6u\xfcyı".split("")},6928:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(2070)),o=r(1313),s=i(r(9021)),l=r(7639),a=r(7206);class u{constructor(){this.cache=new a.LayeredCache,this.downloadDictionaryProxies=Object.fromEntries(Object.values(o.Locale).map(e=>[e,(0,a.createAsyncProxy)(()=>(0,a.downloadDictionary)(e))]))}async get(e){if(this.cache.has(e)){let t=await this.cache.get(e);if(t)return t}return n.default.info("Dictionaries - cache miss",{locale:e}),this.updateDictionary(e)}remove(){s.default.rmdirSync(l.OUTPUT_DIRECTORY,{recursive:!0})}async update(e){let t=e?Object.values(o.Locale):this.getLocalesToUpdate();n.default.info("Dictionaries - update",{force:e,locales:t}),await Promise.all(t.map(e=>this.updateDictionary(e)))}getLocalesToUpdate(){return Object.values(o.Locale).filter(e=>!1!==this.cache.isStale(e))}async updateDictionary(e){n.default.info("Dictionaries - updateDictionary",{locale:e}),s.default.mkdirSync(l.OUTPUT_DIRECTORY,{recursive:!0});let t=this.downloadDictionaryProxies[e],r=await t();return await this.cache.set(e,r),r}}t.default=u},7639:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.OUTPUT_DIRECTORY=t.CACHE_STALE_THRESHOLD=t.DAY=void 0;let n=i(r(1820)),o=i(r(3873));t.DAY=864e5,t.CACHE_STALE_THRESHOLD=1*t.DAY,t.OUTPUT_DIRECTORY=o.default.resolve(n.default.homedir(),".scrabble-solver","dictionaries")},8186:function(e,t,r){var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||i(t,e,r)},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.dictionaries=void 0;let s=o(r(6928));n(r(7206),t),t.dictionaries=new s.default},6547:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(9362),o=i(r(9021)),s=r(7639),l=i(r(5247));class a{async get(e){if(!this.has(e))return;let t=(0,l.default)(e),r=await o.default.promises.readFile(t,"utf-8");return n.Trie.deserialize(r)}getLastModifiedTimestamp(e){let t=(0,l.default)(e);if(o.default.existsSync(t))return o.default.statSync(t).mtimeMs}has(e){let t=(0,l.default)(e);return o.default.existsSync(t)}isStale(e){if(!this.has(e))return;let t=this.getLastModifiedTimestamp(e);if(void 0!==t)return Math.abs(t-Date.now())>s.CACHE_STALE_THRESHOLD}async set(e,t){let r=(0,l.default)(e);await o.default.promises.writeFile(r,t.serialize())}}t.default=a},514:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(1374)),o=i(r(6547)),s=i(r(2445));class l{constructor(){this.layers=[new s.default,new o.default]}async get(e){let t=this.getLastModifiedLayer(e);if(!t)return Promise.resolve(void 0);let[r,i]=this.layers,n=await t.get(e);return t===i&&void 0!==n&&await r.set(e,n),n}getLastModifiedTimestamp(e){let t=this.getLastModifiedLayer(e);if(t)return t.getLastModifiedTimestamp(e)}has(e){return this.layers.some(t=>t.has(e))}isStale(e){return!!this.layers.some(t=>t.isStale(e))||!!this.layers.every(t=>void 0===t.isStale(e))&&void 0}async set(e,t){let[r,i]=this.layers;await i.set(e,t),await r.set(e,t)}getLastModifiedLayer(e){let[t]=[...this.layers.filter(t=>t.has(e))].sort((0,n.default)(e));return t}}t.default=l},2445:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});let i=r(7639);class n{constructor(){this.cache={},this.cacheTimestamps={}}get(e){return Promise.resolve(this.cache[e])}getLastModifiedTimestamp(e){return this.cacheTimestamps[e]}has(e){return void 0!==this.cache[e]}isStale(e){let t=this.getLastModifiedTimestamp(e);if(this.has(e)&&void 0!==t)return Math.abs(t-Date.now())>i.CACHE_STALE_THRESHOLD}set(e,t){return this.cacheTimestamps[e]=Date.now(),this.cache[e]=t,Promise.resolve()}}t.default=n},1668:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>{let t=null;return async()=>{if(t)return t;try{return t=e(),await t}finally{t=null}}}},1374:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>(t,r)=>{let i=t.getLastModifiedTimestamp(e),n=r.getLastModifiedTimestamp(e);return i===n?0:void 0===i?1:void 0===n?-1:n-i}},3336:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(9362),o=i(r(2070)),s=r(2026),l=async e=>{o.default.info("downloadDictionary",{locale:e});let t=await (0,s.getWordList)(e);return o.default.info("downloadDictionary - success",{locale:e}),n.Trie.fromArray(t)};t.default=l},5247:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(3873)),o=r(7639);t.default=e=>n.default.resolve(o.OUTPUT_DIRECTORY,`${e}.txt`)},7206:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.MemoryCache=t.LayeredCache=t.getDictionaryFilepath=t.downloadDictionary=t.DiskCache=t.createCacheTimestampComparator=t.createAsyncProxy=void 0;var n=r(1668);Object.defineProperty(t,"createAsyncProxy",{enumerable:!0,get:function(){return i(n).default}});var o=r(1374);Object.defineProperty(t,"createCacheTimestampComparator",{enumerable:!0,get:function(){return i(o).default}});var s=r(6547);Object.defineProperty(t,"DiskCache",{enumerable:!0,get:function(){return i(s).default}});var l=r(3336);Object.defineProperty(t,"downloadDictionary",{enumerable:!0,get:function(){return i(l).default}});var a=r(5247);Object.defineProperty(t,"getDictionaryFilepath",{enumerable:!0,get:function(){return i(a).default}});var u=r(514);Object.defineProperty(t,"LayeredCache",{enumerable:!0,get:function(){return i(u).default}});var d=r(2445);Object.defineProperty(t,"MemoryCache",{enumerable:!0,get:function(){return i(d).default}})},2127:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.OUTPUT_DIRECTORY=void 0;let n=i(r(1820)),o=i(r(3873));t.OUTPUT_DIRECTORY=o.default.resolve(n.default.homedir(),".scrabble-solver","logs")},2070:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(8772);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i(n).default}})},8772:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(3873)),o=r(5124),s=r(2127),l=(0,o.createLogger)({level:"info",format:o.format.combine(o.format.timestamp({format:"YYYY-MM-DD HH:mm:ss"}),o.format.errors({stack:!0}),o.format.splat(),o.format.json(),o.format.prettyPrint()),transports:[new o.transports.File({filename:n.default.resolve(s.OUTPUT_DIRECTORY,"error.log"),level:"error"}),new o.transports.File({filename:n.default.resolve(s.OUTPUT_DIRECTORY,"all.log")}),new o.transports.Console({format:o.format.combine(o.format.colorize(),o.format.simple()),level:"error"})]});t.default=l},7757:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(5873),o=i(r(7917)),s=i(r(1137));class l{static create(e){return l.fromStringArray(Array(e).fill(Array(e).fill(" ").join("")))}static fromJson(e){return new l({rows:e.map(e=>e.map(o.default.fromJson))})}static fromStringArray(e){return new l({rows:e.map((e,t)=>e.split("").map((e,r)=>new o.default({isEmpty:!e||e===n.EMPTY_CELL,tile:e===n.EMPTY_CELL?s.default.Null:new s.default({character:e}),x:r,y:t})))})}constructor({rows:e}){this.rows=e,this.columnsCount=e[0].length,this.rowsCount=e.length}get center(){let e=Math.floor(this.columnsCount/2),t=Math.floor(this.rowsCount/2);return this.rows[t][e]}clone(){return new l({rows:this.rows.map(e=>e.map(e=>e.clone()))})}collides(e){return this.collidesUp(e)||this.collidesDown(e)||this.collidesLeft(e)||this.collidesRight(e)}collidesDown({x:e,y:t}){return t<this.rowsCount-1&&!this.rows[t+1][e].isEmpty}collidesLeft({x:e,y:t}){return e>0&&!this.rows[t][e-1].isEmpty}collidesRight({x:e,y:t}){return e<this.columnsCount-1&&!this.rows[t][e+1].isEmpty}collidesUp({x:e,y:t}){return t>0&&!this.rows[t-1][e].isEmpty}equals(e){return this.columnsCount===e.columnsCount&&this.rowsCount===e.rowsCount&&this.rows.every((t,r)=>t.every((t,i)=>t.equals(e.rows[r][i])))}getBlanksCount(){return this.rows.reduce((e,t)=>e+t.reduce((e,t)=>e+(t.tile.isBlank?1:0),0),0)}getColumn(e){return this.rows.map(t=>t[e])}getRow(e){return this.rows[e]}getTilesCount(){return this.rows.reduce((e,t)=>e+t.reduce((e,t)=>e+(t.hasTile()?1:0),0),0)}getWords(){let e=[];for(let t=0;t<this.columnsCount;++t){let r=[];for(let e=0;e<this.rowsCount;++e)r.push(this.rows[e][t]);e.push(r)}let t=new l({rows:e});return this.toString().split("\n").concat(t.toString().split("\n")).flatMap(e=>e.replaceAll(/\s+/g,n.EMPTY_CELL).split(" ")).filter(e=>e.length>1)}isEmpty(){return this.rows.every(e=>e.every(({isEmpty:e})=>e))}toJson(){return this.rows.map(e=>e.map(e=>e.toJson()))}toString(){return this.rows.map(e=>e.map(String).join("")).join("\n")}updateCell(e,t,r){this.rows[t][e]=r(this.rows[t][e])}updateRow(e,t){this.rows[e]=t(this.rows[e])}}t.default=l},5427:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isBoardJson=void 0;let i=r(7971);t.isBoardJson=e=>{if(!Array.isArray(e))return!1;for(let t of e){if(!Array.isArray(e))return!1;for(let e of t)if(!(0,i.isCellJson)(e))return!1}return!0}},6518:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});class r{constructor({multiplier:e,score:t,x:r,y:i}){this.multiplier=e,this.score=t,this.x=r,this.y=i}canApply(e,t){return t.isEmpty&&this.matchesCellCoordinates(t)}matchesCellCoordinates(e){return this.x===e.x&&this.y===e.y}toJson(){return{multiplier:this.multiplier,score:this.score,type:this.type,x:this.x,y:this.y}}get value(){return{characterMultiplier:1,wordMultiplier:1}}}t.default=r},7917:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(1137));class o{static fromJson(e){return new o({isEmpty:e.isEmpty,tile:n.default.fromJson(e.tile),x:e.x,y:e.y})}constructor({isEmpty:e=!0,tile:t=n.default.Null,x:r,y:i}){this.isEmpty=e,this.tile=t,this.x=r,this.y=i}clone(){return new o({isEmpty:this.isEmpty,tile:this.tile.clone(),x:this.x,y:this.y})}equals(e){return this.x===e.x&&this.y===e.y&&this.isEmpty===e.isEmpty&&this.tile.equals(e.tile)}hasTile(){return this.tile!==n.default.Null}isCandidate(){return this.isEmpty&&this.hasTile()}toJson(){return{isEmpty:this.isEmpty,tile:this.tile.toJson(),x:this.x,y:this.y}}toString(){return this.tile.toString()}}t.default=o},7971:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.isCellJson=void 0;let n=i(r(326)),o=r(6791);t.isCellJson=e=>(0,n.default)(e)&&"boolean"==typeof e.isEmpty&&((0,o.isTileJson)(e.tile)||null===e.tile)&&"number"==typeof e.x&&"number"==typeof e.y},8331:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(5873),o=i(r(6518));class s extends o.default{constructor(){super(...arguments),this.type=n.BONUS_CHARACTER}canApply(e,t){return super.canApply(e,t)&&this.matchesCellTileScore(e,t)}matchesCellTileScore(e,t){return void 0===this.score||this.score===e.pointsMap[t.tile.character]}get value(){return{characterMultiplier:this.multiplier,wordMultiplier:1}}}t.default=s},2643:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(5873),o=i(r(8331)),s=i(r(4026));class l{static fromJson(e){return new l(e)}constructor(e){this.bonuses=a(e),this.config=e,this.pointsMap=d(this.config)}get alphabet(){return u(this.config)}get bingoScore(){return this.config.bingoScore}get blankScore(){return this.config.blankScore}get blanksCount(){return this.config.blanksCount}get boardSize(){return this.config.boardSize}get game(){return this.config.game}get locale(){return this.config.locale}get twoCharacterTiles(){return this.config.tiles.filter(e=>2===e.character.length).map(e=>e.character)}getCellBonus(e){return this.bonuses.find(t=>t.matchesCellCoordinates(e))}getCellBonusValue(e){return this.getCellBonus(e)?.value||n.NO_BONUS}getCharacterPoints(e){return null===e?void 0:e===n.BLANK?this.blankScore:this.pointsMap[e]}getTwoCharacterTileByPrefix(e){if(1===e.length)return this.twoCharacterTiles.find(t=>t.startsWith(e))}getTilePoints(e){if(null!==e)return e.isBlank?this.blankScore:this.getCharacterPoints(e.character)}hasCharacter(e){return e in this.pointsMap}isTwoCharacterTilePrefix(e){return void 0!==this.getTwoCharacterTileByPrefix(e)}get rackSize(){return this.config.rackSize}get tiles(){return this.config.tiles}toJson(){return this.config}}let a=e=>e.bonuses.map(e=>{if(e.type===n.BONUS_CHARACTER)return new o.default(e);if(e.type===n.BONUS_WORD)return new s.default(e);throw Error(`Unsupported Bonus type: "${e.type}"`)}),u=e=>e.tiles.map(({character:e})=>e),d=e=>e.tiles.reduce((e,{character:t,score:r})=>({...e,[t]:r}),{});t.default=l},5235:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(8911));class o extends n.default{constructor(e){super(e.board,e.cells),this.collisions=e.getCollisions()}getCollisions(){return this.collisions}}t.default=o},5831:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.isGame=void 0,function(e){e.Kelimelik="kelimelik",e.Literaki="literaki",e.Scrabble="scrabble",e.SuperScrabble="super-scrabble"}(r||(r={}));let i=Object.values(r);t.isGame=e=>i.includes(e),t.default=r},211:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(8911));class o extends n.default{clone(){return new o(this.board,this.cells.map(e=>e.clone()))}getCollisions(){let e=[];return this.cells.filter(e=>e.isEmpty&&(this.board.collidesUp(e)||this.board.collidesDown(e))).forEach(t=>{let r=this.board.getColumn(t.x),i=t.y-1;for(;i>=0&&r[i].hasTile();)--i;let o=r.slice(i+1,t.y);for(i=t.y+1;i<r.length&&r[i].hasTile();)++i;let s=r.slice(t.y+1,i),l=[...o,t,...s];if(l.length>1){let t=new n.default(this.board,l);e.push(t)}}),e}}t.default=o},2568:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.isLocale=void 0,function(e){e.DE_DE="de-DE",e.EN_GB="en-GB",e.EN_US="en-US",e.ES_ES="es-ES",e.FA_IR="fa-IR",e.FR_FR="fr-FR",e.PL_PL="pl-PL",e.RO_RO="ro-RO",e.TR_TR="tr-TR"}(r||(r={}));let i=Object.values(r);t.isLocale=e=>i.includes(e),t.default=r},8911:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});class r{constructor(e,t){this.board=e,this.cells=t}canBePlaced(e){let t=this.getEmptyCellsCount();return t>=1&&t<=e.rackSize&&(this.hasAtLeast1NonEmptyCell()||this.collides()||this.goesThroughBoardCenter()&&this.board.isEmpty())}clone(){return new r(this.board,this.cells.map(e=>e.clone()))}collides(){return this.cells.some(e=>e.isEmpty&&this.board.collides(e))}getIndexOfFirstCellWithoutTile(){return this.cells.findIndex(e=>!e.hasTile())}getEmptyCellsCount(){return this.cells.filter(e=>e.isEmpty).length}goesThroughBoardCenter(){return this.cells.some(e=>e.x===this.board.center.x&&e.y===this.board.center.y&&e.isEmpty)}hasAtLeast1EmptyCell(){return this.cells.some(e=>e.isEmpty)}hasAtLeast1NonEmptyCell(){return this.cells.some(e=>!e.isEmpty)}getCollisions(){return[]}toJson(){return{cells:this.cells.map(e=>e.toJson()),collisions:this.getCollisions().map(e=>e.toJson()),word:this.toString()}}toString(){return this.cells.reduce((e,t)=>e+t.toString(),"")}}t.default=r},416:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(5873),o=i(r(7917));class s{static fromJson(e){return new s({id:e.id,cells:e.cells.map(o.default.fromJson),collisions:e.collisions.map(e=>e.map(o.default.fromJson)),points:e.points})}constructor({cells:e,id:t,collisions:r,points:i}){let n=c(e);this.blanksCount=l(n).length,this.cells=e,this.collisions=r,this.consonantsCount=a(n).length,this.id=t,this.length=e.length,this.points=i,this.pointsRatio=d(n,i),this.tiles=n,this.tilesCount=n.length,this.vowelsCount=u(n).length,this.word=f(e),this.words=h(e,r),this.wordsCount=1+this.collisions.length}toJson(){return{cells:this.cells.map(e=>e.toJson()),id:this.id,collisions:this.collisions.map(e=>e.map(e=>e.toJson())),points:this.points}}}let l=e=>e.filter(({isBlank:e})=>e),a=e=>e.filter(p),u=e=>e.filter(_),d=(e,t)=>t/e.length,c=e=>e.filter(({isEmpty:e})=>e).map(({tile:e})=>e),f=e=>e.reduce((e,t)=>e+t.toString(),""),h=(e,t)=>[e,...t].map(f),p=({character:e,isBlank:t})=>n.CONSONANTS.includes(e)&&!t,_=({character:e,isBlank:t})=>n.VOWELS.includes(e)&&!t;t.default=s},1137:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});let i=r(5873);class n{static fromJson(e){return e?new n({character:e.character,isBlank:e.isBlank}):n.Null}constructor({character:e,isBlank:t=!1}){this.character=e,this.isBlank=t}clone(){return new n({character:this.character,isBlank:this.isBlank})}equals(e){return this.character===e.character&&this.isBlank===e.isBlank}toJson(){return{character:this.character,isBlank:this.isBlank}}toString(){return this.character}}n.Null=Object.freeze({character:i.EMPTY_CELL,isBlank:!1,clone:()=>n.Null,equals:e=>e===n.Null,toJson:()=>null,toString:()=>i.EMPTY_CELL}),t.default=n},6791:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.isTileJson=void 0;let n=i(r(326));t.isTileJson=e=>(0,n.default)(e)&&"string"==typeof e.character&&"boolean"==typeof e.isBlank},2749:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(8911));class o extends n.default{clone(){return new o(this.board,this.cells.map(e=>e.clone()))}getCollisions(){let e=[];return this.cells.filter(e=>e.isEmpty&&(this.board.collidesLeft(e)||this.board.collidesRight(e))).forEach(t=>{let r=this.board.getRow(t.y),i=t.x-1;for(;i>=0&&r[i].hasTile();)--i;let o=r.slice(i+1,t.x);for(i=t.x+1;i<r.length&&r[i].hasTile();)++i;let s=r.slice(t.x+1,i),l=[...o,t,...s];if(l.length>1){let t=new n.default(this.board,l);e.push(t)}}),e}}t.default=o},4026:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(5873),o=i(r(6518));class s extends o.default{constructor(){super(...arguments),this.type=n.BONUS_WORD}get value(){return{characterMultiplier:1,wordMultiplier:this.multiplier}}}t.default=s},6052:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});class r{static fromJson(e){return e?new r({definitions:e.definitions,exists:e.exists,isAllowed:e.isAllowed,word:e.word}):r.Null}constructor({definitions:e,exists:t,isAllowed:r,word:i}){this.definitions=e,this.exists=t,this.isAllowed=r,this.word=i}toJson(){return{definitions:this.definitions,exists:this.exists,isAllowed:this.isAllowed,word:this.word}}}r.Null=Object.freeze({definitions:[],exists:!1,isAllowed:!1,word:"",toJson:()=>null}),t.default=r},1313:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.isObject=t.isError=t.WordDefinition=t.WordBonus=t.VerticalPattern=t.isTileJson=t.Tile=t.Result=t.Pattern=t.isLocale=t.Locale=t.HorizontalPattern=t.isGame=t.Game=t.FinalPattern=t.Config=t.CharacterBonus=t.isCellJson=t.Cell=t.Bonus=t.isBoardJson=t.Board=void 0;var n=r(7757);Object.defineProperty(t,"Board",{enumerable:!0,get:function(){return i(n).default}});var o=r(5427);Object.defineProperty(t,"isBoardJson",{enumerable:!0,get:function(){return o.isBoardJson}});var s=r(6518);Object.defineProperty(t,"Bonus",{enumerable:!0,get:function(){return i(s).default}});var l=r(7917);Object.defineProperty(t,"Cell",{enumerable:!0,get:function(){return i(l).default}});var a=r(7971);Object.defineProperty(t,"isCellJson",{enumerable:!0,get:function(){return a.isCellJson}});var u=r(8331);Object.defineProperty(t,"CharacterBonus",{enumerable:!0,get:function(){return i(u).default}});var d=r(2643);Object.defineProperty(t,"Config",{enumerable:!0,get:function(){return i(d).default}});var c=r(5235);Object.defineProperty(t,"FinalPattern",{enumerable:!0,get:function(){return i(c).default}});var f=r(5831);Object.defineProperty(t,"Game",{enumerable:!0,get:function(){return i(f).default}}),Object.defineProperty(t,"isGame",{enumerable:!0,get:function(){return f.isGame}});var h=r(211);Object.defineProperty(t,"HorizontalPattern",{enumerable:!0,get:function(){return i(h).default}});var p=r(2568);Object.defineProperty(t,"Locale",{enumerable:!0,get:function(){return i(p).default}}),Object.defineProperty(t,"isLocale",{enumerable:!0,get:function(){return p.isLocale}});var _=r(8911);Object.defineProperty(t,"Pattern",{enumerable:!0,get:function(){return i(_).default}});var m=r(416);Object.defineProperty(t,"Result",{enumerable:!0,get:function(){return i(m).default}});var y=r(1137);Object.defineProperty(t,"Tile",{enumerable:!0,get:function(){return i(y).default}});var g=r(6791);Object.defineProperty(t,"isTileJson",{enumerable:!0,get:function(){return g.isTileJson}});var b=r(2749);Object.defineProperty(t,"VerticalPattern",{enumerable:!0,get:function(){return i(b).default}});var v=r(4026);Object.defineProperty(t,"WordBonus",{enumerable:!0,get:function(){return i(v).default}});var O=r(6052);Object.defineProperty(t,"WordDefinition",{enumerable:!0,get:function(){return i(O).default}});var P=r(3527);Object.defineProperty(t,"isError",{enumerable:!0,get:function(){return i(P).default}});var w=r(326);Object.defineProperty(t,"isObject",{enumerable:!0,get:function(){return i(w).default}})},3527:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(326));t.default=e=>!!(0,n.default)(e)&&"string"==typeof e.message},326:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>"object"==typeof e&&null!==e},2898:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(1313),n=r(8846),o={[i.Locale.DE_DE]:n.german.getWordList,[i.Locale.EN_GB]:n.english.getWordListGb,[i.Locale.EN_US]:n.english.getWordListUs,[i.Locale.ES_ES]:n.spanish.getWordList,[i.Locale.FA_IR]:n.persian.getWordList,[i.Locale.FR_FR]:n.french.getWordList,[i.Locale.PL_PL]:n.polish.getWordList,[i.Locale.RO_RO]:n.romanian.getWordList,[i.Locale.TR_TR]:n.turkish.getWordList};t.getWordList=e=>o[e]()},2026:function(e,t,r){var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||i(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;var o=r(2898);Object.defineProperty(t,"getWordList",{enumerable:!0,get:function(){return o.getWordList}}),n(r(8846),t),n(r(8630),t)},7214:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordListUs=t.getWordListGb=void 0;let i=r(1313),n=r(8630),o=async()=>(0,n.getTxtWordList)("https://www.wordgamedictionary.com/sowpods/download/sowpods.txt",i.Locale.EN_GB);t.getWordListGb=o;let s=async()=>(0,n.getTxtWordList)("https://www.wordgamedictionary.com/twl06/download/twl06.txt",i.Locale.EN_US);t.getWordListUs=s},7548:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(1313),n=r(8630),o=async()=>{let e=await (0,n.getTxtWordList)("https://raw.githubusercontent.com/Thecoolsim/French-Scrabble-ODS8/main/French%20ODS%20dictionary.txt",i.Locale.FR_FR);return(0,n.latinizeDiacritics)(e)};t.getWordList=o},9706:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(1313),n=r(8630),o=async()=>(0,n.getTxtWordList)("https://raw.githubusercontent.com/hippler/german-wordlist/master/words.txt",i.Locale.DE_DE);t.getWordList=o},8846:function(e,t,r){var i,n=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||(i=function(e){return(i=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=i(e),s=0;s<r.length;s++)"default"!==r[s]&&n(t,e,r[s]);return o(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.turkish=t.spanish=t.romanian=t.polish=t.persian=t.french=t.german=t.english=void 0,t.english=s(r(7214)),t.german=s(r(9706)),t.french=s(r(7548)),t.persian=s(r(6454)),t.polish=s(r(6443)),t.romanian=s(r(6091)),t.spanish=s(r(4766)),t.turkish=s(r(7110))},6454:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(1313),n=r(8630),o=async()=>(0,n.getTxtWordList)("https://raw.githubusercontent.com/MansourM/persian-to-persian-dictionary/main/moein/words.txt",i.Locale.FA_IR);t.getWordList=o},6443:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let n=r(4217),o=i(r(9021)),s=r(9551),l=r(8630),a=async()=>{let e=(0,l.getTempFilepath)(),t=await u("https://sjp.pl/sl/growy/"),r=await (0,l.downloadFile)(t);await (0,l.unzip)(r,"slowa.txt",e),o.default.unlinkSync(r);let i=o.default.readFileSync(e,"utf-8");return o.default.unlinkSync(e),(0,l.extractWords)(i.toLocaleString(),"pl-PL")};t.getWordList=a;let u=async e=>{let t=await (0,l.downloadHtml)(e),r=await d(t),{href:i}=new s.URL(r,e);return i},d=e=>{let t=(0,n.load)(e),r=Array.from(t("a")).map(e=>t(e).attr("href")).filter(Boolean).find(e=>e.endsWith(".zip"));if(void 0===r)throw Error("Cannot find link to zip file on the page");return r}},6091:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(1313),n=r(8630),o=async()=>{let e=await (0,n.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/romanian/loc-5.0.txt",i.Locale.RO_RO);return(0,n.latinizeDiacritics)(e)};t.getWordList=o},4766:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let n=r(1313),o=i(r(4188)),s=r(8630),l="---n---",a=async()=>(await (0,s.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/spanish/file-2017.txt",n.Locale.ES_ES)).map(e=>e.replaceAll("\xf1",l)).map(o.default).map(e=>e.replaceAll(l,"\xf1"));t.getWordList=a},7110:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(1313),n=r(8630),o=async()=>(0,n.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/turkish/turkish.txt",i.Locale.TR_TR);t.getWordList=o},9577:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(1097),o=i(r(9021)),s=i(r(3161));t.default=e=>new Promise((t,r)=>{let i=(0,s.default)(),l=e.startsWith("https")?n.https:n.http,a=o.default.createWriteStream(i);l.get(e,n=>{if(void 0===n.statusCode||n.statusCode>=400){r(Error(`Cannot download file: ${e}`));return}n.on("error",e=>{a.close(),r(e)}),n.on("end",()=>{a.on("finish",()=>{a.close(),t(i)})}),n.pipe(a)}).on("error",e=>{a.close(),r(e)})})},737:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});let i=r(1097);t.default=e=>new Promise((t,r)=>{(e.startsWith("https")?i.https:i.http).get(e,e=>{let i="";e.setEncoding("utf8"),e.on("data",e=>{i+=e}),e.on("end",()=>{t(i)}),e.on("error",r)})})},6630:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(8250));t.default=(e,t)=>{let r=e.split(/\r?\n/g),i=(0,n.default)(r,t),o=[];for(let e=i;e<r.length;++e){let t=r[e].trim();t.length>0&&o.push(t.toLocaleLowerCase())}return o}},8250:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=(e,t)=>{let r=e.findIndex((e,r)=>{let i=e[r+1]||"",n=e.localeCompare(i,t)>0,o=!!e.match(/\s/);return 0!==e.trim().length&&!o&&n});if(void 0===r)throw Error("Cannot find index of the first word in the file");return r}},6390:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(5511));t.default=(e=8)=>n.default.randomBytes(e).toString("hex")},3161:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(1820)),o=i(r(3873)),s=i(r(6390)),l=o.default.resolve(n.default.homedir(),".scrabble-solver");t.default=()=>{let e=`${(0,s.default)()}.txt`;return o.default.join(l,e)}},7220:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9021)),o=i(r(9577)),s=i(r(6630)),l=async(e,t)=>{let r=await (0,o.default)(e),i=n.default.readFileSync(r,"utf-8"),l=(0,s.default)(i.toLocaleString(),t);return n.default.unlinkSync(r),l};t.default=l},8630:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.unzip=t.unique=t.latinizeDiacritics=t.getTxtWordList=t.getTempFilepath=t.getHash=t.findFirstWordIndex=t.extractWords=t.downloadHtml=t.downloadFile=void 0;var n=r(9577);Object.defineProperty(t,"downloadFile",{enumerable:!0,get:function(){return i(n).default}});var o=r(737);Object.defineProperty(t,"downloadHtml",{enumerable:!0,get:function(){return i(o).default}});var s=r(6630);Object.defineProperty(t,"extractWords",{enumerable:!0,get:function(){return i(s).default}});var l=r(8250);Object.defineProperty(t,"findFirstWordIndex",{enumerable:!0,get:function(){return i(l).default}});var a=r(6390);Object.defineProperty(t,"getHash",{enumerable:!0,get:function(){return i(a).default}});var u=r(3161);Object.defineProperty(t,"getTempFilepath",{enumerable:!0,get:function(){return i(u).default}});var d=r(7220);Object.defineProperty(t,"getTxtWordList",{enumerable:!0,get:function(){return i(d).default}});var c=r(7847);Object.defineProperty(t,"latinizeDiacritics",{enumerable:!0,get:function(){return i(c).default}});var f=r(5891);Object.defineProperty(t,"unique",{enumerable:!0,get:function(){return i(f).default}});var h=r(9940);Object.defineProperty(t,"unzip",{enumerable:!0,get:function(){return i(h).default}})},7847:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(4188)),o=i(r(5891));t.default=e=>(0,o.default)(e.map(e=>(0,n.default)(e)))},5891:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>Array.from(new Set(e))},9940:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9021)),o=i(r(2029));t.default=(e,t,r)=>n.default.createReadStream(e).pipe(o.default.Parse()).on("entry",e=>{e.path===t?e.pipe(n.default.createWriteStream(r)):e.autodrain()}).promise()}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports.id=338,exports.ids=[338],exports.modules={3605:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Image",{enumerable:!0,get:function(){return _}});let n=r(8678),i=r(9817),o=r(8732),s=i._(r(2015)),l=n._(r(2326)),a=n._(r(9504)),u=r(6241),d=r(9468),c=r(4834);r(9484);let f=r(5797),p=n._(r(3677)),g=r(3906),m={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function h(e,t,r,n,i,o,s){let l=null==e?void 0:e.src;e&&e["data-loaded-src"]!==l&&(e["data-loaded-src"]=l,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&i(!0),null==r?void 0:r.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let n=!1,i=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>n,isPropagationStopped:()=>i,persist:()=>{},preventDefault:()=>{n=!0,t.preventDefault()},stopPropagation:()=>{i=!0,t.stopPropagation()}})}(null==n?void 0:n.current)&&n.current(e)}}))}function v(e){return s.use?{fetchPriority:e}:{fetchpriority:e}}globalThis.__NEXT_IMAGE_IMPORTED=!0;let y=(0,s.forwardRef)((e,t)=>{let{src:r,srcSet:n,sizes:i,height:l,width:a,decoding:u,className:d,style:c,fetchPriority:f,placeholder:p,loading:m,unoptimized:y,fill:b,onLoadRef:_,onLoadingCompleteRef:w,setBlurComplete:x,setShowAltText:j,sizesInput:S,onLoad:P,onError:O,...M}=e,C=(0,s.useCallback)(e=>{e&&(O&&(e.src=e.src),e.complete&&h(e,p,_,w,x,y,S))},[r,p,_,w,x,O,y,S]),z=(0,g.useMergedRef)(t,C);return(0,o.jsx)("img",{...M,...v(f),loading:m,width:a,height:l,decoding:u,"data-nimg":b?"fill":"1",className:d,style:c,sizes:i,srcSet:n,src:r,ref:z,onLoad:e=>{h(e.currentTarget,p,_,w,x,y,S)},onError:e=>{j(!0),"empty"!==p&&x(!0),O&&O(e)}})});function b(e){let{isAppRouter:t,imgAttributes:r}=e,n={as:"image",imageSrcSet:r.srcSet,imageSizes:r.sizes,crossOrigin:r.crossOrigin,referrerPolicy:r.referrerPolicy,...v(r.fetchPriority)};return t&&l.default.preload?(l.default.preload(r.src,n),null):(0,o.jsx)(a.default,{children:(0,o.jsx)("link",{rel:"preload",href:r.srcSet?void 0:r.src,...n},"__nimg-"+r.src+r.srcSet+r.sizes)})}let _=(0,s.forwardRef)((e,t)=>{let r=(0,s.useContext)(f.RouterContext),n=(0,s.useContext)(c.ImageConfigContext),i=(0,s.useMemo)(()=>{var e;let t=m||n||d.imageConfigDefault,r=[...t.deviceSizes,...t.imageSizes].sort((e,t)=>e-t),i=t.deviceSizes.sort((e,t)=>e-t),o=null==(e=t.qualities)?void 0:e.sort((e,t)=>e-t);return{...t,allSizes:r,deviceSizes:i,qualities:o}},[n]),{onLoad:l,onLoadingComplete:a}=e,g=(0,s.useRef)(l);(0,s.useEffect)(()=>{g.current=l},[l]);let h=(0,s.useRef)(a);(0,s.useEffect)(()=>{h.current=a},[a]);let[v,_]=(0,s.useState)(!1),[w,x]=(0,s.useState)(!1),{props:j,meta:S}=(0,u.getImgProps)(e,{defaultLoader:p.default,imgConf:i,blurComplete:v,showAltText:w});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(y,{...j,unoptimized:S.unoptimized,placeholder:S.placeholder,fill:S.fill,onLoadRef:g,onLoadingCompleteRef:h,setBlurComplete:_,setShowAltText:x,sizesInput:e.sizes,ref:t}),S.priority?(0,o.jsx)(b,{isAppRouter:!r,imgAttributes:j}):null]})});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3906:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useMergedRef",{enumerable:!0,get:function(){return i}});let n=r(2015);function i(e,t){let r=(0,n.useRef)(()=>{}),i=(0,n.useRef)(()=>{});return(0,n.useMemo)(()=>e&&t?n=>{null===n?(r.current(),i.current()):(r.current=o(e,n),i.current=o(t,n))}:e||t,[e,t])}function o(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6532:(e,t)=>{"use strict";function r(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isInAmpMode",{enumerable:!0,get:function(){return r}})},6241:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImgProps",{enumerable:!0,get:function(){return l}}),r(9484);let n=r(1192),i=r(9468);function o(e){return void 0!==e.default}function s(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function l(e,t){var r,l;let a,u,d,{src:c,sizes:f,unoptimized:p=!1,priority:g=!1,loading:m,className:h,quality:v,width:y,height:b,fill:_=!1,style:w,overrideSrc:x,onLoad:j,onLoadingComplete:S,placeholder:P="empty",blurDataURL:O,fetchPriority:M,decoding:C="async",layout:z,objectFit:E,objectPosition:I,lazyBoundary:R,lazyRoot:k,...A}=e,{imgConf:D,showAltText:T,blurComplete:N,defaultLoader:U}=t,F=D||i.imageConfigDefault;if("allSizes"in F)a=F;else{let e=[...F.deviceSizes,...F.imageSizes].sort((e,t)=>e-t),t=F.deviceSizes.sort((e,t)=>e-t),n=null==(r=F.qualities)?void 0:r.sort((e,t)=>e-t);a={...F,allSizes:e,deviceSizes:t,qualities:n}}if(void 0===U)throw Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config");let L=A.loader||U;delete A.loader,delete A.srcSet;let W="__next_img_default"in L;if(W){if("custom"===a.loader)throw Error('Image with src "'+c+'" is missing "loader" prop.\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader')}else{let e=L;L=t=>{let{config:r,...n}=t;return e(n)}}if(z){"fill"===z&&(_=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[z];e&&(w={...w,...e});let t={responsive:"100vw",fill:"100vw"}[z];t&&!f&&(f=t)}let G="",B=s(y),q=s(b);if((l=c)&&"object"==typeof l&&(o(l)||void 0!==l.src)){let e=o(c)?c.default:c;if(!e.src)throw Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received "+JSON.stringify(e));if(!e.height||!e.width)throw Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received "+JSON.stringify(e));if(u=e.blurWidth,d=e.blurHeight,O=O||e.blurDataURL,G=e.src,!_){if(B||q){if(B&&!q){let t=B/e.width;q=Math.round(e.height*t)}else if(!B&&q){let t=q/e.height;B=Math.round(e.width*t)}}else B=e.width,q=e.height}}let H=!g&&("lazy"===m||void 0===m);(!(c="string"==typeof c?c:G)||c.startsWith("data:")||c.startsWith("blob:"))&&(p=!0,H=!1),a.unoptimized&&(p=!0),W&&!a.dangerouslyAllowSVG&&c.split("?",1)[0].endsWith(".svg")&&(p=!0);let V=s(v),$=Object.assign(_?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:E,objectPosition:I}:{},T?{}:{color:"transparent"},w),J=N||"empty"===P?null:"blur"===P?'url("data:image/svg+xml;charset=utf-8,'+(0,n.getImageBlurSvg)({widthInt:B,heightInt:q,blurWidth:u,blurHeight:d,blurDataURL:O||"",objectFit:$.objectFit})+'")':'url("'+P+'")',X=J?{backgroundSize:$.objectFit||"cover",backgroundPosition:$.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:J}:{},Y=function(e){let{config:t,src:r,unoptimized:n,width:i,quality:o,sizes:s,loader:l}=e;if(n)return{src:r,srcSet:void 0,sizes:void 0};let{widths:a,kind:u}=function(e,t,r){let{deviceSizes:n,allSizes:i}=e;if(r){let e=/(^|\s)(1?\d?\d)vw/g,t=[];for(let n;n=e.exec(r);n)t.push(parseInt(n[2]));if(t.length){let e=.01*Math.min(...t);return{widths:i.filter(t=>t>=n[0]*e),kind:"w"}}return{widths:i,kind:"w"}}return"number"!=typeof t?{widths:n,kind:"w"}:{widths:[...new Set([t,2*t].map(e=>i.find(t=>t>=e)||i[i.length-1]))],kind:"x"}}(t,i,s),d=a.length-1;return{sizes:s||"w"!==u?s:"100vw",srcSet:a.map((e,n)=>l({config:t,src:r,quality:o,width:e})+" "+("w"===u?e:n+1)+u).join(", "),src:l({config:t,src:r,quality:o,width:a[d]})}}({config:a,src:c,unoptimized:p,width:B,quality:V,sizes:f,loader:L});return{props:{...A,loading:H?"lazy":m,fetchPriority:M,width:B,height:q,decoding:C,className:h,style:{...$,...X},sizes:Y.sizes,srcSet:Y.srcSet,src:x||Y.src},meta:{unoptimized:p,priority:g,placeholder:P,fill:_}}}},9504:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return m},defaultHead:function(){return c}});let n=r(8678),i=r(9817),o=r(8732),s=i._(r(2015)),l=n._(r(5119)),a=r(3772),u=r(3484),d=r(6532);function c(e){void 0===e&&(e=!1);let t=[(0,o.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,o.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}function f(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===s.default.Fragment?e.concat(s.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}r(9484);let p=["name","httpEquiv","charSet","itemProp"];function g(e,t){let{inAmpMode:r}=t;return e.reduce(f,[]).reverse().concat(c(r).reverse()).filter(function(){let e=new Set,t=new Set,r=new Set,n={};return i=>{let o=!0,s=!1;if(i.key&&"number"!=typeof i.key&&i.key.indexOf("$")>0){s=!0;let t=i.key.slice(i.key.indexOf("$")+1);e.has(t)?o=!1:e.add(t)}switch(i.type){case"title":case"base":t.has(i.type)?o=!1:t.add(i.type);break;case"meta":for(let e=0,t=p.length;e<t;e++){let t=p[e];if(i.props.hasOwnProperty(t)){if("charSet"===t)r.has(t)?o=!1:r.add(t);else{let e=i.props[t],r=n[t]||new Set;("name"!==t||!s)&&r.has(e)?o=!1:(r.add(e),n[t]=r)}}}}return o}}()).reverse().map((e,t)=>{let n=e.key||t;if(process.env.__NEXT_OPTIMIZE_FONTS&&!r&&"link"===e.type&&e.props.href&&["https://fonts.googleapis.com/css","https://use.typekit.net/"].some(t=>e.props.href.startsWith(t))){let t={...e.props||{}};return t["data-href"]=t.href,t.href=void 0,t["data-optimized-fonts"]=!0,s.default.cloneElement(e,t)}return s.default.cloneElement(e,{key:n})})}let m=function(e){let{children:t}=e,r=(0,s.useContext)(a.AmpStateContext),n=(0,s.useContext)(u.HeadManagerContext);return(0,o.jsx)(l.default,{reduceComponentsToState:g,headManager:n,inAmpMode:(0,d.isInAmpMode)(r),children:t})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1192:(e,t)=>{"use strict";function r(e){let{widthInt:t,heightInt:r,blurWidth:n,blurHeight:i,blurDataURL:o,objectFit:s}=e,l=n?40*n:t,a=i?40*i:r,u=l&&a?"viewBox='0 0 "+l+" "+a+"'":"";return"%3Csvg xmlns='http://www.w3.org/2000/svg' "+u+"%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='"+(u?"none":"contain"===s?"xMidYMid":"cover"===s?"xMidYMid slice":"none")+"' style='filter: url(%23b);' href='"+o+"'/%3E%3C/svg%3E"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImageBlurSvg",{enumerable:!0,get:function(){return r}})},9468:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{VALID_LOADERS:function(){return r},imageConfigDefault:function(){return n}});let r=["default","imgix","cloudinary","akamai","custom"],n={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:60,formats:["image/webp"],dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:void 0,unoptimized:!1}},6061:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return a},getImageProps:function(){return l}});let n=r(8678),i=r(6241),o=r(3605),s=n._(r(3677));function l(e){let{props:t}=(0,i.getImgProps)(e,{defaultLoader:s.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let a=o.Image},3677:(e,t)=>{"use strict";function r(e){var t;let{config:r,src:n,width:i,quality:o}=e,s=o||(null==(t=r.qualities)?void 0:t.reduce((e,t)=>Math.abs(t-75)<Math.abs(e-75)?t:e))||75;return r.path+"?url="+encodeURIComponent(n)+"&w="+i+"&q="+s+(n.startsWith("/_next/static/media/"),"")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n}}),r.__next_img_default=!0;let n=r},5119:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let n=r(2015),i=()=>{},o=()=>{};function s(e){var t;let{headManager:r,reduceComponentsToState:s}=e;function l(){if(r&&r.mountedInstances){let t=n.Children.toArray(Array.from(r.mountedInstances).filter(Boolean));r.updateHead(s(t,e))}}return null==r||null==(t=r.mountedInstances)||t.add(e.children),l(),i(()=>{var t;return null==r||null==(t=r.mountedInstances)||t.add(e.children),()=>{var t;null==r||null==(t=r.mountedInstances)||t.delete(e.children)}}),i(()=>(r&&(r._pendingUpdate=l),()=>{r&&(r._pendingUpdate=l)})),o(()=>(r&&r._pendingUpdate&&(r._pendingUpdate(),r._pendingUpdate=null),()=>{r&&r._pendingUpdate&&(r._pendingUpdate(),r._pendingUpdate=null)})),null}},9484:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},3772:(e,t,r)=>{"use strict";e.exports=r(1350).vendored.contexts.AmpContext},3484:(e,t,r)=>{"use strict";e.exports=r(1350).vendored.contexts.HeadManagerContext},4834:(e,t,r)=>{"use strict";e.exports=r(1350).vendored.contexts.ImageConfigContext},5797:(e,t,r)=>{"use strict";e.exports=r(1350).vendored.contexts.RouterContext},7338:(e,t,r)=>{e.exports=r(6061)},9817:(e,t)=>{"use strict";function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}t._=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var i={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&Object.prototype.hasOwnProperty.call(e,s)){var l=o?Object.getOwnPropertyDescriptor(e,s):null;l&&(l.get||l.set)?Object.defineProperty(i,s,l):i[s]=e[s]}return i.default=e,n&&n.set(e,i),i}}};
|