@scrabble-solver/scrabble-solver 2.13.13 → 2.14.0

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 (47) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +5 -5
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/cache/eslint/.cache_8dgz12 +1 -1
  5. package/.next/cache/webpack/client-production/0.pack +0 -0
  6. package/.next/cache/webpack/client-production/index.pack +0 -0
  7. package/.next/cache/webpack/client-production/index.pack.old +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/edge-server-production/index.pack.old +0 -0
  11. package/.next/cache/webpack/server-production/0.pack +0 -0
  12. package/.next/cache/webpack/server-production/index.pack +0 -0
  13. package/.next/cache/webpack/server-production/index.pack.old +0 -0
  14. package/.next/prerender-manifest.js +1 -1
  15. package/.next/prerender-manifest.json +1 -1
  16. package/.next/routes-manifest.json +1 -1
  17. package/.next/server/chunks/807.js +1 -1
  18. package/.next/server/middleware-build-manifest.js +1 -1
  19. package/.next/server/pages/404.html +1 -1
  20. package/.next/server/pages/500.html +1 -1
  21. package/.next/server/pages/index.html +1 -1
  22. package/.next/server/pages/index.js +1 -1
  23. package/.next/server/pages/index.json +1 -1
  24. package/.next/server/pages-manifest.json +1 -1
  25. package/.next/static/{qwJjm2FeDHHGY92CY5oQQ → TxfjxrH5h31sPQxPhrJzG}/_buildManifest.js +1 -1
  26. package/.next/static/chunks/pages/{_app-42ce6b4032e931ff.js → _app-2912876c7b6e698e.js} +2 -2
  27. package/.next/static/chunks/pages/index-86d9ad372c48c8b7.js +1 -0
  28. package/.next/static/css/{2adc9736d823979b.css → 14625ff7b4d265d0.css} +1 -1
  29. package/.next/trace +45 -45
  30. package/package.json +12 -12
  31. package/src/components/Alert/Alert.tsx +1 -1
  32. package/src/components/Board/BoardPure.tsx +1 -1
  33. package/src/components/Button/Button.tsx +1 -1
  34. package/src/components/IconButton/IconButton.tsx +1 -1
  35. package/src/components/IconButton/Link.tsx +1 -1
  36. package/src/components/Keys/Arrows/Arrows.tsx +4 -4
  37. package/src/components/NotFound/NotFound.tsx +1 -1
  38. package/src/components/Radio/Radio.tsx +1 -1
  39. package/src/components/Results/HeaderButton.tsx +1 -1
  40. package/src/components/Results/Results.module.scss +5 -8
  41. package/src/components/Solver/components/ResultCandidatePicker/ResultCandidatePicker.tsx +1 -1
  42. package/src/components/Tile/TilePure.tsx +1 -1
  43. package/src/modals/MenuModal/MenuModal.tsx +1 -1
  44. package/src/modals/SettingsModal/components/LocaleSetting/LocaleSetting.tsx +1 -1
  45. package/src/modals/WordsModal/WordsModal.tsx +2 -2
  46. package/.next/static/chunks/pages/index-3718075f2ba2220c.js +0 -1
  47. /package/.next/static/{qwJjm2FeDHHGY92CY5oQQ → TxfjxrH5h31sPQxPhrJzG}/_ssgManifest.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/scrabble-solver",
3
- "version": "2.13.13",
3
+ "version": "2.14.0",
4
4
  "description": "Scrabble Solver 2 - App",
5
5
  "engines": {
6
6
  "node": ">=16"
@@ -27,16 +27,16 @@
27
27
  "start": "env-cmd next start -p 3333"
28
28
  },
29
29
  "dependencies": {
30
- "@floating-ui/react": "^0.26.19",
30
+ "@floating-ui/react": "^0.26.20",
31
31
  "@kamilmielnik/trie": "^3.0.0",
32
- "@reduxjs/toolkit": "^2.2.6",
33
- "@scrabble-solver/configs": "^2.13.13",
34
- "@scrabble-solver/constants": "^2.13.13",
35
- "@scrabble-solver/dictionaries": "^2.13.13",
36
- "@scrabble-solver/logger": "^2.13.13",
37
- "@scrabble-solver/solver": "^2.13.13",
38
- "@scrabble-solver/types": "^2.13.13",
39
- "@scrabble-solver/word-definitions": "^2.13.13",
32
+ "@reduxjs/toolkit": "^2.2.7",
33
+ "@scrabble-solver/configs": "^2.14.0",
34
+ "@scrabble-solver/constants": "^2.14.0",
35
+ "@scrabble-solver/dictionaries": "^2.14.0",
36
+ "@scrabble-solver/logger": "^2.14.0",
37
+ "@scrabble-solver/solver": "^2.14.0",
38
+ "@scrabble-solver/types": "^2.14.0",
39
+ "@scrabble-solver/word-definitions": "^2.14.0",
40
40
  "classnames": "^2.5.1",
41
41
  "env-cmd": "^10.1.0",
42
42
  "include-media": "^2.0.0",
@@ -52,7 +52,7 @@
52
52
  "react-window": "^1.8.10",
53
53
  "redux-saga": "^1.3.0",
54
54
  "store2": "^2.14.3",
55
- "use-debounce": "^10.0.1",
55
+ "use-debounce": "^10.0.2",
56
56
  "workbox-expiration": "^7.1.0",
57
57
  "workbox-precaching": "^7.1.0",
58
58
  "workbox-routing": "^7.1.0",
@@ -73,5 +73,5 @@
73
73
  "@types/redux-saga": "^0.10.5",
74
74
  "sass": "^1.77.8"
75
75
  },
