vue-stack-tabs 1.1.0 → 1.3.1

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.
Files changed (115) hide show
  1. package/README.en.md +526 -0
  2. package/README.md +141 -39
  3. package/README.ru.md +526 -0
  4. package/dist/iframe-bridge.d.ts +8 -0
  5. package/dist/iframe-bridge.html +77 -0
  6. package/dist/iframe-bridge.mjs +20 -0
  7. package/dist/iframe-child.html +19 -6
  8. package/dist/nuxt/favicon.svg +10 -0
  9. package/dist/nuxt/iframe-bridge.html +77 -0
  10. package/dist/nuxt/iframe-child.html +88 -0
  11. package/dist/nuxt/module.d.ts +6 -0
  12. package/dist/nuxt/module.mjs +28 -0
  13. package/dist/nuxt/plugin.mjs +9 -0
  14. package/dist/nuxt/runtime/plugin.d.ts +2 -0
  15. package/dist/nuxt/runtime/plugin.mjs +9 -0
  16. package/dist/src/lib/StackTabs.vue.d.ts +30 -16
  17. package/dist/src/lib/components/ContextMenu/ContextMenuItem.vue.d.ts +7 -1
  18. package/dist/src/lib/components/ContextMenu/index.vue.d.ts +5 -4
  19. package/dist/src/lib/components/PageLoading.vue.d.ts +2 -1
  20. package/dist/src/lib/components/StackKeepAlive/StackCacheRenderer.vue.d.ts +25 -0
  21. package/dist/src/lib/components/StackKeepAlive/StackKeepAlive.vue.d.ts +12 -0
  22. package/dist/src/lib/components/TabHeader/TabHeaderButton.vue.d.ts +11 -12
  23. package/dist/src/lib/components/TabHeader/TabHeaderItem.vue.d.ts +5 -4
  24. package/dist/src/lib/components/TabHeader/TabHeaderScroll.vue.d.ts +8 -22
  25. package/dist/src/lib/components/TabHeader/index.vue.d.ts +11 -164
  26. package/dist/src/lib/hooks/stackTabsContext.d.ts +49 -0
  27. package/dist/src/lib/hooks/tabPanel/evict.d.ts +21 -61
  28. package/dist/src/lib/hooks/tabPanel/navigationTransaction.d.ts +35 -0
  29. package/dist/src/lib/hooks/tabPanel/refresh.d.ts +17 -0
  30. package/dist/src/lib/hooks/tabPanel/scroll.d.ts +8 -8
  31. package/dist/src/lib/hooks/tabPanel/session.d.ts +9 -8
  32. package/dist/src/lib/hooks/tabPanel/state.d.ts +20 -72
  33. package/dist/src/lib/hooks/useIframeManager.d.ts +35 -0
  34. package/dist/src/lib/hooks/useTabActions.d.ts +5 -46
  35. package/dist/src/lib/hooks/useTabEventBus.d.ts +22 -9
  36. package/dist/src/lib/hooks/useTabPanel.d.ts +14 -73
  37. package/dist/src/lib/i18n/index.d.ts +6 -4
  38. package/dist/src/lib/i18n/lang/en.d.ts +5 -0
  39. package/dist/src/lib/i18n/lang/zh-CN.d.ts +5 -0
  40. package/dist/src/lib/i18n/stackTabsLocale.d.ts +2 -0
  41. package/dist/src/lib/iframe-bridge.d.ts +8 -0
  42. package/dist/src/lib/iframe.vue.d.ts +2 -1
  43. package/dist/src/lib/index.d.ts +4 -5
  44. package/dist/src/lib/model/TabModel.d.ts +11 -40
  45. package/dist/src/lib/nuxt/module.d.ts +6 -0
  46. package/dist/src/lib/nuxt/runtime/plugin.client.d.ts +2 -0
  47. package/dist/src/lib/nuxt/runtime/plugin.d.ts +2 -0
  48. package/dist/src/lib/utils/iframeBridge.d.ts +11 -3
  49. package/dist/src/lib/utils/stackTabsA11y.d.ts +8 -0
  50. package/dist/src/lib/utils/stackTabsMessage.d.ts +7 -0
  51. package/dist/src/lib/utils/tabInfoEncoder.d.ts +0 -15
  52. package/dist/src/lib/utils/typeGuards.d.ts +2 -0
  53. package/dist/src/lib/utils/urlParser.d.ts +24 -3
  54. package/dist/src/lib/versionLogger.d.ts +1 -0
  55. package/dist/style.css +2 -1
  56. package/dist/utils/iframeBridge.d.ts +39 -0
  57. package/dist/vue-stack-tabs.css +2 -1
  58. package/dist/vue-stack-tabs.es.js +1 -2220
  59. package/package.json +71 -50
  60. package/src/lib/StackTabs.vue +223 -196
  61. package/src/lib/assets/style/stackTab.scss +110 -13
  62. package/src/lib/components/ContextMenu/ContextMenuItem.vue +23 -11
  63. package/src/lib/components/ContextMenu/index.vue +94 -10
  64. package/src/lib/components/PageLoading.vue +9 -7
  65. package/src/lib/components/StackKeepAlive/StackCacheRenderer.vue +70 -0
  66. package/src/lib/components/StackKeepAlive/StackKeepAlive.vue +57 -0
  67. package/src/lib/components/TabHeader/TabHeaderButton.vue +19 -8
  68. package/src/lib/components/TabHeader/TabHeaderItem.vue +74 -17
  69. package/src/lib/components/TabHeader/TabHeaderScroll.vue +47 -25
  70. package/src/lib/components/TabHeader/index.vue +181 -13
  71. package/src/lib/hooks/stackTabsContext.ts +135 -0
  72. package/src/lib/hooks/tabPanel/evict.ts +122 -87
  73. package/src/lib/hooks/tabPanel/navigationTransaction.ts +61 -0
  74. package/src/lib/hooks/tabPanel/refresh.ts +109 -0
  75. package/src/lib/hooks/tabPanel/scroll.ts +57 -40
  76. package/src/lib/hooks/tabPanel/session.ts +84 -22
  77. package/src/lib/hooks/tabPanel/state.ts +41 -44
  78. package/src/lib/hooks/useIframeManager.ts +253 -0
  79. package/src/lib/hooks/useTabActions.ts +64 -30
  80. package/src/lib/hooks/useTabEventBus.ts +29 -19
  81. package/src/lib/hooks/useTabLoading.ts +3 -2
  82. package/src/lib/hooks/useTabPanel.tsx +290 -313
  83. package/src/lib/hooks/useTabRouter.ts +111 -97
  84. package/src/lib/i18n/index.ts +53 -45
  85. package/src/lib/i18n/lang/en.ts +6 -1
  86. package/src/lib/i18n/lang/zh-CN.ts +6 -1
  87. package/src/lib/i18n/stackTabsLocale.ts +8 -0
  88. package/src/lib/iframe-bridge.ts +12 -0
  89. package/src/lib/index.ts +14 -19
  90. package/src/lib/model/TabModel.ts +27 -82
  91. package/src/lib/nuxt/module.d.ts +4 -0
  92. package/src/lib/nuxt/module.ts +8 -3
  93. package/src/lib/nuxt/runtime/plugin.client.ts +1 -0
  94. package/src/lib/nuxt/runtime/plugin.ts +11 -0
  95. package/src/lib/utils/iframeBridge.ts +29 -5
  96. package/src/lib/utils/scrollUtils.ts +9 -4
  97. package/src/lib/utils/stackTabsA11y.ts +12 -0
  98. package/src/lib/utils/stackTabsMessage.ts +99 -0
  99. package/src/lib/utils/tabInfoEncoder.ts +70 -21
  100. package/src/lib/utils/typeGuards.ts +3 -0
  101. package/src/lib/utils/urlParser.ts +144 -14
  102. package/src/lib/versionLogger.ts +7 -19
  103. package/dist/src/lib/hooks/tabPanel/evict.spec.d.ts +0 -1
  104. package/dist/src/lib/hooks/useTabPanel.spec.d.ts +0 -1
  105. package/dist/src/lib/model/TabModel.spec.d.ts +0 -1
  106. package/dist/src/lib/utils/iframeBridge.spec.d.ts +0 -1
  107. package/dist/src/lib/utils/tabInfoEncoder.spec.d.ts +0 -1
  108. package/dist/src/lib/utils/urlParser.spec.d.ts +0 -1
  109. package/dist/vue-stack-tabs.umd.js +0 -1
  110. package/src/lib/hooks/tabPanel/evict.spec.ts +0 -85
  111. package/src/lib/hooks/useTabPanel.spec.ts +0 -34
  112. package/src/lib/model/TabModel.spec.ts +0 -40
  113. package/src/lib/utils/iframeBridge.spec.ts +0 -37
  114. package/src/lib/utils/tabInfoEncoder.spec.ts +0 -32
  115. package/src/lib/utils/urlParser.spec.ts +0 -45
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vue-stack-tabs",
3
- "version": "1.1.0",
4
- "packageManager": "pnpm@10.29.3",
3
+ "version": "1.3.1",
4
+ "packageManager": "pnpm@11.21.0+sha512.521705bce689924eac72f5a3587122f362689ef6571e55ba80076fd637c11132ecffada26fad4ea79c485bfddbfd3d5a2a5b05805a77e893de71ec8a6cca3bb1",
5
5
  "private": false,
