@inzombieland/nuxt-common 0.0.3 → 0.0.8

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 (119) hide show
  1. package/LICENSE +8 -0
  2. package/assets/css/layer.css +305 -0
  3. package/module.cjs +5 -0
  4. package/module.d.mts +7 -0
  5. package/module.d.ts +7 -0
  6. package/module.json +9 -0
  7. package/module.mjs +70 -0
  8. package/package.json +5 -3
  9. package/runtime/AppProvider.vue +129 -0
  10. package/runtime/SidebarProvider.vue +138 -0
  11. package/runtime/api/account/account.get.d.ts +2 -0
  12. package/runtime/api/account/account.get.mjs +19 -0
  13. package/runtime/api/account/authcheck.get.d.ts +8 -0
  14. package/runtime/api/account/authcheck.get.mjs +28 -0
  15. package/runtime/api/account/default-handler.d.ts +2 -0
  16. package/runtime/api/account/default-handler.mjs +37 -0
  17. package/runtime/api/account/middleware.d.ts +2 -0
  18. package/runtime/api/account/middleware.mjs +18 -0
  19. package/runtime/api/account/token.get.d.ts +2 -0
  20. package/runtime/api/account/token.get.mjs +31 -0
  21. package/runtime/api/index.d.ts +37 -0
  22. package/runtime/api/index.mjs +26 -0
  23. package/runtime/api/user-actions.d.ts +118 -0
  24. package/runtime/api/user-actions.mjs +165 -0
  25. package/runtime/composables/use-active-sessions.d.ts +5 -0
  26. package/runtime/composables/use-active-sessions.mjs +15 -0
  27. package/runtime/composables/use-api-fetch.d.ts +3 -0
  28. package/runtime/composables/use-api-fetch.mjs +3 -0
  29. package/runtime/composables/use-helpers.d.ts +16 -0
  30. package/runtime/composables/use-helpers.mjs +10 -0
  31. package/runtime/composables/use-layer-manager.d.ts +3 -0
  32. package/runtime/composables/use-layer-manager.mjs +3 -0
  33. package/runtime/composables/use-subscribe.d.ts +10 -0
  34. package/runtime/composables/use-subscribe.mjs +22 -0
  35. package/runtime/composables/use-toggle-sidebar.d.ts +3 -0
  36. package/runtime/composables/use-toggle-sidebar.mjs +8 -0
  37. package/runtime/composables/use-user-actions.d.ts +2 -0
  38. package/runtime/composables/use-user-actions.mjs +4 -0
  39. package/runtime/composables/use-user.d.ts +3 -0
  40. package/runtime/composables/use-user.mjs +3 -0
  41. package/runtime/composables/use-validators.d.ts +8 -0
  42. package/runtime/composables/use-validators.mjs +17 -0
  43. package/runtime/middleware/auth.d.ts +2 -0
  44. package/runtime/middleware/auth.mjs +10 -0
  45. package/runtime/middleware/guest.d.ts +2 -0
  46. package/runtime/middleware/guest.mjs +12 -0
  47. package/runtime/middleware/index.d.ts +4 -0
  48. package/runtime/middleware/index.mjs +4 -0
  49. package/runtime/middleware/locale.global.d.ts +2 -0
  50. package/runtime/middleware/locale.global.mjs +13 -0
  51. package/runtime/packages/api/api-client.d.ts +8 -0
  52. package/runtime/packages/api/api-client.mjs +150 -0
  53. package/runtime/packages/api/bus.d.ts +7 -0
  54. package/runtime/packages/api/bus.mjs +22 -0
  55. package/runtime/packages/api/comet-client.d.ts +11 -0
  56. package/runtime/packages/api/comet-client.mjs +73 -0
  57. package/runtime/packages/api/get-user.d.ts +8 -0
  58. package/runtime/packages/api/get-user.mjs +54 -0
  59. package/runtime/packages/api/get-visitor.d.ts +11 -0
  60. package/runtime/packages/api/get-visitor.mjs +32 -0
  61. package/runtime/packages/api/helpers/api-helper.d.ts +6 -0
  62. package/runtime/packages/api/helpers/api-helper.mjs +99 -0
  63. package/runtime/packages/api/helpers/current-device.d.ts +67 -0
  64. package/runtime/packages/api/helpers/current-device.mjs +368 -0
  65. package/runtime/packages/api/helpers/date-helper.d.ts +15 -0
  66. package/runtime/packages/api/helpers/date-helper.mjs +231 -0
  67. package/runtime/packages/api/helpers/index.d.ts +4 -0
  68. package/runtime/packages/api/helpers/index.mjs +15 -0
  69. package/runtime/packages/api/index.d.ts +26 -0
  70. package/runtime/packages/api/index.mjs +50 -0
  71. package/runtime/packages/api/package.json +20 -0
  72. package/runtime/packages/api/refresh-token.d.ts +2 -0
  73. package/runtime/packages/api/refresh-token.mjs +39 -0
  74. package/runtime/packages/api/types.d.ts +51 -0
  75. package/runtime/packages/api/types.mjs +0 -0
  76. package/runtime/packages/api/use-api-actions.d.ts +13 -0
  77. package/runtime/packages/api/use-api-actions.mjs +5 -0
  78. package/runtime/packages/api/use-user.d.ts +47 -0
  79. package/runtime/packages/api/use-user.mjs +5 -0
  80. package/runtime/packages/helpers/index.d.ts +3 -0
  81. package/runtime/packages/helpers/index.mjs +14 -0
  82. package/runtime/packages/helpers/package.json +11 -0
  83. package/runtime/packages/helpers/phone-helper.d.ts +13 -0
  84. package/runtime/packages/helpers/phone-helper.mjs +58 -0
  85. package/runtime/packages/helpers/string-helper.d.ts +4 -0
  86. package/runtime/packages/helpers/string-helper.mjs +8 -0
  87. package/runtime/packages/layer-manager/LayerComponent.vue +54 -0
  88. package/runtime/packages/layer-manager/LayersProvider.vue +171 -0
  89. package/runtime/packages/layer-manager/index.d.ts +2 -0
  90. package/runtime/packages/layer-manager/index.mjs +2 -0
  91. package/runtime/packages/layer-manager/package.json +11 -0
  92. package/runtime/packages/layer-manager/types.d.ts +8 -0
  93. package/runtime/packages/layer-manager/types.mjs +0 -0
  94. package/runtime/packages/layer-manager/use-layer-actions.d.ts +23 -0
  95. package/runtime/packages/layer-manager/use-layer-actions.mjs +5 -0
  96. package/runtime/plugin.d.ts +2 -0
  97. package/runtime/plugin.mjs +42 -0
  98. package/runtime/plugins/device.d.ts +136 -0
  99. package/runtime/plugins/device.mjs +29 -0
  100. package/runtime/plugins/otp-input.d.ts +2 -0
  101. package/runtime/plugins/otp-input.mjs +5 -0
  102. package/runtime/plugins/sanitize-html.d.ts +2 -0
  103. package/runtime/plugins/sanitize-html.mjs +90 -0
  104. package/runtime/plugins/sanitize-url.d.ts +2 -0
  105. package/runtime/plugins/sanitize-url.mjs +9 -0
  106. package/runtime/server/middleware/basic-auth.d.ts +2 -0
  107. package/runtime/server/middleware/basic-auth.mjs +34 -0
  108. package/runtime/thirdparty/helpers/index.d.mts +5 -0
  109. package/runtime/thirdparty/helpers/index.d.ts +7 -0
  110. package/runtime/thirdparty/helpers/index.mjs +69 -0
  111. package/runtime/thirdparty/helpers/index.mjs.map +1 -0
  112. package/runtime/thirdparty/sanitize-url/index.d.mts +2 -0
  113. package/runtime/thirdparty/sanitize-url/index.d.ts +1 -0
  114. package/runtime/thirdparty/sanitize-url/index.mjs +98 -0
  115. package/runtime/thirdparty/sanitize-url/index.mjs.map +1 -0
  116. package/runtime/ui/varlet.d.ts +7 -0
  117. package/runtime/ui/varlet.mjs +13 -0
  118. package/types.d.mts +16 -0
  119. package/types.d.ts +16 -0