76
- "gitHead": "8cfc206dec35314cd879a3ce8f9b0c60c3fd231a"
76
+ "gitHead": "013ecd9af1dcd04b1426358221c8131cdafd7331"
77
77
  }
@@ -32,7 +32,7 @@ const Alert: FunctionComponent<Props> = ({ children, className, variant, ...prop
32
32
  {...props}
33
33
  >
34
34
  <div className={styles.iconContainer}>
35
- <Icon className={styles.icon} />
35
+ <Icon aria-hidden="true" className={styles.icon} role="img" />
36
36
  </div>
37
37
 
38
38
  <div className={styles.content}>{children}</div>
@@ -108,7 +108,7 @@ const BoardPure = forwardRef<HTMLDivElement, Props>(
108
108
  }}
109
109
  >
110
110
  <div className={styles.iconBackground} />
111
- <Icon className={styles.icon} />
111
+ <Icon aria-hidden="true" className={styles.icon} role="img" />
112
112
  </div>
113
113
  );
114
114
  })}
@@ -34,7 +34,7 @@ const Button: FunctionComponent<Props> = ({
34
34
  {...props}
35
35
  >
36
36
  <span className={styles.content}>
37
- {Icon && <Icon className={classNames(styles.icon, iconClassName)} />}
37
+ {Icon && <Icon aria-hidden="true" className={classNames(styles.icon, iconClassName)} role="img" />}
38
38
  {children && <span className={styles.label}>{children}</span>}
39
39
  </span>
40
40
  </button>
@@ -19,7 +19,7 @@ const IconButton: FunctionComponent<Props> = ({ className, Icon, tooltip, ...pro
19
19
  <Tooltip tooltip={tooltip}>
20
20
  <button className={classNames(styles.iconButton, className)} type="button" {...props}>
21
21
  <span className={styles.content}>
22
- <Icon className={styles.icon} />
22
+ <Icon aria-hidden="true" className={styles.icon} role="img" />
23
23
  </span>
24
24
  </button>
25
25
  </Tooltip>
@@ -18,7 +18,7 @@ const Link: FunctionComponent<Props> = ({ className, Icon, tooltip, ...props })
18
18
  <Tooltip tooltip={tooltip}>
19
19
  <a className={classNames(styles.iconButton, className)} {...props}>
20
20
  <span className={styles.content}>
21
- <Icon className={styles.icon} />
21
+ <Icon aria-hidden="true" className={styles.icon} role="img" />
22
22
  </span>
23
23
  </a>
24
24
  </Tooltip>
@@ -14,16 +14,16 @@ interface Props {
14
14
  const Arrows: FunctionComponent<Props> = ({ className }) => (
15
15
  <div className={classNames(styles.arrows, className)}>
16
16
  <Key className={classNames(styles.arrow, styles.left)}>
17
- <ArrowLeft />
17
+ <ArrowLeft aria-hidden="true" role="img" />
18
18
  </Key>
19
19
  <Key className={classNames(styles.arrow, styles.up)}>
20
- <ArrowUp />
20
+ <ArrowUp aria-hidden="true" role="img" />
21
21
  </Key>
22
22
  <Key className={classNames(styles.arrow, styles.right)}>
23
- <ArrowRight />
23
+ <ArrowRight aria-hidden="true" role="img" />
24
24
  </Key>
25
25
  <Key className={classNames(styles.arrow, styles.down)}>
26
- <ArrowDown />
26
+ <ArrowDown aria-hidden="true" role="img" />
27
27
  </Key>
28
28
  </div>
29
29
  );
@@ -11,7 +11,7 @@ const CONTENT = [['HTTP', '404']];
11
11
  const NotFound: FunctionComponent = () => (
12
12
  <div className={styles.notFound}>
13
13
  <a className={styles.link} href="/">
14
- <DashCircleFill className={styles.icon} />
14
+ <DashCircleFill aria-hidden="true" className={styles.icon} role="img" />
15
15
  <PlainTiles className={styles.tiles} content={CONTENT} />
16
16
  </a>
17
17
  </div>
@@ -30,7 +30,7 @@ const Radio: FunctionComponent<Props> = ({ checked, children, className, disable
30
30
  onChange={onChange}
31
31
  />
32
32
 
33
- <div className={styles.icon} />
33
+ <div aria-hidden="true" className={styles.icon} role="img" />
34
34
 
35
35
  <div className={styles.content}>{children}</div>
36
36
  </label>
@@ -37,7 +37,7 @@ const HeaderButton = ({ className, Icon, id, translationKey, style }: Props): Re
37
37
  onClick={handleClick}
38
38
  >
39
39
  <span className={styles.cell}>
40
- {Icon && <Icon className={styles.headerButtonIcon} />}
40
+ {Icon && <Icon aria-hidden="true" className={styles.headerButtonIcon} role="img" />}
41
41
 
42
42
  {!Icon && <span className={styles.headerButtonLabel}>{translate(translationKey)}</span>}
43
43
 
@@ -56,7 +56,9 @@ $row-padding-horizontal: calc(var(--spacing--m) + var(--spacing--s));
56
56
  cursor: pointer;
57
57
 
58
58
  text-transform: uppercase;
59
- transition: var(--transition);
59
+ transition:
60
+ background-color var(--transition--duration) var(--transition--easing),
61
+ color var(--transition--duration) var(--transition--easing);
60
62
  background-color: var(--color--background);
61
63
  height: 100%;
62
64
 
@@ -138,6 +140,7 @@ $row-padding-horizontal: calc(var(--spacing--m) + var(--spacing--s));
138
140
 
139
141
  .word {
140
142
  @include ellipsis;
143
+
141
144
  display: flex;
142
145
  }
143
146
  }
@@ -147,17 +150,12 @@ $row-padding-horizontal: calc(var(--spacing--m) + var(--spacing--s));
147
150
  align-items: center;
148
151
  justify-content: center;
149
152
  height: 100%;
150
- padding: 0 var(--spacing--s);
151
153
  gap: var(--spacing--s);
152
154
  line-height: var(--results--item--height);
153
155
 
154
- &.word,
156
+ .result &.word,
155
157
  .headerButton.word & {
156
158
  justify-content: flex-start;
157
- }
158
-
159
- .result &.word:first-child,
160
- .headerButton.word:first-child & {
161
159
  padding-inline-start: $row-padding-horizontal;
162
160
  }
163
161
 
@@ -183,7 +181,6 @@ $row-padding-horizontal: calc(var(--spacing--m) + var(--spacing--s));
183
181
  $width: 80px;
184
182
 
185
183
  flex: 1 0 $width;
186
- max-width: $width;
187
184
  font-weight: bold;
188
185
  }
189
186
 
@@ -90,7 +90,7 @@ const ResultCandidatePicker: FunctionComponent<Props> = ({ className, onResultCl
90
90
 
91
91
  <div className={styles.iconContainer}>
92
92
  {isLoading && <Spinner className={styles.loading} />}
93
- {!isLoading && <ChevronDown className={styles.icon} />}
93
+ {!isLoading && <ChevronDown aria-hidden="true" className={styles.icon} role="img" />}
94
94
  </div>
95
95
  </button>
96
96
 
@@ -107,7 +107,7 @@ const TilePure: FunctionComponent<Props> = ({
107
107
  </span>
108
108
  )}
109
109
 
110
- {!isValid && <ExclamationSquareFill className={styles.alert} />}
110
+ {!isValid && <ExclamationSquareFill aria-hidden="true" className={styles.alert} role="img" />}
111
111
  </div>
112
112
  );
113
113
 
@@ -64,7 +64,7 @@ const MenuModal: FunctionComponent<Props> = ({
64
64
  <Button aria-label={translate('settings')} className={styles.button} Icon={Cog} onClick={onShowSettings}>
65
65
  <div className={styles.settings}>
66
66
  <div className={styles.settingsLabel}>{translate('settings')}</div>
67
- <Icon className={styles.flag} />
67
+ <Icon aria-hidden="true" className={styles.flag} role="img" />
68
68
  </div>
69
69
  </Button>
70
70
  </Modal>
@@ -40,7 +40,7 @@ const LocaleSetting: FunctionComponent<Props> = ({ className, disabled }) => {
40
40
  onChange={handleChange}
41
41
  >
42
42
  <span className={styles.label}>
43
- <Icon className={styles.flag} />
43
+ <Icon aria-hidden="true" className={styles.flag} role="img" />
44
44
 
45
45
  <span>{option.label}</span>
46
46
  </span>
@@ -31,7 +31,7 @@ const WordsModal: FunctionComponent<Props> = ({ className, isOpen, onClose }) =>
31
31
  >
32
32
  {invalidWords.map((word, index) => (
33
33
  <div className={styles.word} key={index}>
34
- <Cross className={classNames(styles.icon, styles.invalid)} /> {word}
34
+ <Cross aria-hidden="true" className={classNames(styles.icon, styles.invalid)} role="img" /> {word}
35
35
  </div>
36
36
  ))}
37
37
  </Modal.Section>
@@ -47,7 +47,7 @@ const WordsModal: FunctionComponent<Props> = ({ className, isOpen, onClose }) =>
47
47
  >
48
48
  {validWords.map((word, index) => (
49
49
  <div className={styles.word} key={index}>
50
- <Check className={classNames(styles.icon, styles.valid)} /> {word}
50
+ <Check aria-hidden="true" className={classNames(styles.icon, styles.valid)} role="img" /> {word}
51
51
  </div>
52
52
  ))}
53
53
  </Modal.Section>
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[405],{7314:function(e,n,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/",function(){return t(8025)}])},8025:function(e,n,t){"use strict";t.r(n),t.d(n,{__N_SSG:function(){return ew},default:function(){return eC}});var a=t(2322),i=t(2784),s=t(7149),r=t.n(s),l=t(8702),o=t(987),c=t(914),d=t(6303),u=t(9712),h=t(4446),p=t.n(h),g=(0,i.memo)(e=>{let{className:n,isOpen:t,onClose:i}=e,s=(0,u.qM)();return(0,a.jsx)(o.u_,{className:n,isOpen:t,title:s("dictionary"),onClose:i,children:(0,a.jsxs)("div",{className:p().content,children:[(0,a.jsx)(o.Xy,{className:p().dictionary}),(0,a.jsx)(o.Z$,{className:p().dictionaryInput})]})})}),v=t(2524),m=t.n(v),x=t(5301),f=t.n(x),b=e=>{let{className:n,description:t,mapping:s}=e;return(0,a.jsxs)("div",{className:m()(f().mapping,n),children:[(0,a.jsx)("h3",{className:f().description,children:t}),(0,a.jsx)("div",{className:f().keys,children:s.map((e,n)=>(0,a.jsxs)(i.Fragment,{children:[(0,a.jsx)("div",{className:f().group,children:Array.isArray(e)?(0,a.jsxs)(a.Fragment,{children:[e[0],(0,a.jsx)("span",{className:f().plus,children:"+"}),e[1]]}):e}),s.length>1&&n<s.length-1&&(0,a.jsx)("span",{className:f().slash,children:"/"})]},n))})]})},j=(0,i.memo)(e=>{let{className:n,isOpen:t,onClose:i}=e,s=(0,u.qM)(),r=(0,u.ix)(u.$o);return(0,a.jsxs)(o.u_,{className:n,isOpen:t,title:s("keyMap"),onClose:i,children:[(0,a.jsxs)(o.u_.Section,{label:s("keyMap.board-and-rack"),title:s("keyMap.board-and-rack"),children:[(0,a.jsx)(b,{description:s("keyMap.board-and-rack.navigate"),mapping:[(0,a.jsx)(o.ki,{},"arrows")]}),(0,a.jsx)(b,{description:s("keyMap.board-and-rack.remove-tile"),mapping:[(0,a.jsx)(o.v6,{},"del"),(0,a.jsx)(o.kW,{},"backspace")]}),(0,a.jsx)(b,{description:s("keyMap.board-and-rack.submit"),mapping:[(0,a.jsx)(o.Ce,{},"del")]}),r.twoCharacterTiles.length>0&&(0,a.jsx)(b,{description:s("keyMap.board-and-rack.insert-two-letter-tile"),mapping:[[(0,a.jsx)(o.e1,{},"ctrl"),(0,a.jsx)(a.Fragment,{children:r.twoCharacterTiles.map(e=>{let[n]=e;return(0,a.jsx)(o.sr,{children:n.toUpperCase()},n)})})]]})]}),(0,a.jsxs)(o.u_.Section,{label:s("keyMap.board"),title:s("keyMap.board"),children:[(0,a.jsx)(b,{description:s("keyMap.board.toggle-direction"),mapping:[(0,a.jsx)(o.ki,{},"arrows")]}),(0,a.jsx)(b,{description:s("keyMap.board.toggle-blank"),mapping:[(0,a.jsx)(o.T,{},"space")]}),(0,a.jsx)(b,{description:s("keyMap.board.toggle-cell-filter"),mapping:[[(0,a.jsx)(o.e1,{},"ctrl"),(0,a.jsx)(o.sr,{children:"G"},"g")]]})]}),(0,a.jsx)(o.u_.Section,{label:s("keyMap.rack"),title:s("keyMap.rack"),children:(0,a.jsx)(b,{description:s("keyMap.rack.insert-blank"),mapping:[(0,a.jsx)(o.T,{},"space")]})})]})}),y=t(8630),k=t(5280),w=t(5347),C=t.n(w),N=(0,i.memo)(e=>{let{className:n,isOpen:t,onClose:i,onShowDictionary:s,onShowRemainingTiles:r,onShowSettings:l,onShowWords:c}=e,h=(0,u.qM)(),p=(0,u.ix)(u.fN),{Icon:g}=d.q[p];return(0,a.jsxs)(o.u_,{className:n,isOpen:t,title:h("menu"),onClose:i,children:[(0,a.jsx)(o.zx,{"aria-label":h("remaining-tiles"),className:C().button,Icon:y.xy,onClick:r,children:h("remaining-tiles")}),(0,a.jsx)(o.zx,{"aria-label":h("words"),className:C().button,Icon:y.Kz,onClick:c,children:h("words")}),(0,a.jsx)(o.zx,{"aria-label":h("dictionary"),className:C().button,Icon:y.PP,onClick:s,children:h("dictionary")}),(0,a.jsx)(o.zx.Link,{"aria-label":h("github"),className:C().button,href:k.h4,Icon:y.Ey,rel:"noopener noreferrer",target:"_blank",children:h("github")}),(0,a.jsx)(o.zx,{"aria-label":h("settings"),className:C().button,Icon:y.Oz,onClick:l,children:(0,a.jsxs)("div",{className:C().settings,children:[(0,a.jsx)("div",{className:C().settingsLabel,children:h("settings")}),(0,a.jsx)(g,{className:C().flag})]})})]})}),M=t(7833),S=t(7618),E=t(9283),I=t.n(E),L=e=>{let{tile:n}=e,t=(0,u.ix)(u.fN),{direction:i}=d.q[t],{character:s,count:r,usedCount:l}=n,c=r-l,h=(0,u.ix)(e=>(0,u.Or)(e,s)),p="ltr"===i?c:r,g="ltr"===i?r:c;return(0,a.jsxs)("div",{className:m()(I().character,{[I().finished]:c<=0,[I().overused]:c<0}),children:[(0,a.jsx)(o.n9,{"aria-label":s,character:s,className:I().tile,disabled:!0,isBlank:s===S.BLANK,isValid:c>=0,points:h,raised:!0,size:k.mM}),(0,a.jsx)(o.Ex,{className:I().remaining,max:r,style:{width:k.mM},value:c}),(0,a.jsxs)("div",{className:I().count,children:[p.toLocaleString(t)," / ",g.toLocaleString(t)]})]})},O=t(9900),T=t.n(O),P=(0,i.memo)(e=>{let{className:n,isOpen:t,onClose:i}=e,s=(0,u.qM)(),r=(0,u.ix)(u.fN),l=(0,u.ix)(u.Yj),{tileFontSize:c}=(0,M.vc)(k.mM),{direction:h}=d.q[r];return(0,a.jsx)(o.u_,{className:n,isOpen:t,title:s("remaining-tiles"),onClose:i,children:l.map(e=>{let{remainingCount:n,tiles:t,translationKey:i,totalCount:l}=e;return(0,a.jsx)(o.u_.Section,{label:s(i),title:(0,a.jsxs)("span",{className:T().title,children:[(0,a.jsx)("span",{children:s(i)}),(0,a.jsxs)(o.Ct,{className:T().badge,children:[("ltr"===h?n:l).toLocaleString(r)," / ",("ltr"===h?l:n).toLocaleString(r)]})]}),children:(0,a.jsx)("div",{className:T().content,style:{fontSize:c},children:t.map(e=>(0,a.jsx)("div",{className:T().character,children:(0,a.jsx)(L,{tile:e})},e.character))})},i)})})}),W=t(2306),R=t.n(W),q=(0,i.memo)(e=>{let{className:n,isOpen:t,onClose:s}=e,r=(0,l.I0)(),d=(0,u.qM)(),{showResultsInModal:h}=(0,c.Ft)(),p=(0,u.ix)(u.x5),g=(0,u.ix)(u.Xk),v=p?p.findIndex(e=>e.id===(null==g?void 0:g.id)):-1,m=(0,i.useMemo)(()=>({onClick:e=>{e===g?s():r(u._C.actions.changeResultCandidate(e))}}),[r,s,g]);return(0,i.useEffect)(()=>{t&&!h&&s()},[t,s,h]),(0,a.jsx)(o.u_,{className:n,footer:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.zx,{"aria-label":d("results.insert"),disabled:!g,Icon:y.Jr,tooltip:d("results.insert"),variant:"primary",onClick:()=>{g&&r(u._C.actions.applyResult(g)),s()},children:d("results.insert")}),(0,a.jsx)(o.zx,{"aria-label":d("results.preview"),disabled:!g,Icon:y.YO,tooltip:d("results.preview"),onClick:()=>{s()},children:d("results.preview")})]}),isOpen:t,title:d("results"),onClose:s,children:(0,a.jsxs)("div",{className:R().content,children:[(0,a.jsx)(o.u9,{callbacks:m,className:R().results,highlightedIndex:-1===v?void 0:v}),(0,a.jsx)(o.Xy,{className:R().dictionary})]})})}),G=t(721),z=t.n(G);let A="null",U=e=>{if("left"===e||"right"===e)return e;if(e===A)return null;throw Error('"'.concat(e,'" is not valid. Should be "left", "right", or "').concat(A,'"'))};var X=e=>{let{className:n,disabled:t}=e,i=(0,l.I0)(),s=(0,u.qM)(),r=(0,u.ix)(u.uz),c=[{label:s("settings.autoGroupTiles.left"),value:"left"},{label:s("settings.autoGroupTiles.right"),value:"right"},{label:s("settings.autoGroupTiles.null"),value:A}],d=e=>{let n=U(e.target.value);i(u.xj.actions.changeAutoGroupTiles(n))};return(0,a.jsx)("div",{className:n,children:c.map(e=>(0,a.jsx)(o.Y8,{checked:r===U(e.value),className:z().option,disabled:t,name:"autoGroupTiles",value:e.value,onChange:d,children:(0,a.jsx)("div",{className:z().label,children:e.label})},e.value))})},Y=t(9418),K=t(4046),F=t(1831),D=t.n(F),V=e=>{let{className:n,disabled:t}=e,i=(0,l.I0)(),s=(0,u.ix)(u.J1),r=(0,u.ix)(u.fN),c=Object.values(Y.games).map(e=>({disabled:!(0,Y.hasConfig)(e.game,r),label:e.name,value:e.game})),d=e=>{(0,K.isGame)(e.target.value)&&i(u.xj.actions.changeGame(e.target.value))};return(0,a.jsx)("div",{className:n,children:c.map(e=>(0,a.jsx)(o.Y8,{checked:s===e.value,className:D().option,disabled:t||e.disabled,name:"game",value:e.value,onChange:d,children:(0,a.jsx)("div",{className:D().label,children:e.label})},e.value))})},H=t(3979),J=t.n(H);let Z=e=>{if("keyboard"===e)return"keyboard";if("touchscreen"===e)return"touchscreen";throw Error('"'.concat(e,'" is not valid. Should be "keyboard" or "touchscreen"'))};var B=e=>{let{className:n,disabled:t}=e,i=(0,l.I0)(),s=(0,u.qM)(),r=(0,u.ix)(u.Ub),c=[{label:s("settings.inputMode.keyboard"),value:"keyboard"},{label:s("settings.inputMode.touchscreen"),value:"touchscreen"}],d=e=>{let n=Z(e.target.value);i(u.xj.actions.changeInputMode(n))};return(0,a.jsx)("div",{className:n,children:c.map(e=>(0,a.jsx)(o.Y8,{checked:r===e.value,className:J().option,disabled:t,name:"inputMode",value:e.value,onChange:d,children:(0,a.jsx)("div",{className:J().label,children:e.label})},e.value))})},Q=t(9743),$=t.n(Q);let ee=Object.values(d.q).sort((e,n)=>e.name.localeCompare(n.name));var en=e=>{let{className:n,disabled:t}=e,i=(0,l.I0)(),s=(0,u.ix)(u.fN),r=e=>{let n=e.target.value;i(u.xj.actions.changeLocale(n))};return(0,a.jsx)("div",{className:n,children:ee.map(e=>{let{Icon:i,...l}=e;return(0,a.jsx)(o.Y8,{checked:s===l.locale,className:m()($().option,n,{[$().checked]:s===l.locale}),disabled:t,name:"locale",value:l.locale,onChange:r,children:(0,a.jsxs)("span",{className:$().label,children:[(0,a.jsx)(i,{className:$().flag}),(0,a.jsx)("span",{children:l.label})]})},l.locale)})})},et=t(8101),ea=t.n(et),ei=e=>{let{className:n,disabled:t}=e,i=(0,l.I0)(),s=(0,u.qM)(),r=(0,u.ix)(u.kX),c=[{label:s("settings.showCoordinates.hidden"),value:"hidden"},{label:s("settings.showCoordinates.original"),value:"original"},{label:s("settings.showCoordinates.alternative"),value:"alternative"}],d=e=>{let n=e.target.value;i(u.xj.actions.changeShowCoordinates(n))};return(0,a.jsx)("div",{className:n,children:c.map(e=>(0,a.jsx)(o.Y8,{checked:String(r)===e.value,className:ea().option,disabled:t,name:"showCoordinates",value:e.value,onChange:d,children:(0,a.jsx)("div",{className:ea().label,children:e.label})},e.value))})},es=(0,i.memo)(e=>{let{className:n,isOpen:t,onClose:i}=e,s=(0,u.qM)(),r=(0,c.YQ)();return(0,a.jsxs)(o.u_,{className:n,isOpen:t,title:s("settings"),onClose:i,children:[(0,a.jsx)(o.u_.Section,{label:s("settings.game"),title:s("settings.game"),children:(0,a.jsx)(V,{disabled:!t})}),(0,a.jsx)(o.u_.Section,{label:s("settings.language"),title:s("settings.language"),children:(0,a.jsx)(en,{disabled:!t})}),(0,a.jsx)(o.u_.Section,{label:s("settings.showCoordinates"),title:s("settings.showCoordinates"),children:(0,a.jsx)(ei,{disabled:!t})}),!r&&(0,a.jsx)(o.u_.Section,{label:s("settings.inputMode"),title:s("settings.inputMode"),children:(0,a.jsx)(B,{disabled:!t})}),(0,a.jsx)(o.u_.Section,{label:s("settings.autoGroupTiles"),title:s("settings.autoGroupTiles"),children:(0,a.jsx)(X,{disabled:!t})})]})}),er=t(3518),el=t.n(er),eo=(0,i.memo)(e=>{let{className:n,isOpen:t,onClose:i}=e,s=(0,u.qM)(),r=(0,u.ix)(u.fN),{invalidWords:l,validWords:c}=(0,u.ix)(u.HM);return(0,a.jsxs)(o.u_,{className:n,isOpen:t,title:s("words"),onClose:i,children:[(0,a.jsx)(o.u_.Section,{label:s("words.invalid"),title:(0,a.jsxs)("span",{className:el().title,children:[(0,a.jsx)("span",{children:s("words.invalid")}),(0,a.jsx)(o.Ct,{className:el().badge,children:l.length.toLocaleString(r)})]}),children:l.map((e,n)=>(0,a.jsxs)("div",{className:el().word,children:[(0,a.jsx)(y.X1,{className:m()(el().icon,el().invalid)})," ",e]},n))}),(0,a.jsx)(o.u_.Section,{label:s("words.valid"),title:(0,a.jsxs)("span",{className:el().title,children:[(0,a.jsx)("span",{children:s("words.valid")}),(0,a.jsx)(o.Ct,{className:el().badge,children:c.length.toLocaleString(r)})]}),children:c.map((e,n)=>(0,a.jsxs)("div",{className:el().word,children:[(0,a.jsx)(y.Jr,{className:m()(el().icon,el().valid)})," ",e]},n))})]})});try{self["workbox:window:7.0.0"]&&_()}catch(e){}function ec(e,n){return new Promise(function(t){var a=new MessageChannel;a.port1.onmessage=function(e){t(e.data)},e.postMessage(n,[a.port2])})}function ed(e,n){for(var t=0;t<n.length;t++){var a=n[t];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,function(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,n||"default");if("object"!=typeof a)return a;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==typeof n?n:n+""}(a.key),a)}}function eu(e,n){return(eu=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,n){return e.__proto__=n,e})(e,n)}function eh(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,a=Array(n);t<n;t++)a[t]=e[t];return a}try{self["workbox:core:7.0.0"]&&_()}catch(e){}var ep=function(){var e=this;this.promise=new Promise(function(n,t){e.resolve=n,e.reject=t})};function eg(e,n){var t=location.href;return new URL(e,t).href===new URL(n,t).href}var ev=function(e,n){this.type=e,Object.assign(this,n)};function em(e,n,t){return t?n?n(e):e:(e&&e.then||(e=Promise.resolve(e)),n?e.then(n):e)}function e_(){}var ex={type:"SKIP_WAITING"};function ef(e,n){if(!n)return e&&e.then?e.then(e_):Promise.resolve()}var eb=function(e){function n(n,t){var a,i;return void 0===t&&(t={}),(a=e.call(this)||this).nn={},a.tn=0,a.rn=new ep,a.en=new ep,a.on=new ep,a.un=0,a.an=new Set,a.cn=function(){var e=a.fn,n=e.installing;a.tn>0||!eg(n.scriptURL,a.sn.toString())||performance.now()>a.un+6e4?(a.vn=n,e.removeEventListener("updatefound",a.cn)):(a.hn=n,a.an.add(n),a.rn.resolve(n)),++a.tn,n.addEventListener("statechange",a.ln)},a.ln=function(e){var n=a.fn,t=e.target,i=t.state,s=t===a.vn,r={sw:t,isExternal:s,originalEvent:e};!s&&a.mn&&(r.isUpdate=!0),a.dispatchEvent(new ev(i,r)),"installed"===i?a.wn=self.setTimeout(function(){"installed"===i&&n.waiting===t&&a.dispatchEvent(new ev("waiting",r))},200):"activating"===i&&(clearTimeout(a.wn),s||a.en.resolve(t))},a.yn=function(e){var n=a.hn,t=n!==navigator.serviceWorker.controller;a.dispatchEvent(new ev("controlling",{isExternal:t,originalEvent:e,sw:n,isUpdate:a.mn})),t||a.on.resolve(n)},a.gn=(i=function(e){var n=e.data,t=e.ports,i=e.source;return em(a.getSW(),function(){a.an.has(i)&&a.dispatchEvent(new ev("message",{data:n,originalEvent:e,ports:t,sw:i}))})},function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];try{return Promise.resolve(i.apply(this,e))}catch(e){return Promise.reject(e)}}),a.sn=n,a.nn=t,navigator.serviceWorker.addEventListener("message",a.gn),a}n.prototype=Object.create(e.prototype),n.prototype.constructor=n,eu(n,e);var t,a,i=n.prototype;return i.register=function(e){var n=(void 0===e?{}:e).immediate,t=void 0!==n&&n;try{var a,i,s,r=this;return em((a=function(){if(!t&&"complete"!==document.readyState)return ef(new Promise(function(e){return window.addEventListener("load",e)}))},i=function(){return r.mn=!!navigator.serviceWorker.controller,r.dn=r.pn(),em(r.bn(),function(e){r.fn=e,r.dn&&(r.hn=r.dn,r.en.resolve(r.dn),r.on.resolve(r.dn),r.dn.addEventListener("statechange",r.ln,{once:!0}));var n=r.fn.waiting;return n&&eg(n.scriptURL,r.sn.toString())&&(r.hn=n,Promise.resolve().then(function(){r.dispatchEvent(new ev("waiting",{sw:n,wasWaitingBeforeRegister:!0}))}).then(function(){})),r.hn&&(r.rn.resolve(r.hn),r.an.add(r.hn)),r.fn.addEventListener("updatefound",r.cn),navigator.serviceWorker.addEventListener("controllerchange",r.yn),r.fn})},(s=a())&&s.then?s.then(i):i(s)))}catch(e){return Promise.reject(e)}},i.update=function(){try{return this.fn?em(ef(this.fn.update())):em()}catch(e){return Promise.reject(e)}},i.getSW=function(){return void 0!==this.hn?Promise.resolve(this.hn):this.rn.promise},i.messageSW=function(e){try{return em(this.getSW(),function(n){return ec(n,e)})}catch(e){return Promise.reject(e)}},i.messageSkipWaiting=function(){this.fn&&this.fn.waiting&&ec(this.fn.waiting,ex)},i.pn=function(){var e=navigator.serviceWorker.controller;return e&&eg(e.scriptURL,this.sn.toString())?e:void 0},i.bn=function(){try{var e=this;return em(function(e,n){try{var t=e()}catch(e){return n(e)}return t&&t.then?t.then(void 0,n):t}(function(){return em(navigator.serviceWorker.register(e.sn,e.nn),function(n){return e.un=performance.now(),n})},function(e){throw e}))}catch(e){return Promise.reject(e)}},t=[{key:"active",get:function(){return this.en.promise}},{key:"controlling",get:function(){return this.on.promise}}],ed(n.prototype,t),a&&ed(n,a),Object.defineProperty(n,"prototype",{writable:!1}),n}(function(){function e(){this.Pn=new Map}var n=e.prototype;return n.addEventListener=function(e,n){this.jn(e).add(n)},n.removeEventListener=function(e,n){this.jn(e).delete(n)},n.dispatchEvent=function(e){e.target=this;for(var n,t=function(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,n){if(e){if("string"==typeof e)return eh(e,void 0);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?eh(e,void 0):void 0}}(e))){t&&(e=t);var a=0;return function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(this.jn(e.type));!(n=t()).done;)(0,n.value)(e)},n.jn=function(e){return this.Pn.has(e)||this.Pn.set(e,new Set),this.Pn.get(e)},e}());let ej=()=>{globalThis.navigator&&"serviceWorker"in globalThis.navigator&&new eb("/service-worker.js").register({immediate:!0})};var ey=t(6937),ek=t.n(ey);r().setAppElement("#__next");var ew=!0,eC=e=>{let{version:n}=e,t=(0,l.I0)(),s=(0,u.ix)(u.fN),[r,h]=(0,i.useState)(!1),[p,v]=(0,i.useState)(!1),[m,x]=(0,i.useState)(!1),[f,b]=(0,i.useState)(!1),[y,k]=(0,i.useState)(!1),[w,C]=(0,i.useState)(!1),[M,S]=(0,i.useState)(!1),[E,I]=(0,i.useState)(!1),L=(0,i.useCallback)(()=>k(!0),[]),O=(0,i.useCallback)(()=>t((0,u.mc)()),[t]),T=(0,i.useCallback)(()=>h(!1),[]),W=(0,i.useCallback)(()=>v(!1),[]),R=(0,i.useCallback)(()=>x(!1),[]),G=(0,i.useCallback)(()=>b(!1),[]),z=(0,i.useCallback)(()=>k(!1),[]),A=(0,i.useCallback)(()=>C(!1),[]),U=(0,i.useCallback)(()=>S(!1),[]),X=(0,i.useCallback)(()=>h(!0),[]),Y=(0,i.useCallback)(()=>v(!0),[]),K=(0,i.useCallback)(()=>x(!0),[]),F=(0,i.useCallback)(()=>b(!0),[]),D=(0,i.useCallback)(()=>C(!0),[]),V=(0,i.useCallback)(()=>S(!0),[]);return((0,c.gm)(d.q[s].direction),(0,c.ZK)(s),(0,c._)(),(0,c.qR)(()=>{ej(),I(!0),t((0,u.j2)())}),E)?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("nav",{className:ek().nav,children:(0,a.jsxs)("div",{className:ek().navContent,children:[(0,a.jsx)("div",{className:ek().navLogo,children:(0,a.jsx)("a",{className:ek().logoContainer,href:"/",title:n,children:(0,a.jsx)(o.TR,{className:ek().logo})})}),(0,a.jsx)(o._m,{onClear:O,onShowKeyMap:Y,onShowMenu:K,onShowRemainingTiles:F,onShowSettings:D,onShowWords:V})]})}),(0,a.jsx)(o.ME,{className:ek().solver,onShowResults:L}),(0,a.jsx)(N,{isOpen:m,onClose:R,onShowDictionary:X,onShowRemainingTiles:F,onShowSettings:D,onShowWords:V}),(0,a.jsx)(es,{isOpen:w,onClose:A}),(0,a.jsx)(j,{isOpen:p,onClose:W}),(0,a.jsx)(eo,{isOpen:M,onClose:U}),(0,a.jsx)(P,{isOpen:f,onClose:G}),(0,a.jsx)(q,{isOpen:y,onClose:z}),(0,a.jsx)(g,{isOpen:r,onClose:T})]}):null}},4446:function(e){e.exports={content:"DictionaryModal_content___jXD2",dictionary:"DictionaryModal_dictionary__Eu9Sx",dictionaryInput:"DictionaryModal_dictionaryInput__CKiX5"}},5301:function(e){e.exports={mapping:"Mapping_mapping__Ua6wj",description:"Mapping_description__nSNia",keys:"Mapping_keys__KmIcZ",group:"Mapping_group__MlkmV",slash:"Mapping_slash__hulS4",plus:"Mapping_plus__KE_ml"}},5347:function(e){e.exports={button:"MenuModal_button__x3zTR",settings:"MenuModal_settings__XE_P3",settingsLabel:"MenuModal_settingsLabel__xYRLv",flag:"MenuModal_flag__NGaHf"}},9900:function(e){e.exports={title:"RemainingTilesModal_title__4rcbk",content:"RemainingTilesModal_content__NrmXd",badge:"RemainingTilesModal_badge__vZkrc",character:"RemainingTilesModal_character__16pGR"}},9283:function(e){e.exports={character:"Character_character__Xry5W",finished:"Character_finished__Ee5Eu",overused:"Character_overused__WV6tJ",tile:"Character_tile__Ledy0",remaining:"Character_remaining__DFxBl",count:"Character_count__Bl6_O"}},2306:function(e){e.exports={content:"ResultsModal_content__vzX7N",results:"ResultsModal_results__FDN3k",dictionary:"ResultsModal_dictionary__o3cpd"}},721:function(e){e.exports={option:"AutoGroupTilesSetting_option__dp8CH",label:"AutoGroupTilesSetting_label__MIKlN"}},1831:function(e){e.exports={option:"ConfigSetting_option__pvmMK",label:"ConfigSetting_label__CeZI1"}},3979:function(e){e.exports={option:"InputModeSetting_option__9tdaY",label:"InputModeSetting_label__al6kL"}},9743:function(e){e.exports={option:"LocaleSetting_option__3uVpq",label:"LocaleSetting_label__VqJH9",flag:"LocaleSetting_flag__cnMgQ"}},8101:function(e){e.exports={option:"ShowCoordinatesSetting_option__teifi",label:"ShowCoordinatesSetting_label__h0REI"}},3518:function(e){e.exports={title:"WordsModal_title__UGHtI",badge:"WordsModal_badge__Ay_8V",word:"WordsModal_word__sCI06",invalid:"WordsModal_invalid__jgYeh",valid:"WordsModal_valid__JW5lM",icon:"WordsModal_icon___HWi4"}},6937:function(e){e.exports={nav:"index_nav__oayCy",navContent:"index_navContent__puCTa",navLogo:"index_navLogo__iI_za",logoContainer:"index_logoContainer__YyxQp",logo:"index_logo__jZUto",solver:"index_solver__wz8VS"}}},function(e){e.O(0,[774,888,179],function(){return e(e.s=7314)}),_N_E=e.O()}]);