UNPKG

@canner/history-router

Version:

Pass a history object to let canner get the routes, params and gotTo

88 lines (71 loc) 2.89 kB
"use strict"; 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]) : {}; }