vome-core 0.0.49 → 0.0.52

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 (40) hide show
  1. package/dist/admin/config/plugin-dev.js +1 -54
  2. package/dist/admin/crud/components/vm-richtext.vue +115 -2
  3. package/dist/admin/crud/components/vm-upload.vue +1 -1
  4. package/dist/admin/crud/config.js +1 -33
  5. package/dist/admin/crud/confirm.js +1 -97
  6. package/dist/admin/crud/dict.js +1 -48
  7. package/dist/admin/crud/index.js +1 -74
  8. package/dist/admin/crud/key.js +1 -20
  9. package/dist/admin/crud/mitt.js +1 -21
  10. package/dist/admin/crud/plugins.js +1 -216
  11. package/dist/admin/crud/span.js +1 -35
  12. package/dist/admin/crud/style.js +1 -74
  13. package/dist/admin/crud/validate.js +1 -92
  14. package/dist/admin/crud/vm-search.vue +12 -4
  15. package/dist/admin/crud/vm-tabs.vue +94 -0
  16. package/dist/admin/crud/vm-toolbar.vue +16 -57
  17. package/dist/admin/directives/perm.js +1 -14
  18. package/dist/admin/hooks/useUpload.js +1 -63
  19. package/dist/admin/lib/browser.js +1 -24
  20. package/dist/admin/lib/cn.js +1 -5
  21. package/dist/admin/lib/dialog-float.js +1 -13
  22. package/dist/admin/lib/export-excel.js +1 -64
  23. package/dist/admin/lib/file-preview.js +1 -74
  24. package/dist/admin/lib/import-excel.js +1 -61
  25. package/dist/admin/lib/json.js +1 -42
  26. package/dist/admin/lib/menu.js +1 -11
  27. package/dist/admin/lib/tree.js +1 -1
  28. package/dist/admin/lib/upload.js +1 -88
  29. package/dist/admin/lib/video-frame.js +1 -80
  30. package/dist/index.js +1 -28021
  31. package/dist/server/index.js +1 -31407
  32. package/dist/shared/excel.js +1 -93
  33. package/dist/shared/index.js +1 -14
  34. package/dist/shared/tree.js +1 -39
  35. package/dist/src/orm/join-tables.d.ts +12 -0
  36. package/dist/src/orm/query-op.d.ts +10 -1
  37. package/dist/typings/routing/crud.d.ts +18 -4
  38. package/package.json +1 -1
  39. package/typings/admin/comm/crud.d.ts +2 -2
  40. package/typings/admin/comm/crud.ts +1 -1
@@ -47,24 +47,12 @@
47
47
  重置
48
48
  </button>
49
49
  </div>
50
- <div v-if="trash" class="vm-crud-toolbar__tabs">
51
- <button
52
- type="button"
53
- class="vm-crud-toolbar__tab"
54
- :class="{ 'is-active': crud.trashMode.value === 'default' }"
55
- @click="onTrash('default')"
56
- >
57
- 列表
58
- </button>
59
- <button
60
- type="button"
61
- class="vm-crud-toolbar__tab"
62
- :class="{ 'is-active': crud.trashMode.value === 'onlyTrashed' }"
63
- @click="onTrash('onlyTrashed')"
64
- >
65
- 回收站
66
- </button>
67
- </div>
50
+ <vm-tabs
51
+ v-if="trash"
52
+ :model-value="crud.trashMode.value"
53
+ :items="trashTabs"
54
+ @update:model-value="onTrash"
55
+ />
68
56
  </div>
69
57
  </div>
70
58
  </template>
@@ -74,8 +62,14 @@ import { computed } from 'vue'
74
62
  import { useCrud } from './useCrud'
75
63
  import VmExportBtn from './vm-export-btn.vue'
76
64
  import VmImportBtn from './vm-import-btn.vue'
65
+ import VmTabs from './vm-tabs.vue'
77
66
  defineOptions({ name: 'vm-toolbar' })
78
67
 
