UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

58 lines (57 loc) 1.9 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useReachRouter; var _index = _interopRequireDefault(require("core-js-pure/stable/url/index.js")); var _index2 = _interopRequireDefault(require("core-js-pure/stable/url-search-params/index.js")); var _react = require("react"); var _useStep = _interopRequireDefault(require("./useStep.js")); var _useIsomorphicLayoutEffect = require("../../../../shared/helpers/useIsomorphicLayoutEffect.js"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function useReachRouter(id = null, { useLocation, navigate }) { const name = id ? `${id}-step` : 'step'; const { setFormError } = (0, _useStep.default)(id); const location = useLocation(); const onStepChange = (0, _react.useCallback)(index => { try { const url = new _index.default(location.href); url.searchParams.set(name, String(index)); navigate(url.href); } catch (error) { setFormError(error); } }, [location.href, name, navigate, setFormError]); const { setActiveIndex } = (0, _useStep.default)(id, { onStepChange }); const getIndex = (0, _react.useCallback)(() => { try { const searchParams = new _index2.default(location.search); return parseFloat(searchParams.get(name)); } catch (error) { setFormError(error); } }, [location.search, name, setFormError]); (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(() => { const routerIndex = getIndex(); if (!isNaN(routerIndex)) { setActiveIndex === null || setActiveIndex === void 0 || setActiveIndex(routerIndex, { skipStepChangeCallFromHook: true, skipStepChangeCallBeforeMounted: true }); } }, [getIndex, setActiveIndex]); return { getIndex }; } //# sourceMappingURL=useReachRouter.js.map