zova-module-a-routerstack 5.1.10 → 5.1.11
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.
- package/dist/.metadata/component/routerViewStack.d.ts +5 -0
- package/dist/.metadata/component/routerViewStack.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/rest/components.ts +1 -1
- package/src/.metadata/component/routerViewStack.ts +5 -0
- package/rest/component/routerViewStack.ts +0 -8
|
@@ -17,5 +17,10 @@ export declare const ZRouterViewStack: import("vue").DefineSetupFnComponent<Type
|
|
|
17
17
|
} | {
|
|
18
18
|
[x: `on${Capitalize<string>}`]: ((...args: never) => any) | undefined;
|
|
19
19
|
}), import("vue").PublicProps>;
|
|
20
|
+
declare module 'zova-module-a-bean' {
|
|
21
|
+
interface IVonaComponentRecord {
|
|
22
|
+
'a-routerstack:routerViewStack': ControllerRouterViewStackProps;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
20
25
|
export {};
|
|
21
26
|
//# sourceMappingURL=routerViewStack.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routerViewStack.d.ts","sourceRoot":"","sources":["../../../src/.metadata/component/routerViewStack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,MAAM,CAAC;AAKrD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAErG,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,MAAM,MAAM,wCAAwC,GAAG;IACrD,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAC;CAC1D,GAAG,8BAA8B,CAAC;AAEnC,KAAK,oBAAoB,GAAG,wBAAwB,CAClD,8BAA8B,EAC9B,MAAM,OAAO,yBAAyB,CAAC,aAAa,CACrD,CAAC;AACF,OAAO,QAAQ,2BAA2B,CAAC;IACzC,UAAiB,yBAAyB;QACxC,MAAM,EAAE,oBAAoB,CAAC;KAC9B;CACF;AAED,eAAO,MAAM,gBAAgB;oBAbX,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI;;;;;8BAmBzD,CAAC"}
|
|
1
|
+
{"version":3,"file":"routerViewStack.d.ts","sourceRoot":"","sources":["../../../src/.metadata/component/routerViewStack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,MAAM,CAAC;AAKrD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAErG,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,MAAM,MAAM,wCAAwC,GAAG;IACrD,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAC;CAC1D,GAAG,8BAA8B,CAAC;AAEnC,KAAK,oBAAoB,GAAG,wBAAwB,CAClD,8BAA8B,EAC9B,MAAM,OAAO,yBAAyB,CAAC,aAAa,CACrD,CAAC;AACF,OAAO,QAAQ,2BAA2B,CAAC;IACzC,UAAiB,yBAAyB;QACxC,MAAM,EAAE,oBAAoB,CAAC;KAC9B;CACF;AAED,eAAO,MAAM,gBAAgB;oBAbX,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI;;;;;8BAmBzD,CAAC;AACF,OAAO,QAAQ,oBAAoB,CAAC;IAClC,UAAiB,oBAAoB;QACnC,+BAA+B,EAAE,8BAA8B,CAAC;KACjE;CACF"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Use","Controller","BeanRouterViewBase","ControllerRouterViewStack","_dec","_dec2","__z_BeanInfo","module","_dec3","injectionScope","_dec4","Reflect","metadata","ModelStack","Object","_class","_class2","_ControllerRouterViewStack","constructor","args","_initializerDefineProperty","_descriptor","backRoute","route","$$modelStack","forwardRoute","prepareRouteMeta","getKeepAliveInclude","keepAliveInclude","$propsDefault","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer"],"sources":["../src/model/stack.ts","../src/component/routerViewStack/controller.tsx","../src/.metadata/component/routerViewStack.ts","../src/.metadata/index.ts"],"sourcesContent":["import type { IDecoratorModelOptions } from 'zova-module-a-model';\n\nimport { RouteLocationNormalizedLoadedGeneric } from '@cabloy/vue-router';\nimport { mutate } from 'mutate-on-copy';\nimport { deepExtend, useComputed } from 'zova';\nimport { BeanModelBase, Model } from 'zova-module-a-model';\nimport { IRouteViewRouteMeta } from 'zova-module-a-router';\n\nimport {\n ModelStackOptions,\n ModelStackOptionsBase,\n RouteTab,\n RouteTabTransient,\n} from '../types/stack.js';\n\nexport interface IModelOptionsStack extends IDecoratorModelOptions, ModelStackOptionsBase {}\n\n@Model<IModelOptionsStack>({\n enableSelector: true,\n max: -1,\n})\nexport class ModelStack extends BeanModelBase {\n stackOptions: ModelStackOptions;\n tabs: RouteTab[];\n keepAliveInclude: string[];\n\n protected async __init__(scene: string, options?: ModelStackOptions) {\n await super.__init__(scene);\n this.bean._setBean('$$modelStack', this);\n // options\n this.stackOptions = deepExtend({}, this.$onionOptions, options);\n // tabs: always []\n this.tabs = [];\n // computed\n this.keepAliveInclude = useComputed(() => {\n return this._getKeepAliveInclude();\n });\n // first route\n if (this.$currentRoute) {\n this.forwardRoute(this.$currentRoute);\n }\n }\n\n addTab(tab: RouteTabTransient): boolean {\n return this._addTab(tab);\n }\n\n _addTab(tab: Partial<RouteTabTransient>): boolean {\n const tabKey = tab.tabKey;\n if (!tabKey) return false;\n // tab\n const [index, tabOld] = this.findTab(tabKey);\n // tabs\n if (index === -1) {\n // new\n const tabNew: RouteTab = {\n tabKey,\n updatedAt: Date.now(),\n };\n this.tabs = mutate(this.tabs, copyState => {\n copyState.push(tabNew);\n });\n this.pruneTabs();\n } else {\n // update\n if (!this._checkIfTabNeedUpdate(tabOld!, tab)) {\n return false;\n }\n this.updateTab(tab);\n }\n return true;\n }\n\n findTab(tabKey?: string): [number, RouteTab | undefined] {\n if (!tabKey) return [-1, undefined];\n const index = this.tabs.findIndex(item => item.tabKey === tabKey);\n if (index === -1) return [index, undefined];\n return [index, this.tabs[index]];\n }\n\n deleteTab(tabKey?: string) {\n if (!tabKey) return false;\n // tabs\n const [index] = this.findTab(tabKey);\n if (index === -1) return false;\n // tabs\n this.tabs = mutate(this.tabs, copyState => {\n copyState.splice(index, 1);\n });\n return true;\n }\n\n updateTab(tab: Partial<RouteTabTransient>) {\n const tabKey = tab.tabKey!;\n const [index, tabOld] = this.findTab(tabKey);\n if (index === -1 || !tabOld) return;\n const tabNew: RouteTab = {\n ...tabOld,\n tabKey,\n updatedAt: Date.now(),\n };\n this.tabs = mutate(this.tabs, copyState => {\n copyState.splice(index, 1, tabNew);\n });\n }\n\n async pruneTabs() {\n let max = this.stackOptions.max;\n if (max === undefined || max === -1) return;\n if (max < 1) max = 1;\n while (true) {\n if (this.tabs.length <= max) break;\n let tabKey: string | undefined;\n let updatedAt = Date.now();\n for (const tab of this.tabs) {\n if (tab.updatedAt < updatedAt) {\n tabKey = tab.tabKey;\n updatedAt = tab.updatedAt;\n }\n }\n if (!tabKey) break;\n this.deleteTab(tabKey);\n }\n }\n\n // special for _addTab\n private _checkIfTabNeedUpdate(tabOld: RouteTab, _tabNew: Partial<RouteTabTransient>) {\n const recentTabIndex = this.tabs.findIndex(\n item => item.tabKey !== tabOld.tabKey && (item.updatedAt ?? 0) >= (tabOld.updatedAt ?? 0),\n );\n if (recentTabIndex > -1) return true;\n return false;\n }\n\n private _getKeepAliveInclude() {\n const include: string[] = [];\n for (const tab of this.tabs) {\n if (!include.includes(tab.tabKey)) {\n include.push(tab.tabKey);\n }\n }\n return include;\n }\n\n backRoute(route: RouteLocationNormalizedLoadedGeneric) {\n this.deleteTab(route.fullPath);\n }\n\n forwardRoute(route: RouteLocationNormalizedLoadedGeneric) {\n const componentMeta = this.prepareRouteMeta(route);\n this.addTab(componentMeta);\n }\n\n prepareRouteMeta(route: RouteLocationNormalizedLoadedGeneric): IRouteViewRouteMeta {\n // fullPath\n const fullPath = route.fullPath;\n // tab\n return { tabKey: fullPath, componentKey: fullPath, fullPath };\n }\n}\n","import { RouteLocationNormalizedLoadedGeneric } from '@cabloy/vue-router';\nimport { Use } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\nimport {\n BeanRouterViewBase,\n IRouterViewPropsBase,\n IRouteViewRouteMeta,\n} from 'zova-module-a-router';\n\nimport type { ModelStack } from '../../model/stack.js';\n\nexport interface ControllerRouterViewStackProps extends IRouterViewPropsBase {}\n\n@Controller()\nexport class ControllerRouterViewStack extends BeanRouterViewBase {\n static $propsDefault = {};\n\n @Use({ injectionScope: 'skipSelf' })\n $$modelStack: ModelStack;\n\n public backRoute(route: RouteLocationNormalizedLoadedGeneric) {\n this.$$modelStack.backRoute(route);\n return true;\n }\n\n public forwardRoute(route: RouteLocationNormalizedLoadedGeneric) {\n this.$$modelStack.forwardRoute(route);\n return true;\n }\n\n protected prepareRouteMeta(route: RouteLocationNormalizedLoadedGeneric): IRouteViewRouteMeta {\n return this.$$modelStack.prepareRouteMeta(route);\n }\n\n protected getKeepAliveInclude(): string[] | undefined {\n return this.$$modelStack.keepAliveInclude;\n }\n}\n","import type { TypeControllerInnerProps } from 'zova';\n\nimport { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\n\nimport type { ControllerRouterViewStackProps } from '../../component/routerViewStack/controller.jsx';\n\nimport { ControllerRouterViewStack } from '../../component/routerViewStack/controller.jsx';\nexport type TypeControllerRouterViewStackPublicProps = {\n controllerRef?: (ref: ControllerRouterViewStack) => void;\n} & ControllerRouterViewStackProps;\n\ntype ControllerInnerProps = TypeControllerInnerProps<\n ControllerRouterViewStackProps,\n keyof typeof ControllerRouterViewStack.$propsDefault\n>;\ndeclare module 'zova-module-a-routerstack' {\n export interface ControllerRouterViewStack {\n $props: ControllerInnerProps;\n }\n}\n\nexport const ZRouterViewStack = defineComponent(\n (_props: TypeControllerRouterViewStackPublicProps) => {\n useController(ControllerRouterViewStack, undefined, undefined);\n return () => {};\n },\n prepareComponentOptions(),\n);\n","// eslint-disable\n/** model: begin */\nexport * from '../model/stack.js';\nimport { IModelOptionsStack } from '../model/stack.js';\nimport 'zova-module-a-model';\ndeclare module 'zova-module-a-model' {\n \n export interface IModelRecord {\n 'a-routerstack:stack': IModelOptionsStack;\n }\n\n \n}\ndeclare module 'zova-module-a-routerstack' {\n \n export interface ModelStack {\n /** @internal */\n get scope(): ScopeModuleARouterstack;\n }\n\n export interface ModelStack {\n get $beanFullName(): 'a-routerstack.model.stack';\n get $onionName(): 'a-routerstack:stack';\n get $onionOptions(): IModelOptionsStack;\n } \n}\n/** model: end */\n/** model: begin */\nimport { ModelStack } from '../model/stack.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-routerstack.model.stack': ModelStack;\n }\n}\n/** model: end */\n/** controller: begin */\nexport * from '../component/routerViewStack/controller.jsx';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-routerstack' {\n \n export interface ControllerRouterViewStack {\n /** @internal */\n get scope(): ScopeModuleARouterstack;\n } \n}\n/** controller: end */\n/** controller: begin */\nimport { ControllerRouterViewStack } from '../component/routerViewStack/controller.jsx';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordLocal {\n 'a-routerstack.controller.routerViewStack': ControllerRouterViewStack;\n }\n}\n/** controller: end */\n\n/** components: begin */\nexport * from './component/routerViewStack.js';\nimport { ZRouterViewStack } from './component/routerViewStack.js';\nexport const components = {\n 'routerViewStack': ZRouterViewStack,\n};\nimport 'zova';\ndeclare module 'zova' {\nexport interface IComponentRecord {\n 'a-routerstack:routerViewStack': ControllerRouterViewStack;\n}\nexport interface IZovaComponentRecord {\n 'a-routerstack:routerViewStack': typeof ZRouterViewStack;\n}\n}\n/** components: end */\n/** scope: begin */\nimport { BeanScopeBase, type BeanScopeUtil } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\n\n@Scope()\nexport class ScopeModuleARouterstack extends BeanScopeBase {}\n\nexport interface ScopeModuleARouterstack {\n util: BeanScopeUtil;\n}\n\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanScopeRecord {\n 'a-routerstack': ScopeModuleARouterstack;\n }\n \n \n\n \n\n \n}\n \n/** scope: end */\n"],"mappings":";;;;;;;AAAA,IAAA,QAAO,SAAO;AAKd,IAAS,gBAAe,SAAQ,MAAM;CACtC,gBAAS;;CAET,CAAA,EAAA,UAAO,SAAA,EACL,QAAA,iBACD,CAAC,EAAA,OAAA,WAAA,QAAqB,WAAA,MAAA,mBAAA,cAAA;CACrB,YAAQ,GAAA,MAAA;AACR,QAAA,GAAA,KAAA;AACA,OAAO,eAAc,KAAG;;AAE1B,OAAO,mBAAU,KAAA;;CAEhB,MAAM,SAAA,OAAA,SAAoB;AACzB,QAAA,MAAc,SAAM,MAAA;AACpB,OAAO,KAAA,SAAA,gBAAA,KAAA;AAET,OAAO,eAAiB,WAAQ,EAAA,EAAA,KAAA,eAAc,QAAA;AAE5C,OAAM,OAAQ,EAAE;;AAGhB,UAAU,KAAM,sBAAsB;IACpC;AAEA,MAAG,KAAA,cACH,MAAK,aAAe,KAAA,cAAmB;;CAGzC,OAAK,KAAA;AACH,SAAK,KAAA,QAAA,IAAmB;;CAE1B,QAAI,KAAA;EACF,MAAG,SAAM,IAAA;AACT,MAAI,CAAA,OAAM,QAAA;EAEV,MAAA,CAAA,OAAA,UAAA,KAAA,QAAA,OAAA;;GAIA,MAAO,SAAK;IACd;;IAEA;AACE,QAAM,OAAQ,OAAK,KAAM,OAAA,cAAA;AACrB,cAAS,KAAM,OAAM;KACtB;AACH,QAAO,WAAO;SACX;AAED,OAAG,CAAA,KAAA,sBAAA,QAAA,IAAA,CACH,QAAM;AAEN,QAAE,UAAW,IAAK;;AAEpB,SAAO;;CAET,QAAM,QAAA;AACJ,MAAE,CAAA,OAAK,QAAW,CAAA,IAAA,KAAA,EAAA;EAClB,MAAM,QAAC,KAAA,KAAA,WAAA,SAAA,KAAA,WAAA,OAAA;AACP,MAAI,UAAC,GAAA,QAAA,CAAA,OAAA,KAAA,EAAA;AACL,SAAO,CAAA,OAAK,KAAA,KAAA,OAAA;;CAEd,UAAI,QAAA;AACF,MAAE,CAAA,OAAK,QAAa;EAEpB,MAAM,CAAC,SAAI,KAAA,QAAA,OAAA;AACb,MAAA,UAAA,GAAA,QAAA;AAEA,OAAO,OAAO,OAAG,KAAS,OAAC,cAAkB;AACzC,aAAU,OAAO,OAAM,EAAA;IACzB;AACA,SAAI;;CAEN,UAAA,KAAA;;EAEA,MAAA,CAAS,OAAO,UAAU,KAAC,QAAA,OAAA;AACzB,MAAI,UAAS,MAAO,CAAA,OAAK;EACzB,MAAG,SAAA;GACH,GAAK;GACH;GACA,WAAC,KAAA,KAAA;GACH;AACA,OAAE,OAAU,OAAO,KAAK,OAAI,cAAA;AAC1B,aAAA,OAAA,OAAA,GAAA,OAAA;IACF;;;EAGF,IAAA,MAAU,KAAK,aAAQ;AACrB,MAAA,QAAY,KAAA,KAAa,QAAC,GAAA;AAC1B,MAAA,MAAO,EAAM,OAAC;AACd,SAAI,MAAS;AACb,OAAM,KAAA,KAAQ,UAAW,IAAA;GACvB,IAAG;GACH,IAAA,YAAM,KAAA,KAAA;AACN,QAAA,MAAW,OAAK,KAAK,KACtB,KAAA,IAAA,YAAA,WAAA;AACI,aAAO,IAAO;AACjB,gBAAgB,IAAC;;;AAIrB,QAAM,UAAY,OAAA;;;CAKlB,sBAAkB,QAAU,SAAU;AAEpC,MADuB,KAAA,KAAS,WAAA,SAAA,KAAA,WAAA,OAAA,WAAA,KAAA,aAAA,OAAA,OAAA,aAAA,GAAA,GACd,GAAK,QAAK;AAC5B,SAAO;;CAET,uBAAqB;EACnB,MAAM,UAAU,EAAE;AAClB,OAAI,MAAA,OAAA,KAAA,KACF,KAAA,CAAA,QAAA,SAAA,IAAA,OAAA,CACE,SAAG,KAAQ,IAAK,OAAA;AAGtB,SAAA;;CAEA,UAAU,OAAK;AACf,OAAO,UAAC,MAAA,SAAsB;;CAE9B,aAAY,OAAK;EACf,MAAC,gBAAA,KAAA,iBAAA,MAAA;AACD,OAAI,OAAA,cAAqB;;CAE3B,iBAAA,OAAA;EAEA,MAAQ,WAAA,MAAA;AAEN,SAAK;GACH,QAAK;GACL,cAAc;GACd;GACF;;EAEF,IAAA,SAAA,IAAA;;;;;;;;;;;;;;;;;;;;ACjIF,IACaG,6BAAyBC,SADrCH,YAAY,EAAAI,UAAAC,SAAA,EAAAC,QAAA,iBAAA,CAAA,EAAAC,QAIVR,IAAI,EAAES,gBAAgB,YAAY,CAAC,EAAAC,QAAAC,QAAAC,SAAA,eAAA,OAAAC,eAAA,cAAAC,SAAAD,WAAA,EAAAT,OAAAW,WAAAV,QAAAU,YAAAC,WAAAC,6BAJtC,MACad,kCAAkCD,mBAAmB;CAAAgB,YAAA,GAAAC,MAAA;AAAA,QAAA,GAAAA,KAAA;AAAAC,6BAAA,MAAA,gBAAAC,aAAA,KAAA;;CAMzDC,UAAUC,OAA6C;AAC5D,OAAKC,aAAaF,UAAUC,MAAM;AAClC,SAAO;;CAGFE,aAAaF,OAA6C;AAC/D,OAAKC,aAAaC,aAAaF,MAAM;AACrC,SAAO;;CAGCG,iBAAiBH,OAAkE;AAC3F,SAAO,KAAKC,aAAaE,iBAAiBH,MAAM;;CAGxCI,sBAA4C;AACpD,SAAO,KAAKH,aAAaI;;GAE5BX,2BAtBQY,gBAAgB,EAAE,EAAAZ,6BAAAI,cAAAS,0BAAAd,QAAAe,WAAA,gBAAA,CAAAvB,OAAAE,MAAA,EAAA;CAAAsB,cAAA;CAAAC,YAAA;CAAAC,UAAA;CAAAC,aAAA;CAAA,CAAA,EAAAnB,SAAA,IAAAD,SAAA,IAAAA;;;ACZ3B,IAAS,mBAAuB,iBAAgB,WAAQ;;AAExD,cAAc;;;;;;ACLd,IAAG,MAAO,OAAA;AAuBV,IAAa,aAAE,EACb,mBAAO,kBACT;AAMA,IAAS,2BAA6B,OAAA,OAAA,EAAA,QAAA,SAAA,EACpC,QAAK,iBACN,CAAC,EAAA,KAAA,SAAA,MAAA,SAAA,MAAA,gCAAA,cAAA,GAAA,IAAA,OAAA,IAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["Use","Controller","BeanRouterViewBase","ControllerRouterViewStack","_dec","_dec2","__z_BeanInfo","module","_dec3","injectionScope","_dec4","Reflect","metadata","ModelStack","Object","_class","_class2","_ControllerRouterViewStack","constructor","args","_initializerDefineProperty","_descriptor","backRoute","route","$$modelStack","forwardRoute","prepareRouteMeta","getKeepAliveInclude","keepAliveInclude","$propsDefault","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer"],"sources":["../src/model/stack.ts","../src/component/routerViewStack/controller.tsx","../src/.metadata/component/routerViewStack.ts","../src/.metadata/index.ts"],"sourcesContent":["import type { IDecoratorModelOptions } from 'zova-module-a-model';\n\nimport { RouteLocationNormalizedLoadedGeneric } from '@cabloy/vue-router';\nimport { mutate } from 'mutate-on-copy';\nimport { deepExtend, useComputed } from 'zova';\nimport { BeanModelBase, Model } from 'zova-module-a-model';\nimport { IRouteViewRouteMeta } from 'zova-module-a-router';\n\nimport {\n ModelStackOptions,\n ModelStackOptionsBase,\n RouteTab,\n RouteTabTransient,\n} from '../types/stack.js';\n\nexport interface IModelOptionsStack extends IDecoratorModelOptions, ModelStackOptionsBase {}\n\n@Model<IModelOptionsStack>({\n enableSelector: true,\n max: -1,\n})\nexport class ModelStack extends BeanModelBase {\n stackOptions: ModelStackOptions;\n tabs: RouteTab[];\n keepAliveInclude: string[];\n\n protected async __init__(scene: string, options?: ModelStackOptions) {\n await super.__init__(scene);\n this.bean._setBean('$$modelStack', this);\n // options\n this.stackOptions = deepExtend({}, this.$onionOptions, options);\n // tabs: always []\n this.tabs = [];\n // computed\n this.keepAliveInclude = useComputed(() => {\n return this._getKeepAliveInclude();\n });\n // first route\n if (this.$currentRoute) {\n this.forwardRoute(this.$currentRoute);\n }\n }\n\n addTab(tab: RouteTabTransient): boolean {\n return this._addTab(tab);\n }\n\n _addTab(tab: Partial<RouteTabTransient>): boolean {\n const tabKey = tab.tabKey;\n if (!tabKey) return false;\n // tab\n const [index, tabOld] = this.findTab(tabKey);\n // tabs\n if (index === -1) {\n // new\n const tabNew: RouteTab = {\n tabKey,\n updatedAt: Date.now(),\n };\n this.tabs = mutate(this.tabs, copyState => {\n copyState.push(tabNew);\n });\n this.pruneTabs();\n } else {\n // update\n if (!this._checkIfTabNeedUpdate(tabOld!, tab)) {\n return false;\n }\n this.updateTab(tab);\n }\n return true;\n }\n\n findTab(tabKey?: string): [number, RouteTab | undefined] {\n if (!tabKey) return [-1, undefined];\n const index = this.tabs.findIndex(item => item.tabKey === tabKey);\n if (index === -1) return [index, undefined];\n return [index, this.tabs[index]];\n }\n\n deleteTab(tabKey?: string) {\n if (!tabKey) return false;\n // tabs\n const [index] = this.findTab(tabKey);\n if (index === -1) return false;\n // tabs\n this.tabs = mutate(this.tabs, copyState => {\n copyState.splice(index, 1);\n });\n return true;\n }\n\n updateTab(tab: Partial<RouteTabTransient>) {\n const tabKey = tab.tabKey!;\n const [index, tabOld] = this.findTab(tabKey);\n if (index === -1 || !tabOld) return;\n const tabNew: RouteTab = {\n ...tabOld,\n tabKey,\n updatedAt: Date.now(),\n };\n this.tabs = mutate(this.tabs, copyState => {\n copyState.splice(index, 1, tabNew);\n });\n }\n\n async pruneTabs() {\n let max = this.stackOptions.max;\n if (max === undefined || max === -1) return;\n if (max < 1) max = 1;\n while (true) {\n if (this.tabs.length <= max) break;\n let tabKey: string | undefined;\n let updatedAt = Date.now();\n for (const tab of this.tabs) {\n if (tab.updatedAt < updatedAt) {\n tabKey = tab.tabKey;\n updatedAt = tab.updatedAt;\n }\n }\n if (!tabKey) break;\n this.deleteTab(tabKey);\n }\n }\n\n // special for _addTab\n private _checkIfTabNeedUpdate(tabOld: RouteTab, _tabNew: Partial<RouteTabTransient>) {\n const recentTabIndex = this.tabs.findIndex(\n item => item.tabKey !== tabOld.tabKey && (item.updatedAt ?? 0) >= (tabOld.updatedAt ?? 0),\n );\n if (recentTabIndex > -1) return true;\n return false;\n }\n\n private _getKeepAliveInclude() {\n const include: string[] = [];\n for (const tab of this.tabs) {\n if (!include.includes(tab.tabKey)) {\n include.push(tab.tabKey);\n }\n }\n return include;\n }\n\n backRoute(route: RouteLocationNormalizedLoadedGeneric) {\n this.deleteTab(route.fullPath);\n }\n\n forwardRoute(route: RouteLocationNormalizedLoadedGeneric) {\n const componentMeta = this.prepareRouteMeta(route);\n this.addTab(componentMeta);\n }\n\n prepareRouteMeta(route: RouteLocationNormalizedLoadedGeneric): IRouteViewRouteMeta {\n // fullPath\n const fullPath = route.fullPath;\n // tab\n return { tabKey: fullPath, componentKey: fullPath, fullPath };\n }\n}\n","import { RouteLocationNormalizedLoadedGeneric } from '@cabloy/vue-router';\nimport { Use } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\nimport {\n BeanRouterViewBase,\n IRouterViewPropsBase,\n IRouteViewRouteMeta,\n} from 'zova-module-a-router';\n\nimport type { ModelStack } from '../../model/stack.js';\n\nexport interface ControllerRouterViewStackProps extends IRouterViewPropsBase {}\n\n@Controller()\nexport class ControllerRouterViewStack extends BeanRouterViewBase {\n static $propsDefault = {};\n\n @Use({ injectionScope: 'skipSelf' })\n $$modelStack: ModelStack;\n\n public backRoute(route: RouteLocationNormalizedLoadedGeneric) {\n this.$$modelStack.backRoute(route);\n return true;\n }\n\n public forwardRoute(route: RouteLocationNormalizedLoadedGeneric) {\n this.$$modelStack.forwardRoute(route);\n return true;\n }\n\n protected prepareRouteMeta(route: RouteLocationNormalizedLoadedGeneric): IRouteViewRouteMeta {\n return this.$$modelStack.prepareRouteMeta(route);\n }\n\n protected getKeepAliveInclude(): string[] | undefined {\n return this.$$modelStack.keepAliveInclude;\n }\n}\n","import type { TypeControllerInnerProps } from 'zova';\n\nimport { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\n\nimport type { ControllerRouterViewStackProps } from '../../component/routerViewStack/controller.jsx';\n\nimport { ControllerRouterViewStack } from '../../component/routerViewStack/controller.jsx';\nexport type TypeControllerRouterViewStackPublicProps = {\n controllerRef?: (ref: ControllerRouterViewStack) => void;\n} & ControllerRouterViewStackProps;\n\ntype ControllerInnerProps = TypeControllerInnerProps<\n ControllerRouterViewStackProps,\n keyof typeof ControllerRouterViewStack.$propsDefault\n>;\ndeclare module 'zova-module-a-routerstack' {\n export interface ControllerRouterViewStack {\n $props: ControllerInnerProps;\n }\n}\n\nexport const ZRouterViewStack = defineComponent(\n (_props: TypeControllerRouterViewStackPublicProps) => {\n useController(ControllerRouterViewStack, undefined, undefined);\n return () => {};\n },\n prepareComponentOptions(),\n);\ndeclare module 'zova-module-a-bean' {\n export interface IVonaComponentRecord {\n 'a-routerstack:routerViewStack': ControllerRouterViewStackProps;\n }\n}\n","// eslint-disable\n/** model: begin */\nexport * from '../model/stack.js';\nimport { IModelOptionsStack } from '../model/stack.js';\nimport 'zova-module-a-model';\ndeclare module 'zova-module-a-model' {\n \n export interface IModelRecord {\n 'a-routerstack:stack': IModelOptionsStack;\n }\n\n \n}\ndeclare module 'zova-module-a-routerstack' {\n \n export interface ModelStack {\n /** @internal */\n get scope(): ScopeModuleARouterstack;\n }\n\n export interface ModelStack {\n get $beanFullName(): 'a-routerstack.model.stack';\n get $onionName(): 'a-routerstack:stack';\n get $onionOptions(): IModelOptionsStack;\n } \n}\n/** model: end */\n/** model: begin */\nimport { ModelStack } from '../model/stack.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-routerstack.model.stack': ModelStack;\n }\n}\n/** model: end */\n/** controller: begin */\nexport * from '../component/routerViewStack/controller.jsx';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-routerstack' {\n \n export interface ControllerRouterViewStack {\n /** @internal */\n get scope(): ScopeModuleARouterstack;\n } \n}\n/** controller: end */\n/** controller: begin */\nimport { ControllerRouterViewStack } from '../component/routerViewStack/controller.jsx';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordLocal {\n 'a-routerstack.controller.routerViewStack': ControllerRouterViewStack;\n }\n}\n/** controller: end */\n\n/** components: begin */\nexport * from './component/routerViewStack.js';\nimport { ZRouterViewStack } from './component/routerViewStack.js';\nexport const components = {\n 'routerViewStack': ZRouterViewStack,\n};\nimport 'zova';\ndeclare module 'zova' {\nexport interface IComponentRecord {\n 'a-routerstack:routerViewStack': ControllerRouterViewStack;\n}\nexport interface IZovaComponentRecord {\n 'a-routerstack:routerViewStack': typeof ZRouterViewStack;\n}\n}\n/** components: end */\n/** scope: begin */\nimport { BeanScopeBase, type BeanScopeUtil } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\n\n@Scope()\nexport class ScopeModuleARouterstack extends BeanScopeBase {}\n\nexport interface ScopeModuleARouterstack {\n util: BeanScopeUtil;\n}\n\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanScopeRecord {\n 'a-routerstack': ScopeModuleARouterstack;\n }\n \n \n\n \n\n \n}\n \n/** scope: end */\n"],"mappings":"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"}
|
package/package.json
CHANGED
package/rest/components.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '
|
|
1
|
+
export * from 'zova-module-a-routerstack';
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { TypeRenderComponentJsxPropsPublic } from 'zova-jsx';
|
|
2
|
-
import type { ControllerRouterViewStackProps } from 'zova-module-a-routerstack';
|
|
3
|
-
|
|
4
|
-
type TypeControllerRouterViewStackPublicProps = TypeRenderComponentJsxPropsPublic &
|
|
5
|
-
ControllerRouterViewStackProps;
|
|
6
|
-
export function BBZRouterstackRouterViewStack(_props: TypeControllerRouterViewStackPublicProps) {
|
|
7
|
-
return 'a-routerstack:routerViewStack';
|
|
8
|
-
}
|