UNPKG

react-view-router

Version:
65 lines (62 loc) 2.39 kB
import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import { useState, useEffect, useCallback } from 'react'; import { HistoryType } from '../history'; import { isHistory4 } from '../history-fix'; // import { RouterContext } from '../context'; function getModeFromOptions(options) { return options.routerMode || options.mode; } function useManualRouter(router, options = {}) { var _useState = useState({ isRunning: false, router, options, seed: 0 }), _useState2 = _slicedToArray(_useState, 1), $refs = _useState2[0]; var _useState3 = useState(0), _useState4 = _slicedToArray(_useState3, 2), setSeed = _useState4[1]; $refs.router = router; $refs.options = options; // eslint-disable-next-line react-hooks/rules-of-hooks // const parentRouter = getModeFromOptions(options) === HistoryType.memory ? useContext<ReactViewRouter>(RouterContext) : null; var start = useCallback((overrideOptions = {}) => { var router = $refs.router, options = $refs.options; if (!$refs.isRunning || !router.isRunning) { $refs.isRunning = true; var routes = overrideOptions.routes || options.routes; if (routes) router.use({ routes }); var mode = getModeFromOptions(overrideOptions) || getModeFromOptions(options) || HistoryType.hash; var hashType = overrideOptions.hashType || options.hashType; var history = overrideOptions.history || options.history; if (isHistory4(history)) history = history.owner; // || (mode === HistoryType.memory && parentRouter && parentRouter.mode === HistoryType.memory ? parentRouter.history : undefined); router.start({ basename: overrideOptions.basename || options.basename || '', pathname: overrideOptions.pathname || options.pathname || '', mode, hashType, history }); var resolveRouteName = overrideOptions.resolveRouteName || options.resolveRouteName; resolveRouteName && router.resolveRouteName(resolveRouteName); if (options.manual) setSeed(seed => seed + 1); } }, [$refs]); if (!options.manual) start(); useEffect(() => () => { if (router.isRunning) router.stop(); $refs.isRunning = false; }, [$refs, router]); return { router, start }; } export default useManualRouter; //# sourceMappingURL=use-manual-router.js.map