6
6
  "type": "module",
7
7
  "files": [
@@ -11,12 +11,15 @@
11
11
  "exports": {
12
12
  ".": {
13
13
  "types": "./dist/index.d.ts",
14
- "import": "./dist/vue-stack-tabs.es.js",
15
- "require": "./dist/vue-stack-tabs.umd.js"
14
+ "import": "./dist/vue-stack-tabs.es.js"
15
+ },
16
+ "./iframe-bridge": {
17
+ "types": "./dist/iframe-bridge.d.ts",
18
+ "import": "./dist/iframe-bridge.mjs"
16
19
  },
17
20
  "./nuxt": {
18
- "types": "./src/lib/nuxt/module.d.ts",
19
- "default": "./src/lib/nuxt/module.ts"
21
+ "types": "./dist/nuxt/module.d.ts",
22
+ "import": "./dist/nuxt/module.mjs"
20
23
  },
21
24
  "./dist/style.css": "./dist/style.css",
22
25
  "./dist/vue-stack-tabs.css": "./dist/vue-stack-tabs.css"
@@ -29,9 +32,9 @@
29
32
  "optional": true
30
33
  }
31
34
  },
32
- "main": "dist/vue-stack-tabs.umd.js",
33
- "module": "dist/vue-stack-tabs.es.js",
34
- "typings": "dist/index.d.ts",
35
+ "main": "./dist/vue-stack-tabs.es.js",
36
+ "module": "./dist/vue-stack-tabs.es.js",
37
+ "typings": "./dist/index.d.ts",
35
38
  "repository": {
36
39
  "type": "git",
37
40
  "url": "git+https://github.com/jktantan/vue-stack-tabs.git"
@@ -61,7 +64,7 @@
61
64
  "lint:check": "eslint .",
62
65
  "format": "prettier --write .",
63
66
  "format:check": "prettier --check .",
64
- "lib:build": "vite --config vite.config.lib.ts build && node -e \"require('fs').copyFileSync('dist/vue-stack-tabs.css','dist/style.css')\"",
67
+ "lib:build": "vite --config vite.config.lib.ts build && vite --config vite.config.iframe-bridge.ts build && vite --config vite.config.nuxt.ts build && node -e \"const fs=require('fs');fs.copyFileSync('dist/vue-stack-tabs.css','dist/style.css');fs.copyFileSync('dist/src/lib/iframe-bridge.d.ts','dist/iframe-bridge.d.ts');fs.mkdirSync('dist/utils',{recursive:true});fs.copyFileSync('dist/src/lib/utils/iframeBridge.d.ts','dist/utils/iframeBridge.d.ts');fs.mkdirSync('dist/nuxt',{recursive:true});fs.copyFileSync('dist/src/lib/nuxt/module.d.ts','dist/nuxt/module.d.ts');fs.mkdirSync('dist/nuxt/runtime',{recursive:true});fs.copyFileSync('dist/src/lib/nuxt/runtime/plugin.d.ts','dist/nuxt/runtime/plugin.d.ts');fs.copyFileSync('dist/nuxt/plugin.mjs','dist/nuxt/runtime/plugin.mjs')\"",
65
68
  "test": "vitest run",
66
69
  "test:watch": "vitest",
67
70
  "test:coverage": "vitest run --coverage",
@@ -69,57 +72,75 @@
69
72
  "test:packaged": "pnpm run lib:build && node scripts/verify-packaged.mjs"
70
73
  },
