@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.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +13 -13
- package/.next/cache/.rscinfo +1 -1
- package/.next/cache/.tsbuildinfo +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/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +4 -4
- package/.next/required-server-files.json +1 -2
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/60.js +1 -1
- package/.next/server/chunks/812.js +1 -1
- package/.next/server/chunks/974.js +1 -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/_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/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 +1 -1
- package/.next/server/webpack-api-runtime.js +1 -1
- package/.next/static/chunks/{main-b934e2c3dd3b55b5.js → main-016492249b3393e2.js} +1 -1
- package/.next/static/chunks/pages/{404-7451dd58396eaa39.js → 404-590e2a3839c1d9e0.js} +1 -1
- package/.next/static/chunks/pages/_app-ac93a74c390f2ab8.js +1 -0
- package/.next/static/chunks/pages/index-e5f1caa581e6d3b8.js +1 -0
- package/.next/static/chunks/webpack-6224d37324e372cb.js +1 -0
- package/.next/static/{IJuVKnkd8P2us9rVuan82 → ylO_ttKeJTuoqDYywao5A}/_buildManifest.js +1 -1
- package/.next/trace +23 -23
- package/LICENSE +1 -1
- package/next.config.js +3 -0
- package/package.json +11 -10
- package/src/api/getServerLoggingData.ts +1 -3
- package/src/api/index.ts +5 -5
- package/src/api/isBoardValid.ts +3 -5
- package/src/api/isCellValid.ts +4 -6
- package/src/api/isCharacterValid.ts +2 -3
- package/src/api/isRowValid.ts +3 -5
- package/src/components/Alert/Alert.tsx +1 -3
- package/src/components/Alert/index.ts +1 -1
- package/src/components/Badge/Badge.tsx +1 -3
- package/src/components/Badge/index.ts +1 -1
- package/src/components/Board/Board.tsx +3 -5
- package/src/components/Board/BoardPure.tsx +2 -2
- package/src/components/Board/components/Actions/Actions.tsx +3 -5
- package/src/components/Board/components/Actions/index.ts +1 -1
- package/src/components/Board/components/Cell/Cell.tsx +3 -5
- package/src/components/Board/components/Cell/index.ts +1 -1
- package/src/components/Board/components/InputPrompt/InputPrompt.tsx +3 -5
- package/src/components/Board/components/InputPrompt/index.ts +1 -1
- package/src/components/Board/components/ToggleDirectionButton/ToggleDirectionButton.tsx +2 -4
- package/src/components/Board/components/ToggleDirectionButton/index.ts +1 -1
- package/src/components/Board/components/index.ts +4 -4
- package/src/components/Board/hooks/index.ts +6 -6
- package/src/components/Board/hooks/useBackgroundImage.tsx +7 -9
- package/src/components/Board/hooks/useBoardStyle.ts +7 -9
- package/src/components/Board/hooks/useFloatingActions.ts +1 -3
- package/src/components/Board/hooks/useFloatingFocus.ts +1 -3
- package/src/components/Board/hooks/useFloatingInputPrompt.ts +1 -3
- package/src/components/Board/hooks/useGrid.ts +7 -9
- package/src/components/Board/index.ts +1 -1
- package/src/components/Board/lib/getBonusColor.ts +1 -3
- package/src/components/Board/lib/getPositionInGrid.ts +1 -3
- package/src/components/Board/lib/index.ts +2 -2
- package/src/components/Button/Button.tsx +3 -3
- package/src/components/Button/Link.tsx +1 -3
- package/src/components/Button/index.ts +1 -1
- package/src/components/Dictionary/Dictionary.tsx +3 -5
- package/src/components/Dictionary/index.ts +1 -1
- package/src/components/DictionaryInput/DictionaryInput.tsx +1 -3
- package/src/components/DictionaryInput/index.ts +1 -1
- package/src/components/EmptyState/EmptyState.tsx +4 -6
- package/src/components/EmptyState/index.ts +1 -1
- package/src/components/IconButton/IconButton.tsx +3 -3
- package/src/components/IconButton/Link.tsx +1 -3
- package/src/components/IconButton/index.ts +1 -1
- package/src/components/Key/Key.tsx +1 -3
- package/src/components/Key/index.ts +1 -1
- package/src/components/Keys/Arrows/Arrows.tsx +2 -4
- package/src/components/Keys/Arrows/index.ts +1 -1
- package/src/components/{keys.tsx → Keys/index.tsx} +3 -1
- package/src/components/Loading/Loading.tsx +2 -4
- package/src/components/Loading/index.ts +1 -1
- package/src/components/Logo/Logo.tsx +1 -3
- package/src/components/Logo/LogoBlueprint.tsx +2 -4
- package/src/components/Logo/index.ts +1 -1
- package/src/components/Modal/Modal.tsx +3 -3
- package/src/components/Modal/components/Section/Section.tsx +1 -3
- package/src/components/Modal/components/Section/index.ts +1 -1
- package/src/components/Modal/components/index.ts +1 -1
- package/src/components/Modal/index.ts +1 -1
- package/src/components/NavButtons/NavButtons.tsx +3 -3
- package/src/components/NavButtons/index.ts +1 -1
- package/src/components/NotFound/NotFound.tsx +2 -4
- package/src/components/NotFound/index.ts +1 -1
- package/src/components/PlainTiles/PlainTiles.tsx +10 -4
- package/src/components/PlainTiles/Tile.tsx +1 -3
- package/src/components/PlainTiles/index.ts +1 -1
- package/src/components/PlainTiles/lib/createPlainTile.ts +10 -6
- package/src/components/PlainTiles/lib/createPlainTiles.ts +2 -4
- package/src/components/PlainTiles/lib/getViewbox.ts +1 -3
- package/src/components/PlainTiles/lib/getX.ts +1 -3
- package/src/components/PlainTiles/lib/getY.ts +1 -3
- package/src/components/PlainTiles/lib/index.ts +6 -6
- package/src/components/PlainTiles/lib/randomize.ts +1 -3
- package/src/components/Progress/Progress.tsx +1 -3
- package/src/components/Progress/index.ts +1 -1
- package/src/components/Rack/Rack.tsx +9 -11
- package/src/components/Rack/components/InputPrompt/InputPrompt.tsx +3 -5
- package/src/components/Rack/components/InputPrompt/index.ts +1 -1
- package/src/components/Rack/components/RackTile/RackTile.tsx +9 -10
- package/src/components/Rack/components/RackTile/index.ts +1 -1
- package/src/components/Rack/components/index.ts +2 -2
- package/src/components/Rack/index.ts +1 -1
- package/src/components/Radio/Radio.tsx +1 -3
- package/src/components/Radio/index.ts +1 -1
- package/src/components/Results/Cell.tsx +9 -3
- package/src/components/Results/Header.tsx +2 -4
- package/src/components/Results/HeaderButton.tsx +1 -3
- package/src/components/Results/Result.tsx +2 -4
- package/src/components/Results/Results.tsx +7 -9
- package/src/components/Results/SolveButton.tsx +2 -4
- package/src/components/Results/index.ts +1 -1
- package/src/components/ResultsInput/ResultsInput.tsx +1 -3
- package/src/components/ResultsInput/index.ts +1 -1
- package/src/components/SeoMessage/SeoMessage.tsx +4 -6
- package/src/components/SeoMessage/index.ts +1 -1
- package/src/components/Solver/Solver.tsx +8 -8
- package/src/components/Solver/components/InsertButton/InsertButton.tsx +2 -4
- package/src/components/Solver/components/InsertButton/index.ts +1 -1
- package/src/components/Solver/components/ResultCandidatePicker/ResultCandidatePicker.tsx +4 -6
- package/src/components/Solver/components/ResultCandidatePicker/index.ts +1 -1
- package/src/components/Solver/components/index.ts +2 -2
- package/src/components/Solver/index.ts +1 -1
- package/src/components/Spinner/Spinner.tsx +1 -3
- package/src/components/Spinner/index.ts +1 -1
- package/src/components/Tile/Tile.tsx +2 -4
- package/src/components/Tile/TilePure.tsx +2 -2
- package/src/components/Tile/index.ts +1 -1
- package/src/components/Tooltip/TooltipTrigger.tsx +5 -3
- package/src/components/index.ts +24 -25
- package/src/hooks/index.ts +13 -13
- package/src/hooks/useAppLayout.ts +19 -15
- package/src/hooks/useColumns.ts +2 -4
- package/src/hooks/useDirection.ts +1 -3
- package/src/hooks/useEffectOnce.ts +8 -2
- package/src/hooks/useIsTouchDevice.ts +2 -4
- package/src/hooks/useLanguage.ts +1 -3
- package/src/hooks/useLatest.ts +1 -3
- package/src/hooks/useLocalStorage.ts +1 -3
- package/src/hooks/useMedia.ts +1 -3
- package/src/hooks/useMediaQueries.ts +2 -4
- package/src/hooks/useMediaQuery.ts +2 -4
- package/src/hooks/useOnWindowResize.ts +1 -3
- package/src/hooks/useViewportSize.ts +2 -4
- package/src/i18n/i18n.ts +1 -3
- package/src/i18n/index.ts +1 -1
- package/src/lib/arrayEquals.ts +1 -3
- package/src/lib/createArray.ts +1 -3
- package/src/lib/createComparator.ts +3 -5
- package/src/lib/createGridOf.ts +2 -4
- package/src/lib/createKeyComparator.ts +6 -5
- package/src/lib/createKeyboardNavigation.ts +2 -4
- package/src/lib/createNullMovingComparator.test.ts +1 -1
- package/src/lib/createNullMovingComparator.ts +1 -3
- package/src/lib/createRegExp.ts +1 -3
- package/src/lib/createStringComparator.ts +5 -3
- package/src/lib/detectLocale.ts +1 -3
- package/src/lib/extractCharacters.test.ts +3 -2
- package/src/lib/extractCharacters.ts +17 -5
- package/src/lib/extractCharactersByCase.test.ts +1 -1
- package/src/lib/extractCharactersByCase.ts +2 -4
- package/src/lib/extractInputValue.ts +1 -3
- package/src/lib/findCell.ts +1 -3
- package/src/lib/getCellSize.ts +3 -5
- package/src/lib/getCoordinate.ts +1 -3
- package/src/lib/getCoordinates.ts +2 -4
- package/src/lib/getRemainingTiles.ts +8 -5
- package/src/lib/getRemainingTilesCount.ts +1 -3
- package/src/lib/getRemainingTilesGroups.ts +3 -5
- package/src/lib/getTileSizes.ts +1 -3
- package/src/lib/getTotalRemainingTilesCount.ts +1 -3
- package/src/lib/groupResults.ts +3 -5
- package/src/lib/guessLocale.ts +2 -4
- package/src/lib/index.ts +39 -39
- package/src/lib/inverseDirection.ts +1 -3
- package/src/lib/isCtrl.ts +1 -3
- package/src/lib/isMac.ts +3 -4
- package/src/lib/isRegExp.ts +1 -3
- package/src/lib/isStringArray.ts +1 -3
- package/src/lib/isUpperCase.ts +1 -3
- package/src/lib/memoize.ts +18 -20
- package/src/lib/noop.ts +1 -3
- package/src/lib/numberComparator.ts +1 -3
- package/src/lib/resultMatchesCellFilter.ts +1 -3
- package/src/lib/reverseComparator.ts +1 -3
- package/src/lib/sortGroupedResults.ts +2 -4
- package/src/lib/sortResults.ts +5 -7
- package/src/lib/unorderedArraysEqual.ts +2 -4
- package/src/lib/zipCharactersAndTiles.ts +1 -3
- package/src/modals/DictionaryModal/DictionaryModal.tsx +2 -2
- package/src/modals/DictionaryModal/index.ts +1 -1
- package/src/modals/KeyMapModal/KeyMapModal.tsx +2 -2
- package/src/modals/KeyMapModal/components/Mapping/Mapping.tsx +1 -3
- package/src/modals/KeyMapModal/components/Mapping/index.ts +1 -1
- package/src/modals/KeyMapModal/components/index.ts +1 -1
- package/src/modals/KeyMapModal/index.ts +1 -1
- package/src/modals/MenuModal/MenuModal.tsx +2 -2
- package/src/modals/MenuModal/index.ts +1 -1
- package/src/modals/RemainingTilesModal/RemainingTilesModal.tsx +2 -2
- package/src/modals/RemainingTilesModal/components/Character/Character.tsx +1 -3
- package/src/modals/RemainingTilesModal/components/Character/index.ts +1 -1
- package/src/modals/RemainingTilesModal/components/index.ts +1 -1
- package/src/modals/RemainingTilesModal/index.ts +1 -1
- package/src/modals/ResultsModal/ResultsModal.tsx +2 -2
- package/src/modals/ResultsModal/index.ts +1 -1
- package/src/modals/SettingsModal/SettingsModal.tsx +2 -2
- package/src/modals/SettingsModal/components/AutoGroupTilesSetting/AutoGroupTilesSetting.tsx +1 -3
- package/src/modals/SettingsModal/components/AutoGroupTilesSetting/index.ts +1 -1
- package/src/modals/SettingsModal/components/ConfigSetting/ConfigSetting.tsx +4 -10
- package/src/modals/SettingsModal/components/ConfigSetting/index.ts +1 -1
- package/src/modals/SettingsModal/components/ConfigSetting/lib.ts +19 -0
- package/src/modals/SettingsModal/components/InputModeSetting/InputModeSetting.tsx +1 -3
- package/src/modals/SettingsModal/components/InputModeSetting/index.ts +1 -1
- package/src/modals/SettingsModal/components/LocaleSetting/LocaleSetting.tsx +1 -3
- package/src/modals/SettingsModal/components/LocaleSetting/index.ts +1 -1
- package/src/modals/SettingsModal/components/ShowCoordinatesSetting/ShowCoordinatesSetting.tsx +1 -3
- package/src/modals/SettingsModal/components/ShowCoordinatesSetting/index.ts +1 -1
- package/src/modals/SettingsModal/components/index.ts +5 -5
- package/src/modals/SettingsModal/index.ts +1 -1
- package/src/modals/WordsModal/WordsModal.tsx +2 -2
- package/src/modals/WordsModal/index.ts +1 -1
- package/src/modals/index.ts +7 -7
- package/src/pages/_app.tsx +2 -1
- package/src/pages/api/dictionary/[locale]/[word].ts +1 -1
- package/src/pages/api/dictionary/[locale]/index.ts +1 -1
- package/src/pages/api/solve.ts +6 -4
- package/src/pages/api/verify.ts +6 -4
- package/src/pages/api/visit.ts +2 -2
- package/src/pages/index.tsx +7 -0
- package/src/sdk/fetch.ts +1 -3
- package/src/sdk/fetchJson.ts +2 -4
- package/src/sdk/findWordDefinitions.ts +2 -4
- package/src/sdk/getDictionary.ts +2 -4
- package/src/sdk/index.ts +4 -4
- package/src/sdk/solve.ts +2 -4
- package/src/sdk/verify.ts +2 -4
- package/src/sdk/visit.ts +1 -3
- package/src/service-worker/average.ts +1 -3
- package/src/service-worker/dictionaries/expirationManager.ts +1 -3
- package/src/service-worker/dictionaries/getDictionary.ts +3 -5
- package/src/service-worker/dictionaries/getDictionaryUrl.ts +1 -3
- package/src/service-worker/dictionaries/index.ts +2 -2
- package/src/service-worker/dictionaries/revalidateDictionary.ts +3 -5
- package/src/service-worker/getTrie.ts +1 -3
- package/src/service-worker/index.ts +4 -2
- package/src/service-worker/routeSolveRequests.ts +17 -11
- package/src/service-worker/routeVerifyRequests.ts +7 -5
- package/src/serviceWorkerManager.ts +4 -4
- package/src/state/index.ts +4 -4
- package/src/state/localStorage.ts +10 -12
- package/src/state/sagas.ts +5 -2
- package/src/state/selectors.ts +2 -5
- package/src/state/slices/boardInitialState.ts +6 -7
- package/src/state/slices/boardSlice.ts +5 -7
- package/src/state/slices/cellFilterInitialState.ts +1 -3
- package/src/state/slices/cellFilterSlice.ts +2 -4
- package/src/state/slices/dictionaryInitialState.ts +2 -4
- package/src/state/slices/dictionarySlice.ts +2 -4
- package/src/state/slices/index.ts +16 -16
- package/src/state/slices/rackInitialState.ts +2 -4
- package/src/state/slices/rackSlice.ts +2 -4
- package/src/state/slices/resultsInitialState.ts +1 -3
- package/src/state/slices/resultsSlice.ts +2 -4
- package/src/state/slices/settingsInitialState.ts +2 -4
- package/src/state/slices/settingsSlice.ts +2 -4
- package/src/state/slices/solveInitialState.ts +3 -5
- package/src/state/slices/solveSlice.ts +2 -4
- package/src/state/slices/verifyInitialState.ts +2 -4
- package/src/state/slices/verifySlice.ts +2 -4
- package/src/state/store.ts +1 -3
- package/src/state/useTranslate.ts +2 -4
- package/src/state/useTypedSelector.ts +1 -3
- package/src/types/api.ts +15 -0
- package/src/types/index.ts +2 -0
- package/tsconfig.json +1 -1
- package/.next/cache/eslint/.cache_8dgz12 +0 -1
- package/.next/static/chunks/pages/_app-34618eeeff128581.js +0 -1
- package/.next/static/chunks/pages/index-d492616d9bc42176.js +0 -1
- package/.next/static/chunks/webpack-4224e970a97a4a86.js +0 -1
- package/src/components/Keys/index.ts +0 -1
- package/tsconfig.jest.json +0 -7
- /package/.next/static/{IJuVKnkd8P2us9rVuan82 → ylO_ttKeJTuoqDYywao5A}/_ssgManifest.js +0 -0
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/* eslint-disable max-lines, max-statements */
|
|
2
|
-
|
|
3
1
|
import classNames from 'classnames';
|
|
4
2
|
import {
|
|
5
3
|
CSSProperties,
|
|
@@ -27,7 +25,7 @@ interface Props {
|
|
|
27
25
|
onSubmit: FormEventHandler<HTMLFormElement>;
|
|
28
26
|
}
|
|
29
27
|
|
|
30
|
-
const
|
|
28
|
+
const InputPromptBase = forwardRef<HTMLFormElement, Props>(
|
|
31
29
|
({ className, style, value, onBlur, onChange, onSubmit, ...props }, ref) => {
|
|
32
30
|
const dispatch = useDispatch();
|
|
33
31
|
const translate = useTranslate();
|
|
@@ -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(() => {
|
|
@@ -85,6 +83,6 @@ const InputPrompt = forwardRef<HTMLFormElement, Props>(
|
|
|
85
83
|
},
|
|
86
84
|
);
|
|
87
85
|
|
|
88
|
-
export
|
|
86
|
+
export const InputPrompt = Object.assign(InputPromptBase, {
|
|
89
87
|
styles,
|
|
90
88
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { InputPrompt } from './InputPrompt';
|
|
@@ -8,7 +8,6 @@ import {
|
|
|
8
8
|
FunctionComponent,
|
|
9
9
|
KeyboardEventHandler,
|
|
10
10
|
MouseEventHandler,
|
|
11
|
-
MutableRefObject,
|
|
12
11
|
RefObject,
|
|
13
12
|
TouchEventHandler,
|
|
14
13
|
useCallback,
|
|
@@ -28,12 +27,12 @@ import {
|
|
|
28
27
|
useTypedSelector,
|
|
29
28
|
} from 'state';
|
|
30
29
|
|
|
31
|
-
import Tile from '../../../Tile';
|
|
30
|
+
import { Tile } from '../../../Tile';
|
|
32
31
|
|
|
33
32
|
import styles from './RackTile.module.scss';
|
|
34
33
|
|
|
35
34
|
interface Props {
|
|
36
|
-
activeIndexRef:
|
|
35
|
+
activeIndexRef: RefObject<number | undefined>;
|
|
37
36
|
character: string | null;
|
|
38
37
|
className?: string;
|
|
39
38
|
index: number;
|
|
@@ -45,7 +44,7 @@ interface Props {
|
|
|
45
44
|
onFocus: () => void;
|
|
46
45
|
}
|
|
47
46
|
|
|
48
|
-
const RackTile: FunctionComponent<Props> = ({
|
|
47
|
+
export const RackTile: FunctionComponent<Props> = ({
|
|
49
48
|
activeIndexRef,
|
|
50
49
|
character,
|
|
51
50
|
className,
|
|
@@ -87,7 +86,7 @@ const RackTile: FunctionComponent<Props> = ({
|
|
|
87
86
|
dispatch(rackSlice.actions.changeCharacters({ characters, index }));
|
|
88
87
|
onChange(event);
|
|
89
88
|
},
|
|
90
|
-
[config, index, onChange],
|
|
89
|
+
[config, dispatch, index, onChange],
|
|
91
90
|
);
|
|
92
91
|
|
|
93
92
|
const handleKeyDown = useMemo(() => {
|
|
@@ -101,14 +100,16 @@ const RackTile: FunctionComponent<Props> = ({
|
|
|
101
100
|
event.preventDefault();
|
|
102
101
|
event.stopPropagation();
|
|
103
102
|
const twoTilesCharacter = config.getTwoCharacterTileByPrefix(event.key);
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
|
|
104
|
+
if (twoTilesCharacter) {
|
|
105
|
+
dispatch(rackSlice.actions.changeCharacter({ character: twoTilesCharacter, index }));
|
|
106
|
+
}
|
|
106
107
|
}
|
|
107
108
|
|
|
108
109
|
onKeyDown(event);
|
|
109
110
|
},
|
|
110
111
|
});
|
|
111
|
-
}, [index, onKeyDown]);
|
|
112
|
+
}, [config, dispatch, index, onKeyDown]);
|
|
112
113
|
|
|
113
114
|
const handleMouseDown: MouseEventHandler<HTMLInputElement> = useCallback(
|
|
114
115
|
(event) => {
|
|
@@ -158,5 +159,3 @@ const RackTile: FunctionComponent<Props> = ({
|
|
|
158
159
|
/>
|
|
159
160
|
);
|
|
160
161
|
};
|
|
161
|
-
|
|
162
|
-
export default RackTile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { RackTile } from './RackTile';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { InputPrompt } from './InputPrompt';
|
|
2
|
+
export { RackTile } from './RackTile';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { Rack } from './Rack';
|
|
@@ -13,7 +13,7 @@ interface Props {
|
|
|
13
13
|
onChange: ChangeEventHandler<HTMLInputElement>;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
const Radio: FunctionComponent<Props> = ({ checked, children, className, disabled, name, value, onChange }) => (
|
|
16
|
+
export const Radio: FunctionComponent<Props> = ({ checked, children, className, disabled, name, value, onChange }) => (
|
|
17
17
|
<label
|
|
18
18
|
className={classNames(styles.radio, className, {
|
|
19
19
|
[styles.checked]: checked,
|
|
@@ -37,5 +37,3 @@ const Radio: FunctionComponent<Props> = ({ checked, children, className, disable
|
|
|
37
37
|
<div className={styles.content}>{children}</div>
|
|
38
38
|
</label>
|
|
39
39
|
);
|
|
40
|
-
|
|
41
|
-
export default Radio;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { Radio } from './Radio';
|
|
@@ -18,7 +18,15 @@ interface Props {
|
|
|
18
18
|
value: string | number;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
const Cell: FunctionComponent<Props> = ({
|
|
21
|
+
export const Cell: FunctionComponent<Props> = ({
|
|
22
|
+
children,
|
|
23
|
+
className,
|
|
24
|
+
dataTestId,
|
|
25
|
+
style,
|
|
26
|
+
translationKey,
|
|
27
|
+
tooltip,
|
|
28
|
+
value,
|
|
29
|
+
}) => {
|
|
22
30
|
const translate = useTranslate();
|
|
23
31
|
const locale = useTypedSelector(selectLocale);
|
|
24
32
|
const formattedValue = value.toLocaleString(locale);
|
|
@@ -31,5 +39,3 @@ const Cell: FunctionComponent<Props> = ({ children, className, dataTestId, style
|
|
|
31
39
|
</Tooltip>
|
|
32
40
|
);
|
|
33
41
|
};
|
|
34
|
-
|
|
35
|
-
export default Cell;
|
|
@@ -5,10 +5,10 @@ import { GeoAlt, OneTwoThree, Square, SquareA, SquareB, Squares, Words } from 'i
|
|
|
5
5
|
import { RESULTS_COLUMN_WIDTH } from 'parameters';
|
|
6
6
|
import { ResultColumnId } from 'types';
|
|
7
7
|
|
|
8
|
-
import HeaderButton from './HeaderButton';
|
|
8
|
+
import { HeaderButton } from './HeaderButton';
|
|
9
9
|
import styles from './Results.module.scss';
|
|
10
10
|
|
|
11
|
-
const
|
|
11
|
+
export const Header: FunctionComponent = () => {
|
|
12
12
|
const { resultWordWidth } = useAppLayout();
|
|
13
13
|
const columns = useColumns();
|
|
14
14
|
|
|
@@ -95,5 +95,3 @@ const Results: FunctionComponent = () => {
|
|
|
95
95
|
</div>
|
|
96
96
|
);
|
|
97
97
|
};
|
|
98
|
-
|
|
99
|
-
export default Results;
|
|
@@ -18,7 +18,7 @@ interface Props {
|
|
|
18
18
|
style?: CSSProperties;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
const HeaderButton = ({ className, Icon, id, translationKey, style }: Props): ReactElement => {
|
|
21
|
+
export const HeaderButton = ({ className, Icon, id, translationKey, style }: Props): ReactElement => {
|
|
22
22
|
const dispatch = useDispatch();
|
|
23
23
|
const translate = useTranslate();
|
|
24
24
|
const sort = useTypedSelector(selectResultsSort);
|
|
@@ -52,5 +52,3 @@ const HeaderButton = ({ className, Icon, id, translationKey, style }: Props): Re
|
|
|
52
52
|
</Tooltip>
|
|
53
53
|
);
|
|
54
54
|
};
|
|
55
|
-
|
|
56
|
-
export default HeaderButton;
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from 'state';
|
|
15
15
|
import { ResultColumnId } from 'types';
|
|
16
16
|
|
|
17
|
-
import Cell from './Cell';
|
|
17
|
+
import { Cell } from './Cell';
|
|
18
18
|
import styles from './Results.module.scss';
|
|
19
19
|
import { ResultData } from './types';
|
|
20
20
|
|
|
@@ -24,7 +24,7 @@ interface Props {
|
|
|
24
24
|
style?: CSSProperties;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
const Result = ({ data, index, style }: Props): ReactElement => {
|
|
27
|
+
export const Result = ({ data, index, style }: Props): ReactElement => {
|
|
28
28
|
const {
|
|
29
29
|
highlightedIndex,
|
|
30
30
|
results = [],
|
|
@@ -118,5 +118,3 @@ const Result = ({ data, index, style }: Props): ReactElement => {
|
|
|
118
118
|
</button>
|
|
119
119
|
);
|
|
120
120
|
};
|
|
121
|
-
|
|
122
|
-
export default Result;
|
|
@@ -16,14 +16,14 @@ import {
|
|
|
16
16
|
useTypedSelector,
|
|
17
17
|
} from 'state';
|
|
18
18
|
|
|
19
|
-
import EmptyState from '../EmptyState';
|
|
20
|
-
import Loading from '../Loading';
|
|
21
|
-
import ResultsInput from '../ResultsInput';
|
|
19
|
+
import { EmptyState } from '../EmptyState';
|
|
20
|
+
import { Loading } from '../Loading';
|
|
21
|
+
import { ResultsInput } from '../ResultsInput';
|
|
22
22
|
|
|
23
|
-
import Header from './Header';
|
|
24
|
-
import Result from './Result';
|
|
23
|
+
import { Header } from './Header';
|
|
24
|
+
import { Result } from './Result';
|
|
25
25
|
import styles from './Results.module.scss';
|
|
26
|
-
import SolveButton from './SolveButton';
|
|
26
|
+
import { SolveButton } from './SolveButton';
|
|
27
27
|
import { ResultCallbacks, ResultData } from './types';
|
|
28
28
|
|
|
29
29
|
interface Props {
|
|
@@ -34,7 +34,7 @@ interface Props {
|
|
|
34
34
|
|
|
35
35
|
const IS_LOADING_DEBOUNCE = 100;
|
|
36
36
|
|
|
37
|
-
const Results: FunctionComponent<Props> = ({ callbacks, className, highlightedIndex }) => {
|
|
37
|
+
export const Results: FunctionComponent<Props> = ({ callbacks, className, highlightedIndex }) => {
|
|
38
38
|
const translate = useTranslate();
|
|
39
39
|
const { resultsHeight, resultsWidth } = useAppLayout();
|
|
40
40
|
const locale = useTypedSelector(selectLocale);
|
|
@@ -130,5 +130,3 @@ const Results: FunctionComponent<Props> = ({ callbacks, className, highlightedIn
|
|
|
130
130
|
</div>
|
|
131
131
|
);
|
|
132
132
|
};
|
|
133
|
-
|
|
134
|
-
export default Results;
|
|
@@ -11,13 +11,13 @@ import {
|
|
|
11
11
|
useTypedSelector,
|
|
12
12
|
} from 'state';
|
|
13
13
|
|
|
14
|
-
import Button from '../Button';
|
|
14
|
+
import { Button } from '../Button';
|
|
15
15
|
|
|
16
16
|
interface Props {
|
|
17
17
|
className?: string;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
const SolveButton: FunctionComponent<Props> = ({ className }) => {
|
|
20
|
+
export const SolveButton: FunctionComponent<Props> = ({ className }) => {
|
|
21
21
|
const dispatch = useDispatch();
|
|
22
22
|
const translate = useTranslate();
|
|
23
23
|
const isLoading = useTypedSelector(selectIsLoading);
|
|
@@ -43,5 +43,3 @@ const SolveButton: FunctionComponent<Props> = ({ className }) => {
|
|
|
43
43
|
</Button>
|
|
44
44
|
);
|
|
45
45
|
};
|
|
46
|
-
|
|
47
|
-
export default SolveButton;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { Results } from './Results';
|
|
@@ -11,7 +11,7 @@ interface Props {
|
|
|
11
11
|
className?: string;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
const ResultsInput: FunctionComponent<Props> = ({ className }) => {
|
|
14
|
+
export const ResultsInput: FunctionComponent<Props> = ({ className }) => {
|
|
15
15
|
const dispatch = useDispatch();
|
|
16
16
|
const translate = useTranslate();
|
|
17
17
|
const value = useTypedSelector(selectResultsQuery);
|
|
@@ -43,5 +43,3 @@ const ResultsInput: FunctionComponent<Props> = ({ className }) => {
|
|
|
43
43
|
</form>
|
|
44
44
|
);
|
|
45
45
|
};
|
|
46
|
-
|
|
47
|
-
export default ResultsInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { ResultsInput } from './ResultsInput';
|
|
@@ -8,12 +8,10 @@ const INVISIBLE_STYLE: CSSProperties = {
|
|
|
8
8
|
transform: 'translateY(-9999px)',
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
const SeoMessage: FunctionComponent = () => (
|
|
11
|
+
export const SeoMessage: FunctionComponent = () => (
|
|
12
12
|
<p style={INVISIBLE_STYLE}>
|
|
13
|
-
Scrabble Solver 2 is a free and open-source analysis tool for Scrabble, Super Scrabble
|
|
14
|
-
top scoring words using given letters and board state. Available in English, French, German,
|
|
15
|
-
Source code is available on GitHub - contributions are welcome!
|
|
13
|
+
Scrabble Solver 2 is a free and open-source analysis tool for Scrabble, Scrabble Duel, Super Scrabble, Literaki, and
|
|
14
|
+
Kelimelik. Quickly find top scoring words using given letters and board state. Available in English, French, German,
|
|
15
|
+
Persian, Polish, Romanian, Spanish, and Turkish. Source code is available on GitHub - contributions are welcome!
|
|
16
16
|
</p>
|
|
17
17
|
);
|
|
18
|
-
|
|
19
|
-
export default SeoMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { SeoMessage } from './SeoMessage';
|
|
@@ -15,12 +15,12 @@ import {
|
|
|
15
15
|
useTypedSelector,
|
|
16
16
|
} from 'state';
|
|
17
17
|
|
|
18
|
-
import Alert from '../Alert';
|
|
19
|
-
import Board from '../Board';
|
|
20
|
-
import Dictionary from '../Dictionary';
|
|
21
|
-
import DictionaryInput from '../DictionaryInput';
|
|
22
|
-
import Rack from '../Rack';
|
|
23
|
-
import Results from '../Results';
|
|
18
|
+
import { Alert } from '../Alert';
|
|
19
|
+
import { Board } from '../Board';
|
|
20
|
+
import { Dictionary } from '../Dictionary';
|
|
21
|
+
import { DictionaryInput } from '../DictionaryInput';
|
|
22
|
+
import { Rack } from '../Rack';
|
|
23
|
+
import { Results } from '../Results';
|
|
24
24
|
|
|
25
25
|
import { ResultCandidatePicker } from './components';
|
|
26
26
|
import styles from './Solver.module.scss';
|
|
@@ -30,7 +30,7 @@ interface Props {
|
|
|
30
30
|
onShowResults: () => void;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
const
|
|
33
|
+
const SolverBase: FunctionComponent<Props> = ({ className, onShowResults }) => {
|
|
34
34
|
const dispatch = useDispatch();
|
|
35
35
|
const translate = useTranslate();
|
|
36
36
|
const isTouchDevice = useIsTouchDevice();
|
|
@@ -138,4 +138,4 @@ const Solver: FunctionComponent<Props> = ({ className, onShowResults }) => {
|
|
|
138
138
|
);
|
|
139
139
|
};
|
|
140
140
|
|
|
141
|
-
export
|
|
141
|
+
export const Solver = memo(SolverBase);
|
|
@@ -5,7 +5,7 @@ import { useDispatch } from 'react-redux';
|
|
|
5
5
|
import { Check } from 'icons';
|
|
6
6
|
import { resultsSlice, selectAreResultsOutdated, selectResultCandidate, useTranslate, useTypedSelector } from 'state';
|
|
7
7
|
|
|
8
|
-
import Button from '../../../Button';
|
|
8
|
+
import { Button } from '../../../Button';
|
|
9
9
|
|
|
10
10
|
import styles from './InsertButton.module.scss';
|
|
11
11
|
|
|
@@ -13,7 +13,7 @@ interface Props {
|
|
|
13
13
|
className?: string;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
const InsertButton: FunctionComponent<Props> = ({ className }) => {
|
|
16
|
+
export const InsertButton: FunctionComponent<Props> = ({ className }) => {
|
|
17
17
|
const dispatch = useDispatch();
|
|
18
18
|
const translate = useTranslate();
|
|
19
19
|
const resultCandidate = useTypedSelector(selectResultCandidate);
|
|
@@ -38,5 +38,3 @@ const InsertButton: FunctionComponent<Props> = ({ className }) => {
|
|
|
38
38
|
/>
|
|
39
39
|
);
|
|
40
40
|
};
|
|
41
|
-
|
|
42
|
-
export default InsertButton;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { InsertButton } from './InsertButton';
|
|
@@ -14,9 +14,9 @@ import {
|
|
|
14
14
|
useTypedSelector,
|
|
15
15
|
} from 'state';
|
|
16
16
|
|
|
17
|
-
import Button from '../../../Button';
|
|
18
|
-
import Spinner from '../../../Spinner';
|
|
19
|
-
import InsertButton from '../InsertButton';
|
|
17
|
+
import { Button } from '../../../Button';
|
|
18
|
+
import { Spinner } from '../../../Spinner';
|
|
19
|
+
import { InsertButton } from '../InsertButton';
|
|
20
20
|
|
|
21
21
|
import styles from './ResultCandidatePicker.module.scss';
|
|
22
22
|
|
|
@@ -24,7 +24,7 @@ interface Props extends HTMLProps<HTMLDivElement> {
|
|
|
24
24
|
onResultClick: MouseEventHandler<HTMLButtonElement>;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
const ResultCandidatePicker: FunctionComponent<Props> = ({ className, onResultClick, ...props }) => {
|
|
27
|
+
export const ResultCandidatePicker: FunctionComponent<Props> = ({ className, onResultClick, ...props }) => {
|
|
28
28
|
const dispatch = useDispatch();
|
|
29
29
|
const translate = useTranslate();
|
|
30
30
|
const locale = useTypedSelector(selectLocale);
|
|
@@ -98,5 +98,3 @@ const ResultCandidatePicker: FunctionComponent<Props> = ({ className, onResultCl
|
|
|
98
98
|
</div>
|
|
99
99
|
);
|
|
100
100
|
};
|
|
101
|
-
|
|
102
|
-
export default ResultCandidatePicker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { ResultCandidatePicker } from './ResultCandidatePicker';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { InsertButton } from './InsertButton';
|
|
2
|
+
export { ResultCandidatePicker } from './ResultCandidatePicker';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { Solver } from './Solver';
|
|
@@ -9,11 +9,9 @@ interface Props {
|
|
|
9
9
|
className?: string;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
const Spinner: FunctionComponent<Props> = ({ className }) => {
|
|
12
|
+
export const Spinner: FunctionComponent<Props> = ({ className }) => {
|
|
13
13
|
const translate = useTranslate();
|
|
14
14
|
const translation = translate('common.loading');
|
|
15
15
|
|
|
16
16
|
return <div aria-label={translation} className={classNames(styles.spinner, className)} role="status" />;
|
|
17
17
|
};
|
|
18
|
-
|
|
19
|
-
export default Spinner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { Spinner } from './Spinner';
|
|
@@ -17,7 +17,7 @@ import { useAppLayout } from 'hooks';
|
|
|
17
17
|
import { getTileSizes, noop } from 'lib';
|
|
18
18
|
import { selectLocale, useTypedSelector } from 'state';
|
|
19
19
|
|
|
20
|
-
import TilePure from './TilePure';
|
|
20
|
+
import { TilePure } from './TilePure';
|
|
21
21
|
|
|
22
22
|
interface Props {
|
|
23
23
|
'aria-label': string;
|
|
@@ -41,7 +41,7 @@ interface Props {
|
|
|
41
41
|
onTouchStart?: TouchEventHandler<HTMLInputElement>;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
const Tile: FunctionComponent<Props> = ({
|
|
44
|
+
export const Tile: FunctionComponent<Props> = ({
|
|
45
45
|
'aria-label': ariaLabel,
|
|
46
46
|
autoFocus,
|
|
47
47
|
className,
|
|
@@ -108,5 +108,3 @@ const Tile: FunctionComponent<Props> = ({
|
|
|
108
108
|
/>
|
|
109
109
|
);
|
|
110
110
|
};
|
|
111
|
-
|
|
112
|
-
export default Tile;
|
|
@@ -40,7 +40,7 @@ interface Props {
|
|
|
40
40
|
onTouchStart?: TouchEventHandler<HTMLInputElement>;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
const
|
|
43
|
+
const TilePureBase: FunctionComponent<Props> = ({
|
|
44
44
|
'aria-label': ariaLabel,
|
|
45
45
|
autoFocus,
|
|
46
46
|
canShowPoints,
|
|
@@ -111,4 +111,4 @@ const TilePure: FunctionComponent<Props> = ({
|
|
|
111
111
|
</div>
|
|
112
112
|
);
|
|
113
113
|
|
|
114
|
-
export
|
|
114
|
+
export const TilePure = memo(TilePureBase);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { Tile } from './Tile';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useMergeRefs } from '@floating-ui/react';
|
|
2
2
|
import { isObject } from '@scrabble-solver/types';
|
|
3
|
-
import { HTMLProps, cloneElement, forwardRef, isValidElement } from 'react';
|
|
3
|
+
import { HTMLProps, ReactElement, RefObject, cloneElement, forwardRef, isValidElement } from 'react';
|
|
4
4
|
|
|
5
5
|
import { useTooltipContext } from './context';
|
|
6
6
|
|
|
@@ -8,8 +8,10 @@ type Props = HTMLProps<HTMLElement>;
|
|
|
8
8
|
|
|
9
9
|
export const TooltipTrigger = forwardRef<HTMLElement, Props>(({ children, ...props }, ref) => {
|
|
10
10
|
const state = useTooltipContext();
|
|
11
|
-
const childrenElement = children as
|
|
12
|
-
|
|
11
|
+
const childrenElement = children as ReactElement<{
|
|
12
|
+
ref: RefObject<HTMLElement>;
|
|
13
|
+
}>;
|
|
14
|
+
const finalRef = useMergeRefs([state.refs.setReference, ref, childrenElement.props.ref]);
|
|
13
15
|
|
|
14
16
|
if (!isValidElement(children)) {
|
|
15
17
|
throw new Error("TooltipTrigger's children are not a valid element");
|
package/src/components/index.ts
CHANGED
|
@@ -1,27 +1,26 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
14
|
-
export {
|
|
15
|
-
export {
|
|
16
|
-
export {
|
|
17
|
-
export {
|
|
18
|
-
export {
|
|
19
|
-
export {
|
|
20
|
-
export {
|
|
21
|
-
export {
|
|
22
|
-
export {
|
|
23
|
-
export {
|
|
24
|
-
export {
|
|
25
|
-
export * from './keys';
|
|
1
|
+
export { Alert } from './Alert';
|
|
2
|
+
export { Badge } from './Badge';
|
|
3
|
+
export { Board } from './Board';
|
|
4
|
+
export { Button } from './Button';
|
|
5
|
+
export { Dictionary } from './Dictionary';
|
|
6
|
+
export { DictionaryInput } from './DictionaryInput';
|
|
7
|
+
export { EmptyState } from './EmptyState';
|
|
8
|
+
export { IconButton } from './IconButton';
|
|
9
|
+
export { Key } from './Key';
|
|
10
|
+
export { Loading } from './Loading';
|
|
11
|
+
export { Logo } from './Logo';
|
|
12
|
+
export { Modal } from './Modal';
|
|
13
|
+
export { NavButtons } from './NavButtons';
|
|
14
|
+
export { NotFound } from './NotFound';
|
|
15
|
+
export { PlainTiles } from './PlainTiles';
|
|
16
|
+
export { Progress } from './Progress';
|
|
17
|
+
export { Rack } from './Rack';
|
|
18
|
+
export { Radio } from './Radio';
|
|
19
|
+
export { Results } from './Results';
|
|
20
|
+
export { ResultsInput } from './ResultsInput';
|
|
21
|
+
export { SeoMessage } from './SeoMessage';
|
|
22
|
+
export { Solver } from './Solver';
|
|
23
|
+
export { Spinner } from './Spinner';
|
|
24
|
+
export { Tile } from './Tile';
|
|
26
25
|
export * from './Keys';
|
|
27
26
|
export * from './Tooltip';
|
package/src/hooks/index.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
1
|
+
export { useAppLayout } from './useAppLayout';
|
|
2
|
+
export { useColumns } from './useColumns';
|
|
3
|
+
export { useDirection } from './useDirection';
|
|
4
|
+
export { useEffectOnce } from './useEffectOnce';
|
|
5
|
+
export { useIsTouchDevice } from './useIsTouchDevice';
|
|
6
|
+
export { useLanguage } from './useLanguage';
|
|
7
|
+
export { useLatest } from './useLatest';
|
|
8
|
+
export { useLocalStorage } from './useLocalStorage';
|
|
9
|
+
export { useMedia } from './useMedia';
|
|
10
|
+
export { useMediaQueries } from './useMediaQueries';
|
|
11
|
+
export { useMediaQuery } from './useMediaQuery';
|
|
12
|
+
export { useOnWindowResize } from './useOnWindowResize';
|
|
13
|
+
export { useViewportSize } from './useViewportSize';
|