vome-core 0.0.44 → 0.0.46

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 +1,64 @@
1
- (function(_0x817756,_0x1662a3){const _0x377e96=_0x2096,_0x1368bb=_0x817756();while(!![]){try{const _0x322f6e=parseInt(_0x377e96(0x182))/0x1*(-parseInt(_0x377e96(0x17d))/0x2)+-parseInt(_0x377e96(0x178))/0x3+parseInt(_0x377e96(0x174))/0x4+parseInt(_0x377e96(0x16c))/0x5+parseInt(_0x377e96(0x16d))/0x6*(-parseInt(_0x377e96(0x185))/0x7)+-parseInt(_0x377e96(0x17b))/0x8*(parseInt(_0x377e96(0x183))/0x9)+parseInt(_0x377e96(0x16b))/0xa*(parseInt(_0x377e96(0x179))/0xb);if(_0x322f6e===_0x1662a3)break;else _0x1368bb['push'](_0x1368bb['shift']());}catch(_0x427341){_0x1368bb['push'](_0x1368bb['shift']());}}}(_0x8452,0xdb68f));import{toValue}from'vue';function _0x2096(_0x18cd93,_0x272078){_0x18cd93=_0x18cd93-0x168;const _0x845288=_0x8452();let _0x20967c=_0x845288[_0x18cd93];if(_0x2096['CYZIcE']===undefined){var _0x2b74f4=function(_0x49bdbb){const _0x51eb9f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2b2822='',_0xdbed90='';for(let _0x575343=0x0,_0x254a8c,_0x3adf28,_0x32f779=0x0;_0x3adf28=_0x49bdbb['charAt'](_0x32f779++);~_0x3adf28&&(_0x254a8c=_0x575343%0x4?_0x254a8c*0x40+_0x3adf28:_0x3adf28,_0x575343++%0x4)?_0x2b2822+=String['fromCharCode'](0xff&_0x254a8c>>(-0x2*_0x575343&0x6)):0x0){_0x3adf28=_0x51eb9f['indexOf'](_0x3adf28);}for(let _0x16d18a=0x0,_0x5eebb7=_0x2b2822['length'];_0x16d18a<_0x5eebb7;_0x16d18a++){_0xdbed90+='%'+('00'+_0x2b2822['charCodeAt'](_0x16d18a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xdbed90);};_0x2096['tpHJGV']=_0x2b74f4,_0x2096['gVosNm']={},_0x2096['CYZIcE']=!![];}const _0x94026=_0x845288[0x0],_0x45735b=_0x18cd93+_0x94026,_0x2ac287=_0x2096['gVosNm'][_0x45735b];return!_0x2ac287?(_0x20967c=_0x2096['tpHJGV'](_0x20967c),_0x2096['gVosNm'][_0x45735b]=_0x20967c):_0x20967c=_0x2ac287,_0x20967c;}import{buildExcelBuffer,excelFilename}from'../../shared/excel';function _0x8452(){const _0x4972f2=['ody1nti0nufJyxvlsq','nLj0CMffyG','C2vSzwn0Aw9U','AxnbCNjHEq','Aw5KzxG','y2XPy2S','y3jLyxrLrwXLBwvUDa','BgfIzwW','ndKWode3mM1mugHqBW','AgLKzgvU','y2HPBgrYzw4','zMLSDgvY','mtyZntu3owzxs2vjsW','nJq2mZaWnMjKAKfpEq','yxbWBgLJyxrPB24VDM5KlM9Wzw54BwXMB3jTyxrZlw9MzMLJzwrVy3vTzw50lNnWCMvHzhnOzwv0BwWUC2HLzxq','mtuWntu0nejkrKfSAW','zMLUza','mJm1ngHIEuPjBG','ChjVCa','DhLWzq','zM9YBwf0DgvY','zg93BMXVywq','mJe2zNfrDLnm','ounNq3Lsva','AhjLzG','mte2mtuYmtLwz0PKu0G','BgvUz3rO','C29Tzq','BwfW','zgLJDa','DMfSDwu','mtb3v3jvCg4'];_0x8452=function(){return _0x4972f2;};return _0x8452();}import{flattenTree}from'./tree';export{buildExcelBuffer,excelFilename,excelResponseHeaders}from'../../shared/excel';export function pickExportColumns(_0x2b2822){const _0x22cce1=_0x2096;return _0x2b2822[_0x22cce1(0x177)](_0xdbed90=>Boolean(_0xdbed90[_0x22cce1(0x17e)])&&_0xdbed90[_0x22cce1(0x17f)]!==_0x22cce1(0x16e)&&_0xdbed90[_0x22cce1(0x17f)]!=='op'&&_0xdbed90[_0x22cce1(0x17f)]!=='expand'&&_0xdbed90[_0x22cce1(0x17f)]!==_0x22cce1(0x170)&&!_0xdbed90[_0x22cce1(0x175)]);}function formatExportCell(_0x575343,_0x254a8c){const _0x2b26a0=_0x2096;if(!_0x575343[_0x2b26a0(0x17e)])return'';const _0x3adf28=_0x254a8c[_0x575343[_0x2b26a0(0x17e)]];if(_0x575343['formatter'])return _0x575343[_0x2b26a0(0x180)](_0x254a8c,_0x3adf28);const _0x32f779=_0x575343[_0x2b26a0(0x169)]==null?[]:toValue(_0x575343[_0x2b26a0(0x169)]);if(Array[_0x2b26a0(0x16f)](_0x32f779)&&_0x32f779[_0x2b26a0(0x186)]&&_0x3adf28!=null&&_0x3adf28!==''){const _0x16d18a=_0x32f779['find'](_0x5eebb7=>_0x5eebb7[_0x2b26a0(0x16a)]===_0x3adf28||String(_0x5eebb7[_0x2b26a0(0x16a)])===String(_0x3adf28));if(_0x16d18a)return _0x16d18a[_0x2b26a0(0x173)];}if(_0x3adf28==null)return'';return String(_0x3adf28);}export function flattenExportRows(_0x379b1d,_0x4f29dc){const _0x3c9c76=_0x2096;if(!_0x4f29dc)return _0x379b1d;const _0x5704c8=_0x379b1d[_0x3c9c76(0x187)](_0x36ae6e=>Array[_0x3c9c76(0x16f)](_0x36ae6e[_0x3c9c76(0x176)])&&_0x36ae6e[_0x3c9c76(0x176)][_0x3c9c76(0x186)]);if(!_0x5704c8)return _0x379b1d;return flattenTree(_0x379b1d);}export function crudColumnsToExcel(_0x4caf05){const _0x264905=_0x2096;return pickExportColumns(_0x4caf05)[_0x264905(0x168)](_0x4803ce=>({'prop':_0x4803ce[_0x264905(0x17e)],'label':_0x4803ce['label']||_0x4803ce[_0x264905(0x17e)]}));}export function downloadExcelBuffer(_0x2d284a,_0x222adc){const _0x8d925a=_0x2096,_0x2738c1=new Blob([_0x2d284a],{'type':_0x8d925a(0x17a)}),_0x5b91c4=URL['createObjectURL'](_0x2738c1),_0xc99e44=document[_0x8d925a(0x172)]('a');_0xc99e44[_0x8d925a(0x184)]=_0x5b91c4,_0xc99e44[_0x8d925a(0x181)]=excelFilename(_0x222adc),_0xc99e44[_0x8d925a(0x171)](),URL['revokeObjectURL'](_0x5b91c4);}export function exportCrudExcel(_0x1175c7,_0x2bb96b,_0x274b7a){const _0x110145=pickExportColumns(_0x1175c7),_0x2127fd=crudColumnsToExcel(_0x110145),_0x4798a4=buildExcelBuffer(_0x2127fd,_0x2bb96b,(_0x10d825,_0x158ecb)=>{const _0x5cbf2c=_0x2096,_0x103449=_0x110145[_0x5cbf2c(0x17c)](_0x1239c2=>_0x1239c2[_0x5cbf2c(0x17e)]===_0x10d825);return _0x103449?formatExportCell(_0x103449,_0x158ecb):String(_0x158ecb[_0x10d825]??'');});downloadExcelBuffer(_0x4798a4,_0x274b7a);}
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 +1,74 @@
1
- const _0x54f872=_0x53aa;(function(_0x7c4f3a,_0xaef8b3){const _0x536ec3=_0x53aa,_0xcb83c8=_0x7c4f3a();while(!![]){try{const _0x1d2104=parseInt(_0x536ec3(0xe1))/0x1*(parseInt(_0x536ec3(0xd0))/0x2)+-parseInt(_0x536ec3(0xea))/0x3+parseInt(_0x536ec3(0xe0))/0x4+-parseInt(_0x536ec3(0xde))/0x5+-parseInt(_0x536ec3(0xd5))/0x6+-parseInt(_0x536ec3(0xe9))/0x7*(-parseInt(_0x536ec3(0xe3))/0x8)+parseInt(_0x536ec3(0xd6))/0x9;if(_0x1d2104===_0xaef8b3)break;else _0xcb83c8['push'](_0xcb83c8['shift']());}catch(_0xb3c163){_0xcb83c8['push'](_0xcb83c8['shift']());}}}(_0x4273,0xcdfda));function _0x4273(){const _0x2e4a4e=['Eg1S','y3nZ','DNvL','Cg9W','ANn4','Chb0','zxHJzwW','yxvKAw8','CMvHza','Aw5JBhvKzq','ANnVBG','Aw5P','Dhn4','CgrM','D29Yza','Dgv4Da','y3n2','DM0TzMLSzs1WCMv2Awv3lxnOzwv0','DMLKzw8','yxjYyxLcDwzMzxi','mJCZmdm4AwLfvg5U','AhrTBa','C3bSAxq','pha+56M65BEL5l2C6kgOpc9WpG','y29UzG','ote0nZmYnfrJz1bwvq','mte1nJy4mZzTzxnfD0e','DhLWzq','u2HLzxroyw1LCW','yxjYyxK','u2HLzxrZ','Bg9N','AhrT','DxrPBhm','mZCYnJqYnwDbvNPdzG','pha+56M65BEL5l2C57c/pc9WpG','nJa0ote0neTpyxHptW','mwjlwNvuwa','Aw1Hz2u','mteXntC2CLjKrfDQ','EwfTBa','Dw5ZDxbWB3j0zwq','C2HLzxrFDg9FAhrTBa','EgXZEa','B2zMAwnL','mte5Bw51uNnb','mtCYntKZtvjWEM1z'];_0x4273=function(){return _0x2e4a4e;};return _0x4273();}import{extname,fileRule}from'./upload';function _0x53aa(_0x30fc93,_0x39cac1){_0x30fc93=_0x30fc93-0xd0;const _0x4273ad=_0x4273();let _0x53aad4=_0x4273ad[_0x30fc93];if(_0x53aa['PeQKjG']===undefined){var _0x3b05ed=function(_0x5846c4){const _0x1ae1c2='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x28124c='',_0x4224df='';for(let _0x360a22=0x0,_0x68cef6,_0x316c33,_0x546eb0=0x0;_0x316c33=_0x5846c4['charAt'](_0x546eb0++);~_0x316c33&&(_0x68cef6=_0x360a22%0x4?_0x68cef6*0x40+_0x316c33:_0x316c33,_0x360a22++%0x4)?_0x28124c+=String['fromCharCode'](0xff&_0x68cef6>>(-0x2*_0x360a22&0x6)):0x0){_0x316c33=_0x1ae1c2['indexOf'](_0x316c33);}for(let _0x15dfa7=0x0,_0x28b25a=_0x28124c['length'];_0x15dfa7<_0x28b25a;_0x15dfa7++){_0x4224df+='%'+('00'+_0x28124c['charCodeAt'](_0x15dfa7)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4224df);};_0x53aa['nXBbDb']=_0x3b05ed,_0x53aa['SkhDVR']={},_0x53aa['PeQKjG']=!![];}const _0xc7a6a2=_0x4273ad[0x0],_0x18f4db=_0x30fc93+_0xc7a6a2,_0xca151d=_0x53aa['SkhDVR'][_0x18f4db];return!_0xca151d?(_0x53aad4=_0x53aa['nXBbDb'](_0x53aad4),_0x53aa['SkhDVR'][_0x18f4db]=_0x53aad4):_0x53aad4=_0xca151d,_0x53aad4;}const TEXT_EXTS=new Set(['txt','md','markdown',_0x54f872(0xf5),_0x54f872(0xdb),_0x54f872(0xfb),_0x54f872(0xeb),_0x54f872(0xd1),_0x54f872(0xdc),_0x54f872(0xec),'js','ts',_0x54f872(0xef),_0x54f872(0xf7),_0x54f872(0xed),_0x54f872(0xe4),'yml',_0x54f872(0xf6),_0x54f872(0xd4),'sql']);export function getMediaPreviewKind(_0x28124c=''){const _0xa28b14=_0x54f872,_0x4224df=fileRule(_0x28124c);if(_0x4224df[_0xa28b14(0xd7)]===_0xa28b14(0xe2))return'image';if(_0x4224df['type']==='video')return _0xa28b14(0xfd);if(_0x4224df[_0xa28b14(0xd7)]===_0xa28b14(0xf2))return _0xa28b14(0xf2);return getFilePreviewKind(_0x28124c);}export function getFilePreviewKind(_0x360a22=''){const _0x306943=_0x54f872,_0x68cef6=fileRule(_0x360a22);if(_0x68cef6[_0x306943(0xd7)]==='pdf')return _0x306943(0xf8);if(_0x68cef6['type']===_0x306943(0xf1))return _0x306943(0xf1);const _0x316c33=extname(_0x360a22);if(TEXT_EXTS['has'](_0x316c33))return'text';if(_0x68cef6[_0x306943(0xd7)]===_0x306943(0xf9)||_0x68cef6[_0x306943(0xd7)]===_0x306943(0xf0))return _0x306943(0xe8);return _0x306943(0xe5);}export function fileDisplayName(_0x546eb0='',_0x15dfa7='文件'){const _0xc9be5a=_0x54f872,_0x28b25a=String(_0x546eb0)[_0xc9be5a(0xd2)]('?')[0x0]?.[_0xc9be5a(0xd2)]('/')[_0xc9be5a(0xee)]()||'';return _0x28b25a||_0x15dfa7;}export async function fetchFileText(_0x2cb7b3){const _0x215143=_0x54f872,_0x4fee62=await fetch(_0x2cb7b3,{'credentials':_0x215143(0xf4)});if(!_0x4fee62['ok'])throw new Error('加载失败\x20('+_0x4fee62['status']+')');return _0x4fee62[_0x215143(0xfa)]();}export async function fetchFileArrayBuffer(_0x2b669a){const _0xf99bce=_0x54f872,_0x55964f=await fetch(_0x2b669a,{'credentials':_0xf99bce(0xf4)});if(!_0x55964f['ok'])throw new Error('加载失败\x20('+_0x55964f['status']+')');return _0x55964f[_0xf99bce(0xfe)]();}export async function loadExcelPreviewHtml(_0x549c08){const _0x54700f=_0x54f872,_0x1f7173=await import(_0x54700f(0xe7)),_0x3be510=await fetchFileArrayBuffer(_0x549c08),_0x58b95f=_0x1f7173[_0x54700f(0xf3)](_0x3be510,{'type':_0x54700f(0xd9)}),_0x49e6c0=_0x58b95f[_0x54700f(0xd8)][0x0];if(!_0x49e6c0)return _0x54700f(0xdf);const _0x2e6e7c=_0x58b95f[_0x54700f(0xda)][_0x49e6c0];if(!_0x2e6e7c)return _0x54700f(0xd3);return _0x1f7173[_0x54700f(0xdd)][_0x54700f(0xe6)](_0x2e6e7c,{'id':_0x54700f(0xfc),'editable':![]});}
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 +1,61 @@
1
- const _0x34705f=_0x1715;(function(_0x15da7b,_0x2bfb81){const _0x531ed4=_0x1715,_0x15368a=_0x15da7b();while(!![]){try{const _0x1bec0f=parseInt(_0x531ed4(0x169))/0x1*(-parseInt(_0x531ed4(0x178))/0x2)+parseInt(_0x531ed4(0x168))/0x3*(parseInt(_0x531ed4(0x172))/0x4)+-parseInt(_0x531ed4(0x163))/0x5+-parseInt(_0x531ed4(0x164))/0x6*(parseInt(_0x531ed4(0x17b))/0x7)+-parseInt(_0x531ed4(0x16f))/0x8+-parseInt(_0x531ed4(0x171))/0x9*(parseInt(_0x531ed4(0x176))/0xa)+parseInt(_0x531ed4(0x16b))/0xb*(parseInt(_0x531ed4(0x16c))/0xc);if(_0x1bec0f===_0x2bfb81)break;else _0x15368a['push'](_0x15368a['shift']());}catch(_0x27e943){_0x15368a['push'](_0x15368a['shift']());}}}(_0x3bec,0x1f687));import{apiUrl,getAccessToken}from'../api/client';import{downloadExcelBuffer}from'./export-excel';function _0x3bec(){const _0x55f886=['Dgv4Da','C3rHDhvZ','ndq5mdKWvgTPqLjb','C2v0','ohPczhj1Eq','ChvZAa','y29Kzq','ntmYrufsrMnM','5lIl6l295QIH5P2/5AsX6lsLicG','A2v5CW','yxbWzw5K','yxjYyxLcDwzMzxi','otu3odi1Cfb4DvzO','mZa4nhHqtvjSvq','l2LTCg9YDfrLBxbSyxrL','5A+85ywL5AsX6lsLicG','yxv0Ag9YAxPHDgLVBG','mtm4oty5yMrZqw9J','mZa0ndLAyKLWswu','C3rHCNrZv2L0Aa','nZa0nJq3owfurfHxra','mtjxzxjgCeG','5A+85ywL5QIH5P2/','CgfYC2u','ntKXnti4yvncEw95','BwvZC2fNzq','ndvczwLcA0G','mtjetLvtAM0','zgf0yq'];_0x3bec=function(){return _0x55f886;};return _0x3bec();}import{parseExcelBuffer}from'../../shared/excel';function _0x1715(_0x518c57,_0x19af04){_0x518c57=_0x518c57-0x161;const _0x3bece1=_0x3bec();let _0x171573=_0x3bece1[_0x518c57];if(_0x1715['nHmaZq']===undefined){var _0x3e5ba8=function(_0x54c923){const _0x1dd546='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x51301c='',_0x124d4d='';for(let _0x56eb77=0x0,_0x4bdc70,_0xe2239b,_0x43ad0c=0x0;_0xe2239b=_0x54c923['charAt'](_0x43ad0c++);~_0xe2239b&&(_0x4bdc70=_0x56eb77%0x4?_0x4bdc70*0x40+_0xe2239b:_0xe2239b,_0x56eb77++%0x4)?_0x51301c+=String['fromCharCode'](0xff&_0x4bdc70>>(-0x2*_0x56eb77&0x6)):0x0){_0xe2239b=_0x1dd546['indexOf'](_0xe2239b);}for(let _0x4c88eb=0x0,_0x4270bc=_0x51301c['length'];_0x4c88eb<_0x4270bc;_0x4c88eb++){_0x124d4d+='%'+('00'+_0x51301c['charCodeAt'](_0x4c88eb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x124d4d);};_0x1715['zjbtFX']=_0x3e5ba8,_0x1715['qjMzaF']={},_0x1715['nHmaZq']=!![];}const _0x2a49d9=_0x3bece1[0x0],_0x1099a9=_0x518c57+_0x2a49d9,_0xe85d=_0x1715['qjMzaF'][_0x1099a9];return!_0xe85d?(_0x171573=_0x1715['zjbtFX'](_0x171573),_0x1715['qjMzaF'][_0x1099a9]=_0x171573):_0x171573=_0xe85d,_0x171573;}function authHeaders(_0x51301c){const _0x43a198=_0x1715,_0x124d4d=new Headers(_0x51301c),_0x56eb77=getAccessToken();if(_0x56eb77)_0x124d4d[_0x43a198(0x177)](_0x43a198(0x167),'Bearer\x20'+_0x56eb77);return _0x124d4d;}function resolveNamespace(_0x4bdc70){const _0x5c0c36=_0x1715;if(!_0x4bdc70)return'';return _0x4bdc70[_0x5c0c36(0x16a)]('/')?_0x4bdc70:'/'+_0x4bdc70;}function headersFromRows(_0xe2239b){const _0x4c7570=_0x1715,_0x43ad0c=[],_0x4c88eb=new Set();for(const _0x4270bc of _0xe2239b){for(const _0x5f0084 of Object[_0x4c7570(0x17d)](_0x4270bc)){if(_0x4c88eb['has'](_0x5f0084))continue;_0x4c88eb['add'](_0x5f0084),_0x43ad0c[_0x4c7570(0x179)](_0x5f0084);}}return _0x43ad0c;}export async function parseImportExcelPreview(_0x184221){const _0x5451bf=_0x1715,_0x4f7c33=new Uint8Array(await _0x184221[_0x5451bf(0x162)]()),_0xef64a3=parseExcelBuffer(_0x4f7c33);return{'headers':headersFromRows(_0xef64a3),'rows':_0xef64a3};}export async function downloadImportTemplate(_0x3aa1e8,_0x3419e2=_0x34705f(0x16d)){const _0x3bf148=_0x34705f,_0x2cdeae=apiUrl(resolveNamespace(_0x3aa1e8)+_0x3bf148(0x165)),_0x77d355=await fetch(_0x2cdeae,{'headers':authHeaders()});if(!_0x77d355['ok']){const _0x5de595=await _0x77d355[_0x3bf148(0x174)]();throw new Error(_0x5de595||_0x3bf148(0x17c)+_0x77d355[_0x3bf148(0x175)]+')');}const _0x5f1551=new Uint8Array(await _0x77d355[_0x3bf148(0x162)]());downloadExcelBuffer(_0x5f1551,_0x3419e2);}export async function uploadImportExcel(_0x4d4463,_0x47e2d2){const _0x5193c5=_0x34705f,_0x7cb1b3=apiUrl(resolveNamespace(_0x4d4463)+'/import'),_0xac8ef6=new FormData();_0xac8ef6[_0x5193c5(0x161)]('file',_0x47e2d2);const _0x112366=await fetch(_0x7cb1b3,{'method':'POST','headers':authHeaders(),'body':_0xac8ef6}),_0x587f16=await _0x112366[_0x5193c5(0x174)]();let _0x20366b=null;try{_0x20366b=_0x587f16?JSON[_0x5193c5(0x16e)](_0x587f16):null;}catch{}if(_0x20366b?.[_0x5193c5(0x17a)]===0x3e8&&_0x20366b[_0x5193c5(0x173)])return _0x20366b[_0x5193c5(0x173)];throw new Error(_0x20366b?.[_0x5193c5(0x170)]||_0x587f16||_0x5193c5(0x166)+_0x112366['status']+')');}
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 +1,42 @@
1
- (function(_0x3c7a15,_0x17a594){const _0x2f48f2=_0x5198,_0x4371b9=_0x3c7a15();while(!![]){try{const _0xb6ed92=-parseInt(_0x2f48f2(0x84))/0x1+-parseInt(_0x2f48f2(0x88))/0x2*(-parseInt(_0x2f48f2(0x8b))/0x3)+-parseInt(_0x2f48f2(0x81))/0x4+parseInt(_0x2f48f2(0x8a))/0x5+-parseInt(_0x2f48f2(0x89))/0x6+parseInt(_0x2f48f2(0x82))/0x7*(-parseInt(_0x2f48f2(0x8f))/0x8)+parseInt(_0x2f48f2(0x8d))/0x9*(parseInt(_0x2f48f2(0x8e))/0xa);if(_0xb6ed92===_0x17a594)break;else _0x4371b9['push'](_0x4371b9['shift']());}catch(_0x3ffa66){_0x4371b9['push'](_0x4371b9['shift']());}}}(_0xb1ae,0x824d0));export function textOfJson(_0x52fefd){const _0x5d0244=_0x5198;if(_0x52fefd==null)return'';if(typeof _0x52fefd===_0x5d0244(0x86))return _0x52fefd;try{return JSON[_0x5d0244(0x87)](_0x52fefd);}catch{return String(_0x52fefd);}}export function prettyJson(_0x2de0b5,_0x36d4f3='(空)'){const _0x37ca9=_0x5198,_0x157d0c=textOfJson(_0x2de0b5)[_0x37ca9(0x83)]();if(!_0x157d0c)return _0x36d4f3;try{return JSON[_0x37ca9(0x87)](JSON['parse'](_0x157d0c),null,0x2);}catch{if(typeof _0x2de0b5===_0x37ca9(0x85)&&_0x2de0b5!==null)try{return JSON[_0x37ca9(0x87)](_0x2de0b5,null,0x2);}catch{}return _0x157d0c;}}function _0x5198(_0x350d04,_0x37992d){_0x350d04=_0x350d04-0x81;const _0xb1aef4=_0xb1ae();let _0x5198fb=_0xb1aef4[_0x350d04];if(_0x5198['HlcbrA']===undefined){var _0x528f66=function(_0x2d56b8){const _0xed0245='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x52fefd='',_0x2de0b5='';for(let _0x36d4f3=0x0,_0x157d0c,_0x242517,_0x354f24=0x0;_0x242517=_0x2d56b8['charAt'](_0x354f24++);~_0x242517&&(_0x157d0c=_0x36d4f3%0x4?_0x157d0c*0x40+_0x242517:_0x242517,_0x36d4f3++%0x4)?_0x52fefd+=String['fromCharCode'](0xff&_0x157d0c>>(-0x2*_0x36d4f3&0x6)):0x0){_0x242517=_0xed0245['indexOf'](_0x242517);}for(let _0x21841a=0x0,_0x48204e=_0x52fefd['length'];_0x21841a<_0x48204e;_0x21841a++){_0x2de0b5+='%'+('00'+_0x52fefd['charCodeAt'](_0x21841a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2de0b5);};_0x5198['jHhEuQ']=_0x528f66,_0x5198['QyeKnN']={},_0x5198['HlcbrA']=!![];}const _0x5c504d=_0xb1aef4[0x0],_0x3da4b2=_0x350d04+_0x5c504d,_0x131b5e=_0x5198['QyeKnN'][_0x3da4b2];return!_0x131b5e?(_0x5198fb=_0x5198['jHhEuQ'](_0x5198fb),_0x5198['QyeKnN'][_0x3da4b2]=_0x5198fb):_0x5198fb=_0x131b5e,_0x5198fb;}export function hasJsonContent(_0x242517){return Boolean(textOfJson(_0x242517)['trim']());}function _0xb1ae(){const _0x1c7e64=['C3rYAw5NAwz5','mZa4otmYEhHirhfL','ndu5ntK0nLbnuw5grq','mZy1ndu0meXwA2XOzq','nKTxuuf3sG','CgfYC2u','mtGWmta4CvPzu1jH','mtqWmfvzB0fUsG','oduYmZm4nejPzNn1Cq','mJmXmJiWog9XvfnRrG','n3fiDK9RtW','DhjPBq','odK4mZqYyuHKC3Du','B2jQzwn0','C3rYAw5N'];_0xb1ae=function(){return _0x1c7e64;};return _0xb1ae();}export function parseJsonInput(_0x354f24){const _0x140358=_0x5198,_0x21841a=_0x354f24[_0x140358(0x83)]();if(!_0x21841a)return{'ok':!![],'value':null};try{return{'ok':!![],'value':JSON[_0x140358(0x8c)](_0x21841a)};}catch(_0x48204e){return{'ok':![],'error':_0x48204e instanceof Error?_0x48204e['message']:'JSON\x20格式错误'};}}
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 +1,11 @@
1
- (function(_0x5bc7a4,_0x36165e){const _0x168cd5=_0x2741,_0x9a0356=_0x5bc7a4();while(!![]){try{const _0x11e341=parseInt(_0x168cd5(0x16e))/0x1+parseInt(_0x168cd5(0x169))/0x2+parseInt(_0x168cd5(0x170))/0x3+parseInt(_0x168cd5(0x16a))/0x4+parseInt(_0x168cd5(0x166))/0x5+-parseInt(_0x168cd5(0x16c))/0x6+-parseInt(_0x168cd5(0x16d))/0x7;if(_0x11e341===_0x36165e)break;else _0x9a0356['push'](_0x9a0356['shift']());}catch(_0x3a62cb){_0x9a0356['push'](_0x9a0356['shift']());}}}(_0x27ff,0x91e27));export function filterShowMenus(_0x5963fe){const _0x392206=_0x2741;if(!Array[_0x392206(0x168)](_0x5963fe)||!_0x5963fe[_0x392206(0x165)])return[];return _0x5963fe['filter'](_0x34eaa7=>_0x34eaa7&&_0x34eaa7[_0x392206(0x16f)]!==![])[_0x392206(0x164)](_0x26d3f2=>({..._0x26d3f2,'children':_0x26d3f2[_0x392206(0x171)]?.[_0x392206(0x165)]?filterShowMenus(_0x26d3f2[_0x392206(0x171)]):undefined}))[_0x392206(0x16b)](_0xb5cd48=>{const _0x13666f=_0x392206,_0x37cfe6=Number(_0xb5cd48[_0x13666f(0x167)]);return _0x37cfe6===0x0||_0x37cfe6===0x1&&_0xb5cd48[_0x13666f(0x163)]||(_0xb5cd48[_0x13666f(0x171)]?.[_0x13666f(0x165)]??0x0)>0x0;});}function _0x2741(_0x586997,_0x4eb001){_0x586997=_0x586997-0x163;const _0x27ff5b=_0x27ff();let _0x274154=_0x27ff5b[_0x586997];if(_0x2741['kqzmRI']===undefined){var _0x5431af=function(_0x2fb5b9){const _0x4539e3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5963fe='',_0x34eaa7='';for(let _0x26d3f2=0x0,_0xb5cd48,_0x37cfe6,_0x34b9d0=0x0;_0x37cfe6=_0x2fb5b9['charAt'](_0x34b9d0++);~_0x37cfe6&&(_0xb5cd48=_0x26d3f2%0x4?_0xb5cd48*0x40+_0x37cfe6:_0x37cfe6,_0x26d3f2++%0x4)?_0x5963fe+=String['fromCharCode'](0xff&_0xb5cd48>>(-0x2*_0x26d3f2&0x6)):0x0){_0x37cfe6=_0x4539e3['indexOf'](_0x37cfe6);}for(let _0x506335=0x0,_0x53710a=_0x5963fe['length'];_0x506335<_0x53710a;_0x506335++){_0x34eaa7+='%'+('00'+_0x5963fe['charCodeAt'](_0x506335)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x34eaa7);};_0x2741['UTKYwU']=_0x5431af,_0x2741['wJVEEs']={},_0x2741['kqzmRI']=!![];}const _0x2bfff7=_0x27ff5b[0x0],_0x4c02aa=_0x586997+_0x2bfff7,_0x499182=_0x2741['wJVEEs'][_0x4c02aa];return!_0x499182?(_0x274154=_0x2741['UTKYwU'](_0x274154),_0x2741['wJVEEs'][_0x4c02aa]=_0x274154):_0x274154=_0x499182,_0x274154;}function _0x27ff(){const _0x5c77b1=['ntK3mZGXrNz6EK1h','y2HPBgrYzw4','CM91DgvY','BwfW','BgvUz3rO','nduYotyZnxrgsMXwsa','DhLWzq','AxnbCNjHEq','mtC5mJmYmMLREMnVAW','mZm3mdeYEKLyuMT5','zMLSDgvY','nde2ntG0mNj2rhbwtG','mteYoti2mdnjwwjmqvy','ode5nJeXC0Dir3fi','AxntAg93'];_0x27ff=function(){return _0x5c77b1;};return _0x27ff();}
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 +1 @@
1
- (function(_0x5f3cf1,_0x36c6b7){var _0x4c6e0e=_0x52f8,_0x3e55e2=_0x5f3cf1();while(!![]){try{var _0x37d881=parseInt(_0x4c6e0e(0x126))/0x1+parseInt(_0x4c6e0e(0x11d))/0x2+-parseInt(_0x4c6e0e(0x11f))/0x3*(-parseInt(_0x4c6e0e(0x123))/0x4)+-parseInt(_0x4c6e0e(0x122))/0x5+parseInt(_0x4c6e0e(0x124))/0x6*(-parseInt(_0x4c6e0e(0x121))/0x7)+parseInt(_0x4c6e0e(0x120))/0x8+-parseInt(_0x4c6e0e(0x125))/0x9*(parseInt(_0x4c6e0e(0x11e))/0xa);if(_0x37d881===_0x36c6b7)break;else _0x3e55e2['push'](_0x3e55e2['shift']());}catch(_0x48fd6f){_0x3e55e2['push'](_0x3e55e2['shift']());}}}(_0x32e6,0x9dacb));function _0x52f8(_0x4d02c0,_0x108b27){_0x4d02c0=_0x4d02c0-0x11d;var _0x32e661=_0x32e6();var _0x52f81d=_0x32e661[_0x4d02c0];if(_0x52f8['SIUurN']===undefined){var _0x42006c=function(_0x3ba98f){var _0x617450='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x39d7b1='',_0x570afb='';for(var _0x42f6df=0x0,_0x5e9f54,_0x28e5da,_0x109c6b=0x0;_0x28e5da=_0x3ba98f['charAt'](_0x109c6b++);~_0x28e5da&&(_0x5e9f54=_0x42f6df%0x4?_0x5e9f54*0x40+_0x28e5da:_0x28e5da,_0x42f6df++%0x4)?_0x39d7b1+=String['fromCharCode'](0xff&_0x5e9f54>>(-0x2*_0x42f6df&0x6)):0x0){_0x28e5da=_0x617450['indexOf'](_0x28e5da);}for(var _0x3f973d=0x0,_0x126ff0=_0x39d7b1['length'];_0x3f973d<_0x126ff0;_0x3f973d++){_0x570afb+='%'+('00'+_0x39d7b1['charCodeAt'](_0x3f973d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x570afb);};_0x52f8['hSLVYa']=_0x42006c,_0x52f8['zNqEqk']={},_0x52f8['SIUurN']=!![];}var _0x2f7d72=_0x32e661[0x0],_0x4d7489=_0x4d02c0+_0x2f7d72,_0x4f2076=_0x52f8['zNqEqk'][_0x4d7489];return!_0x4f2076?(_0x52f81d=_0x52f8['hSLVYa'](_0x52f81d),_0x52f8['zNqEqk'][_0x4d7489]=_0x52f81d):_0x52f81d=_0x4f2076,_0x52f81d;}export{deepTree,flattenTree}from'../../shared/tree';function _0x32e6(){var _0x5ba062=['mJKXmtHYvvfvthG','mZq0nJq3mNP0Eengza','mtm0nhj4uNjfDG','ote5odiWrxnOy0TV','nti0tK9YDeLm','mJyZmtbKAgzsq1u','mtuWmJeWwK9btLPP','mta2nJe1mwjVB0TvCG','mta0ndqWnMvfCxvgra','otCWy2D5vM5y'];_0x32e6=function(){return _0x5ba062;};return _0x32e6();}
1
+ export { deepTree, flattenTree } from "../../shared/tree";
@@ -1 +1,88 @@
1
- const _0x526064=_0x1e7a;(function(_0x5906c9,_0x9c6aee){const _0x21fefa=_0x1e7a,_0x31a2da=_0x5906c9();while(!![]){try{const _0x4818e6=-parseInt(_0x21fefa(0x1d3))/0x1*(-parseInt(_0x21fefa(0x1bd))/0x2)+-parseInt(_0x21fefa(0x1e3))/0x3+parseInt(_0x21fefa(0x1af))/0x4*(parseInt(_0x21fefa(0x1f1))/0x5)+-parseInt(_0x21fefa(0x1db))/0x6*(parseInt(_0x21fefa(0x1f4))/0x7)+-parseInt(_0x21fefa(0x1d9))/0x8*(-parseInt(_0x21fefa(0x1b7))/0x9)+parseInt(_0x21fefa(0x1bb))/0xa+parseInt(_0x21fefa(0x1e6))/0xb;if(_0x4818e6===_0x9c6aee)break;else _0x31a2da['push'](_0x31a2da['shift']());}catch(_0x25f7bb){_0x31a2da['push'](_0x31a2da['shift']());}}}(_0xd648,0x1cbff));export const DEFAULT_UPLOAD_RULES=[{'name':'图片','type':'image','color':'#67C23A','exts':[_0x526064(0x19f),_0x526064(0x1ca),_0x526064(0x1da),_0x526064(0x1a5),_0x526064(0x1a4),_0x526064(0x1ba),_0x526064(0x1e7),_0x526064(0x1e5)]},{'name':'视频','type':_0x526064(0x1de),'color':_0x526064(0x1c7),'exts':[_0x526064(0x1a7),_0x526064(0x1c0),_0x526064(0x1a1),'mpeg',_0x526064(0x1b0),'rm',_0x526064(0x1c3),_0x526064(0x1d0),_0x526064(0x1c2),_0x526064(0x1b5),_0x526064(0x1ac)]},{'name':'音频','type':'audio','color':_0x526064(0x1c7),'exts':[_0x526064(0x1e0),_0x526064(0x1ad),_0x526064(0x1c9),'mp2','flac',_0x526064(0x1d7),'ra',_0x526064(0x1cd),_0x526064(0x1dd),_0x526064(0x1d2)]},{'name':'文档','type':_0x526064(0x1c4),'color':_0x526064(0x1b1),'exts':[_0x526064(0x1d6),_0x526064(0x1f3),_0x526064(0x1c5),_0x526064(0x1b6),_0x526064(0x1c8),_0x526064(0x1ae)]},{'name':'表格','type':_0x526064(0x1b3),'color':_0x526064(0x1ea),'exts':[_0x526064(0x1ce),_0x526064(0x1e1),_0x526064(0x1cb),_0x526064(0x1d5),_0x526064(0x1a8),'xltm']},{'name':'演示','type':_0x526064(0x1ab),'color':_0x526064(0x1ec),'exts':[_0x526064(0x1ab),'pptx',_0x526064(0x1e2),_0x526064(0x1bc),_0x526064(0x1d1),'pps',_0x526064(0x1df),_0x526064(0x1a2),_0x526064(0x1aa),_0x526064(0x1dc)]},{'name':_0x526064(0x1e9),'type':_0x526064(0x1c6),'color':_0x526064(0x1b2),'exts':[_0x526064(0x1c6)]},{'name':_0x526064(0x1a6),'type':'rar','color':_0x526064(0x1d8),'exts':[_0x526064(0x1eb),_0x526064(0x1a3),'7z',_0x526064(0x1cc),'gz']},{'name':'文件','type':_0x526064(0x1cf),'color':'#909399','exts':[]}];export function extname(_0x22da39=''){const _0x294539=_0x526064,_0x5c8b7b=String(_0x22da39)[_0x294539(0x1a0)]('?')[0x0]?.[_0x294539(0x1f0)](/\.([^.]+)$/);return _0x5c8b7b?_0x5c8b7b[0x1][_0x294539(0x1b8)]():'';}export function filename(_0x67f315=''){const _0xdf9639=_0x526064,_0x554a2b=String(_0x67f315)[_0xdf9639(0x1a0)]('?')[0x0]?.[_0xdf9639(0x1a0)]('/')['pop']()||'',_0x108957=extname(_0x554a2b);return _0x108957?_0x554a2b[_0xdf9639(0x1f2)](0x0,-(_0x108957[_0xdf9639(0x1e4)]+0x1)):_0x554a2b;}function _0xd648(){const _0x2ff619=['mtuYmdy5nMz6CKrfEq','ANbLzW','nJu4mZaYBwnOAe1T','zhbZ','ywfJ','DMLKzw8','Cg90Ea','BxaZ','EgXZEa','Chb0Bq','ntiXndmZq3Loq253','BgvUz3rO','D2vICa','mtaYody2nuvmyw96DW','C3zN','CMfUzg9T','uerg','iZuZrdm5qW','CMfY','i0y1nKm2qW','BM93','zMLUza','zgf0ytPPBwfNzs8','Bwf0y2G','nwfQzg5Qta','C2XPy2u','zg9JEa','mtrkBhvQExi','yM1W','C3bSAxq','BxbN','Cg90Bq','EMLW','DgLM','Cg5N','5y6l57YP5yYf','yxzP','EgX0Ea','Dg9tDhjPBMC','zhb0','Chb0','m2DW','D2f2','zg90Bq','nZi1mtqWv3LfrLLO','Bw92','iZuZqJDgna','iZHMmZuWma','zxHJzwW','BwfW','Bxa0','zg90','oxzhDhDpEa','Dg9mB3DLCKnHC2u','Aw1Hz2u','z2LM','mJa4nZCWCvb2AKft','ChbZEa','mtaWotz4sufcD2C','CMvWBgfJzq','DhLWzq','D212','Aw5JBhvKzxm','zMX2','CMfT','D29Yza','zg9JBq','CgrM','iZGYnMfLyW','zg90Ea','D21H','ANbN','EgXZBq','DgfY','yxbL','EgXZ','zMLSzq','C3DM','ChbZBq','y2rH','nwP3u2DiyG','AM9PBG','EgX0','zg9J','BwLKAq','i0zgqZC1nW'];_0xd648=function(){return _0x2ff619;};return _0xd648();}export function fileRule(_0xfd6101,_0x596ceb=DEFAULT_UPLOAD_RULES){const _0x335ac2=_0x526064;if(_0xfd6101?.[_0x335ac2(0x1c1)](_0x335ac2(0x1ef)))return _0x596ceb[_0x335ac2(0x1ee)](_0x7b65a6=>_0x7b65a6[_0x335ac2(0x1bf)]===_0x335ac2(0x1b9));const _0x27ef40=extname(_0xfd6101||''),_0x2bdb11=_0x596ceb[_0x335ac2(0x1ee)](_0x3d4c9c=>_0x3d4c9c['exts'][_0x335ac2(0x1c1)](_0x27ef40));return _0x2bdb11||_0x596ceb['find'](_0xea0883=>_0xea0883[_0x335ac2(0x1bf)]===_0x335ac2(0x1cf));}export function getFileType(_0x4f5d01,_0x5f4a52=DEFAULT_UPLOAD_RULES){const _0xd4ddea=_0x526064;return fileRule(_0x4f5d01,_0x5f4a52)[_0xd4ddea(0x1bf)];}export function getUploadRule(_0x43c27c,_0x184d2c=DEFAULT_UPLOAD_RULES){const _0x10d133=_0x526064;return _0x184d2c[_0x10d133(0x1ee)](_0x1484a1=>_0x1484a1[_0x10d133(0x1bf)]===_0x43c27c)||_0x184d2c[_0x184d2c['length']-0x1];}export function getUrls(_0xacfae2){const _0x1a1615=_0x526064;return _0xacfae2['map'](_0x516873=>String(_0x516873['url']||'')[_0x1a1615(0x1be)](/,/g,encodeURIComponent(',')));}export function pathJoin(..._0x230394){const _0x21fc5f=_0x526064;return _0x230394[_0x21fc5f(0x1b4)](_0x3f2397=>_0x3f2397[_0x21fc5f(0x1be)](/(^\/+|\/+$)/g,''))['filter'](Boolean)[_0x21fc5f(0x1d4)]('/');}function _0x1e7a(_0x3cde32,_0x549a29){_0x3cde32=_0x3cde32-0x19f;const _0xd648c7=_0xd648();let _0x1e7ab2=_0xd648c7[_0x3cde32];if(_0x1e7a['IYJzxb']===undefined){var _0x278287=function(_0x5c1292){const _0x13afad='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x22da39='',_0x5c8b7b='';for(let _0x67f315=0x0,_0x554a2b,_0x108957,_0xfd6101=0x0;_0x108957=_0x5c1292['charAt'](_0xfd6101++);~_0x108957&&(_0x554a2b=_0x67f315%0x4?_0x554a2b*0x40+_0x108957:_0x108957,_0x67f315++%0x4)?_0x22da39+=String['fromCharCode'](0xff&_0x554a2b>>(-0x2*_0x67f315&0x6)):0x0){_0x108957=_0x13afad['indexOf'](_0x108957);}for(let _0x596ceb=0x0,_0x27ef40=_0x22da39['length'];_0x596ceb<_0x27ef40;_0x596ceb++){_0x5c8b7b+='%'+('00'+_0x22da39['charCodeAt'](_0x596ceb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5c8b7b);};_0x1e7a['RBYKhi']=_0x278287,_0x1e7a['SOSKgB']={},_0x1e7a['IYJzxb']=!![];}const _0x5ecc10=_0xd648c7[0x0],_0x53dee6=_0x3cde32+_0x5ecc10,_0x507d44=_0x1e7a['SOSKgB'][_0x53dee6];return!_0x507d44?(_0x1e7ab2=_0x1e7a['RBYKhi'](_0x1e7ab2),_0x1e7a['SOSKgB'][_0x53dee6]=_0x1e7ab2):_0x1e7ab2=_0x507d44,_0x1e7ab2;}export function uploadUid(){const _0x33bd1e=_0x526064;return Date[_0x33bd1e(0x1ed)]()+'_'+Math[_0x33bd1e(0x1e8)]()[_0x33bd1e(0x1a9)](0x24)[_0x33bd1e(0x1f2)](0x2,0x9);}
1
+ export const DEFAULT_UPLOAD_RULES = [
2
+ {
3
+ name: "图片",
4
+ type: "image",
5
+ color: "#67C23A",
6
+ exts: ["bmp", "jpg", "jpeg", "png", "tif", "gif", "svg", "webp"]
7
+ },
8
+ {
9
+ name: "视频",
10
+ type: "video",
11
+ color: "#826aec",
12
+ exts: ["avi", "wmv", "mpg", "mpeg", "mov", "rm", "ram", "swf", "flv", "mp4", "3gp"]
13
+ },
14
+ {
15
+ name: "音频",
16
+ type: "audio",
17
+ color: "#826aec",
18
+ exts: ["mp3", "wav", "wma", "mp2", "flac", "midi", "ra", "ape", "aac", "cda"]
19
+ },
20
+ {
21
+ name: "文档",
22
+ type: "word",
23
+ color: "#53B7F4",
24
+ exts: ["doc", "docx", "docm", "dot", "dotx", "dotm"]
25
+ },
26
+ {
27
+ name: "表格",
28
+ type: "excel",
29
+ color: "#53D39C",
30
+ exts: ["xls", "xlsx", "xlsm", "xlt", "xltx", "xltm"]
31
+ },
32
+ {
33
+ name: "演示",
34
+ type: "ppt",
35
+ color: "#F56C6C",
36
+ exts: ["ppt", "pptx", "pptm", "ppsx", "ppsm", "pps", "potx", "potm", "dpt", "dps"]
37
+ },
38
+ {
39
+ name: "PDF",
40
+ type: "pdf",
41
+ color: "#8f3500",
42
+ exts: ["pdf"]
43
+ },
44
+ {
45
+ name: "压缩包",
46
+ type: "rar",
47
+ color: "#FFC757",
48
+ exts: ["rar", "zip", "7z", "tar", "gz"]
49
+ },
50
+ {
51
+ name: "文件",
52
+ type: "file",
53
+ color: "#909399",
54
+ exts: []
55
+ }
56
+ ];
57
+ export function extname(path = "") {
58
+ const m = String(path).split("?")[0]?.match(/\.([^.]+)$/);
59
+ return m ? m[1].toLowerCase() : "";
60
+ }
61
+ export function filename(path = "") {
62
+ const base = String(path).split("?")[0]?.split("/").pop() || "";
63
+ const ext = extname(base);
64
+ return ext ? base.slice(0, -(ext.length + 1)) : base;
65
+ }
66
+ export function fileRule(path, rules = DEFAULT_UPLOAD_RULES) {
67
+ if (path?.includes("data:image/")) {
68
+ return rules.find((r) => r.type === "image");
69
+ }
70
+ const ext = extname(path || "");
71
+ const hit = rules.find((r) => r.exts.includes(ext));
72
+ return hit || rules.find((r) => r.type === "file");
73
+ }
74
+ export function getFileType(path, rules = DEFAULT_UPLOAD_RULES) {
75
+ return fileRule(path, rules).type;
76
+ }
77
+ export function getUploadRule(type, rules = DEFAULT_UPLOAD_RULES) {
78
+ return rules.find((r) => r.type === type) || rules[rules.length - 1];
79
+ }
80
+ export function getUrls(list) {
81
+ return list.map((e) => String(e.url || "").replace(/,/g, encodeURIComponent(",")));
82
+ }
83
+ export function pathJoin(...parts) {
84
+ return parts.map((p) => p.replace(/(^\/+|\/+$)/g, "")).filter(Boolean).join("/");
85
+ }
86
+ export function uploadUid() {
87
+ return `${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;
88
+ }
@@ -1 +1,80 @@
1
- (function(_0x503a90,_0x2a756a){const _0x2e1213=_0x3abe,_0x159c7c=_0x503a90();while(!![]){try{const _0x1b8a92=-parseInt(_0x2e1213(0xf8))/0x1+-parseInt(_0x2e1213(0x106))/0x2*(-parseInt(_0x2e1213(0xfd))/0x3)+parseInt(_0x2e1213(0xff))/0x4*(-parseInt(_0x2e1213(0x101))/0x5)+parseInt(_0x2e1213(0x116))/0x6+-parseInt(_0x2e1213(0xf4))/0x7+-parseInt(_0x2e1213(0xfa))/0x8*(-parseInt(_0x2e1213(0xf7))/0x9)+parseInt(_0x2e1213(0xfc))/0xa;if(_0x1b8a92===_0x2a756a)break;else _0x159c7c['push'](_0x159c7c['shift']());}catch(_0x4011ef){_0x159c7c['push'](_0x159c7c['shift']());}}}(_0x274c,0xa720b));function _0x3abe(_0x39263f,_0x38cf63){_0x39263f=_0x39263f-0xf2;const _0x274ca4=_0x274c();let _0x3abeed=_0x274ca4[_0x39263f];if(_0x3abe['zXKDTe']===undefined){var _0x1c8cd4=function(_0x264bad){const _0x1d2280='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x11e751='',_0x5ebad9='';for(let _0x4d4970=0x0,_0x568c92,_0x531817,_0x54fe23=0x0;_0x531817=_0x264bad['charAt'](_0x54fe23++);~_0x531817&&(_0x568c92=_0x4d4970%0x4?_0x568c92*0x40+_0x531817:_0x531817,_0x4d4970++%0x4)?_0x11e751+=String['fromCharCode'](0xff&_0x568c92>>(-0x2*_0x4d4970&0x6)):0x0){_0x531817=_0x1d2280['indexOf'](_0x531817);}for(let _0x5c0bbb=0x0,_0x1c1088=_0x11e751['length'];_0x5c0bbb<_0x1c1088;_0x5c0bbb++){_0x5ebad9+='%'+('00'+_0x11e751['charCodeAt'](_0x5c0bbb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5ebad9);};_0x3abe['etKJzX']=_0x1c8cd4,_0x3abe['AuWVct']={},_0x3abe['zXKDTe']=!![];}const _0x2fd977=_0x274ca4[0x0],_0x2edff6=_0x39263f+_0x2fd977,_0x52330e=_0x3abe['AuWVct'][_0x2edff6];return!_0x52330e?(_0x3abeed=_0x3abe['etKJzX'](_0x3abeed),_0x3abe['AuWVct'][_0x2edff6]=_0x3abeed):_0x3abeed=_0x52330e,_0x3abeed;}import{onUnmounted,ref,watch}from'vue';export const FRAME_CAPTURE_TIMEOUT_MS=0x1f40;export function captureVideoFrame(_0x11e751){const _0x340f97=_0x3abe;if(typeof document===_0x340f97(0x117))return Promise[_0x340f97(0x10e)](null);return new Promise(_0x5ebad9=>{const _0x2d78c4=_0x340f97,_0x4d4970=document[_0x2d78c4(0x111)](_0x2d78c4(0x115));_0x4d4970[_0x2d78c4(0x108)]=_0x2d78c4(0x105),_0x4d4970[_0x2d78c4(0x10d)]=!![],_0x4d4970[_0x2d78c4(0x112)]=!![],_0x4d4970[_0x2d78c4(0xf6)]=_0x2d78c4(0x103);let _0x568c92=![];const _0x531817=_0x5c0bbb=>{const _0x5346c9=_0x2d78c4;if(_0x568c92)return;_0x568c92=!![],window[_0x5346c9(0x110)](_0x54fe23),_0x4d4970[_0x5346c9(0xf3)](_0x5346c9(0x10a)),_0x4d4970[_0x5346c9(0xf5)](),_0x5ebad9(_0x5c0bbb);},_0x54fe23=window[_0x2d78c4(0x104)](()=>_0x531817(null),FRAME_CAPTURE_TIMEOUT_MS);_0x4d4970[_0x2d78c4(0x107)](_0x2d78c4(0x114),()=>_0x531817(null),{'once':!![]}),_0x4d4970[_0x2d78c4(0x107)](_0x2d78c4(0x113),()=>{const _0x5ed742=_0x2d78c4;try{_0x4d4970[_0x5ed742(0x10b)]=0.01;}catch{_0x531817(null);}},{'once':!![]}),_0x4d4970[_0x2d78c4(0x107)](_0x2d78c4(0x102),()=>{const _0x13fbd6=_0x2d78c4;try{const _0x1c1088=_0x4d4970[_0x13fbd6(0x10c)],_0x3915d1=_0x4d4970[_0x13fbd6(0xfb)];if(!_0x1c1088||!_0x3915d1){_0x531817(null);return;}const _0x4fc955=document['createElement']('canvas');_0x4fc955[_0x13fbd6(0x10f)]=_0x1c1088,_0x4fc955['height']=_0x3915d1;const _0x5a1693=_0x4fc955[_0x13fbd6(0xfe)]('2d');if(!_0x5a1693){_0x531817(null);return;}_0x5a1693[_0x13fbd6(0x109)](_0x4d4970,0x0,0x0,_0x1c1088,_0x3915d1),_0x531817(_0x4fc955[_0x13fbd6(0xf9)]('image/jpeg',0.82));}catch{_0x531817(null);}},{'once':!![]}),_0x4d4970['src']=_0x11e751;});}export function useVideoFrame(_0x405e38){const _0x16af1a=ref(''),_0x497336=ref(![]);let _0x3696ec=0x0;return watch(_0x405e38,_0x515991=>{const _0xc81f72=_0x3abe;_0x3696ec+=0x1;const _0x80e4d6=_0x3696ec;_0x16af1a[_0xc81f72(0x100)]='',_0x497336[_0xc81f72(0x100)]=![];if(!_0x515991)return;captureVideoFrame(_0x515991)[_0xc81f72(0xf2)](_0x22e1d7=>{const _0x1b668d=_0xc81f72;if(_0x80e4d6!==_0x3696ec)return;if(_0x22e1d7)_0x16af1a[_0x1b668d(0x100)]=_0x22e1d7;else _0x497336[_0x1b668d(0x100)]=!![];});},{'immediate':!![]}),onUnmounted(()=>{_0x3696ec+=0x1;}),{'videoFrameSrc':_0x16af1a,'frameFailed':_0x497336};}function _0x274c(){const _0x3993d9=['CMvTB3zLqxr0CMLIDxrL','ndG2ndK3oujTEuTVtq','Bg9Hza','ChjLBg9Hza','owfvz2H4tW','oteWmZeWuhHfD2zn','Dg9eyxrHvvjm','mtuXmJiZmMrZB1PdrG','DMLKzw9izwLNAhq','odKZntqWqK9ADuPf','mJu1yLfnvMLi','z2v0q29UDgv4Da','otjkCwLwvxG','DMfSDwu','nJKYodbqqNfwC1G','C2vLA2vK','yxv0BW','C2v0vgLTzw91Da','yw5VBNLTB3vZ','mJi5nZbtB3L1wNa','ywrKrxzLBNrmAxn0zw5LCG','y3jVC3npCMLNAw4','zhjHD0LTywDL','C3jJ','y3vYCMvUDfrPBwu','DMLKzw9xAwr0Aa','Bxv0zwq','CMvZB2X2zq','D2LKDgG','y2XLyxjuAw1LB3v0','y3jLyxrLrwXLBwvUDa','CgXHExnjBMXPBMu','Bg9HzgvKzgf0yq','zxjYB3i','DMLKzw8','odeYmZy1mKXdzKfUuG','Dw5KzwzPBMvK','DgHLBG'];_0x274c=function(){return _0x3993d9;};return _0x274c();}
1
+ import { onUnmounted, ref, watch } from "vue";
2
+ export const FRAME_CAPTURE_TIMEOUT_MS = 8000;
3
+ export function captureVideoFrame(url) {
4
+ if (typeof document === "undefined")
5
+ return Promise.resolve(null);
6
+ return new Promise((resolve) => {
7
+ const video = document.createElement("video");
8
+ video.crossOrigin = "anonymous";
9
+ video.muted = true;
10
+ video.playsInline = true;
11
+ video.preload = "auto";
12
+ let settled = false;
13
+ const finish = (value) => {
14
+ if (settled)
15
+ return;
16
+ settled = true;
17
+ window.clearTimeout(timer);
18
+ video.removeAttribute("src");
19
+ video.load();
20
+ resolve(value);
21
+ };
22
+ const timer = window.setTimeout(() => finish(null), FRAME_CAPTURE_TIMEOUT_MS);
23
+ video.addEventListener("error", () => finish(null), { once: true });
24
+ video.addEventListener("loadeddata", () => {
25
+ try {
26
+ video.currentTime = 0.01;
27
+ } catch {
28
+ finish(null);
29
+ }
30
+ }, { once: true });
31
+ video.addEventListener("seeked", () => {
32
+ try {
33
+ const w = video.videoWidth;
34
+ const h = video.videoHeight;
35
+ if (!w || !h) {
36
+ finish(null);
37
+ return;
38
+ }
39
+ const canvas = document.createElement("canvas");
40
+ canvas.width = w;
41
+ canvas.height = h;
42
+ const ctx = canvas.getContext("2d");
43
+ if (!ctx) {
44
+ finish(null);
45
+ return;
46
+ }
47
+ ctx.drawImage(video, 0, 0, w, h);
48
+ finish(canvas.toDataURL("image/jpeg", 0.82));
49
+ } catch {
50
+ finish(null);
51
+ }
52
+ }, { once: true });
53
+ video.src = url;
54
+ });
55
+ }
56
+ export function useVideoFrame(source) {
57
+ const videoFrameSrc = ref("");
58
+ const frameFailed = ref(false);
59
+ let captureToken = 0;
60
+ watch(source, (url) => {
61
+ captureToken += 1;
62
+ const token = captureToken;
63
+ videoFrameSrc.value = "";
64
+ frameFailed.value = false;
65
+ if (!url)
66
+ return;
67
+ captureVideoFrame(url).then((dataUrl) => {
68
+ if (token !== captureToken)
69
+ return;
70
+ if (dataUrl)
71
+ videoFrameSrc.value = dataUrl;
72
+ else
73
+ frameFailed.value = true;
74
+ });
75
+ }, { immediate: true });
76
+ onUnmounted(() => {
77
+ captureToken += 1;
78
+ });
79
+ return { videoFrameSrc, frameFailed };
80
+ }