71
74
  "dependencies": {
72
- "@juggle/resize-observer": "^3.4.0",
73
- "@mdit/plugin-tasklist": "^0.22.3",
74
- "@noble/hashes": "^2.0.1",
75
- "dayjs": "^1.11.19",
76
- "defu": "^6.1.4",
77
- "hex-encoding": "^2.0.3",
78
- "js-base64": "^3.7.8",
79
- "lz-string": "^1.5.0",
75
+ "defu": "^6.1.7",
80
76
  "mitt": "^3.0.1",
81
- "normalize.css": "^8.0.1",
77
+ "nostics": "^1.2.0",
82
78
  "throttle-debounce": "^5.0.2",
83
- "uint8-encoding": "^2.0.1",
84
- "ulid": "^3.0.2",
85
- "vitepress": "^1.6.4",
86
- "vue": "^3.5.28",
79
+ "vue": "^3.5.42",
87
80
  "vue-i18n-lite": "^1.0.2",
88
- "vue-router": "^5.0.2"
81
+ "vue-router": "^5.3.0"
89
82
  },
90
83
  "devDependencies": {
84
+ "@ctrl/tinycolor": "^4.2.0",
91
85
  "@element-plus/icons-vue": "^2.3.2",
92
86
  "@eslint/js": "^10.0.1",
93
- "@rushstack/eslint-patch": "^1.15.0",
94
- "@tsconfig/node20": "^20.1.9",
87
+ "@floating-ui/core": "^1.8.0",
88
+ "@floating-ui/dom": "^1.8.0",
89
+ "@floating-ui/utils": "^0.2.12",
90
+ "@mdit/plugin-tasklist": "^1.1.0",
91
+ "@popperjs/core": "^2.11.8",
92
+ "@rushstack/eslint-patch": "^1.16.1",
93
+ "@tsconfig/node26": "^26.0.1",
95
94
  "@types/lodash-es": "^4.17.12",
96
- "@types/node": "^25.2.3",
95
+ "@types/node": "^26.4.0",
97
96
  "@types/throttle-debounce": "^5.0.2",
98
- "@vitejs/plugin-vue": "^6.0.4",
99
- "@vitejs/plugin-vue-jsx": "^5.1.4",
97
+ "@vitejs/plugin-vue": "^6.0.8",
98
+ "@vitejs/plugin-vue-jsx": "^5.1.6",
99
+ "@vitest/coverage-v8": "4.1.10",
100
+ "@vue/compiler-core": "^3.5.42",
101
+ "@vue/compiler-dom": "^3.5.42",
102
+ "@vue/devtools-api": "^8.2.1",
103
+ "@vue/devtools-kit": "^8.2.1",
104
+ "@vue/devtools-shared": "^8.2.1",
100
105
  "@vue/eslint-config-prettier": "^10.2.0",
101
- "@vue/eslint-config-typescript": "^14.7.0",
102
- "@vue/test-utils": "^2.4.6",
103
- "@vue/tsconfig": "^0.8.1",
104
- "@vueuse/core": "^14.2.1",
105
- "element-plus": "^2.13.2",
106
- "eslint": "^10.0.0",
107
- "eslint-plugin-vue": "^10.8.0",
108
- "globals": "^17.3.0",
109
- "happy-dom": "^20.6.1",
106
+ "@vue/eslint-config-typescript": "^14.9.0",
107
+ "@vue/reactivity": "^3.5.42",
108
+ "@vue/runtime-core": "^3.5.42",
109
+ "@vue/runtime-dom": "^3.5.42",
110
+ "@vue/shared": "^3.5.42",
111
+ "@vue/test-utils": "^2.5.0",
112
+ "@vue/tsconfig": "^0.9.1",
113
+ "@vueuse/core": "^14.4.0",
114
+ "@vueuse/shared": "^14.4.0",
115
+ "async-validator": "^4.2.5",
116
+ "birpc": "^4.2.0",
117
+ "dayjs": "^1.11.23",
118
+ "element-plus": "^2.14.5",
119
+ "eslint": "^10.9.1",
120
+ "eslint-config-prettier": "^10.1.8",
121
+ "eslint-plugin-vue": "^10.10.0",
122
+ "globals": "^17.11.0",
123
+ "happy-dom": "^20.12.0",
124
+ "hookable": "^6.1.1",
125
+ "lodash-es": "^4.18.1",
110
126
  "lodash-unified": "^1.0.3",
111
- "npm-run-all2": "^8.0.4",
112
- "prettier": "^3.8.1",
113
- "sass": "^1.97.3",
114
- "sass-loader": "^16.0.7",
115
- "typescript": "~5.9.3",
116
- "typescript-eslint": "^8.56.0",
117
- "unplugin-auto-import": "^21.0.0",
118
- "unplugin-vue-components": "^31.0.0",
119
- "vite": "^7.3.1",
120
- "vite-plugin-dts": "4.5.4",
127
+ "memoize-one": "^6.0.0",
128
+ "normalize-wheel-es": "^1.2.0",
129
+ "normalize.css": "^8.0.1",
130
+ "npm-run-all2": "^9.0.3",
131
+ "perfect-debounce": "^2.1.0",
132
+ "prettier": "^3.9.6",
133
+ "sass-embedded": "^1.103.1",
134
+ "terser": "^5.51.2",
135
+ "typescript": "~7.0.2",
136
+ "typescript-eslint": "^8.69.0",
137
+ "unplugin-auto-import": "^21.1.0",
138
+ "unplugin-vue-components": "^32.1.0",
139
+ "vite": "^8.2.2",
140
+ "vite-plugin-dts": "5.0.3",
121
141
  "vite-plugin-package-version": "^1.1.0",
122
- "vitest": "^4.0.18",
123
- "vue-tsc": "^3.2.4"
142
+ "vitepress": "^1.6.4",
143
+ "vitest": "^4.1.11",
144
+ "vue-tsc": "^3.3.11"
124
145
  }
125
146
  }