@canner/history-router
Version:
Pass a history object to let canner get the routes, params and gotTo
88 lines (71 loc) • 2.89 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _queryString = _interopRequireDefault(require("query-string"));
var HistoryRouter = function HistoryRouter(_ref) {
var _this = this;
var _ref$baseUrl = _ref.baseUrl,
baseUrl = _ref$baseUrl === void 0 ? '/' : _ref$baseUrl,
history = _ref.history;
(0, _classCallCheck2.default)(this, HistoryRouter);
(0, _defineProperty2.default)(this, "baseUrl", void 0);
(0, _defineProperty2.default)(this, "history", void 0);
(0, _defineProperty2.default)(this, "getRoutes", function () {
var pathname = _this.history.location.pathname;
var pathnameWithoutBaseUrl = pathname.substring(_this.baseUrl.length);
return deleteFirstSlash(pathnameWithoutBaseUrl).split('/');
});
(0, _defineProperty2.default)(this, "getOperator", function () {
var search = _this.history.location.search;
var qs = _queryString.default.parse(search);
return qs.operator || 'update';
});
(0, _defineProperty2.default)(this, "getPayload", function () {
return getUrlObjectParams(_this.history, 'payload');
});
(0, _defineProperty2.default)(this, "getWhere", function () {
return getUrlObjectParams(_this.history, 'where');
});
(0, _defineProperty2.default)(this, "getSort", function () {
return getUrlObjectParams(_this.history, 'sort');
});
(0, _defineProperty2.default)(this, "getPagination", function () {
return getUrlObjectParams(_this.history, 'pagination');
});
(0, _defineProperty2.default)(this, "goTo", function (_ref2) {
var pathname = _ref2.pathname,
operator = _ref2.operator,
payload = _ref2.payload,
where = _ref2.where,
sort = _ref2.sort,
pagination = _ref2.pagination;
var pathnameWithoutFirstSlash = deleteFirstSlash(pathname);
var qs = _queryString.default.stringify({
operator: operator,
payload: JSON.stringify(payload),
where: JSON.stringify(where),
sort: JSON.stringify(sort),
pagination: JSON.stringify(pagination)
});
_this.history.push("".concat(_this.baseUrl, "/").concat(pathnameWithoutFirstSlash).concat(qs ? "?".concat(qs) : ''));
});
this.baseUrl = baseUrl;
this.history = history;
};
exports.default = HistoryRouter;
function deleteFirstSlash(path) {
if (path && path[0] === '/') {
return path.substring(1);
}
return path;
}
function getUrlObjectParams(history, key) {
var search = history.location.search;
var qs = _queryString.default.parse(search);
return qs[key] ? JSON.parse(qs[key]) : {};
}