UNPKG

@pantheon-systems/design-toolkit-react

Version:
46 lines (43 loc) 2.22 kB
import _defineProperty from '@babel/runtime/helpers/defineProperty'; import PropTypes from 'prop-types'; import { useContext, useEffect } from 'react'; import { useParams, generatePath } from 'react-router-dom'; import BreadcrumbsContext from './BreadcrumbsContext.js'; import { jsx } from 'react/jsx-runtime'; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var withBreadcrumb = function withBreadcrumb(WrappedComponent) { var Bc = function Bc(props) { var _useContext = useContext(BreadcrumbsContext), register = _useContext.register, unregister = _useContext.unregister; var params = useParams(); var label = props.label, pathPattern = props.pathPattern; var path = generatePath(pathPattern, params); useEffect(function () { register(label, path); return function () { return unregister(label); }; }, [label, register, unregister, path]); return /*#__PURE__*/jsx(WrappedComponent, _objectSpread({}, props)); }; Bc.defaultProps = { children: null, label: '', pathPattern: '' }; Bc.propTypes = { children: PropTypes.node, label: PropTypes.string, /** * The absolute path to the <WrappedComponent>, with URL parameters */ pathPattern: PropTypes.string }; return Bc; }; var withBreadcrumb$1 = withBreadcrumb; export { withBreadcrumb$1 as default }; //# sourceMappingURL=withBreadcrumb.js.map