package/LICENSE ADDED
@@ -0,0 +1,8 @@
1
+ ISC License:
2
+
3
+ Copyright (c) 2004-2010 by Internet Systems Consortium, Inc. ("ISC")
4
+ Copyright (c) 1995-2003 by Internet Software Consortium
5
+
6
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
7
+
8
+ THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
@@ -0,0 +1,305 @@
1
+ @charset "utf-8";
2
+
3
+ @font-face {
4
+ font-family: icon-font-layer-close;
5
+ src: url("data:application/font-woff;base64,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");
6
+ font-weight: 400;
7
+ font-style: normal;
8
+ }
9
+
10
+ .layer-header {
11
+ background: var(--color-surface-container-low);
12
+ height: 50px;
13
+ padding: 0 24px 0 52px;
14
+ box-sizing: border-box;
15
+ align-items: center;
16
+ display: flex;
17
+ justify-content: flex-start;
18
+ position: relative;
19
+ z-index: 100;
20
+ }
21
+
22
+ /* light */
23
+ .layer-header {
24
+ color: #243036;
25
+ box-shadow: inset 0 -1px 0 rgba(218, 220, 224, 0.6);
26
+ }
27
+
28
+ .dark .layer-header {
29
+ color: rgba(255, 255, 255, 0.87);
30
+ box-shadow: inset 0 -1px 0 rgba(64, 64, 64, 0.9);
31
+ }
32
+
33
+ .layer-header > h1 {
34
+ display: inline-block;
35
+ flex: 1 1 0;
36
+ font-size: 14px;
37
+ font-weight: 600;
38
+ line-height: normal;
39
+ text-align: center;
40
+ margin: 0;
41
+ padding-right: 28px;
42
+ -webkit-font-smoothing: antialiased;
43
+ -moz-osx-font-smoothing: grayscale;
44
+ }
45
+
46
+ /* light */
47
+ .layer-header > h1 {
48
+ color: #243036;
49
+ }
50
+
51
+ .dark .layer-header > h1 {
52
+ color: rgba(255, 255, 255, 0.87);
53
+ }
54
+
55
+ .layer-footer {
56
+ background: var(--color-surface-container-low);
57
+ box-sizing: border-box;
58
+ transition: box-shadow 0.5s;
59
+ padding: 0 32px 0 52px;
60
+ align-items: center;
61
+ display: flex;
62
+ justify-content: flex-start;
63
+ position: absolute;
64
+ left: 0;
65
+ bottom: 0;
66
+ width: 100%;
67
+ height: 40px;
68
+ z-index: 1;
69
+ }
70
+
71
+ /* light */
72
+ .layer-footer {
73
+ color: #243036;
74
+ box-shadow: 0 -6px 5px -7px rgba(45, 70, 104, 0.3);
75
+ }
76
+
77
+ .dark .layer-footer {
78
+ color: rgba(255, 255, 255, 0.87);
79
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
80
+ }
81
+
82
+ .layer-main {
83
+ background: var(--color-surface-layer-high);
84
+ position: absolute;
85
+ top: 50px;
86
+ left: 0;
87
+ bottom: 0;
88
+ overflow-y: auto;
89
+ margin: 0;
90
+ padding: 3rem 0;
91
+ width: 100%;
92
+ -webkit-overflow-scrolling: auto;
93
+ }
94
+
95
+ /* light */
96
+ .layer-main {
97
+ color: #243036;
98
+ }
99
+
100
+ .dark .layer-main {
101
+ color: rgba(255, 255, 255, 0.87);
102
+ }
103
+
104
+ .layer-main.layer-main__with__footer {
105
+ bottom: 40px;
106
+ }
107
+
108
+ .layer-content {
109
+ width: 80%;
110
+ max-width: 512px;
111
+ min-width: 320px;
112
+ margin: 0 auto;
113
+ }
114
+
115
+ .layer {
116
+ position: fixed;
117
+ top: 0;
118
+ right: 0;
119
+ bottom: 0;
120
+ left: auto;
121
+ box-sizing: border-box;
122
+ width: 50%;
123
+ max-width: 1000px;
124
+ opacity: 0;
125
+ transform: translateX(150px) translateZ(0);
126
+ transition:
127
+ width 0.4s ease,
128
+ max-width 0.4s ease,
129
+ opacity 0.1s cubic-bezier(0.33, 0.13, 0.32, 1),
130
+ transform 0.3s cubic-bezier(0.33, 0.13, 0.32, 1);
131
+ z-index: 500;
132
+ }
133
+
134
+ /* light */
135
+ .layer {
136
+ box-shadow: -4px 10px 30px rgba(45, 70, 104, 0.25);
137
+ }
138
+
139
+ .dark .layer {
140
+ box-shadow: -1px 0 0 0 rgba(64, 64, 64, 0.9);
141
+ }
142
+
143
+ .layout {
144
+ position: absolute;
145
+ top: 0;
146
+ right: 0;
147
+ bottom: 0;
148
+ left: 0;
149
+ width: 100%;
150
+ height: 100%;
151
+ transform: none;
152
+ transition:
153
+ width 0.4s ease,
154
+ max-width 0.4s ease,
155
+ opacity 0.1s cubic-bezier(0.33, 0.13, 0.32, 1),
156
+ transform 0.3s cubic-bezier(0.33, 0.13, 0.32, 1);
157
+ box-shadow: -4px 10px 30px rgba(45, 70, 104, 0.25);
158
+ }
159
+
160
+ @media (max-width: 767px) {
161
+ .layer {
162
+ width: 100%;
163
+ min-width: 320px;
164
+ }
165
+
166
+ .layout.layer-open {
167
+ transform: translateX(-20%) translateZ(0);
168
+ }
169
+
170
+ .layout.layer-hide {
171
+ transform: none;
172
+ transition:
173
+ width 0.4s ease,
174
+ max-width 0.4s ease,
175
+ opacity 0.3s cubic-bezier(0.69, 0.08, 0.72, 0.59),
176
+ transform 0.3s cubic-bezier(0.69, 0.08, 0.72, 0.59) !important;
177
+ }
178
+
179
+ .layer-header {
180
+ justify-content: center;
181
+ }
182
+
183
+ .layer-main {
184
+ padding: 2rem 1rem;
185
+ }
186
+
187
+ .layer-content {
188
+ width: 100%;
189
+ max-width: 512px;
190
+ min-width: 280px;
191
+ }
192
+
193
+ .layer-close {
194
+ top: 15px !important;
195
+ }
196
+
197
+ .layer-close:before {
198
+ font-size: 20px !important;
199
+ content: "\64" !important;
200
+ }
201
+ }
202
+
203
+ .layer.open {
204
+ opacity: 1 !important;
205
+ transform: translateX(0) translateZ(0);
206
+ }
207
+
208
+ .layer.open:nth-last-of-type(n + 2) {
209
+ transform: translateX(-12px);
210
+ }
211
+
212
+ .layer.open:nth-last-of-type(n + 3) {
213
+ transform: translateX(-24px);
214
+ }
215
+
216
+ .layer.open:nth-last-of-type(n + 4) {
217
+ transform: translateX(-36px);
218
+ }
219
+
220
+ .layer.open:nth-last-of-type(n + 5) {
221
+ transform: translateX(-48px);
222
+ }
223
+
224
+ .layer.hide {
225
+ opacity: 0 !important;
226
+ transform: translateX(150px) translateZ(0);
227
+ transition:
228
+ width 0.4s ease,
229
+ max-width 0.4s ease,
230
+ opacity 0.3s cubic-bezier(0.69, 0.08, 0.72, 0.59),
231
+ transform 0.3s cubic-bezier(0.69, 0.08, 0.72, 0.59) !important;
232
+ pointer-events: none;
233
+ }
234
+
235
+ .layer-close {
236
+ position: absolute;
237
+ top: 14px;
238
+ left: 16px;
239
+ width: 20px;
240
+ height: 20px;
241
+ display: flex;
242
+ justify-content: center;
243
+ align-items: center;
244
+ font-size: 15px;
245
+ line-height: 0;
246
+ text-decoration: none;
247
+ transition: color 0.2s;
248
+ z-index: 110;
249
+ }
250
+
251
+ /* light */
252
+ .layer-close {
253
+ color: #243036;
254
+ }
255
+
256
+ .dark .layer-close {
257
+ color: rgba(255, 255, 255, 0.87);
258
+ }
259
+
260
+ /* light */
261
+ .layer-close:hover {
262
+ color: rgba(36, 48, 54, 0.7);
263
+ }
264
+
265
+ .dark .layer-close:hover {
266
+ color: rgba(255, 255, 255, 0.67);
267
+ }
268
+
269
+ .layer-close:before {
270
+ font-family: icon-font-layer-close !important;
271
+ font-style: normal !important;
272
+ font-weight: 400 !important;
273
+ font-variant: normal !important;
274
+ text-transform: none !important;
275
+ speak: none;
276
+ line-height: 1;
277
+ -webkit-font-smoothing: antialiased;
278
+ -moz-osx-font-smoothing: grayscale;
279
+ content: "\77";
280
+ }
281
+
282
+ .layer,
283
+ .layout {
284
+ top: env(safe-area-inset-top);
285
+ bottom: env(safe-area-inset-bottom);
286
+ height: calc(100% - (env(safe-area-inset-top) + env(safe-area-inset-bottom))) !important;
287
+ }
288
+
289
+ .layer::before,
290
+ .layout::before {
291
+ background: var(--color-surface-container-low);
292
+ display: block;
293
+ position: absolute;
294
+ top: calc(env(safe-area-inset-top) * -1);
295
+ right: 0;
296
+ bottom: 0;
297
+ left: calc(env(safe-area-inset-top) * -1);
298
+ height: env(safe-area-inset-top);
299
+ content: "";
300
+ z-index: 9999;
301
+ }
302
+
303
+ .layout.base-main::before {
304
+ background: var(--color-surface-container-low);
305
+ }
package/module.cjs ADDED
@@ -0,0 +1,5 @@
1
+ module.exports = function(...args) {
2
+ return import('./module.mjs').then(m => m.default.call(this, ...args))
3
+ }
4
+ const _meta = module.exports.meta = require('./module.json')
5
+ module.exports.getMeta = () => Promise.resolve(_meta)
package/module.d.mts ADDED
@@ -0,0 +1,7 @@
1
+ import * as _nuxt_schema from '@nuxt/schema';
2
+
3
+ interface ModuleOptions {
4
+ }
5
+ declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
6
+
7
+ export { type ModuleOptions, _default as default };
package/module.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import * as _nuxt_schema from '@nuxt/schema';
2
+
3
+ interface ModuleOptions {
4
+ }
5
+ declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
6
+
7
+ export { type ModuleOptions, _default as default };
package/module.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "@asvate/nuxt-common",
3
+ "version": "1.15.0",
4
+ "configKey": "nuxt-common",
5
+ "builder": {
6
+ "@nuxt/module-builder": "0.6.0",
7
+ "unbuild": "2.0.0"
8
+ }
9
+ }
package/module.mjs ADDED
@@ -0,0 +1,70 @@
1
+ import { fileURLToPath } from 'node:url';
2
+ import { defineNuxtModule, createResolver, addServerHandler, addImportsDir, addPlugin, addComponent } from '@nuxt/kit';
3
+
4
+ const name = "@asvate/nuxt-common";
5
+ const version = "1.15.0";
6
+
7
+ const module = defineNuxtModule({
8
+ meta: {
9
+ name,
10
+ version,
11
+ configKey: "nuxt-common"
12
+ },
13
+ setup(options, nuxt) {
14
+ const { resolve } = createResolver(import.meta.url);
15
+ const runtimeDir = fileURLToPath(new URL("./runtime", import.meta.url));
16
+ nuxt.options.build.transpile.push(runtimeDir);
17
+ const addServerDefaultHandler = (route) => {
18
+ addServerHandler({
19
+ route,
20
+ handler: resolve(runtimeDir, "api/account/default-handler")
21
+ });
22
+ };
23
+ addServerHandler({
24
+ middleware: true,
25
+ handler: resolve(runtimeDir, "server/middleware/basic-auth")
26
+ });
27
+ addServerHandler({
28
+ middleware: true,
29
+ handler: resolve(runtimeDir, "api/account/middleware")
30
+ });
31
+ addServerHandler({
32
+ route: "/account/0/authcheck",
33
+ handler: resolve(runtimeDir, "api/account/authcheck.get")
34
+ });
35
+ addServerHandler({
36
+ route: "/account/0/token",
37
+ handler: resolve(runtimeDir, "api/account/token.get")
38
+ });
39
+ addServerDefaultHandler("/account/0/signin");
40
+ addServerDefaultHandler("/account/0/signinbycode/sendcode");
41
+ addServerDefaultHandler("/account/0/signinbycode/verifycode");
42
+ addServerDefaultHandler("/account/0/signup");
43
+ addServerDefaultHandler("/account/0/recovery");
44
+ addServerHandler({
45
+ route: "/account",
46
+ handler: resolve(runtimeDir, "api/account/account.get")
47
+ });
48
+ addImportsDir(resolve(runtimeDir, "composables"));
49
+ addPlugin(resolve(runtimeDir, "plugin"));
50
+ addPlugin(resolve(runtimeDir, "ui/varlet"));
51
+ addPlugin(resolve(runtimeDir, "plugins/device"));
52
+ addPlugin(resolve(runtimeDir, "plugins/otp-input"));
53
+ addPlugin(resolve(runtimeDir, "plugins/sanitize-html"));
54
+ addPlugin(resolve(runtimeDir, "plugins/sanitize-url"));
55
+ addComponent({
56
+ name: "NuxtAppProvider",
57
+ filePath: resolve(runtimeDir, "AppProvider.vue")
58
+ });
59
+ addComponent({
60
+ name: "NuxtLayerManager",
61
+ filePath: resolve(runtimeDir, "packages/layer-manager/LayersProvider.vue")
62
+ });
63
+ addComponent({
64
+ name: "NuxtSidebarProvider",
65
+ filePath: resolve(runtimeDir, "SidebarProvider.vue")
66
+ });
67
+ }
68
+ });
69
+
70
+ export { module as default };
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@inzombieland/nuxt-common",
3
- "version": "0.0.3",
3
+ "version": "0.0.8",
4
4
  "lerna": {
5
5
  "command": {
6
6
  "publish": {
7
- "directory": "../..",
7
+ "directory": "../../dist",
8
8
  "assets": [
9
+ "package.json",
9
10
  {
10
11
  "from": "../../assets/*",
11
12
  "to": "assets"
@@ -13,5 +14,6 @@
13
14
  ]
14
15
  }
15
16
  }
16
- }
17
+ },
18
+ "gitHead": "3edfd2535dd3733cc07765a89d9cd678cf594da7"
17
19
  }
