zova-module-a-routertabs 5.1.35 → 5.1.37

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.
@@ -1,6 +1,6 @@
1
1
  import type { TypeControllerInnerProps } from 'zova';
2
- import type { ControllerRouterViewTabsProps } from '../../component/routerViewTabs/controller.jsx';
3
- import { ControllerRouterViewTabs } from '../../component/routerViewTabs/controller.jsx';
2
+ import type { ControllerRouterViewTabsProps } from '../../component/routerViewTabs/controller.tsx';
3
+ import { ControllerRouterViewTabs } from '../../component/routerViewTabs/controller.tsx';
4
4
  export type ZRouterViewTabsProps = {
5
5
  controllerRef?: (ref: ControllerRouterViewTabs) => void;
6
6
  } & ControllerRouterViewTabsProps;
@@ -1,6 +1,6 @@
1
1
  /** model: begin */
2
- export * from '../model/tabs.js';
3
- import { IModelOptionsTabs } from '../model/tabs.js';
2
+ export * from '../model/tabs.ts';
3
+ import { IModelOptionsTabs } from '../model/tabs.ts';
4
4
  import 'zova-module-a-model';
5
5
  declare module 'zova-module-a-model' {
6
6
  interface IModelRecord {
@@ -18,7 +18,7 @@ declare module 'zova-module-a-routertabs' {
18
18
  }
19
19
  /** model: end */
20
20
  /** model: begin */
21
- import { ModelTabs } from '../model/tabs.js';
21
+ import type { ModelTabs } from '../model/tabs.ts';
22
22
  import 'zova';
23
23
  declare module 'zova' {
24
24
  interface IBeanRecordGeneral {
@@ -27,7 +27,7 @@ declare module 'zova' {
27
27
  }
28
28
  /** model: end */
29
29
  /** controller: begin */
30
- export * from '../component/routerViewTabs/controller.jsx';
30
+ export * from '../component/routerViewTabs/controller.tsx';
31
31
  import 'zova';
32
32
  declare module 'zova' {
33
33
  }
@@ -37,7 +37,7 @@ declare module 'zova-module-a-routertabs' {
37
37
  }
38
38
  /** controller: end */
39
39
  /** controller: begin */
40
- import { ControllerRouterViewTabs } from '../component/routerViewTabs/controller.jsx';
40
+ import type { ControllerRouterViewTabs } from '../component/routerViewTabs/controller.tsx';
41
41
  import 'zova';
42
42
  declare module 'zova' {
43
43
  interface IBeanRecordLocal {
@@ -46,8 +46,8 @@ declare module 'zova' {
46
46
  }
47
47
  /** controller: end */
48
48
  /** components: begin */
49
- export * from './component/routerViewTabs.js';
50
- import { ZRouterViewTabs } from './component/routerViewTabs.js';
49
+ export * from './component/routerViewTabs.ts';
50
+ import { ZRouterViewTabs } from './component/routerViewTabs.ts';
51
51
  export declare const components: {
52
52
  routerViewTabs: import("vue").DefineSetupFnComponent<import("zova-module-a-routertabs").ZRouterViewTabsProps, import("vue").EmitsOptions, import("vue").SlotsType<Record<string, any>>, {
53
53
  controllerRef?: (ref: ControllerRouterViewTabs) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/.metadata/index.ts"],"names":[],"mappings":"AACA,mBAAmB;AACnB,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,qBAAqB,CAAC;AAC7B,OAAO,QAAQ,qBAAqB,CAAC;IAEjC,UAAiB,YAAY;QAC3B,mBAAmB,EAAE,iBAAiB,CAAC;KACxC;CAGJ;AACD,OAAO,QAAQ,0BAA0B,CAAC;IAElC,UAAiB,SAAS;KAGzB;IAED,UAAiB,SAAS;QACxB,IAAI,aAAa,IAAI,yBAAyB,CAAC;QAC/C,IAAI,UAAU,IAAI,mBAAmB,CAAC;QACtC,IAAI,aAAa,IAAI,iBAAiB,CAAC;KACxC;CACR;AACD,iBAAiB;AACjB,mBAAmB;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,kBAAkB;QACjC,yBAAyB,EAAE,SAAS,CAAC;KACtC;CACF;AACD,iBAAiB;AACjB,wBAAwB;AACxB,cAAc,4CAA4C,CAAC;AAE3D,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;CAGrB;AACD,OAAO,QAAQ,0BAA0B,CAAC;IAElC,UAAiB,wBAAwB;KAGxC;CACR;AACD,sBAAsB;AACtB,wBAAwB;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,gBAAgB;QAC/B,wCAAwC,EAAE,wBAAwB,CAAC;KACpE;CACF;AACD,sBAAsB;AAEtB,wBAAwB;AACxB,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,eAAO,MAAM,UAAU;;;;;;;;CAEtB,CAAC;AACF,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACtB,UAAiB,gBAAgB;QAC/B,6BAA6B,EAAE,wBAAwB,CAAC;KACzD;IACD,UAAiB,oBAAoB;QACnC,6BAA6B,EAAE,OAAO,eAAe,CAAC;KACvD;CACA;AACD,sBAAsB;AACtB,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,MAAM,CAAC;AAGzD,qBACa,sBAAuB,SAAQ,aAAa;CAAG;AAE5D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,gBAAgB;QAC/B,cAAc,EAAE,sBAAsB,CAAC;KACxC;CAOF;AAED,iBAAiB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/.metadata/index.ts"],"names":[],"mappings":"AACA,mBAAmB;AACnB,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,qBAAqB,CAAC;AAC7B,OAAO,QAAQ,qBAAqB,CAAC;IAEjC,UAAiB,YAAY;QAC3B,mBAAmB,EAAE,iBAAiB,CAAC;KACxC;CAGJ;AACD,OAAO,QAAQ,0BAA0B,CAAC;IAElC,UAAiB,SAAS;KAGzB;IAED,UAAiB,SAAS;QACxB,IAAI,aAAa,IAAI,yBAAyB,CAAC;QAC/C,IAAI,UAAU,IAAI,mBAAmB,CAAC;QACtC,IAAI,aAAa,IAAI,iBAAiB,CAAC;KACxC;CACR;AACD,iBAAiB;AACjB,mBAAmB;AACnB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,kBAAkB;QACjC,yBAAyB,EAAE,SAAS,CAAC;KACtC;CACF;AACD,iBAAiB;AACjB,wBAAwB;AACxB,cAAc,4CAA4C,CAAC;AAE3D,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;CAGrB;AACD,OAAO,QAAQ,0BAA0B,CAAC;IAElC,UAAiB,wBAAwB;KAGxC;CACR;AACD,sBAAsB;AACtB,wBAAwB;AACxB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,gBAAgB;QAC/B,wCAAwC,EAAE,wBAAwB,CAAC;KACpE;CACF;AACD,sBAAsB;AAEtB,wBAAwB;AACxB,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,eAAO,MAAM,UAAU;;;;;;;;CAEtB,CAAC;AACF,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACtB,UAAiB,gBAAgB;QAC/B,6BAA6B,EAAE,wBAAwB,CAAC;KACzD;IACD,UAAiB,oBAAoB;QACnC,6BAA6B,EAAE,OAAO,eAAe,CAAC;KACvD;CACA;AACD,sBAAsB;AACtB,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,MAAM,CAAC;AAGzD,qBACa,sBAAuB,SAAQ,aAAa;CAAG;AAE5D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,gBAAgB;QAC/B,cAAc,EAAE,sBAAsB,CAAC;KACxC;CAOF;AAED,iBAAiB"}
@@ -1,3 +1,3 @@
1
1
  export declare const __ThisModule__ = "a-routertabs";
2
- export { ScopeModuleARoutertabs as ScopeModule } from './index.js';
2
+ export { ScopeModuleARoutertabs as ScopeModule } from './index.ts';
3
3
  //# sourceMappingURL=this.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import { RouteLocationNormalizedLoadedGeneric } from '@cabloy/vue-router';
2
2
  import { BeanRouterViewBase, IPageMeta, IRouterViewPropsBase, IRouteViewRouteMeta } from 'zova-module-a-router';
3
- import type { ModelTabs } from '../../model/tabs.js';
3
+ import type { ModelTabs } from '../../model/tabs.ts';
4
4
  export interface ControllerRouterViewTabsProps extends IRouterViewPropsBase {
5
5
  }
6
6
  export declare class ControllerRouterViewTabs extends BeanRouterViewBase {
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './.metadata/index.js';
2
- export * from './types/index.js';
1
+ export * from './.metadata/index.ts';
2
+ export * from './types/index.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -605,8 +605,6 @@ var ZRouterViewTabs = defineComponent((_props) => {
605
605
  }, prepareComponentOptions());
606
606
  //#endregion
607
607
  //#region src/.metadata/index.ts
608
- /** components: end */
609
- /** scope: begin */
610
608
  var _dec;
611
609
  var _dec2;
612
610
  var _class;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Use","Controller","BeanRouterViewBase","ControllerRouterViewTabs","_dec","_dec2","__z_BeanInfo","module","_dec3","injectionScope","_dec4","Reflect","metadata","ModelTabs","Object","_class","_class2","_ControllerRouterViewTabs","constructor","args","_initializerDefineProperty","_descriptor","backRoute","route","$$modelTabs","forwardRoute","setPageMeta","pageMeta","prepareRouteMeta","getKeepAliveInclude","keepAliveInclude","$propsDefault","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer"],"sources":["../src/model/tabs.ts","../src/component/routerViewTabs/controller.tsx","../src/.metadata/component/routerViewTabs.ts","../src/.metadata/index.ts"],"sourcesContent":["var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport { mutate } from 'mutate-on-copy';\nimport { shallowReactive } from 'vue';\nimport { deepEqual, deepExtend } from 'zova';\nimport { BeanModelBase, Model } from 'zova-module-a-model';\nexport let ModelTabs = (_dec = Model({\n enableSelector: true,\n max: -1,\n maxItems: -1,\n cache: false\n}), _dec2 = __z_BeanInfo({\n module: \"a-routertabs\"\n}), _dec(_class = _dec2(_class = class ModelTabs extends BeanModelBase {\n constructor(...args) {\n super(...args);\n this.tabsOptions = void 0;\n this._tabsState = void 0;\n this._tabsReadiness = void 0;\n this._tabsDisposed = false;\n this._offPersistence = void 0;\n this.componentKeyCurrent = void 0;\n this.tabKeyCurrent = void 0;\n this.tabCurrentIndex = void 0;\n this.tabCurrent = void 0;\n this.keepAliveInclude = void 0;\n this._eventSsrHmrReload = void 0;\n }\n get tabs() {\n if (this._tabsDisposed || this.ctx.disposed) return [];\n if (!this.tabsOptions?.cache) return this._tabsState ?? [];\n const readiness = this._getTabsReadiness();\n if (!readiness.ready) {\n this._startTabsRestore(readiness);\n return [];\n }\n return this._tabsState;\n }\n set tabs(value) {\n if (this._tabsDisposed || this.ctx.disposed) return;\n // The pending array is only a projection, never a write/default for storage.\n if (this.tabsOptions.cache && !this._getTabsReadiness().ready) return;\n this._tabsState = value;\n }\n async __init__(scene, options) {\n const ctx = this.ctx;\n await super.__init__(scene);\n if (this._tabsDisposed || ctx.disposed) return;\n this.bean._setBean('$$modelTabs', this);\n // options\n this.tabsOptions = deepExtend({}, this.$onionOptions, options);\n // computed\n this.tabCurrentIndex = this.$computed(() => {\n const [index] = this.findTab(this.tabKeyCurrent);\n return index;\n });\n this.tabCurrent = this.$computed(() => {\n const [, tab] = this.findTab(this.tabKeyCurrent);\n return tab;\n });\n this.keepAliveInclude = this.$computed(() => {\n return this._getKeepAliveInclude();\n });\n // componentKeyCurrent\n const queryOptionsComponentKeyCurrent = {\n queryKey: ['componentKeyCurrent']\n };\n this.componentKeyCurrent = this.$useStateMem(queryOptionsComponentKeyCurrent);\n // tabKeyCurrent\n const queryOptionsTabKeyCurrent = {\n queryKey: ['tabKeyCurrent']\n };\n this.tabKeyCurrent = this.$useStateMem(queryOptionsTabKeyCurrent);\n // if (this.tabsOptions.cache) {\n // this.tabKeyCurrent = this.$useStateLocalAsync(queryOptionsTabKeyCurrent);\n // } else {\n // this.tabKeyCurrent = this.$useStateMem(queryOptionsTabKeyCurrent);\n // }\n // tabs\n const queryOptionsTabs = {\n queryKey: ['tabs'],\n meta: {\n // Memory query metadata is dehydrated; only DB state can retain a factory.\n defaultData: this.tabsOptions.cache ? () => this._getInitialTabs() : this._getInitialTabs()\n }\n };\n if (this.tabsOptions.cache) {\n this._tabsState = this.$useStateLocalAsync(queryOptionsTabs);\n const persistence = this.$modelPersistence;\n this._offPersistence = persistence.subscribe(() => {\n if (!this._tabsDisposed && !this.ctx.disposed) {\n this._startTabsRestore(this._getTabsReadiness());\n }\n });\n // Keep initial ordering, but do not initialize a route from an obsolete\n // restore if identity changes while the model itself is being loaded.\n while (!this._tabsDisposed && !this.ctx.disposed) {\n const readiness = this._getTabsReadiness();\n await this._startTabsRestore(readiness);\n if (this._isTabsReadinessCurrent(readiness)) break;\n }\n } else {\n this._tabsState = this.$useStateMem(queryOptionsTabs);\n this._initializeTabs();\n }\n if (this._tabsDisposed || this.ctx.disposed) return;\n // event\n if (process.env.CLIENT && this.sys.config.ssr.hmr) {\n this._eventSsrHmrReload = this.sys.meta.event.on('a-ssrhmr:reload', async (_data, next) => {\n this.updateAllTabInfos();\n return next();\n });\n }\n // locale\n this.$watch(() => {\n return this.app.meta.locale.current;\n }, () => {\n this.updateAllTabInfos();\n });\n }\n __dispose__() {\n this._tabsDisposed = true;\n this._offPersistence?.();\n this._tabsReadiness?.work.splice(0);\n if (this._eventSsrHmrReload) {\n this._eventSsrHmrReload();\n this._eventSsrHmrReload = undefined;\n }\n }\n _getTabsReadiness() {\n const persistence = this.$modelPersistence;\n let readiness = this._tabsReadiness;\n if (!readiness || !persistence.current(readiness.token)) {\n readiness?.work.splice(0);\n readiness = shallowReactive({\n ctx: this.ctx,\n persistence,\n token: persistence.capture(),\n ready: false,\n work: []\n });\n this._tabsReadiness = readiness;\n }\n return readiness;\n }\n _isTabsReadinessCurrent(readiness) {\n return !this._tabsDisposed && !readiness.ctx.disposed && this._tabsReadiness === readiness && readiness.persistence.current(readiness.token);\n }\n _startTabsRestore(readiness) {\n if (!readiness.promise) {\n // One actual backing read per epoch: repeated render/watch reads share it.\n const state = this._tabsState;\n readiness.promise = this.$ensureStateLocalAsync(state).then(() => {\n if (!this._isTabsReadinessCurrent(readiness)) return;\n readiness.ready = true;\n this._initializeTabs();\n for (const work of readiness.work.splice(0)) {\n if (!this._isTabsReadinessCurrent(readiness)) break;\n work();\n }\n });\n void readiness.promise.catch(error => {\n if (this._isTabsReadinessCurrent(readiness)) this.$errorHandler(error);\n });\n }\n return readiness.promise;\n }\n _initializeTabs() {\n this._resetAllPageDirty();\n if (this.$currentRoute) this.forwardRoute(this.$currentRoute);\n }\n _deferTabsWork(work) {\n if (this._tabsDisposed || this.ctx.disposed) return true;\n if (!this.tabsOptions.cache) return false;\n const readiness = this._getTabsReadiness();\n if (readiness.ready) return false;\n readiness.work.push(work);\n this._startTabsRestore(readiness);\n return true;\n }\n _captureTabsOperation() {\n const ctx = this.ctx;\n const persistence = this.$modelPersistence;\n const token = persistence.capture();\n return () => !this._tabsDisposed && !ctx.disposed && persistence.current(token);\n }\n get cache() {\n return this.tabsOptions.cache;\n }\n\n // need not async\n addTab(tab, affix) {\n if (this._deferTabsWork(() => this.addTab(tab, affix))) return false;\n const res = this._addTab(tab, affix);\n // current\n this.tabKeyCurrent = res ? tab.tabKey : undefined;\n this.componentKeyCurrent = res ? tab.componentKey : undefined;\n return res;\n }\n\n // need not async\n _addTab(tab, affix) {\n if (this._deferTabsWork(() => this._addTab(tab, affix))) return false;\n const tabKey = tab.tabKey;\n if (!tabKey) return false;\n // tab\n const [index, tabOld] = this.findTab(tabKey);\n // tabInfo\n const tabInfo = this.tabsOptions.getTabInfo?.(tabKey) ?? tabOld?.info;\n if (!tabInfo) return false;\n // tabs\n if (index === -1) {\n // new\n const items = tab.componentKey ? [{\n componentKey: tab.componentKey,\n fullPath: tab.fullPath,\n keepAlive: tab.keepAlive,\n updatedAt: Date.now()\n }] : [];\n const tabNew = {\n tabKey,\n affix,\n items,\n updatedAt: Date.now(),\n info: tabInfo\n };\n const insertIndex = this._getInsertIndexForNewTab(tabNew);\n this.tabs = mutate(this.tabs, copyState => {\n copyState.splice(insertIndex, 0, tabNew);\n });\n // need not await\n this.pruneTabs();\n } else {\n // update tabInfo\n if (!deepEqual(tabInfo, tabOld?.info)) {\n this.updateTabInfo(tabKey);\n }\n // update\n if (!this._checkIfTabNeedUpdate(tabOld, tab)) {\n return true;\n }\n this.updateTab(tab);\n // need not await\n this.pruneTabItems(tabKey);\n }\n return true;\n }\n resetAllTabInfos() {\n if (this._deferTabsWork(() => this.resetAllTabInfos())) return;\n this.tabs = this._getInitialTabs();\n }\n updateAllTabInfos(tabInitials) {\n if (this._deferTabsWork(() => this.updateAllTabInfos(tabInitials))) return;\n for (const tab of this.tabs) {\n const tabInitial = tabInitials?.find(item => item.tabKey === tab.tabKey);\n this.updateTabInfo(tab.tabKey, tabInitial);\n }\n }\n updateTabInfo(tabKey, tabInitial) {\n if (this._deferTabsWork(() => this.updateTabInfo(tabKey, tabInitial))) return;\n if (!tabKey) return;\n // tabs\n const [index, tabOld] = this.findTab(tabKey);\n if (index === -1) return;\n // tabInfo\n const tabInfo = this.tabsOptions.getTabInfo ? this.tabsOptions.getTabInfo(tabKey) : tabInitial?.info ?? tabOld?.info;\n if (!tabInfo) return;\n // update\n const tabNew = {\n ...tabOld,\n info: tabInfo\n };\n this.updateTab(tabNew);\n }\n updateTabItemPageMeta(tabKey, componentKey, pageMeta) {\n if (this._deferTabsWork(() => this.updateTabItemPageMeta(tabKey, componentKey, pageMeta))) {\n return false;\n }\n if (!tabKey || !componentKey) return false;\n // tab\n const [index, tab] = this.findTab(tabKey);\n if (index === -1 || !tab) return false;\n // tabItem\n if (!tab.items) return false;\n const indexItem = tab.items.findIndex(item => item.componentKey === componentKey);\n if (indexItem === -1) return false;\n const tabItem = tab.items[indexItem];\n // change tab item\n const pageMetaNew = {\n ...tabItem.pageMeta,\n ...pageMeta\n };\n const tabItemNew = {\n ...tabItem,\n pageMeta: pageMetaNew\n };\n const items = mutate(tab.items, copyState => {\n copyState.splice(indexItem, 1, tabItemNew);\n });\n const tabNew = {\n ...tab,\n items\n };\n this.tabs = mutate(this.tabs, copyState => {\n copyState.splice(index, 1, tabNew);\n });\n return true;\n }\n async deleteTab(tabKey, noActiveNext, reason = 'workspaceClose') {\n if (this._tabsDisposed || this.ctx.disposed || !tabKey) return;\n const current = this._captureTabsOperation();\n // tabs\n const [index, tab] = this.findTab(tabKey);\n if (index === -1 || !tab) return;\n const cleanup = reason ? this.$router.notifyRouteDiscard(reason, (tab.items ?? []).map(item => ({\n fullPath: item.fullPath,\n componentKey: item.componentKey,\n tabKey\n })), this.selector) : undefined;\n // active next\n let tabKeyActiveNext;\n if (!noActiveNext && index === this.tabCurrentIndex) {\n // prev/next\n const tabCurrentIndex = index + 1 < this.tabs.length ? index + 1 : index - 1 > -1 ? index - 1 : -1;\n if (tabCurrentIndex > -1) {\n tabKeyActiveNext = this.tabs[tabCurrentIndex]?.tabKey;\n }\n }\n // tabs\n this.tabs = mutate(this.tabs, copyState => {\n copyState.splice(index, 1);\n });\n await cleanup;\n if (!current()) return;\n // active next\n if (tabKeyActiveNext) {\n await this.activeTab(tabKeyActiveNext);\n }\n }\n async deleteTabItem(tabKey, componentKey, noActiveNext, reason = 'taskClose') {\n if (this._tabsDisposed || this.ctx.disposed || !tabKey || !componentKey) return false;\n const current = this._captureTabsOperation();\n if (tabKey === componentKey) return false; // not delete first tabItem\n // tab\n const [index, tab] = this.findTab(tabKey);\n if (index === -1 || !tab) return false;\n // indexItem\n if (!tab.items) return false;\n const indexItem = tab.items.findIndex(item => item.componentKey === componentKey);\n if (indexItem === -1) return false;\n // deleteTab if length===1\n if (tab.items.length === 1 && !tab.affix) {\n // delete tab\n await this.deleteTab(tabKey, noActiveNext, reason);\n return true;\n }\n const cleanup = reason ? this.$router.notifyRouteDiscard(reason, [{\n fullPath: tab.items[indexItem].fullPath,\n componentKey,\n tabKey\n }], this.selector) : undefined;\n // active next\n let componentKeyActiveNext;\n if (!noActiveNext && componentKey === this.componentKeyCurrent) {\n // prev/next\n const tabItemCurrentIndex = indexItem + 1 < tab.items.length ? indexItem + 1 : indexItem - 1 > -1 ? indexItem - 1 : -1;\n if (tabItemCurrentIndex > -1) {\n componentKeyActiveNext = tab.items[tabItemCurrentIndex]?.componentKey;\n }\n }\n // delete tab item\n const items = mutate(tab.items, copyState => {\n copyState.splice(indexItem, 1);\n });\n const tabNew = {\n ...tab,\n items\n };\n this.tabs = mutate(this.tabs, copyState => {\n copyState.splice(index, 1, tabNew);\n });\n await cleanup;\n if (!current()) return false;\n // active next\n if (componentKeyActiveNext) {\n await this.activeTabItem(tabKey, componentKeyActiveNext);\n }\n return true;\n }\n findTabItemByFullPath(fullPath) {\n for (const tab of this.tabs) {\n if (!tab.items) continue;\n for (const item of tab.items) {\n if (item.fullPath === fullPath) {\n return [tab.tabKey, item.componentKey];\n }\n }\n }\n return [];\n }\n updateTab(tab) {\n if (this._deferTabsWork(() => this.updateTab(tab))) return;\n const tabKey = tab.tabKey;\n const [index, tabOld] = this.findTab(tabKey);\n if (index === -1 || !tabOld) return;\n const items = tabOld.items ? [].concat(tabOld.items) : [];\n if (tab.componentKey) {\n const tabItem = {\n componentKey: tab.componentKey,\n fullPath: tab.fullPath,\n keepAlive: tab.keepAlive,\n updatedAt: Date.now()\n };\n const itemIndex = this._findTabItemIndex(items, tab.componentKey);\n if (itemIndex === -1) {\n const insertIndex = this._getInsertIndexForNewTabItem(tabOld, items);\n items.splice(insertIndex, 0, tabItem);\n } else {\n const tabItemNew = {\n ...items[itemIndex],\n ...tabItem\n };\n items.splice(itemIndex, 1, tabItemNew);\n }\n this._moveAnchorItemFirst(items, tabKey);\n }\n const tabNew = {\n ...tabOld,\n ...tab,\n tabKey,\n items,\n updatedAt: Date.now()\n };\n this.tabs = mutate(this.tabs, copyState => {\n copyState.splice(index, 1, tabNew);\n });\n }\n async activeTab(tabKey) {\n if (this._tabsDisposed || this.ctx.disposed || !tabKey) return;\n const [_, tab] = this.findTab(tabKey);\n if (!tab) return;\n // should not updateTab here\n // this.updateTab({ tabKey });\n // this.tabKeyCurrent = tabKey;\n // first check tab.items?.[0]?.fullPath, because fullPath maybe has query string\n const tabItemFirst = tab.items?.[0];\n const path = tabItemFirst?.componentKey === tabKey ? tabItemFirst.fullPath : tabKey;\n await this.$router.push(path);\n }\n async activeTabItem(tabKey, componentKey) {\n if (this._tabsDisposed || this.ctx.disposed || !tabKey || !componentKey) return;\n const [_, tab] = this.findTab(tabKey);\n if (!tab) return;\n const tabItem = tab.items?.find(item => item.componentKey === componentKey);\n if (!tabItem) return;\n //\n const path = tabItem.fullPath;\n await this.$router.push(path);\n }\n findTab(tabKey) {\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 _getInsertIndexForNewTab(tabNew) {\n const lastAffixTabIndex = this._getLastAffixTabIndex();\n if (this.tabCurrentIndex === -1) {\n return lastAffixTabIndex + 1;\n }\n if (tabNew.affix) {\n return lastAffixTabIndex + 1;\n }\n const tabCurrent = this.tabs[this.tabCurrentIndex];\n if (tabCurrent?.affix) {\n return lastAffixTabIndex + 1;\n }\n return this.tabCurrentIndex + 1;\n }\n _getLastAffixTabIndex() {\n let lastAffixTabIndex = -1;\n for (let index = 0; index < this.tabs.length; index++) {\n if (!this.tabs[index].affix) break;\n lastAffixTabIndex = index;\n }\n return lastAffixTabIndex;\n }\n _findTabItemIndex(items, componentKey) {\n if (!componentKey) return -1;\n return items.findIndex(item => item.componentKey === componentKey);\n }\n _getCurrentTabItemIndex(tab, items) {\n if (this.tabKeyCurrent !== tab.tabKey) return -1;\n return this._findTabItemIndex(items, this.componentKeyCurrent);\n }\n _getInsertIndexForNewTabItem(tab, items) {\n const indexCurrentTabItem = this._getCurrentTabItemIndex(tab, items);\n if (indexCurrentTabItem > -1) {\n return indexCurrentTabItem + 1;\n }\n return items.length;\n }\n _moveAnchorItemFirst(items, tabKey) {\n const indexAnchor = items.findIndex(item => item.componentKey === tabKey);\n if (indexAnchor <= 0) return;\n const [anchorItem] = items.splice(indexAnchor, 1);\n items.unshift(anchorItem);\n }\n async pruneTabs() {\n if (this._tabsDisposed || this.ctx.disposed) return;\n const current = this._captureTabsOperation();\n let max = this.tabsOptions.max;\n if (max === undefined || max === -1) return;\n if (max < 1) max = 1;\n while (true) {\n const affixCount = this.tabs.filter(item => item.affix).length;\n if (this.tabs.length - affixCount <= max) break;\n let tabKey;\n let updatedAt = Date.now();\n for (const tab of this.tabs) {\n if (!tab.affix && tab.updatedAt < updatedAt) {\n tabKey = tab.tabKey;\n updatedAt = tab.updatedAt;\n }\n }\n if (!tabKey) break;\n await this.deleteTab(tabKey, true, false);\n if (!current()) return;\n }\n }\n async pruneTabItems(tabKey) {\n if (this._tabsDisposed || this.ctx.disposed || !tabKey) return;\n const current = this._captureTabsOperation();\n let maxItems = this.tabsOptions.maxItems;\n if (maxItems === undefined || maxItems === -1) return;\n if (maxItems < 1) maxItems = 1;\n while (true) {\n const [_, tab] = this.findTab(tabKey);\n if (!tab || !tab.items) break;\n const ignoreCount = tab.items.filter(item => item.componentKey === tabKey).length;\n if (tab.items.length - ignoreCount <= maxItems) break;\n let componentKey;\n let updatedAt = Date.now();\n for (const tabItem of tab.items) {\n if (tabItem.componentKey !== tabKey && tabItem.updatedAt < updatedAt) {\n componentKey = tabItem.componentKey;\n updatedAt = tabItem.updatedAt;\n }\n }\n if (!componentKey) break;\n await this.deleteTabItem(tabKey, componentKey, true, false);\n if (!current()) return;\n }\n }\n\n // special for _addTab\n _checkIfTabNeedUpdate(tabOld, tabNew) {\n for (const key in tabNew) {\n if (['fullPath', 'keepAlive', 'updatedAt'].includes(key)) continue;\n if (['componentKey'].includes(key)) {\n if (!tabOld.items) return true;\n const tabItemOld = tabOld.items.find(item => item[key] === tabNew[key]);\n if (!tabItemOld) return true;\n for (const key2 of ['fullPath', 'keepAlive']) {\n if (tabItemOld[key2] !== tabNew[key2]) return true;\n }\n const recentItemIndex = tabOld.items.findIndex(item => item[key] !== tabItemOld[key] && (item.updatedAt ?? 0) >= (tabItemOld.updatedAt ?? 0));\n if (recentItemIndex > -1) return true;\n } else if (tabNew[key] !== tabOld[key]) {\n return true;\n }\n }\n const recentTabIndex = this.tabs.findIndex(item => item.tabKey !== tabOld.tabKey && (item.updatedAt ?? 0) >= (tabOld.updatedAt ?? 0));\n if (recentTabIndex > -1) return true;\n return false;\n }\n _getKeepAliveInclude() {\n const include = [];\n for (const tab of this.tabs) {\n if (!tab.items) continue;\n for (const item of tab.items) {\n if (item.keepAlive !== false && item.componentKey) {\n if (!include.includes(item.componentKey)) {\n include.push(item.componentKey);\n }\n }\n }\n }\n return include;\n }\n _getInitialTabs() {\n const tabs = this.tabsOptions.getInitialTabs?.() ?? [];\n if (!this.tabsOptions.getTabInfo) return tabs;\n return tabs.map(tab => {\n return {\n ...tab,\n info: this.tabsOptions.getTabInfo?.(tab.tabKey) ?? tab.info\n };\n });\n }\n backRoute(route) {\n if (this._deferTabsWork(() => this.backRoute(route))) return;\n const [tabKey, componentKey] = this.findTabItemByFullPath(route.fullPath);\n // The router emits the Back notification once; replace/pruning are not explicit discards.\n void this.deleteTabItem(tabKey, componentKey, true, false);\n }\n forwardRoute(route) {\n if (this._deferTabsWork(() => this.forwardRoute(route))) return;\n const routeMeta = this.prepareRouteMeta(route);\n this.addTab(routeMeta);\n }\n setPageMeta(route, pageMeta) {\n if (this._deferTabsWork(() => this.setPageMeta(route, pageMeta))) return;\n const [tabKey, componentKey] = this.findTabItemByFullPath(route.fullPath);\n this.updateTabItemPageMeta(tabKey, componentKey, pageMeta);\n }\n prepareRouteMeta(route) {\n // fullPath\n const fullPath = route.fullPath;\n // componentKey\n const componentKey = this.__handleRoutePropComponentKey(route);\n // tabKey\n const tabKey = this._handleRouteProp(route, 'tabKey') || componentKey;\n // keepAlive\n const keepAlive = this._handleRouteProp(route, 'keepAlive');\n // tab\n return {\n tabKey,\n componentKey,\n fullPath,\n keepAlive\n };\n }\n _handleRouteProp(route, prop) {\n let value = route.meta[prop];\n if (typeof value === 'function') {\n value = value.call(this.app, route);\n }\n return value;\n }\n __handleRoutePropComponentKey(route) {\n const componentKey = this._handleRouteProp(route, 'componentKey');\n if (componentKey) return componentKey;\n // name\n const name = this.$router.getRealRouteName(route.name);\n // path\n if (!name) return route.path;\n // name: nameOnly\n if (route.meta.componentKeyMode === 'nameOnly') return name;\n // name: withParams\n return route.path;\n }\n _resetAllPageDirty() {\n const tabItems = [];\n for (const tab of this.tabs) {\n if (!tab.items) continue;\n for (const tabItem of tab.items) {\n if (tabItem.pageMeta?.pageDirty) {\n tabItems.push([tab.tabKey, tabItem.componentKey]);\n }\n }\n }\n for (const [tabKey, componentKey] of tabItems) {\n this.updateTabItemPageMeta(tabKey, componentKey, {\n pageDirty: false\n });\n }\n }\n}) || _class) || _class);","import { RouteLocationNormalizedLoadedGeneric } from '@cabloy/vue-router';\nimport { Use } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\nimport {\n BeanRouterViewBase,\n IPageMeta,\n IRouterViewPropsBase,\n IRouteViewRouteMeta,\n} from 'zova-module-a-router';\n\nimport type { ModelTabs } from '../../model/tabs.js';\n\nexport interface ControllerRouterViewTabsProps extends IRouterViewPropsBase {}\n\n@Controller()\nexport class ControllerRouterViewTabs extends BeanRouterViewBase {\n static $propsDefault = {};\n\n @Use({ injectionScope: 'skipSelf' })\n $$modelTabs: ModelTabs;\n\n public backRoute(route: RouteLocationNormalizedLoadedGeneric) {\n this.$$modelTabs.backRoute(route);\n return true;\n }\n\n public forwardRoute(route: RouteLocationNormalizedLoadedGeneric) {\n this.$$modelTabs.forwardRoute(route);\n return true;\n }\n\n public setPageMeta(route: RouteLocationNormalizedLoadedGeneric, pageMeta: IPageMeta) {\n this.$$modelTabs.setPageMeta(route, pageMeta);\n }\n\n protected prepareRouteMeta(route: RouteLocationNormalizedLoadedGeneric): IRouteViewRouteMeta {\n return this.$$modelTabs.prepareRouteMeta(route);\n }\n\n protected getKeepAliveInclude(): string[] | undefined {\n return this.$$modelTabs.keepAliveInclude;\n }\n}\n","import { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\nimport { ControllerRouterViewTabs } from '../../component/routerViewTabs/controller.jsx';\nexport const ZRouterViewTabs = defineComponent(_props => {\n useController(ControllerRouterViewTabs, undefined, undefined);\n return () => {};\n}, prepareComponentOptions());","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\n// eslint-disable\n/** model: begin */\nexport * from '../model/tabs.js';\nimport 'zova-module-a-model';\n/** model: end */\n/** model: begin */\nimport { ModelTabs } from '../model/tabs.js';\nimport 'zova';\n/** model: end */\n/** controller: begin */\nexport * from '../component/routerViewTabs/controller.jsx';\nimport 'zova';\n/** controller: end */\n/** controller: begin */\nimport { ControllerRouterViewTabs } from '../component/routerViewTabs/controller.jsx';\nimport 'zova';\n/** controller: end */\n\n/** components: begin */\nexport * from './component/routerViewTabs.js';\nimport { ZRouterViewTabs } from './component/routerViewTabs.js';\nexport const components = {\n 'routerViewTabs': ZRouterViewTabs\n};\nimport 'zova';\n/** components: end */\n/** scope: begin */\nimport { BeanScopeBase } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\nexport let ScopeModuleARoutertabs = (_dec = Scope(), _dec2 = __z_BeanInfo({\n module: \"a-routertabs\"\n}), _dec(_class = _dec2(_class = class ScopeModuleARoutertabs extends BeanScopeBase {}) || _class) || _class);\nimport 'zova';\n\n/** scope: end */"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_dec","_dec2","_class","ModelTabs","__z_BeanInfo","Use","Controller","BeanRouterViewBase","ControllerRouterViewTabs","_dec","_dec2","__z_BeanInfo","module","_dec3","injectionScope","_dec4","Reflect","metadata","ModelTabs","Object","_class","_class2","_ControllerRouterViewTabs","constructor","args","_initializerDefineProperty","_descriptor","backRoute","route","$$modelTabs","forwardRoute","setPageMeta","pageMeta","prepareRouteMeta","getKeepAliveInclude","keepAliveInclude","$propsDefault","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer","_dec","_dec2","_class","__z_BeanInfo","__z_BeanInfo"],"sources":["../src/model/tabs.ts","../src/component/routerViewTabs/controller.tsx","../src/.metadata/component/routerViewTabs.ts","../src/.metadata/index.ts"],"sourcesContent":["var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport { mutate } from 'mutate-on-copy';\nimport { shallowReactive } from 'vue';\nimport { deepEqual, deepExtend } from 'zova';\nimport { BeanModelBase, Model } from 'zova-module-a-model';\nexport let ModelTabs = (_dec = Model({\n enableSelector: true,\n max: -1,\n maxItems: -1,\n cache: false\n}), _dec2 = __z_BeanInfo({\n module: \"a-routertabs\"\n}), _dec(_class = _dec2(_class = class ModelTabs extends BeanModelBase {\n constructor(...args) {\n super(...args);\n this.tabsOptions = void 0;\n this._tabsState = void 0;\n this._tabsReadiness = void 0;\n this._tabsDisposed = false;\n this._offPersistence = void 0;\n this.componentKeyCurrent = void 0;\n this.tabKeyCurrent = void 0;\n this.tabCurrentIndex = void 0;\n this.tabCurrent = void 0;\n this.keepAliveInclude = void 0;\n this._eventSsrHmrReload = void 0;\n }\n get tabs() {\n if (this._tabsDisposed || this.ctx.disposed) return [];\n if (!this.tabsOptions?.cache) return this._tabsState ?? [];\n const readiness = this._getTabsReadiness();\n if (!readiness.ready) {\n this._startTabsRestore(readiness);\n return [];\n }\n return this._tabsState;\n }\n set tabs(value) {\n if (this._tabsDisposed || this.ctx.disposed) return;\n // The pending array is only a projection, never a write/default for storage.\n if (this.tabsOptions.cache && !this._getTabsReadiness().ready) return;\n this._tabsState = value;\n }\n async __init__(scene, options) {\n const ctx = this.ctx;\n await super.__init__(scene);\n if (this._tabsDisposed || ctx.disposed) return;\n this.bean._setBean('$$modelTabs', this);\n // options\n this.tabsOptions = deepExtend({}, this.$onionOptions, options);\n // computed\n this.tabCurrentIndex = this.$computed(() => {\n const [index] = this.findTab(this.tabKeyCurrent);\n return index;\n });\n this.tabCurrent = this.$computed(() => {\n const [, tab] = this.findTab(this.tabKeyCurrent);\n return tab;\n });\n this.keepAliveInclude = this.$computed(() => {\n return this._getKeepAliveInclude();\n });\n // componentKeyCurrent\n const queryOptionsComponentKeyCurrent = {\n queryKey: ['componentKeyCurrent']\n };\n this.componentKeyCurrent = this.$useStateMem(queryOptionsComponentKeyCurrent);\n // tabKeyCurrent\n const queryOptionsTabKeyCurrent = {\n queryKey: ['tabKeyCurrent']\n };\n this.tabKeyCurrent = this.$useStateMem(queryOptionsTabKeyCurrent);\n // if (this.tabsOptions.cache) {\n // this.tabKeyCurrent = this.$useStateLocalAsync(queryOptionsTabKeyCurrent);\n // } else {\n // this.tabKeyCurrent = this.$useStateMem(queryOptionsTabKeyCurrent);\n // }\n // tabs\n const queryOptionsTabs = {\n queryKey: ['tabs'],\n meta: {\n // Memory query metadata is dehydrated; only DB state can retain a factory.\n defaultData: this.tabsOptions.cache ? () => this._getInitialTabs() : this._getInitialTabs()\n }\n };\n if (this.tabsOptions.cache) {\n this._tabsState = this.$useStateLocalAsync(queryOptionsTabs);\n const persistence = this.$modelPersistence;\n this._offPersistence = persistence.subscribe(() => {\n if (!this._tabsDisposed && !this.ctx.disposed) {\n this._startTabsRestore(this._getTabsReadiness());\n }\n });\n // Keep initial ordering, but do not initialize a route from an obsolete\n // restore if identity changes while the model itself is being loaded.\n while (!this._tabsDisposed && !this.ctx.disposed) {\n const readiness = this._getTabsReadiness();\n await this._startTabsRestore(readiness);\n if (this._isTabsReadinessCurrent(readiness)) break;\n }\n } else {\n this._tabsState = this.$useStateMem(queryOptionsTabs);\n this._initializeTabs();\n }\n if (this._tabsDisposed || this.ctx.disposed) return;\n // event\n if (process.env.CLIENT && this.sys.config.ssr.hmr) {\n this._eventSsrHmrReload = this.sys.meta.event.on('a-ssrhmr:reload', async (_data, next) => {\n this.updateAllTabInfos();\n return next();\n });\n }\n // locale\n this.$watch(() => {\n return this.app.meta.locale.current;\n }, () => {\n this.updateAllTabInfos();\n });\n }\n __dispose__() {\n this._tabsDisposed = true;\n this._offPersistence?.();\n this._tabsReadiness?.work.splice(0);\n if (this._eventSsrHmrReload) {\n this._eventSsrHmrReload();\n this._eventSsrHmrReload = undefined;\n }\n }\n _getTabsReadiness() {\n const persistence = this.$modelPersistence;\n let readiness = this._tabsReadiness;\n if (!readiness || !persistence.current(readiness.token)) {\n readiness?.work.splice(0);\n readiness = shallowReactive({\n ctx: this.ctx,\n persistence,\n token: persistence.capture(),\n ready: false,\n work: []\n });\n this._tabsReadiness = readiness;\n }\n return readiness;\n }\n _isTabsReadinessCurrent(readiness) {\n return !this._tabsDisposed && !readiness.ctx.disposed && this._tabsReadiness === readiness && readiness.persistence.current(readiness.token);\n }\n _startTabsRestore(readiness) {\n if (!readiness.promise) {\n // One actual backing read per epoch: repeated render/watch reads share it.\n const state = this._tabsState;\n readiness.promise = this.$ensureStateLocalAsync(state).then(() => {\n if (!this._isTabsReadinessCurrent(readiness)) return;\n readiness.ready = true;\n this._initializeTabs();\n for (const work of readiness.work.splice(0)) {\n if (!this._isTabsReadinessCurrent(readiness)) break;\n work();\n }\n });\n void readiness.promise.catch(error => {\n if (this._isTabsReadinessCurrent(readiness)) this.$errorHandler(error);\n });\n }\n return readiness.promise;\n }\n _initializeTabs() {\n this._resetAllPageDirty();\n if (this.$currentRoute) this.forwardRoute(this.$currentRoute);\n }\n _deferTabsWork(work) {\n if (this._tabsDisposed || this.ctx.disposed) return true;\n if (!this.tabsOptions.cache) return false;\n const readiness = this._getTabsReadiness();\n if (readiness.ready) return false;\n readiness.work.push(work);\n this._startTabsRestore(readiness);\n return true;\n }\n _captureTabsOperation() {\n const ctx = this.ctx;\n const persistence = this.$modelPersistence;\n const token = persistence.capture();\n return () => !this._tabsDisposed && !ctx.disposed && persistence.current(token);\n }\n get cache() {\n return this.tabsOptions.cache;\n }\n\n // need not async\n addTab(tab, affix) {\n if (this._deferTabsWork(() => this.addTab(tab, affix))) return false;\n const res = this._addTab(tab, affix);\n // current\n this.tabKeyCurrent = res ? tab.tabKey : undefined;\n this.componentKeyCurrent = res ? tab.componentKey : undefined;\n return res;\n }\n\n // need not async\n _addTab(tab, affix) {\n if (this._deferTabsWork(() => this._addTab(tab, affix))) return false;\n const tabKey = tab.tabKey;\n if (!tabKey) return false;\n // tab\n const [index, tabOld] = this.findTab(tabKey);\n // tabInfo\n const tabInfo = this.tabsOptions.getTabInfo?.(tabKey) ?? tabOld?.info;\n if (!tabInfo) return false;\n // tabs\n if (index === -1) {\n // new\n const items = tab.componentKey ? [{\n componentKey: tab.componentKey,\n fullPath: tab.fullPath,\n keepAlive: tab.keepAlive,\n updatedAt: Date.now()\n }] : [];\n const tabNew = {\n tabKey,\n affix,\n items,\n updatedAt: Date.now(),\n info: tabInfo\n };\n const insertIndex = this._getInsertIndexForNewTab(tabNew);\n this.tabs = mutate(this.tabs, copyState => {\n copyState.splice(insertIndex, 0, tabNew);\n });\n // need not await\n this.pruneTabs();\n } else {\n // update tabInfo\n if (!deepEqual(tabInfo, tabOld?.info)) {\n this.updateTabInfo(tabKey);\n }\n // update\n if (!this._checkIfTabNeedUpdate(tabOld, tab)) {\n return true;\n }\n this.updateTab(tab);\n // need not await\n this.pruneTabItems(tabKey);\n }\n return true;\n }\n resetAllTabInfos() {\n if (this._deferTabsWork(() => this.resetAllTabInfos())) return;\n this.tabs = this._getInitialTabs();\n }\n updateAllTabInfos(tabInitials) {\n if (this._deferTabsWork(() => this.updateAllTabInfos(tabInitials))) return;\n for (const tab of this.tabs) {\n const tabInitial = tabInitials?.find(item => item.tabKey === tab.tabKey);\n this.updateTabInfo(tab.tabKey, tabInitial);\n }\n }\n updateTabInfo(tabKey, tabInitial) {\n if (this._deferTabsWork(() => this.updateTabInfo(tabKey, tabInitial))) return;\n if (!tabKey) return;\n // tabs\n const [index, tabOld] = this.findTab(tabKey);\n if (index === -1) return;\n // tabInfo\n const tabInfo = this.tabsOptions.getTabInfo ? this.tabsOptions.getTabInfo(tabKey) : tabInitial?.info ?? tabOld?.info;\n if (!tabInfo) return;\n // update\n const tabNew = {\n ...tabOld,\n info: tabInfo\n };\n this.updateTab(tabNew);\n }\n updateTabItemPageMeta(tabKey, componentKey, pageMeta) {\n if (this._deferTabsWork(() => this.updateTabItemPageMeta(tabKey, componentKey, pageMeta))) {\n return false;\n }\n if (!tabKey || !componentKey) return false;\n // tab\n const [index, tab] = this.findTab(tabKey);\n if (index === -1 || !tab) return false;\n // tabItem\n if (!tab.items) return false;\n const indexItem = tab.items.findIndex(item => item.componentKey === componentKey);\n if (indexItem === -1) return false;\n const tabItem = tab.items[indexItem];\n // change tab item\n const pageMetaNew = {\n ...tabItem.pageMeta,\n ...pageMeta\n };\n const tabItemNew = {\n ...tabItem,\n pageMeta: pageMetaNew\n };\n const items = mutate(tab.items, copyState => {\n copyState.splice(indexItem, 1, tabItemNew);\n });\n const tabNew = {\n ...tab,\n items\n };\n this.tabs = mutate(this.tabs, copyState => {\n copyState.splice(index, 1, tabNew);\n });\n return true;\n }\n async deleteTab(tabKey, noActiveNext, reason = 'workspaceClose') {\n if (this._tabsDisposed || this.ctx.disposed || !tabKey) return;\n const current = this._captureTabsOperation();\n // tabs\n const [index, tab] = this.findTab(tabKey);\n if (index === -1 || !tab) return;\n const cleanup = reason ? this.$router.notifyRouteDiscard(reason, (tab.items ?? []).map(item => ({\n fullPath: item.fullPath,\n componentKey: item.componentKey,\n tabKey\n })), this.selector) : undefined;\n // active next\n let tabKeyActiveNext;\n if (!noActiveNext && index === this.tabCurrentIndex) {\n // prev/next\n const tabCurrentIndex = index + 1 < this.tabs.length ? index + 1 : index - 1 > -1 ? index - 1 : -1;\n if (tabCurrentIndex > -1) {\n tabKeyActiveNext = this.tabs[tabCurrentIndex]?.tabKey;\n }\n }\n // tabs\n this.tabs = mutate(this.tabs, copyState => {\n copyState.splice(index, 1);\n });\n await cleanup;\n if (!current()) return;\n // active next\n if (tabKeyActiveNext) {\n await this.activeTab(tabKeyActiveNext);\n }\n }\n async deleteTabItem(tabKey, componentKey, noActiveNext, reason = 'taskClose') {\n if (this._tabsDisposed || this.ctx.disposed || !tabKey || !componentKey) return false;\n const current = this._captureTabsOperation();\n if (tabKey === componentKey) return false; // not delete first tabItem\n // tab\n const [index, tab] = this.findTab(tabKey);\n if (index === -1 || !tab) return false;\n // indexItem\n if (!tab.items) return false;\n const indexItem = tab.items.findIndex(item => item.componentKey === componentKey);\n if (indexItem === -1) return false;\n // deleteTab if length===1\n if (tab.items.length === 1 && !tab.affix) {\n // delete tab\n await this.deleteTab(tabKey, noActiveNext, reason);\n return true;\n }\n const cleanup = reason ? this.$router.notifyRouteDiscard(reason, [{\n fullPath: tab.items[indexItem].fullPath,\n componentKey,\n tabKey\n }], this.selector) : undefined;\n // active next\n let componentKeyActiveNext;\n if (!noActiveNext && componentKey === this.componentKeyCurrent) {\n // prev/next\n const tabItemCurrentIndex = indexItem + 1 < tab.items.length ? indexItem + 1 : indexItem - 1 > -1 ? indexItem - 1 : -1;\n if (tabItemCurrentIndex > -1) {\n componentKeyActiveNext = tab.items[tabItemCurrentIndex]?.componentKey;\n }\n }\n // delete tab item\n const items = mutate(tab.items, copyState => {\n copyState.splice(indexItem, 1);\n });\n const tabNew = {\n ...tab,\n items\n };\n this.tabs = mutate(this.tabs, copyState => {\n copyState.splice(index, 1, tabNew);\n });\n await cleanup;\n if (!current()) return false;\n // active next\n if (componentKeyActiveNext) {\n await this.activeTabItem(tabKey, componentKeyActiveNext);\n }\n return true;\n }\n findTabItemByFullPath(fullPath) {\n for (const tab of this.tabs) {\n if (!tab.items) continue;\n for (const item of tab.items) {\n if (item.fullPath === fullPath) {\n return [tab.tabKey, item.componentKey];\n }\n }\n }\n return [];\n }\n updateTab(tab) {\n if (this._deferTabsWork(() => this.updateTab(tab))) return;\n const tabKey = tab.tabKey;\n const [index, tabOld] = this.findTab(tabKey);\n if (index === -1 || !tabOld) return;\n const items = tabOld.items ? [].concat(tabOld.items) : [];\n if (tab.componentKey) {\n const tabItem = {\n componentKey: tab.componentKey,\n fullPath: tab.fullPath,\n keepAlive: tab.keepAlive,\n updatedAt: Date.now()\n };\n const itemIndex = this._findTabItemIndex(items, tab.componentKey);\n if (itemIndex === -1) {\n const insertIndex = this._getInsertIndexForNewTabItem(tabOld, items);\n items.splice(insertIndex, 0, tabItem);\n } else {\n const tabItemNew = {\n ...items[itemIndex],\n ...tabItem\n };\n items.splice(itemIndex, 1, tabItemNew);\n }\n this._moveAnchorItemFirst(items, tabKey);\n }\n const tabNew = {\n ...tabOld,\n ...tab,\n tabKey,\n items,\n updatedAt: Date.now()\n };\n this.tabs = mutate(this.tabs, copyState => {\n copyState.splice(index, 1, tabNew);\n });\n }\n async activeTab(tabKey) {\n if (this._tabsDisposed || this.ctx.disposed || !tabKey) return;\n const [_, tab] = this.findTab(tabKey);\n if (!tab) return;\n // should not updateTab here\n // this.updateTab({ tabKey });\n // this.tabKeyCurrent = tabKey;\n // first check tab.items?.[0]?.fullPath, because fullPath maybe has query string\n const tabItemFirst = tab.items?.[0];\n const path = tabItemFirst?.componentKey === tabKey ? tabItemFirst.fullPath : tabKey;\n await this.$router.push(path);\n }\n async activeTabItem(tabKey, componentKey) {\n if (this._tabsDisposed || this.ctx.disposed || !tabKey || !componentKey) return;\n const [_, tab] = this.findTab(tabKey);\n if (!tab) return;\n const tabItem = tab.items?.find(item => item.componentKey === componentKey);\n if (!tabItem) return;\n //\n const path = tabItem.fullPath;\n await this.$router.push(path);\n }\n findTab(tabKey) {\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 _getInsertIndexForNewTab(tabNew) {\n const lastAffixTabIndex = this._getLastAffixTabIndex();\n if (this.tabCurrentIndex === -1) {\n return lastAffixTabIndex + 1;\n }\n if (tabNew.affix) {\n return lastAffixTabIndex + 1;\n }\n const tabCurrent = this.tabs[this.tabCurrentIndex];\n if (tabCurrent?.affix) {\n return lastAffixTabIndex + 1;\n }\n return this.tabCurrentIndex + 1;\n }\n _getLastAffixTabIndex() {\n let lastAffixTabIndex = -1;\n for (let index = 0; index < this.tabs.length; index++) {\n if (!this.tabs[index].affix) break;\n lastAffixTabIndex = index;\n }\n return lastAffixTabIndex;\n }\n _findTabItemIndex(items, componentKey) {\n if (!componentKey) return -1;\n return items.findIndex(item => item.componentKey === componentKey);\n }\n _getCurrentTabItemIndex(tab, items) {\n if (this.tabKeyCurrent !== tab.tabKey) return -1;\n return this._findTabItemIndex(items, this.componentKeyCurrent);\n }\n _getInsertIndexForNewTabItem(tab, items) {\n const indexCurrentTabItem = this._getCurrentTabItemIndex(tab, items);\n if (indexCurrentTabItem > -1) {\n return indexCurrentTabItem + 1;\n }\n return items.length;\n }\n _moveAnchorItemFirst(items, tabKey) {\n const indexAnchor = items.findIndex(item => item.componentKey === tabKey);\n if (indexAnchor <= 0) return;\n const [anchorItem] = items.splice(indexAnchor, 1);\n items.unshift(anchorItem);\n }\n async pruneTabs() {\n if (this._tabsDisposed || this.ctx.disposed) return;\n const current = this._captureTabsOperation();\n let max = this.tabsOptions.max;\n if (max === undefined || max === -1) return;\n if (max < 1) max = 1;\n while (true) {\n const affixCount = this.tabs.filter(item => item.affix).length;\n if (this.tabs.length - affixCount <= max) break;\n let tabKey;\n let updatedAt = Date.now();\n for (const tab of this.tabs) {\n if (!tab.affix && tab.updatedAt < updatedAt) {\n tabKey = tab.tabKey;\n updatedAt = tab.updatedAt;\n }\n }\n if (!tabKey) break;\n await this.deleteTab(tabKey, true, false);\n if (!current()) return;\n }\n }\n async pruneTabItems(tabKey) {\n if (this._tabsDisposed || this.ctx.disposed || !tabKey) return;\n const current = this._captureTabsOperation();\n let maxItems = this.tabsOptions.maxItems;\n if (maxItems === undefined || maxItems === -1) return;\n if (maxItems < 1) maxItems = 1;\n while (true) {\n const [_, tab] = this.findTab(tabKey);\n if (!tab || !tab.items) break;\n const ignoreCount = tab.items.filter(item => item.componentKey === tabKey).length;\n if (tab.items.length - ignoreCount <= maxItems) break;\n let componentKey;\n let updatedAt = Date.now();\n for (const tabItem of tab.items) {\n if (tabItem.componentKey !== tabKey && tabItem.updatedAt < updatedAt) {\n componentKey = tabItem.componentKey;\n updatedAt = tabItem.updatedAt;\n }\n }\n if (!componentKey) break;\n await this.deleteTabItem(tabKey, componentKey, true, false);\n if (!current()) return;\n }\n }\n\n // special for _addTab\n _checkIfTabNeedUpdate(tabOld, tabNew) {\n for (const key in tabNew) {\n if (['fullPath', 'keepAlive', 'updatedAt'].includes(key)) continue;\n if (['componentKey'].includes(key)) {\n if (!tabOld.items) return true;\n const tabItemOld = tabOld.items.find(item => item[key] === tabNew[key]);\n if (!tabItemOld) return true;\n for (const key2 of ['fullPath', 'keepAlive']) {\n if (tabItemOld[key2] !== tabNew[key2]) return true;\n }\n const recentItemIndex = tabOld.items.findIndex(item => item[key] !== tabItemOld[key] && (item.updatedAt ?? 0) >= (tabItemOld.updatedAt ?? 0));\n if (recentItemIndex > -1) return true;\n } else if (tabNew[key] !== tabOld[key]) {\n return true;\n }\n }\n const recentTabIndex = this.tabs.findIndex(item => item.tabKey !== tabOld.tabKey && (item.updatedAt ?? 0) >= (tabOld.updatedAt ?? 0));\n if (recentTabIndex > -1) return true;\n return false;\n }\n _getKeepAliveInclude() {\n const include = [];\n for (const tab of this.tabs) {\n if (!tab.items) continue;\n for (const item of tab.items) {\n if (item.keepAlive !== false && item.componentKey) {\n if (!include.includes(item.componentKey)) {\n include.push(item.componentKey);\n }\n }\n }\n }\n return include;\n }\n _getInitialTabs() {\n const tabs = this.tabsOptions.getInitialTabs?.() ?? [];\n if (!this.tabsOptions.getTabInfo) return tabs;\n return tabs.map(tab => {\n return {\n ...tab,\n info: this.tabsOptions.getTabInfo?.(tab.tabKey) ?? tab.info\n };\n });\n }\n backRoute(route) {\n if (this._deferTabsWork(() => this.backRoute(route))) return;\n const [tabKey, componentKey] = this.findTabItemByFullPath(route.fullPath);\n // The router emits the Back notification once; replace/pruning are not explicit discards.\n void this.deleteTabItem(tabKey, componentKey, true, false);\n }\n forwardRoute(route) {\n if (this._deferTabsWork(() => this.forwardRoute(route))) return;\n const routeMeta = this.prepareRouteMeta(route);\n this.addTab(routeMeta);\n }\n setPageMeta(route, pageMeta) {\n if (this._deferTabsWork(() => this.setPageMeta(route, pageMeta))) return;\n const [tabKey, componentKey] = this.findTabItemByFullPath(route.fullPath);\n this.updateTabItemPageMeta(tabKey, componentKey, pageMeta);\n }\n prepareRouteMeta(route) {\n // fullPath\n const fullPath = route.fullPath;\n // componentKey\n const componentKey = this.__handleRoutePropComponentKey(route);\n // tabKey\n const tabKey = this._handleRouteProp(route, 'tabKey') || componentKey;\n // keepAlive\n const keepAlive = this._handleRouteProp(route, 'keepAlive');\n // tab\n return {\n tabKey,\n componentKey,\n fullPath,\n keepAlive\n };\n }\n _handleRouteProp(route, prop) {\n let value = route.meta[prop];\n if (typeof value === 'function') {\n value = value.call(this.app, route);\n }\n return value;\n }\n __handleRoutePropComponentKey(route) {\n const componentKey = this._handleRouteProp(route, 'componentKey');\n if (componentKey) return componentKey;\n // name\n const name = this.$router.getRealRouteName(route.name);\n // path\n if (!name) return route.path;\n // name: nameOnly\n if (route.meta.componentKeyMode === 'nameOnly') return name;\n // name: withParams\n return route.path;\n }\n _resetAllPageDirty() {\n const tabItems = [];\n for (const tab of this.tabs) {\n if (!tab.items) continue;\n for (const tabItem of tab.items) {\n if (tabItem.pageMeta?.pageDirty) {\n tabItems.push([tab.tabKey, tabItem.componentKey]);\n }\n }\n }\n for (const [tabKey, componentKey] of tabItems) {\n this.updateTabItemPageMeta(tabKey, componentKey, {\n pageDirty: false\n });\n }\n }\n}) || _class) || _class);","import { RouteLocationNormalizedLoadedGeneric } from '@cabloy/vue-router';\nimport { Use } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\nimport {\n BeanRouterViewBase,\n IPageMeta,\n IRouterViewPropsBase,\n IRouteViewRouteMeta,\n} from 'zova-module-a-router';\n\nimport type { ModelTabs } from '../../model/tabs.ts';\n\nexport interface ControllerRouterViewTabsProps extends IRouterViewPropsBase {}\n\n@Controller()\nexport class ControllerRouterViewTabs extends BeanRouterViewBase {\n static $propsDefault = {};\n\n @Use({ injectionScope: 'skipSelf' })\n $$modelTabs: ModelTabs;\n\n public backRoute(route: RouteLocationNormalizedLoadedGeneric) {\n this.$$modelTabs.backRoute(route);\n return true;\n }\n\n public forwardRoute(route: RouteLocationNormalizedLoadedGeneric) {\n this.$$modelTabs.forwardRoute(route);\n return true;\n }\n\n public setPageMeta(route: RouteLocationNormalizedLoadedGeneric, pageMeta: IPageMeta) {\n this.$$modelTabs.setPageMeta(route, pageMeta);\n }\n\n protected prepareRouteMeta(route: RouteLocationNormalizedLoadedGeneric): IRouteViewRouteMeta {\n return this.$$modelTabs.prepareRouteMeta(route);\n }\n\n protected getKeepAliveInclude(): string[] | undefined {\n return this.$$modelTabs.keepAliveInclude;\n }\n}\n","import { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\nimport { ControllerRouterViewTabs } from '../../component/routerViewTabs/controller.tsx';\nexport const ZRouterViewTabs = defineComponent(_props => {\n useController(ControllerRouterViewTabs, undefined, undefined);\n return () => {};\n}, prepareComponentOptions());","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\n// eslint-disable\n/** model: begin */\nexport * from '../model/tabs.ts';\nimport 'zova-module-a-model';\n/** model: end */\n/** model: begin */\n\nimport 'zova';\n/** model: end */\n/** controller: begin */\nexport * from '../component/routerViewTabs/controller.tsx';\nimport 'zova';\n/** controller: end */\n/** controller: begin */\n\nimport 'zova';\n/** controller: end */\n\n/** components: begin */\nexport * from './component/routerViewTabs.ts';\nimport { ZRouterViewTabs } from './component/routerViewTabs.ts';\nexport const components = {\n 'routerViewTabs': ZRouterViewTabs\n};\nimport 'zova';\n/** components: end */\n/** scope: begin */\nimport { BeanScopeBase } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\nexport let ScopeModuleARoutertabs = (_dec = Scope(), _dec2 = __z_BeanInfo({\n module: \"a-routertabs\"\n}), _dec(_class = _dec2(_class = class ScopeModuleARoutertabs extends BeanScopeBase {}) || _class) || _class);\nimport 'zova';\n\n/** scope: end */"],"mappings":"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"}
@@ -2,7 +2,7 @@ import type { IDecoratorModelOptions } from 'zova-module-a-model';
2
2
  import { RouteLocationNormalizedLoadedGeneric } from '@cabloy/vue-router';
3
3
  import { BeanModelBase } from 'zova-module-a-model';
4
4
  import { IPageMeta, IRouteViewRouteMeta, TypeRouteDiscardReason } from 'zova-module-a-router';
5
- import { ModelTabsOptions, ModelTabsOptionsBase, RouteTab, RouteTabInitial, RouteTabTransient } from '../types/tabs.js';
5
+ import { ModelTabsOptions, ModelTabsOptionsBase, RouteTab, RouteTabInitial, RouteTabTransient } from '../types/tabs.ts';
6
6
  export interface IModelOptionsTabs extends IDecoratorModelOptions, ModelTabsOptionsBase {
7
7
  }
8
8
  export declare class ModelTabs extends BeanModelBase {
@@ -1,2 +1,2 @@
1
- export * from './tabs.js';
1
+ export * from './tabs.ts';
2
2
  //# sourceMappingURL=index.d.ts.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zova-module-a-routertabs",
3
- "version": "5.1.35",
4
- "gitHead": "6293b79d977b9e40695262a5ca11cd98dfaa9241",
3
+ "version": "5.1.37",
4
+ "gitHead": "d1a9a68c5d48db9bc82945c17984dabbec724d8c",
5
5
  "description": "routertabs",
6
6
  "keywords": [
7
7
  "Zova Module"
@@ -3,9 +3,9 @@ import type { TypeControllerInnerProps } from 'zova';
3
3
  import { defineComponent } from 'vue';
4
4
  import { prepareComponentOptions, useController } from 'zova';
5
5
 
6
- import type { ControllerRouterViewTabsProps } from '../../component/routerViewTabs/controller.jsx';
6
+ import type { ControllerRouterViewTabsProps } from '../../component/routerViewTabs/controller.tsx';
7
7
 
8
- import { ControllerRouterViewTabs } from '../../component/routerViewTabs/controller.jsx';
8
+ import { ControllerRouterViewTabs } from '../../component/routerViewTabs/controller.tsx';
9
9
  export type ZRouterViewTabsProps = {
10
10
  controllerRef?: (ref: ControllerRouterViewTabs) => void;
11
11
  } & ControllerRouterViewTabsProps;
@@ -1,7 +1,7 @@
1
1
  // eslint-disable
2
2
  /** model: begin */
3
- export * from '../model/tabs.js';
4
- import { IModelOptionsTabs } from '../model/tabs.js';
3
+ export * from '../model/tabs.ts';
4
+ import { IModelOptionsTabs } from '../model/tabs.ts';
5
5
  import 'zova-module-a-model';
6
6
  declare module 'zova-module-a-model' {
7
7
 
@@ -26,7 +26,7 @@ declare module 'zova-module-a-routertabs' {
26
26
  }
27
27
  /** model: end */
28
28
  /** model: begin */
29
- import { ModelTabs } from '../model/tabs.js';
29
+ import type { ModelTabs } from '../model/tabs.ts';
30
30
  import 'zova';
31
31
  declare module 'zova' {
32
32
  export interface IBeanRecordGeneral {
@@ -35,7 +35,7 @@ declare module 'zova' {
35
35
  }
36
36
  /** model: end */
37
37
  /** controller: begin */
38
- export * from '../component/routerViewTabs/controller.jsx';
38
+ export * from '../component/routerViewTabs/controller.tsx';
39
39
 
40
40
  import 'zova';
41
41
  declare module 'zova' {
@@ -51,7 +51,7 @@ declare module 'zova-module-a-routertabs' {
51
51
  }
52
52
  /** controller: end */
53
53
  /** controller: begin */
54
- import { ControllerRouterViewTabs } from '../component/routerViewTabs/controller.jsx';
54
+ import type { ControllerRouterViewTabs } from '../component/routerViewTabs/controller.tsx';
55
55
  import 'zova';
56
56
  declare module 'zova' {
57
57
  export interface IBeanRecordLocal {
@@ -61,8 +61,8 @@ declare module 'zova' {
61
61
  /** controller: end */
62
62
 
63
63
  /** components: begin */
64
- export * from './component/routerViewTabs.js';
65
- import { ZRouterViewTabs } from './component/routerViewTabs.js';
64
+ export * from './component/routerViewTabs.ts';
65
+ import { ZRouterViewTabs } from './component/routerViewTabs.ts';
66
66
  export const components = {
67
67
  'routerViewTabs': ZRouterViewTabs,
68
68
  };
@@ -1,2 +1,2 @@
1
1
  export const __ThisModule__ = 'a-routertabs';
2
- export { ScopeModuleARoutertabs as ScopeModule } from './index.js';
2
+ export { ScopeModuleARoutertabs as ScopeModule } from './index.ts';
@@ -8,7 +8,7 @@ import {
8
8
  IRouteViewRouteMeta,
9
9
  } from 'zova-module-a-router';
10
10
 
11
- import type { ModelTabs } from '../../model/tabs.js';
11
+ import type { ModelTabs } from '../../model/tabs.ts';
12
12
 
13
13
  export interface ControllerRouterViewTabsProps extends IRouterViewPropsBase {}
14
14
 
package/src/index.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from './.metadata/index.js';
2
- export * from './types/index.js';
1
+ export * from './.metadata/index.ts';
2
+ export * from './types/index.ts';
package/src/model/tabs.ts CHANGED
@@ -26,7 +26,7 @@ import {
26
26
  RouteTab,
27
27
  RouteTabInitial,
28
28
  RouteTabTransient,
29
- } from '../types/tabs.js';
29
+ } from '../types/tabs.ts';
30
30
 
31
31
  export interface IModelOptionsTabs extends IDecoratorModelOptions, ModelTabsOptionsBase {}
32
32
 
@@ -1 +1 @@
1
- export * from './tabs.js';
1
+ export * from './tabs.ts';