UNPKG

react-breadcrumbs-context

Version:

Flexible, router agnostic breadcrumbs implemented using React's context API.

69 lines 7 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); } return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = __importStar(require("react")); var Consumer_1 = require("./Consumer"); /** * Helper component for registering breadcrumbs when * rendering a component using the withCrumbs HOC */ var WithBreadcrumbWrapper = /** @class */ (function (_super) { __extends(WithBreadcrumbWrapper, _super); function WithBreadcrumbWrapper(props) { var _this = _super.call(this, props) || this; var addCrumb = props.addCrumb, crumb = props.crumb; addCrumb(crumb); return _this; } WithBreadcrumbWrapper.prototype.componentWillUnmount = function () { var _a = this.props, crumb = _a.crumb, removeCrumb = _a.removeCrumb; removeCrumb(crumb); }; WithBreadcrumbWrapper.prototype.componentDidUpdate = function (prevProps) { var _a = this.props, crumb = _a.crumb, replaceCrumb = _a.replaceCrumb; if (prevProps.crumb.title !== crumb.title || prevProps.crumb.path !== crumb.path) { replaceCrumb(prevProps.crumb, crumb); } }; WithBreadcrumbWrapper.prototype.render = function () { return this.props.children; }; return WithBreadcrumbWrapper; }(react_1.Component)); exports.withBreadcrumb = function (crumb) { return function (WrappedComponent) { return function (props) { return (react_1.default.createElement(Consumer_1.BreadcrumbsConsumer, null, function (_a) { var addCrumb = _a.addCrumb, removeCrumb = _a.removeCrumb, replaceCrumb = _a.replaceCrumb; return (react_1.default.createElement(WithBreadcrumbWrapper, { crumb: typeof crumb === 'function' ? crumb(props) : crumb, addCrumb: addCrumb, removeCrumb: removeCrumb, replaceCrumb: replaceCrumb }, react_1.default.createElement(WrappedComponent, __assign({}, props)))); })); }; }; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aEJyZWFkY3J1bWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvd2l0aEJyZWFkY3J1bWIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUF1RDtBQUV2RCx1Q0FBZ0Q7QUFVaEQ7OztHQUdHO0FBQ0g7SUFBb0MseUNBQWdCO0lBQ2xELCtCQUFZLEtBQVk7UUFBeEIsWUFDRSxrQkFBTSxLQUFLLENBQUMsU0FJYjtRQUZTLElBQUEseUJBQVEsRUFBRSxtQkFBSyxDQUFVO1FBQ2pDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTs7SUFDakIsQ0FBQztJQUVELG9EQUFvQixHQUFwQjtRQUNRLElBQUEsZUFBbUMsRUFBakMsZ0JBQUssRUFBRSw0QkFBVyxDQUFlO1FBQ3pDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNwQixDQUFDO0lBRUQsa0RBQWtCLEdBQWxCLFVBQW1CLFNBQWdCO1FBQzNCLElBQUEsZUFBb0MsRUFBbEMsZ0JBQUssRUFBRSw4QkFBWSxDQUFlO1FBQzFDLElBQ0UsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUs7WUFDckMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksRUFDbkM7WUFDQSxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTtTQUNyQztJQUNILENBQUM7SUFFRCxzQ0FBTSxHQUFOO1FBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQTtJQUM1QixDQUFDO0lBQ0gsNEJBQUM7QUFBRCxDQUFDLEFBMUJELENBQW9DLGlCQUFTLEdBMEI1QztBQUVZLFFBQUEsY0FBYyxHQUFHLFVBQzVCLEtBQTRDLElBQ3pDLE9BQUEsVUFBQyxnQkFBMEMsSUFBSyxPQUFBLFVBQUMsS0FBZ0IsSUFBSyxPQUFBLENBQ3pFLDhCQUFDLDhCQUFtQixRQUNqQixVQUFDLEVBQXVDO1FBQXJDLHNCQUFRLEVBQUUsNEJBQVcsRUFBRSw4QkFBWTtJQUFPLE9BQUEsQ0FDNUMsOEJBQUMscUJBQXFCLElBQ3BCLEtBQUssRUFBRSxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUN6RCxRQUFRLEVBQUUsUUFBUSxFQUNsQixXQUFXLEVBQUUsV0FBVyxFQUN4QixZQUFZLEVBQUUsWUFBWTtRQUUxQiw4QkFBQyxnQkFBZ0IsZUFBSyxLQUFLLEVBQUksQ0FDVCxDQUN6QjtBQVQ2QyxDQVM3QyxDQUNtQixDQUN2QixFQWIwRSxDQWExRSxFQWJvRCxDQWFwRCxFQWJJLENBYUosQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQsIENvbXBvbmVudFR5cGUgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgQnJlYWRjcnVtYnNDb25zdW1lciB9IGZyb20gJy4vQ29uc3VtZXInXG5pbXBvcnQgeyBDcnVtYiB9IGZyb20gJy4vdHlwZXMnXG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGNydW1iOiBDcnVtYlxuICBhZGRDcnVtYjogKGNydW1iOiBDcnVtYikgPT4gdm9pZFxuICByZW1vdmVDcnVtYjogKGNydW1iOiBDcnVtYikgPT4gdm9pZFxuICByZXBsYWNlQ3J1bWI6IChvbGRDcnVtYjogQ3J1bWIsIG5ld0NydW1iOiBDcnVtYikgPT4gdm9pZFxufVxuXG4vKipcbiAqIEhlbHBlciBjb21wb25lbnQgZm9yIHJlZ2lzdGVyaW5nIGJyZWFkY3J1bWJzIHdoZW5cbiAqIHJlbmRlcmluZyBhIGNvbXBvbmVudCB1c2luZyB0aGUgd2l0aENydW1icyBIT0NcbiAqL1xuY2xhc3MgV2l0aEJyZWFkY3J1bWJXcmFwcGVyIGV4dGVuZHMgQ29tcG9uZW50PFByb3BzPiB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKVxuXG4gICAgY29uc3QgeyBhZGRDcnVtYiwgY3J1bWIgfSA9IHByb3BzXG4gICAgYWRkQ3J1bWIoY3J1bWIpXG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBjb25zdCB7IGNydW1iLCByZW1vdmVDcnVtYiB9ID0gdGhpcy5wcm9wc1xuICAgIHJlbW92ZUNydW1iKGNydW1iKVxuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wczogUHJvcHMpIHtcbiAgICBjb25zdCB7IGNydW1iLCByZXBsYWNlQ3J1bWIgfSA9IHRoaXMucHJvcHNcbiAgICBpZiAoXG4gICAgICBwcmV2UHJvcHMuY3J1bWIudGl0bGUgIT09IGNydW1iLnRpdGxlIHx8XG4gICAgICBwcmV2UHJvcHMuY3J1bWIucGF0aCAhPT0gY3J1bWIucGF0aFxuICAgICkge1xuICAgICAgcmVwbGFjZUNydW1iKHByZXZQcm9wcy5jcnVtYiwgY3J1bWIpXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHdpdGhCcmVhZGNydW1iID0gPFByb3BzVHlwZSBleHRlbmRzIHt9ID0gYW55PihcbiAgY3J1bWI6IENydW1iIHwgKChwcm9wczogUHJvcHNUeXBlKSA9PiBDcnVtYilcbikgPT4gKFdyYXBwZWRDb21wb25lbnQ6IENvbXBvbmVudFR5cGU8UHJvcHNUeXBlPikgPT4gKHByb3BzOiBQcm9wc1R5cGUpID0+IChcbiAgPEJyZWFkY3J1bWJzQ29uc3VtZXI+XG4gICAgeyh7IGFkZENydW1iLCByZW1vdmVDcnVtYiwgcmVwbGFjZUNydW1iIH0pID0+IChcbiAgICAgIDxXaXRoQnJlYWRjcnVtYldyYXBwZXJcbiAgICAgICAgY3J1bWI9e3R5cGVvZiBjcnVtYiA9PT0gJ2Z1bmN0aW9uJyA/IGNydW1iKHByb3BzKSA6IGNydW1ifVxuICAgICAgICBhZGRDcnVtYj17YWRkQ3J1bWJ9XG4gICAgICAgIHJlbW92ZUNydW1iPXtyZW1vdmVDcnVtYn1cbiAgICAgICAgcmVwbGFjZUNydW1iPXtyZXBsYWNlQ3J1bWJ9XG4gICAgICA+XG4gICAgICAgIDxXcmFwcGVkQ29tcG9uZW50IHsuLi5wcm9wc30gLz5cbiAgICAgIDwvV2l0aEJyZWFkY3J1bWJXcmFwcGVyPlxuICAgICl9XG4gIDwvQnJlYWRjcnVtYnNDb25zdW1lcj5cbilcbiJdfQ==