zova-module-a-router 5.1.39 → 5.1.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,7 +15,7 @@ export interface BeanRouter extends Omit<SysRouter, '$beanFullName' | '$onionNam
15
15
  }
16
16
  export declare class BeanRouter extends BeanBase {
17
17
  private _vueRouterApp;
18
- private _eventRouterGuards;
18
+ private _routerGuardDisposers;
19
19
  private _routerViews;
20
20
  private _disposed;
21
21
  $$sysRouter: SysRouter;
@@ -1 +1 @@
1
- {"version":3,"file":"bean.router.d.ts","sourceRoot":"","sources":["../../src/bean/bean.router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,oCAAoC,EACpC,MAAM,EACN,aAAa,EACd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAqB,MAAM,MAAM,CAAC;AAGnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAW,SAAQ,IAAI,CACtC,SAAS,EACT,eAAe,GAAG,YAAY,GAAG,eAAe,CACjD;CAAG;AAEJ,qBACa,UAAW,SAAQ,QAAQ;IACtC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,SAAS,CAAS;IAG1B,WAAW,EAAE,SAAS,CAAC;IAGvB,eAAe,EAAE,aAAa,CAAC;IAE/B,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,UAAU,YAEb;IAED,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,kBAAkB,CAAC,CAAwC;IAEnE;;;;;;OAMG;IACI,0BAA0B,CAAC,KAAK,EAAE,oCAAoC,GAAG,MAAM;IAK/E,OAAO;IAId,SAAS,CAAC,WAAW;IAcrB,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM;cAOd,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,GAAG,qBAAqB;IAoB9E,aAAa,CAAC,UAAU,EAAE,kBAAkB;IAS5C,gBAAgB,CAAC,UAAU,EAAE,kBAAkB;IAO/C,kBAAkB,CAAC,KAAK,EAAE,oCAAoC;IAO9D,qBAAqB,CAAC,KAAK,EAAE,oCAAoC;IAOjE,UAAU,CAAC,KAAK,EAAE,uBAAuB,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI;IAMjE,aAAa,CAAC,KAAK,EAAE,uBAAuB,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI;IAMpE,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,IAAI;IAMjD,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,IAAI;IAM/C,WAAW,CAAC,KAAK,EAAE,oCAAoC,EAAE,QAAQ,EAAE,SAAS;CAK7E"}
1
+ {"version":3,"file":"bean.router.d.ts","sourceRoot":"","sources":["../../src/bean/bean.router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,oCAAoC,EACpC,MAAM,EACN,aAAa,EACd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAO,MAAM,MAAM,CAAC;AAIrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAW,SAAQ,IAAI,CACtC,SAAS,EACT,eAAe,GAAG,YAAY,GAAG,eAAe,CACjD;CAAG;AAEJ,qBACa,UAAW,SAAQ,QAAQ;IACtC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,qBAAqB,CAA8B;IAC3D,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,SAAS,CAAS;IAG1B,WAAW,EAAE,SAAS,CAAC;IAGvB,eAAe,EAAE,aAAa,CAAC;IAE/B,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,UAAU,YAEb;IAED,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,kBAAkB,CAAC,CAAwC;IAEnE;;;;;;OAMG;IACI,0BAA0B,CAAC,KAAK,EAAE,oCAAoC,GAAG,MAAM;IAK/E,OAAO;IAWd,SAAS,CAAC,WAAW;IAKrB,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM;cAOd,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,GAAG,qBAAqB;IAoB9E,aAAa,CAAC,UAAU,EAAE,kBAAkB;IAS5C,gBAAgB,CAAC,UAAU,EAAE,kBAAkB;IAO/C,kBAAkB,CAAC,KAAK,EAAE,oCAAoC;IAO9D,qBAAqB,CAAC,KAAK,EAAE,oCAAoC;IAOjE,UAAU,CAAC,KAAK,EAAE,uBAAuB,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI;IAIjE,aAAa,CAAC,KAAK,EAAE,uBAAuB,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI;IAIpE,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,IAAI;IAIjD,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,IAAI;IAI/C,WAAW,CAAC,KAAK,EAAE,oCAAoC,EAAE,QAAQ,EAAE,SAAS;CAK7E"}
@@ -1 +1 @@
1
- {"version":3,"file":"sys.router.d.ts","sourceRoot":"","sources":["../../src/bean/sys.router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,6BAA6B,EAC7B,oCAAoC,EACpC,4BAA4B,EAC5B,MAAM,EACN,aAAa,EACd,MAAM,oBAAoB,CAAC;AAW5B,OAAO,EAAE,QAAQ,EAA+B,MAAM,MAAM,CAAC;AAI7D,OAAO,EAEL,qBAAqB,EACrB,eAAe,EACf,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,SAAU,SAAQ,MAAM;CAAG;AAE5C,qBACa,SAAU,SAAQ,QAAQ;IACrC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,0BAA0B,CAAqB;IAEvD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM;cAId,QAAQ;IASjB,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa;IAoCpC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,qBAAqB;IAK9D,4BAA4B,CAAC,MAAM,EAAE,oBAAoB,GAAG,SAAS;IAQrE,WAAW,CAAC,CAAC,SAAS,MAAM,eAAe,EAChD,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAC5B,QAAQ,CAAC,EAAE,OAAO;IAQP,YAAY,CACvB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,OAAO,EAClB,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAAC,4BAA4B,GAAG,SAAS,CAAC;IAkB7C,cAAc,CACnB,EAAE,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GACnF,OAAO;IAYH,qBAAqB,CAC1B,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,oCAAoC,GAClD,OAAO;IAmBG,WAAW,CAAC,QAAQ,EAAE,MAAM;IAiDzC,eAAe,CAAC,KAAK,EAAE,6BAA6B,GAAG,oBAAoB,GAAG,SAAS;IAIvF,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS;IAInE,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO;IAIvD,WAAW,CAAC,CAAC,SAAS,MAAM,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM;IAS3F,YAAY,CAAC,CAAC,SAAS,MAAM,eAAe,EAC1C,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAC5B,QAAQ,CAAC,EAAE,OAAO,GACjB,MAAM,GAAG,SAAS;IAoBrB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,cAAc;CA+EvB"}
1
+ {"version":3,"file":"sys.router.d.ts","sourceRoot":"","sources":["../../src/bean/sys.router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,6BAA6B,EAC7B,oCAAoC,EACpC,4BAA4B,EAC5B,MAAM,EACN,aAAa,EACd,MAAM,oBAAoB,CAAC;AAW5B,OAAO,EAAE,QAAQ,EAA+B,MAAM,MAAM,CAAC;AAI7D,OAAO,EAEL,qBAAqB,EACrB,eAAe,EACf,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,SAAU,SAAQ,MAAM;CAAG;AAE5C,qBACa,SAAU,SAAQ,QAAQ;IACrC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,0BAA0B,CAAqB;IAEvD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM;cAId,QAAQ;IASjB,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa;IAoCpC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,qBAAqB;IAK9D,4BAA4B,CAAC,MAAM,EAAE,oBAAoB,GAAG,SAAS;IAQrE,WAAW,CAAC,CAAC,SAAS,MAAM,eAAe,EAChD,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAC5B,QAAQ,CAAC,EAAE,OAAO;IAQP,YAAY,CACvB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,OAAO,EAClB,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAAC,4BAA4B,GAAG,SAAS,CAAC;IAkB7C,cAAc,CACnB,EAAE,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GACnF,OAAO;IAYH,qBAAqB,CAC1B,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,oCAAoC,GAClD,OAAO;IAmBG,WAAW,CAAC,QAAQ,EAAE,MAAM;IAiDzC,eAAe,CAAC,KAAK,EAAE,6BAA6B,GAAG,oBAAoB,GAAG,SAAS;IAIvF,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS;IAInE,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO;IAIvD,WAAW,CAAC,CAAC,SAAS,MAAM,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM;IAS3F,YAAY,CAAC,CAAC,SAAS,MAAM,eAAe,EAC1C,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAC5B,QAAQ,CAAC,EAAE,OAAO,GACjB,MAAM,GAAG,SAAS;IAoBrB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,cAAc;CAgFvB"}
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import * as ModuleInfo from "@cabloy/module-info";
4
4
  import { combineParamsAndQuery } from "@cabloy/utils";
5
5
  import { RouterView, createMemoryHistory, createRouter, createWebHashHistory, createWebHistory, routerViewLocationKey } from "@cabloy/vue-router";
6
6
  import { Bean, Controller, Scope, Service, Sys } from "zova-module-a-bean";
7
- import { KeepAlive, Transition, createVNode, defineComponent, h, inject, shallowReactive } from "vue";
7
+ import { KeepAlive, Transition, createVNode, defineComponent, h, inject, onActivated, onBeforeUnmount, onDeactivated, shallowReactive } from "vue";
8
8
  import "vue-router";
9
9
  //#region src/model/pageData.ts
10
10
  var _dec$6;
@@ -37,6 +37,7 @@ var ModelPageData = (_dec$6 = Model(), _dec2$6 = BeanInfo({ module: "a-router" }
37
37
  //#endregion
38
38
  //#region src/lib/const.ts
39
39
  var pageRouteKey = "$$pageRoute";
40
+ var pageHostKey = "$$pageHost";
40
41
  var routerViewKey = "$$routerView";
41
42
  //#endregion
42
43
  //#region src/lib/utils.ts
@@ -331,6 +332,7 @@ var SysRouter = (_dec$5 = Sys(), _dec2$5 = BeanInfo({ module: "a-router" }), _de
331
332
  routeData = {
332
333
  name: routeNameParent,
333
334
  path,
335
+ ...route.alias ? { alias: route.alias } : {},
334
336
  component: this.createAsyncComponent(layout),
335
337
  children: [{
336
338
  ...route,
@@ -348,6 +350,25 @@ var SysRouter = (_dec$5 = Sys(), _dec2$5 = BeanInfo({ module: "a-router" }), _de
348
350
  }
349
351
  }) || _class$5) || _class$5);
350
352
  //#endregion
353
+ //#region src/lib/routerGuardDisposers.ts
354
+ var RouterGuardDisposers = class {
355
+ constructor() {
356
+ this._disposers = [];
357
+ this._disposed = false;
358
+ }
359
+ add(disposer) {
360
+ this._disposers.push(disposer);
361
+ return disposer;
362
+ }
363
+ dispose() {
364
+ if (this._disposed) return;
365
+ this._disposed = true;
366
+ const disposers = this._disposers;
367
+ this._disposers = [];
368
+ for (const disposer of disposers) disposer();
369
+ }
370
+ };
371
+ //#endregion
351
372
  //#region src/bean/bean.router.ts
352
373
  var _dec$4;
353
374
  var _dec2$4;
@@ -379,7 +400,7 @@ var BeanRouter = (_dec$4 = Bean(), _dec2$4 = BeanInfo({ module: "a-router" }), _
379
400
  constructor(...args) {
380
401
  super(...args);
381
402
  this._vueRouterApp = void 0;
382
- this._eventRouterGuards = [];
403
+ this._routerGuardDisposers = new RouterGuardDisposers();
383
404
  this._routerViews = [];
384
405
  this._disposed = false;
385
406
  _initializerDefineProperty(this, "$$sysRouter", _descriptor, this);
@@ -406,17 +427,14 @@ var BeanRouter = (_dec$4 = Bean(), _dec2$4 = BeanInfo({ module: "a-router" }), _
406
427
  return this.$$sysRouter.isSyntheticLayoutRouteRecord(route.matched[0]) ? 1 : 0;
407
428
  }
408
429
  dispose() {
409
- this.__dispose__();
410
- }
411
- __dispose__() {
412
430
  if (this._disposed) return;
413
431
  this._disposed = true;
414
- for (const fn of this._eventRouterGuards) fn();
415
- this._eventRouterGuards = [];
432
+ this._routerGuardDisposers.dispose();
416
433
  this._routerViews = [];
417
434
  const router = this._vueRouterApp;
418
435
  if (router) router.__prepareNavigation = void 0;
419
436
  }
437
+ __dispose__() {}
420
438
  __get__(prop) {
421
439
  const value = this._vueRouterApp?.[prop];
422
440
  if (value !== void 0) return value;
@@ -449,24 +467,16 @@ var BeanRouter = (_dec$4 = Bean(), _dec2$4 = BeanInfo({ module: "a-router" }), _
449
467
  for (const routerView of this._routerViews) if (routerView.forwardRoute(route)) break;
450
468
  }
451
469
  beforeEach(guard) {
452
- const fn = this._vueRouterApp.beforeEach(guard);
453
- this._eventRouterGuards.push(fn);
454
- return fn;
470
+ return this._routerGuardDisposers.add(this._vueRouterApp.beforeEach(guard));
455
471
  }
456
472
  beforeResolve(guard) {
457
- const fn = this._vueRouterApp.beforeResolve(guard);
458
- this._eventRouterGuards.push(fn);
459
- return fn;
473
+ return this._routerGuardDisposers.add(this._vueRouterApp.beforeResolve(guard));
460
474
  }
461
475
  afterEach(guard) {
462
- const fn = this._vueRouterApp.afterEach(guard);
463
- this._eventRouterGuards.push(fn);
464
- return fn;
476
+ return this._routerGuardDisposers.add(this._vueRouterApp.afterEach(guard));
465
477
  }
466
478
  onError(handler) {
467
- const fn = this._vueRouterApp.onError(handler);
468
- this._eventRouterGuards.push(fn);
469
- return fn;
479
+ return this._routerGuardDisposers.add(this._vueRouterApp.onError(handler));
470
480
  }
471
481
  setPageMeta(route, pageMeta) {
472
482
  for (const routerView of this._routerViews) routerView.setPageMeta(route, pageMeta);
@@ -529,9 +539,16 @@ var ServiceRouterGuards = (_dec$2 = Service(), _dec2$2 = BeanInfo({ module: "a-r
529
539
  onRouterGuards(router) {
530
540
  const self = this;
531
541
  router.beforeEach(async (to) => {
532
- let match = to.matched.find((item) => item.aliasOf);
533
- if (match) match = match.aliasOf;
534
- else {
542
+ const aliasMatch = to.matched.find((item) => item.aliasOf);
543
+ let match = aliasMatch;
544
+ if (aliasMatch) {
545
+ match = aliasMatch.aliasOf;
546
+ if (!match?.components || Object.keys(match.components).length === 0) {
547
+ const resLoadModule = await this._forceLoadModule(router, match?.name, match?.path);
548
+ if (resLoadModule && resLoadModule !== true) return resLoadModule;
549
+ return to.fullPath;
550
+ }
551
+ } else {
535
552
  match = to.matched[to.matched.length - 1];
536
553
  if (!await this._prepareCheck(match?.path, to.path)) return to.fullPath;
537
554
  if (router._findLegacyRoute(match?.name, match?.path)) return;
@@ -668,6 +685,7 @@ var Monkey = class extends BeanSimple {
668
685
  super(...args);
669
686
  this._beanRouter = void 0;
670
687
  this._sysRouter = void 0;
688
+ this._pageHosts = /* @__PURE__ */ new WeakMap();
671
689
  this.serviceRouterGuards = void 0;
672
690
  }
673
691
  async _getSysRouter() {
@@ -698,6 +716,7 @@ var Monkey = class extends BeanSimple {
698
716
  }
699
717
  appClose() {
700
718
  if (this.serviceRouterGuards) this.serviceRouterGuards.dispose();
719
+ this._beanRouter?.dispose();
701
720
  }
702
721
  async appReady() {
703
722
  const beanRouter = await this.getBeanRouter();
@@ -736,6 +755,13 @@ var Monkey = class extends BeanSimple {
736
755
  });
737
756
  }
738
757
  });
758
+ bean.defineProperty(beanInstance, "$pageHost", {
759
+ enumerable: false,
760
+ configurable: true,
761
+ get() {
762
+ return bean._getBeanFromHost({ name: "$$pageHost" }) ?? void 0;
763
+ }
764
+ });
739
765
  bean.defineProperty(beanInstance, "$currentRoute", {
740
766
  enumerable: false,
741
767
  configurable: true,
@@ -747,8 +773,31 @@ var Monkey = class extends BeanSimple {
747
773
  });
748
774
  }
749
775
  controllerDataPrepare(controllerData, ctx) {
776
+ if (controllerData.context.page) this._initPageHost(ctx);
750
777
  controllerData.context.route = getPageRoute(ctx);
751
778
  }
779
+ _initPageHost(ctx) {
780
+ const existing = this._pageHosts.get(ctx);
781
+ if (existing) {
782
+ ctx.bean._setBean(pageHostKey, existing);
783
+ return;
784
+ }
785
+ const pageHost = shallowReactive({ active: true });
786
+ this._pageHosts.set(ctx, pageHost);
787
+ ctx.bean._setBean(pageHostKey, pageHost);
788
+ if (!process.env.CLIENT) return;
789
+ ctx.util.instanceScope(() => {
790
+ onActivated(() => {
791
+ pageHost.active = true;
792
+ });
793
+ onDeactivated(() => {
794
+ pageHost.active = false;
795
+ });
796
+ onBeforeUnmount(() => {
797
+ pageHost.active = false;
798
+ });
799
+ });
800
+ }
752
801
  controllerDataInit(controllerData, controller) {
753
802
  if (!(controller instanceof BeanControllerPageBase)) return;
754
803
  const route = controllerData.context.route;
@@ -947,6 +996,6 @@ var components = { "routerViewEmpty": ZRouterViewEmpty };
947
996
  var ScopeModuleARouter = (_dec = Scope(), _dec2 = BeanInfo({ module: "a-router" }), _dec(_class = _dec2(_class = class ScopeModuleARouter extends BeanScopeBase {}) || _class) || _class);
948
997
  /** scope: end */
949
998
  //#endregion
950
- export { BeanRouter, BeanRouterGuardsBase, BeanRouterViewBase, ControllerRouterViewEmpty, ModelPageData, Monkey, MonkeySys, NavigationDirection, NavigationType, ScopeModuleARouter, ServiceRouterGuards, SymbolRouterHistory, SysRouter, ZRouterViewEmpty, components, config, getCurrentRoute, getPageRoute, getRealRouteName, getRouteMatched, isRouterName, pageRouteKey, routerViewKey, scrollBehavior };
999
+ export { BeanRouter, BeanRouterGuardsBase, BeanRouterViewBase, ControllerRouterViewEmpty, ModelPageData, Monkey, MonkeySys, NavigationDirection, NavigationType, ScopeModuleARouter, ServiceRouterGuards, SymbolRouterHistory, SysRouter, ZRouterViewEmpty, components, config, getCurrentRoute, getPageRoute, getRealRouteName, getRouteMatched, isRouterName, pageHostKey, pageRouteKey, routerViewKey, scrollBehavior };
951
1000
 
952
1001
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["RouterView","h","KeepAlive","Transition","BeanControllerBase","cast","pageRouteKey","routerViewKey","BeanRouterViewBase","__init__","bean","_setBean","$router","addRouterView","__dispose__","removeRouterView","backRoute","_route","forwardRoute","setPageMeta","_pageMeta","prepareRouteMeta","Error","getKeepAliveInclude","getPageHostProviders","undefined","render","slots","default","component","routeMeta","route","vnode","Component","key","componentKey","zovaHostProviders","include","_createVNode","RouterView","h","cast","Controller","pageRouteKey","BeanRouterViewBase","ControllerRouterViewEmpty","_dec","_dec2","__z_BeanInfo","module","_class","__init__","render","slots","default","component","vnode","Component","zovaHostProviders","route","$router","_createVNode"],"sources":["../src/model/pageData.ts","../src/lib/const.ts","../src/lib/utils.ts","../src/types/utils.ts","../src/bean/sys.router.ts","../src/bean/bean.router.ts","../src/bean/bean.routerGuardsBase.ts","../src/types/router.ts","../src/service/routerGuards.ts","../src/lib/routerViewBase.tsx","../src/component/routerViewEmpty/controller.tsx","../src/.metadata/component/routerViewEmpty.ts","../src/config/config.ts","../src/monkey.ts","../src/monkeySys.ts","../src/.metadata/index.ts"],"sourcesContent":["var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport { BeanModelBase, Model } from 'zova-module-a-model';\nexport let ModelPageData = (_dec = Model(), _dec2 = __z_BeanInfo({\n module: \"a-router\"\n}), _dec(_class = _dec2(_class = class ModelPageData extends BeanModelBase {\n constructor(...args) {\n super(...args);\n this._pageDataInner = void 0;\n this.current = void 0;\n }\n async __init__() {\n if (process.env.SERVER) {\n const pagePath = this.$ssr.state.pagePath;\n if (pagePath) {\n this._pageDataInner = this.getPageData(pagePath);\n this._pageDataInner = this.$ssr.state.pageData;\n this.current = this._pageDataInner;\n }\n } else {\n if (this.$ssr.isRuntimeSsrPreHydration) {\n this.current = this.$ssr.state.pageData;\n } else {\n const route = this.$pageRoute;\n this.current = route ? this.getPageData(route.path) : undefined;\n }\n }\n }\n getPageData(pagePath) {\n return this.$useStateMem({\n queryKey: ['pageData', pagePath]\n });\n }\n}) || _class) || _class);","export const pageRouteKey = '$$pageRoute';\nexport const routerViewKey = '$$routerView';","import { routerViewLocationKey } from '@cabloy/vue-router';\nimport { inject } from 'vue';\nimport { pageRouteKey } from './const.js';\nexport function getRouteMatched(route) {\n let match = route.matched.find(item => item.aliasOf);\n if (match) {\n match = match.aliasOf;\n } else {\n match = route.matched[route.matched.length - 1];\n }\n return match;\n}\nexport function getRealRouteName(name) {\n if (!name) return undefined;\n name = String(name);\n if (name.startsWith('$:')) return undefined;\n return name;\n}\nexport function isRouterName(name) {\n return !!name && name.includes(':') && !name.includes('/');\n}\nexport function getPageRoute(ctx) {\n const route = ctx.bean._getBeanFromHost({\n name: pageRouteKey\n });\n return route;\n}\nexport function getCurrentRoute(ctx) {\n const route = ctx.util.instanceScope(() => {\n return inject(routerViewLocationKey);\n });\n return route;\n}\nexport const scrollBehavior = (to, _from, savedPosition) => {\n if (savedPosition) {\n return new Promise(resolve => {\n setTimeout(() => {\n // savedPosition = Object.assign({}, savedPosition, { behavior: 'smooth' });\n resolve(savedPosition);\n }, 100);\n });\n } else if (to.hash) {\n return new Promise(resolve => {\n setTimeout(() => {\n // resolve({ el: to.hash, behavior: 'smooth' });\n resolve({\n el: to.hash\n });\n }, 200);\n });\n } else {\n return {\n left: 0,\n top: 0\n };\n }\n};","export const SymbolRouterHistory = Symbol('SymbolRouterHistory');","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport * as ModuleInfo from '@cabloy/module-info';\nimport { combineParamsAndQuery } from '@cabloy/utils';\nimport { createMemoryHistory, createRouter, createWebHashHistory, createWebHistory } from '@cabloy/vue-router';\nimport { BeanBase, cast, deepExtend, isHttpUrl } from 'zova';\nimport { Sys } from 'zova-module-a-bean';\nimport { getCurrentRoute, getRealRouteName, getRouteMatched, isRouterName } from '../lib/utils.js';\nimport { SymbolRouterHistory } from '../types/utils.js';\nexport let SysRouter = (_dec = Sys(), _dec2 = __z_BeanInfo({\n module: \"a-router\"\n}), _dec(_class = _dec2(_class = class SysRouter extends BeanBase {\n constructor(...args) {\n super(...args);\n this._vueRouterSys = void 0;\n this._syntheticLayoutRouteNames = new Set();\n }\n get router() {\n return this._vueRouterSys;\n }\n __get__(prop) {\n return this._vueRouterSys && this._vueRouterSys[prop];\n }\n async __init__() {\n // create router\n this._vueRouterSys = this.createRouter();\n // config.routes\n this._loadConfigRoutes();\n // legacy routes\n this._loadLegacyRoutes();\n }\n createRouter(options) {\n options = Object.assign({}, options);\n // matcher\n if (!options.matcher) {\n options.matcher = this._vueRouterSys?.matcher;\n }\n // routes\n if (!options.routes) {\n if (!this._vueRouterSys) {\n options.routes = [];\n }\n }\n // scrollBehavior\n if (!options.scrollBehavior) {\n options.scrollBehavior = this.scope.config.scrollBehavior;\n }\n // history\n if (!options.history) {\n const createHistory = process.env.SERVER ? createMemoryHistory : this.sys.env.ROUTER_MODE === 'history' ? createWebHistory : createWebHashHistory;\n const routeBase = process.env.SERVER || this.sys.env.ROUTER_MODE === 'history' ? this.sys.env.APP_PUBLIC_PATH : undefined;\n options.history = createHistory(routeBase);\n }\n // create\n const router = createRouter(options);\n cast(router).__hasDevtools = true;\n router[SymbolRouterHistory] = options.history;\n return router;\n }\n createAsyncComponent(component) {\n if (typeof component !== 'string') return component;\n return this.sys.meta.component.createAsyncComponent(component);\n }\n isSyntheticLayoutRouteRecord(record) {\n const canonicalRecord = record?.aliasOf ?? record;\n return typeof canonicalRecord?.name === 'string' && this._syntheticLayoutRouteNames.has(canonicalRecord.name);\n }\n getPagePath(path, options, absolute) {\n const query = options?.query;\n const params = this._normalizePageParams(options?.params);\n const pagePath = combineParamsAndQuery(path, {\n params,\n query\n });\n return absolute ? this.sys.util.getAbsoluteUrlFromPagePath(pagePath) : pagePath;\n }\n async resolveRoute(url, check404, checkAliasOf) {\n // url: should not has APP_PUBLIC_PATH prefix when not http url\n const pagePath = isHttpUrl(url) ? this.sys.util.getPagePathFromAbsoluteUrl(url) : url;\n let route = await this.ensureRoute(pagePath);\n if (check404 && route.name === '$:/:catchAll(.*)*') return;\n // aliasOf\n if (checkAliasOf) {\n const matchItem = route.matched.find(item => item.aliasOf);\n if (matchItem) {\n route = matchItem.aliasOf;\n }\n // 404\n if (check404 && route.name === '$:/:catchAll(.*)*') return;\n }\n // ok\n return route;\n }\n checkPathValid(to) {\n const _name = to && typeof to === 'object' ? to.name : undefined;\n const _path = to && typeof to === 'object' ? to.name ?? to.path : to;\n // legacy\n if (this._findLegacyRoute(_name, _path)) return true;\n // general check\n if (!_path) return true;\n const moduleName = ModuleInfo.parseName(_path);\n if (!moduleName) return true;\n return this.sys.meta.module.exists(moduleName);\n }\n checkActiveOfFullPath(fullPath, currentRoute) {\n if (!currentRoute) {\n currentRoute = getCurrentRoute(this.ctx)?.value;\n }\n if (!currentRoute) return false;\n if (currentRoute.fullPath === fullPath) return true;\n if (!currentRoute.matched || currentRoute.matched.length === 0) return false;\n return currentRoute.matched.some(routeAlias => {\n const fullPathAlias = this.getPagePath(routeAlias.path, {\n params: currentRoute.params,\n query: currentRoute.query\n });\n return fullPathAlias === fullPath;\n });\n }\n async ensureRoute(pagePath) {\n // try to resolve, support alias route\n let route = this._vueRouterSys.resolve(pagePath);\n if (route && route.name !== '$:/:catchAll(.*)*') return route;\n // try to load module\n const moduleName = ModuleInfo.parseName(pagePath);\n if (moduleName) {\n if (this.sys.meta.module.exists(moduleName)) {\n const module = this.sys.meta.module.get(moduleName);\n if (!module) {\n await this.sys.meta.module.use(moduleName);\n // try to resolve again\n route = this._vueRouterSys.resolve(pagePath);\n }\n }\n }\n return route;\n }\n\n /** @internal */\n _registerRoutes(module) {\n if (!module.resource.routes) return;\n for (const route of module.resource.routes) {\n this._registerRoute(route, module);\n }\n }\n\n /** @internal */\n _findConfigRoute(name, path) {\n name = this.getRealRouteName(name);\n return name ? this.sys.config.routes.name[name] : this.sys.config.routes.path[path];\n }\n\n /** @internal */\n _findLegacyRoute(name, path) {\n const legacyRoutes = cast(this.sys.meta).legacyRoutes;\n if (!legacyRoutes) return;\n name = this.getRealRouteName(name);\n return legacyRoutes.find(item => {\n return name ? item.name === name : item.path === path;\n });\n }\n getRouteMatched(route) {\n return getRouteMatched(route);\n }\n getRealRouteName(name) {\n return getRealRouteName(name);\n }\n isRouterName(name) {\n return isRouterName(name);\n }\n resolveName(name, options) {\n const params = cast(options)?.params;\n const query = cast(options)?.query;\n return this._resolveNameOrPath(query, query => {\n const route = this.router.resolve({\n name,\n params,\n query\n });\n return route.fullPath;\n });\n }\n getAliasPath(name, options, absolute) {\n const alias = this.sys.config.routes.name[name]?.alias;\n if (!alias) return;\n const params = this._normalizePageParams(cast(options)?.params);\n const query = cast(options)?.query;\n const aliasName = `$alias:${name}`;\n const routeAlias = this._resolveNameOrPath(query, query => {\n const route = this.router.resolve({\n name: this.router.hasRoute(aliasName) ? aliasName : name,\n params,\n query\n });\n return route.fullPath;\n });\n const pagePath = routeAlias.startsWith('/__alias__') ? routeAlias.substring('/__alias__'.length) || '/' : routeAlias;\n return absolute ? this.sys.util.getAbsoluteUrlFromPagePath(pagePath) : pagePath;\n }\n _normalizePageParams(params) {\n const paramsLocale = cast(params)?.locale;\n if (paramsLocale === undefined) return params;\n const localeCurrent = paramsLocale === true ? this.app.meta.locale.current : paramsLocale;\n const locale = localeCurrent === this.sys.config.locale.default ? undefined : localeCurrent;\n return Object.assign({}, params, {\n locale\n });\n }\n _resolveNameOrPath(query, fn) {\n const query1 = {};\n const query2 = [];\n if (query) {\n for (const key in query) {\n const value = query[key];\n if (value && typeof value === 'object') {\n query2.push([key, value]);\n } else {\n query1[key] = value;\n }\n }\n }\n // resolve\n const fullPath = fn(query1);\n // query2\n const query2str = query2.map(([key, value]) => {\n return `${encodeURIComponent(key)}=${encodeURIComponent(JSON.stringify(value))}`;\n }).join('&');\n // join\n if (!query2str) return fullPath;\n const join = Object.keys(query1).length > 0 ? '&' : '?';\n return `${fullPath}${join}${query2str}`;\n }\n _loadConfigRoutes() {\n const routesPath = this.sys.config.routes.path;\n for (const key in routesPath) {\n const route = routesPath[key];\n if (!route) continue;\n this._loadConfigRoute({\n ...route,\n path: key,\n name: `$:${key}`\n });\n }\n const routesName = this.sys.config.routes.name;\n for (const key in routesName) {\n const route = routesName[key];\n if (!route) continue;\n this._loadConfigRoute({\n ...route,\n path: route.path || route.alias,\n name: key\n });\n }\n }\n _loadLegacyRoutes() {\n const legacyRoutes = cast(this.sys.meta).legacyRoutes;\n if (!legacyRoutes) return;\n for (const route of legacyRoutes) {\n this._registerRoute(route);\n }\n }\n _loadConfigRoute(route) {\n this.router.addRoute(route);\n }\n _registerRoute(route, module) {\n // path\n let path;\n if (route.path !== undefined) {\n if (!module || route.meta?.absolute === true) {\n path = route.path;\n } else {\n path = route.path ? `/${module.info.pid}/${module.info.name}/${route.path}` : `/${module.info.pid}/${module.info.name}`;\n }\n }\n // name\n let name;\n if (route.name) {\n if (!module || route.meta?.absolute === true) {\n name = String(route.name);\n } else {\n name = `${module.info.relativeName}:${String(route.name)}`;\n }\n }\n // config route\n const configRoute = name ? this.sys.config.routes.name[name] : this.sys.config.routes.path[path];\n if (configRoute) {\n route = deepExtend({}, route, configRoute);\n }\n // name alias\n if (name && configRoute?.alias) {\n const alias = Array.isArray(configRoute.alias) ? configRoute.alias[0] : configRoute.alias;\n // add extra route\n this.router.addRoute({\n name: `$alias:${name}`,\n path: `/__alias__${alias}`,\n redirect: ''\n });\n }\n // name\n if (!name) {\n name = `$:${path}`;\n }\n // meta\n const meta = route.meta;\n // component\n const component = route.component;\n // layout / routeData\n let layout = meta?.layout;\n let routeData;\n let routeNameParent;\n if (layout === false) {\n routeData = {\n ...route,\n name,\n path,\n component,\n meta\n };\n } else {\n if (layout === undefined || layout === 'default') {\n layout = this.sys.config.layout.component.default;\n } else if (layout === 'empty') {\n layout = this.sys.config.layout.component.empty;\n }\n routeNameParent = `$:${name}`;\n routeData = {\n name: routeNameParent,\n path,\n component: this.createAsyncComponent(layout),\n children: [{\n ...route,\n name,\n path: '',\n component,\n meta\n }]\n };\n }\n // force delete\n if (this.router.hasRoute(routeNameParent)) {\n this.router.removeRoute(routeNameParent);\n }\n if (this.router.hasRoute(name)) {\n this.router.removeRoute(name);\n }\n // add\n this.router.addRoute(routeData);\n if (routeNameParent) {\n this._syntheticLayoutRouteNames.add(routeNameParent);\n }\n }\n}) || _class) || _class);","var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2;\nfunction _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\nfunction _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\nfunction _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport { BeanBase, Use } from 'zova';\nimport { Bean } from 'zova-module-a-bean';\nimport { ModelPageData } from '../model/pageData.js';\nimport { SysRouter } from './sys.router.js';\nexport let BeanRouter = (_dec = Bean(), _dec2 = __z_BeanInfo({\n module: \"a-router\"\n}), _dec3 = Use(), _dec4 = Reflect.metadata(\"design:type\", typeof SysRouter === \"undefined\" ? Object : SysRouter), _dec5 = Use(), _dec6 = Reflect.metadata(\"design:type\", typeof ModelPageData === \"undefined\" ? Object : ModelPageData), _dec(_class = _dec2(_class = (_class2 = class BeanRouter extends BeanBase {\n constructor(...args) {\n super(...args);\n this._vueRouterApp = void 0;\n this._eventRouterGuards = [];\n this._routerViews = [];\n this._disposed = false;\n _initializerDefineProperty(this, \"$$sysRouter\", _descriptor, this);\n _initializerDefineProperty(this, \"$$modelPageData\", _descriptor2, this);\n this._isEmbedded = false;\n this._embeddedView = void 0;\n this._prepareNavigation = void 0;\n }\n // for prepare pageData on server\n\n get router() {\n return this._vueRouterApp;\n }\n get isEmbedded() {\n return this._isEmbedded;\n }\n /**\n * Returns the initial RouterView depth for an embedded page-only host.\n *\n * SysRouter records the synthetic layout parents it creates. The page-only\n * host skips only those exact records; routes registered with\n * `meta.layout: false` still start at depth zero.\n */\n getEmbeddedRouterViewDepth(route) {\n if (this._embeddedView !== 'page') return 0;\n return this.$$sysRouter.isSyntheticLayoutRouteRecord(route.matched[0]) ? 1 : 0;\n }\n dispose() {\n this.__dispose__();\n }\n __dispose__() {\n if (this._disposed) return;\n this._disposed = true;\n for (const fn of this._eventRouterGuards) {\n fn();\n }\n this._eventRouterGuards = [];\n this._routerViews = [];\n const router = this._vueRouterApp;\n if (router) router.__prepareNavigation = undefined;\n }\n __get__(prop) {\n // SymbolRouter first\n const value = this._vueRouterApp?.[prop];\n if (value !== undefined) return value;\n return this.$$sysRouter?.[prop];\n }\n async __init__(mainRouterOrOptions) {\n const options = typeof mainRouterOrOptions === 'boolean' ? {\n mainRouter: mainRouterOrOptions\n } : mainRouterOrOptions ?? {};\n this._isEmbedded = options.mainRouter === false;\n this._embeddedView = options.embeddedView;\n this._prepareNavigation = options.prepareNavigation;\n // create router\n this._vueRouterApp = this.$$sysRouter.createRouter(options.routerOptions);\n const router = this._vueRouterApp;\n router.__prepareNavigation = this._prepareNavigation;\n if (!options.mainRouter) {\n // emit event\n await this.app.meta.event.emit('a-router:routerGuards', this);\n }\n }\n addRouterView(routerView) {\n this._routerViews.push(routerView);\n if (!this._isEmbedded) return;\n const route = this._vueRouterApp.currentRoute.value;\n if (route?.matched.length > 0) {\n routerView.forwardRoute(route);\n }\n }\n removeRouterView(routerView) {\n const index = this._routerViews.findIndex(item => item === routerView);\n if (index > -1) {\n this._routerViews.splice(index, 1);\n }\n }\n afterEachBackRoute(route) {\n for (const routerView of this._routerViews) {\n const res = routerView.backRoute(route);\n if (res) break;\n }\n }\n afterEachForwardRoute(route) {\n for (const routerView of this._routerViews) {\n const res = routerView.forwardRoute(route);\n if (res) break;\n }\n }\n beforeEach(guard) {\n const fn = this._vueRouterApp.beforeEach(guard);\n this._eventRouterGuards.push(fn);\n return fn;\n }\n beforeResolve(guard) {\n const fn = this._vueRouterApp.beforeResolve(guard);\n this._eventRouterGuards.push(fn);\n return fn;\n }\n afterEach(guard) {\n const fn = this._vueRouterApp.afterEach(guard);\n this._eventRouterGuards.push(fn);\n return fn;\n }\n onError(handler) {\n const fn = this._vueRouterApp.onError(handler);\n this._eventRouterGuards.push(fn);\n return fn;\n }\n setPageMeta(route, pageMeta) {\n for (const routerView of this._routerViews) {\n routerView.setPageMeta(route, pageMeta);\n }\n }\n}, _descriptor = _applyDecoratedDescriptor(_class2.prototype, \"$$sysRouter\", [_dec3, _dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, \"$$modelPageData\", [_dec5, _dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _class2)) || _class) || _class);","var _dec, _dec2, _dec3, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport { BeanBase, Virtual } from 'zova';\nimport { Bean } from 'zova-module-a-bean';\nexport let BeanRouterGuardsBase = (_dec = Bean(), _dec2 = Virtual(), _dec3 = __z_BeanInfo({\n module: \"a-router\"\n}), _dec(_class = _dec2(_class = _dec3(_class = class BeanRouterGuardsBase extends BeanBase {\n constructor(...args) {\n super(...args);\n this._eventRouterGuards = void 0;\n }\n async __init__() {\n this._eventRouterGuards = this.app.meta.event.on('a-router:routerGuards', async (router, next) => {\n this.onRouterGuards(router);\n return await next();\n });\n }\n __dispose__() {\n this.dispose();\n }\n dispose() {\n if (this._eventRouterGuards) {\n this._eventRouterGuards();\n }\n }\n onRouterGuards(_router) {}\n}) || _class) || _class) || _class);","import 'vue-router';\nexport let NavigationType = /*#__PURE__*/function (NavigationType) {\n NavigationType[\"pop\"] = \"pop\";\n NavigationType[\"push\"] = \"push\";\n return NavigationType;\n}({});\nexport let NavigationDirection = /*#__PURE__*/function (NavigationDirection) {\n NavigationDirection[\"back\"] = \"back\";\n NavigationDirection[\"forward\"] = \"forward\";\n NavigationDirection[\"unknown\"] = \"\";\n return NavigationDirection;\n}({});","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport * as ModuleInfo from '@cabloy/module-info';\nimport { Service } from 'zova-module-a-bean';\nimport { BeanRouterGuardsBase } from '../bean/bean.routerGuardsBase.js';\nimport { NavigationDirection, NavigationType } from '../types/router.js';\nexport let ServiceRouterGuards = (_dec = Service(), _dec2 = __z_BeanInfo({\n module: \"a-router\"\n}), _dec(_class = _dec2(_class = class ServiceRouterGuards extends BeanRouterGuardsBase {\n onRouterGuards(router) {\n const self = this;\n router.beforeEach(async to => {\n // match path\n let match = to.matched.find(item => item.aliasOf);\n if (match) {\n match = match.aliasOf;\n } else {\n match = to.matched[to.matched.length - 1];\n // prepareCheck\n if (!(await this._prepareCheck(match?.path, to.path))) {\n // redirect again\n return to.fullPath;\n }\n // legacy\n const legacyRoute = router._findLegacyRoute(match?.name, match?.path);\n if (legacyRoute) return;\n // alias\n const configRoute = router._findConfigRoute(match?.name, match?.path);\n const alias = configRoute?.alias;\n if (alias) {\n // force load module\n const resLoadModule = await this._forceLoadModule(router, match?.name, match?.path);\n if (resLoadModule && resLoadModule !== true) return resLoadModule;\n if (resLoadModule === false) return to.fullPath;\n const name = router.getRealRouteName(match?.name);\n if (name) {\n const routeAlias = router.getAliasPath(name, {\n params: to.params,\n query: to.query\n });\n return routeAlias || '/';\n } else {\n return {\n path: Array.isArray(alias) ? alias[0] : alias,\n params: to.params,\n query: to.query\n };\n }\n }\n }\n // force load module\n const resLoadModule = await this._forceLoadModule(router, match?.name, match?.path);\n if (resLoadModule === true) return;\n if (resLoadModule) return resLoadModule;\n // redirect again\n return to.fullPath;\n });\n router.afterEach(function (to, from, error) {\n if (error) return;\n const info = arguments[3];\n // from\n if (from.fullPath !== to.fullPath) {\n self._afterEachFrom(router, from, info);\n }\n // to\n router.afterEachForwardRoute(to);\n });\n }\n _afterEachFrom(router, from, info) {\n if (!info) return;\n const needBack = info.type === NavigationType.pop && info.direction === NavigationDirection.back || info.type === NavigationType.push && info.replace;\n if (!needBack) return;\n router.afterEachBackRoute(from);\n }\n\n // if 404 then check if module loaded\n async _prepareCheck(pathMatched, pathTo) {\n if (pathMatched === '/:catchAll(.*)*') {\n const moduleInfo = ModuleInfo.parseInfo(ModuleInfo.parseName(pathTo));\n if (moduleInfo && this.app.meta.module.exists(moduleInfo.relativeName) && !this.app.meta.module.get(moduleInfo.relativeName, false)) {\n // use module\n await this.app.meta.module.use(moduleInfo.relativeName);\n // redirect again\n return false;\n }\n }\n return true;\n }\n async _forceLoadModule(router, name, path) {\n const nameOrPath = router.getRealRouteName(name) || path;\n // module info\n const moduleInfo = ModuleInfo.parseInfo(ModuleInfo.parseName(nameOrPath));\n if (!moduleInfo) {\n // donothing\n return true;\n }\n const moduleName = moduleInfo.relativeName;\n // check if exists\n if (!this.app.meta.module.exists(moduleName)) return '/404';\n // check if loaded\n const module = this.app.meta.module.get(moduleName, false);\n if (module) return true;\n // use module\n await this.app.meta.module.use(moduleName);\n // means need load\n return false;\n }\n}) || _class) || _class);","import type { RouteLocationNormalizedLoadedGeneric } from '@cabloy/vue-router';\n\nimport { RouterView } from '@cabloy/vue-router';\nimport { h, KeepAlive, Transition } from 'vue';\nimport { BeanControllerBase, cast } from 'zova';\n\nimport type { IPageMeta } from '../types/pageMeta.js';\nimport type { IRouterViewSlotParams, IRouteViewRouteMeta } from '../types/routerView.js';\n\nimport { pageRouteKey, routerViewKey } from './const.js';\n\nexport interface IRouterViewPropsBase {}\n\nexport class BeanRouterViewBase extends BeanControllerBase implements IRouterViewPropsBase {\n protected async __init__() {\n this.bean._setBean(routerViewKey, this);\n this.$router.addRouterView(this);\n }\n\n protected __dispose__() {\n this.$router.removeRouterView(this);\n }\n\n public backRoute(_route: RouteLocationNormalizedLoadedGeneric) {\n return false;\n }\n\n public forwardRoute(_route: RouteLocationNormalizedLoadedGeneric) {\n return false;\n }\n\n public setPageMeta(_route: RouteLocationNormalizedLoadedGeneric, _pageMeta: IPageMeta) {}\n\n protected prepareRouteMeta(_route: RouteLocationNormalizedLoadedGeneric): IRouteViewRouteMeta {\n throw new Error('Not Implemented');\n }\n\n protected getKeepAliveInclude(): string[] | undefined {\n throw new Error('Not Implemented');\n }\n\n protected getPageHostProviders(): Record<string, unknown> | undefined {\n return undefined;\n }\n\n protected render() {\n const slots = {\n default: (component: IRouterViewSlotParams) => {\n const routeMeta = this.prepareRouteMeta(component.route);\n return h(Transition, null, {\n default: () => {\n const vnode = h(component.Component as any, {\n key: routeMeta.componentKey,\n route: component.route,\n });\n cast(vnode).zovaHostProviders = {\n ...this.getPageHostProviders(),\n [pageRouteKey]: component.route,\n 'a-router.bean.router': this.$router,\n };\n return [\n h(\n KeepAlive,\n {\n include: this.getKeepAliveInclude(),\n },\n [vnode],\n ),\n ];\n },\n });\n },\n };\n return <RouterView v-slots={slots}></RouterView>;\n }\n}\n","import { RouterView } from '@cabloy/vue-router';\nimport { h } from 'vue';\nimport { cast } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\n\nimport { pageRouteKey } from '../../lib/const.js';\nimport { BeanRouterViewBase } from '../../lib/routerViewBase.js';\n\n@Controller()\nexport class ControllerRouterViewEmpty extends BeanRouterViewBase {\n protected async __init__() {}\n\n protected render() {\n const slots = {\n default: component => {\n const vnode = h(component.Component);\n cast(vnode).zovaHostProviders = {\n [pageRouteKey]: component.route,\n 'a-router.bean.router': this.$router,\n };\n return vnode;\n },\n };\n return <RouterView v-slots={slots}></RouterView>;\n }\n}\n","import { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\nimport { ControllerRouterViewEmpty } from '../../component/routerViewEmpty/controller.jsx';\nexport const ZRouterViewEmpty = defineComponent(_props => {\n useController(ControllerRouterViewEmpty, undefined, undefined);\n return () => {};\n}, prepareComponentOptions());","import { scrollBehavior } from '../lib/utils.js';\nexport const config = _sys => {\n return {\n scrollBehavior\n };\n};","import * as ModuleInfo from '@cabloy/module-info';\nimport { shallowReactive } from 'vue';\nimport { BeanControllerPageBase, BeanSimple, cast, useComputed } from 'zova';\nimport { routerViewKey } from './lib/const.js';\nimport { getCurrentRoute, getPageRoute, getRealRouteName, getRouteMatched } from './lib/utils.js';\nimport { ServiceRouterGuards } from './service/routerGuards.js';\nimport { SymbolRouterHistory } from './types/utils.js';\nexport class Monkey extends BeanSimple {\n constructor(...args) {\n super(...args);\n this._beanRouter = void 0;\n this._sysRouter = void 0;\n this.serviceRouterGuards = void 0;\n }\n async _getSysRouter() {\n if (!this._sysRouter) {\n this._sysRouter = await this.sys.bean._getBean('a-router.sys.router', false);\n }\n return this._sysRouter;\n }\n async getBeanRouter() {\n if (!this._beanRouter) {\n // markReactive: true\n this._beanRouter = this.app.meta.$router = await this.bean._getBean('a-router.bean.router', true, true);\n }\n return this._beanRouter;\n }\n async appInitialize() {\n if (process.env.SERVER) {\n const pagePathFull = this.app.$getCurrentPagePath();\n if (pagePathFull) {\n const sysRouter = await this._getSysRouter();\n const route = await sysRouter.resolveRoute(pagePathFull, true, false);\n if (route) {\n // ssr profile\n this.ctx.meta.$ssr._setProfile(route.meta.ssrProfile, route.meta.ssrProfileOptions, route.meta.locale);\n // locale\n this.ctx.meta.$ssr._setLocale(route);\n }\n }\n }\n // router\n this.serviceRouterGuards = await this.bean._newBean(ServiceRouterGuards, false);\n // ssr errorHandler\n if (process.env.CLIENT) {\n this._ssrErrorHandler();\n }\n }\n async appInitialized() {\n const beanRouter = await this.getBeanRouter();\n // emit event\n await this.app.meta.event.emit('a-router:routerGuards', beanRouter);\n }\n appClose() {\n if (this.serviceRouterGuards) {\n this.serviceRouterGuards.dispose();\n }\n }\n async appReady() {\n const beanRouter = await this.getBeanRouter();\n // pagePath\n if (process.env.CLIENT && this.ctx.meta.$ssr.isRuntimeSsrPreHydration) {\n const pagePathFull = this.ctx.meta.$ssr.state.pagePathFull;\n if (pagePathFull) {\n const routerHistory = beanRouter.router[SymbolRouterHistory];\n routerHistory.push(pagePathFull);\n }\n }\n // use router\n this.app.vue.use(beanRouter);\n // ssr\n if (process.env.SERVER) {\n // push\n const pagePath = this.app.$getCurrentPagePath();\n beanRouter.push(pagePath);\n await beanRouter.isReady();\n } else if (process.env.CLIENT && this.ctx.meta.$ssr.isRuntimeSsrPreHydration) {\n await beanRouter.isReady();\n }\n }\n async beanInit(bean, beanInstance) {\n bean.defineProperty(beanInstance, '$router', {\n enumerable: false,\n configurable: true,\n get() {\n return bean._getBeanFromHost('a-router.bean.router');\n }\n });\n bean.defineProperty(beanInstance, '$routerView', {\n enumerable: false,\n configurable: true,\n get() {\n return bean._getBeanFromHost({\n name: routerViewKey\n });\n }\n });\n bean.defineProperty(beanInstance, '$pageRoute', {\n enumerable: false,\n configurable: true,\n get() {\n return useComputed(() => {\n return getPageRoute(cast(bean).ctx);\n });\n }\n });\n bean.defineProperty(beanInstance, '$currentRoute', {\n enumerable: false,\n configurable: true,\n get() {\n return useComputed(() => {\n return getCurrentRoute(cast(bean).ctx);\n });\n }\n });\n }\n controllerDataPrepare(controllerData, ctx) {\n controllerData.context.route = getPageRoute(ctx);\n }\n controllerDataInit(controllerData, controller) {\n // only for controller page\n if (!(controller instanceof BeanControllerPageBase)) return;\n const route = controllerData.context.route;\n this._initControllerRoute(route, controller);\n }\n controllerDataUpdate(controller) {\n // only for controller page\n if (!(controller instanceof BeanControllerPageBase)) return;\n const route = getPageRoute(cast(cast(controller).ctx));\n this._initControllerRoute(route, controller);\n }\n _initControllerRoute(route, controller) {\n if (!route) return;\n const routeMatched = getRouteMatched(route);\n if (!routeMatched) return;\n // check if the same\n if (controller.$routeMatched && !this._checkIfRouteSame(routeMatched, controller.$routeMatched)) return;\n // check if changed\n const changed = !controller.$route || controller.$route.fullPath !== route.fullPath;\n if (!changed) return;\n // update $params/$query\n const routeName = getRealRouteName(routeMatched.name);\n const schemaKey = routeName || String(routeMatched.path);\n let schemas;\n const moduleInfo = ModuleInfo.parseInfo(ModuleInfo.parseName(schemaKey));\n if (!moduleInfo) {\n // do nothing\n return;\n }\n if (!this.app.meta.module.exists(moduleInfo.relativeName)) {\n // do nothing\n return;\n }\n const module = this.app.meta.module.get(moduleInfo.relativeName, false);\n if (!module) {\n void this.app.meta.module.use(moduleInfo.relativeName).then(() => {\n if (cast(controller).ctx.disposed) return;\n const currentRoute = getPageRoute(cast(cast(controller).ctx));\n if (!currentRoute || currentRoute.fullPath !== route.fullPath) return;\n this._initControllerRoute(currentRoute, controller);\n }).catch(err => {\n console.error('failed to load route module', moduleInfo.relativeName, err);\n });\n return;\n }\n controller.$route = route;\n controller.$routeMatched = routeMatched;\n if (routeName) {\n schemas = module.resource.pageNameSchemas?.[schemaKey];\n } else {\n schemas = module.resource.pagePathSchemas?.[schemaKey];\n }\n if (schemas?.params) {\n const params = schemas.params.parse(route.params);\n if (!controller.$params) {\n controller.$params = process.env.SERVER ? params : shallowReactive(params);\n } else {\n // hold the same $params ref\n Object.assign(controller.$params, params);\n }\n }\n if (schemas?.query) {\n const query = schemas.query.parse(route.query);\n if (!controller.$query) {\n controller.$query = process.env.SERVER ? query : shallowReactive(query);\n } else {\n // hold the same $query ref\n Object.assign(controller.$query, query);\n }\n }\n }\n _checkIfRouteSame(route1, route2) {\n return route1.name && route1.name === route2.name || route1.path === route2.path;\n }\n _ssrErrorHandler() {\n if (!process.env.CLIENT) return;\n this.app.meta.event.on('app:errorHandler', (data, next) => {\n if (_isLoadErrorHandledClient(data)) {\n data.load.disposition = 'handled';\n }\n const err = next();\n if (!err || !(err instanceof Error)) return err;\n return this._errorHandlerDefaultClient(err, data);\n });\n }\n _errorHandlerDefaultClient(err, _data) {\n if (!process.env.CLIENT) return err;\n // client\n if ([301, 302].includes(Number(err.code))) {\n this.app.$gotoPage(err.pagePath);\n return undefined;\n }\n // COMPONENT_UNMOUNTED\n if (err.code === 600) {\n // do nothing\n return undefined;\n }\n // 401\n if (err.code === 401) {\n this.app.$gotoLogin();\n return undefined;\n }\n // not handled\n return err;\n }\n}\nfunction _isLoadErrorHandledClient(data) {\n if (data.load?.kind !== 'controller-load') return false;\n return [301, 302, 401, 600].includes(Number(data.err.code));\n}","import { BeanSimple, cast, isHttpUrl } from 'zova';\nexport class MonkeySys extends BeanSimple {\n constructor(moduleSelf) {\n super();\n this._moduleSelf = void 0;\n this._sysRouter = void 0;\n this._moduleSelf = moduleSelf;\n }\n async getSysRouter() {\n if (!this._sysRouter) {\n this._sysRouter = await this.sys.bean._getBean('a-router.sys.router', false);\n }\n return this._sysRouter;\n }\n async moduleLoading(module) {\n if (this._moduleSelf === module) return;\n if (!module.resource.routes) return;\n const sysRouter = await this.getSysRouter();\n sysRouter._registerRoutes(module);\n }\n async moduleLoaded(_module) {}\n async configLoaded(_module, _config) {}\n sysApplicationInitialize(app) {\n app.$redirect = (pagePath, status) => {\n const error = new Error();\n error.code = status ?? 302;\n if (isHttpUrl(pagePath)) {\n error.pagePath = pagePath;\n error.url = pagePath;\n } else {\n error.pagePath = pagePath;\n error.url = app.sys.util.getAbsoluteUrlFromPagePath(pagePath, true);\n }\n error.message = process.env.SERVER ? error.url : error.pagePath;\n throw error;\n };\n app.$getPagePath = (pagePath, options) => {\n const query = {\n ...options?.query\n };\n // returnTo\n if (options?.returnTo) {\n const returnTo = typeof options.returnTo === 'string' ? options.returnTo : app.$getCurrentPagePath();\n if (returnTo !== app.$getPagePathHome()) {\n query[app.sys.env.ROUTER_KEY_RETURNTO] = returnTo;\n }\n }\n return app.meta.$router.getPagePath(pagePath, {\n params: options?.params,\n query\n });\n };\n app.$getPagePathLogin = (returnTo, cause) => {\n const query = {};\n if (cause) {\n query.cause = cause;\n }\n const returnTo2 = _fixReturnTo(app, returnTo);\n return app.$getPagePath(app.sys.env.ROUTER_PAGE_LOGIN, {\n query,\n returnTo: returnTo2\n });\n };\n app.$getPagePathAccessDenied = () => {\n return app.$getPagePath('/home/base/errorAccessDenied');\n };\n app.$gotoPage = (pagePath, options) => {\n pagePath = app.$getPagePath(pagePath, options);\n // redirect\n if (process.env.SERVER || options?.forceRedirect) {\n return app.$redirect(pagePath);\n }\n // replace\n if (isHttpUrl(pagePath)) {\n window.location[options?.replace ? 'replace' : 'assign'](pagePath);\n } else {\n return app.meta.$router[options?.replace ? 'replace' : 'push'](pagePath);\n }\n };\n app.$gotoHome = options => {\n const pagePath = app.$getPagePathHome(options);\n return app.$gotoPage(pagePath, {\n ...options,\n params: undefined\n });\n };\n app.$gotoLogin = (returnTo, cause) => {\n const returnTo2 = _fixReturnTo(app, returnTo);\n if (!returnTo2 && cast(app.meta.$router.currentRoute)?.path === app.sys.env.ROUTER_PAGE_LOGIN) {\n return;\n }\n const pagePath = app.$getPagePathLogin(returnTo2, cause);\n return app.$gotoPage(pagePath);\n };\n app.$gotoAccessDenied = () => {\n const pagePath = app.$getPagePathAccessDenied();\n if (cast(app.meta.$router.currentRoute)?.path === pagePath) return;\n return app.$gotoPage(pagePath, {\n replace: true\n });\n };\n app.$gotoReturnTo = returnTo => {\n const pagePath = app.$getReturnTo(returnTo);\n return app.$gotoPage(pagePath, {\n replace: true\n });\n };\n app.$getReturnTo = returnTo => {\n // not use ??\n const pagePath = returnTo || cast(app.meta.$router.currentRoute)?.query?.[app.sys.env.ROUTER_KEY_RETURNTO] || app.$getPagePathHome();\n return pagePath;\n };\n app.$getCurrentPagePath = () => {\n if (process.env.SERVER) {\n return app.ctx.meta.$ssr.state.pagePathFull ?? app.sys.util.getPagePathFromAbsoluteUrl(app.ctx.meta.$ssr.context.req.url);\n }\n return cast(app.meta.$router.currentRoute)?.fullPath;\n };\n app.$getPagePathHome = options => {\n let params = options?.params;\n if (params?.locale === undefined) {\n params = Object.assign({}, params, {\n locale: true\n });\n }\n // not handle options?.query\n return app.meta.$router.getPagePath(app.sys.env.ROUTER_PAGE_HOME, {\n params\n });\n };\n }\n}\nfunction _fixReturnTo(app, returnTo) {\n const returnTo2 = returnTo === false ? false : typeof returnTo === 'string' ? returnTo : app.$getCurrentPagePath();\n return returnTo2 === app.sys.env.ROUTER_PAGE_LOGIN ? false : returnTo2;\n}","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\n// eslint-disable\n/** model: begin */\nexport * from '../model/pageData.js';\nimport 'zova-module-a-model';\n/** model: end */\n/** model: begin */\n\nimport 'zova';\n/** model: end */\n/** sys: begin */\nexport * from '../bean/sys.router.js';\nimport 'zova';\n/** sys: end */\n/** sys: begin */\n\nimport 'zova';\n/** sys: end */\n/** bean: begin */\nexport * from '../bean/bean.router.js';\nexport * from '../bean/bean.routerGuardsBase.js';\nimport 'zova';\n/** bean: end */\n/** bean: begin */\n\nimport 'zova';\n/** bean: end */\n/** service: begin */\nexport * from '../service/routerGuards.js';\nimport 'zova-module-a-bean';\n/** service: end */\n/** service: begin */\n\nimport 'zova';\n/** service: end */\n/** controller: begin */\nexport * from '../component/routerViewEmpty/controller.jsx';\nimport 'zova';\n/** controller: end */\n/** controller: begin */\n\nimport 'zova';\n/** controller: end */\n\n/** components: begin */\nexport * from './component/routerViewEmpty.js';\nimport { ZRouterViewEmpty } from './component/routerViewEmpty.js';\nexport const components = {\n 'routerViewEmpty': ZRouterViewEmpty\n};\nimport 'zova';\n/** components: end */\n/** config: begin */\nexport * from '../config/config.js';\n/** config: end */\n/** monkey: begin */\nexport * from '../monkey.js';\n/** monkey: end */\n/** monkeySys: begin */\nexport * from '../monkeySys.js';\n/** monkeySys: end */\n/** scope: begin */\nimport { BeanScopeBase } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\nexport let ScopeModuleARouter = (_dec = Scope(), _dec2 = __z_BeanInfo({\n module: \"a-router\"\n}), _dec(_class = _dec2(_class = class ScopeModuleARouter extends BeanScopeBase {}) || _class) || _class);\nimport 'zova';\n\n/** scope: end */"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["RouterView","h","KeepAlive","Transition","BeanControllerBase","cast","pageRouteKey","routerViewKey","BeanRouterViewBase","__init__","bean","_setBean","$router","addRouterView","__dispose__","removeRouterView","backRoute","_route","forwardRoute","setPageMeta","_pageMeta","prepareRouteMeta","Error","getKeepAliveInclude","getPageHostProviders","undefined","render","slots","default","component","routeMeta","route","vnode","Component","key","componentKey","zovaHostProviders","include","_createVNode","RouterView","h","cast","Controller","pageRouteKey","BeanRouterViewBase","ControllerRouterViewEmpty","_dec","_dec2","__z_BeanInfo","module","_class","__init__","render","slots","default","component","vnode","Component","zovaHostProviders","route","$router","_createVNode"],"sources":["../src/model/pageData.ts","../src/lib/const.ts","../src/lib/utils.ts","../src/types/utils.ts","../src/bean/sys.router.ts","../src/lib/routerGuardDisposers.ts","../src/bean/bean.router.ts","../src/bean/bean.routerGuardsBase.ts","../src/types/router.ts","../src/service/routerGuards.ts","../src/lib/routerViewBase.tsx","../src/component/routerViewEmpty/controller.tsx","../src/.metadata/component/routerViewEmpty.ts","../src/config/config.ts","../src/monkey.ts","../src/monkeySys.ts","../src/.metadata/index.ts"],"sourcesContent":["var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport { BeanModelBase, Model } from 'zova-module-a-model';\nexport let ModelPageData = (_dec = Model(), _dec2 = __z_BeanInfo({\n module: \"a-router\"\n}), _dec(_class = _dec2(_class = class ModelPageData extends BeanModelBase {\n constructor(...args) {\n super(...args);\n this._pageDataInner = void 0;\n this.current = void 0;\n }\n async __init__() {\n if (process.env.SERVER) {\n const pagePath = this.$ssr.state.pagePath;\n if (pagePath) {\n this._pageDataInner = this.getPageData(pagePath);\n this._pageDataInner = this.$ssr.state.pageData;\n this.current = this._pageDataInner;\n }\n } else {\n if (this.$ssr.isRuntimeSsrPreHydration) {\n this.current = this.$ssr.state.pageData;\n } else {\n const route = this.$pageRoute;\n this.current = route ? this.getPageData(route.path) : undefined;\n }\n }\n }\n getPageData(pagePath) {\n return this.$useStateMem({\n queryKey: ['pageData', pagePath]\n });\n }\n}) || _class) || _class);","export const pageRouteKey = '$$pageRoute';\nexport const pageHostKey = '$$pageHost';\nexport const routerViewKey = '$$routerView';","import { routerViewLocationKey } from '@cabloy/vue-router';\nimport { inject } from 'vue';\nimport { pageRouteKey } from './const.js';\nexport function getRouteMatched(route) {\n let match = route.matched.find(item => item.aliasOf);\n if (match) {\n match = match.aliasOf;\n } else {\n match = route.matched[route.matched.length - 1];\n }\n return match;\n}\nexport function getRealRouteName(name) {\n if (!name) return undefined;\n name = String(name);\n if (name.startsWith('$:')) return undefined;\n return name;\n}\nexport function isRouterName(name) {\n return !!name && name.includes(':') && !name.includes('/');\n}\nexport function getPageRoute(ctx) {\n const route = ctx.bean._getBeanFromHost({\n name: pageRouteKey\n });\n return route;\n}\nexport function getCurrentRoute(ctx) {\n const route = ctx.util.instanceScope(() => {\n return inject(routerViewLocationKey);\n });\n return route;\n}\nexport const scrollBehavior = (to, _from, savedPosition) => {\n if (savedPosition) {\n return new Promise(resolve => {\n setTimeout(() => {\n // savedPosition = Object.assign({}, savedPosition, { behavior: 'smooth' });\n resolve(savedPosition);\n }, 100);\n });\n } else if (to.hash) {\n return new Promise(resolve => {\n setTimeout(() => {\n // resolve({ el: to.hash, behavior: 'smooth' });\n resolve({\n el: to.hash\n });\n }, 200);\n });\n } else {\n return {\n left: 0,\n top: 0\n };\n }\n};","export const SymbolRouterHistory = Symbol('SymbolRouterHistory');","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport * as ModuleInfo from '@cabloy/module-info';\nimport { combineParamsAndQuery } from '@cabloy/utils';\nimport { createMemoryHistory, createRouter, createWebHashHistory, createWebHistory } from '@cabloy/vue-router';\nimport { BeanBase, cast, deepExtend, isHttpUrl } from 'zova';\nimport { Sys } from 'zova-module-a-bean';\nimport { getCurrentRoute, getRealRouteName, getRouteMatched, isRouterName } from '../lib/utils.js';\nimport { SymbolRouterHistory } from '../types/utils.js';\nexport let SysRouter = (_dec = Sys(), _dec2 = __z_BeanInfo({\n module: \"a-router\"\n}), _dec(_class = _dec2(_class = class SysRouter extends BeanBase {\n constructor(...args) {\n super(...args);\n this._vueRouterSys = void 0;\n this._syntheticLayoutRouteNames = new Set();\n }\n get router() {\n return this._vueRouterSys;\n }\n __get__(prop) {\n return this._vueRouterSys && this._vueRouterSys[prop];\n }\n async __init__() {\n // create router\n this._vueRouterSys = this.createRouter();\n // config.routes\n this._loadConfigRoutes();\n // legacy routes\n this._loadLegacyRoutes();\n }\n createRouter(options) {\n options = Object.assign({}, options);\n // matcher\n if (!options.matcher) {\n options.matcher = this._vueRouterSys?.matcher;\n }\n // routes\n if (!options.routes) {\n if (!this._vueRouterSys) {\n options.routes = [];\n }\n }\n // scrollBehavior\n if (!options.scrollBehavior) {\n options.scrollBehavior = this.scope.config.scrollBehavior;\n }\n // history\n if (!options.history) {\n const createHistory = process.env.SERVER ? createMemoryHistory : this.sys.env.ROUTER_MODE === 'history' ? createWebHistory : createWebHashHistory;\n const routeBase = process.env.SERVER || this.sys.env.ROUTER_MODE === 'history' ? this.sys.env.APP_PUBLIC_PATH : undefined;\n options.history = createHistory(routeBase);\n }\n // create\n const router = createRouter(options);\n cast(router).__hasDevtools = true;\n router[SymbolRouterHistory] = options.history;\n return router;\n }\n createAsyncComponent(component) {\n if (typeof component !== 'string') return component;\n return this.sys.meta.component.createAsyncComponent(component);\n }\n isSyntheticLayoutRouteRecord(record) {\n const canonicalRecord = record?.aliasOf ?? record;\n return typeof canonicalRecord?.name === 'string' && this._syntheticLayoutRouteNames.has(canonicalRecord.name);\n }\n getPagePath(path, options, absolute) {\n const query = options?.query;\n const params = this._normalizePageParams(options?.params);\n const pagePath = combineParamsAndQuery(path, {\n params,\n query\n });\n return absolute ? this.sys.util.getAbsoluteUrlFromPagePath(pagePath) : pagePath;\n }\n async resolveRoute(url, check404, checkAliasOf) {\n // url: should not has APP_PUBLIC_PATH prefix when not http url\n const pagePath = isHttpUrl(url) ? this.sys.util.getPagePathFromAbsoluteUrl(url) : url;\n let route = await this.ensureRoute(pagePath);\n if (check404 && route.name === '$:/:catchAll(.*)*') return;\n // aliasOf\n if (checkAliasOf) {\n const matchItem = route.matched.find(item => item.aliasOf);\n if (matchItem) {\n route = matchItem.aliasOf;\n }\n // 404\n if (check404 && route.name === '$:/:catchAll(.*)*') return;\n }\n // ok\n return route;\n }\n checkPathValid(to) {\n const _name = to && typeof to === 'object' ? to.name : undefined;\n const _path = to && typeof to === 'object' ? to.name ?? to.path : to;\n // legacy\n if (this._findLegacyRoute(_name, _path)) return true;\n // general check\n if (!_path) return true;\n const moduleName = ModuleInfo.parseName(_path);\n if (!moduleName) return true;\n return this.sys.meta.module.exists(moduleName);\n }\n checkActiveOfFullPath(fullPath, currentRoute) {\n if (!currentRoute) {\n currentRoute = getCurrentRoute(this.ctx)?.value;\n }\n if (!currentRoute) return false;\n if (currentRoute.fullPath === fullPath) return true;\n if (!currentRoute.matched || currentRoute.matched.length === 0) return false;\n return currentRoute.matched.some(routeAlias => {\n const fullPathAlias = this.getPagePath(routeAlias.path, {\n params: currentRoute.params,\n query: currentRoute.query\n });\n return fullPathAlias === fullPath;\n });\n }\n async ensureRoute(pagePath) {\n // try to resolve, support alias route\n let route = this._vueRouterSys.resolve(pagePath);\n if (route && route.name !== '$:/:catchAll(.*)*') return route;\n // try to load module\n const moduleName = ModuleInfo.parseName(pagePath);\n if (moduleName) {\n if (this.sys.meta.module.exists(moduleName)) {\n const module = this.sys.meta.module.get(moduleName);\n if (!module) {\n await this.sys.meta.module.use(moduleName);\n // try to resolve again\n route = this._vueRouterSys.resolve(pagePath);\n }\n }\n }\n return route;\n }\n\n /** @internal */\n _registerRoutes(module) {\n if (!module.resource.routes) return;\n for (const route of module.resource.routes) {\n this._registerRoute(route, module);\n }\n }\n\n /** @internal */\n _findConfigRoute(name, path) {\n name = this.getRealRouteName(name);\n return name ? this.sys.config.routes.name[name] : this.sys.config.routes.path[path];\n }\n\n /** @internal */\n _findLegacyRoute(name, path) {\n const legacyRoutes = cast(this.sys.meta).legacyRoutes;\n if (!legacyRoutes) return;\n name = this.getRealRouteName(name);\n return legacyRoutes.find(item => {\n return name ? item.name === name : item.path === path;\n });\n }\n getRouteMatched(route) {\n return getRouteMatched(route);\n }\n getRealRouteName(name) {\n return getRealRouteName(name);\n }\n isRouterName(name) {\n return isRouterName(name);\n }\n resolveName(name, options) {\n const params = cast(options)?.params;\n const query = cast(options)?.query;\n return this._resolveNameOrPath(query, query => {\n const route = this.router.resolve({\n name,\n params,\n query\n });\n return route.fullPath;\n });\n }\n getAliasPath(name, options, absolute) {\n const alias = this.sys.config.routes.name[name]?.alias;\n if (!alias) return;\n const params = this._normalizePageParams(cast(options)?.params);\n const query = cast(options)?.query;\n const aliasName = `$alias:${name}`;\n const routeAlias = this._resolveNameOrPath(query, query => {\n const route = this.router.resolve({\n name: this.router.hasRoute(aliasName) ? aliasName : name,\n params,\n query\n });\n return route.fullPath;\n });\n const pagePath = routeAlias.startsWith('/__alias__') ? routeAlias.substring('/__alias__'.length) || '/' : routeAlias;\n return absolute ? this.sys.util.getAbsoluteUrlFromPagePath(pagePath) : pagePath;\n }\n _normalizePageParams(params) {\n const paramsLocale = cast(params)?.locale;\n if (paramsLocale === undefined) return params;\n const localeCurrent = paramsLocale === true ? this.app.meta.locale.current : paramsLocale;\n const locale = localeCurrent === this.sys.config.locale.default ? undefined : localeCurrent;\n return Object.assign({}, params, {\n locale\n });\n }\n _resolveNameOrPath(query, fn) {\n const query1 = {};\n const query2 = [];\n if (query) {\n for (const key in query) {\n const value = query[key];\n if (value && typeof value === 'object') {\n query2.push([key, value]);\n } else {\n query1[key] = value;\n }\n }\n }\n // resolve\n const fullPath = fn(query1);\n // query2\n const query2str = query2.map(([key, value]) => {\n return `${encodeURIComponent(key)}=${encodeURIComponent(JSON.stringify(value))}`;\n }).join('&');\n // join\n if (!query2str) return fullPath;\n const join = Object.keys(query1).length > 0 ? '&' : '?';\n return `${fullPath}${join}${query2str}`;\n }\n _loadConfigRoutes() {\n const routesPath = this.sys.config.routes.path;\n for (const key in routesPath) {\n const route = routesPath[key];\n if (!route) continue;\n this._loadConfigRoute({\n ...route,\n path: key,\n name: `$:${key}`\n });\n }\n const routesName = this.sys.config.routes.name;\n for (const key in routesName) {\n const route = routesName[key];\n if (!route) continue;\n this._loadConfigRoute({\n ...route,\n path: route.path || route.alias,\n name: key\n });\n }\n }\n _loadLegacyRoutes() {\n const legacyRoutes = cast(this.sys.meta).legacyRoutes;\n if (!legacyRoutes) return;\n for (const route of legacyRoutes) {\n this._registerRoute(route);\n }\n }\n _loadConfigRoute(route) {\n this.router.addRoute(route);\n }\n _registerRoute(route, module) {\n // path\n let path;\n if (route.path !== undefined) {\n if (!module || route.meta?.absolute === true) {\n path = route.path;\n } else {\n path = route.path ? `/${module.info.pid}/${module.info.name}/${route.path}` : `/${module.info.pid}/${module.info.name}`;\n }\n }\n // name\n let name;\n if (route.name) {\n if (!module || route.meta?.absolute === true) {\n name = String(route.name);\n } else {\n name = `${module.info.relativeName}:${String(route.name)}`;\n }\n }\n // config route\n const configRoute = name ? this.sys.config.routes.name[name] : this.sys.config.routes.path[path];\n if (configRoute) {\n route = deepExtend({}, route, configRoute);\n }\n // name alias\n if (name && configRoute?.alias) {\n const alias = Array.isArray(configRoute.alias) ? configRoute.alias[0] : configRoute.alias;\n // add extra route\n this.router.addRoute({\n name: `$alias:${name}`,\n path: `/__alias__${alias}`,\n redirect: ''\n });\n }\n // name\n if (!name) {\n name = `$:${path}`;\n }\n // meta\n const meta = route.meta;\n // component\n const component = route.component;\n // layout / routeData\n let layout = meta?.layout;\n let routeData;\n let routeNameParent;\n if (layout === false) {\n routeData = {\n ...route,\n name,\n path,\n component,\n meta\n };\n } else {\n if (layout === undefined || layout === 'default') {\n layout = this.sys.config.layout.component.default;\n } else if (layout === 'empty') {\n layout = this.sys.config.layout.component.empty;\n }\n routeNameParent = `$:${name}`;\n routeData = {\n name: routeNameParent,\n path,\n ...(route.alias ? {\n alias: route.alias\n } : {}),\n component: this.createAsyncComponent(layout),\n children: [{\n ...route,\n name,\n path: '',\n component,\n meta\n }]\n };\n }\n // force delete\n if (this.router.hasRoute(routeNameParent)) {\n this.router.removeRoute(routeNameParent);\n }\n if (this.router.hasRoute(name)) {\n this.router.removeRoute(name);\n }\n // add\n this.router.addRoute(routeData);\n if (routeNameParent) {\n this._syntheticLayoutRouteNames.add(routeNameParent);\n }\n }\n}) || _class) || _class);","export class RouterGuardDisposers {\n constructor() {\n this._disposers = [];\n this._disposed = false;\n }\n add(disposer) {\n this._disposers.push(disposer);\n return disposer;\n }\n dispose() {\n if (this._disposed) return;\n this._disposed = true;\n const disposers = this._disposers;\n this._disposers = [];\n for (const disposer of disposers) {\n disposer();\n }\n }\n}","var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2;\nfunction _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\nfunction _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\nfunction _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport { BeanBase, Use } from 'zova';\nimport { Bean } from 'zova-module-a-bean';\nimport { RouterGuardDisposers } from '../lib/routerGuardDisposers.js';\nimport { ModelPageData } from '../model/pageData.js';\nimport { SysRouter } from './sys.router.js';\nexport let BeanRouter = (_dec = Bean(), _dec2 = __z_BeanInfo({\n module: \"a-router\"\n}), _dec3 = Use(), _dec4 = Reflect.metadata(\"design:type\", typeof SysRouter === \"undefined\" ? Object : SysRouter), _dec5 = Use(), _dec6 = Reflect.metadata(\"design:type\", typeof ModelPageData === \"undefined\" ? Object : ModelPageData), _dec(_class = _dec2(_class = (_class2 = class BeanRouter extends BeanBase {\n constructor(...args) {\n super(...args);\n this._vueRouterApp = void 0;\n this._routerGuardDisposers = new RouterGuardDisposers();\n this._routerViews = [];\n this._disposed = false;\n _initializerDefineProperty(this, \"$$sysRouter\", _descriptor, this);\n _initializerDefineProperty(this, \"$$modelPageData\", _descriptor2, this);\n this._isEmbedded = false;\n this._embeddedView = void 0;\n this._prepareNavigation = void 0;\n }\n // for prepare pageData on server\n\n get router() {\n return this._vueRouterApp;\n }\n get isEmbedded() {\n return this._isEmbedded;\n }\n /**\n * Returns the initial RouterView depth for an embedded page-only host.\n *\n * SysRouter records the synthetic layout parents it creates. The page-only\n * host skips only those exact records; routes registered with\n * `meta.layout: false` still start at depth zero.\n */\n getEmbeddedRouterViewDepth(route) {\n if (this._embeddedView !== 'page') return 0;\n return this.$$sysRouter.isSyntheticLayoutRouteRecord(route.matched[0]) ? 1 : 0;\n }\n dispose() {\n if (this._disposed) return;\n this._disposed = true;\n this._routerGuardDisposers.dispose();\n this._routerViews = [];\n const router = this._vueRouterApp;\n if (router) router.__prepareNavigation = undefined;\n }\n __dispose__() {\n // Router instances can be borrowed through page host providers. Their\n // creator explicitly calls dispose() when the router itself is finished.\n }\n __get__(prop) {\n // SymbolRouter first\n const value = this._vueRouterApp?.[prop];\n if (value !== undefined) return value;\n return this.$$sysRouter?.[prop];\n }\n async __init__(mainRouterOrOptions) {\n const options = typeof mainRouterOrOptions === 'boolean' ? {\n mainRouter: mainRouterOrOptions\n } : mainRouterOrOptions ?? {};\n this._isEmbedded = options.mainRouter === false;\n this._embeddedView = options.embeddedView;\n this._prepareNavigation = options.prepareNavigation;\n // create router\n this._vueRouterApp = this.$$sysRouter.createRouter(options.routerOptions);\n const router = this._vueRouterApp;\n router.__prepareNavigation = this._prepareNavigation;\n if (!options.mainRouter) {\n // emit event\n await this.app.meta.event.emit('a-router:routerGuards', this);\n }\n }\n addRouterView(routerView) {\n this._routerViews.push(routerView);\n if (!this._isEmbedded) return;\n const route = this._vueRouterApp.currentRoute.value;\n if (route?.matched.length > 0) {\n routerView.forwardRoute(route);\n }\n }\n removeRouterView(routerView) {\n const index = this._routerViews.findIndex(item => item === routerView);\n if (index > -1) {\n this._routerViews.splice(index, 1);\n }\n }\n afterEachBackRoute(route) {\n for (const routerView of this._routerViews) {\n const res = routerView.backRoute(route);\n if (res) break;\n }\n }\n afterEachForwardRoute(route) {\n for (const routerView of this._routerViews) {\n const res = routerView.forwardRoute(route);\n if (res) break;\n }\n }\n beforeEach(guard) {\n return this._routerGuardDisposers.add(this._vueRouterApp.beforeEach(guard));\n }\n beforeResolve(guard) {\n return this._routerGuardDisposers.add(this._vueRouterApp.beforeResolve(guard));\n }\n afterEach(guard) {\n return this._routerGuardDisposers.add(this._vueRouterApp.afterEach(guard));\n }\n onError(handler) {\n return this._routerGuardDisposers.add(this._vueRouterApp.onError(handler));\n }\n setPageMeta(route, pageMeta) {\n for (const routerView of this._routerViews) {\n routerView.setPageMeta(route, pageMeta);\n }\n }\n}, _descriptor = _applyDecoratedDescriptor(_class2.prototype, \"$$sysRouter\", [_dec3, _dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, \"$$modelPageData\", [_dec5, _dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _class2)) || _class) || _class);","var _dec, _dec2, _dec3, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport { BeanBase, Virtual } from 'zova';\nimport { Bean } from 'zova-module-a-bean';\nexport let BeanRouterGuardsBase = (_dec = Bean(), _dec2 = Virtual(), _dec3 = __z_BeanInfo({\n module: \"a-router\"\n}), _dec(_class = _dec2(_class = _dec3(_class = class BeanRouterGuardsBase extends BeanBase {\n constructor(...args) {\n super(...args);\n this._eventRouterGuards = void 0;\n }\n async __init__() {\n this._eventRouterGuards = this.app.meta.event.on('a-router:routerGuards', async (router, next) => {\n this.onRouterGuards(router);\n return await next();\n });\n }\n __dispose__() {\n this.dispose();\n }\n dispose() {\n if (this._eventRouterGuards) {\n this._eventRouterGuards();\n }\n }\n onRouterGuards(_router) {}\n}) || _class) || _class) || _class);","import 'vue-router';\nexport let NavigationType = /*#__PURE__*/function (NavigationType) {\n NavigationType[\"pop\"] = \"pop\";\n NavigationType[\"push\"] = \"push\";\n return NavigationType;\n}({});\nexport let NavigationDirection = /*#__PURE__*/function (NavigationDirection) {\n NavigationDirection[\"back\"] = \"back\";\n NavigationDirection[\"forward\"] = \"forward\";\n NavigationDirection[\"unknown\"] = \"\";\n return NavigationDirection;\n}({});","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport * as ModuleInfo from '@cabloy/module-info';\nimport { Service } from 'zova-module-a-bean';\nimport { BeanRouterGuardsBase } from '../bean/bean.routerGuardsBase.js';\nimport { NavigationDirection, NavigationType } from '../types/router.js';\nexport let ServiceRouterGuards = (_dec = Service(), _dec2 = __z_BeanInfo({\n module: \"a-router\"\n}), _dec(_class = _dec2(_class = class ServiceRouterGuards extends BeanRouterGuardsBase {\n onRouterGuards(router) {\n const self = this;\n router.beforeEach(async to => {\n // match path\n const aliasMatch = to.matched.find(item => item.aliasOf);\n let match = aliasMatch;\n if (aliasMatch) {\n match = aliasMatch.aliasOf;\n // A path-config alias can initially resolve to a componentless placeholder\n // before its module registers the real layout route. Reload the same path\n // after loading so the router resolves the newly registered component.\n if (!match?.components || Object.keys(match.components).length === 0) {\n const resLoadModule = await this._forceLoadModule(router, match?.name, match?.path);\n if (resLoadModule && resLoadModule !== true) return resLoadModule;\n return to.fullPath;\n }\n } else {\n match = to.matched[to.matched.length - 1];\n // prepareCheck\n if (!(await this._prepareCheck(match?.path, to.path))) {\n // redirect again\n return to.fullPath;\n }\n // legacy\n const legacyRoute = router._findLegacyRoute(match?.name, match?.path);\n if (legacyRoute) return;\n // alias\n const configRoute = router._findConfigRoute(match?.name, match?.path);\n const alias = configRoute?.alias;\n if (alias) {\n // force load module\n const resLoadModule = await this._forceLoadModule(router, match?.name, match?.path);\n if (resLoadModule && resLoadModule !== true) return resLoadModule;\n if (resLoadModule === false) return to.fullPath;\n const name = router.getRealRouteName(match?.name);\n if (name) {\n const routeAlias = router.getAliasPath(name, {\n params: to.params,\n query: to.query\n });\n return routeAlias || '/';\n } else {\n return {\n path: Array.isArray(alias) ? alias[0] : alias,\n params: to.params,\n query: to.query\n };\n }\n }\n }\n // force load module\n const resLoadModule = await this._forceLoadModule(router, match?.name, match?.path);\n if (resLoadModule === true) return;\n if (resLoadModule) return resLoadModule;\n // redirect again\n return to.fullPath;\n });\n router.afterEach(function (to, from, error) {\n if (error) return;\n const info = arguments[3];\n // from\n if (from.fullPath !== to.fullPath) {\n self._afterEachFrom(router, from, info);\n }\n // to\n router.afterEachForwardRoute(to);\n });\n }\n _afterEachFrom(router, from, info) {\n if (!info) return;\n const needBack = info.type === NavigationType.pop && info.direction === NavigationDirection.back || info.type === NavigationType.push && info.replace;\n if (!needBack) return;\n router.afterEachBackRoute(from);\n }\n\n // if 404 then check if module loaded\n async _prepareCheck(pathMatched, pathTo) {\n if (pathMatched === '/:catchAll(.*)*') {\n const moduleInfo = ModuleInfo.parseInfo(ModuleInfo.parseName(pathTo));\n if (moduleInfo && this.app.meta.module.exists(moduleInfo.relativeName) && !this.app.meta.module.get(moduleInfo.relativeName, false)) {\n // use module\n await this.app.meta.module.use(moduleInfo.relativeName);\n // redirect again\n return false;\n }\n }\n return true;\n }\n async _forceLoadModule(router, name, path) {\n const nameOrPath = router.getRealRouteName(name) || path;\n // module info\n const moduleInfo = ModuleInfo.parseInfo(ModuleInfo.parseName(nameOrPath));\n if (!moduleInfo) {\n // donothing\n return true;\n }\n const moduleName = moduleInfo.relativeName;\n // check if exists\n if (!this.app.meta.module.exists(moduleName)) return '/404';\n // check if loaded\n const module = this.app.meta.module.get(moduleName, false);\n if (module) return true;\n // use module\n await this.app.meta.module.use(moduleName);\n // means need load\n return false;\n }\n}) || _class) || _class);","import type { RouteLocationNormalizedLoadedGeneric } from '@cabloy/vue-router';\n\nimport { RouterView } from '@cabloy/vue-router';\nimport { h, KeepAlive, Transition } from 'vue';\nimport { BeanControllerBase, cast } from 'zova';\n\nimport type { IPageMeta } from '../types/pageMeta.js';\nimport type { IRouterViewSlotParams, IRouteViewRouteMeta } from '../types/routerView.js';\n\nimport { pageRouteKey, routerViewKey } from './const.js';\n\nexport interface IRouterViewPropsBase {}\n\nexport class BeanRouterViewBase extends BeanControllerBase implements IRouterViewPropsBase {\n protected async __init__() {\n this.bean._setBean(routerViewKey, this);\n this.$router.addRouterView(this);\n }\n\n protected __dispose__() {\n this.$router.removeRouterView(this);\n }\n\n public backRoute(_route: RouteLocationNormalizedLoadedGeneric) {\n return false;\n }\n\n public forwardRoute(_route: RouteLocationNormalizedLoadedGeneric) {\n return false;\n }\n\n public setPageMeta(_route: RouteLocationNormalizedLoadedGeneric, _pageMeta: IPageMeta) {}\n\n protected prepareRouteMeta(_route: RouteLocationNormalizedLoadedGeneric): IRouteViewRouteMeta {\n throw new Error('Not Implemented');\n }\n\n protected getKeepAliveInclude(): string[] | undefined {\n throw new Error('Not Implemented');\n }\n\n protected getPageHostProviders(): Record<string, unknown> | undefined {\n return undefined;\n }\n\n protected render() {\n const slots = {\n default: (component: IRouterViewSlotParams) => {\n const routeMeta = this.prepareRouteMeta(component.route);\n return h(Transition, null, {\n default: () => {\n const vnode = h(component.Component as any, {\n key: routeMeta.componentKey,\n route: component.route,\n });\n cast(vnode).zovaHostProviders = {\n ...this.getPageHostProviders(),\n [pageRouteKey]: component.route,\n 'a-router.bean.router': this.$router,\n };\n return [\n h(\n KeepAlive,\n {\n include: this.getKeepAliveInclude(),\n },\n [vnode],\n ),\n ];\n },\n });\n },\n };\n return <RouterView v-slots={slots}></RouterView>;\n }\n}\n","import { RouterView } from '@cabloy/vue-router';\nimport { h } from 'vue';\nimport { cast } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\n\nimport { pageRouteKey } from '../../lib/const.js';\nimport { BeanRouterViewBase } from '../../lib/routerViewBase.js';\n\n@Controller()\nexport class ControllerRouterViewEmpty extends BeanRouterViewBase {\n protected async __init__() {}\n\n protected render() {\n const slots = {\n default: component => {\n const vnode = h(component.Component);\n cast(vnode).zovaHostProviders = {\n [pageRouteKey]: component.route,\n 'a-router.bean.router': this.$router,\n };\n return vnode;\n },\n };\n return <RouterView v-slots={slots}></RouterView>;\n }\n}\n","import { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\nimport { ControllerRouterViewEmpty } from '../../component/routerViewEmpty/controller.jsx';\nexport const ZRouterViewEmpty = defineComponent(_props => {\n useController(ControllerRouterViewEmpty, undefined, undefined);\n return () => {};\n}, prepareComponentOptions());","import { scrollBehavior } from '../lib/utils.js';\nexport const config = _sys => {\n return {\n scrollBehavior\n };\n};","import * as ModuleInfo from '@cabloy/module-info';\nimport { onActivated, onBeforeUnmount, onDeactivated, shallowReactive } from 'vue';\nimport { BeanControllerPageBase, BeanSimple, cast, useComputed } from 'zova';\nimport { pageHostKey, routerViewKey } from './lib/const.js';\nimport { getCurrentRoute, getPageRoute, getRealRouteName, getRouteMatched } from './lib/utils.js';\nimport { ServiceRouterGuards } from './service/routerGuards.js';\nimport { SymbolRouterHistory } from './types/utils.js';\nexport class Monkey extends BeanSimple {\n constructor(...args) {\n super(...args);\n this._beanRouter = void 0;\n this._sysRouter = void 0;\n this._pageHosts = new WeakMap();\n this.serviceRouterGuards = void 0;\n }\n async _getSysRouter() {\n if (!this._sysRouter) {\n this._sysRouter = await this.sys.bean._getBean('a-router.sys.router', false);\n }\n return this._sysRouter;\n }\n async getBeanRouter() {\n if (!this._beanRouter) {\n // markReactive: true\n this._beanRouter = this.app.meta.$router = await this.bean._getBean('a-router.bean.router', true, true);\n }\n return this._beanRouter;\n }\n async appInitialize() {\n if (process.env.SERVER) {\n const pagePathFull = this.app.$getCurrentPagePath();\n if (pagePathFull) {\n const sysRouter = await this._getSysRouter();\n const route = await sysRouter.resolveRoute(pagePathFull, true, false);\n if (route) {\n // ssr profile\n this.ctx.meta.$ssr._setProfile(route.meta.ssrProfile, route.meta.ssrProfileOptions, route.meta.locale);\n // locale\n this.ctx.meta.$ssr._setLocale(route);\n }\n }\n }\n // router\n this.serviceRouterGuards = await this.bean._newBean(ServiceRouterGuards, false);\n // ssr errorHandler\n if (process.env.CLIENT) {\n this._ssrErrorHandler();\n }\n }\n async appInitialized() {\n const beanRouter = await this.getBeanRouter();\n // emit event\n await this.app.meta.event.emit('a-router:routerGuards', beanRouter);\n }\n appClose() {\n if (this.serviceRouterGuards) {\n this.serviceRouterGuards.dispose();\n }\n this._beanRouter?.dispose();\n }\n async appReady() {\n const beanRouter = await this.getBeanRouter();\n // pagePath\n if (process.env.CLIENT && this.ctx.meta.$ssr.isRuntimeSsrPreHydration) {\n const pagePathFull = this.ctx.meta.$ssr.state.pagePathFull;\n if (pagePathFull) {\n const routerHistory = beanRouter.router[SymbolRouterHistory];\n routerHistory.push(pagePathFull);\n }\n }\n // use router\n this.app.vue.use(beanRouter);\n // ssr\n if (process.env.SERVER) {\n // push\n const pagePath = this.app.$getCurrentPagePath();\n beanRouter.push(pagePath);\n await beanRouter.isReady();\n } else if (process.env.CLIENT && this.ctx.meta.$ssr.isRuntimeSsrPreHydration) {\n await beanRouter.isReady();\n }\n }\n async beanInit(bean, beanInstance) {\n bean.defineProperty(beanInstance, '$router', {\n enumerable: false,\n configurable: true,\n get() {\n return bean._getBeanFromHost('a-router.bean.router');\n }\n });\n bean.defineProperty(beanInstance, '$routerView', {\n enumerable: false,\n configurable: true,\n get() {\n return bean._getBeanFromHost({\n name: routerViewKey\n });\n }\n });\n bean.defineProperty(beanInstance, '$pageRoute', {\n enumerable: false,\n configurable: true,\n get() {\n return useComputed(() => {\n return getPageRoute(cast(bean).ctx);\n });\n }\n });\n bean.defineProperty(beanInstance, '$pageHost', {\n enumerable: false,\n configurable: true,\n get() {\n return bean._getBeanFromHost({\n name: pageHostKey\n }) ?? undefined;\n }\n });\n bean.defineProperty(beanInstance, '$currentRoute', {\n enumerable: false,\n configurable: true,\n get() {\n return useComputed(() => {\n return getCurrentRoute(cast(bean).ctx);\n });\n }\n });\n }\n controllerDataPrepare(controllerData, ctx) {\n if (controllerData.context.page) {\n this._initPageHost(ctx);\n }\n controllerData.context.route = getPageRoute(ctx);\n }\n _initPageHost(ctx) {\n const existing = this._pageHosts.get(ctx);\n if (existing) {\n ctx.bean._setBean(pageHostKey, existing);\n return;\n }\n const pageHost = shallowReactive({\n active: true\n });\n this._pageHosts.set(ctx, pageHost);\n ctx.bean._setBean(pageHostKey, pageHost);\n if (!process.env.CLIENT) return;\n ctx.util.instanceScope(() => {\n onActivated(() => {\n pageHost.active = true;\n });\n onDeactivated(() => {\n pageHost.active = false;\n });\n onBeforeUnmount(() => {\n pageHost.active = false;\n });\n });\n }\n controllerDataInit(controllerData, controller) {\n // only for controller page\n if (!(controller instanceof BeanControllerPageBase)) return;\n const route = controllerData.context.route;\n this._initControllerRoute(route, controller);\n }\n controllerDataUpdate(controller) {\n // only for controller page\n if (!(controller instanceof BeanControllerPageBase)) return;\n const route = getPageRoute(cast(cast(controller).ctx));\n this._initControllerRoute(route, controller);\n }\n _initControllerRoute(route, controller) {\n if (!route) return;\n const routeMatched = getRouteMatched(route);\n if (!routeMatched) return;\n // check if the same\n if (controller.$routeMatched && !this._checkIfRouteSame(routeMatched, controller.$routeMatched)) return;\n // check if changed\n const changed = !controller.$route || controller.$route.fullPath !== route.fullPath;\n if (!changed) return;\n // update $params/$query\n const routeName = getRealRouteName(routeMatched.name);\n const schemaKey = routeName || String(routeMatched.path);\n let schemas;\n const moduleInfo = ModuleInfo.parseInfo(ModuleInfo.parseName(schemaKey));\n if (!moduleInfo) {\n // do nothing\n return;\n }\n if (!this.app.meta.module.exists(moduleInfo.relativeName)) {\n // do nothing\n return;\n }\n const module = this.app.meta.module.get(moduleInfo.relativeName, false);\n if (!module) {\n void this.app.meta.module.use(moduleInfo.relativeName).then(() => {\n if (cast(controller).ctx.disposed) return;\n const currentRoute = getPageRoute(cast(cast(controller).ctx));\n if (!currentRoute || currentRoute.fullPath !== route.fullPath) return;\n this._initControllerRoute(currentRoute, controller);\n }).catch(err => {\n console.error('failed to load route module', moduleInfo.relativeName, err);\n });\n return;\n }\n controller.$route = route;\n controller.$routeMatched = routeMatched;\n if (routeName) {\n schemas = module.resource.pageNameSchemas?.[schemaKey];\n } else {\n schemas = module.resource.pagePathSchemas?.[schemaKey];\n }\n if (schemas?.params) {\n const params = schemas.params.parse(route.params);\n if (!controller.$params) {\n controller.$params = process.env.SERVER ? params : shallowReactive(params);\n } else {\n // hold the same $params ref\n Object.assign(controller.$params, params);\n }\n }\n if (schemas?.query) {\n const query = schemas.query.parse(route.query);\n if (!controller.$query) {\n controller.$query = process.env.SERVER ? query : shallowReactive(query);\n } else {\n // hold the same $query ref\n Object.assign(controller.$query, query);\n }\n }\n }\n _checkIfRouteSame(route1, route2) {\n return route1.name && route1.name === route2.name || route1.path === route2.path;\n }\n _ssrErrorHandler() {\n if (!process.env.CLIENT) return;\n this.app.meta.event.on('app:errorHandler', (data, next) => {\n if (_isLoadErrorHandledClient(data)) {\n data.load.disposition = 'handled';\n }\n const err = next();\n if (!err || !(err instanceof Error)) return err;\n return this._errorHandlerDefaultClient(err, data);\n });\n }\n _errorHandlerDefaultClient(err, _data) {\n if (!process.env.CLIENT) return err;\n // client\n if ([301, 302].includes(Number(err.code))) {\n this.app.$gotoPage(err.pagePath);\n return undefined;\n }\n // COMPONENT_UNMOUNTED\n if (err.code === 600) {\n // do nothing\n return undefined;\n }\n // 401\n if (err.code === 401) {\n this.app.$gotoLogin();\n return undefined;\n }\n // not handled\n return err;\n }\n}\nfunction _isLoadErrorHandledClient(data) {\n if (data.load?.kind !== 'controller-load') return false;\n return [301, 302, 401, 600].includes(Number(data.err.code));\n}","import { BeanSimple, cast, isHttpUrl } from 'zova';\nexport class MonkeySys extends BeanSimple {\n constructor(moduleSelf) {\n super();\n this._moduleSelf = void 0;\n this._sysRouter = void 0;\n this._moduleSelf = moduleSelf;\n }\n async getSysRouter() {\n if (!this._sysRouter) {\n this._sysRouter = await this.sys.bean._getBean('a-router.sys.router', false);\n }\n return this._sysRouter;\n }\n async moduleLoading(module) {\n if (this._moduleSelf === module) return;\n if (!module.resource.routes) return;\n const sysRouter = await this.getSysRouter();\n sysRouter._registerRoutes(module);\n }\n async moduleLoaded(_module) {}\n async configLoaded(_module, _config) {}\n sysApplicationInitialize(app) {\n app.$redirect = (pagePath, status) => {\n const error = new Error();\n error.code = status ?? 302;\n if (isHttpUrl(pagePath)) {\n error.pagePath = pagePath;\n error.url = pagePath;\n } else {\n error.pagePath = pagePath;\n error.url = app.sys.util.getAbsoluteUrlFromPagePath(pagePath, true);\n }\n error.message = process.env.SERVER ? error.url : error.pagePath;\n throw error;\n };\n app.$getPagePath = (pagePath, options) => {\n const query = {\n ...options?.query\n };\n // returnTo\n if (options?.returnTo) {\n const returnTo = typeof options.returnTo === 'string' ? options.returnTo : app.$getCurrentPagePath();\n if (returnTo !== app.$getPagePathHome()) {\n query[app.sys.env.ROUTER_KEY_RETURNTO] = returnTo;\n }\n }\n return app.meta.$router.getPagePath(pagePath, {\n params: options?.params,\n query\n });\n };\n app.$getPagePathLogin = (returnTo, cause) => {\n const query = {};\n if (cause) {\n query.cause = cause;\n }\n const returnTo2 = _fixReturnTo(app, returnTo);\n return app.$getPagePath(app.sys.env.ROUTER_PAGE_LOGIN, {\n query,\n returnTo: returnTo2\n });\n };\n app.$getPagePathAccessDenied = () => {\n return app.$getPagePath('/home/base/errorAccessDenied');\n };\n app.$gotoPage = (pagePath, options) => {\n pagePath = app.$getPagePath(pagePath, options);\n // redirect\n if (process.env.SERVER || options?.forceRedirect) {\n return app.$redirect(pagePath);\n }\n // replace\n if (isHttpUrl(pagePath)) {\n window.location[options?.replace ? 'replace' : 'assign'](pagePath);\n } else {\n return app.meta.$router[options?.replace ? 'replace' : 'push'](pagePath);\n }\n };\n app.$gotoHome = options => {\n const pagePath = app.$getPagePathHome(options);\n return app.$gotoPage(pagePath, {\n ...options,\n params: undefined\n });\n };\n app.$gotoLogin = (returnTo, cause) => {\n const returnTo2 = _fixReturnTo(app, returnTo);\n if (!returnTo2 && cast(app.meta.$router.currentRoute)?.path === app.sys.env.ROUTER_PAGE_LOGIN) {\n return;\n }\n const pagePath = app.$getPagePathLogin(returnTo2, cause);\n return app.$gotoPage(pagePath);\n };\n app.$gotoAccessDenied = () => {\n const pagePath = app.$getPagePathAccessDenied();\n if (cast(app.meta.$router.currentRoute)?.path === pagePath) return;\n return app.$gotoPage(pagePath, {\n replace: true\n });\n };\n app.$gotoReturnTo = returnTo => {\n const pagePath = app.$getReturnTo(returnTo);\n return app.$gotoPage(pagePath, {\n replace: true\n });\n };\n app.$getReturnTo = returnTo => {\n // not use ??\n const pagePath = returnTo || cast(app.meta.$router.currentRoute)?.query?.[app.sys.env.ROUTER_KEY_RETURNTO] || app.$getPagePathHome();\n return pagePath;\n };\n app.$getCurrentPagePath = () => {\n if (process.env.SERVER) {\n return app.ctx.meta.$ssr.state.pagePathFull ?? app.sys.util.getPagePathFromAbsoluteUrl(app.ctx.meta.$ssr.context.req.url);\n }\n return cast(app.meta.$router.currentRoute)?.fullPath;\n };\n app.$getPagePathHome = options => {\n let params = options?.params;\n if (params?.locale === undefined) {\n params = Object.assign({}, params, {\n locale: true\n });\n }\n // not handle options?.query\n return app.meta.$router.getPagePath(app.sys.env.ROUTER_PAGE_HOME, {\n params\n });\n };\n }\n}\nfunction _fixReturnTo(app, returnTo) {\n const returnTo2 = returnTo === false ? false : typeof returnTo === 'string' ? returnTo : app.$getCurrentPagePath();\n return returnTo2 === app.sys.env.ROUTER_PAGE_LOGIN ? false : returnTo2;\n}","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\n// eslint-disable\n/** model: begin */\nexport * from '../model/pageData.js';\nimport 'zova-module-a-model';\n/** model: end */\n/** model: begin */\n\nimport 'zova';\n/** model: end */\n/** sys: begin */\nexport * from '../bean/sys.router.js';\nimport 'zova';\n/** sys: end */\n/** sys: begin */\n\nimport 'zova';\n/** sys: end */\n/** bean: begin */\nexport * from '../bean/bean.router.js';\nexport * from '../bean/bean.routerGuardsBase.js';\nimport 'zova';\n/** bean: end */\n/** bean: begin */\n\nimport 'zova';\n/** bean: end */\n/** service: begin */\nexport * from '../service/routerGuards.js';\nimport 'zova-module-a-bean';\n/** service: end */\n/** service: begin */\n\nimport 'zova';\n/** service: end */\n/** controller: begin */\nexport * from '../component/routerViewEmpty/controller.jsx';\nimport 'zova';\n/** controller: end */\n/** controller: begin */\n\nimport 'zova';\n/** controller: end */\n\n/** components: begin */\nexport * from './component/routerViewEmpty.js';\nimport { ZRouterViewEmpty } from './component/routerViewEmpty.js';\nexport const components = {\n 'routerViewEmpty': ZRouterViewEmpty\n};\nimport 'zova';\n/** components: end */\n/** config: begin */\nexport * from '../config/config.js';\n/** config: end */\n/** monkey: begin */\nexport * from '../monkey.js';\n/** monkey: end */\n/** monkeySys: begin */\nexport * from '../monkeySys.js';\n/** monkeySys: end */\n/** scope: begin */\nimport { BeanScopeBase } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\nexport let ScopeModuleARouter = (_dec = Scope(), _dec2 = __z_BeanInfo({\n module: \"a-router\"\n}), _dec(_class = _dec2(_class = class ScopeModuleARouter extends BeanScopeBase {}) || _class) || _class);\nimport 'zova';\n\n/** scope: end */"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export declare const pageRouteKey = "$$pageRoute";
2
+ export declare const pageHostKey = "$$pageHost";
2
3
  export declare const routerViewKey = "$$routerView";
3
4
  //# sourceMappingURL=const.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../src/lib/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAC1C,eAAO,MAAM,aAAa,iBAAiB,CAAC"}
1
+ {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../src/lib/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAC1C,eAAO,MAAM,WAAW,eAAe,CAAC;AACxC,eAAO,MAAM,aAAa,iBAAiB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare class RouterGuardDisposers {
2
+ private _disposers;
3
+ private _disposed;
4
+ add(disposer: () => void): () => void;
5
+ dispose(): void;
6
+ }
7
+ //# sourceMappingURL=routerGuardDisposers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routerGuardDisposers.d.ts","sourceRoot":"","sources":["../../src/lib/routerGuardDisposers.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,SAAS,CAAS;IAE1B,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,SAAJ,IAAI;IAKxB,OAAO;CASR"}
package/dist/monkey.d.ts CHANGED
@@ -5,6 +5,7 @@ import { ServiceRouterGuards } from './service/routerGuards.js';
5
5
  export declare class Monkey extends BeanSimple implements IMonkeyAppInitialize, IMonkeyAppInitialized, IMonkeyAppReady, IMonkeyAppClose, IMonkeyBeanInit, IMonkeyController {
6
6
  private _beanRouter;
7
7
  private _sysRouter;
8
+ private _pageHosts;
8
9
  serviceRouterGuards: ServiceRouterGuards;
9
10
  private _getSysRouter;
10
11
  getBeanRouter(): Promise<BeanRouter>;
@@ -14,6 +15,7 @@ export declare class Monkey extends BeanSimple implements IMonkeyAppInitialize,
14
15
  appReady(): Promise<void>;
15
16
  beanInit(bean: BeanContainer, beanInstance: BeanBase): Promise<void>;
16
17
  controllerDataPrepare(controllerData: IControllerData, ctx: ZovaContext): void;
18
+ private _initPageHost;
17
19
  controllerDataInit(controllerData: IControllerData, controller: BeanBase): void;
18
20
  controllerDataUpdate(controller: BeanBase): void;
19
21
  private _initControllerRoute;
@@ -1 +1 @@
1
- {"version":3,"file":"monkey.d.ts","sourceRoot":"","sources":["../src/monkey.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EAEf,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,WAAW,EACZ,MAAM,MAAM,CAAC;AAKd,OAAO,EAA0B,UAAU,EAAqB,MAAM,MAAM,CAAC;AAE7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,qBAAa,MACX,SAAQ,UACR,YACE,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB;IAEnB,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAY;IAC9B,mBAAmB,EAAE,mBAAmB,CAAC;YAE3B,aAAa;IAOrB,aAAa;IAYb,aAAa;IA0Bb,cAAc;IAMpB,QAAQ,IAAI,IAAI;IAMV,QAAQ;IAuBR,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ;IAmC1D,qBAAqB,CAAC,cAAc,EAAE,eAAe,EAAE,GAAG,EAAE,WAAW;IAIvE,kBAAkB,CAAC,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ;IAOxE,oBAAoB,CAAC,UAAU,EAAE,QAAQ;IAOzC,OAAO,CAAC,oBAAoB;IAoE5B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,0BAA0B;CAoBnC"}
1
+ {"version":3,"file":"monkey.d.ts","sourceRoot":"","sources":["../src/monkey.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EAEf,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,WAAW,EACZ,MAAM,MAAM,CAAC;AAKd,OAAO,EAA0B,UAAU,EAAqB,MAAM,MAAM,CAAC;AAE7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAOxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,qBAAa,MACX,SAAQ,UACR,YACE,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB;IAEnB,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,UAAU,CAAyC;IAC3D,mBAAmB,EAAE,mBAAmB,CAAC;YAE3B,aAAa;IAOrB,aAAa;IAYb,aAAa;IA0Bb,cAAc;IAMpB,QAAQ,IAAI,IAAI;IAOV,QAAQ;IAuBR,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ;IA0C1D,qBAAqB,CAAC,cAAc,EAAE,eAAe,EAAE,GAAG,EAAE,WAAW;IAOvE,OAAO,CAAC,aAAa;IAyBrB,kBAAkB,CAAC,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ;IAOxE,oBAAoB,CAAC,UAAU,EAAE,QAAQ;IAOzC,OAAO,CAAC,oBAAoB;IAoE5B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,0BAA0B;CAoBnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"routerGuards.d.ts","sourceRoot":"","sources":["../../src/service/routerGuards.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAGxE,qBACa,mBAAoB,SAAQ,oBAAoB;IAC3D,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU;IA+D3C,OAAO,CAAC,cAAc;YAcR,aAAa;YAiBb,gBAAgB;CAuB/B"}
1
+ {"version":3,"file":"routerGuards.d.ts","sourceRoot":"","sources":["../../src/service/routerGuards.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAGxE,qBACa,mBAAoB,SAAQ,oBAAoB;IAC3D,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU;IAwE3C,OAAO,CAAC,cAAc;YAcR,aAAa;YAiBb,gBAAgB;CAuB/B"}
@@ -1,3 +1,4 @@
1
+ export * from './pageHost.js';
1
2
  export * from './pageMeta.js';
2
3
  export * from './router.js';
3
4
  export * from './routerView.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface IPageHost {
2
+ /**
3
+ * Whether the concrete routed page instance is currently activated.
4
+ *
5
+ * This does not describe route selection, cache membership, visibility, or
6
+ * data readiness.
7
+ */
8
+ readonly active: boolean;
9
+ }
10
+ //# sourceMappingURL=pageHost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageHost.d.ts","sourceRoot":"","sources":["../../src/types/pageHost.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B"}
@@ -1,7 +1,11 @@
1
- import { IFormMeta } from 'zova-module-a-openapi';
1
+ import type { VNodeChild } from 'vue';
2
+ import type { IFormMeta } from 'zova-module-a-openapi';
3
+ import type { IRouteViewRouteItem, IRouteViewTabCurrent } from './routerView.js';
2
4
  export interface IPageMeta {
3
5
  pageTitle?: string;
4
6
  pageDirty?: boolean;
5
7
  formMeta?: IFormMeta;
8
+ onCustomRender?: (tabItem: IRouteViewRouteItem) => VNodeChild;
9
+ onCustomRenderIsolate?: (tabCurrent: IRouteViewTabCurrent) => VNodeChild;
6
10
  }
7
11
  //# sourceMappingURL=pageMeta.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pageMeta.d.ts","sourceRoot":"","sources":["../../src/types/pageMeta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB"}
1
+ {"version":3,"file":"pageMeta.d.ts","sourceRoot":"","sources":["../../src/types/pageMeta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEjF,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,UAAU,CAAC;IAC9D,qBAAqB,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,KAAK,UAAU,CAAC;CAC1E"}
@@ -3,6 +3,7 @@ import type { z } from 'zod';
3
3
  import type { ILayoutRecord, ILocaleRecord, TypeComponentLayoutRecord, ZovaApplication } from 'zova';
4
4
  import type { BeanRouter } from '../bean/bean.router.js';
5
5
  import type { BeanRouterViewBase } from '../lib/routerViewBase.js';
6
+ import type { IPageHost } from './pageHost.js';
6
7
  import type { IGetPagePathOptions, IGotoPageOptions } from './utils.js';
7
8
  import 'vue-router';
8
9
  export type Lazy<T> = () => Promise<T>;
@@ -45,6 +46,7 @@ declare module 'zova' {
45
46
  $router: BeanRouter;
46
47
  $routerView: BeanRouterViewBase;
47
48
  $pageRoute: RouteLocationNormalizedLoadedGeneric | undefined;
49
+ $pageHost: IPageHost | undefined;
48
50
  $currentRoute: RouteLocationNormalizedLoadedGeneric | undefined;
49
51
  }
50
52
  interface IModuleResource {
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/types/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/types/router.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,10 @@ export interface IRouteViewRouteItem extends IRouteViewRouteItemBase {
10
10
  updatedAt: number;
11
11
  pageMeta?: IPageMeta;
12
12
  }
13
+ export interface IRouteViewTabCurrent {
14
+ tabKey: string;
15
+ items?: IRouteViewRouteItem[];
16
+ }
13
17
  export interface IRouteViewRouteMeta extends IRouteViewRouteItemBase {
14
18
  tabKey: string;
15
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"routerView.d.ts","sourceRoot":"","sources":["../../src/types/routerView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,KAAK,CAAC;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAClE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,yBAAyB,CAAC;IACrC,KAAK,EAAE,6BAA6B,CAAC;CACtC"}
1
+ {"version":3,"file":"routerView.d.ts","sourceRoot":"","sources":["../../src/types/routerView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,KAAK,CAAC;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAClE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,yBAAyB,CAAC;IACrC,KAAK,EAAE,6BAA6B,CAAC;CACtC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zova-module-a-router",
3
- "version": "5.1.39",
4
- "gitHead": "e7537a01ee6754f79ce5e790e76521a283cadcb0",
3
+ "version": "5.1.41",
4
+ "gitHead": "e2843e4cab02a08051be465a8993919c9a37b5f5",
5
5
  "description": "router",
6
6
  "keywords": [
7
7
  "Zova Module"
@@ -6,9 +6,10 @@ import type {
6
6
  RouterOptions,
7
7
  } from '@cabloy/vue-router';
8
8
 
9
- import { BeanBase, TypeEventOff, Use } from 'zova';
9
+ import { BeanBase, Use } from 'zova';
10
10
  import { Bean } from 'zova-module-a-bean';
11
11
 
12
+ import { RouterGuardDisposers } from '../lib/routerGuardDisposers.js';
12
13
  import { BeanRouterViewBase } from '../lib/routerViewBase.js';
13
14
  import { ModelPageData } from '../model/pageData.js';
14
15
  import { IPageMeta } from '../types/pageMeta.js';
@@ -30,7 +31,7 @@ export interface BeanRouter extends Omit<
30
31
  @Bean()
31
32
  export class BeanRouter extends BeanBase {
32
33
  private _vueRouterApp: Router;
33
- private _eventRouterGuards: TypeEventOff[] = [];
34
+ private _routerGuardDisposers = new RouterGuardDisposers();
34
35
  private _routerViews: BeanRouterViewBase[] = [];
35
36
  private _disposed = false;
36
37
 
@@ -65,16 +66,9 @@ export class BeanRouter extends BeanBase {
65
66
  }
66
67
 
67
68
  public dispose() {
68
- this.__dispose__();
69
- }
70
-
71
- protected __dispose__() {
72
69
  if (this._disposed) return;
73
70
  this._disposed = true;
74
- for (const fn of this._eventRouterGuards) {
75
- fn();
76
- }
77
- this._eventRouterGuards = [];
71
+ this._routerGuardDisposers.dispose();
78
72
  this._routerViews = [];
79
73
  const router = this._vueRouterApp as Router & {
80
74
  __prepareNavigation?: (to: unknown) => Promise<void> | void;
@@ -82,6 +76,11 @@ export class BeanRouter extends BeanBase {
82
76
  if (router) router.__prepareNavigation = undefined;
83
77
  }
84
78
 
79
+ protected __dispose__() {
80
+ // Router instances can be borrowed through page host providers. Their
81
+ // creator explicitly calls dispose() when the router itself is finished.
82
+ }
83
+
85
84
  protected __get__(prop: string) {
86
85
  // SymbolRouter first
87
86
  const value = this._vueRouterApp?.[prop];
@@ -140,27 +139,19 @@ export class BeanRouter extends BeanBase {
140
139
  }
141
140
 
142
141
  beforeEach(guard: NavigationGuardWithThis<undefined>): () => void {
143
- const fn = this._vueRouterApp.beforeEach(guard);
144
- this._eventRouterGuards.push(fn);
145
- return fn;
142
+ return this._routerGuardDisposers.add(this._vueRouterApp.beforeEach(guard));
146
143
  }
147
144
 
148
145
  beforeResolve(guard: NavigationGuardWithThis<undefined>): () => void {
149
- const fn = this._vueRouterApp.beforeResolve(guard);
150
- this._eventRouterGuards.push(fn);
151
- return fn;
146
+ return this._routerGuardDisposers.add(this._vueRouterApp.beforeResolve(guard));
152
147
  }
153
148
 
154
149
  afterEach(guard: NavigationHookAfter): () => void {
155
- const fn = this._vueRouterApp.afterEach(guard);
156
- this._eventRouterGuards.push(fn);
157
- return fn;
150
+ return this._routerGuardDisposers.add(this._vueRouterApp.afterEach(guard));
158
151
  }
159
152
 
160
153
  onError(handler: TypeErrorListener): () => void {
161
- const fn = this._vueRouterApp.onError(handler);
162
- this._eventRouterGuards.push(fn);
163
- return fn;
154
+ return this._routerGuardDisposers.add(this._vueRouterApp.onError(handler));
164
155
  }
165
156
 
166
157
  setPageMeta(route: RouteLocationNormalizedLoadedGeneric, pageMeta: IPageMeta) {
@@ -388,6 +388,7 @@ export class SysRouter extends BeanBase {
388
388
  routeData = {
389
389
  name: routeNameParent,
390
390
  path,
391
+ ...(route.alias ? { alias: route.alias } : {}),
391
392
  component: this.createAsyncComponent(layout as any),
392
393
  children: [{ ...route, name, path: '', component, meta }],
393
394
  };
package/src/lib/const.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export const pageRouteKey = '$$pageRoute';
2
+ export const pageHostKey = '$$pageHost';
2
3
  export const routerViewKey = '$$routerView';
@@ -0,0 +1,19 @@
1
+ export class RouterGuardDisposers {
2
+ private _disposers: (() => void)[] = [];
3
+ private _disposed = false;
4
+
5
+ add(disposer: () => void) {
6
+ this._disposers.push(disposer);
7
+ return disposer;
8
+ }
9
+
10
+ dispose() {
11
+ if (this._disposed) return;
12
+ this._disposed = true;
13
+ const disposers = this._disposers;
14
+ this._disposers = [];
15
+ for (const disposer of disposers) {
16
+ disposer();
17
+ }
18
+ }
19
+ }
package/src/monkey.ts CHANGED
@@ -18,14 +18,15 @@ import type {
18
18
  import type { ErrorSSR } from 'zova-module-a-ssr';
19
19
 
20
20
  import * as ModuleInfo from '@cabloy/module-info';
21
- import { shallowReactive } from 'vue';
21
+ import { onActivated, onBeforeUnmount, onDeactivated, shallowReactive } from 'vue';
22
22
  import { BeanControllerPageBase, BeanSimple, cast, useComputed } from 'zova';
23
23
 
24
24
  import type { BeanRouter } from './bean/bean.router.js';
25
25
  import type { SysRouter } from './bean/sys.router.js';
26
+ import type { IPageHost } from './types/pageHost.js';
26
27
  import type { TypePageSchema } from './types/router.js';
27
28
 
28
- import { routerViewKey } from './lib/const.js';
29
+ import { pageHostKey, routerViewKey } from './lib/const.js';
29
30
  import { getCurrentRoute, getPageRoute, getRealRouteName, getRouteMatched } from './lib/utils.js';
30
31
  import { ServiceRouterGuards } from './service/routerGuards.js';
31
32
  import { SymbolRouterHistory } from './types/utils.js';
@@ -42,6 +43,7 @@ export class Monkey
42
43
  {
43
44
  private _beanRouter: BeanRouter;
44
45
  private _sysRouter: SysRouter;
46
+ private _pageHosts = new WeakMap<ZovaContext, IPageHost>();
45
47
  serviceRouterGuards: ServiceRouterGuards;
46
48
 
47
49
  private async _getSysRouter() {
@@ -99,6 +101,7 @@ export class Monkey
99
101
  if (this.serviceRouterGuards) {
100
102
  this.serviceRouterGuards.dispose();
101
103
  }
104
+ this._beanRouter?.dispose();
102
105
  }
103
106
 
104
107
  async appReady() {
@@ -148,6 +151,13 @@ export class Monkey
148
151
  });
149
152
  },
150
153
  });
154
+ bean.defineProperty(beanInstance, '$pageHost', {
155
+ enumerable: false,
156
+ configurable: true,
157
+ get() {
158
+ return bean._getBeanFromHost({ name: pageHostKey }) ?? undefined;
159
+ },
160
+ });
151
161
  bean.defineProperty(beanInstance, '$currentRoute', {
152
162
  enumerable: false,
153
163
  configurable: true,
@@ -160,9 +170,37 @@ export class Monkey
160
170
  }
161
171
 
162
172
  controllerDataPrepare(controllerData: IControllerData, ctx: ZovaContext) {
173
+ if (controllerData.context.page) {
174
+ this._initPageHost(ctx);
175
+ }
163
176
  controllerData.context.route = getPageRoute(ctx);
164
177
  }
165
178
 
179
+ private _initPageHost(ctx: ZovaContext) {
180
+ const existing = this._pageHosts.get(ctx);
181
+ if (existing) {
182
+ ctx.bean._setBean(pageHostKey, existing);
183
+ return;
184
+ }
185
+
186
+ const pageHost = shallowReactive({ active: true });
187
+ this._pageHosts.set(ctx, pageHost);
188
+ ctx.bean._setBean(pageHostKey, pageHost);
189
+ if (!process.env.CLIENT) return;
190
+
191
+ ctx.util.instanceScope(() => {
192
+ onActivated(() => {
193
+ pageHost.active = true;
194
+ });
195
+ onDeactivated(() => {
196
+ pageHost.active = false;
197
+ });
198
+ onBeforeUnmount(() => {
199
+ pageHost.active = false;
200
+ });
201
+ });
202
+ }
203
+
166
204
  controllerDataInit(controllerData: IControllerData, controller: BeanBase) {
167
205
  // only for controller page
168
206
  if (!(controller instanceof BeanControllerPageBase)) return;
@@ -12,9 +12,18 @@ export class ServiceRouterGuards extends BeanRouterGuardsBase {
12
12
  const self = this;
13
13
  router.beforeEach(async to => {
14
14
  // match path
15
- let match = to.matched.find(item => item.aliasOf);
16
- if (match) {
17
- match = match.aliasOf;
15
+ const aliasMatch = to.matched.find(item => item.aliasOf);
16
+ let match = aliasMatch;
17
+ if (aliasMatch) {
18
+ match = aliasMatch.aliasOf;
19
+ // A path-config alias can initially resolve to a componentless placeholder
20
+ // before its module registers the real layout route. Reload the same path
21
+ // after loading so the router resolves the newly registered component.
22
+ if (!match?.components || Object.keys(match.components).length === 0) {
23
+ const resLoadModule = await this._forceLoadModule(router, match?.name, match?.path);
24
+ if (resLoadModule && resLoadModule !== true) return resLoadModule;
25
+ return to.fullPath;
26
+ }
18
27
  } else {
19
28
  match = to.matched[to.matched.length - 1];
20
29
  // prepareCheck
@@ -1,3 +1,4 @@
1
+ export * from './pageHost.js';
1
2
  export * from './pageMeta.js';
2
3
  export * from './router.js';
3
4
  export * from './routerView.js';
@@ -0,0 +1,9 @@
1
+ export interface IPageHost {
2
+ /**
3
+ * Whether the concrete routed page instance is currently activated.
4
+ *
5
+ * This does not describe route selection, cache membership, visibility, or
6
+ * data readiness.
7
+ */
8
+ readonly active: boolean;
9
+ }
@@ -1,7 +1,12 @@
1
- import { IFormMeta } from 'zova-module-a-openapi';
1
+ import type { VNodeChild } from 'vue';
2
+ import type { IFormMeta } from 'zova-module-a-openapi';
3
+
4
+ import type { IRouteViewRouteItem, IRouteViewTabCurrent } from './routerView.js';
2
5
 
3
6
  export interface IPageMeta {
4
7
  pageTitle?: string;
5
8
  pageDirty?: boolean;
6
9
  formMeta?: IFormMeta;
10
+ onCustomRender?: (tabItem: IRouteViewRouteItem) => VNodeChild;
11
+ onCustomRenderIsolate?: (tabCurrent: IRouteViewTabCurrent) => VNodeChild;
7
12
  }
@@ -17,6 +17,7 @@ import type {
17
17
 
18
18
  import type { BeanRouter } from '../bean/bean.router.js';
19
19
  import type { BeanRouterViewBase } from '../lib/routerViewBase.js';
20
+ import type { IPageHost } from './pageHost.js';
20
21
  import type { IGetPagePathOptions, IGotoPageOptions } from './utils.js';
21
22
  import 'vue-router';
22
23
 
@@ -72,6 +73,7 @@ declare module 'zova' {
72
73
  $router: BeanRouter;
73
74
  $routerView: BeanRouterViewBase;
74
75
  $pageRoute: RouteLocationNormalizedLoadedGeneric | undefined;
76
+ $pageHost: IPageHost | undefined;
75
77
  $currentRoute: RouteLocationNormalizedLoadedGeneric | undefined;
76
78
  }
77
79
 
@@ -14,6 +14,11 @@ export interface IRouteViewRouteItem extends IRouteViewRouteItemBase {
14
14
  pageMeta?: IPageMeta;
15
15
  }
16
16
 
17
+ export interface IRouteViewTabCurrent {
18
+ tabKey: string;
19
+ items?: IRouteViewRouteItem[];
20
+ }
21
+
17
22
  export interface IRouteViewRouteMeta extends IRouteViewRouteItemBase {
18
23
  tabKey: string;
19
24
  }