@@ -0,0 +1,129 @@
1
+ <script setup lang="ts">
2
+ import { StyleProvider, Themes, Locale as VarletLocale } from "@varlet/ui"
3
+ import { useLocalStorage } from "@vueuse/core"
4
+ import { setNotifyDefaultOptions, Locale as VantLocale, type ConfigProviderTheme } from "vant"
5
+ import enUS from "vant/es/locale/lang/en-US"
6
+ import ruRU from "vant/es/locale/lang/ru-RU"
7
+ import { onMounted, ref, watch } from "vue"
8
+ import { useRouter } from "vue-router"
9
+ import { useI18n, useLocalePath } from "#i18n"
10
+ import { useNuxtApp } from "#imports"
11
+ import { getVisitorId, getVisitorIdentifier } from "./api"
12
+ import { useActiveSessions } from "./composables/use-active-sessions"
13
+ import { useSubscribe } from "./composables/use-subscribe"
14
+ import { useUser } from "./composables/use-user"
15
+ import { useUserActions } from "./composables/use-user-actions"
16
+ import "@vant/touch-emulator"
17
+
18
+ const theme = useLocalStorage("theme", "")
19
+ const locale = useLocalStorage("locale", "en")
20
+ const user = useUser()
21
+ const activeSessions = useActiveSessions()
22
+ const { fetchActiveSessions, logout } = useUserActions()
23
+ const localePath = useLocalePath()
24
+ const router = useRouter()
25
+ const appLoading = ref(Boolean(user.value))
26
+ // @ts-ignore
27
+ const { setLocale } = useI18n()
28
+ const { $mobileApp } = useNuxtApp()
29
+
30
+ useSubscribe("WS.SessionsUpdated", async (session: { status?: string; visitorId?: string; sessionId?: string }) => {
31
+ if (user.value && activeSessions.value.length > 0) {
32
+ activeSessions.value = [...activeSessions.value].map(activeSession => {
33
+ if (activeSession.id === session?.sessionId) {
34
+ activeSession.isOnline = session?.status === "Online"
35
+ activeSession.signedOut = session?.status === "SignedOut"
36
+ activeSession.dateTime = new Date()
37
+ }
38
+ return activeSession
39
+ })
40
+ }
41
+ if (user.value && session?.status === "SignedOut" && session?.visitorId === getVisitorId()) {
42
+ const data = await fetchActiveSessions()
43
+ const isCurrentSession = data.sessions.some((s: any) => s.isCurrentSession && s.id === session?.sessionId)
44
+ if (isCurrentSession) {
45
+ await logout()
46
+ await router.push({ path: localePath("/") })
47
+ }
48
+ }
49
+ })
50
+
51
+ onMounted(() => {
52
+ watch(
53
+ user,
54
+ user => {
55
+ if (user && user.theme !== theme.value) {
56
+ theme.value = user.theme
57
+ }
58
+ if (user && user.locale !== locale.value) {
59
+ locale.value = user.locale
60
+ }
61
+ },
62
+ { immediate: true }
63
+ )
64
+
65
+ watch(
66
+ theme,
67
+ theme => {
68
+ if (!theme) {
69
+ theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"
70
+ }
71
+
72
+ if (theme === "dark") {
73
+ document.documentElement.classList.remove("light")
74
+ document.documentElement.classList.remove("van-theme-light")
75
+ document.documentElement.classList.add("van-theme-dark")
76
+ StyleProvider(Themes.dark)
77
+ } else {
78
+ document.documentElement.classList.remove("dark")
79
+ document.documentElement.classList.remove("van-theme-dark")
80
+ document.documentElement.classList.add("van-theme-light")
81
+ StyleProvider(null)
82
+ }
83
+ document.documentElement.classList.add(theme)
84
+
85
+ if ($mobileApp?.changeTheme && typeof $mobileApp.changeTheme === "function") {
86
+ $mobileApp.changeTheme({ theme })
87
+ }
88
+ },
89
+ { immediate: true }
90
+ )
91
+
92
+ watch(
93
+ locale,
94
+ () => {
95
+ if (locale.value === "ru") {
96
+ VantLocale.use(locale.value, ruRU)
97
+ VarletLocale.add("en-US", VarletLocale.enUS)
98
+ } else {
99
+ VantLocale.use(locale.value, enUS)
100
+ VarletLocale.add("en-US", VarletLocale.enUS)
101
+ }
102
+ setLocale(locale.value as "en" | "ru")
103
+ },
104
+ { immediate: true }
105
+ )
106
+
107
+ setNotifyDefaultOptions({ position: "bottom" })
108
+
109
+ appLoading.value = false
110
+ })
111
+
112
+ if (typeof window !== "undefined") {
113
+ getVisitorIdentifier()
114
+ }
115
+ </script>
116
+
117
+ <template>
118
+ <div
119
+ class="h-full"
120
+ :class="{ app: appLoading }"
121
+ >
122
+ <slot />
123
+ <van-config-provider :theme="theme as ConfigProviderTheme" />
124
+ </div>
125
+ </template>
126
+
127
+ <style scoped>
128
+ .app{height:0;width:0}.app:after{background:#5a5a5a url(/images/loading.gif) no-repeat 50%;content:"";height:100%;left:0;position:absolute;top:0;transition:.5s;width:100%;z-index:10000}
129
+ </style>