react-breadcrumbs-context
Version:
Flexible, router agnostic breadcrumbs implemented using React's context API.
69 lines • 7 kB
JavaScript
;
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==