@pantheon-systems/design-toolkit-react
Version:
Pantheon's React Design Toolkit
66 lines (63 loc) • 2.21 kB
JavaScript
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