@scrabble-solver/scrabble-solver 2.15.8 → 2.15.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +13 -13
  3. package/.next/cache/.rscinfo +1 -1
  4. package/.next/cache/.tsbuildinfo +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/diagnostics/framework.json +1 -1
  15. package/.next/next-minimal-server.js.nft.json +1 -1
  16. package/.next/next-server.js.nft.json +1 -1
  17. package/.next/prerender-manifest.json +4 -4
  18. package/.next/required-server-files.json +1 -2
  19. package/.next/routes-manifest.json +1 -1
  20. package/.next/server/chunks/60.js +1 -1
  21. package/.next/server/chunks/812.js +1 -1
  22. package/.next/server/chunks/974.js +1 -1
  23. package/.next/server/middleware-build-manifest.js +1 -1
  24. package/.next/server/pages/404.html +1 -1
  25. package/.next/server/pages/404.js.nft.json +1 -1
  26. package/.next/server/pages/500.html +1 -1
  27. package/.next/server/pages/_app.js +1 -1
  28. package/.next/server/pages/_app.js.nft.json +1 -1
  29. package/.next/server/pages/_error.js +1 -1
  30. package/.next/server/pages/_error.js.nft.json +1 -1
  31. package/.next/server/pages/api/dictionary/[locale]/[word].js +2 -2
  32. package/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
  33. package/.next/server/pages/api/dictionary/[locale].js +1 -1
  34. package/.next/server/pages/api/dictionary/[locale].js.nft.json +1 -1
  35. package/.next/server/pages/api/solve.js +1 -1
  36. package/.next/server/pages/api/solve.js.nft.json +1 -1
  37. package/.next/server/pages/api/verify.js +1 -1
  38. package/.next/server/pages/api/verify.js.nft.json +1 -1
  39. package/.next/server/pages/api/visit.js +1 -1
  40. package/.next/server/pages/index.html +1 -1
  41. package/.next/server/pages/index.js +1 -1
  42. package/.next/server/pages/index.js.nft.json +1 -1
  43. package/.next/server/pages/index.json +1 -1
  44. package/.next/server/pages-manifest.json +1 -1
  45. package/.next/server/webpack-api-runtime.js +1 -1
  46. package/.next/static/chunks/{main-b934e2c3dd3b55b5.js → main-016492249b3393e2.js} +1 -1
  47. package/.next/static/chunks/pages/{404-7451dd58396eaa39.js → 404-590e2a3839c1d9e0.js} +1 -1
  48. package/.next/static/chunks/pages/_app-ac93a74c390f2ab8.js +1 -0
  49. package/.next/static/chunks/pages/index-e5f1caa581e6d3b8.js +1 -0
  50. package/.next/static/chunks/webpack-6224d37324e372cb.js +1 -0
  51. package/.next/static/{IJuVKnkd8P2us9rVuan82 → ylO_ttKeJTuoqDYywao5A}/_buildManifest.js +1 -1
  52. package/.next/trace +23 -23
  53. package/LICENSE +1 -1
  54. package/next.config.js +3 -0
  55. package/package.json +11 -10
  56. package/src/api/getServerLoggingData.ts +1 -3
  57. package/src/api/index.ts +5 -5
  58. package/src/api/isBoardValid.ts +3 -5
  59. package/src/api/isCellValid.ts +4 -6
  60. package/src/api/isCharacterValid.ts +2 -3
  61. package/src/api/isRowValid.ts +3 -5
  62. package/src/components/Alert/Alert.tsx +1 -3
  63. package/src/components/Alert/index.ts +1 -1
  64. package/src/components/Badge/Badge.tsx +1 -3
  65. package/src/components/Badge/index.ts +1 -1
  66. package/src/components/Board/Board.tsx +3 -5
  67. package/src/components/Board/BoardPure.tsx +2 -2
  68. package/src/components/Board/components/Actions/Actions.tsx +3 -5
  69. package/src/components/Board/components/Actions/index.ts +1 -1
  70. package/src/components/Board/components/Cell/Cell.tsx +3 -5
  71. package/src/components/Board/components/Cell/index.ts +1 -1
  72. package/src/components/Board/components/InputPrompt/InputPrompt.tsx +3 -5
  73. package/src/components/Board/components/InputPrompt/index.ts +1 -1
  74. package/src/components/Board/components/ToggleDirectionButton/ToggleDirectionButton.tsx +2 -4
  75. package/src/components/Board/components/ToggleDirectionButton/index.ts +1 -1
  76. package/src/components/Board/components/index.ts +4 -4
  77. package/src/components/Board/hooks/index.ts +6 -6
  78. package/src/components/Board/hooks/useBackgroundImage.tsx +7 -9
  79. package/src/components/Board/hooks/useBoardStyle.ts +7 -9
  80. package/src/components/Board/hooks/useFloatingActions.ts +1 -3
  81. package/src/components/Board/hooks/useFloatingFocus.ts +1 -3
  82. package/src/components/Board/hooks/useFloatingInputPrompt.ts +1 -3
  83. package/src/components/Board/hooks/useGrid.ts +7 -9
  84. package/src/components/Board/index.ts +1 -1
  85. package/src/components/Board/lib/getBonusColor.ts +1 -3
  86. package/src/components/Board/lib/getPositionInGrid.ts +1 -3
  87. package/src/components/Board/lib/index.ts +2 -2
  88. package/src/components/Button/Button.tsx +3 -3
  89. package/src/components/Button/Link.tsx +1 -3
  90. package/src/components/Button/index.ts +1 -1
  91. package/src/components/Dictionary/Dictionary.tsx +3 -5
  92. package/src/components/Dictionary/index.ts +1 -1
  93. package/src/components/DictionaryInput/DictionaryInput.tsx +1 -3
  94. package/src/components/DictionaryInput/index.ts +1 -1
  95. package/src/components/EmptyState/EmptyState.tsx +4 -6
  96. package/src/components/EmptyState/index.ts +1 -1
  97. package/src/components/IconButton/IconButton.tsx +3 -3
  98. package/src/components/IconButton/Link.tsx +1 -3
  99. package/src/components/IconButton/index.ts +1 -1
  100. package/src/components/Key/Key.tsx +1 -3
  101. package/src/components/Key/index.ts +1 -1
  102. package/src/components/Keys/Arrows/Arrows.tsx +2 -4
  103. package/src/components/Keys/Arrows/index.ts +1 -1
  104. package/src/components/{keys.tsx → Keys/index.tsx} +3 -1
  105. package/src/components/Loading/Loading.tsx +2 -4
  106. package/src/components/Loading/index.ts +1 -1
  107. package/src/components/Logo/Logo.tsx +1 -3
  108. package/src/components/Logo/LogoBlueprint.tsx +2 -4
  109. package/src/components/Logo/index.ts +1 -1
  110. package/src/components/Modal/Modal.tsx +3 -3
  111. package/src/components/Modal/components/Section/Section.tsx +1 -3
  112. package/src/components/Modal/components/Section/index.ts +1 -1
  113. package/src/components/Modal/components/index.ts +1 -1
  114. package/src/components/Modal/index.ts +1 -1
  115. package/src/components/NavButtons/NavButtons.tsx +3 -3
  116. package/src/components/NavButtons/index.ts +1 -1
  117. package/src/components/NotFound/NotFound.tsx +2 -4
  118. package/src/components/NotFound/index.ts +1 -1
  119. package/src/components/PlainTiles/PlainTiles.tsx +10 -4
  120. package/src/components/PlainTiles/Tile.tsx +1 -3
  121. package/src/components/PlainTiles/index.ts +1 -1
  122. package/src/components/PlainTiles/lib/createPlainTile.ts +10 -6
  123. package/src/components/PlainTiles/lib/createPlainTiles.ts +2 -4
  124. package/src/components/PlainTiles/lib/getViewbox.ts +1 -3
  125. package/src/components/PlainTiles/lib/getX.ts +1 -3
  126. package/src/components/PlainTiles/lib/getY.ts +1 -3
  127. package/src/components/PlainTiles/lib/index.ts +6 -6
  128. package/src/components/PlainTiles/lib/randomize.ts +1 -3
  129. package/src/components/Progress/Progress.tsx +1 -3
  130. package/src/components/Progress/index.ts +1 -1
  131. package/src/components/Rack/Rack.tsx +9 -11
  132. package/src/components/Rack/components/InputPrompt/InputPrompt.tsx +3 -5
  133. package/src/components/Rack/components/InputPrompt/index.ts +1 -1
  134. package/src/components/Rack/components/RackTile/RackTile.tsx +9 -10
  135. package/src/components/Rack/components/RackTile/index.ts +1 -1
  136. package/src/components/Rack/components/index.ts +2 -2
  137. package/src/components/Rack/index.ts +1 -1
  138. package/src/components/Radio/Radio.tsx +1 -3
  139. package/src/components/Radio/index.ts +1 -1
  140. package/src/components/Results/Cell.tsx +9 -3
  141. package/src/components/Results/Header.tsx +2 -4
  142. package/src/components/Results/HeaderButton.tsx +1 -3
  143. package/src/components/Results/Result.tsx +2 -4
  144. package/src/components/Results/Results.tsx +7 -9
  145. package/src/components/Results/SolveButton.tsx +2 -4
  146. package/src/components/Results/index.ts +1 -1
  147. package/src/components/ResultsInput/ResultsInput.tsx +1 -3
  148. package/src/components/ResultsInput/index.ts +1 -1
  149. package/src/components/SeoMessage/SeoMessage.tsx +4 -6
  150. package/src/components/SeoMessage/index.ts +1 -1
  151. package/src/components/Solver/Solver.tsx +8 -8
  152. package/src/components/Solver/components/InsertButton/InsertButton.tsx +2 -4
  153. package/src/components/Solver/components/InsertButton/index.ts +1 -1
  154. package/src/components/Solver/components/ResultCandidatePicker/ResultCandidatePicker.tsx +4 -6
  155. package/src/components/Solver/components/ResultCandidatePicker/index.ts +1 -1
  156. package/src/components/Solver/components/index.ts +2 -2
  157. package/src/components/Solver/index.ts +1 -1
  158. package/src/components/Spinner/Spinner.tsx +1 -3
  159. package/src/components/Spinner/index.ts +1 -1
  160. package/src/components/Tile/Tile.tsx +2 -4
  161. package/src/components/Tile/TilePure.tsx +2 -2
  162. package/src/components/Tile/index.ts +1 -1
  163. package/src/components/Tooltip/TooltipTrigger.tsx +5 -3
  164. package/src/components/index.ts +24 -25
  165. package/src/hooks/index.ts +13 -13
  166. package/src/hooks/useAppLayout.ts +19 -15
  167. package/src/hooks/useColumns.ts +2 -4
  168. package/src/hooks/useDirection.ts +1 -3
  169. package/src/hooks/useEffectOnce.ts +8 -2
  170. package/src/hooks/useIsTouchDevice.ts +2 -4
  171. package/src/hooks/useLanguage.ts +1 -3
  172. package/src/hooks/useLatest.ts +1 -3
  173. package/src/hooks/useLocalStorage.ts +1 -3
  174. package/src/hooks/useMedia.ts +1 -3
  175. package/src/hooks/useMediaQueries.ts +2 -4
  176. package/src/hooks/useMediaQuery.ts +2 -4
  177. package/src/hooks/useOnWindowResize.ts +1 -3
  178. package/src/hooks/useViewportSize.ts +2 -4
  179. package/src/i18n/i18n.ts +1 -3
  180. package/src/i18n/index.ts +1 -1
  181. package/src/lib/arrayEquals.ts +1 -3
  182. package/src/lib/createArray.ts +1 -3
  183. package/src/lib/createComparator.ts +3 -5
  184. package/src/lib/createGridOf.ts +2 -4
  185. package/src/lib/createKeyComparator.ts +6 -5
  186. package/src/lib/createKeyboardNavigation.ts +2 -4
  187. package/src/lib/createNullMovingComparator.test.ts +1 -1
  188. package/src/lib/createNullMovingComparator.ts +1 -3
  189. package/src/lib/createRegExp.ts +1 -3
  190. package/src/lib/createStringComparator.ts +5 -3
  191. package/src/lib/detectLocale.ts +1 -3
  192. package/src/lib/extractCharacters.test.ts +3 -2
  193. package/src/lib/extractCharacters.ts +17 -5
  194. package/src/lib/extractCharactersByCase.test.ts +1 -1
  195. package/src/lib/extractCharactersByCase.ts +2 -4
  196. package/src/lib/extractInputValue.ts +1 -3
  197. package/src/lib/findCell.ts +1 -3
  198. package/src/lib/getCellSize.ts +3 -5
  199. package/src/lib/getCoordinate.ts +1 -3
  200. package/src/lib/getCoordinates.ts +2 -4
  201. package/src/lib/getRemainingTiles.ts +8 -5
  202. package/src/lib/getRemainingTilesCount.ts +1 -3
  203. package/src/lib/getRemainingTilesGroups.ts +3 -5
  204. package/src/lib/getTileSizes.ts +1 -3
  205. package/src/lib/getTotalRemainingTilesCount.ts +1 -3
  206. package/src/lib/groupResults.ts +3 -5
  207. package/src/lib/guessLocale.ts +2 -4
  208. package/src/lib/index.ts +39 -39
  209. package/src/lib/inverseDirection.ts +1 -3
  210. package/src/lib/isCtrl.ts +1 -3
  211. package/src/lib/isMac.ts +3 -4
  212. package/src/lib/isRegExp.ts +1 -3
  213. package/src/lib/isStringArray.ts +1 -3
  214. package/src/lib/isUpperCase.ts +1 -3
  215. package/src/lib/memoize.ts +18 -20
  216. package/src/lib/noop.ts +1 -3
  217. package/src/lib/numberComparator.ts +1 -3
  218. package/src/lib/resultMatchesCellFilter.ts +1 -3
  219. package/src/lib/reverseComparator.ts +1 -3
  220. package/src/lib/sortGroupedResults.ts +2 -4
  221. package/src/lib/sortResults.ts +5 -7
  222. package/src/lib/unorderedArraysEqual.ts +2 -4
  223. package/src/lib/zipCharactersAndTiles.ts +1 -3
  224. package/src/modals/DictionaryModal/DictionaryModal.tsx +2 -2
  225. package/src/modals/DictionaryModal/index.ts +1 -1
  226. package/src/modals/KeyMapModal/KeyMapModal.tsx +2 -2
  227. package/src/modals/KeyMapModal/components/Mapping/Mapping.tsx +1 -3
  228. package/src/modals/KeyMapModal/components/Mapping/index.ts +1 -1
  229. package/src/modals/KeyMapModal/components/index.ts +1 -1
  230. package/src/modals/KeyMapModal/index.ts +1 -1
  231. package/src/modals/MenuModal/MenuModal.tsx +2 -2
  232. package/src/modals/MenuModal/index.ts +1 -1
  233. package/src/modals/RemainingTilesModal/RemainingTilesModal.tsx +2 -2
  234. package/src/modals/RemainingTilesModal/components/Character/Character.tsx +1 -3
  235. package/src/modals/RemainingTilesModal/components/Character/index.ts +1 -1
  236. package/src/modals/RemainingTilesModal/components/index.ts +1 -1
  237. package/src/modals/RemainingTilesModal/index.ts +1 -1
  238. package/src/modals/ResultsModal/ResultsModal.tsx +2 -2
  239. package/src/modals/ResultsModal/index.ts +1 -1
  240. package/src/modals/SettingsModal/SettingsModal.tsx +2 -2
  241. package/src/modals/SettingsModal/components/AutoGroupTilesSetting/AutoGroupTilesSetting.tsx +1 -3
  242. package/src/modals/SettingsModal/components/AutoGroupTilesSetting/index.ts +1 -1
  243. package/src/modals/SettingsModal/components/ConfigSetting/ConfigSetting.tsx +4 -10
  244. package/src/modals/SettingsModal/components/ConfigSetting/index.ts +1 -1
  245. package/src/modals/SettingsModal/components/ConfigSetting/lib.ts +19 -0
  246. package/src/modals/SettingsModal/components/InputModeSetting/InputModeSetting.tsx +1 -3
  247. package/src/modals/SettingsModal/components/InputModeSetting/index.ts +1 -1
  248. package/src/modals/SettingsModal/components/LocaleSetting/LocaleSetting.tsx +1 -3
  249. package/src/modals/SettingsModal/components/LocaleSetting/index.ts +1 -1
  250. package/src/modals/SettingsModal/components/ShowCoordinatesSetting/ShowCoordinatesSetting.tsx +1 -3
  251. package/src/modals/SettingsModal/components/ShowCoordinatesSetting/index.ts +1 -1
  252. package/src/modals/SettingsModal/components/index.ts +5 -5
  253. package/src/modals/SettingsModal/index.ts +1 -1
  254. package/src/modals/WordsModal/WordsModal.tsx +2 -2
  255. package/src/modals/WordsModal/index.ts +1 -1
  256. package/src/modals/index.ts +7 -7
  257. package/src/pages/_app.tsx +2 -1
  258. package/src/pages/api/dictionary/[locale]/[word].ts +1 -1
  259. package/src/pages/api/dictionary/[locale]/index.ts +1 -1
  260. package/src/pages/api/solve.ts +6 -4
  261. package/src/pages/api/verify.ts +6 -4
  262. package/src/pages/api/visit.ts +2 -2
  263. package/src/pages/index.tsx +7 -0
  264. package/src/sdk/fetch.ts +1 -3
  265. package/src/sdk/fetchJson.ts +2 -4
  266. package/src/sdk/findWordDefinitions.ts +2 -4
  267. package/src/sdk/getDictionary.ts +2 -4
  268. package/src/sdk/index.ts +4 -4
  269. package/src/sdk/solve.ts +2 -4
  270. package/src/sdk/verify.ts +2 -4
  271. package/src/sdk/visit.ts +1 -3
  272. package/src/service-worker/average.ts +1 -3
  273. package/src/service-worker/dictionaries/expirationManager.ts +1 -3
  274. package/src/service-worker/dictionaries/getDictionary.ts +3 -5
  275. package/src/service-worker/dictionaries/getDictionaryUrl.ts +1 -3
  276. package/src/service-worker/dictionaries/index.ts +2 -2
  277. package/src/service-worker/dictionaries/revalidateDictionary.ts +3 -5
  278. package/src/service-worker/getTrie.ts +1 -3
  279. package/src/service-worker/index.ts +4 -2
  280. package/src/service-worker/routeSolveRequests.ts +17 -11
  281. package/src/service-worker/routeVerifyRequests.ts +7 -5
  282. package/src/serviceWorkerManager.ts +4 -4
  283. package/src/state/index.ts +4 -4
  284. package/src/state/localStorage.ts +10 -12
  285. package/src/state/sagas.ts +5 -2
  286. package/src/state/selectors.ts +2 -5
  287. package/src/state/slices/boardInitialState.ts +6 -7
  288. package/src/state/slices/boardSlice.ts +5 -7
  289. package/src/state/slices/cellFilterInitialState.ts +1 -3
  290. package/src/state/slices/cellFilterSlice.ts +2 -4
  291. package/src/state/slices/dictionaryInitialState.ts +2 -4
  292. package/src/state/slices/dictionarySlice.ts +2 -4
  293. package/src/state/slices/index.ts +16 -16
  294. package/src/state/slices/rackInitialState.ts +2 -4
  295. package/src/state/slices/rackSlice.ts +2 -4
  296. package/src/state/slices/resultsInitialState.ts +1 -3
  297. package/src/state/slices/resultsSlice.ts +2 -4
  298. package/src/state/slices/settingsInitialState.ts +2 -4
  299. package/src/state/slices/settingsSlice.ts +2 -4
  300. package/src/state/slices/solveInitialState.ts +3 -5
  301. package/src/state/slices/solveSlice.ts +2 -4
  302. package/src/state/slices/verifyInitialState.ts +2 -4
  303. package/src/state/slices/verifySlice.ts +2 -4
  304. package/src/state/store.ts +1 -3
  305. package/src/state/useTranslate.ts +2 -4
  306. package/src/state/useTypedSelector.ts +1 -3
  307. package/src/types/api.ts +15 -0
  308. package/src/types/index.ts +2 -0
  309. package/tsconfig.json +1 -1
  310. package/.next/cache/eslint/.cache_8dgz12 +0 -1
  311. package/.next/static/chunks/pages/_app-34618eeeff128581.js +0 -1
  312. package/.next/static/chunks/pages/index-d492616d9bc42176.js +0 -1
  313. package/.next/static/chunks/webpack-4224e970a97a4a86.js +0 -1
  314. package/src/components/Keys/index.ts +0 -1
  315. package/tsconfig.jest.json +0 -7
  316. /package/.next/static/{IJuVKnkd8P2us9rVuan82 → ylO_ttKeJTuoqDYywao5A}/_ssgManifest.js +0 -0