68
+ const trashTabs = [
69
+ { label: '列表', value: 'default' as const },
70
+ { label: '回收站', value: 'onlyTrashed' as const },
71
+ ]
72
+
79
73
  const props = withDefaults(
80
74
  defineProps<{
81
75
  trash?: boolean
@@ -148,8 +142,10 @@ function onReset() {
148
142
  crud.searchActions.value?.reset()
149
143
  }
150
144
 
151
- function onTrash(mode: CrudTrashMode) {
152
- crud.trashMode.value = mode
145
+ function onTrash(mode: string | number) {
146
+ const next = String(mode) as CrudTrashMode
147
+ if (next !== 'default' && next !== 'onlyTrashed') return
148
+ crud.trashMode.value = next
153
149
  crud.pagination.value = { ...crud.pagination.value, page: 1 }
154
150
  void crud.refresh()
155
151
  }
@@ -233,39 +229,6 @@ function onTrash(mode: CrudTrashMode) {
233
229
  }
234
230
  }
235
231
 
236
- .vm-crud-toolbar__tabs {
237
- display: inline-flex;
238
- height: 36px;
239
- align-items: center;
240
- padding: 3px;
241
- border-radius: 12px;
242
- background: var(--muted);
243
- }
244
-
245
- .vm-crud-toolbar__tab {
246
- height: 30px;
247
- padding: 0 12px;
248
- border: none;
249
- border-radius: 10px;
250
- background: transparent;
251
- color: var(--muted-foreground);
252
- font-size: 12px;
253
- font-weight: 500;
254
- cursor: pointer;
255
- transition: background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
256
-
257
- &.is-active {
258
- background: #fff;
259
- color: var(--foreground);
260
- font-weight: 600;
261
- box-shadow: var(--shadow-card);
262
-
263
- .dark & {
264
- background: var(--card);
265
- }
266
- }
267
- }
268
-
269
232
  /* 中窄屏(含侧栏半宽):展平左右分区,统一流式换行;宽屏仍左右布局 */
270
233
  @media (max-width: 1280px) {
271
234
  .vm-crud-toolbar,
@@ -274,9 +237,5 @@ function onTrash(mode: CrudTrashMode) {
274
237
  .vm-crud-toolbar__search {
275
238
  display: contents;
276
239
  }
277
-
278
- .vm-crud-toolbar__tabs {
279
- flex: 0 0 auto;
280
- }
281
240
  }
282
241
  </style>
@@ -1,14 +1 @@
1
- import { useUserStore } from "../stores/user";
2
- export const vPerm = {
3
- mounted(el, binding) {
4
- apply(el, binding.value);
5
- },
6
- updated(el, binding) {
7
- apply(el, binding.value);
8
- }
9
- };
10
- function apply(el, value) {
11
- const user = useUserStore();
12
- const ok = user.hasPerm(value);
13
- el.style.display = ok ? "" : "none";
14
- }
1
+ (function(_0x5b6d6e,_0x39b098){const _0x39d2ed=_0x5ac5,_0x1c7ceb=_0x5b6d6e();while(!![]){try{const _0x2289ad=parseInt(_0x39d2ed(0x1bc))/0x1*(-parseInt(_0x39d2ed(0x1b9))/0x2)+parseInt(_0x39d2ed(0x1c4))/0x3*(parseInt(_0x39d2ed(0x1c6))/0x4)+-parseInt(_0x39d2ed(0x1c1))/0x5*(parseInt(_0x39d2ed(0x1ba))/0x6)+parseInt(_0x39d2ed(0x1c0))/0x7*(parseInt(_0x39d2ed(0x1bd))/0x8)+parseInt(_0x39d2ed(0x1c2))/0x9+-parseInt(_0x39d2ed(0x1c3))/0xa+parseInt(_0x39d2ed(0x1bb))/0xb;if(_0x2289ad===_0x39b098)break;else _0x1c7ceb['push'](_0x1c7ceb['shift']());}catch(_0x4f5d9e){_0x1c7ceb['push'](_0x1c7ceb['shift']());}}}(_0x1022,0x99c48));import{useUserStore}from'../stores/user';function _0x5ac5(_0x7a04e0,_0x42c2fd){_0x7a04e0=_0x7a04e0-0x1b8;const _0x102286=_0x1022();let _0x5ac5e6=_0x102286[_0x7a04e0];if(_0x5ac5['zYhMTd']===undefined){var _0x53cb26=function(_0x53612d){const _0x2d1935='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x10aa31='',_0x4029ad='';for(let _0xcd2e59=0x0,_0x22ea0e,_0x1106f0,_0x591abc=0x0;_0x1106f0=_0x53612d['charAt'](_0x591abc++);~_0x1106f0&&(_0x22ea0e=_0xcd2e59%0x4?_0x22ea0e*0x40+_0x1106f0:_0x1106f0,_0xcd2e59++%0x4)?_0x10aa31+=String['fromCharCode'](0xff&_0x22ea0e>>(-0x2*_0xcd2e59&0x6)):0x0){_0x1106f0=_0x2d1935['indexOf'](_0x1106f0);}for(let _0x196909=0x0,_0x47dffd=_0x10aa31['length'];_0x196909<_0x47dffd;_0x196909++){_0x4029ad+='%'+('00'+_0x10aa31['charCodeAt'](_0x196909)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4029ad);};_0x5ac5['eZpIBl']=_0x53cb26,_0x5ac5['QeMlfT']={},_0x5ac5['zYhMTd']=!![];}const _0x5801a1=_0x102286[0x0],_0x4823b2=_0x7a04e0+_0x5801a1,_0x15b833=_0x5ac5['QeMlfT'][_0x4823b2];return!_0x15b833?(_0x5ac5e6=_0x5ac5['eZpIBl'](_0x5ac5e6),_0x5ac5['QeMlfT'][_0x4823b2]=_0x5ac5e6):_0x5ac5e6=_0x15b833,_0x5ac5e6;}export const vPerm={'mounted'(_0x10aa31,_0x4029ad){const _0x37b56d=_0x5ac5;apply(_0x10aa31,_0x4029ad[_0x37b56d(0x1bf)]);},'updated'(_0xcd2e59,_0x22ea0e){apply(_0xcd2e59,_0x22ea0e['value']);}};function _0x1022(){const _0xfc147a=['nJK3ode5ohbRCu9ksq','mta3mZm4nZDyqKThD04','mtaYntnNCu1rtMW','mtzeALPvzfK','zgLZCgXHEq','DMfSDwu','mJi5nZK4mufKt2X4va','nuHIywTAva','mteWmJCWnZb6z3rvCMK','nZi3ntu1mg9gAKH3ra','nde2mtiXrvHkzu1i','BM9Uzq','mtzUsejNseW','C3r5Bgu','mtC0uw9MChnz'];_0x1022=function(){return _0xfc147a;};return _0x1022();}function apply(_0x1106f0,_0x591abc){const _0x4ed3ff=_0x5ac5,_0x196909=useUserStore(),_0x47dffd=_0x196909['hasPerm'](_0x591abc);_0x1106f0[_0x4ed3ff(0x1b8)][_0x4ed3ff(0x1be)]=_0x47dffd?'':_0x4ed3ff(0x1c5);}
@@ -1,63 +1 @@
1
- import { toast } from "vue-sonner";
2
- import { request } from "../api/client";
3
- import { extname, filename, pathJoin, uploadUid } from "../lib/upload";
4
- const UPLOAD_PATH = "/admin/base/comm/upload";
5
- const SIGN_SKIP = new Set([
6
- "url",
7
- "host",
8
- "uploadUrl",
9
- "publicDomain",
10
- "previewUrl",
11
- "preview"
12
- ]);
13
- export function useUpload() {
14
- async function toUpload(file, opts = {}) {
15
- const { prefixPath = "app/base", onProgress } = opts;
16
- const fileId = uploadUid();
17
- const ext = extname(file.name);
18
- const name = `${filename(file.name)}_${fileId}${ext ? `.${ext}` : ""}`;
19
- const key = pathJoin(prefixPath, name);
20
- const sign = await request(UPLOAD_PATH, {
21
- method: "POST",
22
- body: JSON.stringify({})
23
- });
24
- const host = String(sign.host || sign.url || sign.uploadUrl || "");
25
- if (!host)
26
- throw new Error("上传地址无效");
27
- const fd = new FormData;
28
- fd.append("key", key);
29
- for (const [k, v] of Object.entries(sign)) {
30
- if (SIGN_SKIP.has(k) || v == null || fd.has(k))
31
- continue;
32
- fd.append(k, String(v));
33
- }
34
- fd.append("file", file);
35
- await xhrUpload(host, fd, onProgress);
36
- const preview = String(sign.publicDomain || sign.previewUrl || host);
37
- return { url: pathJoin(preview, key), key, fileId };
38
- }
39
- return { toUpload };
40
- }
41
- function xhrUpload(url, body, onProgress) {
42
- return new Promise((resolve, reject) => {
43
- const xhr = new XMLHttpRequest;
44
- xhr.open("POST", url);
45
- xhr.upload.onprogress = (e) => {
46
- if (!e.lengthComputable)
47
- return;
48
- onProgress?.(Math.min(100, Math.floor(e.loaded / e.total * 100)));
49
- };
50
- xhr.onload = () => {
51
- if (xhr.status < 200 || xhr.status >= 300) {
52
- const msg = xhr.responseText || `上传失败 (${xhr.status})`;
53
- toast.error(msg.slice(0, 200));
54
- reject(new Error(msg));
55
- return;
56
- }
57
- onProgress?.(100);
58
- resolve();
59
- };
60
- xhr.onerror = () => reject(new Error("上传网络错误"));
61
- xhr.send(body);
62
- });
63
- }
1
+ const _0x4543d8=_0x2daa;(function(_0x27e30b,_0x3e7de5){const _0x1558ed=_0x2daa,_0x2018e6=_0x27e30b();while(!![]){try{const _0xc24957=-parseInt(_0x1558ed(0x1f3))/0x1+parseInt(_0x1558ed(0x1e8))/0x2*(parseInt(_0x1558ed(0x1e1))/0x3)+parseInt(_0x1558ed(0x1fa))/0x4+parseInt(_0x1558ed(0x1d8))/0x5*(parseInt(_0x1558ed(0x1e3))/0x6)+parseInt(_0x1558ed(0x1f6))/0x7+parseInt(_0x1558ed(0x1e9))/0x8+-parseInt(_0x1558ed(0x1ea))/0x9*(parseInt(_0x1558ed(0x1d6))/0xa);if(_0xc24957===_0x3e7de5)break;else _0x2018e6['push'](_0x2018e6['shift']());}catch(_0x2759f7){_0x2018e6['push'](_0x2018e6['shift']());}}}(_0x4921,0xce148));function _0x4921(){const _0xf60377=['DxbSB2fK','Dg90ywW','odqWmti4mxD0BujUwa','5lIk5lYG572r57UC6zsz6k+V','B3bLBG','AgfZ','ntyWntG4nenTugTvDW','ChjLDMLLD1vYBa','zw50CMLLCW','C3rYAw5NAwz5','zMXVB3i','mtbuEu5zthu','ChjLDMLLDW','nwfhtgPREa','BgvUz3rOq29TChv0ywjSzq','5lIk5lYG5AsX6lsLicG','Ag9ZDa','BwLU','zxjYB3i','A2v5','zMLSzq','5lIk5lYG5zYW5z2a5PEG5Pwi','otLTEg5nyum','yxbWl3b1yMXPyW','ntyXntm0nKHnsvzgqG','DxbSB2fKvxjS','ue9tva','CMvZCg9UC2vuzxH0','C3rHDhvZ','mti2odzkq2XzueC','mtmWoduYohnWB3fiqq','mJqYodu1mtLjzfLIy0y','yxbWzw5K','C2vUza','B25WCM9NCMvZCW','DxjS','BMfTzq','ChvIBgLJrg9TywLU','Bg9HzgvK','C2XPy2u','mZy3otm1rvPtufvN'];_0x4921=function(){return _0xf60377;};return _0x4921();}import{toast}from'vue-sonner';import{request}from'../api/client';function _0x2daa(_0x4a2dcc,_0x5de320){_0x4a2dcc=_0x4a2dcc-0x1d2;const _0x4921ac=_0x4921();let _0x2daa20=_0x4921ac[_0x4a2dcc];if(_0x2daa['rteNBR']===undefined){var _0x3cbdc6=function(_0x2142a3){const _0x2b7897='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x30ae03='',_0x2e1f51='';for(let _0x367c4b=0x0,_0x73e798,_0x511b4f,_0x242b71=0x0;_0x511b4f=_0x2142a3['charAt'](_0x242b71++);~_0x511b4f&&(_0x73e798=_0x367c4b%0x4?_0x73e798*0x40+_0x511b4f:_0x511b4f,_0x367c4b++%0x4)?_0x30ae03+=String['fromCharCode'](0xff&_0x73e798>>(-0x2*_0x367c4b&0x6)):0x0){_0x511b4f=_0x2b7897['indexOf'](_0x511b4f);}for(let _0x1a644c=0x0,_0x56c9ea=_0x30ae03['length'];_0x1a644c<_0x56c9ea;_0x1a644c++){_0x2e1f51+='%'+('00'+_0x30ae03['charCodeAt'](_0x1a644c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2e1f51);};_0x2daa['SCPvaZ']=_0x3cbdc6,_0x2daa['HubpjQ']={},_0x2daa['rteNBR']=!![];}const _0xb547ab=_0x4921ac[0x0],_0x3c80cb=_0x4a2dcc+_0xb547ab,_0x314f9f=_0x2daa['HubpjQ'][_0x3c80cb];return!_0x314f9f?(_0x2daa20=_0x2daa['SCPvaZ'](_0x2daa20),_0x2daa['HubpjQ'][_0x3c80cb]=_0x2daa20):_0x2daa20=_0x314f9f,_0x2daa20;}import{extname,filename,pathJoin,uploadUid}from'../lib/upload';const UPLOAD_PATH='/admin/base/comm/upload',SIGN_SKIP=new Set([_0x4543d8(0x1ee),_0x4543d8(0x1db),'uploadUrl',_0x4543d8(0x1f0),_0x4543d8(0x1d2),_0x4543d8(0x1d7)]);export function useUpload(){async function _0x30ae03(_0x2e1f51,_0x367c4b={}){const _0x5e938d=_0x2daa,{prefixPath:prefixPath=_0x5e938d(0x1e2),onProgress:_0x73e798}=_0x367c4b,_0x511b4f=uploadUid(),_0x242b71=extname(_0x2e1f51[_0x5e938d(0x1ef)]),_0x1a644c=filename(_0x2e1f51[_0x5e938d(0x1ef)])+'_'+_0x511b4f+(_0x242b71?'.'+_0x242b71:''),_0x56c9ea=pathJoin(prefixPath,_0x1a644c),_0x274f59=await request(UPLOAD_PATH,{'method':_0x5e938d(0x1e5),'body':JSON[_0x5e938d(0x1d4)]({})}),_0x1b4546=String(_0x274f59['host']||_0x274f59[_0x5e938d(0x1ee)]||_0x274f59[_0x5e938d(0x1e4)]||'');if(!_0x1b4546)throw new Error(_0x5e938d(0x1e0));const _0x19c1ca=new FormData();_0x19c1ca['append'](_0x5e938d(0x1de),_0x56c9ea);for(const [_0x4b2f75,_0x1a33a4]of Object[_0x5e938d(0x1d3)](_0x274f59)){if(SIGN_SKIP[_0x5e938d(0x1f9)](_0x4b2f75)||_0x1a33a4==null||_0x19c1ca[_0x5e938d(0x1f9)](_0x4b2f75))continue;_0x19c1ca[_0x5e938d(0x1eb)](_0x4b2f75,String(_0x1a33a4));}_0x19c1ca[_0x5e938d(0x1eb)](_0x5e938d(0x1df),_0x2e1f51),await xhrUpload(_0x1b4546,_0x19c1ca,_0x73e798);const _0x29bde5=String(_0x274f59['publicDomain']||_0x274f59[_0x5e938d(0x1d2)]||_0x1b4546);return{'url':pathJoin(_0x29bde5,_0x56c9ea),'key':_0x56c9ea,'fileId':_0x511b4f};}return{'toUpload':_0x30ae03};}function xhrUpload(_0x44a8ff,_0x17c37f,_0x2a886c){return new Promise((_0x5593be,_0x2959f5)=>{const _0x448131=_0x2daa,_0x117a22=new XMLHttpRequest();_0x117a22[_0x448131(0x1f8)](_0x448131(0x1e5),_0x44a8ff),_0x117a22[_0x448131(0x1f4)][_0x448131(0x1ed)]=_0x40821a=>{const _0x5538d8=_0x448131;if(!_0x40821a[_0x5538d8(0x1d9)])return;_0x2a886c?.(Math[_0x5538d8(0x1dc)](0x64,Math[_0x5538d8(0x1d5)](_0x40821a[_0x5538d8(0x1f1)]/_0x40821a[_0x5538d8(0x1f5)]*0x64)));},_0x117a22['onload']=()=>{const _0x9e0cd5=_0x448131;if(_0x117a22[_0x9e0cd5(0x1e7)]<0xc8||_0x117a22[_0x9e0cd5(0x1e7)]>=0x12c){const _0x76abb=_0x117a22[_0x9e0cd5(0x1e6)]||_0x9e0cd5(0x1da)+_0x117a22[_0x9e0cd5(0x1e7)]+')';toast[_0x9e0cd5(0x1dd)](_0x76abb[_0x9e0cd5(0x1f2)](0x0,0xc8)),_0x2959f5(new Error(_0x76abb));return;}_0x2a886c?.(0x64),_0x5593be();},_0x117a22['onerror']=()=>_0x2959f5(new Error(_0x448131(0x1f7))),_0x117a22[_0x448131(0x1ec)](_0x17c37f);});}
@@ -1,24 +1 @@
1
- export function getBrowser() {
2
- const { clientHeight: height, clientWidth: width } = document.documentElement;
3
- const ua = navigator.userAgent.toLowerCase();
4
- let type = (ua.match(/firefox|chrome|safari|opera/g) || ["other"])[0];
5
- if ((ua.match(/msie|trident/g) || [])[0])
6
- type = "msie";
7
- let screen = "full";
8
- if (width < 768)
9
- screen = "xs";
10
- else if (width < 992)
11
- screen = "sm";
12
- else if (width < 1200)
13
- screen = "md";
14
- else if (width < 1920)
15
- screen = "xl";
16
- const isPC = !/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(ua);
17
- return {
18
- height,
19
- width,
20
- type,
21
- screen,
22
- isMini: screen === "xs" || !isPC
23
- };
24
- }
1
+ (function(_0x5b41f2,_0x46e185){const _0x5b61d0=_0x1f55,_0x3de787=_0x5b41f2();while(!![]){try{const _0xd9e75a=-parseInt(_0x5b61d0(0xa3))/0x1*(parseInt(_0x5b61d0(0xaf))/0x2)+-parseInt(_0x5b61d0(0xaa))/0x3*(-parseInt(_0x5b61d0(0xab))/0x4)+parseInt(_0x5b61d0(0xad))/0x5+parseInt(_0x5b61d0(0xa9))/0x6+-parseInt(_0x5b61d0(0xb0))/0x7*(-parseInt(_0x5b61d0(0xae))/0x8)+parseInt(_0x5b61d0(0xa4))/0x9*(parseInt(_0x5b61d0(0xa0))/0xa)+-parseInt(_0x5b61d0(0xa5))/0xb;if(_0xd9e75a===_0x46e185)break;else _0x3de787['push'](_0x3de787['shift']());}catch(_0x3e48cb){_0x3de787['push'](_0x3de787['shift']());}}}(_0xa309,0x8caff));function _0xa309(){const _0xa4de82=['mLv3tNvXDW','mte0ode4mLbyzhzqEq','B3rOzxi','mJCXmZbUzefMEgi','zNvSBa','BxnPzq','mtaZmdG3m2DwAhnzzW','mZyWow5zve9dCW','mJG0nJy4mdfRuMTvDw4','DgvZDa','zg9JDw1LBNrfBgvTzw50','Bwf0y2G','mtGXnZC3mLzMvKLMvW','mZa2odyXm3DXDhfouq','ng5qs2T2Aa','Dg9mB3DLCKnHC2u','ndGWntCXnxnmBhzQvG','ndbjrvDSuvq'];_0xa309=function(){return _0xa4de82;};return _0xa309();}function _0x1f55(_0xc2a789,_0x48ff68){_0xc2a789=_0xc2a789-0xa0;const _0xa30933=_0xa309();let _0x1f55b1=_0xa30933[_0xc2a789];if(_0x1f55['UBLHaW']===undefined){var _0x392d78=function(_0x56fea2){const _0xc77e8c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x32cbe9='',_0x49496c='';for(let _0x51e3ed=0x0,_0x1ea9f3,_0x3048da,_0xa7a77c=0x0;_0x3048da=_0x56fea2['charAt'](_0xa7a77c++);~_0x3048da&&(_0x1ea9f3=_0x51e3ed%0x4?_0x1ea9f3*0x40+_0x3048da:_0x3048da,_0x51e3ed++%0x4)?_0x32cbe9+=String['fromCharCode'](0xff&_0x1ea9f3>>(-0x2*_0x51e3ed&0x6)):0x0){_0x3048da=_0xc77e8c['indexOf'](_0x3048da);}for(let _0x327867=0x0,_0x50aa9e=_0x32cbe9['length'];_0x327867<_0x50aa9e;_0x327867++){_0x49496c+='%'+('00'+_0x32cbe9['charCodeAt'](_0x327867)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x49496c);};_0x1f55['kmYplL']=_0x392d78,_0x1f55['eBGuOZ']={},_0x1f55['UBLHaW']=!![];}const _0x49f9a0=_0xa30933[0x0],_0x2bf17d=_0xc2a789+_0x49f9a0,_0x3b143b=_0x1f55['eBGuOZ'][_0x2bf17d];return!_0x3b143b?(_0x1f55b1=_0x1f55['kmYplL'](_0x1f55b1),_0x1f55['eBGuOZ'][_0x2bf17d]=_0x1f55b1):_0x1f55b1=_0x3b143b,_0x1f55b1;}export function getBrowser(){const _0x4559b5=_0x1f55,{clientHeight:_0x32cbe9,clientWidth:_0x49496c}=document[_0x4559b5(0xa7)],_0x51e3ed=navigator['userAgent'][_0x4559b5(0xac)]();let _0x1ea9f3=(_0x51e3ed[_0x4559b5(0xa8)](/firefox|chrome|safari|opera/g)||[_0x4559b5(0xb1)])[0x0];if((_0x51e3ed[_0x4559b5(0xa8)](/msie|trident/g)||[])[0x0])_0x1ea9f3=_0x4559b5(0xa2);let _0x3048da=_0x4559b5(0xa1);if(_0x49496c<0x300)_0x3048da='xs';else{if(_0x49496c<0x3e0)_0x3048da='sm';else{if(_0x49496c<0x4b0)_0x3048da='md';else{if(_0x49496c<0x780)_0x3048da='xl';}}}const _0xa7a77c=!/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i[_0x4559b5(0xa6)](_0x51e3ed);return{'height':_0x32cbe9,'width':_0x49496c,'type':_0x1ea9f3,'screen':_0x3048da,'isMini':_0x3048da==='xs'||!_0xa7a77c};}
@@ -1,5 +1 @@
1
- import { clsx } from "clsx";
2
- import { twMerge } from "tailwind-merge";
3
- export function cn(...inputs) {
4
- return twMerge(clsx(inputs));
5
- }
1
+ function _0x5516(_0x277aa6,_0x18553f){_0x277aa6=_0x277aa6-0x167;var _0x5caadc=_0x5caa();var _0x551698=_0x5caadc[_0x277aa6];if(_0x5516['tcVFje']===undefined){var _0x5ed9b6=function(_0x217e1d){var _0x3ec306='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x17768f='',_0x4b4c65='';for(var _0x3629b3=0x0,_0x3e953a,_0x17293e,_0x3d641d=0x0;_0x17293e=_0x217e1d['charAt'](_0x3d641d++);~_0x17293e&&(_0x3e953a=_0x3629b3%0x4?_0x3e953a*0x40+_0x17293e:_0x17293e,_0x3629b3++%0x4)?_0x17768f+=String['fromCharCode'](0xff&_0x3e953a>>(-0x2*_0x3629b3&0x6)):0x0){_0x17293e=_0x3ec306['indexOf'](_0x17293e);}for(var _0x39651c=0x0,_0x4aa372=_0x17768f['length'];_0x39651c<_0x4aa372;_0x39651c++){_0x4b4c65+='%'+('00'+_0x17768f['charCodeAt'](_0x39651c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4b4c65);};_0x5516['TTNmYU']=_0x5ed9b6,_0x5516['PuNgwk']={},_0x5516['tcVFje']=!![];}var _0x4e75f9=_0x5caadc[0x0],_0x1bb644=_0x277aa6+_0x4e75f9,_0x35bdce=_0x5516['PuNgwk'][_0x1bb644];return!_0x35bdce?(_0x551698=_0x5516['TTNmYU'](_0x551698),_0x5516['PuNgwk'][_0x1bb644]=_0x551698):_0x551698=_0x35bdce,_0x551698;}(function(_0x2ac20d,_0x56d5f4){var _0x5885c4=_0x5516,_0x19d096=_0x2ac20d();while(!![]){try{var _0x2c31cd=parseInt(_0x5885c4(0x16e))/0x1+parseInt(_0x5885c4(0x16d))/0x2+-parseInt(_0x5885c4(0x171))/0x3*(parseInt(_0x5885c4(0x167))/0x4)+parseInt(_0x5885c4(0x168))/0x5+-parseInt(_0x5885c4(0x16c))/0x6*(-parseInt(_0x5885c4(0x170))/0x7)+-parseInt(_0x5885c4(0x16a))/0x8*(-parseInt(_0x5885c4(0x16f))/0x9)+parseInt(_0x5885c4(0x16b))/0xa*(-parseInt(_0x5885c4(0x169))/0xb);if(_0x2c31cd===_0x56d5f4)break;else _0x19d096['push'](_0x19d096['shift']());}catch(_0x57a573){_0x19d096['push'](_0x19d096['shift']());}}}(_0x5caa,0xc5e5a));import{clsx}from'clsx';import{twMerge}from'tailwind-merge';function _0x5caa(){var _0x252a54=['mJiWmtqYCKzYrKXV','mte3ode2m1DfsM1KBG','mtm1odK4whHxwvnR','mti2mZzLugzvAxO','nZKYDMPID1zT','mJmYotu3mezbtgHMBq','odCZnZuYC1f3D2XO','ntzuDLrcCxm','mtaWyvzyBuPK','mtaYDw9qA25Z','mtaXmJG3ohP4t0POsG'];_0x5caa=function(){return _0x252a54;};return _0x5caa();}export function cn(..._0x17768f){return twMerge(clsx(_0x17768f));}
@@ -1,13 +1 @@
1
- export const DIALOG_FLOAT_CLASS = "vm-dialog-float";
2
- export function isDialogFloatTarget(event) {
3
- const detail = event.detail;
4
- const t = detail?.originalEvent?.target ?? event.target;
5
- if (!t)
6
- return false;
7
- const el = t instanceof Element ? t : t.parentElement;
8
- return Boolean(el?.closest(`.${DIALOG_FLOAT_CLASS}`));
9
- }
10
- export function preventDialogOutsideClose(event) {
11
- if (isDialogFloatTarget(event))
12
- event.preventDefault();
13
- }
1
+ const _0x1e7ea3=_0x2232;(function(_0x2673b2,_0x4a4534){const _0x337253=_0x2232,_0x2cb715=_0x2673b2();while(!![]){try{const _0x29951b=parseInt(_0x337253(0x124))/0x1+parseInt(_0x337253(0x128))/0x2+-parseInt(_0x337253(0x126))/0x3*(parseInt(_0x337253(0x12a))/0x4)+-parseInt(_0x337253(0x130))/0x5+-parseInt(_0x337253(0x127))/0x6*(parseInt(_0x337253(0x12d))/0x7)+parseInt(_0x337253(0x12b))/0x8*(parseInt(_0x337253(0x131))/0x9)+parseInt(_0x337253(0x129))/0xa*(parseInt(_0x337253(0x125))/0xb);if(_0x29951b===_0x4a4534)break;else _0x2cb715['push'](_0x2cb715['shift']());}catch(_0x44e969){_0x2cb715['push'](_0x2cb715['shift']());}}}(_0x1d82,0xd8b7b));function _0x2232(_0x156cf3,_0x5c277e){_0x156cf3=_0x156cf3-0x123;const _0x1d8207=_0x1d82();let _0x22324c=_0x1d8207[_0x156cf3];if(_0x2232['YWvTqU']===undefined){var _0x4968ba=function(_0x4d3409){const _0x39a163='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x26a5d3='',_0x156218='';for(let _0x1039eb=0x0,_0x1e22ea,_0x5bd5b9,_0x53775b=0x0;_0x5bd5b9=_0x4d3409['charAt'](_0x53775b++);~_0x5bd5b9&&(_0x1e22ea=_0x1039eb%0x4?_0x1e22ea*0x40+_0x5bd5b9:_0x5bd5b9,_0x1039eb++%0x4)?_0x26a5d3+=String['fromCharCode'](0xff&_0x1e22ea>>(-0x2*_0x1039eb&0x6)):0x0){_0x5bd5b9=_0x39a163['indexOf'](_0x5bd5b9);}for(let _0x3ed833=0x0,_0x36d36a=_0x26a5d3['length'];_0x3ed833<_0x36d36a;_0x3ed833++){_0x156218+='%'+('00'+_0x26a5d3['charCodeAt'](_0x3ed833)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x156218);};_0x2232['QCZPqF']=_0x4968ba,_0x2232['eSkRaY']={},_0x2232['YWvTqU']=!![];}const _0x523804=_0x1d8207[0x0],_0x598001=_0x156cf3+_0x523804,_0x358c79=_0x2232['eSkRaY'][_0x598001];return!_0x358c79?(_0x22324c=_0x2232['QCZPqF'](_0x22324c),_0x2232['eSkRaY'][_0x598001]=_0x22324c):_0x22324c=_0x358c79,_0x22324c;}export const DIALOG_FLOAT_CLASS=_0x1e7ea3(0x12e);function _0x1d82(){const _0x2a7c0f=['nJa4odqXmfHRzxbOtG','DgfYz2v0','B3jPz2LUywXfDMvUDa','nty0mZqZwgr3uNnX','mtfiwfHuwgm','nZq2nZq1rfbMt3D6','mZbkrLfSCvy','ntmXnti2qvnJuMjj','mJaZotqZmJbdvxP4uwO','mtzwDxrAB1C','mtz4y1LXs3y','ChjLDMvUDerLzMf1Bhq','mJaZntmZnevbuuP6sW','DM0TzgLHBg9NlwzSB2f0','CgfYzw50rwXLBwvUDa','ndqYnJG2nuXYuKLvzG'];_0x1d82=function(){return _0x2a7c0f;};return _0x1d82();}export function isDialogFloatTarget(_0x26a5d3){const _0x4ae291=_0x1e7ea3,_0x156218=_0x26a5d3['detail'],_0x1039eb=_0x156218?.[_0x4ae291(0x123)]?.[_0x4ae291(0x132)]??_0x26a5d3[_0x4ae291(0x132)];if(!_0x1039eb)return![];const _0x1e22ea=_0x1039eb instanceof Element?_0x1039eb:_0x1039eb[_0x4ae291(0x12f)];return Boolean(_0x1e22ea?.['closest']('.'+DIALOG_FLOAT_CLASS));}export function preventDialogOutsideClose(_0x5bd5b9){const _0x4b2005=_0x1e7ea3;if(isDialogFloatTarget(_0x5bd5b9))_0x5bd5b9[_0x4b2005(0x12c)]();}
@@ -1,64 +1 @@
1
- import { toValue } from "vue";
2
- import {
3
- buildExcelBuffer,
4
- excelFilename
5
- } from "../../shared/excel";
6
- import { flattenTree } from "./tree";
7
- export {
8
- buildExcelBuffer,
9
- excelFilename,
10
- excelResponseHeaders
11
- } from "../../shared/excel";
12
- export function pickExportColumns(columns) {
13
- return columns.filter((c) => Boolean(c.prop) && c.type !== "selection" && c.type !== "op" && c.type !== "expand" && c.type !== "index" && !c.hidden);
14
- }
15
- function formatExportCell(col, row) {
16
- if (!col.prop)
17
- return "";
18
- const val = row[col.prop];
19
- if (col.formatter)
20
- return col.formatter(row, val);
21
- const dict = col.dict == null ? [] : toValue(col.dict);
22
- if (Array.isArray(dict) && dict.length && val != null && val !== "") {
23
- const hit = dict.find((d) => d.value === val || String(d.value) === String(val));
24
- if (hit)
25
- return hit.label;
26
- }
27
- if (val == null)
28
- return "";
29
- return String(val);
30
- }
31
- export function flattenExportRows(rows, tree) {
32
- if (!tree)
33
- return rows;
34
- const nested = rows.some((r) => Array.isArray(r.children) && r.children.length);
35
- if (!nested)
36
- return rows;
37
- return flattenTree(rows);
38
- }
39
- export function crudColumnsToExcel(columns) {
40
- return pickExportColumns(columns).map((c) => ({
41
- prop: c.prop,
42
- label: c.label || c.prop
43
- }));
44
- }
45
- export function downloadExcelBuffer(buffer, filename) {
46
- const blob = new Blob([buffer], {
47
- type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
48
- });
49
- const url = URL.createObjectURL(blob);
50
- const link = document.createElement("a");
51
- link.href = url;
52
- link.download = excelFilename(filename);
53
- link.click();
54
- URL.revokeObjectURL(url);
55
- }
56
- export function exportCrudExcel(columns, rows, filename) {
57
- const exportCols = pickExportColumns(columns);
58
- const excelCols = crudColumnsToExcel(exportCols);
59
- const buffer = buildExcelBuffer(excelCols, rows, (prop, row) => {
60
- const col = exportCols.find((c) => c.prop === prop);
61
- return col ? formatExportCell(col, row) : String(row[prop] ?? "");
62
- });
63
- downloadExcelBuffer(buffer, filename);
64
- }
1
+ (function(_0x139777,_0x13ffa4){const _0x384c5f=_0x268e,_0x1e30d7=_0x139777();while(!![]){try{const _0x3c36d1=parseInt(_0x384c5f(0x1c2))/0x1*(-parseInt(_0x384c5f(0x1c8))/0x2)+parseInt(_0x384c5f(0x1c5))/0x3*(-parseInt(_0x384c5f(0x1ce))/0x4)+parseInt(_0x384c5f(0x1c1))/0x5*(-parseInt(_0x384c5f(0x1c9))/0x6)+parseInt(_0x384c5f(0x1d8))/0x7+parseInt(_0x384c5f(0x1c0))/0x8+parseInt(_0x384c5f(0x1c3))/0x9*(-parseInt(_0x384c5f(0x1d9))/0xa)+parseInt(_0x384c5f(0x1d7))/0xb;if(_0x3c36d1===_0x13ffa4)break;else _0x1e30d7['push'](_0x1e30d7['shift']());}catch(_0x3428b8){_0x1e30d7['push'](_0x1e30d7['shift']());}}}(_0x3921,0xe556a));import{toValue}from'vue';import{buildExcelBuffer,excelFilename}from'../../shared/excel';import{flattenTree}from'./tree';function _0x268e(_0x4e925b,_0xc19984){_0x4e925b=_0x4e925b-0x1c0;const _0x3921e2=_0x3921();let _0x268ecc=_0x3921e2[_0x4e925b];if(_0x268e['qLkhUh']===undefined){var _0x256fc6=function(_0x2156a2){const _0x33c7c0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x481886='',_0x39fd60='';for(let _0x125c2d=0x0,_0x5d1447,_0x3099c4,_0x1544f0=0x0;_0x3099c4=_0x2156a2['charAt'](_0x1544f0++);~_0x3099c4&&(_0x5d1447=_0x125c2d%0x4?_0x5d1447*0x40+_0x3099c4:_0x3099c4,_0x125c2d++%0x4)?_0x481886+=String['fromCharCode'](0xff&_0x5d1447>>(-0x2*_0x125c2d&0x6)):0x0){_0x3099c4=_0x33c7c0['indexOf'](_0x3099c4);}for(let _0x391c1d=0x0,_0x27701c=_0x481886['length'];_0x391c1d<_0x27701c;_0x391c1d++){_0x39fd60+='%'+('00'+_0x481886['charCodeAt'](_0x391c1d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x39fd60);};_0x268e['pFzNmS']=_0x256fc6,_0x268e['xRsCBe']={},_0x268e['qLkhUh']=!![];}const _0x2360c1=_0x3921e2[0x0],_0x584097=_0x4e925b+_0x2360c1,_0x3190da=_0x268e['xRsCBe'][_0x584097];return!_0x3190da?(_0x268ecc=_0x268e['pFzNmS'](_0x268ecc),_0x268e['xRsCBe'][_0x584097]=_0x268ecc):_0x268ecc=_0x3190da,_0x268ecc;}export{buildExcelBuffer,excelFilename,excelResponseHeaders}from'../../shared/excel';export function pickExportColumns(_0x481886){const _0x271198=_0x268e;return _0x481886[_0x271198(0x1ca)](_0x39fd60=>Boolean(_0x39fd60['prop'])&&_0x39fd60[_0x271198(0x1c7)]!==_0x271198(0x1cd)&&_0x39fd60['type']!=='op'&&_0x39fd60[_0x271198(0x1c7)]!=='expand'&&_0x39fd60[_0x271198(0x1c7)]!==_0x271198(0x1d0)&&!_0x39fd60[_0x271198(0x1d1)]);}function formatExportCell(_0x125c2d,_0x5d1447){const _0x7c9204=_0x268e;if(!_0x125c2d[_0x7c9204(0x1d4)])return'';const _0x3099c4=_0x5d1447[_0x125c2d[_0x7c9204(0x1d4)]];if(_0x125c2d[_0x7c9204(0x1dd)])return _0x125c2d['formatter'](_0x5d1447,_0x3099c4);const _0x1544f0=_0x125c2d[_0x7c9204(0x1d2)]==null?[]:toValue(_0x125c2d[_0x7c9204(0x1d2)]);if(Array['isArray'](_0x1544f0)&&_0x1544f0[_0x7c9204(0x1db)]&&_0x3099c4!=null&&_0x3099c4!==''){const _0x391c1d=_0x1544f0[_0x7c9204(0x1d3)](_0x27701c=>_0x27701c['value']===_0x3099c4||String(_0x27701c['value'])===String(_0x3099c4));if(_0x391c1d)return _0x391c1d[_0x7c9204(0x1c4)];}if(_0x3099c4==null)return'';return String(_0x3099c4);}export function flattenExportRows(_0x4e83ca,_0x4e3339){const _0x12dead=_0x268e;if(!_0x4e3339)return _0x4e83ca;const _0x40f1dd=_0x4e83ca[_0x12dead(0x1cb)](_0x3ded0a=>Array[_0x12dead(0x1de)](_0x3ded0a[_0x12dead(0x1cc)])&&_0x3ded0a[_0x12dead(0x1cc)]['length']);if(!_0x40f1dd)return _0x4e83ca;return flattenTree(_0x4e83ca);}export function crudColumnsToExcel(_0x240d92){const _0x106bf4=_0x268e;return pickExportColumns(_0x240d92)['map'](_0x2ad3af=>({'prop':_0x2ad3af[_0x106bf4(0x1d4)],'label':_0x2ad3af[_0x106bf4(0x1c4)]||_0x2ad3af[_0x106bf4(0x1d4)]}));}export function downloadExcelBuffer(_0x31be36,_0xfa05a3){const _0x42bf9c=_0x268e,_0x3abf24=new Blob([_0x31be36],{'type':_0x42bf9c(0x1d5)}),_0x4f1573=URL[_0x42bf9c(0x1c6)](_0x3abf24),_0x525e49=document[_0x42bf9c(0x1cf)]('a');_0x525e49[_0x42bf9c(0x1d6)]=_0x4f1573,_0x525e49[_0x42bf9c(0x1dc)]=excelFilename(_0xfa05a3),_0x525e49[_0x42bf9c(0x1da)](),URL['revokeObjectURL'](_0x4f1573);}function _0x3921(){const _0x285843=['zg93BMXVywq','zM9YBwf0DgvY','AxnbCNjHEq','ntaZnJe2u3H4y0TL','mZm1C3fPCNzs','nJi5nty3uMD4u0rc','mJyXvgjvrwTk','BgfIzwW','oujMuKz0vq','y3jLyxrLt2jQzwn0vvjm','DhLWzq','nhbfwNfjqq','mta4mti2qwHHEvbt','zMLSDgvY','C29Tzq','y2HPBgrYzw4','C2vSzwn0Aw9U','ndqWota4BKzhvvLX','y3jLyxrLrwXLBwvUDa','Aw5KzxG','AgLKzgvU','zgLJDa','zMLUza','ChjVCa','yxbWBgLJyxrPB24VDM5KlM9Wzw54BwXMB3jTyxrZlw9MzMLJzwrVy3vTzw50lNnWCMvHzhnOzwv0BwWUC2HLzxq','AhjLzG','mZKZmJq2odf5z1HzC3q','mti0nZK1mdjbwfDgBe0','ntGWnZmWCxbfB1n2','y2XPy2S','BgvUz3rO'];_0x3921=function(){return _0x285843;};return _0x3921();}export function exportCrudExcel(_0x1130df,_0x58a9b7,_0x2d4d60){const _0x7a8370=pickExportColumns(_0x1130df),_0x1d9444=crudColumnsToExcel(_0x7a8370),_0x2e4100=buildExcelBuffer(_0x1d9444,_0x58a9b7,(_0x35c914,_0x1bce93)=>{const _0x50acc2=_0x268e,_0x35a642=_0x7a8370[_0x50acc2(0x1d3)](_0x26ec6c=>_0x26ec6c[_0x50acc2(0x1d4)]===_0x35c914);return _0x35a642?formatExportCell(_0x35a642,_0x1bce93):String(_0x1bce93[_0x35c914]??'');});downloadExcelBuffer(_0x2e4100,_0x2d4d60);}
@@ -1,74 +1 @@
1
- import { extname, fileRule } from "./upload";
2
- const TEXT_EXTS = new Set([
3
- "txt",
4
- "md",
5
- "markdown",
6
- "json",
7
- "log",
8
- "csv",
9
- "xml",
10
- "html",
11
- "htm",
12
- "css",
13
- "js",
14
- "ts",
15
- "jsx",
16
- "tsx",
17
- "vue",
18
- "yaml",
19
- "yml",
20
- "ini",
21
- "conf",
22
- "sql"
23
- ]);
24
- export function getMediaPreviewKind(path = "") {
25
- const rule = fileRule(path);
26
- if (rule.type === "image")
27
- return "image";
28
- if (rule.type === "video")
29
- return "video";
30
- if (rule.type === "audio")
31
- return "audio";
32
- return getFilePreviewKind(path);
33
- }
34
- export function getFilePreviewKind(path = "") {
35
- const rule = fileRule(path);
36
- if (rule.type === "pdf")
37
- return "pdf";
38
- if (rule.type === "excel")
39
- return "excel";
40
- const ext = extname(path);
41
- if (TEXT_EXTS.has(ext))
42
- return "text";
43
- if (rule.type === "word" || rule.type === "ppt")
44
- return "office";
45
- return "unsupported";
46
- }
47
- export function fileDisplayName(path = "", fallback = "文件") {
48
- const base = String(path).split("?")[0]?.split("/").pop() || "";
49
- return base || fallback;
50
- }
51
- export async function fetchFileText(url) {
52
- const res = await fetch(url, { credentials: "include" });
53
- if (!res.ok)
54
- throw new Error(`加载失败 (${res.status})`);
55
- return res.text();
56
- }
57
- export async function fetchFileArrayBuffer(url) {
58
- const res = await fetch(url, { credentials: "include" });
59
- if (!res.ok)
60
- throw new Error(`加载失败 (${res.status})`);
61
- return res.arrayBuffer();
62
- }
63
- export async function loadExcelPreviewHtml(url) {
64
- const XLSX = await import("xlsx");
65
- const buf = await fetchFileArrayBuffer(url);
66
- const wb = XLSX.read(buf, { type: "array" });
67
- const name = wb.SheetNames[0];
68
- if (!name)
69
- return "<p>空工作簿</p>";
70
- const sheet = wb.Sheets[name];
71
- if (!sheet)
72
- return "<p>空工作表</p>";
73
- return XLSX.utils.sheet_to_html(sheet, { id: "vm-file-preview-sheet", editable: false });
74
- }
1
+ function _0x4a97(_0x3ae3d4,_0x29b291){_0x3ae3d4=_0x3ae3d4-0x9c;const _0x41c7b4=_0x41c7();let _0x4a9782=_0x41c7b4[_0x3ae3d4];if(_0x4a97['BXYiFC']===undefined){var _0x296aa2=function(_0x37e575){const _0x4439cd='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5930e7='',_0x58c93a='';for(let _0x1c8552=0x0,_0x146132,_0x29dee2,_0x380b9f=0x0;_0x29dee2=_0x37e575['charAt'](_0x380b9f++);~_0x29dee2&&(_0x146132=_0x1c8552%0x4?_0x146132*0x40+_0x29dee2:_0x29dee2,_0x1c8552++%0x4)?_0x5930e7+=String['fromCharCode'](0xff&_0x146132>>(-0x2*_0x1c8552&0x6)):0x0){_0x29dee2=_0x4439cd['indexOf'](_0x29dee2);}for(let _0x22204d=0x0,_0x742acb=_0x5930e7['length'];_0x22204d<_0x742acb;_0x22204d++){_0x58c93a+='%'+('00'+_0x5930e7['charCodeAt'](_0x22204d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x58c93a);};_0x4a97['WKJrqW']=_0x296aa2,_0x4a97['FPOHYn']={},_0x4a97['BXYiFC']=!![];}const _0x1efcc5=_0x41c7b4[0x0],_0x3902b4=_0x3ae3d4+_0x1efcc5,_0x184fd2=_0x4a97['FPOHYn'][_0x3902b4];return!_0x184fd2?(_0x4a9782=_0x4a97['WKJrqW'](_0x4a9782),_0x4a97['FPOHYn'][_0x3902b4]=_0x4a9782):_0x4a9782=_0x184fd2,_0x4a9782;}const _0x17dab0=_0x4a97;(function(_0x2c4069,_0x2fc483){const _0x4c5e1b=_0x4a97,_0x532501=_0x2c4069();while(!![]){try{const _0x2fa39b=parseInt(_0x4c5e1b(0xc8))/0x1*(parseInt(_0x4c5e1b(0xc2))/0x2)+-parseInt(_0x4c5e1b(0x9e))/0x3+-parseInt(_0x4c5e1b(0xba))/0x4+parseInt(_0x4c5e1b(0xa7))/0x5+-parseInt(_0x4c5e1b(0xbb))/0x6+parseInt(_0x4c5e1b(0xc7))/0x7+parseInt(_0x4c5e1b(0xb7))/0x8;if(_0x2fa39b===_0x2fc483)break;else _0x532501['push'](_0x532501['shift']());}catch(_0x5277fb){_0x532501['push'](_0x532501['shift']());}}}(_0x41c7,0xac3d1));import{extname,fileRule}from'./upload';const TEXT_EXTS=new Set([_0x17dab0(0xc5),'md',_0x17dab0(0x9c),'json',_0x17dab0(0xc6),_0x17dab0(0xb1),_0x17dab0(0xb0),_0x17dab0(0xa1),_0x17dab0(0xaf),_0x17dab0(0xbd),'js','ts',_0x17dab0(0xb2),_0x17dab0(0xa6),_0x17dab0(0xa9),_0x17dab0(0xab),'yml','ini',_0x17dab0(0xb9),_0x17dab0(0xbc)]);export function getMediaPreviewKind(_0x5930e7=''){const _0x2f511c=_0x17dab0,_0x58c93a=fileRule(_0x5930e7);if(_0x58c93a[_0x2f511c(0xb4)]===_0x2f511c(0x9f))return _0x2f511c(0x9f);if(_0x58c93a[_0x2f511c(0xb4)]===_0x2f511c(0xaa))return _0x2f511c(0xaa);if(_0x58c93a[_0x2f511c(0xb4)]===_0x2f511c(0xae))return _0x2f511c(0xae);return getFilePreviewKind(_0x5930e7);}export function getFilePreviewKind(_0x1c8552=''){const _0x8a5130=_0x17dab0,_0x146132=fileRule(_0x1c8552);if(_0x146132['type']===_0x8a5130(0xac))return'pdf';if(_0x146132[_0x8a5130(0xb4)]==='excel')return _0x8a5130(0xbe);const _0x29dee2=extname(_0x1c8552);if(TEXT_EXTS[_0x8a5130(0xb6)](_0x29dee2))return _0x8a5130(0xc4);if(_0x146132[_0x8a5130(0xb4)]==='word'||_0x146132['type']==='ppt')return _0x8a5130(0xbf);return'unsupported';}export function fileDisplayName(_0x380b9f='',_0x22204d='文件'){const _0x2d6466=_0x17dab0,_0x742acb=String(_0x380b9f)[_0x2d6466(0xb8)]('?')[0x0]?.[_0x2d6466(0xb8)]('/')[_0x2d6466(0xad)]()||'';return _0x742acb||_0x22204d;}export async function fetchFileText(_0x413bfa){const _0x41ece8=_0x17dab0,_0x1831a4=await fetch(_0x413bfa,{'credentials':_0x41ece8(0xa0)});if(!_0x1831a4['ok'])throw new Error(_0x41ece8(0xc3)+_0x1831a4['status']+')');return _0x1831a4[_0x41ece8(0xc4)]();}function _0x41c7(){const _0x33f1d0=['Bg9N','mZiWnZq3n1rwEgTSrq','ndu3nwzJuevttW','BwfYA2rVD24','u2HLzxroyw1LCW','nZuZmtGWuwDtDvvi','Aw1Hz2u','Aw5JBhvKzq','AhrTBa','DM0TzMLSzs1WCMv2Awv3lxnOzwv0','yxjYyxK','pha+56M65BEL5l2C57c/pc9WpG','C2HLzxrFDg9FAhrTBa','Dhn4','mZe2ode0mhrLyKj1sq','EgXZEa','DNvL','DMLKzw8','EwfTBa','CgrM','Cg9W','yxvKAw8','AhrT','Eg1S','y3n2','ANn4','u2HLzxrZ','DhLWzq','DxrPBhm','AgfZ','nduXoti4t1rzrwH6','C3bSAxq','y29UzG','nJuYnJeYqvHpywv4','nZiYnJqXofHPu1rYza','C3fS','y3nZ','zxHJzwW','B2zMAwnL','CMvHza','pha+56M65BEL5l2C6kgOpc9WpG','nte0yw5PEgn3','5yQG6l295AsX6lsLicG','Dgv4Da','DhH0'];_0x41c7=function(){return _0x33f1d0;};return _0x41c7();}export async function fetchFileArrayBuffer(_0x136d2c){const _0x139992=_0x17dab0,_0xd425cf=await fetch(_0x136d2c,{'credentials':_0x139992(0xa0)});if(!_0xd425cf['ok'])throw new Error('加载失败\x20('+_0xd425cf['status']+')');return _0xd425cf['arrayBuffer']();}export async function loadExcelPreviewHtml(_0xee0b0c){const _0x27f559=_0x17dab0,_0x3f6e78=await import(_0x27f559(0xa8)),_0xb9375d=await fetchFileArrayBuffer(_0xee0b0c),_0x1146ad=_0x3f6e78[_0x27f559(0xc0)](_0xb9375d,{'type':_0x27f559(0xa3)}),_0xd54819=_0x1146ad[_0x27f559(0x9d)][0x0];if(!_0xd54819)return _0x27f559(0xa4);const _0x2d87f8=_0x1146ad[_0x27f559(0xb3)][_0xd54819];if(!_0x2d87f8)return _0x27f559(0xc1);return _0x3f6e78[_0x27f559(0xb5)][_0x27f559(0xa5)](_0x2d87f8,{'id':_0x27f559(0xa2),'editable':![]});}
@@ -1,61 +1 @@
1
- import { apiUrl, getAccessToken } from "../api/client";
2
- import { downloadExcelBuffer } from "./export-excel";
3
- import { parseExcelBuffer } from "../../shared/excel";
4
- function authHeaders(extra) {
5
- const headers = new Headers(extra);
6
- const token = getAccessToken();
7
- if (token)
8
- headers.set("authorization", `Bearer ${token}`);
9
- return headers;
10
- }
11
- function resolveNamespace(ns) {
12
- if (!ns)
13
- return "";
14
- return ns.startsWith("/") ? ns : `/${ns}`;
15
- }
16
- function headersFromRows(rows) {
17
- const ordered = [];
18
- const seen = new Set;
19
- for (const row of rows) {
20
- for (const key of Object.keys(row)) {
21
- if (seen.has(key))
22
- continue;
23
- seen.add(key);
24
- ordered.push(key);
25
- }
26
- }
27
- return ordered;
28
- }
29
- export async function parseImportExcelPreview(file) {
30
- const buf = new Uint8Array(await file.arrayBuffer());
31
- const rows = parseExcelBuffer(buf);
32
- return { headers: headersFromRows(rows), rows };
33
- }
34
- export async function downloadImportTemplate(namespace, filename = "导入模板") {
35
- const url = apiUrl(`${resolveNamespace(namespace)}/importTemplate`);
36
- const res = await fetch(url, { headers: authHeaders() });
37
- if (!res.ok) {
38
- const text = await res.text();
39
- throw new Error(text || `下载模板失败 (${res.status})`);
40
- }
41
- const buf = new Uint8Array(await res.arrayBuffer());
42
- downloadExcelBuffer(buf, filename);
43
- }
44
- export async function uploadImportExcel(namespace, file) {
45
- const url = apiUrl(`${resolveNamespace(namespace)}/import`);
46
- const fd = new FormData;
47
- fd.append("file", file);
48
- const res = await fetch(url, {
49
- method: "POST",
50
- headers: authHeaders(),
51
- body: fd
52
- });
53
- const raw = await res.text();
54
- let json = null;
55
- try {
56
- json = raw ? JSON.parse(raw) : null;
57
- } catch {}
58
- if (json?.code === 1000 && json.data)
59
- return json.data;
60
- throw new Error(json?.message || raw || `导入失败 (${res.status})`);
61
- }
1
+ const _0x47f13d=_0x55a3;(function(_0x2bd181,_0x583e80){const _0x34d69a=_0x55a3,_0x29b450=_0x2bd181();while(!![]){try{const _0x3a5a87=parseInt(_0x34d69a(0x12c))/0x1+parseInt(_0x34d69a(0x138))/0x2*(-parseInt(_0x34d69a(0x12d))/0x3)+-parseInt(_0x34d69a(0x13a))/0x4*(-parseInt(_0x34d69a(0x127))/0x5)+-parseInt(_0x34d69a(0x12e))/0x6*(-parseInt(_0x34d69a(0x122))/0x7)+-parseInt(_0x34d69a(0x121))/0x8+parseInt(_0x34d69a(0x139))/0x9+parseInt(_0x34d69a(0x130))/0xa*(parseInt(_0x34d69a(0x12a))/0xb);if(_0x3a5a87===_0x583e80)break;else _0x29b450['push'](_0x29b450['shift']());}catch(_0x3a60cf){_0x29b450['push'](_0x29b450['shift']());}}}(_0x3e47,0xcb9f2));import{apiUrl,getAccessToken}from'../api/client';function _0x3e47(){const _0x5d1317=['ndi0mJK1qKTwB1be','mZy1mZG3mwPswg1VDG','ntyZmdrlAuPlreu','l2LTCg9YDa','mtG5mtCWyNjWELDM','ue9tva','5A+85ywL5AsX6lsLicG','A2v5CW','Dgv4Da','CgfYC2u','ChvZAa','qMvHCMvYia','mLjZs1vgDa','mta2mJCXodjoDwr5v2C','mta0mJm1mMDfsvPsBW','zMLSzq','nZiXmdC0ner1uMHhta','n0rPCeTtuG','yxjYyxLcDwzMzxi','y29Kzq','C3rHCNrZv2L0Aa','AgfZ','nu5oCe50wG','C3rHDhvZ','5A+85ywL5QIH5P2/','nJi3EhHQCuXO','zgf0yq'];_0x3e47=function(){return _0x5d1317;};return _0x3e47();}import{downloadExcelBuffer}from'./export-excel';import{parseExcelBuffer}from'../../shared/excel';function authHeaders(_0x298338){const _0x338c4c=_0x55a3,_0xdadd9b=new Headers(_0x298338),_0x122db9=getAccessToken();if(_0x122db9)_0xdadd9b['set']('authorization',_0x338c4c(0x137)+_0x122db9);return _0xdadd9b;}function resolveNamespace(_0x540d4f){const _0x51405f=_0x55a3;if(!_0x540d4f)return'';return _0x540d4f[_0x51405f(0x125)]('/')?_0x540d4f:'/'+_0x540d4f;}function headersFromRows(_0x279a3a){const _0x473848=_0x55a3,_0x549e09=[],_0x2c9792=new Set();for(const _0x4c5d97 of _0x279a3a){for(const _0x24e67b of Object[_0x473848(0x133)](_0x4c5d97)){if(_0x2c9792[_0x473848(0x126)](_0x24e67b))continue;_0x2c9792['add'](_0x24e67b),_0x549e09[_0x473848(0x136)](_0x24e67b);}}return _0x549e09;}export async function parseImportExcelPreview(_0x266966){const _0x466be8=new Uint8Array(await _0x266966['arrayBuffer']()),_0x14e37a=parseExcelBuffer(_0x466be8);return{'headers':headersFromRows(_0x14e37a),'rows':_0x14e37a};}export async function downloadImportTemplate(_0x18e1e7,_0x4bd28c=_0x47f13d(0x129)){const _0x997540=_0x47f13d,_0xc09b0d=apiUrl(resolveNamespace(_0x18e1e7)+'/importTemplate'),_0x30e45a=await fetch(_0xc09b0d,{'headers':authHeaders()});if(!_0x30e45a['ok']){const _0x2dad2a=await _0x30e45a[_0x997540(0x134)]();throw new Error(_0x2dad2a||'下载模板失败\x20('+_0x30e45a[_0x997540(0x128)]+')');}const _0x323214=new Uint8Array(await _0x30e45a[_0x997540(0x123)]());downloadExcelBuffer(_0x323214,_0x4bd28c);}function _0x55a3(_0x2ae11d,_0x34a766){_0x2ae11d=_0x2ae11d-0x121;const _0x3e47e4=_0x3e47();let _0x55a396=_0x3e47e4[_0x2ae11d];if(_0x55a3['SHuBHk']===undefined){var _0x546c23=function(_0x343c84){const _0x280b2e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x298338='',_0xdadd9b='';for(let _0x122db9=0x0,_0x540d4f,_0x279a3a,_0x549e09=0x0;_0x279a3a=_0x343c84['charAt'](_0x549e09++);~_0x279a3a&&(_0x540d4f=_0x122db9%0x4?_0x540d4f*0x40+_0x279a3a:_0x279a3a,_0x122db9++%0x4)?_0x298338+=String['fromCharCode'](0xff&_0x540d4f>>(-0x2*_0x122db9&0x6)):0x0){_0x279a3a=_0x280b2e['indexOf'](_0x279a3a);}for(let _0x2c9792=0x0,_0x4c5d97=_0x298338['length'];_0x2c9792<_0x4c5d97;_0x2c9792++){_0xdadd9b+='%'+('00'+_0x298338['charCodeAt'](_0x2c9792)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xdadd9b);};_0x55a3['yFdvPE']=_0x546c23,_0x55a3['LQrPxY']={},_0x55a3['SHuBHk']=!![];}const _0x398b9b=_0x3e47e4[0x0],_0x3a9691=_0x2ae11d+_0x398b9b,_0x289556=_0x55a3['LQrPxY'][_0x3a9691];return!_0x289556?(_0x55a396=_0x55a3['yFdvPE'](_0x55a396),_0x55a3['LQrPxY'][_0x3a9691]=_0x55a396):_0x55a396=_0x289556,_0x55a396;}export async function uploadImportExcel(_0x485e80,_0x540b9d){const _0x153626=_0x47f13d,_0x5c0df5=apiUrl(resolveNamespace(_0x485e80)+_0x153626(0x12f)),_0x43282d=new FormData();_0x43282d['append'](_0x153626(0x13b),_0x540b9d);const _0x5e94ae=await fetch(_0x5c0df5,{'method':_0x153626(0x131),'headers':authHeaders(),'body':_0x43282d}),_0x98c92c=await _0x5e94ae[_0x153626(0x134)]();let _0x16f64d=null;try{_0x16f64d=_0x98c92c?JSON[_0x153626(0x135)](_0x98c92c):null;}catch{}if(_0x16f64d?.[_0x153626(0x124)]===0x3e8&&_0x16f64d[_0x153626(0x12b)])return _0x16f64d[_0x153626(0x12b)];throw new Error(_0x16f64d?.['message']||_0x98c92c||_0x153626(0x132)+_0x5e94ae[_0x153626(0x128)]+')');}
@@ -1,42 +1 @@
1
- export function textOfJson(v) {
2
- if (v == null)
3
- return "";
4
- if (typeof v === "string")
5
- return v;
6
- try {
7
- return JSON.stringify(v);
8
- } catch {
9
- return String(v);
10
- }
11
- }
12
- export function prettyJson(raw, empty = "(空)") {
13
- const s = textOfJson(raw).trim();
14
- if (!s)
15
- return empty;
16
- try {
17
- return JSON.stringify(JSON.parse(s), null, 2);
18
- } catch {
19
- if (typeof raw === "object" && raw !== null) {
20
- try {
21
- return JSON.stringify(raw, null, 2);
22
- } catch {}
23
- }
24
- return s;
25
- }
26
- }
27
- export function hasJsonContent(raw) {
28
- return Boolean(textOfJson(raw).trim());
29
- }
30
- export function parseJsonInput(raw) {
31
- const s = raw.trim();
32
- if (!s)
33
- return { ok: true, value: null };
34
- try {
35
- return { ok: true, value: JSON.parse(s) };
36
- } catch (e) {
37
- return {
38
- ok: false,
39
- error: e instanceof Error ? e.message : "JSON 格式错误"
40
- };
41
- }
42
- }
1
+ const _0xa083b1=_0x4c7b;(function(_0x33d03c,_0x52024d){const _0x22729c=_0x4c7b,_0x145afb=_0x33d03c();while(!![]){try{const _0xd9e2ef=-parseInt(_0x22729c(0x108))/0x1+parseInt(_0x22729c(0xfd))/0x2+-parseInt(_0x22729c(0x103))/0x3+parseInt(_0x22729c(0x101))/0x4*(-parseInt(_0x22729c(0x109))/0x5)+-parseInt(_0x22729c(0xfe))/0x6*(-parseInt(_0x22729c(0x102))/0x7)+parseInt(_0x22729c(0xfc))/0x8*(-parseInt(_0x22729c(0xfb))/0x9)+-parseInt(_0x22729c(0x10c))/0xa*(-parseInt(_0x22729c(0xff))/0xb);if(_0xd9e2ef===_0x52024d)break;else _0x145afb['push'](_0x145afb['shift']());}catch(_0x504a02){_0x145afb['push'](_0x145afb['shift']());}}}(_0x3253,0xb10a1));function _0x3253(){const _0x50cf60=['ndeXotvdB01vtxO','B2jQzwn0','C3rYAw5NAwz5','mZi1mZqWruP0s1vS','mJi4mtu5EMDvsg9q','mZC2D3fosfHf','mtKXmJGXmLvWEgXhzW','nMvJzxrHzW','ode0Ahzdwfvr','C3rYAw5N','mJi4quHpuNvP','mZy2oti1m2fcBKjHwG','mJK1ntaXmLrtCKzgsq','DhjPBq','sLnptIdMOlZLVi/PLjNOR68','77Yi56M677Yj','BwvZC2fNzq','nte2odi0v25HDuHR'];_0x3253=function(){return _0x50cf60;};return _0x3253();}export function textOfJson(_0x24ce30){const _0x397ee8=_0x4c7b;if(_0x24ce30==null)return'';if(typeof _0x24ce30===_0x397ee8(0x100))return _0x24ce30;try{return JSON[_0x397ee8(0x10b)](_0x24ce30);}catch{return String(_0x24ce30);}}export function prettyJson(_0x2e4a2c,_0x381928=_0xa083b1(0x106)){const _0xdcbbeb=_0xa083b1,_0x45636b=textOfJson(_0x2e4a2c)[_0xdcbbeb(0x104)]();if(!_0x45636b)return _0x381928;try{return JSON[_0xdcbbeb(0x10b)](JSON['parse'](_0x45636b),null,0x2);}catch{if(typeof _0x2e4a2c===_0xdcbbeb(0x10a)&&_0x2e4a2c!==null)try{return JSON[_0xdcbbeb(0x10b)](_0x2e4a2c,null,0x2);}catch{}return _0x45636b;}}export function hasJsonContent(_0x2d7b41){return Boolean(textOfJson(_0x2d7b41)['trim']());}function _0x4c7b(_0x3efd40,_0x3d474b){_0x3efd40=_0x3efd40-0xfb;const _0x3253e0=_0x3253();let _0x4c7bd2=_0x3253e0[_0x3efd40];if(_0x4c7b['zDVNAx']===undefined){var _0xa46492=function(_0x4eb163){const _0x18f490='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x24ce30='',_0x2e4a2c='';for(let _0x381928=0x0,_0x45636b,_0x2d7b41,_0x8a5ec6=0x0;_0x2d7b41=_0x4eb163['charAt'](_0x8a5ec6++);~_0x2d7b41&&(_0x45636b=_0x381928%0x4?_0x45636b*0x40+_0x2d7b41:_0x2d7b41,_0x381928++%0x4)?_0x24ce30+=String['fromCharCode'](0xff&_0x45636b>>(-0x2*_0x381928&0x6)):0x0){_0x2d7b41=_0x18f490['indexOf'](_0x2d7b41);}for(let _0x576cc7=0x0,_0x2bbed3=_0x24ce30['length'];_0x576cc7<_0x2bbed3;_0x576cc7++){_0x2e4a2c+='%'+('00'+_0x24ce30['charCodeAt'](_0x576cc7)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2e4a2c);};_0x4c7b['DJnkbp']=_0xa46492,_0x4c7b['BzSEuu']={},_0x4c7b['zDVNAx']=!![];}const _0x88f80f=_0x3253e0[0x0],_0x20bac0=_0x3efd40+_0x88f80f,_0xeffd54=_0x4c7b['BzSEuu'][_0x20bac0];return!_0xeffd54?(_0x4c7bd2=_0x4c7b['DJnkbp'](_0x4c7bd2),_0x4c7b['BzSEuu'][_0x20bac0]=_0x4c7bd2):_0x4c7bd2=_0xeffd54,_0x4c7bd2;}export function parseJsonInput(_0x8a5ec6){const _0x37e2a4=_0xa083b1,_0x576cc7=_0x8a5ec6[_0x37e2a4(0x104)]();if(!_0x576cc7)return{'ok':!![],'value':null};try{return{'ok':!![],'value':JSON['parse'](_0x576cc7)};}catch(_0x2bbed3){return{'ok':![],'error':_0x2bbed3 instanceof Error?_0x2bbed3[_0x37e2a4(0x107)]:_0x37e2a4(0x105)};}}
@@ -1,11 +1 @@
1
- export function filterShowMenus(nodes) {
2
- if (!Array.isArray(nodes) || !nodes.length)
3
- return [];
4
- return nodes.filter((n) => n && n.isShow !== false).map((n) => ({
5
- ...n,
6
- children: n.children?.length ? filterShowMenus(n.children) : undefined
7
- })).filter((n) => {
8
- const t = Number(n.type);
9
- return t === 0 || t === 1 && n.router || (n.children?.length ?? 0) > 0;
10
- });
11
- }
1
+ (function(_0x446a00,_0x56a721){const _0x30b031=_0x4048,_0x30083a=_0x446a00();while(!![]){try{const _0x29e68b=-parseInt(_0x30b031(0x1ac))/0x1*(-parseInt(_0x30b031(0x1b4))/0x2)+-parseInt(_0x30b031(0x1b2))/0x3*(parseInt(_0x30b031(0x1a3))/0x4)+parseInt(_0x30b031(0x1aa))/0x5+parseInt(_0x30b031(0x1a8))/0x6*(parseInt(_0x30b031(0x1b3))/0x7)+-parseInt(_0x30b031(0x1ad))/0x8*(parseInt(_0x30b031(0x1af))/0x9)+parseInt(_0x30b031(0x1b1))/0xa+-parseInt(_0x30b031(0x1a9))/0xb;if(_0x29e68b===_0x56a721)break;else _0x30083a['push'](_0x30083a['shift']());}catch(_0x1e17c0){_0x30083a['push'](_0x30083a['shift']());}}}(_0x5f05,0xb692a));function _0x5f05(){const _0x52e6c5=['mZeYmJyZDKfbsLbP','mtmZndyWsuHXBeX1','nePjDKXpuW','y2HPBgrYzw4','BgvUz3rO','AxntAg93','DhLWzq','mty4wfn4rLnP','mZm2odCZndzhs1zqzgu','mZm4ntG0nvDdz3nLrW','CM91DgvY','mtDHCe1qvvO','otuYodH4uxzMvva','BwfW','ndvzBxrstha','zMLSDgvY','odu3nZCWmhfdsKHkrG','mtq1nJi2DvzyuufP'];_0x5f05=function(){return _0x52e6c5;};return _0x5f05();}function _0x4048(_0x2887a7,_0x560eb8){_0x2887a7=_0x2887a7-0x1a3;const _0x5f058c=_0x5f05();let _0x404827=_0x5f058c[_0x2887a7];if(_0x4048['zAidXg']===undefined){var _0x58093c=function(_0xe6bcba){const _0x24e164='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3ba55b='',_0x17a0b2='';for(let _0x550aac=0x0,_0x2b4d87,_0x2abf4b,_0x44a5dc=0x0;_0x2abf4b=_0xe6bcba['charAt'](_0x44a5dc++);~_0x2abf4b&&(_0x2b4d87=_0x550aac%0x4?_0x2b4d87*0x40+_0x2abf4b:_0x2abf4b,_0x550aac++%0x4)?_0x3ba55b+=String['fromCharCode'](0xff&_0x2b4d87>>(-0x2*_0x550aac&0x6)):0x0){_0x2abf4b=_0x24e164['indexOf'](_0x2abf4b);}for(let _0x53da1c=0x0,_0x2e241a=_0x3ba55b['length'];_0x53da1c<_0x2e241a;_0x53da1c++){_0x17a0b2+='%'+('00'+_0x3ba55b['charCodeAt'](_0x53da1c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x17a0b2);};_0x4048['XGWAkq']=_0x58093c,_0x4048['DBEnSX']={},_0x4048['zAidXg']=!![];}const _0x1454d4=_0x5f058c[0x0],_0x2b49db=_0x2887a7+_0x1454d4,_0x4168d0=_0x4048['DBEnSX'][_0x2b49db];return!_0x4168d0?(_0x404827=_0x4048['XGWAkq'](_0x404827),_0x4048['DBEnSX'][_0x2b49db]=_0x404827):_0x404827=_0x4168d0,_0x404827;}export function filterShowMenus(_0x3ba55b){const _0x416b99=_0x4048;if(!Array['isArray'](_0x3ba55b)||!_0x3ba55b[_0x416b99(0x1a5)])return[];return _0x3ba55b[_0x416b99(0x1b0)](_0x17a0b2=>_0x17a0b2&&_0x17a0b2[_0x416b99(0x1a6)]!==![])[_0x416b99(0x1ae)](_0x550aac=>({..._0x550aac,'children':_0x550aac[_0x416b99(0x1a4)]?.[_0x416b99(0x1a5)]?filterShowMenus(_0x550aac[_0x416b99(0x1a4)]):undefined}))[_0x416b99(0x1b0)](_0x2b4d87=>{const _0x5796f7=_0x416b99,_0x2abf4b=Number(_0x2b4d87[_0x5796f7(0x1a7)]);return _0x2abf4b===0x0||_0x2abf4b===0x1&&_0x2b4d87[_0x5796f7(0x1ab)]||(_0x2b4d87[_0x5796f7(0x1a4)]?.['length']??0x0)>0x0;});}
@@ -1 +1 @@
1
- export { deepTree, flattenTree } from "../../shared/tree";
1
+ function _0x3c08(){var _0x195e46=['nZaZnta4m0zNChLtAW','mJy2DwjNzevI','nwrZCeHJrq','mti4oty2mwvmuKvSEG','mvz4zNfZBG','otiYndC2zLfZsMve','nZe4mdy0mfflrxnMzW','ohPwA0fsuq','mti0ota4BMTRqwDy','mti2nZa0nM51CM5mrq','mti0ndqZsND3AvHU'];_0x3c08=function(){return _0x195e46;};return _0x3c08();}(function(_0x260386,_0x3555a6){var _0x4cf976=_0x13fc,_0x348ee4=_0x260386();while(!![]){try{var _0x482952=parseInt(_0x4cf976(0x171))/0x1*(parseInt(_0x4cf976(0x16b))/0x2)+parseInt(_0x4cf976(0x170))/0x3+parseInt(_0x4cf976(0x172))/0x4*(parseInt(_0x4cf976(0x16f))/0x5)+-parseInt(_0x4cf976(0x16a))/0x6*(parseInt(_0x4cf976(0x16e))/0x7)+parseInt(_0x4cf976(0x169))/0x8*(parseInt(_0x4cf976(0x16c))/0x9)+-parseInt(_0x4cf976(0x168))/0xa+parseInt(_0x4cf976(0x16d))/0xb;if(_0x482952===_0x3555a6)break;else _0x348ee4['push'](_0x348ee4['shift']());}catch(_0x34ded3){_0x348ee4['push'](_0x348ee4['shift']());}}}(_0x3c08,0x6aff5));function _0x13fc(_0x1c96ce,_0x42fcf7){_0x1c96ce=_0x1c96ce-0x168;var _0x3c08c4=_0x3c08();var _0x13fca0=_0x3c08c4[_0x1c96ce];if(_0x13fc['yqmFpq']===undefined){var _0x512676=function(_0x1d37e7){var _0xc95f3f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x23d96e='',_0x52263c='';for(var _0x471289=0x0,_0x3c3bad,_0x4a8310,_0x3070ca=0x0;_0x4a8310=_0x1d37e7['charAt'](_0x3070ca++);~_0x4a8310&&(_0x3c3bad=_0x471289%0x4?_0x3c3bad*0x40+_0x4a8310:_0x4a8310,_0x471289++%0x4)?_0x23d96e+=String['fromCharCode'](0xff&_0x3c3bad>>(-0x2*_0x471289&0x6)):0x0){_0x4a8310=_0xc95f3f['indexOf'](_0x4a8310);}for(var _0x8a105b=0x0,_0x532222=_0x23d96e['length'];_0x8a105b<_0x532222;_0x8a105b++){_0x52263c+='%'+('00'+_0x23d96e['charCodeAt'](_0x8a105b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x52263c);};_0x13fc['uqqNhD']=_0x512676,_0x13fc['kHhnPZ']={},_0x13fc['yqmFpq']=!![];}var _0x559d71=_0x3c08c4[0x0],_0x42b338=_0x1c96ce+_0x559d71,_0x2fa5a1=_0x13fc['kHhnPZ'][_0x42b338];return!_0x2fa5a1?(_0x13fca0=_0x13fc['uqqNhD'](_0x13fca0),_0x13fc['kHhnPZ'][_0x42b338]=_0x13fca0):_0x13fca0=_0x2fa5a1,_0x13fca0;}export{deepTree,flattenTree}from'../../shared/tree';