UNPKG

15.4 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports["default"] = exports.PageModule = void 0;
9
10var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
12var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
14var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
16var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
18var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
19
20var _initializerDefineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/initializerDefineProperty"));
21
22var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
23
24var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
25
26var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
27
28var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
29
30var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
31
32var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
33
34var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
35
36var _initializerWarningHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/initializerWarningHelper"));
37
38var _env = require("@lskjs/env");
39
40var _err = _interopRequireDefault(require("@lskjs/err"));
41
42var _module = _interopRequireDefault(require("@lskjs/module"));
43
44var _bluebird = _interopRequireDefault(require("bluebird"));
45
46var _merge = _interopRequireDefault(require("lodash/merge"));
47
48var _mobx = require("mobx");
49
50var _react = _interopRequireDefault(require("react"));
51
52var _class, _descriptor;
53
54function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
55
56function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
57
58function _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); }; }
59
60function _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; } }
61
62// import Loading from '@lskjs/general/Loading';
63// const DEBUG = isDev && false;
64// const deprecated = createLogger({ name: 'uapp/Page', type: 'deprecated' });
65// DEBUG ? () => null : console.log; // eslint-disable-line no-console
66// const DEBUG = true;
67var PageModule = (_class = /*#__PURE__*/function (_Module) {
68 (0, _inherits2["default"])(PageModule, _Module);
69
70 var _super = _createSuper(PageModule);
71
72 function PageModule() {
73 var _this;
74
75 (0, _classCallCheck2["default"])(this, PageModule);
76
77 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
78 args[_key] = arguments[_key];
79 }
80
81 _this = _super.call.apply(_super, [this].concat(args));
82 _this._page = 1;
83 (0, _initializerDefineProperty2["default"])(_this, "state", _descriptor, (0, _assertThisInitialized2["default"])(_this));
84 _this.components = [];
85 return _this;
86 }
87
88 (0, _createClass2["default"])(PageModule, [{
89 key: "beforeResolve",
90 value: // rootState = null;
91 function beforeResolve() {
92 this.exit();
93 this.state = {};
94 this._page += 1;
95 }
96 }, {
97 key: "afterResolve",
98 value: function afterResolve() {//
99 }
100 }, {
101 key: "wait",
102 value: function () {
103 var _wait = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(promise) {
104 var beforePageId, res, err, afterPageId;
105 return _regenerator["default"].wrap(function _callee$(_context) {
106 while (1) {
107 switch (_context.prev = _context.next) {
108 case 0:
109 beforePageId = this._page;
110 _context.prev = 1;
111 _context.next = 4;
112 return promise;
113
114 case 4:
115 res = _context.sent;
116 _context.next = 10;
117 break;
118
119 case 7:
120 _context.prev = 7;
121 _context.t0 = _context["catch"](1);
122 err = _context.t0;
123
124 case 10:
125 afterPageId = this._page;
126
127 if (!(beforePageId !== afterPageId)) {
128 _context.next = 13;
129 break;
130 }
131
132 throw new _err["default"]('page.cancel');
133
134 case 13:
135 if (!err) {
136 _context.next = 15;
137 break;
138 }
139
140 throw err;
141
142 case 15:
143 return _context.abrupt("return", res);
144
145 case 16:
146 case "end":
147 return _context.stop();
148 }
149 }
150 }, _callee, this, [[1, 7]]);
151 }));
152
153 function wait(_x) {
154 return _wait.apply(this, arguments);
155 }
156
157 return wait;
158 }()
159 }, {
160 key: "getRootState",
161 value: function getRootState() {
162 if (this.rootState) return this.rootState;
163 if (this.uapp && this.uapp.getRootState) return this.uapp.getRootState();
164 if (this.app && this.app.getRootState) return this.app.getRootState();
165 return {
166 __page__: 123
167 };
168 }
169 }, {
170 key: "getMeta",
171 value: function getMeta() {
172 var meta = this.state && this.state.meta || {};
173 var title = (this.state.metas || []).map(function (t) {
174 return t.title;
175 }).reverse().join(' - ');
176 return _objectSpread(_objectSpread({}, meta), {}, {
177 title: title
178 });
179 }
180 }, {
181 key: "onExit",
182 value: function onExit(fn) {
183 this.log.trace('onExit()');
184 var _this$state$onExit = this.state.onExit,
185 onExit = _this$state$onExit === void 0 ? [] : _this$state$onExit;
186 this.setState({
187 onExit: [].concat((0, _toConsumableArray2["default"])(onExit), [fn])
188 });
189 return this;
190 }
191 }, {
192 key: "exit",
193 value: function () {
194 var _exit = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
195 var onExit;
196 return _regenerator["default"].wrap(function _callee2$(_context2) {
197 while (1) {
198 switch (_context2.prev = _context2.next) {
199 case 0:
200 this.log.trace('exit()');
201 onExit = this.state.onExit;
202
203 if (!(onExit && onExit.length)) {
204 _context2.next = 6;
205 break;
206 }
207
208 _context2.next = 5;
209 return _bluebird["default"].map(onExit, function (fn) {
210 return fn();
211 });
212
213 case 5:
214 this.state.onExit = [];
215
216 case 6:
217 case "end":
218 return _context2.stop();
219 }
220 }
221 }, _callee2, this);
222 }));
223
224 function exit() {
225 return _exit.apply(this, arguments);
226 }
227
228 return exit;
229 }()
230 }, {
231 key: "setState",
232 value: function setState() {
233 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
234 this.log.trace('setState()');
235 this.state = _objectSpread(_objectSpread({}, this.state), state);
236 return this;
237 }
238 }, {
239 key: "catchError",
240 value: function catchError(err) {
241 this.log.error('error()', err);
242
243 if (_env.isDev) {
244 if (this.app && this.app.onError) this.app.onError(err);
245 } // if (isDev) {
246 // if (err.message) {
247 // console.error('Page.error:', err.message); // eslint-disable-line no-console
248 // if (err.stack) console.error(err.stack); // eslint-disable-line no-console
249 // } else {
250 // console.error(err); // eslint-disable-line no-console
251 // }
252 // }
253 // if (__CLIENT__ && this.uapp.checkVersion) {
254 // // / !!!!!!!!!!!!!
255 // this.uapp.checkVersion();
256 // }
257
258
259 throw err;
260 }
261 }, {
262 key: "loading",
263 value: function loading() {
264 this.log.trace('loading()');
265 if (!arguments.length) return this.component('Loading...');
266 return this.component.apply(this, arguments);
267 }
268 }, {
269 key: "next",
270 value: function () {
271 var _next2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(_next) {
272 var res;
273 return _regenerator["default"].wrap(function _callee3$(_context3) {
274 while (1) {
275 switch (_context3.prev = _context3.next) {
276 case 0:
277 this.log.trace('next()');
278
279 if (!this.disabled) {
280 _context3.next = 3;
281 break;
282 }
283
284 return _context3.abrupt("return", this);
285
286 case 3:
287 _context3.prev = 3;
288 _context3.next = 6;
289 return _next();
290
291 case 6:
292 res = _context3.sent;
293 return _context3.abrupt("return", res);
294
295 case 10:
296 _context3.prev = 10;
297 _context3.t0 = _context3["catch"](3);
298 return _context3.abrupt("return", this.catchError(_context3.t0));
299
300 case 13:
301 case "end":
302 return _context3.stop();
303 }
304 }
305 }, _callee3, this, [[3, 10]]);
306 }));
307
308 function next(_x2) {
309 return _next2.apply(this, arguments);
310 }
311
312 return next;
313 }()
314 }, {
315 key: "meta",
316 value: function meta(_meta) {
317 this.log.trace('meta()', JSON.stringify(this.state.metas), _meta);
318 if (!this.state.metas) this.state.metas = [];
319 this.state.metas.push(_meta);
320 this.state.meta = _merge["default"].apply(void 0, [{}].concat((0, _toConsumableArray2["default"])(this.state.metas)));
321 return this;
322 }
323 }, {
324 key: "component",
325 value: function () {
326 var _component = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
327 var _len2,
328 args,
329 _key2,
330 result,
331 _args4 = arguments;
332
333 return _regenerator["default"].wrap(function _callee4$(_context4) {
334 while (1) {
335 switch (_context4.prev = _context4.next) {
336 case 0:
337 for (_len2 = _args4.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
338 args[_key2] = _args4[_key2];
339 }
340
341 this.log.trace('component()', args[0]);
342 _context4.next = 4;
343 return args[0];
344
345 case 4:
346 result = _context4.sent;
347
348 if (result) {
349 _context4.next = 7;
350 break;
351 }
352
353 throw new _err["default"]('!component');
354
355 case 7:
356 if (result["default"]) {
357 args[0] = result["default"]; // eslint-disable-line no-param-reassign
358 } else {
359 args[0] = result; // eslint-disable-line no-param-reassign
360 } // }
361
362
363 if (args.length > 1) {
364 this.components = args;
365 } else {
366 this.components = args[0]; // eslint-disable-line prefer-destructuring
367 }
368
369 this.log.trace('components()', this.components);
370 return _context4.abrupt("return", this);
371
372 case 11:
373 case "end":
374 return _context4.stop();
375 }
376 }
377 }, _callee4, this);
378 }));
379
380 function component() {
381 return _component.apply(this, arguments);
382 }
383
384 return component;
385 }()
386 }, {
387 key: "redirect",
388 value: function redirect() {
389 for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
390 args[_key3] = arguments[_key3];
391 }
392
393 var redirect = args[0];
394 this.log.trace('redirect()', redirect);
395 if (this.disabled) return this;
396 this.state.redirect = args;
397 return this;
398 }
399 }, {
400 key: "renderComponent",
401 value: function renderComponent() {
402 this.log.trace('renderComponent()', this.state);
403 var Component;
404 var props = {};
405
406 if (Array.isArray(this.components)) {
407 var _this$components = (0, _slicedToArray2["default"])(this.components, 2);
408
409 Component = _this$components[0];
410 props = _this$components[1];
411 } else {
412 Component = this.components;
413 }
414
415 if (Array.isArray(this.components)) {
416 return /*#__PURE__*/_react["default"].createElement(this.components[0], this.components[1] || {});
417 }
418
419 return /*#__PURE__*/_react["default"].createElement(Component, props);
420 }
421 }, {
422 key: "render",
423 value: function render() {
424 this.log.trace('renderRoot()');
425 var children = this.renderComponent();
426
427 if (typeof children === 'undefined') {
428 if (_env.isDev) {
429 children = 'Page return empty result';
430 } else {
431 children = '';
432 }
433 }
434
435 var Provider = this.Provider;
436 if (!Provider) return children;
437
438 var res = /*#__PURE__*/_react["default"].createElement(Provider, {
439 app: this.app,
440 page: this
441 }, children);
442
443 return res;
444 }
445 }]);
446 return PageModule;
447}(_module["default"]), (_descriptor = (0, _applyDecoratedDescriptor2["default"])(_class.prototype, "state", [_mobx.observable], {
448 configurable: true,
449 enumerable: true,
450 writable: true,
451 initializer: function initializer() {
452 return {};
453 }
454})), _class);
455exports.PageModule = PageModule;
456var _default = PageModule;
457exports["default"] = _default;
458//# sourceMappingURL=PageModule.js.map
\No newline at end of file