@@ -6,10 +6,8 @@ interface TileSizes {
6
6
  tileSize: number;
7
7
  }
8
8
 
9
- const getTileSizes = (tileSize: number): TileSizes => ({
9
+ export const getTileSizes = (tileSize: number): TileSizes => ({
10
10
  pointsFontSize: Math.max(Math.round(tileSize * 0.25), BOARD_TILE_FONT_SIZE_POINTS_MIN),
11
11
  tileFontSize: Math.max(Math.round(tileSize * 0.6), BOARD_TILE_FONT_SIZE_MIN),
12
12
  tileSize,
13
13
  });
14
-
15
- export default getTileSizes;
@@ -1,7 +1,5 @@
1
1
  import { RemainingTile } from 'types';
2
2
 
3
- const getTotalRemainingTilesCount = (remainingTiles: RemainingTile[]): number => {
3
+ export const getTotalRemainingTilesCount = (remainingTiles: RemainingTile[]): number => {
4
4
  return remainingTiles.reduce((sum, { count }) => sum + count, 0);
5
5
  };
6
-
7
- export default getTotalRemainingTilesCount;
@@ -2,10 +2,10 @@ import { Result } from '@scrabble-solver/types';
2
2
 
3
3
  import { CellFilterEntry, GroupedResults } from 'types';
4
4
 
5
- import createRegExp from './createRegExp';
6
- import resultMatchesCellFilter from './resultMatchesCellFilter';
5
+ import { createRegExp } from './createRegExp';
6
+ import { resultMatchesCellFilter } from './resultMatchesCellFilter';
7
7
 
8
- const groupResults = (
8
+ export const groupResults = (
9
9
  results: Result[] | undefined,
10
10
  query: string,
11
11
  cellFilter: CellFilterEntry[],
@@ -33,5 +33,3 @@ const groupResults = (
33
33
 
34
34
  return { matching, other };
35
35
  };
36
-
37
- export default groupResults;
@@ -1,12 +1,12 @@
1
1
  import { Locale } from '@scrabble-solver/types';
2
2
 
3
- const guessLocale = (): Locale => {
3
+ export const guessLocale = (): Locale => {
4
4
  if (!globalThis.navigator) {
5
5
  return Locale.EN_US;
6
6
  }
7
7
 
8
8
  const locales = Object.values(Locale);
9
- const exactMatch = locales.find((locale) => globalThis.navigator.language === locale);
9
+ const exactMatch = locales.find((locale) => globalThis.navigator.language === String(locale));
10
10
 
11
11
  if (exactMatch) {
12
12
  return exactMatch;
@@ -18,5 +18,3 @@ const guessLocale = (): Locale => {
18
18
 
19
19
  return partialMatch || Locale.EN_US;
20
20
  };
21
-
22
- export default guessLocale;
package/src/lib/index.ts CHANGED
@@ -1,39 +1,39 @@
1
- export { default as arrayEquals } from './arrayEquals';
2
- export { default as createArray } from './createArray';
3
- export { default as createComparator } from './createComparator';
4
- export { default as createGridOf } from './createGridOf';
5
- export { default as createKeyComparator } from './createKeyComparator';
6
- export { default as createKeyboardNavigation } from './createKeyboardNavigation';
7
- export { default as createNullMovingComparator } from './createNullMovingComparator';
8
- export { default as createRegExp } from './createRegExp';
9
- export { default as createStringComparator } from './createStringComparator';
10
- export { default as detectLocale } from './detectLocale';
11
- export { default as extractCharacters } from './extractCharacters';
12
- export { default as extractCharactersByCase } from './extractCharactersByCase';
13
- export { default as extractInputValue } from './extractInputValue';
14
- export { default as findCell } from './findCell';
15
- export { default as getCellSize } from './getCellSize';
16
- export { default as getCoordinate } from './getCoordinate';
17
- export { default as getCoordinates } from './getCoordinates';
18
- export { default as getRemainingTiles } from './getRemainingTiles';
19
- export { default as getRemainingTilesCount } from './getRemainingTilesCount';
20
- export { default as getRemainingTilesGroups } from './getRemainingTilesGroups';
21
- export { default as getTileSizes } from './getTileSizes';
22
- export { default as getTotalRemainingTilesCount } from './getTotalRemainingTilesCount';
23
- export { default as groupResults } from './groupResults';
24
- export { default as guessLocale } from './guessLocale';
25
- export { default as inverseDirection } from './inverseDirection';
26
- export { default as isCtrl } from './isCtrl';
27
- export { default as isMac } from './isMac';
28
- export { default as isRegExp } from './isRegExp';
29
- export { default as isStringArray } from './isStringArray';
30
- export { default as isUpperCase } from './isUpperCase';
31
- export { default as memoize } from './memoize';
32
- export { default as noop } from './noop';
33
- export { default as numberComparator } from './numberComparator';
34
- export { default as resultMatchesCellFilter } from './resultMatchesCellFilter';
35
- export { default as reverseComparator } from './reverseComparator';
36
- export { default as sortGroupedResults } from './sortGroupedResults';
37
- export { default as sortResults } from './sortResults';
38
- export { default as unorderedArraysEqual } from './unorderedArraysEqual';
39
- export { default as zipCharactersAndTiles } from './zipCharactersAndTiles';
1
+ export { arrayEquals } from './arrayEquals';
2
+ export { createArray } from './createArray';
3
+ export { createComparator } from './createComparator';
4
+ export { createGridOf } from './createGridOf';
5
+ export { createKeyComparator } from './createKeyComparator';
6
+ export { createKeyboardNavigation } from './createKeyboardNavigation';
7
+ export { createNullMovingComparator } from './createNullMovingComparator';
8
+ export { createRegExp } from './createRegExp';
9
+ export { createStringComparator } from './createStringComparator';
10
+ export { detectLocale } from './detectLocale';
11
+ export { extractCharacters } from './extractCharacters';
12
+ export { extractCharactersByCase } from './extractCharactersByCase';
13
+ export { extractInputValue } from './extractInputValue';
14
+ export { findCell } from './findCell';
15
+ export { getCellSize } from './getCellSize';
16
+ export { getCoordinate } from './getCoordinate';
17
+ export { getCoordinates } from './getCoordinates';
18
+ export { getRemainingTiles } from './getRemainingTiles';
19
+ export { getRemainingTilesCount } from './getRemainingTilesCount';
20
+ export { getRemainingTilesGroups } from './getRemainingTilesGroups';
21
+ export { getTileSizes } from './getTileSizes';
22
+ export { getTotalRemainingTilesCount } from './getTotalRemainingTilesCount';
23
+ export { groupResults } from './groupResults';
24
+ export { guessLocale } from './guessLocale';
25
+ export { inverseDirection } from './inverseDirection';
26
+ export { isCtrl } from './isCtrl';
27
+ export { isMac } from './isMac';
28
+ export { isRegExp } from './isRegExp';
29
+ export { isStringArray } from './isStringArray';
30
+ export { isUpperCase } from './isUpperCase';
31
+ export { memoize } from './memoize';
32
+ export { noop } from './noop';
33
+ export { numberComparator } from './numberComparator';
34
+ export { resultMatchesCellFilter } from './resultMatchesCellFilter';
35
+ export { reverseComparator } from './reverseComparator';
36
+ export { sortGroupedResults } from './sortGroupedResults';
37
+ export { sortResults } from './sortResults';
38
+ export { unorderedArraysEqual } from './unorderedArraysEqual';
39
+ export { zipCharactersAndTiles } from './zipCharactersAndTiles';
@@ -1,5 +1,3 @@
1
- const inverseDirection = (direction: 'left' | 'right'): 'left' | 'right' => {
1
+ export const inverseDirection = (direction: 'left' | 'right'): 'left' | 'right' => {
2
2
  return direction === 'left' ? 'right' : 'left';
3
3
  };
4
-
5
- export default inverseDirection;
package/src/lib/isCtrl.ts CHANGED
@@ -1,7 +1,5 @@
1
1
  import { KeyboardEvent } from 'react';
2
2
 
3
- const isCtrl = <T>(event: KeyboardEvent<T> | globalThis.KeyboardEvent): boolean => {
3
+ export const isCtrl = <T>(event: KeyboardEvent<T> | globalThis.KeyboardEvent): boolean => {
4
4
  return event.ctrlKey || event.metaKey;
5
5
  };
6
-
7
- export default isCtrl;
package/src/lib/isMac.ts CHANGED
@@ -1,9 +1,8 @@
1
- const isMac = (): boolean => {
1
+ export const isMac = (): boolean => {
2
2
  if (!globalThis.navigator) {
3
3
  return false;
4
4
  }
5
5
 
6
- return globalThis.navigator.platform.toLowerCase().includes('mac');
6
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
7
+ return globalThis.navigator.platform.startsWith('Mac') || globalThis.navigator.platform === 'iPhone';
7
8
  };
8
-
9
- export default isMac;
@@ -1,4 +1,4 @@
1
- const isRegExp = (value: string): boolean => {
1
+ export const isRegExp = (value: string): boolean => {
2
2
  try {
3
3
  // eslint-disable-next-line no-new
4
4
  new RegExp(value);
@@ -7,5 +7,3 @@ const isRegExp = (value: string): boolean => {
7
7
  return false;
8
8
  }
9
9
  };
10
-
11
- export default isRegExp;
@@ -1,5 +1,3 @@
1
- const isStringArray = (value: unknown): value is string[] => {
1
+ export const isStringArray = (value: unknown): value is string[] => {
2
2
  return Array.isArray(value) && value.every((item) => typeof item === 'string');
3
3
  };
4
-
5
- export default isStringArray;
@@ -1,7 +1,5 @@
1
1
  import { Locale } from '@scrabble-solver/types';
2
2
 
3
- const isUpperCase = (locale: Locale, value: string): boolean => {
3
+ export const isUpperCase = (locale: Locale, value: string): boolean => {
4
4
  return value === value.toLocaleUpperCase(locale);
5
5
  };
6
-
7
- export default isUpperCase;
@@ -1,26 +1,26 @@
1
- interface AnyFunction {
2
- (...parameters: any[]): any | Promise<any>; // eslint-disable-line @typescript-eslint/no-explicit-any
1
+ interface AnyFunction<Args extends unknown[], Result> {
2
+ (...parameters: Args): Result;
3
3
  }
4
4
 
5
- interface AnyCachedFunction<T extends AnyFunction> extends AnyFunction {
6
- hasCache: (...parameters: Parameters<T>) => boolean;
5
+ interface Entry<Args extends unknown[], Result> {
6
+ parameters: Args;
7
+ result: Result;
7
8
  }
8
9
 
9
- interface Entry<T extends AnyFunction> {
10
- parameters: Parameters<T>;
11
- result: ReturnType<T>;
12
- }
13
-
14
- const memoize = <T extends AnyFunction>(fn: T): AnyCachedFunction<T> => {
15
- const cache: Entry<T>[] = [];
10
+ export const memoize = <Args extends unknown[], Result>(
11
+ fn: AnyFunction<Args, Result>,
12
+ ): AnyFunction<Args, Result> & {
13
+ hasCache: (...parameters: Args) => boolean;
14
+ } => {
15
+ const cache: Entry<Args, Result>[] = [];
16
16
 
17
- const hasCache = (...parameters: Parameters<T>): boolean => Boolean(readCache(parameters));
17
+ const hasCache = (...parameters: Args): boolean => Boolean(readCache(parameters));
18
18
 
19
- const readCache = (parameters: Parameters<T>): ReturnType<T> | undefined => {
19
+ const readCache = (parameters: Args): Result | undefined => {
20
20
  return cache.find((entry) => parametersEqual(entry.parameters, parameters))?.result;
21
21
  };
22
22
 
23
- const removeCache = (parameters: Parameters<T>): void => {
23
+ const removeCache = (parameters: Args): void => {
24
24
  const index = cache.findIndex((entry) => parametersEqual(entry.parameters, parameters));
25
25
 
26
26
  if (index >= 0) {
@@ -28,11 +28,11 @@ const memoize = <T extends AnyFunction>(fn: T): AnyCachedFunction<T> => {
28
28
  }
29
29
  };
30
30
 
31
- const writeCache = (parameters: Parameters<T>, result: ReturnType<T>): void => {
31
+ const writeCache = (parameters: Args, result: Result): void => {
32
32
  cache.push({ parameters, result });
33
33
  };
34
34
 
35
- const memoized = (...parameters: Parameters<T>): ReturnType<T> => {
35
+ const memoized = (...parameters: Args): Result => {
36
36
  const cached = readCache(parameters);
37
37
 
38
38
  if (cached) {
@@ -55,12 +55,10 @@ const memoize = <T extends AnyFunction>(fn: T): AnyCachedFunction<T> => {
55
55
  return Object.assign(memoized, { hasCache });
56
56
  };
57
57
 
58
- const parametersEqual = <T extends AnyFunction>(a: Parameters<T>, b: Parameters<T>): boolean => {
58
+ const parametersEqual = <Args extends unknown[]>(a: Args, b: Args): boolean => {
59
59
  if (a.length !== b.length) {
60
60
  return false;
61
61
  }
62
62
 
63
- return a.every((parameter: Parameters<T>[typeof index], index: number) => parameter === b[index]);
63
+ return a.every((parameter: Args[typeof index], index: number) => parameter === b[index]);
64
64
  };
65
-
66
- export default memoize;
package/src/lib/noop.ts CHANGED
@@ -1,3 +1 @@
1
- const noop = (): void => undefined;
2
-
3
- export default noop;
1
+ export const noop = (): void => undefined;
@@ -1,5 +1,3 @@
1
1
  import { Comparator } from 'types';
2
2
 
3
- const numberComparator: Comparator<number> = (a, b) => a - b;
4
-
5
- export default numberComparator;
3
+ export const numberComparator: Comparator<number> = (a, b) => a - b;
@@ -2,7 +2,7 @@ import { Result } from '@scrabble-solver/types';
2
2
 
3
3
  import { CellFilterEntry } from 'types';
4
4
 
5
- const resultMatchesCellFilter = (result: Result, cellFilter: CellFilterEntry[]) => {
5
+ export const resultMatchesCellFilter = (result: Result, cellFilter: CellFilterEntry[]) => {
6
6
  const excludeFilters = cellFilter.filter((filter) => filter.type === 'exclude');
7
7
  const matchesExcludeFilters = excludeFilters.every(({ x, y }) => {
8
8
  return result.cells.every((cell) => cell.x !== x || cell.y !== y);
@@ -19,5 +19,3 @@ const resultMatchesCellFilter = (result: Result, cellFilter: CellFilterEntry[])
19
19
 
20
20
  return matchesExcludeFilters && matchesIncludeFilters;
21
21
  };
22
-
23
- export default resultMatchesCellFilter;
@@ -1,7 +1,5 @@
1
1
  import { Comparator } from 'types';
2
2
 
3
- const reverseComparator = <T>(comparator: Comparator<T>): Comparator<T> => {
3
+ export const reverseComparator = <T>(comparator: Comparator<T>): Comparator<T> => {
4
4
  return (a: T, b: T): number => -comparator(a, b);
5
5
  };
6
-
7
- export default reverseComparator;
@@ -2,9 +2,9 @@ import { Locale, ShowCoordinates } from '@scrabble-solver/types';
2
2
 
3
3
  import { GroupedResults, Sort } from 'types';
4
4
 
5
- import sortResults from './sortResults';
5
+ import { sortResults } from './sortResults';
6
6
 
7
- const sortGroupedResults = (
7
+ export const sortGroupedResults = (
8
8
  results: GroupedResults | undefined,
9
9
  sort: Sort,
10
10
  locale: Locale,
@@ -19,5 +19,3 @@ const sortGroupedResults = (
19
19
  other: sortResults(results.other, sort, locale, showCoordinates) ?? [],
20
20
  };
21
21
  };
22
-
23
- export default sortGroupedResults;
@@ -2,10 +2,10 @@ import { Result, ShowCoordinates } from '@scrabble-solver/types';
2
2
 
3
3
  import { Comparator, ResultColumnId, Sort, SortDirection } from 'types';
4
4
 
5
- import createKeyComparator from './createKeyComparator';
6
- import createStringComparator from './createStringComparator';
7
- import getCoordinates from './getCoordinates';
8
- import reverseComparator from './reverseComparator';
5
+ import { createKeyComparator } from './createKeyComparator';
6
+ import { createStringComparator } from './createStringComparator';
7
+ import { getCoordinates } from './getCoordinates';
8
+ import { reverseComparator } from './reverseComparator';
9
9
 
10
10
  const comparators: Record<ResultColumnId, (locale: string, showCoordinates: ShowCoordinates) => Comparator<Result>> = {
11
11
  [ResultColumnId.BlanksCount]: (locale: string) => createKeyComparator('blanksCount', locale),
@@ -23,7 +23,7 @@ const comparators: Record<ResultColumnId, (locale: string, showCoordinates: Show
23
23
  [ResultColumnId.WordsCount]: (locale: string) => createKeyComparator('wordsCount', locale),
24
24
  };
25
25
 
26
- const sortResults = (
26
+ export const sortResults = (
27
27
  results: Result[] | undefined,
28
28
  sort: Sort,
29
29
  locale: string,
@@ -39,5 +39,3 @@ const sortResults = (
39
39
  const sortedResults = [...results].sort(finalComparator);
40
40
  return sortedResults;
41
41
  };
42
-
43
- export default sortResults;
@@ -1,6 +1,6 @@
1
- import createComparator from './createComparator';
1
+ import { createComparator } from './createComparator';
2
2
 
3
- const unorderedArraysEqual = <T>(a: T[], b: T[], locale: string): boolean => {
3
+ export const unorderedArraysEqual = <T>(a: T[], b: T[], locale: string): boolean => {
4
4
  if (a.length !== b.length) {
5
5
  return false;
6
6
  }
@@ -10,5 +10,3 @@ const unorderedArraysEqual = <T>(a: T[], b: T[], locale: string): boolean => {
10
10
  const bSorted = [...b].sort(comparator);
11
11
  return aSorted.every((character, index) => character === bSorted[index]);
12
12
  };
13
-
14
- export default unorderedArraysEqual;
@@ -8,7 +8,7 @@ interface CharacterTilePair {
8
8
  tile: Tile | null;
9
9
  }
10
10
 
11
- const zipCharactersAndTiles = (characters: Rack, tiles: Tile[]): CharacterTilePair[] => {
11
+ export const zipCharactersAndTiles = (characters: Rack, tiles: Tile[]): CharacterTilePair[] => {
12
12
  let remainingTiles = [...tiles];
13
13
 
14
14
  return characters.map((character) => {
@@ -26,5 +26,3 @@ const zipCharactersAndTiles = (characters: Rack, tiles: Tile[]): CharacterTilePa
26
26
  return { character, tile: null };
27
27
  });
28
28
  };
29
-
30
- export default zipCharactersAndTiles;
@@ -11,7 +11,7 @@ interface Props {
11
11
  onClose: () => void;
12
12
  }
13
13
 
14
- const DictionaryModal: FunctionComponent<Props> = ({ className, isOpen, onClose }) => {
14
+ const DictionaryModalBase: FunctionComponent<Props> = ({ className, isOpen, onClose }) => {
15
15
  const translate = useTranslate();
16
16
 
17
17
  return (
@@ -24,4 +24,4 @@ const DictionaryModal: FunctionComponent<Props> = ({ className, isOpen, onClose
24
24
  );
25
25
  };
26
26
 
27
- export default memo(DictionaryModal);
27
+ export const DictionaryModal = memo(DictionaryModalBase);
@@ -1 +1 @@
1
- export { default } from './DictionaryModal';
1
+ export { DictionaryModal } from './DictionaryModal';
@@ -11,7 +11,7 @@ interface Props {
11
11
  onClose: () => void;
12
12
  }
13
13
 
14
- const KeyMapModal: FunctionComponent<Props> = ({ className, isOpen, onClose }) => {
14
+ const KeyMapModalBase: FunctionComponent<Props> = ({ className, isOpen, onClose }) => {
15
15
  const translate = useTranslate();
16
16
  const config = useTypedSelector(selectConfig);
17
17
 
@@ -60,4 +60,4 @@ const KeyMapModal: FunctionComponent<Props> = ({ className, isOpen, onClose }) =
60
60
  );
61
61
  };
62
62
 
63
- export default memo(KeyMapModal);
63
+ export const KeyMapModal = memo(KeyMapModalBase);
@@ -9,7 +9,7 @@ interface Props {
9
9
  mapping: (ReactNode | ReactNode[])[];
10
10
  }
11
11
 
12
- const Mapping: FunctionComponent<Props> = ({ className, description, mapping }) => (
12
+ export const Mapping: FunctionComponent<Props> = ({ className, description, mapping }) => (
13
13
  <div className={classNames(styles.mapping, className)}>
14
14
  <h3 className={styles.description}>{description}</h3>
15
15
 
@@ -34,5 +34,3 @@ const Mapping: FunctionComponent<Props> = ({ className, description, mapping })
34
34
  </div>
35
35
  </div>
36
36
  );
37
-
38
- export default Mapping;
@@ -1 +1 @@
1
- export { default } from './Mapping';
1
+ export { Mapping } from './Mapping';
@@ -1 +1 @@
1
- export { default as Mapping } from './Mapping';
1
+ export { Mapping } from './Mapping';
@@ -1 +1 @@
1
- export { default } from './KeyMapModal';
1
+ export { KeyMapModal } from './KeyMapModal';
@@ -18,7 +18,7 @@ interface Props {
18
18
  onShowWords: () => void;
19
19
  }
20
20
 
21
- const MenuModal: FunctionComponent<Props> = ({
21
+ const MenuModalBase: FunctionComponent<Props> = ({
22
22
  className,
23
23
  isOpen,
24
24
  onClose,
@@ -79,4 +79,4 @@ const MenuModal: FunctionComponent<Props> = ({
79
79
  );
80
80
  };
81
81
 
82
- export default memo(MenuModal);
82
+ export const MenuModal = memo(MenuModalBase);
@@ -1 +1 @@
1
- export { default } from './MenuModal';
1
+ export { MenuModal } from './MenuModal';
@@ -15,7 +15,7 @@ interface Props {
15
15
  onClose: () => void;
16
16
  }
17
17
 
18
- const RemainingTilesModal: FunctionComponent<Props> = ({ className, isOpen, onClose }) => {
18
+ const RemainingTilesModalBase: FunctionComponent<Props> = ({ className, isOpen, onClose }) => {
19
19
  const translate = useTranslate();
20
20
  const locale = useTypedSelector(selectLocale);
21
21
  const groups = useTypedSelector(selectRemainingTilesGroups);
@@ -57,4 +57,4 @@ const RemainingTilesModal: FunctionComponent<Props> = ({ className, isOpen, onCl
57
57
  );
58
58
  };
59
59
 
60
- export default memo(RemainingTilesModal);
60
+ export const RemainingTilesModal = memo(RemainingTilesModalBase);
@@ -14,7 +14,7 @@ interface Props {
14
14
  tile: RemainingTile;
15
15
  }
16
16
 
17
- const Character: FunctionComponent<Props> = ({ tile }) => {
17
+ export const Character: FunctionComponent<Props> = ({ tile }) => {
18
18
  const locale = useTypedSelector(selectLocale);
19
19
  const { direction } = LOCALE_FEATURES[locale];
20
20
  const { character, count, usedCount } = tile;
@@ -57,5 +57,3 @@ const Character: FunctionComponent<Props> = ({ tile }) => {
57
57
  </div>
58
58
  );
59
59
  };
60
-
61
- export default Character;
@@ -1 +1 @@
1
- export { default } from './Character';
1
+ export { Character } from './Character';
@@ -1 +1 @@
1
- export { default as Character } from './Character';
1
+ export { Character } from './Character';
@@ -1 +1 @@
1
- export { default } from './RemainingTilesModal';
1
+ export { RemainingTilesModal } from './RemainingTilesModal';
@@ -15,7 +15,7 @@ interface Props {
15
15
  onClose: () => void;
16
16
  }
17
17
 
18
- const ResultsModal: FunctionComponent<Props> = ({ className, isOpen, onClose }) => {
18
+ const ResultsModalBase: FunctionComponent<Props> = ({ className, isOpen, onClose }) => {
19
19
  const dispatch = useDispatch();
20
20
  const translate = useTranslate();
21
21
  const { showResultsInModal } = useAppLayout();
@@ -96,4 +96,4 @@ const ResultsModal: FunctionComponent<Props> = ({ className, isOpen, onClose })
96
96
  );
97
97
  };
98
98
 
99
- export default memo(ResultsModal);
99
+ export const ResultsModal = memo(ResultsModalBase);
@@ -1 +1 @@
1
- export { default } from './ResultsModal';
1
+ export { ResultsModal } from './ResultsModal';
@@ -18,7 +18,7 @@ interface Props {
18
18
  onClose: () => void;
19
19
  }
20
20
 
21
- const SettingsModal: FunctionComponent<Props> = ({ className, isOpen, onClose }) => {
21
+ const SettingsModalBase: FunctionComponent<Props> = ({ className, isOpen, onClose }) => {
22
22
  const translate = useTranslate();
23
23
  const isTouchDevice = useIsTouchDevice();
24
24
 
@@ -49,4 +49,4 @@ const SettingsModal: FunctionComponent<Props> = ({ className, isOpen, onClose })
49
49
  );
50
50
  };
51
51
 
52
- export default memo(SettingsModal);
52
+ export const SettingsModal = memo(SettingsModalBase);
@@ -13,7 +13,7 @@ interface Props {
13
13
  disabled?: boolean;
14
14
  }
15
15
 
16
- const AutoGroupTilesSetting: FunctionComponent<Props> = ({ className, disabled }) => {
16
+ export const AutoGroupTilesSetting: FunctionComponent<Props> = ({ className, disabled }) => {
17
17
  const dispatch = useDispatch();
18
18
  const translate = useTranslate();
19
19
  const value = useTypedSelector(selectAutoGroupTiles);
@@ -56,5 +56,3 @@ const AutoGroupTilesSetting: FunctionComponent<Props> = ({ className, disabled }
56
56
  </div>
57
57
  );
58
58
  };
59
-
60
- export default AutoGroupTilesSetting;
@@ -1 +1 @@
1
- export { default } from './AutoGroupTilesSetting';
1
+ export { AutoGroupTilesSetting } from './AutoGroupTilesSetting';
@@ -1,27 +1,23 @@
1
- import { games, hasConfig } from '@scrabble-solver/configs';
2
1
  import { isGame } from '@scrabble-solver/types';
3
- import { ChangeEvent, FunctionComponent } from 'react';
2
+ import { ChangeEvent, FunctionComponent, useMemo } from 'react';
4
3
  import { useDispatch } from 'react-redux';
5
4
 
6
5
  import { Radio } from 'components';
7
6
  import { selectGame, selectLocale, settingsSlice, useTypedSelector } from 'state';
8
7
 
9
8
  import styles from './ConfigSetting.module.scss';
9
+ import { getOptions } from './lib';
10
10
 
11
11
  interface Props {
12
12
  className?: string;
13
13
  disabled?: boolean;
14
14
  }
15
15
 
16
- const ConfigSetting: FunctionComponent<Props> = ({ className, disabled }) => {
16
+ export const ConfigSetting: FunctionComponent<Props> = ({ className, disabled }) => {
17
17
  const dispatch = useDispatch();
18
18
  const game = useTypedSelector(selectGame);
19
19
  const locale = useTypedSelector(selectLocale);
20
- const options = Object.values(games).map((gameConfig) => ({
21
- disabled: !hasConfig(gameConfig.game, locale),
22
- label: gameConfig.name,
23
- value: gameConfig.game,
24
- }));
20
+ const options = useMemo(() => getOptions(locale), [locale]);
25
21
 
26
22
  const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
27
23
  if (isGame(event.target.value)) {
@@ -47,5 +43,3 @@ const ConfigSetting: FunctionComponent<Props> = ({ className, disabled }) => {
47
43
  </div>
48
44
  );
49
45
  };
50
-
51
- export default ConfigSetting;
@@ -1 +1 @@
1
- export { default } from './ConfigSetting';
1
+ export { ConfigSetting } from './ConfigSetting';