@lskjs/uapp
Version:
LSK universal react app wrapper
373 lines (370 loc) • 15 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.PageModule = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _initializerDefineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/initializerDefineProperty"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
var _initializerWarningHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/initializerWarningHelper"));
var _env = require("@lskjs/env");
var _err = _interopRequireDefault(require("@lskjs/err"));
var _module = _interopRequireDefault(require("@lskjs/module"));
var _bluebird = _interopRequireDefault(require("bluebird"));
var _merge = _interopRequireDefault(require("lodash/merge"));
var _mobx = require("mobx");
var _react = _interopRequireDefault(require("react"));
var _class, _descriptor;
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) { (0, _defineProperty2["default"])(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; }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
// import Loading from '@lskjs/general/Loading';
// const DEBUG = isDev && false;
// const deprecated = createLogger({ name: 'uapp/Page', type: 'deprecated' });
// DEBUG ? () => null : console.log; // eslint-disable-line no-console
// const DEBUG = true;
var PageModule = (_class = /*#__PURE__*/function (_Module) {
(0, _inherits2["default"])(PageModule, _Module);
var _super = _createSuper(PageModule);
function PageModule() {
var _this;
(0, _classCallCheck2["default"])(this, PageModule);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
_this._page = 1;
(0, _initializerDefineProperty2["default"])(_this, "state", _descriptor, (0, _assertThisInitialized2["default"])(_this));
_this.components = [];
return _this;
}
(0, _createClass2["default"])(PageModule, [{
key: "beforeResolve",
value:
// rootState = null;
function beforeResolve() {
this.exit();
this.state = {};
this._page += 1;
}
}, {
key: "afterResolve",
value: function afterResolve() {
//
}
}, {
key: "wait",
value: function () {
var _wait = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(promise) {
var beforePageId, res, err, afterPageId;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
beforePageId = this._page;
_context.prev = 1;
_context.next = 4;
return promise;
case 4:
res = _context.sent;
_context.next = 10;
break;
case 7:
_context.prev = 7;
_context.t0 = _context["catch"](1);
err = _context.t0;
case 10:
afterPageId = this._page;
if (!(beforePageId !== afterPageId)) {
_context.next = 13;
break;
}
throw new _err["default"]('page.cancel');
case 13:
if (!err) {
_context.next = 15;
break;
}
throw err;
case 15:
return _context.abrupt("return", res);
case 16:
case "end":
return _context.stop();
}
}, _callee, this, [[1, 7]]);
}));
function wait(_x) {
return _wait.apply(this, arguments);
}
return wait;
}()
}, {
key: "getRootState",
value: function getRootState() {
if (this.rootState) return this.rootState;
if (this.uapp && this.uapp.getRootState) return this.uapp.getRootState();
if (this.app && this.app.getRootState) return this.app.getRootState();
return {
__page__: 123
};
}
}, {
key: "getMeta",
value: function getMeta() {
var meta = this.state && this.state.meta || {};
var title = (this.state.metas || []).map(function (t) {
return t.title;
}).reverse().join(' - ');
return _objectSpread(_objectSpread({}, meta), {}, {
title: title
});
}
}, {
key: "onExit",
value: function onExit(fn) {
this.log.trace('onExit()');
var _this$state$onExit = this.state.onExit,
onExit = _this$state$onExit === void 0 ? [] : _this$state$onExit;
this.setState({
onExit: [].concat((0, _toConsumableArray2["default"])(onExit), [fn])
});
return this;
}
}, {
key: "exit",
value: function () {
var _exit = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
var onExit;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
this.log.trace('exit()');
onExit = this.state.onExit;
if (!(onExit && onExit.length)) {
_context2.next = 6;
break;
}
_context2.next = 5;
return _bluebird["default"].map(onExit, function (fn) {
return fn();
});
case 5:
this.state.onExit = [];
case 6:
case "end":
return _context2.stop();
}
}, _callee2, this);
}));
function exit() {
return _exit.apply(this, arguments);
}
return exit;
}()
}, {
key: "setState",
value: function setState() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
this.log.trace('setState()');
this.state = _objectSpread(_objectSpread({}, this.state), state);
return this;
}
}, {
key: "catchError",
value: function catchError(err) {
this.log.error('error()', err);
if (_env.isDev) {
if (this.app && this.app.onError) this.app.onError(err);
}
// if (isDev) {
// if (err.message) {
// console.error('Page.error:', err.message); // eslint-disable-line no-console
// if (err.stack) console.error(err.stack); // eslint-disable-line no-console
// } else {
// console.error(err); // eslint-disable-line no-console
// }
// }
// if (__CLIENT__ && this.uapp.checkVersion) {
// // / !!!!!!!!!!!!!
// this.uapp.checkVersion();
// }
throw err;
}
}, {
key: "loading",
value: function loading() {
this.log.trace('loading()');
if (!arguments.length) return this.component('Loading...');
return this.component.apply(this, arguments);
}
}, {
key: "next",
value: function () {
var _next2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(_next) {
var res;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
this.log.trace('next()');
if (!this.disabled) {
_context3.next = 3;
break;
}
return _context3.abrupt("return", this);
case 3:
_context3.prev = 3;
_context3.next = 6;
return _next();
case 6:
res = _context3.sent;
return _context3.abrupt("return", res);
case 10:
_context3.prev = 10;
_context3.t0 = _context3["catch"](3);
return _context3.abrupt("return", this.catchError(_context3.t0));
case 13:
case "end":
return _context3.stop();
}
}, _callee3, this, [[3, 10]]);
}));
function next(_x2) {
return _next2.apply(this, arguments);
}
return next;
}()
}, {
key: "meta",
value: function meta(_meta) {
this.log.trace('meta()', JSON.stringify(this.state.metas), _meta);
if (!this.state.metas) this.state.metas = [];
this.state.metas.push(_meta);
this.state.meta = _merge["default"].apply(void 0, [{}].concat((0, _toConsumableArray2["default"])(this.state.metas)));
return this;
}
}, {
key: "component",
value: function () {
var _component = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
var _len2,
args,
_key2,
result,
_args4 = arguments;
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
for (_len2 = _args4.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = _args4[_key2];
}
this.log.trace('component()', args[0]);
_context4.next = 4;
return args[0];
case 4:
result = _context4.sent;
if (result) {
_context4.next = 7;
break;
}
throw new _err["default"]('!component');
case 7:
if (result["default"]) {
args[0] = result["default"]; // eslint-disable-line no-param-reassign
} else {
args[0] = result; // eslint-disable-line no-param-reassign
}
// }
if (args.length > 1) {
this.components = args;
} else {
this.components = args[0]; // eslint-disable-line prefer-destructuring
}
this.log.trace('components()', this.components);
return _context4.abrupt("return", this);
case 11:
case "end":
return _context4.stop();
}
}, _callee4, this);
}));
function component() {
return _component.apply(this, arguments);
}
return component;
}()
}, {
key: "redirect",
value: function redirect() {
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
args[_key3] = arguments[_key3];
}
var redirect = args[0];
this.log.trace('redirect()', redirect);
if (this.disabled) return this;
this.state.redirect = args;
return this;
}
}, {
key: "renderComponent",
value: function renderComponent() {
this.log.trace('renderComponent()', this.state);
var Component;
var props = {};
if (Array.isArray(this.components)) {
var _this$components = (0, _slicedToArray2["default"])(this.components, 2);
Component = _this$components[0];
props = _this$components[1];
} else {
Component = this.components;
}
if (Array.isArray(this.components)) {
return /*#__PURE__*/_react["default"].createElement(this.components[0], this.components[1] || {});
}
return /*#__PURE__*/_react["default"].createElement(Component, props);
}
}, {
key: "render",
value: function render() {
this.log.trace('renderRoot()');
var children = this.renderComponent();
if (typeof children === 'undefined') {
if (_env.isDev) {
children = 'Page return empty result';
} else {
children = '';
}
}
var Provider = this.Provider;
if (!Provider) return children;
var res = /*#__PURE__*/_react["default"].createElement(Provider, {
app: this.app,
page: this
}, children);
return res;
}
}]);
return PageModule;
}(_module["default"]), (_descriptor = (0, _applyDecoratedDescriptor2["default"])(_class.prototype, "state", [_mobx.observable], {
configurable: true,
enumerable: true,
writable: true,
initializer: function initializer() {
return {};
}
})), _class);
exports.PageModule = PageModule;
var _default = PageModule;
exports["default"] = _default;
//# sourceMappingURL=PageModule.js.map