UNPKG

@pantheon-systems/design-toolkit-react

Version:
66 lines (63 loc) 2.21 kB
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray'; import _slicedToArray from '@babel/runtime/helpers/slicedToArray'; import PropTypes from 'prop-types'; import { useState, useCallback, useMemo } from 'react'; import BreadcrumbsContext from './BreadcrumbsContext.js'; import { jsx } from 'react/jsx-runtime'; var BreadCrumbsProvider = function BreadCrumbsProvider(_ref) { var children = _ref.children; var _useState = useState([]), _useState2 = _slicedToArray(_useState, 2), crumbs = _useState2[0], setCrumbs = _useState2[1]; var _useState3 = useState([]), _useState4 = _slicedToArray(_useState3, 2), deferredCrumbIds = _useState4[0], setDeferredCrumbIds = _useState4[1]; var register = useCallback(function (label, uri) { return setCrumbs(function (prev) { return [].concat(_toConsumableArray(prev), [{ label: label, uri: uri }]); }); }, [setCrumbs]); var unregister = useCallback(function (label) { return setCrumbs(function (prev) { return prev.filter(function (crumb) { return crumb.label !== label; }); }); }, [setCrumbs]); var deferCrumb = useCallback(function (id) { return setDeferredCrumbIds(function (prev) { return [].concat(_toConsumableArray(prev), [id]); }); }, [setDeferredCrumbIds]); var resolveCrumb = useCallback(function (id) { return setDeferredCrumbIds(function (prev) { return prev.filter(function (crumbId) { return crumbId !== id; }); }); }, [setDeferredCrumbIds]); return /*#__PURE__*/jsx(BreadcrumbsContext.Provider, { value: useMemo(function () { return { crumbs: crumbs, deferredCrumbIds: deferredCrumbIds, register: register, unregister: unregister, resolveCrumb: resolveCrumb, deferCrumb: deferCrumb }; }, [crumbs, deferredCrumbIds, register, unregister, resolveCrumb, deferCrumb]), children: children }); }; BreadCrumbsProvider.propTypes = { children: PropTypes.node.isRequired }; var BreadCrumbsProvider$1 = BreadCrumbsProvider; export { BreadCrumbsProvider$1 as default }; //# sourceMappingURL=BreadcrumbsProvider.js.map